Skip to main content

Lightweight Python library for RO-Crate manipulation implemented in Rust

Project description

Overview

rocraters is a python library that is built upon a rust backend for interfacing with RO-Crates. This implementation was specifically created to address the challenges of data handling on automated robotic systems within an automated synthetic biology lab, however it's noted that this could have more general applicability to other environments.

It's aim is to provide a robust, portable and scalable solution to dealing with RO-Crates within the varying software environments of a synthetic biology lab stack. It's designed to be maximally flexible with minimal onboarding, allowing you to incorprate it into scrpits/ data pipelines as easily as possible. This also relies on you to have an understanding of the structure of an RO-Crate, but focuses more on the fact that some metadata is better than no metadata.

This is not the go-to python libary for RO-Crate interfacing, please see ro-crate-py for a full python implementation.

Build

Built using PyO3 and maturin. Recommended to setup python venv, then install maturin (and remember maturin[patchelf])

Installation

pip install -i https://test.pypi.org/simple/ rocraters

Basic usage

The RO-Crate specification defines an RO-Crate as a JSON-LD file, consisting of a context and a graph. As such, in python it is a dictionary containing a "context" key, with some form of vocab context (default is the RO-Crate context) and a "graph" key, which contains a list of json objects (dictionaries).

To create an empty RO-Crate, you need to do the following:

from rocraters import PyRoCrateContext, PyRoCrate

# Define context 
context = PyRoCrateContext.from_string(" https://w3id.org/ro/crate/1.1/context")

# Initialise empty crate 
crate = PyRoCrate(context)

# For an easy start, you can make a default crate!
default_crate = PyRoCrate.new_default()

Now, there are 4 primary objects (dictionaries) that can be added to the crate:

  1. Metadata descriptor (only 1 per crate)
  2. Root data entity (only 1 per crate)
  3. Data entity (zero - many)
  4. Contextual entity (zero - many)

These are all based upon the specification.

To populate the basic crate, with the essential keys to conform to specification:

# Continuation of the above examples 
# Metadata descriptor 
descriptor = {
        "type": "CreativeWork",
        "id": "ro-crate-metadata.json",
        "conformsTo": {"id": "https://w3id.org/ro/crate/1.1"},
        "about": {"id": "./"}
}
# Root data entity 
root =  {
    "id": "./",
    "type": "Dataset",
    "datePublished": "2017",
    "license": {"id": "https://creativecommons.org/licenses/by-nc-sa/3.0/au/"}
}
# Data entity 
data = {
    "id": "data_file.txt",
    "type": "Dataset"
}
# Contextual entity 
contextual = {
    "id": "#JohnDoe",
    "type": "Person",
}

# Update the RO-Crate object 
crate.update_descriptor(descriptor)
crate.update_root(root)
crate.update_data(data)
crate.update_contextual(contextual)

To then write the crate to a ro-crate-metadata.json file in the current working directory:

# Continuation of the above examples
# Write crate 
crate.write()

To then read a ro-crate-metadata.json file and load it in as a structured object:

# New example
from rocraters import read

# Read RO-Crate at specified path 
crate = read("ro-crate-metadata.json", True)

To zip the folder and all contained directories within the ro-crate-metadata.json directory:

# new example 
from rocraters import zip

zip("ro-crate-metadata.json", True)

Modifying a RO-Crate

As per the libraries purpose, modification, ie the deletion, update and addition of entites is intended to be as simple as possible, whilst ensuring minimal conformance:

# Example based upon previously made crate
from rocraters import read

crate = read("ro-crate-metadata.json", True) 

# Update the data entity and make modification 
data_target = crate.get_entity("data_file.txt")
data_target["description"] = "A text file dataset containing information"

# Update the contextual entity and make modification
contextual_target = crate.get_entity("#JohnDoe")
contextual_target.update({"id" : "#JaneDoe"})
crate.update_contextual(contextual_target)

# To delete a key:value 
data_target.pop("description")

# To delete an entity - this immediately updates the crate object
contextual_target.delete_entity("#JaneDoe")

# We then update the crate the same way we make it
# The ID will be used to serach the crate and overwrites the object with an indentical "id" key
crate.update_data(data_target)
crate.write()

