contributions

open-source contributions to scientific software projects

Jul 2026
merged

Fixed a crash in folding_input.py where serializing a ProteinChain with an empty query_to_template_map caused a TypeError on deserialization. The list(values) or None pattern was converting empty lists to null, which then broke zip(queryIndices, None). Removed the or None clause so empty template maps serialize as [], consistent with how queryIndices is already handled. Merged by Augustin Zidek. 62136ec

Jul 2026
merged

Replaced two sequential einsum operations in OuterProductMean with a single fused three-way einsum, reducing peak intermediate tensor memory from ~256 MB to ~72 MB (3.56x reduction) with no throughput regression. Outputs verified numerically identical on an RTX 5080. Merged by Augustin Zidek with acknowledgment in planned v3.0.4 release notes. 7b4c2a5

Jun 2026
merged

Corrected four critical errors across bioinformatic analysis skills: replaced incorrect normal-distribution p-values in rnaseq-de with a proper Welch t-test (prior method had a 90.6% false discovery rate at n=3); fixed a flipped sign in the Gompertz age formula in proteomics-clock that caused a consistent +6.13-year bias; extended ORF detection in analyze-fasta from 3 forward frames to all 6 (enabling reverse-complement gene discovery); and added EM admixture convergence checking to genome-compare to prevent silent failures. Added unit tests and scipy dependency declaration.

Jun 2026
merged

Corrected the GF-matrix vibrational analysis implementation to use mass-weighted Cartesian coordinates. The prior code used unweighted coordinates, causing heavy atoms (Br, I, S) to artificially dominate eigenvalue calculations and misidentify soft conformational modes. Fix substantially reranks low-frequency modes in heavy-atom systems, e.g. 2-iodothiophene shifted from 3 to 5 correctly identified soft modes, with iodine displacement dropping from 59% to ~3%.

May 2026
merged

Ported the RDKit 2026.03 BFGS gradient-convergence denominator fix into nvMolKit's CUDA minimizer kernels, gated behind a version check to preserve compatibility with older RDKit builds. Applied to both the batched and per-molecule BFGS paths (bfgs_minimize.cu, bfgs_minimize_permol_kernels.cu).

May 2026
merged

Fixed a decade-old bug in the BFGS optimizer where negative energy values (common in MMFF94/UFF force fields) caused the convergence denominator to clamp to 1.0, artificially tightening gradient tolerance and triggering spurious "too many iterations" errors. Replaced funcVal with fabs(funcVal) in BFGSOpt.h and added a regression test covering always-negative energy trajectories.

May 2026
merged

Six targeted GPU performance and correctness improvements across independent subsystems: replaced sequential block reductions with warp-shuffle patterns in conformer RMSD (17→3 sync calls); switched TFD kernels to double-precision sqrt with division-by-zero guards; moved eigensolver buffer allocation to a persistent class member; introduced per-device similarity caching; preserved signed-energy reference behavior in BFGS; and fused Butina clustering GPU→CPU sync points from ~6 to 2 per iteration.

May 2026
merged

Fixed six distinct bugs across the RoseTTAFold-All-Atom codebase: initialized L_s/offset before use in multi-chain PDB parsing; removed a line in protein.py overwriting insertion counts with residue indices; corrected an undefined variable in Track_module.py's symmetry fitting; added a guard for empty-tensor torch.cat() in the refinement block; fixed a tensor shape mismatch from (L,1) to (1,L,1); and removed unreachable dead code in parsers.py.