Skip to content

input4mips_validation.database.creation#

input4mips_validation.database.creation #

Creation of database entries

create_db_file_entries(files, cv_source, frequency_metadata_keys=FrequencyMetadataKeys(), time_dimension='time', xr_variable_processor=XRVariableHelper(), n_processes=1, mp_context=None) #

Create database file entries for all the files in a given path

For full details on options for loading CVs, see get_raw_cvs_loader.

Parameters:

Name Type Description Default
files Iterable[Path]

Files for which to create the database entries

required
cv_source str | None

Source from which to load the CVs

required
frequency_metadata_keys FrequencyMetadataKeys

Metadata definitions for frequency information

FrequencyMetadataKeys()
time_dimension str

The time dimension of the data

'time'
xr_variable_processor XRVariableProcessorLike

Helper to use for processing the variables in xarray objects.

XRVariableHelper()
n_processes int

Number of parallel processes to use while creating the entries.

1
mp_context BaseContext | None

Multiprocessing context to use.

If n_processes is equal to 1, simply pass None. If n_processes is greater than 1 and you pass None, a default context will be created and used.

None

Returns:

Type Description
tuple[Input4MIPsDatabaseEntryFile, ...]

Database file entries for the files in files

Source code in src/input4mips_validation/database/creation.py
def create_db_file_entries(  # noqa: PLR0913
    files: Iterable[Path],
    cv_source: str | None,
    frequency_metadata_keys: FrequencyMetadataKeys = FrequencyMetadataKeys(),
    time_dimension: str = "time",
    xr_variable_processor: XRVariableProcessorLike = XRVariableHelper(),
    n_processes: int = 1,
    mp_context: multiprocessing.context.BaseContext | None = None,
) -> tuple[Input4MIPsDatabaseEntryFile, ...]:
    """
    Create database file entries for all the files in a given path

    For full details on options for loading CVs,
    see
    [`get_raw_cvs_loader`][input4mips_validation.cvs.loading_raw.get_raw_cvs_loader].

    Parameters
    ----------
    files
        Files for which to create the database entries

    cv_source
        Source from which to load the CVs

    frequency_metadata_keys
        Metadata definitions for frequency information

    time_dimension
        The time dimension of the data

    xr_variable_processor
        Helper to use for processing the variables in xarray objects.

    n_processes
        Number of parallel processes to use while creating the entries.

    mp_context
        Multiprocessing context to use.

        If `n_processes` is equal to 1, simply pass `None`.
        If `n_processes` is greater than 1 and you pass `None`,
        a default context will be created and used.

    Returns
    -------
    :
        Database file entries for the files in `files`
    """
    cvs = load_cvs(cv_source=cv_source)

    db_entries = run_parallel(
        func_to_call=Input4MIPsDatabaseEntryFile.from_file,
        iterable_input=files,
        input_desc="files",
        n_processes=n_processes,
        mp_context=mp_context,
        cvs=cvs,
        xr_variable_processor=xr_variable_processor,
        frequency_metadata_keys=frequency_metadata_keys,
        time_dimension=time_dimension,
    )
    return db_entries