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.1.tar.gz (293.9 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.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

rocraters-0.4.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl (1.0 MB view details)

Uploaded PyPymanylinux: glibc 2.5+ i686

rocraters-0.4.1-cp312-none-win_amd64.whl (766.7 kB view details)

Uploaded CPython 3.12Windows x86-64

rocraters-0.4.1-cp312-none-win32.whl (726.1 kB view details)

Uploaded CPython 3.12Windows x86

rocraters-0.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

rocraters-0.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl (1.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.5+ i686

rocraters-0.4.1-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (1.8 MB view details)

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

rocraters-0.4.1-cp311-none-win_amd64.whl (765.1 kB view details)

Uploaded CPython 3.11Windows x86-64

rocraters-0.4.1-cp311-none-win32.whl (725.1 kB view details)

Uploaded CPython 3.11Windows x86

rocraters-0.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

rocraters-0.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl (1.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.5+ i686

rocraters-0.4.1-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (1.8 MB view details)

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

rocraters-0.4.1-cp310-none-win_amd64.whl (764.9 kB view details)

Uploaded CPython 3.10Windows x86-64

rocraters-0.4.1-cp310-none-win32.whl (725.7 kB view details)

Uploaded CPython 3.10Windows x86

rocraters-0.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

rocraters-0.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl (1.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.5+ i686

rocraters-0.4.1-cp310-cp310-macosx_11_0_arm64.whl (848.5 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

rocraters-0.4.1-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (1.8 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.1.tar.gz.

File metadata

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

File hashes

Hashes for rocraters-0.4.1.tar.gz
Algorithm Hash digest
SHA256 a67df2dfd088bdb3605ef86942780b7e29c211883809379688b0f91a20c85e63
MD5 ebd4ffa234c122146f34f4878b43ff7c
BLAKE2b-256 aa40426550271ebf6711c86ca18d5341cb24f61fe56db205868f9b86f2defab0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rocraters-0.4.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c03f124589f6322c25f3b50465bbdbc6ea9629f9c1028a8aa5fa073394aa25e8
MD5 515ad4491f23b228d593361e23d761f5
BLAKE2b-256 d00147ffac7cb0a0651fecdfd4254e6e6702b6933c2b1879056709f70df6a220

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rocraters-0.4.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 e93f5ffad0ffe616dfd0b14a215033aa3eaa17d22451d0ef58be487d162449f7
MD5 ca889b97ea0195e86ca4acb43555e293
BLAKE2b-256 ccc778db9a191fcedccfa34f4870cad4ff27f8cf0c10f769ebb6f6572493c821

See more details on using hashes here.

File details

Details for the file rocraters-0.4.1-cp312-none-win_amd64.whl.

File metadata

File hashes

Hashes for rocraters-0.4.1-cp312-none-win_amd64.whl
Algorithm Hash digest
SHA256 8ea963ccbd7dba650974964db49af8927d82db7a7d657408a1b2e2a091e7b30c
MD5 2675aec61a5335ee942cc6c8446eb08a
BLAKE2b-256 96346cb1f72d20455e2c9a3a197617d8559f673808cd04ddb8347a82f6701df5

See more details on using hashes here.

File details

Details for the file rocraters-0.4.1-cp312-none-win32.whl.

File metadata

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

File hashes

Hashes for rocraters-0.4.1-cp312-none-win32.whl
Algorithm Hash digest
SHA256 de45422e2f0497a19a3daca984d0e086290da8fb462ac72c0c71a9257c4fc010
MD5 05afdf3fbb6d54c30db64171edd3a6f8
BLAKE2b-256 ef479cabaeeeab4035a984fb75226d2390f81f23d9e0df9c3ece2a0adb60c6b7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rocraters-0.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 87d4b2e97e4e1c0de99c2ccb27ca5be8144da1318bf78310cc9f22794748d5e9
MD5 7e77d7824285aee98c2e23dbe08e8997
BLAKE2b-256 a78313564297162b488e2a3ee52b5a8f1582d70ac524f0f075e4205937824f4a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rocraters-0.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 a5d44af764cba64811791321838785c9259714e321fc673ea66f6da18f7d5c83
MD5 3211e3c502edce10500c890f085d9a21
BLAKE2b-256 f9630b73b84eadc7004c67bd96f4100114e02c3617cf6b03669341c08b8296b7

See more details on using hashes here.

File details

Details for the file rocraters-0.4.1-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.1-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 cade91ffa4156f7a96e36fa5166ba4cd61ac4555298de4e6b57b80fce2db00c3
MD5 afe1efc59ed3c10752a290ae3baf5196
BLAKE2b-256 e650981b3131dc8bb686756301c9a7bcad9584c3916ab297334fd46ec8c06e40

See more details on using hashes here.

File details

Details for the file rocraters-0.4.1-cp311-none-win_amd64.whl.

File metadata

File hashes

Hashes for rocraters-0.4.1-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 985918f864120d527c570d1afd64860facb75d49ac3a6ce9cf0ae0a5d2920c7c
MD5 217ec3d3fdc168bcc854b9946ded5903
BLAKE2b-256 9a14926601958ff4ea4a3a6ed7ed2483baf32ea409c4658c71c03240f61bcca8

See more details on using hashes here.

File details

Details for the file rocraters-0.4.1-cp311-none-win32.whl.

File metadata

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

File hashes

Hashes for rocraters-0.4.1-cp311-none-win32.whl
Algorithm Hash digest
SHA256 3447880749247faba0305bec3fc8e3ddc0cbf16c4613a93b713b9637720e18ed
MD5 65cbda5720c3730bf7cee6aa29e00396
BLAKE2b-256 1ddeba104c471f8304c98c04a0afc577937b7f091293de9b3c2381d15a185405

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rocraters-0.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 280d48815b35b21390ae91d1ef41180540ad96a98ce236f8ee196a8bebbd6540
MD5 08ac2a4e866b186b6524286dc81e7961
BLAKE2b-256 5ec377d2836273ebe2da7e7fd049aa9ae763c5bf8943cbacca400dc13d6ad505

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rocraters-0.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 21aa0109f36194e5f1d80d77a84d946bfa9e482773ecc30231e75ad98943f396
MD5 733020f35b85f507299e30a7f364f418
BLAKE2b-256 4c4fc9eb2f1ac96bebd23d107378172d88cee36d41d102c45ebc7ec5cc25063f

See more details on using hashes here.

File details

Details for the file rocraters-0.4.1-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.1-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 24e456933f1e8a8457707ec7433a9ab230e30779434505e89a546d71d9ffb373
MD5 8a91dd2d8f40d24070f417bbb1b29173
BLAKE2b-256 8d08bf58a2eac8e420d116de56bf930672691b2a19a62aaf1f6e70cf067bbb4e

See more details on using hashes here.

File details

Details for the file rocraters-0.4.1-cp310-none-win_amd64.whl.

File metadata

File hashes

Hashes for rocraters-0.4.1-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 896d7da9ecc60b19d7ae82c7a8d07d74a16ddb681b2555e3df96e9343f476e1a
MD5 afc63d251ee972a96ffcf6403b52a52e
BLAKE2b-256 42fcffc7962dff1f08d2ec58d1e9fe470a3b1de13f2d51c6f82deb04b5c5d917

See more details on using hashes here.

File details

Details for the file rocraters-0.4.1-cp310-none-win32.whl.

File metadata

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

File hashes

Hashes for rocraters-0.4.1-cp310-none-win32.whl
Algorithm Hash digest
SHA256 227e631490b528a18b02aba6843d17114f96e18ce9b0788d65835c616d39ff66
MD5 af7ec25b63570e9b66b37a95cc2d7475
BLAKE2b-256 4015cf5738293950742c0f1cb7d32c9a906a714834179dbb881e2f171db546dc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rocraters-0.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6de55f462bbb6e87076aabb492ed5f1a7983cd794a4facc7da18843322d3e52d
MD5 b2d10316222d8997b8aa7a0e0d4c2068
BLAKE2b-256 8ca0b6cc66f3830ba4e8befe1a8676bbaa1285fc67346ae13460b5b18fad8d0a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rocraters-0.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 0288000990640f5f0b9679dc719b9f1d376d640f61e2707a8622d9d68e9157c6
MD5 37368457ae81bd21a536852267063e62
BLAKE2b-256 38fbac2e3c3c47e72efd7862c3327df5aab4966083e0803000d0afb47f1dba3b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rocraters-0.4.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b040f70e0ffdc8333121178da035677f901124fe4743677a42597473f539134a
MD5 ca76409117e444da60e3303cafc8c436
BLAKE2b-256 7b6f3dbf7723364f290cc701b0f1ccb70012cbbf72b3a5c0e7a8c73b5f2bac14

See more details on using hashes here.

File details

Details for the file rocraters-0.4.1-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.1-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 ff8079c890d5390791841188e6c2a0ab0a19cedf62d8299cda06e7d8639e568b
MD5 ed9992367abaae3ad2c2890fcc45d739
BLAKE2b-256 b238d3f374404b022304a1008a731b71fb2838d8f01f5a0db679a060d4ca8df4

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