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

Total release size: 133.7 MB

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

Download URL silodb-0.12.0-cp314-cp314-manylinux_2_35_x86_64.whl
Size 10.2 MB
Tags CPython 3.14 Linux glibc 2.35+ x86-64
SHA-256 checksum
How to use checksums
4d9d7a050e1ae219272f12867d8002f46c6bc76f9fa775b282bbcc446292ba3c
BLAKE2b-256 checksum
How to use checksums
6bd62164ea79261afe41e9575e3c5bd20efe7dd69ff5f8bf5d65b28ee9aa6a68
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.0-cp314-cp314-manylinux_2_35_aarch64.whl

Download URL silodb-0.12.0-cp314-cp314-manylinux_2_35_aarch64.whl
Size 9.4 MB
Tags CPython 3.14 Linux glibc 2.35+ ARM64
SHA-256 checksum
How to use checksums
06ece37f2a2e87d28424f9c9ce8cd206a15e634fb2b21164f9eafb408fe5434f
BLAKE2b-256 checksum
How to use checksums
749c4b2a8a56063639eeea07de51a611121e28453d2308fe634e0183ecc2de0e
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.0-cp314-cp314-macosx_11_0_arm64.whl

Download URL silodb-0.12.0-cp314-cp314-macosx_11_0_arm64.whl
Size 6.4 MB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
0c53928429b8daff9a2fc8283bd13130bc7627b0a17c9a64249bf54298657163
BLAKE2b-256 checksum
How to use checksums
b899c44e0ae1c2ac1a7247df8a36797da0838ee18873aa68e5c04d152c0d5c07
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.0-cp314-cp314-macosx_10_15_x86_64.whl

Download URL silodb-0.12.0-cp314-cp314-macosx_10_15_x86_64.whl
Size 7.4 MB
Tags CPython 3.14 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
2f8e548195fb8cc840486a97436012eacd0671e50aa2cfcb5b58a28ff43839f2
BLAKE2b-256 checksum
How to use checksums
eb90efe6dbfac6b90cbe1591b6bc2a8599d7e9309d82a5de7eaeee3f18acc4d1
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.0-cp313-cp313-manylinux_2_35_x86_64.whl

Download URL silodb-0.12.0-cp313-cp313-manylinux_2_35_x86_64.whl
Size 10.2 MB
Tags CPython 3.13 Linux glibc 2.35+ x86-64
SHA-256 checksum
How to use checksums
eb9d236ebb1b592f67e934f69d2f14858c358c562dc328c24086010decf69bab
BLAKE2b-256 checksum
How to use checksums
f98765251fed470261db7cf87ef429d7438bad26e8d94e5833effec263eb2652
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.0-cp313-cp313-manylinux_2_35_aarch64.whl

Download URL silodb-0.12.0-cp313-cp313-manylinux_2_35_aarch64.whl
Size 9.4 MB
Tags CPython 3.13 Linux glibc 2.35+ ARM64
SHA-256 checksum
How to use checksums
91fdeb20a4695dac8090f326a366adbea0d8881158dc479d66a238156998d291
BLAKE2b-256 checksum
How to use checksums
c98406f68fba9850595f1fb746f0932242bd353006b6222ff08848d3eeeb50a4
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.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL silodb-0.12.0-cp313-cp313-macosx_11_0_arm64.whl
Size 6.4 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d78f41256f06c7cbed610f4573acb489c1938859def12aba4ec256dc48800d82
BLAKE2b-256 checksum
How to use checksums
136be0af3ee79f89984543db02c51bb4760b369b75d38c58436a04c28cf3b84f
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.0-cp313-cp313-macosx_10_15_x86_64.whl

Download URL silodb-0.12.0-cp313-cp313-macosx_10_15_x86_64.whl
Size 7.4 MB
Tags CPython 3.13 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
fdb5cf418d14dfbad347677fe048b45abb96fab140d686d90787cf502d8047fc
BLAKE2b-256 checksum
How to use checksums
bd438674af629685755891612cbe42b58d277e1995d3ac7866acb83488452c01
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.0-cp312-cp312-manylinux_2_35_x86_64.whl

