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.4

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.4
File Actions
rhydb-0.17.4-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.4-cp315-cp315-manylinux_2_35_x86_64.whl
rhydb-0.17.4-cp315-cp315-manylinux_2_35_aarch64.whl CPython 3.15 CPython 3.15 Linux glibc 2.35+ ARM64 Details for rhydb-0.17.4-cp315-cp315-manylinux_2_35_aarch64.whl
rhydb-0.17.4-cp315-cp315-macosx_15_0_x86_64.whl CPython 3.15 CPython 3.15 macOS 15.0+ x86-64 Details for rhydb-0.17.4-cp315-cp315-macosx_15_0_x86_64.whl
rhydb-0.17.4-cp315-cp315-macosx_15_0_arm64.whl CPython 3.15 CPython 3.15 macOS 15.0+ ARM64 Details for rhydb-0.17.4-cp315-cp315-macosx_15_0_arm64.whl
rhydb-0.17.4-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.4-cp314-cp314-manylinux_2_35_x86_64.whl
rhydb-0.17.4-cp314-cp314-manylinux_2_35_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.35+ ARM64 Details for rhydb-0.17.4-cp314-cp314-manylinux_2_35_aarch64.whl
rhydb-0.17.4-cp314-cp314-macosx_15_0_x86_64.whl CPython 3.14 CPython 3.14 macOS 15.0+ x86-64 Details for rhydb-0.17.4-cp314-cp314-macosx_15_0_x86_64.whl
rhydb-0.17.4-cp314-cp314-macosx_15_0_arm64.whl CPython 3.14 CPython 3.14 macOS 15.0+ ARM64 Details for rhydb-0.17.4-cp314-cp314-macosx_15_0_arm64.whl
rhydb-0.17.4-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.4-cp313-cp313-manylinux_2_35_x86_64.whl
rhydb-0.17.4-cp313-cp313-manylinux_2_35_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.35+ ARM64 Details for rhydb-0.17.4-cp313-cp313-manylinux_2_35_aarch64.whl
rhydb-0.17.4-cp313-cp313-macosx_15_0_x86_64.whl CPython 3.13 CPython 3.13 macOS 15.0+ x86-64 Details for rhydb-0.17.4-cp313-cp313-macosx_15_0_x86_64.whl
rhydb-0.17.4-cp313-cp313-macosx_15_0_arm64.whl CPython 3.13 CPython 3.13 macOS 15.0+ ARM64 Details for rhydb-0.17.4-cp313-cp313-macosx_15_0_arm64.whl
rhydb-0.17.4-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.4-cp312-cp312-manylinux_2_35_x86_64.whl
rhydb-0.17.4-cp312-cp312-manylinux_2_35_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.35+ ARM64 Details for rhydb-0.17.4-cp312-cp312-manylinux_2_35_aarch64.whl
rhydb-0.17.4-cp312-cp312-macosx_15_0_x86_64.whl CPython 3.12 CPython 3.12 macOS 15.0+ x86-64 Details for rhydb-0.17.4-cp312-cp312-macosx_15_0_x86_64.whl
rhydb-0.17.4-cp312-cp312-macosx_15_0_arm64.whl CPython 3.12 CPython 3.12 macOS 15.0+ ARM64 Details for rhydb-0.17.4-cp312-cp312-macosx_15_0_arm64.whl
rhydb-0.17.4-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.4-cp311-cp311-manylinux_2_35_x86_64.whl
rhydb-0.17.4-cp311-cp311-manylinux_2_35_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.35+ ARM64 Details for rhydb-0.17.4-cp311-cp311-manylinux_2_35_aarch64.whl
rhydb-0.17.4-cp311-cp311-macosx_15_0_x86_64.whl CPython 3.11 CPython 3.11 macOS 15.0+ x86-64 Details for rhydb-0.17.4-cp311-cp311-macosx_15_0_x86_64.whl
rhydb-0.17.4-cp311-cp311-macosx_15_0_arm64.whl CPython 3.11 CPython 3.11 macOS 15.0+ ARM64 Details for rhydb-0.17.4-cp311-cp311-macosx_15_0_arm64.whl

Total release size: 188.5 MB

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

Download URL rhydb-0.17.4-cp315-cp315-manylinux_2_35_x86_64.whl
Size 11.3 MB
Tags CPython 3.15 Linux glibc 2.35+ x86-64
SHA-256 checksum
How to use checksums
8c2ac39cb793c371461440a02434f3fb800099183c8de71ac4babfb21f2b81b8
BLAKE2b-256 checksum
How to use checksums
3e9ad98fd431d76cfb46fb9c9057876ed3af0697f6e19e184c2062f93fda12e4
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.4-cp315-cp315-manylinux_2_35_aarch64.whl

