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

Download URL silodb-0.13.0-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
599281c48401cdf98bd4f2d977b7a76680d9557045b279db1d37a3b2d8092c65
BLAKE2b-256 checksum
How to use checksums
8fde9a3170c9dba274913bb7ec0b75c454b65f9ca43b2d48add8c074d50e2202
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.0-cp314-cp314-manylinux_2_35_aarch64.whl

Download URL silodb-0.13.0-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
a584a53e0bd268a51435428b8236b8637a850506c9f627c31c81113def6471c3
BLAKE2b-256 checksum
How to use checksums
5916555c4ba9d3320e1d345bc087c61e31d4e160d417b8d7f05ee87739be2474
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.0-cp314-cp314-macosx_11_0_arm64.whl

Download URL silodb-0.13.0-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
944d643bfe4f93cfaa2b9fc6adcf0c3a53c50224abd4c1e27e823c809b83c092
BLAKE2b-256 checksum
How to use checksums
256ccbb33e283f044e641a13fc74a884df8dcfe84d52976179d76736b7a494e8
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.0-cp314-cp314-macosx_10_15_x86_64.whl

Download URL silodb-0.13.0-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
bd087df8c24c331e7c4bcbe3399452fca0eb573debee47e9e303bb3e7232494b
BLAKE2b-256 checksum
How to use checksums
8244078ef3cece840852fba1e8c208efa8b021cf5d0d254347ec2b0de01c5844
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.0-cp313-cp313-manylinux_2_35_x86_64.whl

Download URL silodb-0.13.0-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
59d973df745a9ea03ddc1f3b967a4729ca733301f75f94293f0025d9cffa2f9f
BLAKE2b-256 checksum
How to use checksums
4dd7547850a8250e20da1b707a7addcd99c870b224de93e63549d0a34c6ab835
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.0-cp313-cp313-manylinux_2_35_aarch64.whl

Download URL silodb-0.13.0-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
cb2e442ab7e461caee766b5aa9e1526a4a3c6babcd4e1ecfb7e371a298dbf08e
BLAKE2b-256 checksum
How to use checksums
c5df39403bb90bdd8991469ccdc149e7ee9e228f96ca1a60945765b0326bf98e
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.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL silodb-0.13.0-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
0a6bdd808bad621e0651679e9a8b357eb72b120de0602b4d67ee4fe131ab1a2a
BLAKE2b-256 checksum
How to use checksums
a65567dc309555305d84033f0055479e76664c7261697fbe5b44199c1aa9a545
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.0-cp313-cp313-macosx_10_15_x86_64.whl

Download URL silodb-0.13.0-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
047a3ff6c8256d62e9c5d9234fb6874d5daceb8802a42761386abe1c4e623b79
BLAKE2b-256 checksum
How to use checksums
07e625b94b7d07b92ff4dbb306847bfc56419c6ac6db2f0e0de9ae028b79b979
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.0-cp312-cp312-manylinux_2_35_x86_64.whl

Download URL silodb-0.13.0-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
03569f0da0dc831f7d7fc5c742996d66e8ed84d85972627196d7f252d8576f87
BLAKE2b-256 checksum
How to use checksums
303e35323178342bbe4c3d447c8c823baf8387fd2b8cf78fe2de187c11555794
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.0-cp312-cp312-manylinux_2_35_aarch64.whl

Download URL silodb-0.13.0-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
5058b73a53be1bd0f4c7c2ec49086bdbe3be3b0716b9938ce00a4c5318d933f8
BLAKE2b-256 checksum
How to use checksums
c95d9cfb599bce6e14d8609ecfaf0c8c40b7d4d1c8103e360026d81c04414d6d
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.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL silodb-0.13.0-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
4bc824f3f89d3b762923a02f17f13658f30adee28764ba25558f5a9bf2a827fe
BLAKE2b-256 checksum
How to use checksums
eb25d8668ea3bc7a3dc12fe2264726c6d78b1dce965f58c77133674344507206
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.0-cp312-cp312-macosx_10_15_x86_64.whl

Download URL silodb-0.13.0-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
08f2dfd50018868d2f7353aaaf2ef5792fd464e057b994cc61f9dac7f9d8fa73
BLAKE2b-256 checksum
How to use checksums
23a5af571b4f8e348120160c0dc757f6ee818a51ab17ec390b2a2223fcfa399f
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.0-cp311-cp311-manylinux_2_35_x86_64.whl

Download URL silodb-0.13.0-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
e56880589fff2b08a4b76680debcd1871f602dd9f886ad937c3175281e2d5690
BLAKE2b-256 checksum
How to use checksums
1dc224be2bd6d93b003947f580046bd26bba3d5f0be943a1520cdc58e8327f8b
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.0-cp311-cp311-manylinux_2_35_aarch64.whl

Download URL silodb-0.13.0-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
c2f0a87e4108b8143c42ff59216fe458e92c625b04fa9289f90a0c7be02d9ee3
BLAKE2b-256 checksum
How to use checksums
6202193a61724f6aa8d650e47dab8ab4a9bb2158f15a788cb3c527f5e61b2b64
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.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL silodb-0.13.0-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
a0e06e9c3954c09ec821ec9f655385eb02885552cb4acc90a3b75db2ecb814e8
BLAKE2b-256 checksum
How to use checksums
59aa0daa5346f4c00e5491d1f7b445b136111643537fdd81404176f7c8ad04ec
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.0-cp311-cp311-macosx_10_15_x86_64.whl

Download URL silodb-0.13.0-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
980bb21090a7673880a705468bffce69e9a63cd74dc8d75f3dc16cfdd04fdec4
BLAKE2b-256 checksum
How to use checksums
778ca9057b7c4146fe342266861ba4aac3cc4e13d64e887c0f8940b8b79a47cc
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.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