Skip to main content

RhyDB

High-performance analytical database for sequence alignment data.

Check out rhydb.org to interactively try out this database engine on a few sample instances.

For information on how to build, test, and contribute to RhyDB, see Contributing.

Python Bindings

RhyDB provides Python bindings via Cython. The bindings wrap the core C++ Database and are installable by pip install rhydb.

See Contributing for build instructions.

Usage

from rhydb import Database

# Create a new database
db = Database()

# Or load from a saved state
db = Database("/path/to/saved/database")

# Create a table with a nucleotide sequence column, whose reference is taken
# from the built-in reference_genomes table
db.append_data_from_string(
    "reference_genomes", '{"name": "main", "type": "nucleotide", "sequence": "ACGT..."}'
)
db.query(
    "createTable(sequences, {id := string, country := string, main := nucleotideSequence(reference := main)}, primaryKey := id)"
)

# Append data from file
db.append_data_from_file("sequences", "/path/to/data.ndjson")

# Query data through the SaneQL front-end
table = db.query("sequences.filter(true)")

# Update and delete rows in place
db.query("update(sequences, set := {country := 'Switzerland'}, where := country = 'CH')")
db.query("delete(sequences, where := country.isNull())")

# Save database state
db.save_checkpoint("/path/to/save/directory")

Configuration Files

For RhyDB, there are three different configuration files:

  • DatabaseConfig described in file database_config.h
  • PreprocessingConfig used when started with preprocessing and described in file preprocessing_config.h. For details see rhydb preprocessing --help.
  • RuntimeConfig used when started with api and described in file runtime_config.h For details see rhydb api --help.

The database config contains the schema of the database and is always required when preprocessing data. The database config will be saved together with the output of the preprocessing and is therefore not required when starting RhyDB as an API.

An example configuration file can be seen in testBaseData/exampleDataset/database_config.yaml.

By default, the config files are expected to be YAML files in the current working directory in snake_case (database_config.yaml, preprocessing_config.yaml, runtime_config.yaml), but their location can be overridden using the options --database-config=X, --preprocessing-config=X, and --runtime-config=X.

Preprocessing and Runtime configurations contain default values for all fields and are thus only optional. Their parameters can also be provided as command-line arguments in snake_case and as environment variables prefixed with RHYDB_ in capital SNAKE_CASE. (e.g. RHYDB_INPUT_DIRECTORY).

The precendence is CLI argument > Environment Variable > Configuration File > Default Value

Run The Preprocessing

The preprocessing acts as a program that takes an input directory that contains the to-be-processed data and an output directory where the processed data will be stored. Both need to be mounted to the container.

RhyDB expects a preprocessing config that can be mounted to the default location /app/preprocessing_config.yaml.

Additionally, a database config and a ndjson file containing the data are required. They should typically be mounted in /preprocessing/input.

docker run \
  -v your/input/directory:/preprocessing/input \
  -v your/preprocessing/output:/preprocessing/output \
  -v your/preprocessing_config.yaml:/app/preprocessing_config.yaml \
  ghcr.io/rhyorg/rhydb preprocessing

Both config files can also be provided in custom locations:

rhydb preprocessing --preprocessing-config=./custom/preprocessing_config.yaml --database-config=./custom/database_config.yaml

The Docker image contains a default preprocessing config that sets defaults specific for running RhyDB in Docker. Apart from that, there are default values if neither user-provided nor default config specify fields. The user-provided preprocessing config can be used to overwrite the default values. For a full reference, see the help text.

Run docker container (api)

After preprocessing the data, the api can be started with the following command:

docker run \
  -p 8081:8081 \
  -v your/preprocessing/output:/data \
  ghcr.io/rhyorg/rhydb api

The directory where RhyDB expects the preprocessing output can be overwritten via rhydb api --data-directory=/custom/data/directory or in a corresponding configuration file.

Acknowledgments

Original genome indexing logic with roaring bitmaps by Prof. Neumann: https://db.in.tum.de/~neumann/gi/

Metadata

