Climate-REF / Climate-REF/climate-ref

Provenance template

Open
#370 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.