Skip to content

Major refactor - #118

Merged
tjduigna merged 411 commits into
mainfrom
major_refactor
Oct 9, 2026
Merged

tjduigna merged 411 commits into
mainfrom
major_refactor

Conversation

@OleinikovasV

@OleinikovasV OleinikovasV commented Apr 8, 2026 •

Copy link
Copy Markdown
Member

Reduce external dependencies to reduce support conflicts - eliminates explicit use of

  • mmcif --> biotite
  • gemmi --> biotite
  • openbabel --> rdkit
  • networkx --> networkit
  • plip --> peppr
  • ost (only used in eval) --> biotite
  • posebusters (only eval)

Adds:

  • peppr
  • voronotalt

Bugfixes:

Closes:

Features:

  • Allows parsing any cif files with Entry.from_custom_cif_file
  • add test for from_custom_cif_file from RNP
  • Better handling of counts for pocket residues, interactions etc only considering proper ligands
  • Release date fix (needs data regen)
  • install cleanly to macOS
  • upgrade to new posebusters
  • upgrade base to python 3.12
  • clean up docs

Other changes:

  • Changing License to Apache-2.0

  • Redefined systems: merging upon shared pocket residues (min 3), only artifacts added by 4A cutoff (like before), any polymer < 12 units is considered ligand (based on mmseqs search limit)

  • uses biotite bt_info as the source truth for CCD ligand definition, to generate smiles, etc

  • Ingests and collates protein–protein interfaces alongside ligand systems.

  • Adds PRODIGY interaction and affinity annotations.

  • Calculates and exports whole-interface and chain-side similarity scores.

  • Adds representative clustering for whole and half interfaces.

  • Supports interface-only repair and resumable ingest.

  • Preserves chains discovered during interface processing in shared sidecars.

  • Parallelizes interface collation and enforces a shared interface-residue cutoff

  • Uses pinder test cases to ensure correct functionality


  • Adds end-to-end scoring of custom mmCIF structures against plinder.
  • Supports deposited-PDB and as-provided structure modes, including biological assemblies.
  • Produces valid, self-contained mmCIF query exports for Foldseek and downstream reconstruction.
  • Supports coordinate-only and incomplete third-party CIF files with clear validation errors.
  • Allows ligand chemistry to be supplied using SMILES or CCD codes.
  • Preserves ligand bonds, atom mapping, and stereochemistry in generated ligand files.
  • Packages portable public scoring assets and search databases.
  • Avoids retaining or rescanning unnecessary raw alignment outputs.
  • Adds ligand representative centrality annotations.

  • Split all tables to not have duplicated rows, and automatic query_table() joins to make the underlying tables behave as though they are one from the API
  • Streamlined downloads.
  • Linked-apo selection and reconstruction.
  • Custom scoring including ligand-free CIF and protein FASTA scoring, aligned pocket residues, and pli_fident.
  • Protein-interface reconstruction.
  • Set-cover-only clustering, protein clusters.
  • Removal of legacy splits, the nonredundant annotation table, old archive unpacking, and associated compatibility APIs.
  • Update all docs markdown and notebooks to latest release features

@github-actions

github-actions Bot commented Apr 8, 2026 •

Copy link
Copy Markdown

Coverage report

Warning

The diff for this PR is too large to be retrieved from GitHub's API (maximum 300 files). Diff coverage is not available for this PR.

Click to see where and how coverage changed
FileStatementsMissingCoverageCoverage
(new stmts)
Lines missing
  src/plinder
  _version.py
  src/plinder/core/index
  system.py
  utils.py
  src/plinder/core/loader
  utils.py
  src/plinder/core/scores
  ligand.py
  query.py
  src/plinder/core/structure
  atoms.py
  smallmols_similarity.py
  smallmols_utils.py
  structure.py
  src/plinder/core/utils
  config.py
  cpl.py
  io.py
  schemas.py
  src/plinder/data
  __init__.py
  clusters.py
  databases.py
  docs.py
  get_system_annotations.py
  src/plinder/data/pipeline
  config.py
  io.py
  pipeline.py
  tasks.py
  transform.py
  utils.py
Project Total  

