This repository contains the source code of a structure-based approach to transfer Electronic Lab Notebook (ELN) protocols including research data into a Research Object Crates (RO-Crates) bundle whereas the semantic model rerpresents retrospective provenance about the research data.
Note that this software is a research prototype and may contain bugs and errors, i.e., do not use this in production.
The approach has been used in order to create the RO-Crates at: https://github.com/SFB-ELAINE/Ca-imaging-RO-Crate
The approach is described in full detail in this article:
Max Schröder, Susanne Staehlke, Paul Groth, J. Barbara Nebe, Sascha Spors, Frank Krüger.
Structure-based knowledge acquisition from electronic lab notebooks for research data provenance documentation.
Journal of Biomedical Semantics 13, 4 (2022).
https://doi.org/10.1186/s13326-021-00257-x
This work is licensed under a Creative Commons Attribution 4.0 International License.
In order to reference this software, please consider the information in the CITATION.cff file.
In order to run the source code, install the python dependencies from requirements.txt and make sure that Docker is installed and running.
A minimum running example is as follows:
model = ELN2Crate(LOGGER, NAMESPACE_URL, ELABFTW_URL, ELABFTW_MANAGER, EXP_ID, PSEUDONYMIZE_PERSONS)
try:
model.write_files()
model.create_model()
model.write_crate('./ro-crate_%i' % (EXP_ID))
except ProtocolElementUnknown as e:
print('Protocol element is unknown: ' + str(e), file=sys.stderr)where the following variables have been set:
LOGGERcontains an initialized python-logger using the packageloggingNAMESPACE_URLis the base URL of the namespace of the semantic modelELABFTW_URLURL of the elabFTW instance that is used for the documentation of the experimentsELABFTW_MANAGERan initialized version of theelabapy.Manager()with read permissions on the experiment and the corresponding inventory itemsEXP_IDthe experiment ID that should be bundledPSEUDONYMIZE_PERSONSis an array of strings that should be replaced by pseudonymized before bundling in order to protect privacy.
