Climate-REF / Climate-REF/climate-ref
Provenance template
- Dominant language
- Python
- Stars
- 26
- Forks
- 14
- Avg merge
- 1d 10h
- Merged PRs (30d)
- 36
Description
Based on the ESMValTool provenance template (https://github.com/ESMValGroup/ESMValTool/issues/4118), I have created the first attempt at a REF-specific provenance template:
```
document
prefix var
prefix attribute
prefix preprocessor
activity(var:diagnosticTask, -, -)
activity(var:preprocessingTask, -, -)
activity(var:execution, -, -)
agent(
var:diagnosticAuthor,
[
attribute:email='var:emailDiagnosticAuthor',
attribute:orcid='var:orcidDiagnosticAuthor',
attribute:github='var:githubDiagnosticAuthor',
attribute:institute='var:instituteDiagnosticAuthor'
]
)
agent(
var:software,
[
attribute:version='var:softwareVersion',
attribute:metric_package='var:softwareMetricPackage',
attribute:metric_package_version='var:softwareMetricPackageVersion',
attribute:conda_env='var:softwareCondaEnvironment',
]
)
agent(
var:recipeAuthor,
[
attribute:email='var:emailRecipeAuthor',
attribute:orcid='var:orcidRecipeAuthor',
attribute:github='var:githubRecipeAuthor',
attribute:institute='var:instituteRecipeAuthor'
]
)
agent(var:project)
entity(
var:inputFile,
[
attribute:Conventions='var:inputFileConventions',
attribute:branch_time='var:inputFileBranchTime',
attribute:cmor_version='var:inputFileCMORVersion',
attribute:model_id='var:inputFileModelId',
attribute:source_id='var:inputFileSourceId',
attribute:tracking_id='var:inputFileTrackingId',
attribute:doi='var:inputFileDOI',
attribute:institution_id='var:inputFileInstitutionId',
attribute:institution='var:inputFileInstitution',
...
]
)
entity(
var:preprocessedFile,
[
attribute:Conventions='var:inputFileConventions',
attribute:branch_time='var:inputFileBranchTime',
attribute:cmor_version='var:inputFileCMORVersion',
attribute:model_id='var:inputFileModelId',
...
preprocessor:regrid='var:regridPreprocessorSettings',
preprocessor:convert_units='var:convertUnitsPreprocessorSettings',
...
]
)
entity(
var:resultFile,
[
attribute:caption='var:resultCaption',
attribute:domains='var:resultDomains',
attribute:realm='var:resultRealm',
attribute:references='var:resultReferences'
...
]
)
entity(
var:recipe,
[
attribute:description='var:recipeDescription',
attribute:references='var:recipeReferences'
]
)
wasDerivedFrom(var:preprocessedFile, var:inputFile, var:preprocessingTask, -, -)
wasDerivedFrom(var:resultFile, var:preprocessedFile, var:diagnosticTask, -, -)
wasAttributedTo(var:recipe, var:recipeAuthor)
wasAttributedTo(var:recipe, var:project)
wasAttributedTo(var:resultFile, var:recipeAuthor)
wasAttributedTo(var:resultFile, var:software)
wasAttributedTo(var:resultFile, var:diagnosticAuthor)
wasStartedBy(var:preprocessingTask, var:recipe, var:execution, -)
wasStartedBy(var:diagnosticTask, var:recipe, var:execution, -)
endDocument
```
The main changes are:
- software is an agent (the REF), with various attributes, such as the version of the REF, the model evaluation package and version (e.g. ILAMB, IOMB, ESMValTool, PMP) used to run the diagnostic, and the conda environment loaded when running the diagnostic (essentially a record of all the packages etc loaded at the time of execution, if "conda" is too specific, this attribute could be generalised)
- I have changed the activity to "execution", I think that's how @lewisjared has been referring to running a single instance of the REF, but if this is not the appropriate wording, please do change it.
- under the inputFile entity, I have listed some of the attributes that are important/required for the REF, but in general, all global attributes could/should be stored as attributes in the provenance record.
One question I had was:
- Do we want to have two different entities, one for observational datasets (inputObsFile) and another for model output (inputModelFile), instead of just having inputFile?
Contributor guide
Assessment
This issue has not been assessed yet.