Skip to main content

RO-Crate metadata generator/parser

Project description

Python package Upload Python Package PyPI version

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.

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.2.3.tar.gz (270.9 kB view details)

Uploaded Source

Built Distribution

rocrate-0.2.3-py3-none-any.whl (292.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: rocrate-0.2.3.tar.gz
  • Upload date:
  • Size: 270.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.22.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.9.0

File hashes

Hashes for rocrate-0.2.3.tar.gz
Algorithm Hash digest
SHA256 4e8a3d701b2d385dfc346b048ab679a6e9f079d07ec4e3bb3a1be0579f0bf721
MD5 20aea5ea2e1b40e492f65da2a6b5e8f1
BLAKE2b-256 d571e7da1a8b0e361c6167fe21e9d3a1e5912f72124dfc7332fd0ab3c55e3631

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rocrate-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 292.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.22.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.9.0

File hashes

Hashes for rocrate-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 7274721627aa468f94a96b26c77c346d568d98eb21e5a095d5746b8b9493452b
MD5 3339ae1e4a8830bfd51b02d568301432
BLAKE2b-256 56300142d690e11c32a4a0498e7c465cfe476698c76b8739176ff1bed5d93fda

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