Download URL silodb-0.12.0-cp312-cp312-manylinux_2_35_x86_64.whl
Size 10.2 MB
Tags CPython 3.12 Linux glibc 2.35+ x86-64
SHA-256 checksum
How to use checksums
1e3f61b3c2d187e4b5d614e2731bf1c001acbc410188be64d5aecc7744dcb945
BLAKE2b-256 checksum
How to use checksums
d69b849994209d8b63ff8abbd646f07eb41da162d39f84aae56bac27468c59ac
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.0-cp312-cp312-manylinux_2_35_aarch64.whl

Download URL silodb-0.12.0-cp312-cp312-manylinux_2_35_aarch64.whl
Size 9.4 MB
Tags CPython 3.12 Linux glibc 2.35+ ARM64
SHA-256 checksum
How to use checksums
441c62e042fa9c282a22dc5d24be74e99f52e1452be159dd857a8865004347ac
BLAKE2b-256 checksum
How to use checksums
4a212275568b12a1e863ecfe8d8eee8b2cc798bc0b667541612199e013dcb01c
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.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL silodb-0.12.0-cp312-cp312-macosx_11_0_arm64.whl
Size 6.4 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
5a47ac1902805735c15c7c23ba28196237cd01d40b5adfc5e50b5413ec2f60cf
BLAKE2b-256 checksum
How to use checksums
a6bb1a7737cf3412c5d976b53f992ac808f5d126e9de25a3dbf2e8c2b64b4e1c
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.0-cp312-cp312-macosx_10_15_x86_64.whl

Download URL silodb-0.12.0-cp312-cp312-macosx_10_15_x86_64.whl
Size 7.4 MB
Tags CPython 3.12 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
3c179624f21da38e5545b74252f8fba8a6297741a55ccc754126cd1256018d00
BLAKE2b-256 checksum
How to use checksums
868e00cc5c43b5fbd90b5852fa0f73ec37c2f487ae3bd0c76f323c5b3e5817ed
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.0-cp311-cp311-manylinux_2_35_x86_64.whl

Download URL silodb-0.12.0-cp311-cp311-manylinux_2_35_x86_64.whl
Size 10.2 MB
Tags CPython 3.11 Linux glibc 2.35+ x86-64
SHA-256 checksum
How to use checksums
0b36afccb15439c95cdef8c6509b92b4cff978df48e8da5aab067ce1cc8fb80c
BLAKE2b-256 checksum
How to use checksums
2e7fab5b0d7a9d1f889cce354d0ecf73b636097ac093aa6ce40b28747e238811
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.0-cp311-cp311-manylinux_2_35_aarch64.whl

Download URL silodb-0.12.0-cp311-cp311-manylinux_2_35_aarch64.whl
Size 9.4 MB
Tags CPython 3.11 Linux glibc 2.35+ ARM64
SHA-256 checksum
How to use checksums
cb780daaeb003f5dac5a0625aaff68fc10e32a1635a2fadd7f48527ad567d9a5
BLAKE2b-256 checksum
How to use checksums
a7ee324755137464b00909b8718e2244676cc20d71ae9fd472ebf5b8922defec
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.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL silodb-0.12.0-cp311-cp311-macosx_11_0_arm64.whl
Size 6.4 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
5e799edcedffb69c81a74d981425081b01d56f1b25851593e8d2c72318564c0e
BLAKE2b-256 checksum
How to use checksums
11385ca28727caba976b813cf2f84ccee3fefb00d81b04d70ab2c67903f9049b
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.0-cp311-cp311-macosx_10_15_x86_64.whl

Download URL silodb-0.12.0-cp311-cp311-macosx_10_15_x86_64.whl
Size 7.4 MB
Tags CPython 3.11 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
b07b8428124b65968045f2acea5d2518f7c602f9773c2121da9d1b0eaf5a0abf
BLAKE2b-256 checksum
How to use checksums
29ea951878bdb01c20f82a441ab1a38a6fcb14218e6f978d23339fa4433cd57e
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.0 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