Release files for rhydb 0.17.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for rhydb 0.17.3
File Actions
rhydb-0.17.3-cp315-cp315-manylinux_2_35_x86_64.whl CPython 3.15 CPython 3.15 Linux glibc 2.35+ x86-64 Details for rhydb-0.17.3-cp315-cp315-manylinux_2_35_x86_64.whl
rhydb-0.17.3-cp315-cp315-manylinux_2_35_aarch64.whl CPython 3.15 CPython 3.15 Linux glibc 2.35+ ARM64 Details for rhydb-0.17.3-cp315-cp315-manylinux_2_35_aarch64.whl
rhydb-0.17.3-cp315-cp315-macosx_15_0_x86_64.whl CPython 3.15 CPython 3.15 macOS 15.0+ x86-64 Details for rhydb-0.17.3-cp315-cp315-macosx_15_0_x86_64.whl
rhydb-0.17.3-cp315-cp315-macosx_15_0_arm64.whl CPython 3.15 CPython 3.15 macOS 15.0+ ARM64 Details for rhydb-0.17.3-cp315-cp315-macosx_15_0_arm64.whl
rhydb-0.17.3-cp314-cp314-manylinux_2_35_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.35+ x86-64 Details for rhydb-0.17.3-cp314-cp314-manylinux_2_35_x86_64.whl
rhydb-0.17.3-cp314-cp314-manylinux_2_35_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.35+ ARM64 Details for rhydb-0.17.3-cp314-cp314-manylinux_2_35_aarch64.whl
rhydb-0.17.3-cp314-cp314-macosx_15_0_x86_64.whl CPython 3.14 CPython 3.14 macOS 15.0+ x86-64 Details for rhydb-0.17.3-cp314-cp314-macosx_15_0_x86_64.whl
rhydb-0.17.3-cp314-cp314-macosx_15_0_arm64.whl CPython 3.14 CPython 3.14 macOS 15.0+ ARM64 Details for rhydb-0.17.3-cp314-cp314-macosx_15_0_arm64.whl
rhydb-0.17.3-cp313-cp313-manylinux_2_35_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.35+ x86-64 Details for rhydb-0.17.3-cp313-cp313-manylinux_2_35_x86_64.whl
rhydb-0.17.3-cp313-cp313-manylinux_2_35_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.35+ ARM64 Details for rhydb-0.17.3-cp313-cp313-manylinux_2_35_aarch64.whl
rhydb-0.17.3-cp313-cp313-macosx_15_0_x86_64.whl CPython 3.13 CPython 3.13 macOS 15.0+ x86-64 Details for rhydb-0.17.3-cp313-cp313-macosx_15_0_x86_64.whl
rhydb-0.17.3-cp313-cp313-macosx_15_0_arm64.whl CPython 3.13 CPython 3.13 macOS 15.0+ ARM64 Details for rhydb-0.17.3-cp313-cp313-macosx_15_0_arm64.whl
rhydb-0.17.3-cp312-cp312-manylinux_2_35_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.35+ x86-64 Details for rhydb-0.17.3-cp312-cp312-manylinux_2_35_x86_64.whl
rhydb-0.17.3-cp312-cp312-manylinux_2_35_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.35+ ARM64 Details for rhydb-0.17.3-cp312-cp312-manylinux_2_35_aarch64.whl
rhydb-0.17.3-cp312-cp312-macosx_15_0_x86_64.whl CPython 3.12 CPython 3.12 macOS 15.0+ x86-64 Details for rhydb-0.17.3-cp312-cp312-macosx_15_0_x86_64.whl
rhydb-0.17.3-cp312-cp312-macosx_15_0_arm64.whl CPython 3.12 CPython 3.12 macOS 15.0+ ARM64 Details for rhydb-0.17.3-cp312-cp312-macosx_15_0_arm64.whl
rhydb-0.17.3-cp311-cp311-manylinux_2_35_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.35+ x86-64 Details for rhydb-0.17.3-cp311-cp311-manylinux_2_35_x86_64.whl
rhydb-0.17.3-cp311-cp311-manylinux_2_35_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.35+ ARM64 Details for rhydb-0.17.3-cp311-cp311-manylinux_2_35_aarch64.whl
rhydb-0.17.3-cp311-cp311-macosx_15_0_x86_64.whl CPython 3.11 CPython 3.11 macOS 15.0+ x86-64 Details for rhydb-0.17.3-cp311-cp311-macosx_15_0_x86_64.whl
rhydb-0.17.3-cp311-cp311-macosx_15_0_arm64.whl CPython 3.11 CPython 3.11 macOS 15.0+ ARM64 Details for rhydb-0.17.3-cp311-cp311-macosx_15_0_arm64.whl

