Skip to content

Fix progress bars, RCSB/FPSubSim2 robustness, and add dataset/API features - #15

Merged
OlivierBeq merged 73 commits into
masterfrom
dev
Aug 20, 2026
Merged

OlivierBeq merged 73 commits into
masterfrom
dev

Conversation

@OlivierBeq

Copy link
Copy Markdown
Owner

Summary

This PR brings master up to date with a large batch of work on dev: correctness fixes across download/conversion, RCSB matching, and FPSubSim2 similarity search; crash-safety and retry hardening for network/file operations; several new convenience APIs; and broad progress-bar/notebook UX fixes. It also adds substantial new test coverage.

New features

  • Add PapyrusDataset.download for per-dataset descriptor downloads
  • Add create_fp_subsim_search to the object-oriented (oop) API, documented in the advanced querying notebook
  • Add collect alias for aggregate
  • Add leave_level option to control QSAR/PCM progress bar behavior

Fixes

  • Fix legacy papyrus++ key breaking the conversion progress total
  • Fix read_protein_descriptors for a bare ProDEC Descriptor
  • Fix PDB ID case mismatch in SIFTS mapping
  • Fix RCSB cache path mismatch between write and read; switch RCSB cache to gzip (polars can't read xz)
  • Skip RCSB ligands with unparseable SMILES
  • Fix missing exit after an unknown fingerprint parameter in the fpsubsim2 CLI
  • Default FPSubSim2.create() fingerprint to Morgan instead of building all ~10 fingerprint types (was a ~5.6x slowdown trap)
  • Fix InChIKey/connectivity Binary decoding in FPSubSim2 mapping
  • Fix dangling node close and consolidated progress bar in sort_db_file
  • Fix pdbmatch progress total for papyrus++ datasets
  • Fix progress bar stuck/clamped at 100% during descriptor and xz/gz conversion
  • Prevent stuck progress bar widgets after early exit; always close progress bars in modelling.py
  • Fix tqdm ncols squashing/width issues in notebook progress bars (download conversion, structure loading, MolSupplier, similarity/substructure filters)
  • Remove MOE descriptor support (no longer available upstream)

Robustness & performance

  • Make FPSubSim2 creation/sorting, pdbmatch output, RCSB cache, and links/aliases cache + gz/xz conversion writes crash-safe
  • Retry POST requests and chunk-stream download failures instead of leaving truncated files/state
  • Bound desc_type='all' descriptor joins via ids and streaming; bound chunk memory and widen the chunk cell budget for wide descriptor-table conversion
  • Vectorize FPSubSim2 ID-to-mapping lookup for large hit counts; read parquet FPSubSim2 shards independently per worker
  • Report file conversion progress by row count; pass known row counts to lazy conversion progress bars
  • Skip re-downloading/re-extracting already-downloaded requirements archives; validate desc_type before downloading descriptors
  • Delete already-downloaded originals on lazy conversion when keep_original_files=False
  • Parse int-schema columns as float64 during conversion
  • Raise RCSB GraphQL chunk size to the API limit
  • Download structures before building the FPSubSim2 database (fixes build ordering)
  • Replace deprecated RDKit fingerprint functions with generators
  • Standardize neural network input features
  • Require the cupy[ctk] extra for GPU support

Docs & notebooks

  • Document create_fp_subsim_search in the advanced querying notebook
  • Update and refresh outputs for the simple examples and advanced querying notebooks

Tests

  • Substantially expanded coverage: FPSubSim2 end-to-end for every fingerprint type, fingerprint .get()/construction for every type, download chunk-stream retry/cleanup, keep_original_files/keep_xz forwarding, legacy papyrus++ key fallback, modelling progress-bar closure, neural network feature standardization, and more
  • Narrowed/scoped exception handling and warning suppression in several test suites to their actual failure modes rather than broad catches

🤖 Generated with Claude Code

@OlivierBeq
OlivierBeq merged commit 5916b49 into master Aug 20, 2026
22 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant