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, main := nucleotideSequence(reference := main)}, primaryKey := id)")

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

# Get reference sequence
ref = db.get_nucleotide_reference_sequence("sequences", "main")

# Get filtered bitmap (list of matching row indices)
indices = db.get_filtered_bitmap("sequences", "some_filter")

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

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

# Print all data (to stdout)
db.print_all_data("sequences")

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

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

Total release size: 142.4 MB

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

Download URL rhydb-0.17.0-cp315-cp315-manylinux_2_35_x86_64.whl
Size 8.7 MB
Tags CPython 3.15 Linux glibc 2.35+ x86-64
SHA-256 checksum
How to use checksums
95e7e725e5bfe17d54ecf253eca60f1ba58e4920b2c09eb4ab5d544200812daf
BLAKE2b-256 checksum
How to use checksums
4a11a9caea8b1e8635039010477c7e8b0b330307b8ffaa30a424e28870569752
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.0-cp315-cp315-manylinux_2_35_aarch64.whl

Download URL rhydb-0.17.0-cp315-cp315-manylinux_2_35_aarch64.whl
Size 7.9 MB
Tags CPython 3.15 Linux glibc 2.35+ ARM64
SHA-256 checksum
How to use checksums
3af7648d5d87f4dff6c32b5494d438a2c89ef1782bffd4988e21677e32a1fd85
BLAKE2b-256 checksum
How to use checksums
0a5de0ff7e516768226cceb1bb4289ae2f9523470feea1a9eb86bec4dfc90622
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.0-cp315-cp315-macosx_15_0_x86_64.whl

Download URL rhydb-0.17.0-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
ec5cabe82083a8ede116bd8e8e08fd1ed4ced8155f9913516b569b6b03e5165b
BLAKE2b-256 checksum
How to use checksums
5e997a8fee28423be669684b30fddd5f63cf27162de9a5d12f89e2d5cfb7ca43
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.0-cp315-cp315-macosx_15_0_arm64.whl

Download URL rhydb-0.17.0-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
f0bd212bc62e3f22da3370e60a822e150cd6f5e9dc785b9ffff2624a72b5892b
BLAKE2b-256 checksum
How to use checksums
615359014d5a648aa1f4bba0258409cf96837984713738c39760251994d6e279
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.0-cp314-cp314-manylinux_2_35_x86_64.whl

Download URL rhydb-0.17.0-cp314-cp314-manylinux_2_35_x86_64.whl
Size 8.7 MB
Tags CPython 3.14 Linux glibc 2.35+ x86-64
SHA-256 checksum
How to use checksums
3f4dd876476718f811f826660047797ce07f0f84ccbbdea2f9ae453829a6fca5
BLAKE2b-256 checksum
How to use checksums
1e63b94de162d68317f0a30b5a7571b194ee5b7c4f73623f14a61e174a7d750c
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.0-cp314-cp314-manylinux_2_35_aarch64.whl

Download URL rhydb-0.17.0-cp314-cp314-manylinux_2_35_aarch64.whl
Size 7.9 MB
Tags CPython 3.14 Linux glibc 2.35+ ARM64
SHA-256 checksum
How to use checksums
fa72c81e540c7881195c7d82dfb0759765f7f0e9e311c099225a9fc18ad8a3a8
BLAKE2b-256 checksum
How to use checksums
2630cf036ced6f4d61e888a5c7f6d39916bcbdd183f4623cd27d56af6e3c29cc
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.0-cp314-cp314-macosx_15_0_x86_64.whl

Download URL rhydb-0.17.0-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
f85e2748d0c32da6cbefbad8d77463a6962069d9fdb6eafaa240f105b75fdce4
BLAKE2b-256 checksum
How to use checksums
b848dc7eed41b20926588dea33765c48e0e7ac8ae9d01509c75cc7ec74d61f5f
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.0-cp314-cp314-macosx_15_0_arm64.whl

Download URL rhydb-0.17.0-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
a60ea945fb7b69506ddf3a66f0c4edd61dfa2c2bfd5be103051aaae6bdbb74bb
BLAKE2b-256 checksum
How to use checksums
6306449ac6d7cee6f73f7c897c579570b1c0fc97aa00700e94fe7177c9bb2136
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.0-cp313-cp313-manylinux_2_35_x86_64.whl

Download URL rhydb-0.17.0-cp313-cp313-manylinux_2_35_x86_64.whl
Size 8.7 MB
Tags CPython 3.13 Linux glibc 2.35+ x86-64
SHA-256 checksum
How to use checksums
26b80188faec9d9d82b1f13ab0735d617c0a2f63abded4622982ceb2a795b8ab
BLAKE2b-256 checksum
How to use checksums
c8cb623d33417f20e94a0f8440c5708415f88e73b8caf1964435889cf6047f32
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.0-cp313-cp313-manylinux_2_35_aarch64.whl

