Skip to main content

A next-generation search backend for AlphaDIA.

Project description

alphadia-search-rs

High-performance alphaDIA backend.

Notes for users

This repository contains the high-performance backend for alphaDIA. This code should to used as part of alphaDIA.

Development Setup

Prerequisites

  • Rust 1.88.0
  • Python 3.11+

Quick Start

  1. Clone and enter the repository:

    git clone <repository-url>
    cd alphadia-search-rs
    
  2. Set up pre-commit hooks (recommended):

    # Install pre-commit
    pip install pre-commit
    # or: conda install -c conda-forge pre-commit
    # or: brew install pre-commit
    
    # Install the git hook scripts
    pre-commit install
    
  3. Install Python dependencies:

    conda activate alphadia-search-rs  # or create environment if it doesn't exist
    pip install maturin
    
  4. Build the Rust extension:

    maturin develop --release
    

Omit the --release extension for a developer build.

  1. Run tests:
    cargo test                    # Rust tests
    python ./scripts/test_search.py  # Python integration test
    

Testing

Integration Test

The scripts/test_search.py script provides a comprehensive integration test.

# Run the integration test
python ./scripts/test_search.py --path ./test_data

The script will automatically:

  1. Use existing test data in ./test_data if available (using a temporary directory if --path not specified).
  2. Otherwise download required files:
    • spectrum_df.parquet - Mass spectrometry spectra data
    • peak_df.parquet - Peak detection results
    • precursor_df.parquet - Precursor ion information
    • fragment_df.parquet - Fragment ion data

Expected output:

  • Processing speed: ~200k+ precursors per second
  • Results: ~11M candidates found

Scripts

The scripts/ directory contains analysis pipelines for processing DIA-MS data:

Key Scripts

  1. Candidate Selection: Takes a calibrated speclib as an input and an AlphaRaw hdf. Performs candidate selection and saves the candidates.

    python scripts/candidate_selection.py --ms_data_path data.hdf --spec_lib_path lib.hdf --output_folder ./output
    
  2. Candidate Scoring: Performs scoring following selection. Takes input from previous step and save precursor at 1% FDR.

    python scripts/candidate_scoring.py --ms_data_path data.hdf --spec_lib_path lib.hdf --candidates_path candidates.parquet --fdr --quantify
    
    • option to perform quantification with --quantify
    • option to perform FDR adn filter @1% with --fdr
    • option to add diagnosis plot for all features with --diagnosis

CLI Benchmarking

Score Benchmark Tool

The score-benchmark CLI tool benchmarks multiple implementations of axis_log_dot_product to compare performance and verify numerical accuracy.

# Run the benchmark
cargo run --bin score-benchmark

Troubleshooting

Library Loading Error on macOS: If you encounter the error dyld[xxxxx]: Library not loaded: @rpath/libpython3.11.dylib when running cargo test, set the library path:

Mac:

export DYLD_LIBRARY_PATH=$(realpath $(which python)/../../lib)
cargo test

Linux:

export LD_LIBRARY_PATH=$CONDA_PREFIX/lib:$LD_LIBRARY_PATH
cargo test

Development Workflow

Code Quality Standards

This project enforces strict code quality standards via automated tooling:

  • Formatting: All code must be formatted with rustfmt
  • Linting: All code must pass clippy with no warnings
  • Consistency: Same toolchain used locally and in CI (Rust 1.88.0)

Pre-Commit Hooks

We use the pre-commit framework for automated code quality checks:

# Install pre-commit (one-time setup)
pip install pre-commit

# Install hooks (one-time setup)
pre-commit install

Manual Code Quality Checks

You can run the same checks manually:

# Format code
cargo fmt

# Check formatting (without modifying files)
cargo fmt --all -- --check

# Run linting
cargo clippy -- -D warnings

# Run all pre-commit hooks manually
pre-commit run --all-files

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

