mirror of
https://github.com/rdk/p2rank.git
synced 2026-06-04 12:44:24 +08:00
Bug fix: - PrincipalMomentsDescriptor.clampNonNegative now also clamps NaN. The v<0 check was false for NaN, so a NaN eigenvalue (possible if a future code path bypasses GridGenerator.isFiniteBox) would have propagated to the CSV output. Doc refresh: - breaking-changes.md: 2.6 entry for the multi-column descriptor migration + the -vis_pocket_grid / pocket_grid_vis_* renames. - export-pocket-descriptors.md: step 4 rewrites a self-contradicting rationale — adding to the default list IS a breaking change for index-based parsers; recommends parse-by-name + breaking-changes.md note for future additions. - export-pocket-grid.md: added "Adding a new per-grid-point descriptor" recipe (parallel to the per-pocket one); unified √3/2 precision to 0.866 across docs and Params.groovy. - README.md: added an "Opt-in tabular exports" subsection mentioning -export_pocket_descriptors, -export_pocket_grid, -vis_pocket_grid. - testsets.sh "Full descriptor menu" now lists all seven shipped descriptors (was six). Exception taxonomy: - PocketDescriptorsRows.groovy and PocketGridBuilder.java now throw PrankException (was IllegalArgumentException) for user-facing config errors, matching the rest of the codebase. Registry hardening: - Both PocketDescriptorRegistry and PocketGridPointDescriptorRegistry now assert columnNames.size() == columnTypes.size() in register(). A future descriptor with mismatched lists fails fast at class-load. Quality fixes: - PocketGridRows.getColumn uses BASE_COLS-1 instead of literal 3 for the pocket column. Removed dead 2-arg PocketGridRows constructor (only 3 test sites used it; now inlined). - PocketGridPointContext gets a compact-constructor validator that rejects negative pointIndex/pocketRank, limiting blast radius of an int-arg swap. Test hardening: - VolsiteSmoothGridPointDescriptorTest + VolsiteGridPointDescriptorTest now pin sigma/radius in @BeforeEach AND restore in @AfterEach, so the Params singleton is clean for subsequent test classes. - New tests: HIS ND1 double-flag (single atom setting donor+acceptor), PrincipalMoments at cardinality=2, PrincipalMoments two coincident points, GridGenerator NaN-box throw, PocketDescriptorRegistry register/unregister round-trip, MorphologicalCloser maxIters=1. - Renamed respectsMaxIters → maxItersZeroIsNoOp (the test only covered the maxIters=0 case despite the general name); added maxIters=1 companion that verifies one iteration of fill actually runs. - Extracted RendererTestFixtures.tinyGrid (was byte-identical in both renderer test files); unified the volsite atomAt signatures so the parameter order can't get swapped between the two volsite tests.
111 lines
4.3 KiB
Markdown
111 lines
4.3 KiB
Markdown
|
|
## Breaking changes
|
|
|
|
### Introduction
|
|
|
|
This file collects backwards incompatible changes that have potential to break code that uses P2Rank.
|
|
|
|
These include:
|
|
|
|
* changes in the command line interface
|
|
* changes in the input/output format
|
|
* changes in default behaviour
|
|
|
|
All changes of that type should be rare and should be all listed here.
|
|
|
|
## List of changes
|
|
|
|
### 2.6
|
|
|
|
###### Evaluation
|
|
|
|
* Ligand detection was fixed (`e7fc457f`) to include nucleotide ligands (GDP, GTP, ATP — classified by BioJava as `NUCLEOTIDE`)
|
|
and amino-acid-derivative ligands (SHR-like — classified as `AMINOACID`) that were previously skipped because only
|
|
`GroupType.HETATM` qualified. Any non-water group in a NONPOLYMER chain now qualifies regardless of GroupType.
|
|
This changes the relevant-ligand set on datasets containing such ligands, which moves DCA/DCC numerator and denominator
|
|
and thus the reported success rates.
|
|
* For additional internal evaluation-criterion fixes during the 2.6 dev cycle see
|
|
[`documentation/dev/evaluation-metric-fixes-2.6.md`](documentation/dev/evaluation-metric-fixes-2.6.md).
|
|
|
|
###### Pocket-descriptors export (opt-in feature)
|
|
|
|
* Per-pocket descriptors `-export_pocket_descriptors` underwent a multi-column interface migration. The shipped default
|
|
list now contains **seven** descriptors (previously six), adds `principal_moments` (a 3-column descriptor emitting
|
|
`principal_moments.lambda1/lambda2/lambda3`), and reorders the existing six so `num_*` come first.
|
|
Scripts parsing the descriptors CSV/Arrow/Parquet output by **column name** are unaffected;
|
|
scripts parsing by **column index** need updating. See [`documentation/export-pocket-descriptors.md`](documentation/export-pocket-descriptors.md).
|
|
* New opt-in `-vis_pocket_grid` (renamed from `-export_pocket_grid_pml`) emits both PyMOL `.pml` and ChimeraX `.cxc`
|
|
overlay scripts. The two viz-tuning knobs were renamed for namespace consistency:
|
|
`pocket_grid_vis_volume_radius` → `vis_pocket_grid_volume_radius` and
|
|
`pocket_grid_vis_gaussian_iso` → `vis_pocket_grid_gaussian_iso`. Old names hard-fail at startup with no aliases.
|
|
|
|
### 2.5.1
|
|
|
|
none
|
|
|
|
### 2.5
|
|
|
|
none
|
|
|
|
### 2.4.2
|
|
|
|
none
|
|
|
|
### 2.4.1
|
|
|
|
###### Prediction
|
|
|
|
* Scripts that execute P2Rank (shell script `distro/prank` and `distro/prank.bat`) no longer redirect log (***stderr*** stream) to the file `distro/log/prank.log`.
|
|
Instead, they write ***stderr*** to the console. This was done to avoid P2Rank writing to the installation directory by default, which may be forbidden on some systems.
|
|
See issue #59.
|
|
|
|
###### Training new models
|
|
|
|
* Type of parameter `-ignore_het_groups` changed from `Set<String>` to `List<String>`
|
|
|
|
|
|
|
|
### 2.4
|
|
|
|
###### Prediction
|
|
|
|
none
|
|
|
|
###### Training new models
|
|
|
|
* Removed deprecated parameters `-conservation_origin` and `-load_conservation_paths`
|
|
|
|
### 2.3
|
|
|
|
###### Prediction
|
|
|
|
none
|
|
|
|
###### Training new models
|
|
|
|
* parameter `-extra_features` was renamed to `-features`
|
|
* command line format of parameters values with type `List<String>` and `List<List<String>>` has changed
|
|
* now only comas `,` are delimeters and inner parentheses are respected
|
|
* before `.` was used as an alternative delimeter and delimeter for inner lists, now it is part of element value
|
|
* Examples:
|
|
* `'(a.b.c)'` was interpreted as list of 3 elements, now it defines list of 1 element: `a.b.c`
|
|
* list of lists value `'((a.b.c),(d.e))'` should be changed to `'((a,b,c),(d,e))'`
|
|
* Changes in `csv_file_feature`
|
|
* renamed to `csv`
|
|
* introduced parameter `-feat_csv_columns` (type: `List<String>`).
|
|
Names of enabled value columns from csv files must be listed here.
|
|
Columns not listed are ignored.
|
|
* Example: if you were working with one directory of csv files with one value column named `pdbekb_conservation`,
|
|
you must now run the program with `-feat_csv_columns '(pdbekb_conservation)'`
|
|
* introduced parameter `-feat_csv_ignore_missing` (type: `boolean`, default: `false`). If true, then feature ignores:
|
|
* missing csv files for proteins
|
|
* missing value columns
|
|
* missing rows for atoms and residues
|
|
|
|
|
|
|
|
### 2.2
|
|
|
|
* parameter `-conservation_dir` (type: `String`) was renamed to `-conservation_dirs` (type: `List<String>`)
|
|
* column `probability` was added to `*_predictions.csv` output file
|