Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
411 commits
Select commit Hold shift + click to select a range
130297f
docs(data): describe linked apo release columns
Ninjani Aug 13, 2026
6d043a8
fix(loader): align batch collation with dataset items
Ninjani Aug 13, 2026
6e8b527
feat(core): add release table query API
Ninjani Aug 13, 2026
50754a8
chore: mypy fixes
OleinikovasV Aug 13, 2026
e7b5acd
refactor(scoring): slim holo scores and repair packed shards
Ninjani Aug 13, 2026
c13701a
refactor(clustering): publish only set-cover clusters
Ninjani Aug 13, 2026
0ae47ce
fix(index): preserve annotation query safeguards
Ninjani Aug 13, 2026
7a6c419
fix(clustering): validate Tanimoto score coverage
Ninjani Aug 13, 2026
96cb583
refactor(core): remove legacy archive unpacking
Ninjani Aug 13, 2026
2a281c9
refactor(data): remove retired splits and publish MMP pairs
Ninjani Aug 14, 2026
2124b94
fix(data): MMP pairs
Ninjani Aug 14, 2026
e248419
refactor(docs): generate reference tables from release metadata
Ninjani Aug 14, 2026
02c6eea
fix(docs): execute notebooks and escape table metadata
Ninjani Aug 14, 2026
c5b565e
feat(core): add protein interface reconstruction API
Ninjani Aug 14, 2026
a405448
fix(core): add reisdue index checks
Ninjani Aug 14, 2026
0e8bd37
docs: add & to PLINDER full form
Ninjani Aug 14, 2026
2bf4ea7
docs(data): document ligand and protein-interface access
Ninjani Aug 14, 2026
993c6b9
fix(pipeline): complete end-to-end scoring workflow
Ninjani Aug 14, 2026
0f81fca
refactor(index): separate entry metadata from ligand annotations
Ninjani Aug 14, 2026
e3ec9c1
fix(pipeline): handle empty ligand archive shards
Ninjani Aug 14, 2026
0b0f58e
docs(data): move entry fields to metadata descriptions
Ninjani Aug 15, 2026
b2f13c5
docs(data): validate release table schemas
Ninjani Aug 15, 2026
445f9a5
lint(clustering): apply formatter
Ninjani Aug 15, 2026
f03c975
fix(annotations): preserve oligomer ligands
Ninjani Aug 15, 2026
89707b6
fix(docs): reject stale interface cluster columns
Ninjani Aug 15, 2026
29ce749
fix(annotations): compute entry validation before export
Ninjani Aug 15, 2026
cf3a82f
lint(scoring)
Ninjani Aug 15, 2026
9e28472
docs(data): correct table and interface references
Ninjani Aug 15, 2026
cbcf831
fix(docs): remove splits for now
Ninjani Aug 15, 2026
ccb4ecc
docs: update pipeline.md
Ninjani Aug 15, 2026
28d014c
feat: add lightweight linked apo scoring
Ninjani Aug 15, 2026
569004a
fix: preserve predicted scoring metrics
Ninjani Aug 15, 2026
f59bbb7
fix: accept unavailable validation metrics
Ninjani Aug 16, 2026
ecd4fe9
fix: reconstructed mmCIF chain IDs
Ninjani Aug 16, 2026
d2bc849
fix: score custom assembly chain IDs
Ninjani Aug 16, 2026
404d922
chore: mute the docs before v3
OleinikovasV Aug 17, 2026
3b80780
Retain complete ligand pair similarity scores
Ninjani Aug 17, 2026
eb7bc8a
Allow plinder_link to score protein FASTA queries
Ninjani Aug 17, 2026
759d448
Publish complete similarity scores and PLI identity
Ninjani Aug 18, 2026
02b3fe2
feat: biotite filter heavy
OleinikovasV Aug 18, 2026
3c71b04
Fix clean-checkout structure test fixtures
Ninjani Aug 19, 2026
4f33c85
Expose custom scoring only as a Python API
Ninjani Aug 19, 2026
0f68657
feat(index): pick tables to join based on columns requested
Ninjani Aug 19, 2026
3f72bb4
refactor(index): split system validation from ligand annotations
Ninjani Aug 19, 2026
055c1d9
fix(index): join pocket membership to system validation
Ninjani Aug 19, 2026
3fd142e
refactor(data): remove duplicate ligand SMILES column
Ninjani Aug 19, 2026
dde9fb6
docs: split the column reference by tabl
Ninjani Aug 19, 2026
5cf6aee
test: update ligand SMILES
Ninjani Aug 19, 2026
cf595d3
refactor(data): move cluster columns to other query tables
Ninjani Aug 19, 2026
c27b0a1
docs: describe the release data layout
Ninjani Aug 19, 2026
0e0f886
fix(data): preserve annotation index on staging failure
Ninjani Aug 19, 2026
a97fe82
docs: correct score fields and chain join keys
Ninjani Aug 19, 2026
7b46997
docs: add the getting started guide
Ninjani Aug 19, 2026
f390786
docs: api
Ninjani Aug 19, 2026
4ab8671
docs: defer outdated evaluation and loader pages
Ninjani Aug 19, 2026
abe0122
docs: fix legacy page handling and release paths
Ninjani Aug 19, 2026
4a99ad0
chore: cleanup bird_id and stale cofactors.json
OleinikovasV Aug 19, 2026
891e9f2
fix(core): accept numpy values in table filters
Ninjani Aug 20, 2026
13fd110
feat(scoring): support subsetting PLINDER entry targets
Ninjani Aug 20, 2026
6de6e9f
fix(scoring): restrict entry subsets to scoreable chains
Ninjani Aug 20, 2026
85114ad
docs: expand the Python API reference
Ninjani Aug 20, 2026
2f18c33
docs: update the dataset reference
Ninjani Aug 20, 2026
43185c8
upgrade sanitize.py patch
OleinikovasV Aug 20, 2026
a64a17a
docs: reorganize notebooks
Ninjani Aug 20, 2026
f1ba6aa
fix(annotations): preserve author residue numbering
Ninjani Aug 20, 2026
e71b5e2
feat(data): add ligand pocket residue table
Ninjani Aug 20, 2026
54cd136
test(eval): update ligand SMILES fixture
Ninjani Aug 20, 2026
482f472
Merge custom scoring database packaging fixes
Ninjani Aug 20, 2026
4533763
chore: remove deprecated set_structure kwarg warning
OleinikovasV Aug 20, 2026
86efb1f
chore: sanitize comment
OleinikovasV Aug 20, 2026
9147abc
fix(data): include interaction-only pocket residues
Ninjani Aug 20, 2026
814c80b
fix(ci): align test image with current dependencies
Ninjani Aug 20, 2026
be41f80
fix(annotations): preserve connected composite ligand smiles
Ninjani Aug 20, 2026
67a73b7
fix(data): make annotation collation order
Ninjani Aug 20, 2026
f8c3e6b
feat: get latest BindingDB
OleinikovasV Aug 21, 2026
9a1f3dc
feat: improved local stereocheck for E/Z and @/@@
OleinikovasV Aug 26, 2026
7fc14b7
fix: consistent ligand handling, improved stereo check, covalent-SDF …
OleinikovasV Aug 27, 2026
a089591
fix: cif_bond consistency checking, avoid overbonding + chore: numpydoc
OleinikovasV Sep 7, 2026
1e96d0a
bug: covalent links mapping for multichar chainids
OleinikovasV Sep 8, 2026
b38cf12
chore: rdkit for vdw
OleinikovasV Sep 8, 2026
7ec4fa8
chore: get correct auth_seq_id
OleinikovasV Sep 8, 2026
b33dd22
ingest main-vs-custom (_finalize/_load_clean_atoms/_clear_ligand_file…
OleinikovasV Sep 8, 2026
034e674
chore: TODO for altloc occupancy vs first
OleinikovasV Sep 8, 2026
90c43f8
Merge pull request #123 from plinder-org/feat/public-api-docs-overhaul
OleinikovasV Sep 8, 2026
f989186
chore: reduce dead code in diffdock_utils
OleinikovasV Aug 12, 2026
5fb3567
feat: upgraded sanitize to handle CCD components
OleinikovasV Aug 12, 2026
ffb0dbd
chore: sanitize cleanup
OleinikovasV Aug 13, 2026
cfff7c2
chore: remove stale dir
OleinikovasV Aug 13, 2026
d30672f
Merge pull request #122 from plinder-org/feat/custom-structure-scoring
OleinikovasV Sep 8, 2026
1210b44
major ligand-centric update + docs temp fixes
OleinikovasV Aug 13, 2026
5fe4429
chore: mypy fixes
OleinikovasV Aug 13, 2026
7d5e702
chore: mute the docs before v3
OleinikovasV Aug 17, 2026
34981f8
feat: biotite filter heavy
OleinikovasV Aug 18, 2026
b8093f1
chore: cleanup bird_id and stale cofactors.json
OleinikovasV Aug 19, 2026
ea7d0ba
upgrade sanitize.py patch
OleinikovasV Aug 20, 2026
52597d4
chore: remove deprecated set_structure kwarg warning
OleinikovasV Aug 20, 2026
8efb422
chore: sanitize comment
OleinikovasV Aug 20, 2026
55ffb3d
feat: get latest BindingDB
OleinikovasV Aug 21, 2026
c26df4e
feat: improved local stereocheck for E/Z and @/@@
OleinikovasV Aug 26, 2026
f4b7702
fix: consistent ligand handling, improved stereo check, covalent-SDF …
OleinikovasV Aug 27, 2026
197232c
fix: cif_bond consistency checking, avoid overbonding + chore: numpydoc
OleinikovasV Sep 7, 2026
61d0155
bug: covalent links mapping for multichar chainids
OleinikovasV Sep 8, 2026
ac25dbf
chore: rdkit for vdw
OleinikovasV Sep 8, 2026
527a38a
chore: get correct auth_seq_id
OleinikovasV Sep 8, 2026
6fd5050
ingest main-vs-custom (_finalize/_load_clean_atoms/_clear_ligand_file…
OleinikovasV Sep 8, 2026
d0d274a
chore: TODO for altloc occupancy vs first
OleinikovasV Sep 8, 2026
93ffce5
fix: route MHFP6 through chemical-metric checks in set-cover planning…
OleinikovasV Sep 8, 2026
87efbda
Merge remote-tracking branch 'origin/feat/pinder-interface-ingest' in…
OleinikovasV Sep 8, 2026
c0cd095
Merge major_refactor into the integration branch (ancestry only)
OleinikovasV Sep 8, 2026
a91f899
feat: MHFP6 as ECFP4 analog across plan/docs/sidecar/flow; as_is cust…
OleinikovasV Sep 8, 2026
b2425d9
chores: major cleanup
OleinikovasV Sep 8, 2026
878441a
refactor: rename ligand_is_3d_score_able to ligand_is_shape_comparable
OleinikovasV Sep 8, 2026
69dffd9
feat: voronota chain_pair_contact_areas
OleinikovasV Sep 8, 2026
7070c84
feat: drop axis-duplicated ligand copies, parse crystallization pH ra…
OleinikovasV Sep 8, 2026
e4b9ddb
feat: chain modified residues and noncanonical SEQRES; note ligand-of…
OleinikovasV Sep 8, 2026
1e55005
feat: unresolved-atom lists for ligands and pocket residues from wwPD…
OleinikovasV Sep 8, 2026
a014925
feat: opt-in CCD template completion with NaN coordinates and is_unre…
OleinikovasV Sep 8, 2026
99b316c
feat: one residue address for covalent, modified and unresolved atoms…
OleinikovasV Sep 8, 2026
89ffd98
feat(core): make PlinderSystem release-aware
Ninjani Sep 10, 2026
e7a5507
feat(eval): add OST comparisons and PoseBusters validation
Ninjani Sep 10, 2026
b8a4065
fix(data): defer optional annotation dependencies
Ninjani Sep 10, 2026
0019428
feat(eval): prepare complete mmCIF predictions and select reference l…
Ninjani Sep 10, 2026
9932039
fix(eval): preserve ligand boundaries and validate ATOM-labelled chem…
Ninjani Sep 10, 2026
310285f
feat(eval): evaluate prediction folders with bounded multiprocessing
Ninjani Sep 10, 2026
4e13eb3
feat(eval): expose folder evaluation CLI with worker threads
Ninjani Sep 10, 2026
8ebdb99
fix(test): support Python 3.10 in evaluation packaging test
Ninjani Sep 10, 2026
43639d2
refactor(eval): remove legacy docking and analysis tools
Ninjani Sep 10, 2026
2f4f7e2
fix(ci): install evaluation dependencies and isolate cache test setup
Ninjani Sep 10, 2026
be1fa88
fix(chemistry): preserve aromatic bonds in ligand SDFs
Ninjani Sep 10, 2026
279e337
feat(eval): accept shared input tables and
Ninjani Sep 10, 2026
f1bfd2e
feat(eval): accept shared input tables and paired receptor-SDF files
Ninjani Sep 10, 2026
2d91b71
fix(search): use tolerant sanitization for supplied ligand SDFs
Ninjani Sep 10, 2026
d5c2b72
docs: add search and evaluation guides with shared input tables
Ninjani Sep 10, 2026
27f21cb
fix(ingest): retain cryo-EM reconstruction resolution
Ninjani Sep 11, 2026
10ffa18
fix(ingest): isolate chain and system validation failures
Ninjani Sep 11, 2026
b2fddb3
feat(ingest): expose assembly and interaction failure diagnostics
Ninjani Sep 11, 2026
bb3e6b9
fix(ingest): preserve unknown unresolved atom counts
Ninjani Sep 11, 2026
855e962
fix(ingest): include MHFP6 scoring in segmented ligand builds
Ninjani Sep 11, 2026
d585539
fix(ingest): respect annotation threshold overrides
Ninjani Sep 11, 2026
3b9eef7
feat(ingest): record validation settings
Ninjani Sep 11, 2026
c2900ae
fix(ingest): distinguish linker failures from
Ninjani Sep 11, 2026
06a4c4f
fix(ingest): record unsupported MMP chemistry without aborting
Ninjani Sep 11, 2026
131d0eb
refactor(ingest): remove obsolete annotation runners
Ninjani Sep 11, 2026
32322ab
feat(ingest): add native protein sequence clustering
Ninjani Sep 11, 2026
4352185
feat(ingest): add native protein structure clustering
Ninjani Sep 11, 2026
ef8d816
refactor(ingest): simplify protein clustering
Ninjani Sep 11, 2026
214dbf3
feat: CCD ligand DBs stage (components, ECFP4, MMP fragments, Rascal …
OleinikovasV Sep 11, 2026
f3348bf
Merge remote-tracking branch 'origin/major_refactor' into major_refactor
OleinikovasV Sep 11, 2026
c384461
refactor(ingest): remove obsolete helpers and redundant checks
Ninjani Sep 11, 2026
642e047
feat(data): expose protein cluster tables through the release API
Ninjani Sep 11, 2026
4adb233
chore: lint, format
OleinikovasV Sep 11, 2026
0d6e2c8
fix(ingest): refresh interface representatives before scoring plans
Ninjani Sep 11, 2026
bc7d9bb
Merge origin/major_refactor with ingest updates
Ninjani Sep 11, 2026
0571649
chore: rm dates.csv patch
OleinikovasV Sep 11, 2026
00cb8c7
fix(ingest): retain unknown-residue chains without structure
Ninjani Sep 11, 2026
9328632
fix(ingest): include CCD databases in segmented ligand builds
Ninjani Sep 11, 2026
9eb813b
fix(ingest): include CCD scoring settings in cache manifest
Ninjani Sep 11, 2026
1c373a2
fix(ingest): refresh cached entries missing chain modification annota…
Ninjani Sep 11, 2026
1fd1f54
fix(ingest): refresh cached ligand and entry
Ninjani Sep 11, 2026
1f80bc9
fix(ingest): support metadata
Ninjani Sep 11, 2026
b2d7f2e
chore: cleanup
OleinikovasV Sep 11, 2026
34d1b4a
fix(ingest): preserve apo chains without unnecessary ligand spatial work
Ninjani Sep 12, 2026
07efb1a
Merge origin/major_refactor with ingest fixes
Ninjani Sep 12, 2026
7dcf77f
feat(ingest): plan incremental updates from PDB snapshots
Ninjani Sep 12, 2026
a4a5afe
feat(ingest): prepare incremental entry updates safely
Ninjani Sep 12, 2026
f859f3b
refactor: consolidate shared helpers and remove unused code
Ninjani Sep 12, 2026
a6f7f8b
fix(ingest): simplify incremental updates and support ligand-free cha…
Ninjani Sep 12, 2026
3e5fa48
feat(ingest): update canonical ligand archives
Ninjani Sep 12, 2026
348826c
chore(ingest): reset format counters for the
Ninjani Sep 12, 2026
d14e112
feat(ingest): add resumable weekly release updates
Ninjani Sep 12, 2026
37d57ec
fix(ingest): invalidate changed release score caches
Ninjani Sep 12, 2026
101fb8e
fix(ingest): preserve direct Foldseek coordinate inputs
Ninjani Sep 12, 2026
7a029af
refactor: remove unused legacy code
Ninjani Sep 12, 2026
950fd13
refactor: consolidate annotation queries
Ninjani Sep 12, 2026
de067fa
refactor: simplify similarity score queries
Ninjani Sep 12, 2026
78dcd2f
fix: preserve score query inputs
Ninjani Sep 12, 2026
bc7203d
fix: reject scalar ligand ID strings
Ninjani Sep 12, 2026
5cf7cae
chore: refresh code quality tooling
Ninjani Sep 12, 2026
32f4dc7
fix: preserve coordinate dtypes and CI typing
Ninjani Sep 12, 2026
e59d8da
merge: sync major_refactor with main (Cloudflare R2 migration)
OleinikovasV Sep 21, 2026
8e524e7
feat(ingest): record protein contacts per assembly chain
Ninjani Sep 13, 2026
5f7672d
fix(ingest): drop clashing polymer symmetry copies
Ninjani Sep 21, 2026
c035372
perf(clustering): share directed-cover work across thresholds
Ninjani Sep 21, 2026
07f0270
feat(data): link apo chains to protein interfaces
Ninjani Sep 21, 2026
219b0ab
refactor(data): remove obsolete compatibility paths
Ninjani Sep 21, 2026
9315433
fix(scoring): distinguish unchecked ligand shape comparability
Ninjani Sep 21, 2026
559b1fb
chore:lint
Ninjani Sep 21, 2026
00393c0
feat: directional RascalParity score
OleinikovasV Sep 21, 2026
6ba9f02
Keep temporary search databases on local scratch
Ninjani Sep 21, 2026
5338853
Publish compact protein similarity scores
Ninjani Sep 21, 2026
6346304
chore: case-insensitive macOS test_ligand_sdf_pairing
OleinikovasV Sep 22, 2026
d066d88
Compress published alignment residue mappings
Ninjani Sep 22, 2026
7ceea82
Add chain residue overlap queries
Ninjani Sep 22, 2026
4b7c05c
Publish optional full-chain alignment CIGARs
Ninjani Sep 22, 2026
88a9644
Use 32 CPUs for protein search stages
Ninjani Sep 22, 2026
3fe09bf
Define ligand pocket residues by neighboring contacts
Ninjani Sep 22, 2026
c6356b3
Keep Metaflow ingest aligned with current pipeline
Ninjani Sep 22, 2026
38a220a
Skip Voronota for assemblies without interfaces or ligand pockets
Ninjani Sep 22, 2026
96548b8
Fix BindingDB affinity matching (issue #94)
Ninjani Sep 23, 2026
17be040
Merge remote-tracking branch 'origin/major_refactor' into feat/simple…
Ninjani Sep 23, 2026
65be511
chore:lint
Ninjani Sep 23, 2026
ea01d65
Handle unsupported CCD chemistry and make PARITY scoring optional
Ninjani Sep 29, 2026
8e0e5ff
Handle conjugated alkene stereo in MHFP6 fingerprints
Ninjani Sep 29, 2026
dd321d2
Reuse Foldseek database for protein structure clustering
Ninjani Sep 29, 2026
e0eaab1
Read public score alignments from CIGAR shards
Ninjani Sep 29, 2026
c6ec8b5
Fix ingest stage order and CLI override handling
Ninjani Sep 29, 2026
ac20f75
Reuse pocket alignments and cached ligand features during scoring
Ninjani Sep 29, 2026
4965cbc
Check Foldseek source manifests in parallel
Ninjani Sep 29, 2026
3abe8b2
Update ligand affinity tables for changed entries
Ninjani Sep 30, 2026
9ebd10b
chore: format
Ninjani Sep 30, 2026
c9b8f60
Support weekly search and per-backend E-values
Ninjani Sep 30, 2026
8c5331c
make compact score artifacts and speed up representative covers
Ninjani Sep 30, 2026
e676730
Fix shadowed custom search hits and remove unused PLI metric
Ninjani Sep 30, 2026
f1d4276
Keep weekly entry and ligand archive updates consistent
Ninjani Sep 30, 2026
20e2c49
Update weekly searches and assign changed entries to clusters
Ninjani Sep 30, 2026
f113772
Document compact scores and weekly cluster assignments
Ninjani Sep 30, 2026
74c4efc
Fix weekly cluster arithmetic and targeted interface score repair
Ninjani Sep 30, 2026
8de4819
Fix CI data dependencies and private API docs
Ninjani Sep 30, 2026
18d4312
fix: serve the 2026-09 release from R2 without a release-number prefix
tjduigna Sep 30, 2026
b975dd3
fix: accept any YYYY-MM release stamp on R2 and drop legacy 2024-06/v2
tjduigna Sep 30, 2026
9fe285d
ci: drop Docker and run tests directly on the runner
tjduigna Sep 30, 2026
df4c714
build: cap pandas below 3 until string/NA dtype changes are handled
tjduigna Oct 1, 2026
4f55068
fix: support pandas 3 string dtypes instead of capping pandas
tjduigna Oct 1, 2026
8344e7c
build: install everything from pyproject.toml with uv; drop requireme…
tjduigna Oct 1, 2026
14bde64
Merge remote-tracking branch 'origin/drop-docker' into release-date-p…
tjduigna Oct 1, 2026
2bc833d
fix: fetch protein score shards for lazy ligand similarity reconstruc…
tjduigna Oct 1, 2026
a3cc887
docs: execute all example notebooks against the 2026-09 release
tjduigna Oct 1, 2026
fcb9a01
fix: don't CIGAR-decode custom alignments that already carry residue …
tjduigna Oct 1, 2026
f67b308
ci: print notebook tracebacks when the docs build fails
tjduigna Oct 1, 2026
e0a3aae
build: stop committing uv.lock; resolve from pyproject.toml in CI
tjduigna Oct 2, 2026
ee23388
Merge remote-tracking branch 'origin/drop-docker' into release-date-p…
tjduigna Oct 2, 2026
8996f82
ci: install docs builds without uv.lock
tjduigna Oct 2, 2026
e2f654b
build: move the release version script to the repo root
tjduigna Oct 2, 2026
355e52b
Merge remote-tracking branch 'origin/drop-docker' into release-date-p…
tjduigna Oct 2, 2026
bfb2eae
Fix overlapping assembly copies and interface clustering
Ninjani Oct 2, 2026
4024193
Fix weekly release repair and update planning
Ninjani Oct 2, 2026
d0da6e3
Add monomer search and precomputed protein similarities
Ninjani Oct 2, 2026
08eab08
Separate public release artifacts from working ingest
Ninjani Oct 2, 2026
0e940ec
Fix release packaging and weekly update edge cases
Ninjani Oct 2, 2026
7cc72ee
Fix duplicate sequence ID columns in custom chain scores
Ninjani Oct 3, 2026
b0b087e
Merge remote-tracking branch 'origin/fix/major-refactor-bugs' into re…
tjduigna Oct 4, 2026
31b6dd2
fix: skip empty monomer search databases and narrow monomer batch index
tjduigna Oct 4, 2026
d689da8
fix: skip empty monomer sub-databases after chain selection
tjduigna Oct 4, 2026
1cd10a3
docs: describe the flat YYYY-MM release layout served from R2
tjduigna Oct 4, 2026
b37a5f9
fix: handle in-place release updates and empty monomer universes
tjduigna Oct 4, 2026
79f3883
docs: refresh R2 manifest facts and published cover families
tjduigna Oct 4, 2026
3473710
fix: serve releases directly from the Cameo file server
tjduigna Oct 8, 2026
facb939
update docs
Ninjani Oct 9, 2026
e6add68
Merge pull request #126 from plinder-org/release-date-prefix
tjduigna Oct 9, 2026
1ad218e
Remove Metaflow and fix release cutover control paths
tjduigna Oct 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
15 changes: 9 additions & 6 deletions .github/workflows/docs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,19 +28,22 @@ jobs:
uses: mamba-org/setup-micromamba@v1
with:
environment-file: environment.yml
create-args: python=3.10
create-args: python=3.12
init-shell: bash
cache-downloads: true
cache-environment: true
post-cleanup: all
- name: Setup uv
uses: astral-sh/setup-uv@v6
with:
enable-cache: true
- name: Install plinder
shell: bash -el {0}
run: UV_PROJECT_ENVIRONMENT="$CONDA_PREFIX" uv sync --inexact --extra docs
- name: Build docs
shell: bash -el {0}
id: build
run: |
which python
python -m pip install six
python -m pip install '.[docs,loader]'
sphinx-build docs build/docs
run: sphinx-build docs build/docs
- name: Upload build artifact
uses: actions/upload-pages-artifact@v3
with:
Expand Down
54 changes: 25 additions & 29 deletions .github/workflows/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ name: Package
permissions:
contents: write
id-token: write
packages: write
on:
push:
branches:
Expand All @@ -14,51 +13,48 @@ jobs:
name: Package
if: ${{ ! contains(toJSON(github.event.commits.*.message), '[skip ci]') }}
runs-on: ubuntu-latest
defaults:
run:
shell: bash -l {0}
steps:
- name: Checkout repo
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup python
uses: actions/setup-python@v5
- name: Setup micromamba
uses: mamba-org/setup-micromamba@v1
with:
python-version: "3.10"
- name: Configure docker
run: echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.repository_owner }} --password-stdin
- name: Install build and tag requirements
run: python -m pip install build semver
environment-file: environment.yml
create-args: python=3.12
init-shell: bash
cache-downloads: true
cache-environment: true
post-cleanup: all
- name: Setup uv
uses: astral-sh/setup-uv@v6
with:
enable-cache: true
- name: Install plinder
run: UV_PROJECT_ENVIRONMENT="$CONDA_PREFIX" uv sync --inexact
- name: Get version bump
id: get-tag
run: echo "bump=$(python flows/docker.py bump)" >> $GITHUB_OUTPUT
- name: Pull, build, tag, bump base image
if: steps.get-tag.outputs.bump != ''
run: python flows/docker.py pull --build --promote
- name: Build image
run: echo "bump=$(python version.py)" >> $GITHUB_OUTPUT
- name: Run tests
if: steps.get-tag.outputs.bump != ''
run: python flows/docker.py build
- name: Run tests against new image and save images
env:
PLINDER_OFFLINE: "true"
run: python -m pytest -n auto -v
- name: Tag release
if: steps.get-tag.outputs.bump != ''
run: |
python flows/docker.py test --push
if ! test -f reports/.coverage; then
echo "Missing test coverage reports (reports/.coverage). Not all tests have passed?"
exit 1
else
echo "Test coverage report found!"
fi
run: git tag ${{ steps.get-tag.outputs.bump }}
- name: Build distribution
run: python -m build
run: uv build
- name: Publish package distributions to PyPI
if: steps.get-tag.outputs.bump != ''
uses: pypa/gh-action-pypi-publish@release/v1
- name: Save git tag
if: steps.get-tag.outputs.bump != ''
run: git push origin ${{ steps.get-tag.outputs.bump }}
- name: Copy and surgery coverage
if: steps.get-tag.outputs.bump != ''
run: |
cp reports/.coverage .
sqlite3 .coverage "update file set path='src/' || substr(path, 40);"
- name: Post coverage comment
if: steps.get-tag.outputs.bump != ''
uses: py-cov-action/python-coverage-comment-action@v3
Expand Down
80 changes: 35 additions & 45 deletions .github/workflows/pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ name: CI Workflow
permissions:
contents: write
id-token: write
packages: read
pull-requests: write

concurrency:
Expand All @@ -23,67 +22,51 @@ jobs:
- name: Setup python
uses: actions/setup-python@v5
with:
python-version: "3.10"
python-version: "3.12"
- name: Install tox
run: pip install tox
- name: Run quality checks
run: tox -e py310-lint,py310-type
run: tox -e py312-lint,py312-type
- name: Directory Cache
uses: actions/cache@v4
with:
path: .tox
key: tox-${{ runner.os }}-3.10-${{ hashFiles('tox.ini') }}
key: tox-${{ runner.os }}-3.12-${{ hashFiles('tox.ini') }}
restore-keys: |
tox-${{ runner.os }}-3.10-
tox-${{ runner.os }}-3.12-

test:
name: Build and test docker image
name: Test
runs-on: ubuntu-latest
defaults:
run:
shell: bash -l {0}
steps:
- name: Checkout repo
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
fetch-depth: 0
- name: Configure docker
run: echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.repository_owner }} --password-stdin
- name: Get changed source files
id: changed-src
uses: tj-actions/changed-files@v41
- name: Setup micromamba
uses: mamba-org/setup-micromamba@v1
with:
files: src/**
- name: Get changed base image files
if: steps.changed-src.outputs.any_changed == 'true'
id: changed-base
uses: tj-actions/changed-files@v41
environment-file: environment.yml
create-args: python=3.12
init-shell: bash
cache-downloads: true
cache-environment: true
post-cleanup: all
- name: Setup uv
uses: astral-sh/setup-uv@v6
with:
files: dockerfiles/base/*
- name: Pull base image and build
if: steps.changed-src.outputs.any_changed == 'true' && steps.changed-base.outputs.any_changed == 'true'
run: python flows/docker.py pull --build
- name: Pull base image
if: steps.changed-src.outputs.any_changed == 'true' && steps.changed-base.outputs.any_changed != 'true'
run: python flows/docker.py pull
- name: Build image
if: steps.changed-base.outputs.any_changed == 'true' || steps.changed-src.outputs.any_changed == 'true'
run: python flows/docker.py build
- name: Run test image
if: steps.changed-base.outputs.any_changed == 'true' || steps.changed-src.outputs.any_changed == 'true'
run: |
python flows/docker.py test
if ! test -f reports/.coverage; then
echo "Missing test coverage reports (reports/.coverage). Not all tests have passed?"
exit 1
else
echo "Test coverage report found!"
fi
- name: Copy and surgery coverage
if: steps.changed-base.outputs.any_changed == 'true' || steps.changed-src.outputs.any_changed == 'true'
run: |
cp reports/.coverage .
sqlite3 .coverage "update file set path='src/' || substr(path, 40);"
enable-cache: true
- name: Install plinder
run: UV_PROJECT_ENVIRONMENT="$CONDA_PREFIX" uv sync --inexact
- name: Run tests
env:
PLINDER_OFFLINE: "true"
run: python -m pytest -n auto -v
- name: Post coverage comment
if: steps.changed-src.outputs.any_changed == 'true'
uses: py-cov-action/python-coverage-comment-action@v3
with:
GITHUB_TOKEN: ${{ github.token }}
Expand All @@ -101,12 +84,19 @@ jobs:
uses: mamba-org/setup-micromamba@v1
with:
environment-file: environment.yml
create-args: python=3.10
create-args: python=3.12
init-shell: bash
cache-downloads: true
cache-environment: true
post-cleanup: all
- name: Install Python requirements
run: pip install six ".[docs,loader]"
- name: Setup uv
uses: astral-sh/setup-uv@v6
with:
enable-cache: true
- name: Install plinder
run: UV_PROJECT_ENVIRONMENT="$CONDA_PREFIX" uv sync --inexact --extra docs
- name: Build the documentation
run: sphinx-build --fail-on-warning docs build/docs
- name: Show notebook errors
if: failure()
run: cat build/docs/reports/examples/*.err.log 2>/dev/null || true
9 changes: 7 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,7 @@ venv/
ENV/
env.bak/
venv.bak/
.claude

# Spyder project settings
.spyderproject
Expand All @@ -173,7 +174,6 @@ dmypy.json

# Cython debug symbols
cython_debug/
.metaflow/
# PyCharm
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
Expand All @@ -186,9 +186,14 @@ cython_debug/
*/*/DS_Store

src/plinder-data/plinder/data/artifacts
#src/plinder-core
*.bak*
*.1.*
tests/xx
tests/test_data/plinder/mount/systems/*/
tmp_foldseek
tmp_mmseqs
artifacts
logs/

# uv lockfile: not committed; CI resolves the latest versions allowed by pyproject.toml
uv.lock
20 changes: 8 additions & 12 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ exclude: |
(?x)^(
docs/.*png|
tests/test_data/.*|
src/plinder/data/utils/annotations/static_files/dates.csv|
private/.*ipynb
)$
repos:
Expand All @@ -15,15 +14,12 @@ repos:
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
- repo: local
# pinned ruff, so the hook does not depend on whichever ruff is first on PATH
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.9.4
hooks:
- id: ruff-format
name: ruff-format
entry: bash -c 'ruff format --force-exclude --preview src tests'
language: system
types: [python]
- id: ruff-linter
name: ruff-linter
entry: bash -c 'ruff check --fix src tests'
language: system
types: [python]
- id: ruff-format
files: ^(src|tests)/
- id: ruff
args: [--fix]
files: ^(src|tests)/
1 change: 1 addition & 0 deletions .python-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3.12
Loading
Loading