Skip to main content

LAPIS-SILO

High-performance analytical database for sequence alignment data

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

Python Bindings

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

See Contributing for build instructions.

Usage

from silodb import Database

# Create a new database
db = Database()

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

# Create a nucleotide sequence table
db.create_nucleotide_sequence_table(
    table_name="sequences",
    primary_key_name="id",
    sequence_name="main",
    reference_sequence="ACGT..."
)

# 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 SILO, 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 silo preprocessing --help.
  • RuntimeConfig used when started with api and described in file runtime_config.h For details see silo 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 SILO 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 SILO_ in capital SNAKE_CASE. (e.g. SILO_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.

SILO expects a preprocessing config that can to 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
  silo preprocessing

Both config files can also be provided in custom locations:

silo 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 SILO 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
  silo api

The directory where SILO expects the preprocessing output can be overwritten via silo 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/

Release files for silodb 0.13.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 silodb 0.13.1
File
silodb-0.13.1-cp314-cp314-manylinux_2_35_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.35+ x86-64 Details
silodb-0.13.1-cp314-cp314-manylinux_2_35_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.35+ ARM64 Details
silodb-0.13.1-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
silodb-0.13.1-cp314-cp314-macosx_10_15_x86_64.whl CPython 3.14 CPython 3.14 macOS 10.15+ x86-64 Details
silodb-0.13.1-cp313-cp313-manylinux_2_35_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.35+ x86-64 Details
silodb-0.13.1-cp313-cp313-manylinux_2_35_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.35+ ARM64 Details
silodb-0.13.1-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
silodb-0.13.1-cp313-cp313-macosx_10_15_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.15+ x86-64 Details
silodb-0.13.1-cp312-cp312-manylinux_2_35_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.35+ x86-64 Details
silodb-0.13.1-cp312-cp312-manylinux_2_35_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.35+ ARM64 Details
silodb-0.13.1-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
silodb-0.13.1-cp312-cp312-macosx_10_15_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.15+ x86-64 Details
silodb-0.13.1-cp311-cp311-manylinux_2_35_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.35+ x86-64 Details
silodb-0.13.1-cp311-cp311-manylinux_2_35_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.35+ ARM64 Details
silodb-0.13.1-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
silodb-0.13.1-cp311-cp311-macosx_10_15_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.15+ x86-64 Details

Total release size: 111.3 MB

Release files / silodb-0.13.1-cp314-cp314-manylinux_2_35_x86_64.whl

Download URL silodb-0.13.1-cp314-cp314-manylinux_2_35_x86_64.whl
Size 8.6 MB
Tags CPython 3.14 Linux glibc 2.35+ x86-64
SHA-256 checksum
How to use checksums
132eceeeda9db8fd7d641653a53d36928dfe67a57fa6b85284eee358b840bd13
BLAKE2b-256 checksum
How to use checksums
b242b32bf27321cb71602384325dd7b5742b7435f92a357fb85d9d9380e73eb8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / silodb-0.13.1-cp314-cp314-manylinux_2_35_aarch64.whl

Download URL silodb-0.13.1-cp314-cp314-manylinux_2_35_aarch64.whl
Size 7.8 MB
Tags CPython 3.14 Linux glibc 2.35+ ARM64
SHA-256 checksum
How to use checksums
95c963b84638bb3f6718d89b1a0567dff6fe8a94569ebec5d86bd2bdf2c6a034
BLAKE2b-256 checksum
How to use checksums
8991eeee138de1d2120e896fd0a8b82a8eeb5ac05aced98275c303f6c063fd38
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / silodb-0.13.1-cp314-cp314-macosx_11_0_arm64.whl

Download URL silodb-0.13.1-cp314-cp314-macosx_11_0_arm64.whl
Size 5.3 MB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
4a5cc69f1d77701ab176af619dba4b6a3181fce91a13d85330f567db0b348bf6
BLAKE2b-256 checksum
How to use checksums
8f0006f6dac78ee0e99e71223be2fea4ceb823bcc5642bec249e2389062e6c04
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / silodb-0.13.1-cp314-cp314-macosx_10_15_x86_64.whl

Download URL silodb-0.13.1-cp314-cp314-macosx_10_15_x86_64.whl
Size 6.2 MB
Tags CPython 3.14 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
5cc9bddfdca151d06093ed31bad4150923d8bbf47672cb5755abb5fb09d63859
BLAKE2b-256 checksum
How to use checksums
2f2d47c7163fab2f7e415b9445f26682c5770946f6115daaa684e7295938af70
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / silodb-0.13.1-cp313-cp313-manylinux_2_35_x86_64.whl

Download URL silodb-0.13.1-cp313-cp313-manylinux_2_35_x86_64.whl
Size 8.6 MB
Tags CPython 3.13 Linux glibc 2.35+ x86-64
SHA-256 checksum
How to use checksums
8e7bea33d11d555dda95c7faa0cf5acebfbef86f35a81a2deb0d075abeea0c88
BLAKE2b-256 checksum
How to use checksums
909cd246966fab008076b975c95e6fa1c10297ae7d76f37ba006d47629f2e7bb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / silodb-0.13.1-cp313-cp313-manylinux_2_35_aarch64.whl

Download URL silodb-0.13.1-cp313-cp313-manylinux_2_35_aarch64.whl
Size 7.8 MB
Tags CPython 3.13 Linux glibc 2.35+ ARM64
SHA-256 checksum
How to use checksums
367e869ed582705ea6c9bac0e1f72f3a37fcfa3d258b75ed18d35abba74b314a
BLAKE2b-256 checksum
How to use checksums
3acbbb8131ef58db4005153ddbad05714539e4cc7dd65c622fd9e63180aeccca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / silodb-0.13.1-cp313-cp313-macosx_11_0_arm64.whl

Download URL silodb-0.13.1-cp313-cp313-macosx_11_0_arm64.whl
Size 5.3 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
87770ea18a9a50e019eeada998ca3768c0802c76aaa6e9fb6444be0ac11820e9
BLAKE2b-256 checksum
How to use checksums
7799b1e30ef2a048cb869b71686175be437bf05ff737664d117985ba6df980f6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / silodb-0.13.1-cp313-cp313-macosx_10_15_x86_64.whl

Download URL silodb-0.13.1-cp313-cp313-macosx_10_15_x86_64.whl
Size 6.2 MB
Tags CPython 3.13 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
50e99d4c762fbabb8b639dc52ccc91d6246ded4e91e4ecf9f2ff7e3926980b65
BLAKE2b-256 checksum
How to use checksums
0812de794e45cfa7d318cb01c122a9a34d33933ffd7034f25731ef8eae302149
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / silodb-0.13.1-cp312-cp312-manylinux_2_35_x86_64.whl

Download URL silodb-0.13.1-cp312-cp312-manylinux_2_35_x86_64.whl
Size 8.6 MB
Tags CPython 3.12 Linux glibc 2.35+ x86-64
SHA-256 checksum
How to use checksums
e4290af6fdd4db92053545f875042c93af22486f16bf1dee6636d77eb66caf3d
BLAKE2b-256 checksum
How to use checksums
f8225f6b1c235c06de1a5ea04a00048340c65122c179af40ff7b9b88f03b0030
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / silodb-0.13.1-cp312-cp312-manylinux_2_35_aarch64.whl

Download URL silodb-0.13.1-cp312-cp312-manylinux_2_35_aarch64.whl
Size 7.8 MB
Tags CPython 3.12 Linux glibc 2.35+ ARM64
SHA-256 checksum
How to use checksums
7dd8186eb454c81b0e3b8fe9cf96a44868607dec8674bed931a47498f29ac912
BLAKE2b-256 checksum
How to use checksums
b8f8dac41e5bd68bc4d901532ba5352dfef4a7bc9654c8b3cdb0631645081c3a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / silodb-0.13.1-cp312-cp312-macosx_11_0_arm64.whl

Download URL silodb-0.13.1-cp312-cp312-macosx_11_0_arm64.whl
Size 5.3 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
e2c3dd40fc11e9f3961c9d3f032869dd4c09d54166a379349c8be2904a4fcb82
BLAKE2b-256 checksum
How to use checksums
1315c0c418e8b55c3b0e7241ae969083b3f1fb3086d9408eb674eafa77d89bda
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / silodb-0.13.1-cp312-cp312-macosx_10_15_x86_64.whl

Download URL silodb-0.13.1-cp312-cp312-macosx_10_15_x86_64.whl
Size 6.2 MB
Tags CPython 3.12 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
53b8aa89606c8cb0ab107f27d39f3ed777597ed3d32dae28f6f6ff1100658e21
BLAKE2b-256 checksum
How to use checksums
8aafd6b374fd55e49d2569df4e33604fdcc535519e657c01ebcb73662692892e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / silodb-0.13.1-cp311-cp311-manylinux_2_35_x86_64.whl

Download URL silodb-0.13.1-cp311-cp311-manylinux_2_35_x86_64.whl
Size 8.6 MB
Tags CPython 3.11 Linux glibc 2.35+ x86-64
SHA-256 checksum
How to use checksums
dbcfc07f987de6cabad6eb3aeac637e2ee63e25b22bbe0641b220e48cf03f8e9
BLAKE2b-256 checksum
How to use checksums
0c7b2841434677a79aa975191f87f05e4f9faff749f999cb82c8efaf6c0276ba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / silodb-0.13.1-cp311-cp311-manylinux_2_35_aarch64.whl

Download URL silodb-0.13.1-cp311-cp311-manylinux_2_35_aarch64.whl
Size 7.8 MB
Tags CPython 3.11 Linux glibc 2.35+ ARM64
SHA-256 checksum
How to use checksums
5e9c4e86fe6c60be7fddb71a8021bb68fb764430f6c12329e35be8fb7d69c3fb
BLAKE2b-256 checksum
How to use checksums
c33825fd036df44fa8b6c1c0d58a9587d9fe3646b3e2a33e6d5cb63d1a5e1740
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / silodb-0.13.1-cp311-cp311-macosx_11_0_arm64.whl

Download URL silodb-0.13.1-cp311-cp311-macosx_11_0_arm64.whl
Size 5.3 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
1bf105926662bbe999913a4f3afb19f5270391f78ed93644dfe4fc0c34045e4f
BLAKE2b-256 checksum
How to use checksums
c768365947e0a3df9b561e7a00995bdcceaade92774d83460a5e90e4a4dfbac8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / silodb-0.13.1-cp311-cp311-macosx_10_15_x86_64.whl

Download URL silodb-0.13.1-cp311-cp311-macosx_10_15_x86_64.whl
Size 6.2 MB
Tags CPython 3.11 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
dfd1f18281dd9cff04b94961e602737f7b99a637a419c768bcc94e9c03245059
BLAKE2b-256 checksum
How to use checksums
c7a3b887446ef33bfde33ff53f2cd8f89d33b81869f25f50a5b34756fb091bd2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release history Release notifications | RSS feed

This release

0.13.1 This release

16 release files

0.9.11

3 release files

0.0.0

1 release file

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