Total release size: 144.0 MB

Release files / rhydb-0.17.3-cp315-cp315-manylinux_2_35_x86_64.whl

Download URL rhydb-0.17.3-cp315-cp315-manylinux_2_35_x86_64.whl
Size 8.8 MB
Tags CPython 3.15 Linux glibc 2.35+ x86-64
SHA-256 checksum
How to use checksums
89a1193c7a537a44da614bf99969247ede0e2d278472fc8effb4b867f01eb529
BLAKE2b-256 checksum
How to use checksums
0db59de401d8c7c5d6c42824dbea4b8f02ebbca10b8b24995a29ceca17c9ea17
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.15.0

Release files / rhydb-0.17.3-cp315-cp315-manylinux_2_35_aarch64.whl

Download URL rhydb-0.17.3-cp315-cp315-manylinux_2_35_aarch64.whl
Size 8.0 MB
Tags CPython 3.15 Linux glibc 2.35+ ARM64
SHA-256 checksum
How to use checksums
b294280503a68ab6210887db458ec4ab8f91acdc0cc4d2d9d62e4086a32a7238
BLAKE2b-256 checksum
How to use checksums
eee429b52f74ce80fe7eb1b3e2616370e16f8070b49c9c3249346fa46a88d78b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.15.0

Release files / rhydb-0.17.3-cp315-cp315-macosx_15_0_x86_64.whl

Download URL rhydb-0.17.3-cp315-cp315-macosx_15_0_x86_64.whl
Size 6.4 MB
Tags CPython 3.15 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
44c702df6471aa40774f37755674f148468ba3f1b81bdd756c5f3d51c7c04303
BLAKE2b-256 checksum
How to use checksums
159f8dfbc0837b1eb36c53bd52d5089f7c74c05c4ca93f03f87894d2e780010b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.15.0

Release files / rhydb-0.17.3-cp315-cp315-macosx_15_0_arm64.whl

Download URL rhydb-0.17.3-cp315-cp315-macosx_15_0_arm64.whl
Size 5.5 MB
Tags CPython 3.15 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
de253a46361c9b6bf49a78e456b67045410e6ddb322ad6cea7de9f0dfb6ec57e
BLAKE2b-256 checksum
How to use checksums
10e848cbf6d47f12a5bc9a3d6f4db28ce72288ca1da2dfbc57f80d2a21ba437a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.15.0

Release files / rhydb-0.17.3-cp314-cp314-manylinux_2_35_x86_64.whl

Download URL rhydb-0.17.3-cp314-cp314-manylinux_2_35_x86_64.whl
Size 8.8 MB
Tags CPython 3.14 Linux glibc 2.35+ x86-64
SHA-256 checksum
How to use checksums
33f54fbe4e2a86f7331f471df0144b796f5f0cc875c332eee5ff815163d36b36
BLAKE2b-256 checksum
How to use checksums
dc696cbc5b3615ced3ddea0112f4f655c5bb389827b9c19d7f133550d850c79c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.15.0

Release files / rhydb-0.17.3-cp314-cp314-manylinux_2_35_aarch64.whl

Download URL rhydb-0.17.3-cp314-cp314-manylinux_2_35_aarch64.whl
Size 8.0 MB
Tags CPython 3.14 Linux glibc 2.35+ ARM64
SHA-256 checksum
How to use checksums
274156fa3699775f0346d5515458cf5f81d5e9d14b37a96a63dc1c314ee729b4
BLAKE2b-256 checksum
How to use checksums
2e45f835aeb354d2da7e0553d73de5ae8c469a1f5a96e948bb98f6813c03f746
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.15.0