Download URL rhydb-0.17.4-cp315-cp315-manylinux_2_35_aarch64.whl
Size 10.0 MB
Tags CPython 3.15 Linux glibc 2.35+ ARM64
SHA-256 checksum
How to use checksums
f15772b4d6d8d5d81a170864c037983087cf98650beb4e7cbc6eca7541f54429
BLAKE2b-256 checksum
How to use checksums
71534c6e5b67090aba9c2be3638c9e052c2a29a269d4b402ee331e580aee4fbf
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.4-cp315-cp315-macosx_15_0_x86_64.whl

Download URL rhydb-0.17.4-cp315-cp315-macosx_15_0_x86_64.whl
Size 8.8 MB
Tags CPython 3.15 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
52d25b834d484bc7d5739b54a555f5e3f27efc9b600dd8c94b61f315de353f24
BLAKE2b-256 checksum
How to use checksums
79f7764048eee4dec0afc34523497d0148a116138a4525dec5738c1cbdf9d934
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.4-cp315-cp315-macosx_15_0_arm64.whl

Download URL rhydb-0.17.4-cp315-cp315-macosx_15_0_arm64.whl
Size 7.6 MB
Tags CPython 3.15 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
372f2029399e0e4215efb4acb69faf29f0c111e3ac706f97b8c191214cdb20b1
BLAKE2b-256 checksum
How to use checksums
d38e16ddb3af84d84efd49c3ec427b8dc81fd6f45db8c5ef75c5573987d45fa7
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.4-cp314-cp314-manylinux_2_35_x86_64.whl

Download URL rhydb-0.17.4-cp314-cp314-manylinux_2_35_x86_64.whl
Size 11.3 MB
Tags CPython 3.14 Linux glibc 2.35+ x86-64
SHA-256 checksum
How to use checksums
d850a1a5a72a44a1941de29be99db065da9a7b4c426a60f504fa85038b32df4b
BLAKE2b-256 checksum
How to use checksums
93bd02dc08ee2c8ed7fcae9b1cdee309d3a46dc65921695a063d1f1f8c4534ca
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.4-cp314-cp314-manylinux_2_35_aarch64.whl

Download URL rhydb-0.17.4-cp314-cp314-manylinux_2_35_aarch64.whl
Size 10.0 MB
Tags CPython 3.14 Linux glibc 2.35+ ARM64
SHA-256 checksum
How to use checksums
ee8fd88d55ac34b005d9136d578197350d7c58ebeb5342af538b99ed2509517a
BLAKE2b-256 checksum
How to use checksums
458541803cb1b62adca43fdebb8be4e294ae8957826d32102dbb034f8680cabf
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.4-cp314-cp314-macosx_15_0_x86_64.whl

Download URL rhydb-0.17.4-cp314-cp314-macosx_15_0_x86_64.whl
Size 8.8 MB
Tags CPython 3.14 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
d4b2b4aa46f0092569b711288f77591f342886b044637494ef93a7ad5db84842
BLAKE2b-256 checksum
How to use checksums
2790dc39447412c03a127e0e9cbd60fb73d2a5791b907e0669cbe0d9a99eb2d4
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.4-cp314-cp314-macosx_15_0_arm64.whl

Download URL rhydb-0.17.4-cp314-cp314-macosx_15_0_arm64.whl
Size 7.6 MB
Tags CPython 3.14 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
6a11f0eb1a25953e9b437bc3620228ffb607b325645ab71ffdfaf319e8203aa0
BLAKE2b-256 checksum
How to use checksums
f615b21f4eada43ff4331661c1b6bb98222b44ad68c4178d22e8e323624af50d
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.4-cp313-cp313-manylinux_2_35_x86_64.whl

Download URL rhydb-0.17.4-cp313-cp313-manylinux_2_35_x86_64.whl
Size 11.3 MB
Tags CPython 3.13 Linux glibc 2.35+ x86-64
SHA-256 checksum
How to use checksums
c3f149ebcffc0e683015f69380c7441c0d40b54c54ad870490b6254faf8ad0bf
BLAKE2b-256 checksum
How to use checksums
dbf6c604f83d3748af966235e65d95c7b341059fbf65eb0fb8f334ea97c56f14
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.4-cp313-cp313-manylinux_2_35_aarch64.whl

Download URL rhydb-0.17.4-cp313-cp313-manylinux_2_35_aarch64.whl
Size 10.0 MB
Tags CPython 3.13 Linux glibc 2.35+ ARM64
SHA-256 checksum
How to use checksums
7bf254daf979d2668f3029b1912844116faa1de089230e38dc76517be2a8ea02
BLAKE2b-256 checksum
How to use checksums
62690cab7a06d2ada3c8172647705bd7b57a8fadc0255a236567355599937329
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.4-cp313-cp313-macosx_15_0_x86_64.whl

Download URL rhydb-0.17.4-cp313-cp313-macosx_15_0_x86_64.whl
Size 8.8 MB
Tags CPython 3.13 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
1f90e8e944e4c44b52ad86a7cb1cc009b5a9b03fc217bab00ab65ba40d1a2dbb
BLAKE2b-256 checksum
How to use checksums
09af48468392a69ace73b971171ce4d9dc96ad51714970d7067b0fb1816cc479
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.4-cp313-cp313-macosx_15_0_arm64.whl

