contributions

open-source contributions to scientific software projects

Aug 2026
merged

Restored backwards compatibility for input JSON written by AlphaFold 3 versions 3.0.0 through 3.0.3, which serialized empty template maps as "templateIndices": null and caused a TypeError when loaded in 3.0.4. Null values are now read as empty maps rather than passed directly to zip(). Also added strict=True to the zip call so mismatched queryIndices and templateIndices lengths raise instead of silently truncating. Merged with a refactor by Augustin Zidek. 2546145

Aug 2026
merged

Removed two unused tensors (disto_target and token_to_rep_atom) inherited from a training featurizer but never read by the inference forward pass, along with the _compute_disto_target helper (~40 lines). Added a regression test asserting the exact set of expected featurizer output keys. On an RTX 5080: GPU memory reduced from 155.1 to 16.8 MiB (~9x smaller), host-to-device copy time from ~9.8 to ~1.3 ms per batch (~7x faster). Merged by Nikhil Shenoy.

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; included in v3.0.4 release notes. 7b4c2a5

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

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.