Skip to main content

RiboSeek

Spatial-neighbour encoding enables fast RNA 3D structure search.

Name note. This is RiboSeek, the RNA 3D structure search tool that accompanies the paper below. It is unrelated to the RNA sequence search tool of the same name at steineggerlab/riboseek; the two packages share nothing but the name.

RiboSeek encodes each RNA 3D structure as a string over a structural alphabet whose letters describe each nucleotide's spatial neighbourhood (its three nearest non-sequential neighbours), then runs Needleman–Wunsch / Smith–Waterman alignment (a small C implementation) to retrieve similar structures from a database. Two alphabets are provided: RS-80 (structure × base identity, the default for database search) and RS-20 (geometry only, internal name sa20).

Searching the 15,391-chain experimental RNA database takes about 0.1 s (median) per query on one CPU core.

Installation

pip install riboseek

A C compiler is required (gcc/clang on Linux/macOS, MSVC on Windows); pip compiles the small C extension automatically.

Quickstart

pip install riboseek
riboseek download-db                      # 8 MB, once
riboseek search my_rna.cif --top-n 10

Both mmCIF and legacy PDB files are accepted (.cif, .mmcif, .pdb, .ent, optionally gzip-compressed). The longest RNA chain is used unless --chain is given. For yeast tRNA-Phe (PDB 1EHZ) the output reads:

$ riboseek search 1ehz.cif --top-n 5
Query: 1ehz.cif

rank                 chain   combined       nw       sw     evalue  length
--------------------------------------------------------------------------
   1                1ehz_A    +2.8166  +5.5569  +5.5569    1.4e-12      62
   2                1evv_A    +2.7521  +5.4729  +5.4729    3.5e-12      62
   3                6tna_A    +2.7471  +5.4665  +5.4665    3.7e-12      62
   4                1tn1_A    +2.7160  +5.4259  +5.4259    5.8e-12      62
   5                1tn2_A    +2.7160  +5.4259  +5.4259    5.8e-12      62

The columns are the database chain (PDB id and author chain id), the composite score the list is sorted by (mean of the per-query z-scored global and local alignment scores), the two length-normalised alignment scores, the E-value of the hit (E < 0.01 is a practical threshold) and the chain length in encoded residues.

More options:

riboseek search ./structures/ --tsv hits.tsv      # a directory: one ranked list per file, all hits to one TSV
riboseek search my_rna.cif --keep-modified        # fold modified nucleotides onto their parent base instead of dropping them
riboseek search my_rna.cif --alphabet sa20        # search with RS-20 (geometry only)
riboseek encode my_rna.cif                        # print the RS-20 letter string
riboseek build-db ./my_pdbs/ -o my_db.json.gz     # encode your own structures into a database
riboseek build-db ./new_pdbs/ -o my_db.json.gz --append my_db.json.gz   # add newly deposited structures
riboseek search my_rna.cif --db my_db.json.gz

A Colab notebook with the same steps is in examples/riboseek_colab.ipynb.

Python API:

from riboseek import Searcher

searcher = Searcher.from_pretrained()          # RS-80 by default
hits = searcher.search("my_rna.cif", top_n=10)
for h in hits:
    print(f"{h['chain']:>10s}  combined={h['combined_score']:+.3f}  E={h['evalue']:.1e}")

Full 15,391-chain database

The PyPI package ships with a ~50-chain demo subset so installs stay small. riboseek download-db fetches the full 15,391-chain encoded database used in the paper (8 MB compressed, with sequences for RS-80 and E-values) from the GitHub release into ~/.cache/riboseek/; subsequent riboseek search calls use it automatically.

The benchmark pair lists of the paper are in benchmark/.

Citation

If you use RiboSeek in academic work, please cite:

Wang D, Jin J, Qiao J, Gao W, Wei L, Wu S, Liu Q. Spatial-neighbour encoding enables fast RNA 3D structure search. Nucleic Acids Research (2026), in press. Preprint: doi:10.64898/2026.04.19.719441

License

MIT — see LICENSE.

Metadata

Release files for riboseek 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for riboseek 0.2.1
File Size Uploaded Provenance Actions
riboseek-0.2.1.tar.gz 59.1 kB Without provenance Details for riboseek-0.2.1.tar.gz

Release files / riboseek-0.2.1.tar.gz

Download URL riboseek-0.2.1.tar.gz
Size 59.1 kB
Tags Source
SHA-256 checksum
How to use checksums
1d116a7f83c7b4f4c7c5db6137e1ca1c7cf63726a00db0ee3a674c595431ec75
BLAKE2b-256 checksum
How to use checksums
3e467726ba7bb5d17a75fb27a595473e3ff990e419ae184223b4d01d7b58ec72
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Security for riboseek 0.2.1

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.

Release history Release notifications | RSS feed

This release

0.2.1 This release

1 release file No provenance

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