Building sources#
Each entry in an intake-dataframe-catalog refers to an Intake source. Sources may be pre-generated (e.g.
the CMIP5 and CMIP6 Intake-ESM datastore sources managed by NCI)
or they can be built using the access_nri_intake.source sub-package. Currently,
access_nri_intake.source only supports building Intake-ESM datastore sources.
When access_nri_intake.source is first imported, it downloads and parses a specific commit of the
schema at ACCESS-NRI/schema and stores it in the variable
access_nri_intake.source.ESM_JSONSCHEMA. This schema defines what metadata must be included in an
Intake-ESM catalog, and what types and fields are allowed. Subsequent imports read the downloaded schema,
unless the schema is changed (see Catalog schema), in which case the new schema is downloaded.
Note
The “required” field in the downloaded schema is replaced with access_nri_intake.source.CORE_COLUMNS
prior to saving to access_nri_intake.source.ESM_JSONSCHEMA to allow this field to be customized
within access-nri-intake
Builders#
New Intake-ESM datastores can be created for ACCESS model output using the Builder classes in the sub-module
access_nri_intake.source.builders. All public Builders inherit from
access_nri_intake.source.builders.BaseBuilder, which inherits from ecgtools.builder.Builder.
access_nri_intake.source.builders.BaseBuilder simply reorganises the functionality in
ecgtools.builder.Builder so that self-contained Builder classes can be easily written for different
types of model output. All Builders validate against the schema in
access_nri_intake.source.ESM_JSONSCHEMA.
Creating a new Builder#
New Builders should inherit from access_nri_intake.source.builders.BaseBuilder. In general, all that
should be required is to:
Hardcode some of the optional
kwargsonBaseBuilder.__init__in the__init__method of the new Builder. The exact choice of whichkwargsare hardcoded will depend on the specifics of the target model output. It might be useful to look at existing Builder class implementations and at theecgtools.builder.Builderclass, which is inhereted byaccess_nri_intake.source.builders.BaseBuilder- see theecgtoolsdocumentation here. The Intake-ESM specifications will also be helpful for interpreting many of thekwargsOverwrite the static
parsermethod. This method should receive a single file (usually netcdf) and return a dictionary containing all of the metadata to include in the Intake-ESM datastore. As described above the dictionary is validated againstaccess_nri_intake.source.ESM_JSONSCHEMA. Theparsermethod serves the same function as custom parsers inecgtools, so the documentation on these may be useful. Again, it will also be helpful to look at existing Builder class implementations.Optionally, override the
PATTERNSclass variable to restrict which files are crawled. By default,BaseBuilderwill crawl all*.ncfiles found under the given path. If a model’s output follows specific filename conventions, settingPATTERNSto a list of glob patterns will limit crawling to only matching files.
API for access_nri_intake.source#
This documentation has been auto-generated using sphinx-autoapi
- access_nri_intake.source
- Submodules
- access_nri_intake.source.builders
- Classes
- Module Contents
AccessOm2BuilderAccessOm2Builder.parser()AccessOm2Builder.PATTERNSAccessOm2Builder.pathsAccessOm2Builder.depthAccessOm2Builder.exclude_patternsAccessOm2Builder.include_patternsAccessOm2Builder.data_formatAccessOm2Builder.groupby_attrsAccessOm2Builder.aggregationsAccessOm2Builder.storage_optionsAccessOm2Builder.joblib_parallel_kwargsAccessOm2Builder.parse()AccessOm2Builder.save()AccessOm2Builder.validate_parser()AccessOm2Builder.build()AccessOm2Builder.columns_with_iterablesAccessOm2Builder.parse_filename_freq()AccessOm2Builder.parse_ncfile()AccessOm2Builder.valid_assetsAccessOm2Builder.get_assets()AccessOm2Builder.clean_dataframe()
AccessOm3BuilderAccessOm3Builder.parser()AccessOm3Builder.PATTERNSAccessOm3Builder.pathsAccessOm3Builder.depthAccessOm3Builder.exclude_patternsAccessOm3Builder.include_patternsAccessOm3Builder.data_formatAccessOm3Builder.groupby_attrsAccessOm3Builder.aggregationsAccessOm3Builder.storage_optionsAccessOm3Builder.joblib_parallel_kwargsAccessOm3Builder.parse()AccessOm3Builder.save()AccessOm3Builder.validate_parser()AccessOm3Builder.build()AccessOm3Builder.columns_with_iterablesAccessOm3Builder.parse_filename_freq()AccessOm3Builder.parse_ncfile()AccessOm3Builder.valid_assetsAccessOm3Builder.get_assets()AccessOm3Builder.clean_dataframe()
Mom6BuilderMom6Builder.parser()Mom6Builder.PATTERNSMom6Builder.pathsMom6Builder.depthMom6Builder.exclude_patternsMom6Builder.include_patternsMom6Builder.data_formatMom6Builder.groupby_attrsMom6Builder.aggregationsMom6Builder.storage_optionsMom6Builder.joblib_parallel_kwargsMom6Builder.parse()Mom6Builder.save()Mom6Builder.validate_parser()Mom6Builder.build()Mom6Builder.columns_with_iterablesMom6Builder.parse_filename_freq()Mom6Builder.parse_ncfile()Mom6Builder.valid_assetsMom6Builder.get_assets()Mom6Builder.clean_dataframe()
AccessEsm15BuilderAccessEsm15Builder.parser()AccessEsm15Builder.PATTERNSAccessEsm15Builder.pathsAccessEsm15Builder.depthAccessEsm15Builder.exclude_patternsAccessEsm15Builder.include_patternsAccessEsm15Builder.data_formatAccessEsm15Builder.groupby_attrsAccessEsm15Builder.aggregationsAccessEsm15Builder.storage_optionsAccessEsm15Builder.joblib_parallel_kwargsAccessEsm15Builder.parse()AccessEsm15Builder.save()AccessEsm15Builder.validate_parser()AccessEsm15Builder.build()AccessEsm15Builder.columns_with_iterablesAccessEsm15Builder.parse_filename_freq()AccessEsm15Builder.parse_ncfile()AccessEsm15Builder.valid_assetsAccessEsm15Builder.get_assets()AccessEsm15Builder.clean_dataframe()
AccessCm2BuilderAccessCm2Builder.parser()AccessCm2Builder.PATTERNSAccessCm2Builder.pathsAccessCm2Builder.depthAccessCm2Builder.exclude_patternsAccessCm2Builder.include_patternsAccessCm2Builder.data_formatAccessCm2Builder.groupby_attrsAccessCm2Builder.aggregationsAccessCm2Builder.storage_optionsAccessCm2Builder.joblib_parallel_kwargsAccessCm2Builder.parse()AccessCm2Builder.save()AccessCm2Builder.validate_parser()AccessCm2Builder.build()AccessCm2Builder.columns_with_iterablesAccessCm2Builder.parse_filename_freq()AccessCm2Builder.parse_ncfile()AccessCm2Builder.valid_assetsAccessCm2Builder.get_assets()AccessCm2Builder.clean_dataframe()
AccessEsm16BuilderAccessEsm16Builder.PATH_REGEXAccessEsm16Builder.REALM_MAPPINGAccessEsm16Builder.parser()AccessEsm16Builder.PATTERNSAccessEsm16Builder.pathsAccessEsm16Builder.depthAccessEsm16Builder.exclude_patternsAccessEsm16Builder.include_patternsAccessEsm16Builder.data_formatAccessEsm16Builder.groupby_attrsAccessEsm16Builder.aggregationsAccessEsm16Builder.storage_optionsAccessEsm16Builder.joblib_parallel_kwargsAccessEsm16Builder.parse()AccessEsm16Builder.save()AccessEsm16Builder.validate_parser()AccessEsm16Builder.build()AccessEsm16Builder.columns_with_iterablesAccessEsm16Builder.parse_filename_freq()AccessEsm16Builder.parse_ncfile()AccessEsm16Builder.valid_assetsAccessEsm16Builder.get_assets()AccessEsm16Builder.clean_dataframe()
OnlineMltBuilderOnlineMltBuilder.PATH_REGEXOnlineMltBuilder.REALM_MAPPINGOnlineMltBuilder.parser()OnlineMltBuilder.PATTERNSOnlineMltBuilder.pathsOnlineMltBuilder.depthOnlineMltBuilder.exclude_patternsOnlineMltBuilder.include_patternsOnlineMltBuilder.data_formatOnlineMltBuilder.groupby_attrsOnlineMltBuilder.aggregationsOnlineMltBuilder.storage_optionsOnlineMltBuilder.joblib_parallel_kwargsOnlineMltBuilder.parse()OnlineMltBuilder.save()OnlineMltBuilder.validate_parser()OnlineMltBuilder.build()OnlineMltBuilder.columns_with_iterablesOnlineMltBuilder.parse_filename_freq()OnlineMltBuilder.parse_ncfile()OnlineMltBuilder.valid_assetsOnlineMltBuilder.get_assets()OnlineMltBuilder.clean_dataframe()
AccessCm3BuilderAccessCm3Builder.parser()AccessCm3Builder.PATTERNSAccessCm3Builder.pathsAccessCm3Builder.depthAccessCm3Builder.exclude_patternsAccessCm3Builder.include_patternsAccessCm3Builder.data_formatAccessCm3Builder.groupby_attrsAccessCm3Builder.aggregationsAccessCm3Builder.storage_optionsAccessCm3Builder.joblib_parallel_kwargsAccessCm3Builder.parse()AccessCm3Builder.save()AccessCm3Builder.validate_parser()AccessCm3Builder.build()AccessCm3Builder.columns_with_iterablesAccessCm3Builder.parse_filename_freq()AccessCm3Builder.parse_ncfile()AccessCm3Builder.valid_assetsAccessCm3Builder.get_assets()AccessCm3Builder.clean_dataframe()
ROMSBuilderROMSBuilder.parser()ROMSBuilder.PATTERNSROMSBuilder.pathsROMSBuilder.depthROMSBuilder.exclude_patternsROMSBuilder.include_patternsROMSBuilder.data_formatROMSBuilder.groupby_attrsROMSBuilder.aggregationsROMSBuilder.storage_optionsROMSBuilder.joblib_parallel_kwargsROMSBuilder.parse()ROMSBuilder.save()ROMSBuilder.validate_parser()ROMSBuilder.build()ROMSBuilder.columns_with_iterablesROMSBuilder.parse_filename_freq()ROMSBuilder.parse_ncfile()ROMSBuilder.valid_assetsROMSBuilder.get_assets()ROMSBuilder.clean_dataframe()
WoaBuilderWoaBuilder.parser()WoaBuilder.PATTERNSWoaBuilder.pathsWoaBuilder.depthWoaBuilder.exclude_patternsWoaBuilder.include_patternsWoaBuilder.data_formatWoaBuilder.groupby_attrsWoaBuilder.aggregationsWoaBuilder.storage_optionsWoaBuilder.joblib_parallel_kwargsWoaBuilder.parse()WoaBuilder.save()WoaBuilder.validate_parser()WoaBuilder.build()WoaBuilder.columns_with_iterablesWoaBuilder.parse_filename_freq()WoaBuilder.parse_ncfile()WoaBuilder.valid_assetsWoaBuilder.get_assets()WoaBuilder.clean_dataframe()
Cmip6BuilderCmip6Builder.ensembleCmip6Builder.parser()Cmip6Builder.PATTERNSCmip6Builder.pathsCmip6Builder.depthCmip6Builder.exclude_patternsCmip6Builder.include_patternsCmip6Builder.data_formatCmip6Builder.groupby_attrsCmip6Builder.aggregationsCmip6Builder.storage_optionsCmip6Builder.joblib_parallel_kwargsCmip6Builder.parse()Cmip6Builder.save()Cmip6Builder.validate_parser()Cmip6Builder.build()Cmip6Builder.columns_with_iterablesCmip6Builder.parse_filename_freq()Cmip6Builder.parse_ncfile()Cmip6Builder.valid_assetsCmip6Builder.get_assets()Cmip6Builder.clean_dataframe()
- access_nri_intake.source.utils
- access_nri_intake.source.builders
- Attributes
- Package Contents
- Submodules