The report is truncated to 25 files out of 31. To see the full report, please visit the workflow summary page.

This report was generated by python-coverage-comment-action

@OleinikovasV
OleinikovasV requested a review from Ninjani April 10, 2026 17:09
@OleinikovasV
OleinikovasV changed the base branch from custom_cif to main May 13, 2026 08:29
@OleinikovasV OleinikovasV added bug Something isn't working documentation Improvements or additions to documentation enhancement New feature or request labels May 13, 2026
tjduigna and others added 26 commits October 1, 2026 15:19
…tion

Published CIGAR shards omit alignment scores, so Scorer.load_alignments reads
the matching exports/protein_similarity_scores shard. prefetch only downloaded
the CIGAR shards, so reconstruct_similarity_scores failed on a lazily
populated cache. Register the score shard as a release path and fetch it when
include_protein_scores=True (used by ligand reconstruction only).
- drop the PLINDER_RELEASE=2026-07 / PLINDER_RELEASE_NUMBER=1 overrides so
  notebooks use the default release and download lazily from R2
- remove the notebook execution skip list
- install docs builds with uv sync --locked --extra docs into the Conda env
  (OpenStructure and MMseqs2 are needed by the evaluation and search notebooks)
…numbers

Custom-scoring alignments keep their CIGAR column but are already mapped to
query/target residue numbers. load_alignments only checked for decoded
positions, so it tried to decode them, which needs a release chain lookup the
custom scorer doesn't have (ValueError: CIGAR alignments require a chain
lookup). Found by executing docs/examples/custom_scoring.ipynb.
CI now tests the dependency set users get from pip, catching upstream
breakage early rather than through a lockfile that must be refreshed.
…lease-date-prefix

# Conflicts:
#	src/plinder/core/release.py
- make_sub_dbs now also builds monomer databases whenever holo is built; when
  no monomer chains exist (e.g. the end-to-end test entry) linclust segfaults
  on the empty database. Skip monomer databases with no chains; downstream
  bundling already treats them as optional.
- check query_batch_index is not None so mypy can narrow the batch slice.
The end-to-end entry has monomer chains, but none are selected into the
MMseqs sub-database, so the chain-count check in make_sub_dbs never fired and
linclust still crashed. Check the selected database instead and skip
clustering an empty monomer universe; revert the earlier chain-count check.
- README, getting-started and migration pages now point at 2026-09 on
  plinderdata.org instead of 2024-06/v2 and the release-number layout
- regenerate the release tree in docs/dataset.md from the published manifest
  (adds protein_clusters, ligand_pocket_residues, apo/interface_apo CIGARs and
  the manifest; drops ligand_archives/manifest.json and per-fragment
  ligand_scores)
- document the manifest builder's prefix argument and the publish order /
  Cache-Control needed for manifest updates
- directory downloads drop cached Parquet files the release no longer lists,
  so dataset readers never mix removed fragments (e.g. the 290 old
  ligand_scores files removed from 2026-09) with their replacements
- skipping an empty monomer sub-database also retires an earlier build, so a
  stale monomer target is never published as current
- custom scoring treats monomer search databases as optional per backend, and
  public_release no longer requires monomer artifacts, matching the pipeline
- monomer chain masks cast fillna results to bool for pandas 3
- build_r2_manifest skips a root folder placeholder; clarify its prefix
  argument
Serve the 2026-09 release from Cameo and execute all docs notebooks against it
Remove the Metaflow runners, legacy configs, and graph tests. Keep the ingest
config examples under scripts/slurm and document supported set-cover commands.

Allow compound residue-table joins with shared base identifiers, use unique
atomic SDF extraction files, finalize empty ligand 3D plans, preserve metadata-only
weekly updates on resume, and validate mapping drops against the protein plan.
These changes leave hosted release artifacts and scientific calculations intact.

Validation: 248 tests passed; 15 tests needing native Foldseek/MMseqs executables
were excluded. All pre-commit checks and Slurm command checks passed. Mypy reports
the same 158 existing errors as the original PR head in the local environment.
@tjduigna
tjduigna merged commit a59a886 into main Oct 9, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working documentation Improvements or additions to documentation enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants