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

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

Total release size: 143.2 MB

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

Download URL rhydb-0.17.2-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
49ee163ce6befdf3139156f6caef5728fd1085144081586785195b0392b55380
BLAKE2b-256 checksum
How to use checksums
dfaf6f94cb1942f57947342d111f150c7b5f805e4b02c404db32eb8f08b2efda
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.2-cp315-cp315-manylinux_2_35_aarch64.whl

Download URL rhydb-0.17.2-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
b3ef7c08498eb7c294d9cd03f201dd98724e96082aa3bab3670399089fcd46cc
BLAKE2b-256 checksum
How to use checksums
8573f4210af1d16faff562330adbf7169b5006076a0102059c90cd61db2c0ec4
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.2-cp315-cp315-macosx_15_0_x86_64.whl

Download URL rhydb-0.17.2-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
ab0df4b09d33d5e8614f9cc836bd90ebab314af3d1c994381083d4ca451c3bbd
BLAKE2b-256 checksum
How to use checksums
169f6245aab7a81658f176e4cfdae54eb63c603a0e7a7f5977de479055c8627e
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.2-cp315-cp315-macosx_15_0_arm64.whl

Download URL rhydb-0.17.2-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
2a768694ea8de8e6ecc7d97e22f39d106370214c78758ddade3d1bd0086b4b85
BLAKE2b-256 checksum
How to use checksums
6be03ff628c370234b92b9ed8eee685da91afd4f3dd7eab615a71847d72af8b6
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.2-cp314-cp314-manylinux_2_35_x86_64.whl

Download URL rhydb-0.17.2-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
7096643049939cfe971a54c9a8508cb4f8c2c27b61fc49aee4707dbb4109447d
BLAKE2b-256 checksum
How to use checksums
078a8c1d82811910323659287b5054ed1fceb9dffa6dc2181b4981286dc94970
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.2-cp314-cp314-manylinux_2_35_aarch64.whl

Download URL rhydb-0.17.2-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
e7835b408912638f8dbd30db08f480d4a603e4ff7fd80ee81d67afd8e1ec665f
BLAKE2b-256 checksum
How to use checksums
60ec2d6d2623f6554d28fe4f02c1d545bf2b4fa3bc3e008280acf3c35e087d29
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.2-cp314-cp314-macosx_15_0_x86_64.whl

Download URL rhydb-0.17.2-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
2fcd609f7d8f2bf5db6d47944d075fcda71e8d43e64c5b606bc5921f2315ad78
BLAKE2b-256 checksum
How to use checksums
2daaba06d3ccb46c49bbcdead999c2a32cc78043dad0c780c00f5e6f3e341b80
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.2-cp314-cp314-macosx_15_0_arm64.whl

Download URL rhydb-0.17.2-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
c89cd7e4dbd6801408b68bbca02533c7acffc52c3676b93a9d90554a738d3540
BLAKE2b-256 checksum
How to use checksums
3e81a10b6c850e619188ef164266745620dafa107187520f0f6f3034c6215837
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.2-cp313-cp313-manylinux_2_35_x86_64.whl

Download URL rhydb-0.17.2-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
7ecb34c2d99c5e2eaf563f7025498f98040292e91f808dae63d9311ffd9ba6ca
BLAKE2b-256 checksum
How to use checksums
def2ecce5401f19bded4919abfd60a395f827f1dd161d2fded2f5ab4ae6be776
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.2-cp313-cp313-manylinux_2_35_aarch64.whl

Download URL rhydb-0.17.2-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
867e96d5157c6183e1d38b41183ab58832059aefbee625a824c53cbd1304283d
BLAKE2b-256 checksum
How to use checksums
11b11ad02176e04d15e3a8101e7f7f6700132bd1803c9e6f203e0d29a4135ab6
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.2-cp313-cp313-macosx_15_0_x86_64.whl

Download URL rhydb-0.17.2-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
86a48785c9529bfe2537c37df381f89c149906573a5aaba837ad733ada75c5fb
BLAKE2b-256 checksum
How to use checksums
ff5bd85b031a1c974d6590806b8e9e273689919a96b2a5b7deadc351fdf78604
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.2-cp313-cp313-macosx_15_0_arm64.whl

Download URL rhydb-0.17.2-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
9e1159f8f30bc13c5c70969b89b8460870bbd789ded078067ac057937f5ea2c9
BLAKE2b-256 checksum
How to use checksums
24a1d5e5b4042683bca8c77d85344edb71a12fb32f77c547f5e81ddb4e531bee
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.2-cp312-cp312-manylinux_2_35_x86_64.whl

Download URL rhydb-0.17.2-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
0a374a083936a6ebb333d5b6368f312523704e43457fbb8bbef8d25a40a1cc19
BLAKE2b-256 checksum
How to use checksums
b8a4217a57b96685674a86d07d68d412a0e611f734e609c3ab345285b0e5ab0f
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.2-cp312-cp312-manylinux_2_35_aarch64.whl

Download URL rhydb-0.17.2-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
10f7f2ef878f23cb49ba20d2b6612eb0c60b110f6aa580d5b81cb8e25860c97e
BLAKE2b-256 checksum
How to use checksums
2ef225de08424555f9ce21260aa3af469b4ed1fdc44c9b10dcc6cc0b10111baa
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.2-cp312-cp312-macosx_15_0_x86_64.whl

Download URL rhydb-0.17.2-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
04c25c8f09eba44f4f7def59bee011d2336f8e2ca920e4930bb812c376b19e5d
BLAKE2b-256 checksum
How to use checksums
4e4be08f338476fd5eaee4edbc472a2aa011a78c248927d7a01947f3d17fcc35
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.2-cp312-cp312-macosx_15_0_arm64.whl

Download URL rhydb-0.17.2-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
31739020239da3d29504327bba279936da15ed2c3ea2c1d2f800e4d859e509c6
BLAKE2b-256 checksum
How to use checksums
9a52f264389bf29530e8b0ce8a3fefab217c51c2013c2a2455afad3648f1a83a
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.2-cp311-cp311-manylinux_2_35_x86_64.whl

Download URL rhydb-0.17.2-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
70dacb338c14b81265a2480a8c552902578a1e6688cca225f5658bbf9b50cd0c
BLAKE2b-256 checksum
How to use checksums
e07a1837f981062e183442376caf16ec0dd138a1b25ec1f520478fe39f7fcd82
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.2-cp311-cp311-manylinux_2_35_aarch64.whl

Download URL rhydb-0.17.2-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
78e598ce0c4d69569c7bf8542709620123712a900fe9277b51d0205b66c6813a
BLAKE2b-256 checksum
How to use checksums
891258bd4987d4beadb05dc90e24623a59ab9018c1bc1a14b062b7f4b1b820ef
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.2-cp311-cp311-macosx_15_0_x86_64.whl

Download URL rhydb-0.17.2-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
98cd0f3212f6bd186118f65d47a04a63438049e82be601a23f1ff5ac84a67145
BLAKE2b-256 checksum
How to use checksums
3c2ce062ba6633b9000126a94c7e24eba09758098b8cdbc5139414f1a28dd989
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.2-cp311-cp311-macosx_15_0_arm64.whl

Download URL rhydb-0.17.2-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
70bfa9e2e0373df3aad1a266d3d3eb4bbc3e7888e54dc37b155ed99bdb6e5e75
BLAKE2b-256 checksum
How to use checksums
63345c7688860a93dc92434df13b22336e1035498bc9486a2122be933a7bd497
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.2

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