alphadia_search_rs-0.2.0.tar.gz (115.6 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

alphadia_search_rs-0.2.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (579.9 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

alphadia_search_rs-0.2.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (582.8 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

alphadia_search_rs-0.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (573.0 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

alphadia_search_rs-0.2.0-cp313-cp313-win_amd64.whl (412.2 kB view details)

Uploaded CPython 3.13Windows x86-64

alphadia_search_rs-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (580.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

alphadia_search_rs-0.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (568.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

alphadia_search_rs-0.2.0-cp313-cp313-macosx_11_0_arm64.whl (515.1 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

alphadia_search_rs-0.2.0-cp313-cp313-macosx_10_12_x86_64.whl (535.5 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

alphadia_search_rs-0.2.0-cp312-cp312-win_amd64.whl (412.2 kB view details)

Uploaded CPython 3.12Windows x86-64

alphadia_search_rs-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (580.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

alphadia_search_rs-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (568.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

alphadia_search_rs-0.2.0-cp312-cp312-macosx_11_0_arm64.whl (515.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

alphadia_search_rs-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl (535.7 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

alphadia_search_rs-0.2.0-cp311-cp311-win_amd64.whl (410.9 kB view details)

Uploaded CPython 3.11Windows x86-64

alphadia_search_rs-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (579.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

alphadia_search_rs-0.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (577.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

alphadia_search_rs-0.2.0-cp311-cp311-macosx_11_0_arm64.whl (532.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

alphadia_search_rs-0.2.0-cp311-cp311-macosx_10_12_x86_64.whl (537.0 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

alphadia_search_rs-0.2.0-cp310-cp310-win_amd64.whl (410.8 kB view details)

Uploaded CPython 3.10Windows x86-64

alphadia_search_rs-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (579.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

alphadia_search_rs-0.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (577.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

File details

Details for the file alphadia_search_rs-0.2.0.tar.gz.

File metadata

  • Download URL: alphadia_search_rs-0.2.0.tar.gz
  • Upload date:
  • Size: 115.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.9.4

File hashes

Hashes for alphadia_search_rs-0.2.0.tar.gz
Algorithm Hash digest
SHA256 4d10471c03e072ae22bdb672315c675dc1ebdba2e42326e8c80be23f84cd525b
MD5 a8ca4f2b96234d64b9962a02413c8507
BLAKE2b-256 887c1d2eafc006aac3536ed771821a584a9f385192e646b30facbd80e3a8d674

See more details on using hashes here.

File details

Details for the file alphadia_search_rs-0.2.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for alphadia_search_rs-0.2.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 362c2fad1c0443eb4961098ef3dce83f5e4af3529ffdcbda1afc5fc8fa85c1a3
MD5 7b24fb339eb7b33665d7cb40af2b69bb
BLAKE2b-256 25b5754d0e0a9cf26ffea29298c985b76c176ce969d6aa48ef6e4c12188db26e

See more details on using hashes here.

File details

Details for the file alphadia_search_rs-0.2.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for alphadia_search_rs-0.2.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6d2383ce52d1bd1bcf8e2a612e32920da2b212b0114ca47ff977840cb1b3dc04
MD5 31f4aae62cdf393ae9a34a6db569dba1
BLAKE2b-256 931d704cca59171a5dcfd1d4fdd6264c441c31485892798edf682e57c67aa790

See more details on using hashes here.

File details

Details for the file alphadia_search_rs-0.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for alphadia_search_rs-0.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a3ff3eb24eaf9587fbf9ef9089bf278aa33c1bcb042809fc75bce3a59f1fb12e
MD5 932cbeafa40592cb8eec39222b743ce6
BLAKE2b-256 f5bc02cf79ee650c1837baa5b2eb1408a27f9dd8e2c4e4594854abeed659ad30

See more details on using hashes here.

File details

Details for the file alphadia_search_rs-0.2.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for alphadia_search_rs-0.2.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 274ef752b33267e96697be8ff43c521afc9073d5cdf38190e3ad84915962d19b
MD5 f7151fab1e5ce52b30bca96e28ab7717
BLAKE2b-256 00a1d33b81eb83898c2c5365a72368d15422f777adb1a05231d934e9e80ed6db

See more details on using hashes here.

File details

Details for the file alphadia_search_rs-0.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for alphadia_search_rs-0.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 adc66354cca78cd86165b50e294cddca74d19442554c27a7d412750df7adf1e3
MD5 a4b73d3c9ed64e55eca6c4f684ad558a
BLAKE2b-256 91bd66ba44813d4fe3ab6d55a812621269b25c4e98cee6eb987148c4962df6d8

See more details on using hashes here.

File details

Details for the file alphadia_search_rs-0.2.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for alphadia_search_rs-0.2.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 7f25a920a5ab5182813f38417c28ea5fa233fba3047e14ce2b9a7f29fc968841
MD5 4fae0a746bfb81f250722e7db0ec56d6
BLAKE2b-256 14fb26a0209698399c3a4d0586379ee10d7b515c0f745142349aa445b104d9d6

See more details on using hashes here.

File details

Details for the file alphadia_search_rs-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for alphadia_search_rs-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e0bed046f931f765196b9b23effdf327b205ab1ef870610e09c7cba409434486
MD5 84054c413ff6a2f4638451b149052e87
BLAKE2b-256 249c7904386c012a78d972068e1ea6d2def60892b76404d67cc7e8c3dfacdf40

See more details on using hashes here.

File details

Details for the file alphadia_search_rs-0.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for alphadia_search_rs-0.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 187206a1383660d206735fa805344b52b44beeaab5bf631de15820d36c652153
MD5 920e960e4a9d2b7cb147242cd821a20b
BLAKE2b-256 9662de46cb15e8a17e8291b5d355590c0d4d42a93f5685e29e2f44fd20c3321b

See more details on using hashes here.

File details

Details for the file alphadia_search_rs-0.2.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for alphadia_search_rs-0.2.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dfcaf9beb0a86e8070aeccbf92e74233f125d4a7680f2f2c3f71d9301b120de6
MD5 c1971e14b7ea48a7755fdc8f65ce23eb
BLAKE2b-256 e4a865cdea487caa1aab1f149628703cfd53d6c66507db2977742d0990270a34

See more details on using hashes here.

File details

Details for the file alphadia_search_rs-0.2.0-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for alphadia_search_rs-0.2.0-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a99357a829dedc5f5ed3ab1ffa7119eba101d009771cfc659083c83bb3b3d034
MD5 89d1df0b7c39c4b98b84b684f5f98b2c
BLAKE2b-256 18d940eeb6190d5738a0464d96f4e28fd185a17e0e239fdc038732344748cb70

See more details on using hashes here.

File details

Details for the file alphadia_search_rs-0.2.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for alphadia_search_rs-0.2.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e3d77e21a6c0f666e12aac8663ddf5b8503e72bac490b18c220f310d92142ce5
MD5 f14356f2c1c9e68536674240e5f5c0ec
BLAKE2b-256 2320d0e01010030341a40e24504402c90e2d76a37f31ce7d0110d03ed9273f0e

See more details on using hashes here.

File details

Details for the file alphadia_search_rs-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for alphadia_search_rs-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2549fff89b9e617caacb9121defba492055cdb0ee979841123184f6d975e74be
MD5 cad57405e71d2898d60f038f8018fe09
BLAKE2b-256 34bae876291770833fe755ed0e88f536735bc67e2a2113b0832cd0359df492f4

See more details on using hashes here.

File details

Details for the file alphadia_search_rs-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for alphadia_search_rs-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3908f4018f13c5bbe4b101fcb300eebce766ac7f2df7bc4b5345226047278c94
MD5 12c5353d6e0716e004163569d9f041d6
BLAKE2b-256 f202f5c2e87fb28f17b5ca6ffd67c8fe6731318769aab35f5f9a5ff6739c9c0f

See more details on using hashes here.

File details

Details for the file alphadia_search_rs-0.2.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for alphadia_search_rs-0.2.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 144cb256fcc9c74e211a7291b3c2f931f577a9687c08a5b9387139862f8fa8a4
MD5 21c19fc7249343eaffd6b2eb1f1ea560
BLAKE2b-256 3c0151442378c765c39ae6cdc0b3d7533faf2ec73b940ba92bff2efa7eb70d84

See more details on using hashes here.

File details

Details for the file alphadia_search_rs-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for alphadia_search_rs-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 63817ec78017b8d2ba39ce568fe55e7f34a37a798d38d534bf3f8691f9900d8b
MD5 e77e80b400920f482522602b010aa51d
BLAKE2b-256 e893e7cb20067bbd4966d72f487f46d49b477f43f5da1bf3a7d3edb9f729f781

See more details on using hashes here.

File details

Details for the file alphadia_search_rs-0.2.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for alphadia_search_rs-0.2.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 890ede7673575e278149abb035c203d0485b5207a4a211ee9692394e68bf2276
MD5 502b9b980d2f42964c255b3b551bba8c
BLAKE2b-256 6f485496310954e7921aabaf01f6998787361079125f6401b1eb85c59383f3ea

See more details on using hashes here.

File details

Details for the file alphadia_search_rs-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for alphadia_search_rs-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d3bdc041d865c49870f1f1f513ea6e167e5ae94d21cf0a82439417a6da69c326
MD5 89661397fa3315e071a53db7b708aecd
BLAKE2b-256 b1340c63a84439693f3c3e5bef34d289108cfa39dfd40383a909911796e002f4

See more details on using hashes here.

File details

Details for the file alphadia_search_rs-0.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for alphadia_search_rs-0.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6ec61d6d77ec90dbd71d1d430a9f6163186fe8ea0a691a2b35052a1e4847ea6f
MD5 1a6a5bebeb207d7735e98aee9cbb15ca
BLAKE2b-256 92ea3bfc48b219b7264f935cd0365fa3edc9d10364b0dd237e55d0d3eccfc84c

See more details on using hashes here.

File details

Details for the file alphadia_search_rs-0.2.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for alphadia_search_rs-0.2.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 86db7f51ecce8b8b2467608849e3d436c5829bd9b95a2df87560a923e3c1b875
MD5 ae5362440281593b056a3785fadb144b
BLAKE2b-256 49794766d32ff9d3f5a7162f195f3122d3ac07075fbaa41f7079ec0ce614d69d

See more details on using hashes here.

File details

Details for the file alphadia_search_rs-0.2.0-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for alphadia_search_rs-0.2.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 24fc3f6c5339bc2366fb54c4bb50dd13a16d92a27cec01e1cad231d101ffa736
MD5 03e8924eb74343dcbeeec64cd1e40864
BLAKE2b-256 2aad53032e19068b5f0eed8cb36a7543f47d55c5e585599fd564a78eae56cde4

See more details on using hashes here.

File details

Details for the file alphadia_search_rs-0.2.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for alphadia_search_rs-0.2.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 b5f32c42ace3db51889a2893f70ca089964b1b94ddd7004b362a40fc58445105
MD5 9b54bfd3ffa7f08588b0a46a5ed0e538
BLAKE2b-256 3d31049d5fd57725f79496bd32c102180f99c442a663714824df52aba238a98f

See more details on using hashes here.

File details

Details for the file alphadia_search_rs-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for alphadia_search_rs-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 230797b1e0120c03511f50ffe6e23e1f2e22fd03aaa7ba4c7ad07a464f4074bb
MD5 d71ecf530ec7b26a71ed14c11a8a6479
BLAKE2b-256 e5ac0c1fd751b347d75488fc848730f3684b49491020eeff6df7a0b5d6ea96b4

See more details on using hashes here.

File details

Details for the file alphadia_search_rs-0.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for alphadia_search_rs-0.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 40dabf034377bf0d744f8f4423cb7bb23ea5fa985a3abe2d15fa9b0c9333e48d
MD5 9f2cc7c614a00567405bf0a607fe51b7
BLAKE2b-256 3a68b3779f6b3e30f92b4401cab43de08ce11923eeccc53daf602d55bbcad901

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page