Skip to main content

RO-Crate metadata generator/parser

Project description

Python package Upload Python Package PyPI version DOI

ro-crate-py

Python library to create/parse RO-Crate (Research Object Crate) metadata.

Supports specification: RO-Crate 1.1

Status: Alpha

Contribute

Source code: https://github.com/researchobject/ro-crate-py

Feel free to raise a pull request at https://github.com/researchobject/ro-crate-py/pulls or an issue at https://github.com/researchobject/ro-crate-py/issues.

Submitted contributions are assumed to be covered by section 5 of the Apache License 2.0.

For development, you can build a Docker image with:

docker build -t ro-crate-py .

And then run it interactively with:

docker run --rm -it --name ro-crate-py ro-crate-py bash

Installing

You will need Python 3.6 or later (Recommended: 3.7).

This library is easiest to install using pip:

pip install rocrate

If you want to install manually from this code base, then try:

pip install .

..or if you use don't use pip:

python setup.py install

General usage

The RO-crate object

In general you will want to start by instantiating the ROCrate object. This can be a new one:

crate = ROCrate() 

or an existing RO-Crate package can be loaded from a directory or zip file:

crate = ROCrate('/path/to/crate/')
crate = ROCrate('/path/to/crate/file.zip')

In addition, there is a set of higher level functions in the form of an interface to help users create some predefined types of crates. As an example here is the code to create a workflow RO-Crate, containing a workflow template. This is a good starting point if you want to wrap up a workflow template to register at workflowhub.eu:

from rocrate import rocrate_api

wf_path = "test/test-data/test_galaxy_wf.ga"
files_list = ["test/test-data/test_file_galaxy.txt"]

# Create base package
wf_crate = rocrate_api.make_workflow_rocrate(workflow_path=wf_path,wf_type="Galaxy",include_files=files_list)

Independently of the initialization method, once an instance of ROCrate is created it can be manipulated to extend the content and metadata.

Data entities

Data entities can be added with:

## adding a File entity:
sample_file = '/path/to/sample_file.txt'
file_entity = crate.add_file(sample_file)

# Adding a File entity with a reference to an external (absolute) URI
remote_file = crate.add_file('https://github.com/ResearchObject/ro-crate-py/blob/master/test/test-data/test_galaxy_wf.ga', fetch_remote = False)

# adding a Dataset
sample_dir = '/path/to/dir'
dataset_entity = crate.add_directory(sample_dir, 'relative/rocrate/path')

Contextual entities

Contextual entities are used in an RO-Crate to adequately describe a Data Entity. The following example shows how to add the person contextual entity to the RO-Crate root:

# Add authors info
crate.add_person('#joe', {'name': 'Joe Bloggs'})

# wf_crate example
publisher = wf_crate.add_person('001', {'name': 'Bert Verlinden'})

creator = wf_crate.add_person('002', {'name': 'Lee Ritenour'})

# These contextual entities can be assigned to other metadata properties:

wf_crate.publisher = publisher
wf_crate.creator = [ creator, publisher ]

Other metadata

Several metadata fields on root level are supported for the workflow RO-crate:

wf_crate.license = 'MIT'
wf_crate.isBasedOn = "https://climate.usegalaxy.eu/u/annefou/w/workflow-constructed-from-history-climate-101"
wf_crate.name = 'Climate 101'
wf_crate.keywords = ['GTN', 'climate']
wf_crate.image = "climate_101_workflow.svg"
wf_crate.description = "The tutorial for this workflow can be found on Galaxy Training Network"
wf_crate.CreativeWorkStatus = "Stable"

Writing the RO-crate file

In order to write the crate object contents to a zip file package or a decompressed directory, there are 2 write methods that can be used:

# Write to zip file
out_path = "/home/test_user/crate"
crate.write_zip(out_path)

# write crate to disk
out_path = "/home/test_user/crate_base"
crate.write_crate(out_path)

License

  • © 2019-2020 The University of Manchester, UK
  • © 2020 Vlaams Instituut voor Biotechnologie (VIB), BE
  • © 2020 Barcelona Supercomputing Center (BSC), ES
  • © 2020 Center for Advanced Studies, Research and Development in Sardinia (CRS4), IT

Licensed under the Apache License, version 2.0 https://www.apache.org/licenses/LICENSE-2.0, see the file LICENSE.txt for details.

Cite as

DOI

The above DOI corresponds to the latest versioned release as published to Zenodo, where you will find all earlier releases. To cite ro-crate-py independent of version, use https://doi.org/10.5281/zenodo.3956493, which will always redirect to the latest release.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rocrate-0.3.1.tar.gz (273.0 kB view details)

Uploaded Source

Built Distribution

rocrate-0.3.1-py3-none-any.whl (298.6 kB view details)

Uploaded Python 3

File details

Details for the file rocrate-0.3.1.tar.gz.

File metadata

  • Download URL: rocrate-0.3.1.tar.gz
  • Upload date:
  • Size: 273.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.1

File hashes

Hashes for rocrate-0.3.1.tar.gz
Algorithm Hash digest
SHA256 f376d389679188493e9617ea5b0f842fb9b94270edf3829f4290929ea02b0e85
MD5 b38ee0531aadd4c943c28e8ca90940cb
BLAKE2b-256 d6d3886c1dd2b7283793697a7dc80ed648e81abb2f92429c6aaf33b24e38ccba

See more details on using hashes here.

File details

Details for the file rocrate-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: rocrate-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 298.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.1

File hashes

Hashes for rocrate-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5b857e92dff1710c4d87d2383a29f1a1a9725d37482317d09facad563d2a89c4
MD5 c727c28e9bfc469cd4709ced03ae3985
BLAKE2b-256 c7ccc92de892f6ed2181b96ee64edaa78ef000f512de59fc309a91e28b857c63

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page