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

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

Total release size: 142.5 MB

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

Download URL rhydb-0.17.1-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
80f21d3256f2d4c8159d70f7bb0aad0b9a976db03305b28e21c6b851d88fedf8
BLAKE2b-256 checksum
How to use checksums
8c009306dafddaca18c23a74856a1c301da0eca2191c68a3bade33da5bd13261
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.1-cp315-cp315-manylinux_2_35_aarch64.whl

Download URL rhydb-0.17.1-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
360088dc476a5ec4b3ca84d3116693ffbb93bba930f527b7f21e3f7cab740580
BLAKE2b-256 checksum
How to use checksums
995220962c9312a1c020675b9fa7809c864847c61ecd37c82a9830992d020de8
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.1-cp315-cp315-macosx_15_0_x86_64.whl

Download URL rhydb-0.17.1-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
961913641b602c783f70a64b3a3e9ef53acdf697bb132fe7e1d8f111a1aafe37
BLAKE2b-256 checksum
How to use checksums
a7d92dc5afd288b339049730822a18a5cc92c8e5c240e51e2b0fb0c3c5c391a7
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.1-cp315-cp315-macosx_15_0_arm64.whl

Download URL rhydb-0.17.1-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
486faf22960a1343d0770af207037d3e81173e8be7f62a75ba6d8ab9fb0d3d8c
BLAKE2b-256 checksum
How to use checksums
7b8bb663fbf2c57b8259f0fb717bee663113f31de637cd4e83a4d0867c6111d4
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.1-cp314-cp314-manylinux_2_35_x86_64.whl

Download URL rhydb-0.17.1-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
e50bd2559def87ee4b342d7eb42ee0f7a777b5b84fc757126c62b59103f0dd63
BLAKE2b-256 checksum
How to use checksums
762539b5f5d8057236f9354dcd02596973baed0527e68c54282612db9a80a12d
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.1-cp314-cp314-manylinux_2_35_aarch64.whl

Download URL rhydb-0.17.1-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
524a5828b853380e6aa2ade25f97cf3d0f9304407b5b2ffe0b3734d714ab5987
BLAKE2b-256 checksum
How to use checksums
68bcc5f568655a7aa03d7019174fb66e42fc6d514626219494fb9d35e9c2addd
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.1-cp314-cp314-macosx_15_0_x86_64.whl

Download URL rhydb-0.17.1-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
3cecb6f3e5dadd0ebea4c034397ed8db80523efeed58f1ef550c6b28288c9dbd
BLAKE2b-256 checksum
How to use checksums
836aafb96352c30dceb12935e2f826778844b07c73e8ca8036220cf731c40e0a
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.1-cp314-cp314-macosx_15_0_arm64.whl

Download URL rhydb-0.17.1-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
f10bbe04d7570340e830b5c56292da0a03e5c0188b8f1a65b36c7b525ef10b14
BLAKE2b-256 checksum
How to use checksums
7cb05a3a726372574df4f7cace3d7fecd1541a2f19d3f9b1617fdaa9a6ebd338
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.1-cp313-cp313-manylinux_2_35_x86_64.whl

Download URL rhydb-0.17.1-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
28a668eec4f9840c4bc184cb2721ae03a8d7e08c39f0ff1ad392a760c3bc6069
BLAKE2b-256 checksum
How to use checksums
17409f7e3210886c03cd279b141ae0efd9030c3d7c9f242eef35402f14b4be1d
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.1-cp313-cp313-manylinux_2_35_aarch64.whl

Download URL rhydb-0.17.1-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
22f1a140a91102ac2006e886a5278e974ee7e5d2ae91c8231ae6b929366ed097
BLAKE2b-256 checksum
How to use checksums
4bc97cb2d7792fecea8f98ac0ee89407e42c862fac0a9b274721c1054799abd1
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.1-cp313-cp313-macosx_15_0_x86_64.whl

Download URL rhydb-0.17.1-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
ebffa1c40b1e0d0f4ccdc425d7fd25cf2402f0a3ced3c3e326f4767dcd31aec7
BLAKE2b-256 checksum
How to use checksums
58a6465617eb7ebb414114bd98382eaba01d5815a41f375c745de971d060d0b1
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.1-cp313-cp313-macosx_15_0_arm64.whl

Download URL rhydb-0.17.1-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
f5d21f20ff440c2d71d075c2ed812f95939c2a7a84872d683cac369a6b0dae69
BLAKE2b-256 checksum
How to use checksums
e6e558ce21989f74c98c86daf4447f0e61436c60edb65bf3fd2c5e9d9b27d659
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.1-cp312-cp312-manylinux_2_35_x86_64.whl

Download URL rhydb-0.17.1-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
e9e9944b741bebccbf96738fc479e8e7cbeb7e9576c20d9cea54bf195f694c70
BLAKE2b-256 checksum
How to use checksums
b387d679b7d732b072d163b51df074c3add3a48b098948d9b71edfd67dd03cb8
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.1-cp312-cp312-manylinux_2_35_aarch64.whl

Download URL rhydb-0.17.1-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
a85d4d71497ad0edee921d727202e7589c592ad3c04a489bf9e3beaf708bc072
BLAKE2b-256 checksum
How to use checksums
227347ed06d37bf8eff24a5100ddceea703e39098fe8a787d4c645bb583bd748
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.1-cp312-cp312-macosx_15_0_x86_64.whl

Download URL rhydb-0.17.1-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
35f86524f56f33b8f945558889b5c8bbf983e30e3046f4fab7058dc17b7dfa52
BLAKE2b-256 checksum
How to use checksums
546a0f13b4e46e0fb77e9e54b1421100ec7da74faa2608210bf80270d8e65bf7
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.1-cp312-cp312-macosx_15_0_arm64.whl

Download URL rhydb-0.17.1-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
ecade00929d7d2b3d92515b1b6259a2cb072a01e47e687a6e578d332103c25d6
BLAKE2b-256 checksum
How to use checksums
e9eb4e04f0aa8750c95807703687415f02da3029d354c5be987797890862bad2
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.1-cp311-cp311-manylinux_2_35_x86_64.whl

Download URL rhydb-0.17.1-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
149d49d5565066ab10bed7738cb15d43d56a849eab0aafc68e3d905f1466b7a2
BLAKE2b-256 checksum
How to use checksums
ba791bf7b7edd105a67717197668e9fc5970f4f5ce44f6fdd29451d5a5ec7f79
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.1-cp311-cp311-manylinux_2_35_aarch64.whl

Download URL rhydb-0.17.1-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
4f0011208c78fbef1113729d06fec4cbf485fa95bf076f10d3945eaf48dd006b
BLAKE2b-256 checksum
How to use checksums
02002775dca6679a3c385fa9e698269b98945f3e1fadfe58e2da56b06059e2cd
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.1-cp311-cp311-macosx_15_0_x86_64.whl

Download URL rhydb-0.17.1-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
0612fb70dadc4dd5d90b886186f61011ebc60c05c05b96c54b94da05515bee4a
BLAKE2b-256 checksum
How to use checksums
11862ed814d81cac948f75e49c9a4c743944ff3bb2650402765698cdf58eb739
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.1-cp311-cp311-macosx_15_0_arm64.whl

Download URL rhydb-0.17.1-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
ba40505a39989ff371b3fee2e789d9879d1e9144a9ebafa9d50d3d6504a94217
BLAKE2b-256 checksum
How to use checksums
455595f7422e436484828e665ba8ff6bc67e94730317c323a6748df38e3ded09
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.1

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