Release files / rhydb-0.17.3-cp314-cp314-macosx_15_0_x86_64.whl

Download URL rhydb-0.17.3-cp314-cp314-macosx_15_0_x86_64.whl
Size 6.4 MB
Tags CPython 3.14 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
d3a01f1f314273568bfa4520454a58816c01ce683a3ef08da7e63ea8f35f454c
BLAKE2b-256 checksum
How to use checksums
ff507313932a48ab6430e1c28a9af4ca39b71ec81a2efe09415746f0bb1cbb63
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.15.0

Release files / rhydb-0.17.3-cp314-cp314-macosx_15_0_arm64.whl

Download URL rhydb-0.17.3-cp314-cp314-macosx_15_0_arm64.whl
Size 5.5 MB
Tags CPython 3.14 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
8272ec6ff3e0fb06cb68f8164ce03d7593b790402d3f881b661c6588b422c04e
BLAKE2b-256 checksum
How to use checksums
299e9c403eef5a91e28595a4bab3563361f04e53abc144cc73723550402fdf7b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.15.0

Release files / rhydb-0.17.3-cp313-cp313-manylinux_2_35_x86_64.whl

Download URL rhydb-0.17.3-cp313-cp313-manylinux_2_35_x86_64.whl
Size 8.8 MB
Tags CPython 3.13 Linux glibc 2.35+ x86-64
SHA-256 checksum
How to use checksums
0270f7c8e121d9caf373b3f578fd53d3533e36dda87653df9ac4d896b14503c3
BLAKE2b-256 checksum
How to use checksums
542ff0d29d1f7ae047b72f29cace2a60a931b31b0eaacd0fe6fa1f41c9d9d504
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.15.0

Release files / rhydb-0.17.3-cp313-cp313-manylinux_2_35_aarch64.whl

Download URL rhydb-0.17.3-cp313-cp313-manylinux_2_35_aarch64.whl
Size 8.0 MB
Tags CPython 3.13 Linux glibc 2.35+ ARM64
SHA-256 checksum
How to use checksums
9f0f736324c9ef000c35ff74690dad1babcb2d97bf8d34a52dea4897fa728cdb
BLAKE2b-256 checksum
How to use checksums
7e1f6ca496785a4cdd5b789b2a43ca9adde9a58c9c837741c6ea0973547f692c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.15.0

Release files / rhydb-0.17.3-cp313-cp313-macosx_15_0_x86_64.whl

Download URL rhydb-0.17.3-cp313-cp313-macosx_15_0_x86_64.whl
Size 6.4 MB
Tags CPython 3.13 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
dd02693f8210d6487b10fd00a520aa8343b7700d025694ac73aff740a4f101a6
BLAKE2b-256 checksum
How to use checksums
9472f4f95c389e03dbc8022935e72236f4db16274c481aa829ee3bf464e60cf0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.15.0

Release files / rhydb-0.17.3-cp313-cp313-macosx_15_0_arm64.whl

Download URL rhydb-0.17.3-cp313-cp313-macosx_15_0_arm64.whl
Size 5.5 MB
Tags CPython 3.13 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
0676a7494b0f6a1762c0a6b0bcfa70dd8bc2998e3e8508ae14858d2ca60e8074
BLAKE2b-256 checksum
How to use checksums
ca7725aaea453f99ae01c04ba3796708570216cf04d92ba02e553b1d67b39cd8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.15.0

Release files / rhydb-0.17.3-cp312-cp312-manylinux_2_35_x86_64.whl

Download URL rhydb-0.17.3-cp312-cp312-manylinux_2_35_x86_64.whl
Size 8.8 MB
Tags CPython 3.12 Linux glibc 2.35+ x86-64
SHA-256 checksum
How to use checksums
6dfc7d16aaf9c6ac18495e7e1f1ce5c90f7ca71d93c47e14146a4bfae5997ce3
BLAKE2b-256 checksum
How to use checksums
e2fa2807a96bef82eb4c6af2a916635741b13a6f293a61bb106b930c07469019
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.15.0