Download URL rhydb-0.17.4-cp313-cp313-macosx_15_0_arm64.whl
Size 7.6 MB
Tags CPython 3.13 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
ebfc7851b198f393b1024a84bf0185d1f28ef33d85191862cb45a564d5db92a5
BLAKE2b-256 checksum
How to use checksums
714921772f9b4a11f06c8bab1ed994a317ee4b0dddba91d6639414953bdb1049
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.4-cp312-cp312-manylinux_2_35_x86_64.whl

Download URL rhydb-0.17.4-cp312-cp312-manylinux_2_35_x86_64.whl
Size 11.3 MB
Tags CPython 3.12 Linux glibc 2.35+ x86-64
SHA-256 checksum
How to use checksums
0dae468c9f8fbd65e18afeae7bb9ba016f3b3b31cdf94c527d026d0eb6846506
BLAKE2b-256 checksum
How to use checksums
3f1836b3b33f8bd746c57168749f7f9fa620aef287312f01a89363930afaddb6
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.4-cp312-cp312-manylinux_2_35_aarch64.whl

Download URL rhydb-0.17.4-cp312-cp312-manylinux_2_35_aarch64.whl
Size 10.0 MB
Tags CPython 3.12 Linux glibc 2.35+ ARM64
SHA-256 checksum
How to use checksums
b10e1c24f5b2b3d4c86e122ff15b96b8f494723b18cc962c061f36b9356457b7
BLAKE2b-256 checksum
How to use checksums
063af443d0b5b34c1ae41927abf4733d338262ed214e5a36c59b915d706a0c3f
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.4-cp312-cp312-macosx_15_0_x86_64.whl

Download URL rhydb-0.17.4-cp312-cp312-macosx_15_0_x86_64.whl
Size 8.8 MB
Tags CPython 3.12 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
162a16e5afa11c85010bf3ac8a540ef884029c085e31f547c72d5319eaf4c8b3
BLAKE2b-256 checksum
How to use checksums
ceb8274bb6019b1bebc177456b852ceb606fa5cfa44f2b23d5ca7c1a8d92f3f4
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.4-cp312-cp312-macosx_15_0_arm64.whl

Download URL rhydb-0.17.4-cp312-cp312-macosx_15_0_arm64.whl
Size 7.6 MB
Tags CPython 3.12 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
b9b677f238f638570c3ef6c6f06ca44d6ee9c16a654118c1c937addb36ef5741
BLAKE2b-256 checksum
How to use checksums
10d20f832c4b2e3d1cb7571498543931ee73577287dcc420953072ac04b93e61
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.4-cp311-cp311-manylinux_2_35_x86_64.whl

Download URL rhydb-0.17.4-cp311-cp311-manylinux_2_35_x86_64.whl
Size 11.3 MB
Tags CPython 3.11 Linux glibc 2.35+ x86-64
SHA-256 checksum
How to use checksums
d0b0d1856d7b0f0e8f077e67ad9198936f5bb355dde1c0905ba60141559d6c05
BLAKE2b-256 checksum
How to use checksums
575c4b9257d128cddc33711d0a097fd631ab9356fc4c671022c948c5e8e24649
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.4-cp311-cp311-manylinux_2_35_aarch64.whl

Download URL rhydb-0.17.4-cp311-cp311-manylinux_2_35_aarch64.whl
Size 10.0 MB
Tags CPython 3.11 Linux glibc 2.35+ ARM64
SHA-256 checksum
How to use checksums
ef579a5d603b493a2f6ae548f82a9bc98bad04479644581c4f6772981d0e8df0
BLAKE2b-256 checksum
How to use checksums
ac6c507ffe70a89d38f7e215b49ccbb44f0723387f8c4394a2df09d8d50e7808
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.4-cp311-cp311-macosx_15_0_x86_64.whl

Download URL rhydb-0.17.4-cp311-cp311-macosx_15_0_x86_64.whl
Size 8.8 MB
Tags CPython 3.11 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
9f14336bc86825b914ef90eef27f8f00a038ddedb6c23e9d0bb3c2ca6c2af5b0
BLAKE2b-256 checksum
How to use checksums
738a69fe6dd4f4c53a22245bd20342e35e4d07ed5b61b6ebd8410a18b4fccf22
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.4-cp311-cp311-macosx_15_0_arm64.whl

Download URL rhydb-0.17.4-cp311-cp311-macosx_15_0_arm64.whl
Size 7.6 MB
Tags CPython 3.11 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
f093680f8b1d44bf48ebf5a40374b70e126fab714c5af93ac930a186713ddd47
BLAKE2b-256 checksum
How to use checksums
4820f90da851916c4f85e72886f56faf2bad22dc5d730b54cb98db82bd8bda8a
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.4

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