Custom compilation

PyO3 is used to handle python bindings. Maturin is used as the build tool.

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

rocraters-0.4.4.tar.gz (456.1 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

rocraters-0.4.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

rocraters-0.4.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl (1.3 MB view details)

Uploaded PyPymanylinux: glibc 2.5+ i686

rocraters-0.4.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

rocraters-0.4.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl (1.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.5+ i686

rocraters-0.4.4-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (2.2 MB view details)

Uploaded CPython 3.13macOS 10.12+ universal2 (ARM64, x86-64)macOS 10.12+ x86-64macOS 11.0+ ARM64

rocraters-0.4.4-cp312-cp312-win_amd64.whl (921.7 kB view details)

Uploaded CPython 3.12Windows x86-64

rocraters-0.4.4-cp312-cp312-win32.whl (877.9 kB view details)

Uploaded CPython 3.12Windows x86

rocraters-0.4.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

rocraters-0.4.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl (1.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.5+ i686

rocraters-0.4.4-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (2.3 MB view details)

Uploaded CPython 3.12macOS 10.12+ universal2 (ARM64, x86-64)macOS 10.12+ x86-64macOS 11.0+ ARM64

rocraters-0.4.4-cp311-cp311-win_amd64.whl (922.0 kB view details)

Uploaded CPython 3.11Windows x86-64

rocraters-0.4.4-cp311-cp311-win32.whl (878.3 kB view details)

Uploaded CPython 3.11Windows x86

rocraters-0.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

rocraters-0.4.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl (1.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.5+ i686

rocraters-0.4.4-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (2.3 MB view details)

Uploaded CPython 3.11macOS 10.12+ universal2 (ARM64, x86-64)macOS 10.12+ x86-64macOS 11.0+ ARM64

rocraters-0.4.4-cp310-cp310-win_amd64.whl (922.0 kB view details)

Uploaded CPython 3.10Windows x86-64

rocraters-0.4.4-cp310-cp310-win32.whl (878.2 kB view details)

Uploaded CPython 3.10Windows x86

rocraters-0.4.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

rocraters-0.4.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl (1.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.5+ i686

rocraters-0.4.4-cp310-cp310-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

rocraters-0.4.4-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (2.3 MB view details)

Uploaded CPython 3.10macOS 10.12+ universal2 (ARM64, x86-64)macOS 10.12+ x86-64macOS 11.0+ ARM64

File details

Details for the file rocraters-0.4.4.tar.gz.

File metadata

  • Download URL: rocraters-0.4.4.tar.gz
  • Upload date:
  • Size: 456.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.8.1

File hashes

Hashes for rocraters-0.4.4.tar.gz
Algorithm Hash digest
SHA256 746c2b72bdfc57c774f699394a00fab26f74ad0cb2d9805130320d252e56eebe
MD5 102e66f157065d6a7c607e57cd6d6e98
BLAKE2b-256 0cba814ee0483b5b292bbe332f4cf697ba8f8c76c2c1cdebf00a37d8e83c1192

See more details on using hashes here.

File details

Details for the file rocraters-0.4.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rocraters-0.4.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3c1cfce4ff439e89bb67d74068795590261b5bfb6dd28919f38a1751fa5d7413
MD5 974a87fd2d65694a547df47bbd5e4b9a
BLAKE2b-256 59f2009b5e2274a827967fe2d4a16cce4bda49957ab62318e6b94996ac227a47

See more details on using hashes here.

File details

Details for the file rocraters-0.4.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for rocraters-0.4.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 b83782f174c5f4399aee2a11c341445bd399aa48dbc0475a0ba256fc0c1ceddd
MD5 6b4bd533e58474b88fc806aa97d012ce
BLAKE2b-256 332d79a50ad5f06ede891b2b883236773ac1564228dfd58f51f6eb41f346b9fa

See more details on using hashes here.

File details

Details for the file rocraters-0.4.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rocraters-0.4.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ebceb85e251056dd064f385890701d029da5314fe5690bbfe572160eb16390da
MD5 5333765bfb3c968751b078aa2915b7b9
BLAKE2b-256 223f3ca426592c8da30d109dc3f7727a9c1abbdca58380fea85e958f4b32ffad

See more details on using hashes here.

File details

Details for the file rocraters-0.4.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for rocraters-0.4.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 96c17fa51e1fe3fe92f3fa25139dc84525e085745e91d67ba113fff4785083cf
MD5 70c8a21b22a49134e66fef112b0c3e67
BLAKE2b-256 07f71a44d8b23b035c6336f700dc0830904b9fee0431be173c9d3feea1aca98a

See more details on using hashes here.

File details

Details for the file rocraters-0.4.4-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for rocraters-0.4.4-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 c524d32afdf36829b611bee0735986ffad42cb78ff037a83e68ad930d90638dc
MD5 10a1a8b1f2e657c76e8c487f7ca7a942
BLAKE2b-256 6bf7703bad8b0d82b808245063f3657e378527793fb6173e2cd2409202e4c0d8

See more details on using hashes here.

File details

Details for the file rocraters-0.4.4-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for rocraters-0.4.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 6f470b460d498633882d7397cf31b3871ca18ddbd6a08a6e2a91d3c260cd4f51
MD5 2a963126c1719cf51282c5cdbad6b59b
BLAKE2b-256 a53d621e1ce193591a80590b59abef2b02b09ef82c7e4a792c5eb1969926337e

See more details on using hashes here.

File details

Details for the file rocraters-0.4.4-cp312-cp312-win32.whl.

File metadata

  • Download URL: rocraters-0.4.4-cp312-cp312-win32.whl
  • Upload date:
  • Size: 877.9 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.8.1

File hashes

Hashes for rocraters-0.4.4-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 f4825931c5a1bd02bf24c1800404ba5287c72fc4ed4a8d338f783fce5e9d0670
MD5 46cb7c43eddb8243f61857de04a0ec2a
BLAKE2b-256 1469dede10464e99f85450f4d990290d300b44b505fb983a5fd895a22288ae88

See more details on using hashes here.

File details

Details for the file rocraters-0.4.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rocraters-0.4.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9e803af9ab4cd44b6732e8bc0f6cfa3dc762a3eeaf66bf26a44f684066a86305
MD5 2cf814de79904122d6dc54256aa430ad
BLAKE2b-256 52b181b2aa2f8566d7e7092b873f00ac6d82ad4af9d65100b012972eaa6bcf44

See more details on using hashes here.

File details

Details for the file rocraters-0.4.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for rocraters-0.4.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 d5f92b18dac1838ac365db8260ad28c47722a5eafe6c908617b57a249ea5d1b4
MD5 add9c2c71a00b6509cd17fb50f17823d
BLAKE2b-256 60e6121d6e9c676cb516abcab3aac4a912f10f698f06b71bc44d9075934704c1

See more details on using hashes here.

File details

Details for the file rocraters-0.4.4-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for rocraters-0.4.4-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 73cae1f25c59f39299c98a39f7ba51d8e129acbc8d03a820aeb46a77f355946c
MD5 c12c3dfb72c2fff684b9fdb722a6e4f2
BLAKE2b-256 1fc7afa7cb82cf7f1cb1d4b8834253ba184b15956d9bdf74de62c7fb56321567

See more details on using hashes here.

File details

Details for the file rocraters-0.4.4-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for rocraters-0.4.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6c0d8448169fca7527e9a5b9b54e4233028e849ac16b5cb68c7a2175f9c5f070
MD5 bcd13641d9cda884a19fb2c59927a86c
BLAKE2b-256 f6725455c627c387a20fe8e2d2ffffc2cc7cb0a217db2f6159d4b3f4386568c7

See more details on using hashes here.

File details

Details for the file rocraters-0.4.4-cp311-cp311-win32.whl.

File metadata

  • Download URL: rocraters-0.4.4-cp311-cp311-win32.whl
  • Upload date:
  • Size: 878.3 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.8.1

File hashes

Hashes for rocraters-0.4.4-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 ba842e61ef753b2104c65901a44645419efb46bb740b8c8cab41bee3499a676a
MD5 92eb815bdde87851aa88b48fc55c2f49
BLAKE2b-256 2da5726ca8f83a4b9245da03a93786883506f042321edadf9b3da4392e2442b4

See more details on using hashes here.

File details

Details for the file rocraters-0.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rocraters-0.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a350e52e5892b70a872d4fad00d0fdb81bd2febd16e1dd7259e33733ef338b76
MD5 8b0076c8f7ce8b4bb1b4a54a43abd128
BLAKE2b-256 760a58946ce7d2a9d7e1587303221cf8fb135671c809515c3bc37f0f2567c30e

See more details on using hashes here.

File details

Details for the file rocraters-0.4.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for rocraters-0.4.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 bd619dae897b699f3f416fea8e518dd7ee765b7c4c4ccef3afa86db02ed5cfd7
MD5 8ca08526dba4d6ebd385da6235689fd8
BLAKE2b-256 93b0b39f6da088e16d556f23e48e47736665f4a50e0ffe1ad3b3602b2c996749

See more details on using hashes here.

File details

Details for the file rocraters-0.4.4-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for rocraters-0.4.4-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 45ff6c19a23d2817abf39540f869babd0d11c854b2549531afe468f5a232c5de
MD5 443ea30dedff17eda1980aa6d2a51cbf
BLAKE2b-256 ac675e10b1ec6717feee427f24b08d2d1f18134fe964d2bdbed39826db1d7440

See more details on using hashes here.

File details

Details for the file rocraters-0.4.4-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for rocraters-0.4.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 6abc167cce31e19669cecba6c151e7aebe26123396f463f73bcd6dccb9b3697e
MD5 daec7e70390df9d311cf1f8c250b7360
BLAKE2b-256 78de46cdcb48e0494930c7b1159f4ce0a386de61ca9cb78dc0296ed5dbc87e6e

See more details on using hashes here.

File details

Details for the file rocraters-0.4.4-cp310-cp310-win32.whl.

File metadata

  • Download URL: rocraters-0.4.4-cp310-cp310-win32.whl
  • Upload date:
  • Size: 878.2 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.8.1

File hashes

Hashes for rocraters-0.4.4-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 726d7a4822d2b3ac26abb357a3526ee20b8a584194fd880f7ff45e6e8bd51466
MD5 edbf3a3bae75a371bf18721778028c6b
BLAKE2b-256 11e0ce9fa02719b9dce861002070017b624d5cff80b2d3371e2c798dccc04f99

See more details on using hashes here.

File details

Details for the file rocraters-0.4.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rocraters-0.4.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 744bc2f1e64e5d92ec76e9bcc4a644a0bc2e6843af880e22c83794383eb63f8e
MD5 827991aa2f8df29a94c3336e5ff17609
BLAKE2b-256 5d791e324492bd59cbb68a1b2d14e2b52f3106f0074bfa60dabee37e81b4b332

See more details on using hashes here.

File details

Details for the file rocraters-0.4.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for rocraters-0.4.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 c3bfe2e7c48eff7810c476a9ed6dbbcfc1f22277992bf39ec9f7b87ad2b8ebdb
MD5 fa4639f57aa4a4c26b5da7946f571779
BLAKE2b-256 4a4dcc802be1bb4e386885448a140d41ebf6e55ba34f085505f980b44aeaecdd

See more details on using hashes here.

File details

Details for the file rocraters-0.4.4-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rocraters-0.4.4-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 260a832d489f67cb325b4f7a0dddf61eef6a09072b3fbcc7d45d2b320ea3a50d
MD5 89bfb0a85ac9631dae51f4066072138c
BLAKE2b-256 3a8062909dd6221f29f8adbbf117af6a21a2747012c23f2b816a8062721ddcb4

See more details on using hashes here.

File details

Details for the file rocraters-0.4.4-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for rocraters-0.4.4-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 3fce153be3e3936e284280b081f1b955417d8e31396a8bc88a418b76ddc33b60
MD5 99d56d6e32db27802356091c548e910f
BLAKE2b-256 cb4ab88944277144028fbef09601c02315015d9952ece90efffee6810743e362

See more details on using hashes here.

Supported by

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