pycmor package#
pycmor - Makes CMOR Simple
Subpackages#
- pycmor.core package
- Submodules
- pycmor.core.aux_files module
- pycmor.core.caching module
- pycmor.core.calendar module
- pycmor.core.cluster module
- pycmor.core.cmorizer module
CMORizerCMORizer._SUPPORTED_CMOR_VERSIONSCMORizer._caching_check()CMORizer._caching_single_rule()CMORizer._check_is_subperiod()CMORizer._check_units()CMORizer._ensure_dask_slurm_account()CMORizer._match_pipelines_in_rules()CMORizer._parallel_process_dask()CMORizer._parallel_process_prefect()CMORizer._post_init_attach_pymor_config_rules()CMORizer._post_init_configure_dask()CMORizer._post_init_create_controlled_vocabularies()CMORizer._post_init_create_dask_cluster()CMORizer._post_init_create_data_request()CMORizer._post_init_create_data_request_tables()CMORizer._post_init_create_global_attributes_on_rules()CMORizer._post_init_create_pipelines()CMORizer._post_init_create_rules()CMORizer._post_init_inherit_rules()CMORizer._post_init_populate_rules_with_aux_files()CMORizer._post_init_populate_rules_with_controlled_vocabularies()CMORizer._post_init_populate_rules_with_data_request_variables()CMORizer._post_init_populate_rules_with_dimensionless_unit_mappings()CMORizer._post_init_populate_rules_with_tables()CMORizer._process_rule()CMORizer._rule_for_cmor_variable()CMORizer._rule_for_filepath()CMORizer._rules_depluralize_drvs()CMORizer._rules_expand_drvs()CMORizer.add_pipeline()CMORizer.add_rule()CMORizer.check_prefect()CMORizer.check_rules_for_output_dir()CMORizer.check_rules_for_table()CMORizer.find_matching_rule()CMORizer.from_dict()CMORizer.parallel_process()CMORizer.process()CMORizer.serial_process()CMORizer.validate()
DIMENSIONLESS_MAPPING_TABLE
- pycmor.core.config module
- pycmor.core.controlled_vocabularies module
- pycmor.core.externals module
- pycmor.core.factory module
- pycmor.core.filecache module
FilecacheFilecache._add_file()Filecache._fieldsFilecache._infer_freq_from_directory()Filecache._infer_freq_from_file()Filecache._make_record()Filecache._update_freq_for_group()Filecache.add_file()Filecache.add_files()Filecache.details()Filecache.files()Filecache.frequency()Filecache.get()Filecache.infer_freq()Filecache.load()Filecache.save()Filecache.select_range()Filecache.show_range()Filecache.summary()Filecache.validate_range()Filecache.variables()
_save()register_cache()
- pycmor.core.frequency module
- pycmor.core.gather_inputs module
InputFileCollection_PATTERN_ENV_VAR_NAME_ADDRS_PATTERN_ENV_VAR_NAME_DEFAULTS_PATTERN_ENV_VAR_VALUE_ADDRS_PATTERN_ENV_VAR_VALUE_DEFAULT_files_to_string()_filter_by_year()_input_files_in_path()_input_pattern_from_env()_resolve_symlinks()_sort_by_year()_validate_rule_has_marked_regex()gather_inputs()load_mfdataset()
- pycmor.core.infer_freq module
DatasetFrequencyAccessorFrequencyResultTimeFrequencyAccessor_convert_cftime_to_ordinals()_convert_numeric_timestamps_to_ordinals()_convert_standard_datetime_to_ordinals()_convert_times_to_ordinals()_infer_frequency_core()approx_interval_to_frequency_str()infer_frequency()is_resolution_fine_enough()log_frequency_check()
- pycmor.core.logging module
- pycmor.core.pipeline module
- pycmor.core.plugins module
- pycmor.core.rule module
RuleRule.add_data_request_variable()Rule.add_input()Rule.add_table()Rule.clone()Rule.create_global_attributes()Rule.depluralize_drvs()Rule.expand_drvs()Rule.from_dict()Rule.from_yaml()Rule.get()Rule.global_attributes_set_on_rule()Rule.input_patternsRule.match_pipelines()Rule.remove_data_request_variable()Rule.remove_table()Rule.set()
- pycmor.core.ssh_tunnel module
- pycmor.core.time_utils module
- pycmor.core.utils module
- pycmor.core.validate module
DirectoryAwareValidatorDirectoryAwareValidator._types_from_methodsDirectoryAwareValidator._validate_is_directory()DirectoryAwareValidator.checkersDirectoryAwareValidator.coercersDirectoryAwareValidator.default_settersDirectoryAwareValidator.normalization_rulesDirectoryAwareValidator.rulesDirectoryAwareValidator.validation_rules
GENERAL_SCHEMAGENERAL_VALIDATORGeneralSectionValidatorPIPELINES_SCHEMAPIPELINES_VALIDATORPipelineSectionValidatorPipelineSectionValidator._types_from_methodsPipelineSectionValidator._validate()PipelineSectionValidator._validate_is_qualname_or_script()PipelineSectionValidator.checkersPipelineSectionValidator.coercersPipelineSectionValidator.default_settersPipelineSectionValidator.normalization_rulesPipelineSectionValidator.rulesPipelineSectionValidator.validation_rules
RULES_SCHEMARuleSectionValidator
- pycmor.data package
- pycmor.data_request package
- Submodules
- pycmor.data_request.collection module
- pycmor.data_request.table module
CMIP6DataRequestTableCMIP6DataRequestTableHeaderCMIP6DataRequestTableHeader.ConventionsCMIP6DataRequestTableHeader._ConventionsCMIP6DataRequestTableHeader._HARD_CODED_DATA_SPECS_REPLACEMENTSCMIP6DataRequestTableHeader._approx_intervalCMIP6DataRequestTableHeader._cmor_versionCMIP6DataRequestTableHeader._data_specs_versionCMIP6DataRequestTableHeader._generic_levelsCMIP6DataRequestTableHeader._int_missing_valueCMIP6DataRequestTableHeader._mip_eraCMIP6DataRequestTableHeader._missing_valueCMIP6DataRequestTableHeader._productCMIP6DataRequestTableHeader._realmCMIP6DataRequestTableHeader._registryCMIP6DataRequestTableHeader._table_dateCMIP6DataRequestTableHeader._table_idCMIP6DataRequestTableHeader.approx_intervalCMIP6DataRequestTableHeader.cmor_versionCMIP6DataRequestTableHeader.data_specs_versionCMIP6DataRequestTableHeader.from_dict()CMIP6DataRequestTableHeader.generic_levelsCMIP6DataRequestTableHeader.int_missing_valueCMIP6DataRequestTableHeader.mip_eraCMIP6DataRequestTableHeader.missing_valueCMIP6DataRequestTableHeader.productCMIP6DataRequestTableHeader.realmCMIP6DataRequestTableHeader.table_dateCMIP6DataRequestTableHeader.table_id
CMIP6JSONDataRequestTableHeaderCMIP6JSONDataRequestTableHeader._approx_intervalCMIP6JSONDataRequestTableHeader._generic_levelsCMIP6JSONDataRequestTableHeader._realmCMIP6JSONDataRequestTableHeader._registryCMIP6JSONDataRequestTableHeader._table_dateCMIP6JSONDataRequestTableHeader._table_idCMIP6JSONDataRequestTableHeader.from_json_file()
CMIP7DataRequestTableCMIP7DataRequestTable._registryCMIP7DataRequestTable.from_all_var_info()CMIP7DataRequestTable.from_all_var_info_json()CMIP7DataRequestTable.from_dict()CMIP7DataRequestTable.from_json_file()CMIP7DataRequestTable.get_variable()CMIP7DataRequestTable.headerCMIP7DataRequestTable.table_dict_from_directory()CMIP7DataRequestTable.table_idCMIP7DataRequestTable.table_nameCMIP7DataRequestTable.variables
CMIP7DataRequestTableHeaderCMIP7DataRequestTableHeader.ConventionsCMIP7DataRequestTableHeader._ConventionsCMIP7DataRequestTableHeader._approx_intervalCMIP7DataRequestTableHeader._approx_interval_from_frequency()CMIP7DataRequestTableHeader._cmor_versionCMIP7DataRequestTableHeader._data_specs_versionCMIP7DataRequestTableHeader._generic_levelsCMIP7DataRequestTableHeader._int_missing_valueCMIP7DataRequestTableHeader._mip_eraCMIP7DataRequestTableHeader._missing_valueCMIP7DataRequestTableHeader._productCMIP7DataRequestTableHeader._realmCMIP7DataRequestTableHeader._registryCMIP7DataRequestTableHeader._table_dateCMIP7DataRequestTableHeader._table_idCMIP7DataRequestTableHeader.approx_intervalCMIP7DataRequestTableHeader.cmor_versionCMIP7DataRequestTableHeader.data_specs_versionCMIP7DataRequestTableHeader.from_all_var_info()CMIP7DataRequestTableHeader.generic_levelsCMIP7DataRequestTableHeader.int_missing_valueCMIP7DataRequestTableHeader.mip_eraCMIP7DataRequestTableHeader.missing_valueCMIP7DataRequestTableHeader.productCMIP7DataRequestTableHeader.realmCMIP7DataRequestTableHeader.table_dateCMIP7DataRequestTableHeader.table_id
DataRequestTableDataRequestTableHeaderDataRequestTableHeader.ConventionsDataRequestTableHeader._registryDataRequestTableHeader.approx_intervalDataRequestTableHeader.cmor_versionDataRequestTableHeader.data_specs_versionDataRequestTableHeader.from_dict()DataRequestTableHeader.generic_levelsDataRequestTableHeader.int_missing_valueDataRequestTableHeader.mip_eraDataRequestTableHeader.missing_valueDataRequestTableHeader.productDataRequestTableHeader.realmDataRequestTableHeader.table_dateDataRequestTableHeader.table_id
- pycmor.data_request.variable module
CMIP6DataRequestVariableCMIP6DataRequestVariable._cell_measuresCMIP6DataRequestVariable._cell_methodsCMIP6DataRequestVariable._commentCMIP6DataRequestVariable._dimensionsCMIP6DataRequestVariable._frequencyCMIP6DataRequestVariable._long_nameCMIP6DataRequestVariable._modeling_realmCMIP6DataRequestVariable._nameCMIP6DataRequestVariable._ok_max_mean_absCMIP6DataRequestVariable._ok_min_mean_absCMIP6DataRequestVariable._out_nameCMIP6DataRequestVariable._positiveCMIP6DataRequestVariable._registryCMIP6DataRequestVariable._standard_nameCMIP6DataRequestVariable._table_nameCMIP6DataRequestVariable._typCMIP6DataRequestVariable._unitsCMIP6DataRequestVariable._valid_maxCMIP6DataRequestVariable._valid_minCMIP6DataRequestVariable._variable_idCMIP6DataRequestVariable.attrsCMIP6DataRequestVariable.cell_measuresCMIP6DataRequestVariable.cell_methodsCMIP6DataRequestVariable.clone()CMIP6DataRequestVariable.commentCMIP6DataRequestVariable.dimensionsCMIP6DataRequestVariable.frequencyCMIP6DataRequestVariable.from_dict()CMIP6DataRequestVariable.global_attrs()CMIP6DataRequestVariable.long_nameCMIP6DataRequestVariable.modeling_realmCMIP6DataRequestVariable.nameCMIP6DataRequestVariable.ok_max_mean_absCMIP6DataRequestVariable.ok_min_mean_absCMIP6DataRequestVariable.out_nameCMIP6DataRequestVariable.positiveCMIP6DataRequestVariable.standard_nameCMIP6DataRequestVariable.table_nameCMIP6DataRequestVariable.typCMIP6DataRequestVariable.unitsCMIP6DataRequestVariable.valid_maxCMIP6DataRequestVariable.valid_min
CMIP6JSONDataRequestVariableCMIP6JSONDataRequestVariable._cell_measuresCMIP6JSONDataRequestVariable._cell_methodsCMIP6JSONDataRequestVariable._commentCMIP6JSONDataRequestVariable._dimensionsCMIP6JSONDataRequestVariable._frequencyCMIP6JSONDataRequestVariable._long_nameCMIP6JSONDataRequestVariable._modeling_realmCMIP6JSONDataRequestVariable._nameCMIP6JSONDataRequestVariable._ok_max_mean_absCMIP6JSONDataRequestVariable._ok_min_mean_absCMIP6JSONDataRequestVariable._out_nameCMIP6JSONDataRequestVariable._positiveCMIP6JSONDataRequestVariable._registryCMIP6JSONDataRequestVariable._standard_nameCMIP6JSONDataRequestVariable._typCMIP6JSONDataRequestVariable._unitsCMIP6JSONDataRequestVariable._valid_maxCMIP6JSONDataRequestVariable._valid_minCMIP6JSONDataRequestVariable._variable_idCMIP6JSONDataRequestVariable.from_json_file()
CMIP7DataRequestVariableCMIP7DataRequestVariable._cell_measuresCMIP7DataRequestVariable._cell_methodsCMIP7DataRequestVariable._cmip6_cmor_tableCMIP7DataRequestVariable._commentCMIP7DataRequestVariable._dimensionsCMIP7DataRequestVariable._frequencyCMIP7DataRequestVariable._long_nameCMIP7DataRequestVariable._modeling_realmCMIP7DataRequestVariable._nameCMIP7DataRequestVariable._out_nameCMIP7DataRequestVariable._positiveCMIP7DataRequestVariable._registryCMIP7DataRequestVariable._spatial_shapeCMIP7DataRequestVariable._standard_nameCMIP7DataRequestVariable._table_nameCMIP7DataRequestVariable._temporal_shapeCMIP7DataRequestVariable._typCMIP7DataRequestVariable._unitsCMIP7DataRequestVariable.attrsCMIP7DataRequestVariable.cell_measuresCMIP7DataRequestVariable.cell_methodsCMIP7DataRequestVariable.clone()CMIP7DataRequestVariable.commentCMIP7DataRequestVariable.dimensionsCMIP7DataRequestVariable.frequencyCMIP7DataRequestVariable.from_all_var_info_json()CMIP7DataRequestVariable.from_dict()CMIP7DataRequestVariable.global_attrsCMIP7DataRequestVariable.long_nameCMIP7DataRequestVariable.modeling_realmCMIP7DataRequestVariable.nameCMIP7DataRequestVariable.ok_max_mean_absCMIP7DataRequestVariable.ok_min_mean_absCMIP7DataRequestVariable.out_nameCMIP7DataRequestVariable.positiveCMIP7DataRequestVariable.standard_nameCMIP7DataRequestVariable.table_nameCMIP7DataRequestVariable.typCMIP7DataRequestVariable.unitsCMIP7DataRequestVariable.valid_maxCMIP7DataRequestVariable.valid_min
DataRequestVariableDataRequestVariable._registryDataRequestVariable._type_stringsDataRequestVariable.attrsDataRequestVariable.cell_measuresDataRequestVariable.cell_methodsDataRequestVariable.clone()DataRequestVariable.commentDataRequestVariable.dimensionsDataRequestVariable.frequencyDataRequestVariable.from_dict()DataRequestVariable.from_json_file()DataRequestVariable.global_attrs()DataRequestVariable.long_nameDataRequestVariable.modeling_realmDataRequestVariable.nameDataRequestVariable.ok_max_mean_absDataRequestVariable.ok_min_mean_absDataRequestVariable.out_nameDataRequestVariable.positiveDataRequestVariable.standard_nameDataRequestVariable.table_nameDataRequestVariable.to_dict()DataRequestVariable.typDataRequestVariable.unitsDataRequestVariable.valid_maxDataRequestVariable.valid_minDataRequestVariable.variable_id
- pycmor.dev package
- pycmor.fesom_1p4 package
- pycmor.fesom_2p1 package
- pycmor.scripts package
- pycmor.std_lib package
- The Pycmor Standard Library
checkpoint_pipeline()convert_units()get_variable()load_data()set_global_attributes()set_variable_attributes()show_data()temporal_resample()time_average()trigger_compute()- Submodules
- pycmor.std_lib.dataset_helpers module
- pycmor.std_lib.exceptions module
- pycmor.std_lib.files module
- pycmor.std_lib.generic module
- pycmor.std_lib.global_attributes module
CMIP6GlobalAttributesCMIP6GlobalAttributes._registryCMIP6GlobalAttributes._variant_label_components()CMIP6GlobalAttributes.get_Conventions()CMIP6GlobalAttributes.get_activity_id()CMIP6GlobalAttributes.get_creation_date()CMIP6GlobalAttributes.get_data_specs_version()CMIP6GlobalAttributes.get_experiment()CMIP6GlobalAttributes.get_experiment_id()CMIP6GlobalAttributes.get_forcing_index()CMIP6GlobalAttributes.get_frequency()CMIP6GlobalAttributes.get_further_info_url()CMIP6GlobalAttributes.get_grid()CMIP6GlobalAttributes.get_grid_label()CMIP6GlobalAttributes.get_initialization_index()CMIP6GlobalAttributes.get_institution()CMIP6GlobalAttributes.get_institution_id()CMIP6GlobalAttributes.get_license()CMIP6GlobalAttributes.get_mip_era()CMIP6GlobalAttributes.get_nominal_resolution()CMIP6GlobalAttributes.get_physics_index()CMIP6GlobalAttributes.get_product()CMIP6GlobalAttributes.get_realization_index()CMIP6GlobalAttributes.get_realm()CMIP6GlobalAttributes.get_source()CMIP6GlobalAttributes.get_source_id()CMIP6GlobalAttributes.get_source_type()CMIP6GlobalAttributes.get_sub_experiment()CMIP6GlobalAttributes.get_sub_experiment_id()CMIP6GlobalAttributes.get_table_id()CMIP6GlobalAttributes.get_tracking_id()CMIP6GlobalAttributes.get_variable_id()CMIP6GlobalAttributes.get_variant_label()CMIP6GlobalAttributes.global_attributes()CMIP6GlobalAttributes.required_global_attributesCMIP6GlobalAttributes.subdir_path()
CMIP7GlobalAttributesGlobalAttributesset_global_attributes()
- pycmor.std_lib.setgrid module
- pycmor.std_lib.timeaverage module
- pycmor.std_lib.units module
- pycmor.std_lib.variable_attributes module
Submodules#
pycmor._version module#
Git implementation of _version.py.
- exception pycmor._version.NotThisMethod[source]#
Bases:
ExceptionException raised if a method is not valid for the current scenario.
- class pycmor._version.VersioneerConfig[source]#
Bases:
objectContainer for Versioneer configuration parameters.
- pycmor._version.get_config() VersioneerConfig[source]#
Create, populate and return the VersioneerConfig() object.
- pycmor._version.get_keywords() Dict[str, str][source]#
Get the keywords needed to look up the version information.
- pycmor._version.get_versions() Dict[str, Any][source]#
Get version information or return default if unable to do so.
- pycmor._version.git_get_keywords(versionfile_abs: str) Dict[str, str][source]#
Extract version information from the given file.
- pycmor._version.git_pieces_from_vcs(tag_prefix: str, root: str, verbose: bool, runner: ~typing.Callable = <function run_command>) Dict[str, Any][source]#
Get version from ‘git describe’ in the root of the source tree.
This only gets called if the git-archive ‘subst’ keywords were not expanded, and _version.py hasn’t already been rewritten with a short version string, meaning we’re inside a checked out source tree.
- pycmor._version.git_versions_from_keywords(keywords: Dict[str, str], tag_prefix: str, verbose: bool) Dict[str, Any][source]#
Get version information from git keywords.
- pycmor._version.pep440_split_post(ver: str) Tuple[str, int | None][source]#
Split pep440 version string at the post-release segment.
Returns the release segments before the post-release and the post-release version number (or -1 if no post-release segment is present).
- pycmor._version.plus_or_dot(pieces: Dict[str, Any]) str[source]#
Return a + if we don’t already have one, else return a .
- pycmor._version.register_vcs_handler(vcs: str, method: str) Callable[source]#
Create decorator to mark a method as the handler of a VCS.
- pycmor._version.render(pieces: Dict[str, Any], style: str) Dict[str, Any][source]#
Render the given version pieces into the requested style.
- pycmor._version.render_git_describe(pieces: Dict[str, Any]) str[source]#
TAG[-DISTANCE-gHEX][-dirty].
Like ‘git describe –tags –dirty –always’.
Exceptions: 1: no tags. HEX[-dirty] (note: no ‘g’ prefix)
- pycmor._version.render_git_describe_long(pieces: Dict[str, Any]) str[source]#
TAG-DISTANCE-gHEX[-dirty].
Like ‘git describe –tags –dirty –always -long’. The distance/hash is unconditional.
Exceptions: 1: no tags. HEX[-dirty] (note: no ‘g’ prefix)
- pycmor._version.render_pep440(pieces: Dict[str, Any]) str[source]#
Build up version string, with post-release “local version identifier”.
Our goal: TAG[+DISTANCE.gHEX[.dirty]] . Note that if you get a tagged build and then dirty it, you’ll get TAG+0.gHEX.dirty
Exceptions: 1: no tags. git_describe was just HEX. 0+untagged.DISTANCE.gHEX[.dirty]
- pycmor._version.render_pep440_branch(pieces: Dict[str, Any]) str[source]#
TAG[[.dev0]+DISTANCE.gHEX[.dirty]] .
The “.dev0” means not master branch. Note that .dev0 sorts backwards (a feature branch will appear “older” than the master branch).
Exceptions: 1: no tags. 0[.dev0]+untagged.DISTANCE.gHEX[.dirty]
- pycmor._version.render_pep440_old(pieces: Dict[str, Any]) str[source]#
TAG[.postDISTANCE[.dev0]] .
The “.dev0” means dirty.
Exceptions: 1: no tags. 0.postDISTANCE[.dev0]
- pycmor._version.render_pep440_post(pieces: Dict[str, Any]) str[source]#
TAG[.postDISTANCE[.dev0]+gHEX] .
The “.dev0” means dirty. Note that .dev0 sorts backwards (a dirty tree will appear “older” than the corresponding clean one), but you shouldn’t be releasing software with -dirty anyways.
Exceptions: 1: no tags. 0.postDISTANCE[.dev0]
- pycmor._version.render_pep440_post_branch(pieces: Dict[str, Any]) str[source]#
TAG[.postDISTANCE[.dev0]+gHEX[.dirty]] .
The “.dev0” means not master branch.
Exceptions: 1: no tags. 0.postDISTANCE[.dev0]+gHEX[.dirty]
- pycmor._version.render_pep440_pre(pieces: Dict[str, Any]) str[source]#
TAG[.postN.devDISTANCE] – No -dirty.
Exceptions: 1: no tags. 0.post0.devDISTANCE
- pycmor._version.run_command(commands: List[str], args: List[str], cwd: str | None = None, verbose: bool = False, hide_stderr: bool = False, env: Dict[str, str] | None = None) Tuple[str | None, int | None][source]#
Call the given command(s).
- pycmor._version.versions_from_parentdir(parentdir_prefix: str, root: str, verbose: bool) Dict[str, Any][source]#
Try to determine the version from the parent directory name.
Source tarballs conventionally unpack into a directory that includes both the project name and a version string. We will also support searching up two directory levels for an appropriately named parent directory
pycmor.cli module#
- pycmor.cli.MAX_FRAMES = 3#
The maximum number of frames to show in the traceback if there is an error. Default to 3
- Type:
pycmor.webapp module#
Web Viewer for CMIP6 Data Tables#
We provide a Streamlit web application that provides an interface for interacting with CMIP6 (Coupled Model Intercomparison Project Phase 6) data tables.
Launch it from the command line with:
$ pycmor table-explorer
The application allows users to load these tables from three different sources: GitHub, a local directory, or directly from the user’s laptop. The tables are JSON files containing metadata about climate model outputs.
The main features of the application are:
Table Source Selection: Users can select the source of the tables. The options are ‘github’, ‘Local’, and ‘Laptop’. Depending on the selection, the user can provide a URL (for GitHub), a directory path (for Local), or upload files (for Laptop).
Table Processing: The application processes each table, extracting key information such as table ID, frequency, and variable entries. Tables that do not contain variable entries or frequency are added to an ignore list.
Variable Selection and Display: Users can select a variable from the processed tables. The application then displays all tables and frequencies where this variable is found, along with additional information such as the time method (Instantaneous, Climatology, or Mean).
Metrics Display: The application displays metrics about the processed tables, including the number of tables, frequencies, and variables.
Ignored Tables: The application provides an expander to view all ignored tables.
The application uses multithreading to load and process tables from GitHub, improving performance when dealing with a large number of tables.
This module contains several functions:
- `process_table(tbl_name: str, data: dict)`: Processes a single table,
extracting key information and updating global data structures.
- `show_selected_variable(varname)`: Displays information about
the selected variable.
`load_data_from_github(f, ctx)`: Loads a single table from GitHub.
The application uses several global data structures to store information about the tables and variables, including tbls, tbl_raw_data, var_to_tbl, frequencies, tids, and ignored_table_files.