Release files / rhydb-0.17.3-cp312-cp312-manylinux_2_35_aarch64.whl

Download URL rhydb-0.17.3-cp312-cp312-manylinux_2_35_aarch64.whl
Size 8.0 MB
Tags CPython 3.12 Linux glibc 2.35+ ARM64
SHA-256 checksum
How to use checksums
051a1d2d3d11b2f256fc110ab8f90932b1137f0e04ead88269836b8f9ff02ce8
BLAKE2b-256 checksum
How to use checksums
b2f058119e4bd984ddd35362f25823fec8b35d5114f6e7de55babbaf90271d50
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.15.0

Release files / rhydb-0.17.3-cp312-cp312-macosx_15_0_x86_64.whl

Download URL rhydb-0.17.3-cp312-cp312-macosx_15_0_x86_64.whl
Size 6.4 MB
Tags CPython 3.12 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
d87dfcf992cd3e71938621f7494637669453f2f8eb16c5026496f852bc54d56b
BLAKE2b-256 checksum
How to use checksums
846355b529eaf29c7f5c1bcef06a33af92062b61396b3258838f1aa0e4fd35f8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.15.0

Release files / rhydb-0.17.3-cp312-cp312-macosx_15_0_arm64.whl

Download URL rhydb-0.17.3-cp312-cp312-macosx_15_0_arm64.whl
Size 5.5 MB
Tags CPython 3.12 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
27ef1036c95bdeba7235fbae5315b8ce2d0ddcb193564b307a97ef9518c0edcb
BLAKE2b-256 checksum
How to use checksums
107f172b097176329fe8a88ea09044f91bc933881f071c0799f16f00e1277119
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.15.0

Release files / rhydb-0.17.3-cp311-cp311-manylinux_2_35_x86_64.whl

Download URL rhydb-0.17.3-cp311-cp311-manylinux_2_35_x86_64.whl
Size 8.8 MB
Tags CPython 3.11 Linux glibc 2.35+ x86-64
SHA-256 checksum
How to use checksums
39f4e086a40b4ac7f2b6a1d96f1380144238136d2f9d7b4c891e852b94c9a200
BLAKE2b-256 checksum
How to use checksums
f5e28a365095e2d8220a7c947b493990651e58e9379f9de39a394a743eb24381
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.15.0

Release files / rhydb-0.17.3-cp311-cp311-manylinux_2_35_aarch64.whl

Download URL rhydb-0.17.3-cp311-cp311-manylinux_2_35_aarch64.whl
Size 8.0 MB
Tags CPython 3.11 Linux glibc 2.35+ ARM64
SHA-256 checksum
How to use checksums
1589f833ca690c8d0f78a42bc5f8a26b7666e0a9ef127a161156199219642d44
BLAKE2b-256 checksum
How to use checksums
d50adeef39dea65b53b47743a833e1559c0130e927210daa1539f07c9b0a20d4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.15.0

Release files / rhydb-0.17.3-cp311-cp311-macosx_15_0_x86_64.whl

Download URL rhydb-0.17.3-cp311-cp311-macosx_15_0_x86_64.whl
Size 6.4 MB
Tags CPython 3.11 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
698394c512129e810a935c9a28f9e8770f1f72bad3b822c766e1a7cdd090568f
BLAKE2b-256 checksum
How to use checksums
fd1e17b5a6c322d03ac982c75cf38f739d30a5acd5a71741b2fcd38045da5a93
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.15.0

Release files / rhydb-0.17.3-cp311-cp311-macosx_15_0_arm64.whl

Download URL rhydb-0.17.3-cp311-cp311-macosx_15_0_arm64.whl
Size 5.5 MB
Tags CPython 3.11 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
40e183e0ec3cc8000b8a71af1157b5481173575556ad170ca6ac8931925d962f
BLAKE2b-256 checksum
How to use checksums
bb45af6b096ac1562536767cb9f04242c1a5e5bf319fc9ac2b5273a299ea38a4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.15.0

Security for rhydb 0.17.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page