Download URL rhydb-0.17.0-cp313-cp313-manylinux_2_35_aarch64.whl
Size 7.9 MB
Tags CPython 3.13 Linux glibc 2.35+ ARM64
SHA-256 checksum
How to use checksums
bdd3bf10369147c67a53d9a082df4519dc03cfa98adb5c091efd6e73fc5481f0
BLAKE2b-256 checksum
How to use checksums
07a9894ce119d69848d9d8e72570da29767a906ad7e59dd56a890112fea28b22
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.0-cp313-cp313-macosx_15_0_x86_64.whl

Download URL rhydb-0.17.0-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
d509485a1f785084a35a95130ca312da36515233ea0e08e34097d25a4da7ed88
BLAKE2b-256 checksum
How to use checksums
23c98b27b82e2d9a62c630375e04dd179e229a987f29c706190bfedfc6829d0f
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.0-cp313-cp313-macosx_15_0_arm64.whl

Download URL rhydb-0.17.0-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
c59402466b574f1983bad34a86ebdcfdc9cb9b31c116debcc1204c9fdbfa02fb
BLAKE2b-256 checksum
How to use checksums
1fff02557b51a66388024721579cd128af949282b55b52ee24b4394953758011
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.0-cp312-cp312-manylinux_2_35_x86_64.whl

Download URL rhydb-0.17.0-cp312-cp312-manylinux_2_35_x86_64.whl
Size 8.7 MB
Tags CPython 3.12 Linux glibc 2.35+ x86-64
SHA-256 checksum
How to use checksums
450ee69b9692ad3b2ca75021e83b4db89735c923966152281bcc9b923359ec52
BLAKE2b-256 checksum
How to use checksums
be188740330d1bd989007d46b80c254ce896de2664f64e051acbd6da009839b8
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.0-cp312-cp312-manylinux_2_35_aarch64.whl

Download URL rhydb-0.17.0-cp312-cp312-manylinux_2_35_aarch64.whl
Size 7.9 MB
Tags CPython 3.12 Linux glibc 2.35+ ARM64
SHA-256 checksum
How to use checksums
95850cff5e01c59ecae05c38d24195d2e4b95dcd0e7fdf6f8522069802912d39
BLAKE2b-256 checksum
How to use checksums
a48e7b5d68bc02b5fac115ffad96b79ef72b1b14ed7660323731141939c224d9
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.0-cp312-cp312-macosx_15_0_x86_64.whl

Download URL rhydb-0.17.0-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
bd3ec4b00c127036802ccf4242e2337c6d061fccea8cd8ddc8e476308e90a73f
BLAKE2b-256 checksum
How to use checksums
a7123ef1903970293fbb356405f3c2cd431ca83c16b3175716edbdabc13b7f7e
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.0-cp312-cp312-macosx_15_0_arm64.whl

Download URL rhydb-0.17.0-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
5471060aa18703e8034b669cbdc7ac9b38485411cde0ffb6a4b3cdd8e604d025
BLAKE2b-256 checksum
How to use checksums
2d86361679ed03a8178200add7ece61b2fb1f4080fa3cf4d04eb29f169c05cb4
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.0-cp311-cp311-manylinux_2_35_x86_64.whl

Download URL rhydb-0.17.0-cp311-cp311-manylinux_2_35_x86_64.whl
Size 8.7 MB
Tags CPython 3.11 Linux glibc 2.35+ x86-64
SHA-256 checksum
How to use checksums
dc4c32e62e8cc3387a53a9fbdca0330b690cd723a7924087626f443692d59a6f
BLAKE2b-256 checksum
How to use checksums
87e365621a0f20490cb3c0b790a7f5613e3e1e3300270631aaa94689841357c0
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.0-cp311-cp311-manylinux_2_35_aarch64.whl

Download URL rhydb-0.17.0-cp311-cp311-manylinux_2_35_aarch64.whl
Size 7.9 MB
Tags CPython 3.11 Linux glibc 2.35+ ARM64
SHA-256 checksum
How to use checksums
cf7022ab15a4320883fdc0a5264d0eb25d24f5ffdd39682b51a6d93b12b0690c
BLAKE2b-256 checksum
How to use checksums
aeb4441c32c6814c96f75b87694df906804bfbe59f5dc164b2cfccf3633114b0
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.0-cp311-cp311-macosx_15_0_x86_64.whl

Download URL rhydb-0.17.0-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
39380bba209370e3e72e32c7777a2903f267103a29a5753a0282c56ece10541e
BLAKE2b-256 checksum
How to use checksums
2124ac881ccc5b1e267411c372baf669fee57c4924e1573e75f930d63f43712c
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.0-cp311-cp311-macosx_15_0_arm64.whl

Download URL rhydb-0.17.0-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
6bb220e0b2dac33579f6a5cf99304bb97eecccc2ec7a4746eb219b229667736e
BLAKE2b-256 checksum
How to use checksums
74373594278dfdcb039eceb370433d8b68c82e031024fab71147d3759091e193
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.0

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