Rust ports of the hot paths found by profiling: fused per-locus GenCall calling and scoring, BAF/LRR, libm maps with CPython math semantics, both nearest-neighbour searches of the normalization fit, and the BPM LocusEntry parser. Address coverage is memoised per IDAT layout. SIMURG_PURE_PYTHON=1 forces the pure paths. On the Pi: genotype_sample 3.4 s -> 1.1 s, 36-sample GSA run 131 s -> 46 s, BPM read 4x faster; 36 GSA + 6 Omni2.5 GTCs and QC tables byte-identical to the pure path; tests/unit/test_core_kernels.py checks every kernel on edge cases. bench/profile_genotype.py, bench/scaling.py, cloud task p9 (thread scaling). Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01814GKVzZVL3FuF3DeiZXhv
21 lines
384 B
TOML
21 lines
384 B
TOML
[package]
|
|
name = "simurg-core"
|
|
version = "1.0.0"
|
|
edition = "2021"
|
|
license = "MIT"
|
|
description = "Compiled kernels for SimurgArray (plan §18 P9)"
|
|
publish = false
|
|
|
|
[lib]
|
|
name = "simurg_core"
|
|
crate-type = ["cdylib"]
|
|
|
|
[dependencies]
|
|
numpy = "0.29.0"
|
|
pyo3 = { version = "0.29", features = ["extension-module", "abi3-py312"] }
|
|
|
|
[profile.release]
|
|
opt-level = 3
|
|
lto = true
|
|
codegen-units = 1
|