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

Total release size: 110.9 MB

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

Download URL silodb-0.12.1-cp314-cp314-manylinux_2_35_x86_64.whl
Size 8.5 MB
Tags CPython 3.14 Linux glibc 2.35+ x86-64
SHA-256 checksum
How to use checksums
2924d251ca3c1317c965da5e3e6a9f707543b82e418e2f7d9b88e8cecbd4b7f9
BLAKE2b-256 checksum
How to use checksums
d6cbaecbfabd7936c5dff75bb748a04ce30103169ddfdc05f8409178e93818e3
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.12.1-cp314-cp314-manylinux_2_35_aarch64.whl

Download URL silodb-0.12.1-cp314-cp314-manylinux_2_35_aarch64.whl
Size 7.7 MB
Tags CPython 3.14 Linux glibc 2.35+ ARM64
SHA-256 checksum
How to use checksums
6064e857c5d78bf1f1bd8f73e4a8349796661447ad2bc503c7b1025549dc18f3
BLAKE2b-256 checksum
How to use checksums
bc3dac2beeb7e68b5e69cdc07e1867726976b2b4038dd29eee3a10170ee7137d
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.12.1-cp314-cp314-macosx_11_0_arm64.whl

Download URL silodb-0.12.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
60bc507e47a8b5734dc34b6b37d4e4778aba7505c04aab63ed4c082033941ca7
BLAKE2b-256 checksum
How to use checksums
7623c574f7105b70dab04be5546fdd46a6b0bbef099402eebcecafc02b1e0be4
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.12.1-cp314-cp314-macosx_10_15_x86_64.whl

Download URL silodb-0.12.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
925c480692e0e0a0f9ff3893e15978baae0ad19872efdcb1d6decd42cfde286a
BLAKE2b-256 checksum
How to use checksums
e03611a12800af1d55da05f6bbe21ab4e8aed5eacec3801e11417e63705048f0
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.12.1-cp313-cp313-manylinux_2_35_x86_64.whl

Download URL silodb-0.12.1-cp313-cp313-manylinux_2_35_x86_64.whl
Size 8.5 MB
Tags CPython 3.13 Linux glibc 2.35+ x86-64
SHA-256 checksum
How to use checksums
a384624d9ba263643bc03e5f4858fbae491c8c9f88a819a59c5940ccf02c9c9a
BLAKE2b-256 checksum
How to use checksums
43049fdd33a8bd47dbbc3cbd345fb294fa21a390865bc43691e6cb3ca079da45
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.12.1-cp313-cp313-manylinux_2_35_aarch64.whl

Download URL silodb-0.12.1-cp313-cp313-manylinux_2_35_aarch64.whl
Size 7.7 MB
Tags CPython 3.13 Linux glibc 2.35+ ARM64
SHA-256 checksum
How to use checksums
54304c890f7f5279648b208c733a587bc5d5e526b394d028ce92fb4cc00d8369
BLAKE2b-256 checksum
How to use checksums
267f1fd5b49b15a8d454ef1b0a1c9670e572be18fdee2001fdaeeb946dfd2983
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.12.1-cp313-cp313-macosx_11_0_arm64.whl

Download URL silodb-0.12.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
2ca768dc6adde7e73c4e33ffbd5b4b40412dc516f4585f3dc2d77b7bb88e7c20
BLAKE2b-256 checksum
How to use checksums
bf14ac53864197034372c0e9fc9ccee1dcc35f46b2ea10198df3b4b088833b94
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.12.1-cp313-cp313-macosx_10_15_x86_64.whl

Download URL silodb-0.12.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
c2d0db7b23eaccb39c11352590019da19d802247e24c92f95e6916b5409b4b87
BLAKE2b-256 checksum
How to use checksums
e09b33ac5fcb30cbb05f96c5e5378eba437f920845a0d3721699e6895f3de6f9
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.12.1-cp312-cp312-manylinux_2_35_x86_64.whl

Download URL silodb-0.12.1-cp312-cp312-manylinux_2_35_x86_64.whl
Size 8.5 MB
Tags CPython 3.12 Linux glibc 2.35+ x86-64
SHA-256 checksum
How to use checksums
a217d86cf4e918cfef394eac03bcd8c638305b000b8a22bd40fff5bb41b646e2
BLAKE2b-256 checksum
How to use checksums
0e6c46ab6f4033269519b04b341b939d8512e708bd77f4e466b2ced970ce3812
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.12.1-cp312-cp312-manylinux_2_35_aarch64.whl

Download URL silodb-0.12.1-cp312-cp312-manylinux_2_35_aarch64.whl
Size 7.7 MB
Tags CPython 3.12 Linux glibc 2.35+ ARM64
SHA-256 checksum
How to use checksums
293a5d77696dea0106bb4cf6bcb8cb8b3c898222953622fa76d68929dac521ec
BLAKE2b-256 checksum
How to use checksums
4c72aebd89edf68ab6617c3355716e30fec53b4d79693339c05529bd67947336
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.12.1-cp312-cp312-macosx_11_0_arm64.whl

Download URL silodb-0.12.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
3b5f1fca632778cbf08190c7ea75f9dcd0dbca19e1558debf888049d8effc1f6
BLAKE2b-256 checksum
How to use checksums
271f8e8d838fb7faee8f96a2d0654cc9b4df1954ee6904e27135d3188ba9a815
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.12.1-cp312-cp312-macosx_10_15_x86_64.whl

Download URL silodb-0.12.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
a992b75943fc1a93ddebb3b92267508a851012a67ea700ac813b7896b495e5a0
BLAKE2b-256 checksum
How to use checksums
4c1168f968c185ece71995c62af4d9a9d521fcdffd2457005bf130ad95797bbe
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.12.1-cp311-cp311-manylinux_2_35_x86_64.whl

Download URL silodb-0.12.1-cp311-cp311-manylinux_2_35_x86_64.whl
Size 8.5 MB
Tags CPython 3.11 Linux glibc 2.35+ x86-64
SHA-256 checksum
How to use checksums
e4e6783bd2eeb46edaea0466c1a6884fca8307d4ccbbb2d33d548358204d42e2
BLAKE2b-256 checksum
How to use checksums
9bc0ddff1cc674c7dae62763de0bca98282c2e009e424a3bd4a6950a138acb92
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.12.1-cp311-cp311-manylinux_2_35_aarch64.whl

Download URL silodb-0.12.1-cp311-cp311-manylinux_2_35_aarch64.whl
Size 7.7 MB
Tags CPython 3.11 Linux glibc 2.35+ ARM64
SHA-256 checksum
How to use checksums
5f8451904c0e3440b6de35e10506c6236cf3a0f0160fb932fa7bc61a59aeb0c3
BLAKE2b-256 checksum
How to use checksums
de804aedcf654950cdc6f4ac77adbb0f126a2d6371eb3db7df943d9f44f361cc
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.12.1-cp311-cp311-macosx_11_0_arm64.whl

Download URL silodb-0.12.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
7dd66cd436051d78d8491e226c5b5e675ddb1f1777aa739a52abb21b01636b7c
BLAKE2b-256 checksum
How to use checksums
3d729bb451659c127d45ef17aafe25fe713a842d72a82649e8f76a65cdc1c1e3
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.12.1-cp311-cp311-macosx_10_15_x86_64.whl

Download URL silodb-0.12.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
102f743e808b12a65de39d450523c4dd684addf2c3edb4150c5703457e5ab263
BLAKE2b-256 checksum
How to use checksums
fb4fff42f43d98a6172d29a59125bb1bb00742dfd7f9a7c7ccc72267cf5d4943
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.12.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