Changelog#
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
Unreleased#
v0.10.0 - 2026-04-14#
Added#
Geometric transformation methods to
Atom,Molecule,TemplateAtomandTemplate.Mat4class to store a transformation matrix in homogeneous coordinates.
Changed#
Bump minimum supported Limited API to Python 3.11 to use typed memoryviews.
Fixed#
Line tracing being enabled by default in Cython extensions.
v0.9.1 - 2025-12-22#
Added#
Documentation page with a command line interface reference.
Fixed#
Correct error type when calling
Hit.dumpwith aMoleculewhereidisNone(#9, by @RayHackett).Broken AUR
PKGBUILDnot working with Limited API wheels.
v0.9.0 - 2025-11-26#
Added#
Molecule.nameandMolecule.dateproperties exposing the metadata usually found in a PDBHEADERline.dumpanddumpsmethods toAtomandMolecule(#8, by @RayHackett).
Changed#
breaking: Turn
Hit.templateinto a function to support transforming template atoms into query reference frame (#7, by @RayHackett).Make
Hit.dumpwrite the element column (by @RayHackett).Move I/O logic and auxilliary classes to a dedicated
pyjess._iomodule.
Fixed#
Incorrect formatting of
chain_idwritten from anAtominstantiated with the API (by @RayHackett).
v0.8.0 - 2025-11-12#
Added#
Testing for Python 3.14.
ignore_endmdlparameter value in mmCIF parser to ignore models past the first one.dumpanddumpsmethods toTemplateandTemplateAtom(#5).
Fixed#
Parsing issues with CIF files (by @RayHackett).
Incorrect example use of the
pyjess.APIinREADME.md(#6).Broken format detection for PDB or mmCIF files starting with comment lines (and fix handling of non-seekable files).
v0.7.0 - 2025-09-13#
Added#
Command Line Interface with the same features as the Jess CLI.
Molecule.from_biopython,Molecule.from_biotiteandMolecule.from_gemmito create aMoleculewith objects from other libraries.Hit.dumpandHit.dumpsmethods to write a hit to PDB format.Molecule.loadoption to skip parsing ofHETATMfrom PDB files.Support for Selenocysteine and Pyrrolysine residues in
TemplateAtom.Support for parsing
Moleculeobjects from CIF files usinggemmi.
Fixed#
breaking: Incorrect handling of
max_candidatesinJess.query, causing PyJess to erroneously ignore some templates.Template.dimensionreporting incorrect numbers for identical residues across different residues.Issue with alignment of atom names in
TemplateAtom.Validate data in PDB parser to ensure it is not parsing a mmCIF file.
Parsing of mmCIF files with atoms missing occupancy values.
Incorrect alignment of
TemplateAtomnames for names of less than 4 characters.max_candidatescausingQueryto stop before reaching the actual number of maximum candidates.
Changed#
breaking: Set the
max_candidatesdefault value toNoneinJess.query, disabling max candidates filtering by default.breaking: Use string variants instead of
boolto control the behaviour ofignore_chainargument.breaking: Make
idandignore_endmdlarguments ofMolecule.loadandMolecule.loadskeyword-only.Use unrolled string comparison to compare atom names instead of
strcasecmpin Jess code.Make
altlocandinsertion_codearguments ofAtomoptional.Setup deployment of Limited API wheels for CPython 3.8 onwards.
Implement format detection between PDB and mmCIF in
Molecule.load.Implement
Template.copyandTemplateAtom.copyusing C-level API rather than Python copy.
v0.6.0 - 2025-09-01#
Added#
Several algorithmic optimizations to Jess, greatly improving runtime:
Use QuickSelect ($O(n)$) instead of QuickSort ($O(nlog(n))$) to select the medians used for space partitioning on k-d tree initialization.
Use approximate intersection on bounding boxes rather than exact code involving multiple annuli when querying the k-d tree for atoms.
breaking: Reorder the matching order of template atoms to reduce the amount of backtracking and k-d tree querying performed in the average and worst case.
reorderargument toJess.queryto support disabling template atom reordering if needed for Jess 1-to-1 consistency.
Changed#
Hardcode space dimensions to 3 to encourage compilers to unroll loops over dimensions.
Recycle memory between templates within a query to reduce total amount of allocation/deallocation in hot paths.
v0.5.2 - 2025-08-26#
Added#
pickleprotocol support toHitobjects.
Fixed#
Improve performance of residue index using binary search on name queries.
Avoid copying atoms in
Hit.atomsif no transformation is required.
v0.5.1 - 2025-08-20#
Fixed#
Typo in
Hit.moleculereturning incorrect coordinates when transformation is required.
Changed#
Implement an index to quickly access atoms by residue names in a
Molecule, and accelerate initial candidate set creation for compatible match modes.
v0.5.0 - 2025-04-09#
Fixed#
Remove invalid
platformkey frompyproject.toml.
Changed#
Hit.moleculeis now a method and can optionally rotate the hit molecule.
v0.4.1 - 2024-11-29#
Fixed#
TemplateAtom.__hash__implementation.
Changed#
TemplateAtom.residue_namesandTemplateAtom.atom_namesare now tuples.
v0.4.0 - 2024-11-29#
Added#
__eq__,__hash__,__copy__, and__reduce__toMolecule,Atom,Template,TemplateAtomandJess.
Changed#
Move project development stage from Alpha to Beta.
List
condasupport in the Install page of the documentation.
v0.3.3 - 2024-11-05#
Fixed#
Tests crashing on missing
importlib.resources.filesfunction.
v0.3.2 - 2024-11-05#
Added#
Support for Python 3.13.
Changed#
Use
scikit-build-coreto build the project.Use CMake to detect availability of
qsort_r/qsort_son the current platform.Use thread-local storage to support parallelism on platforms without
qsort_r.
Removed#
Support for Python 3.6.
v0.3.1 - 2024-07-18#
Changed#
Migrate documentation to
pydata-sphinx-theme.Make
Hit.evalueandHit.log_evaluerelease the GIL when possible.
Fixed#
Signatures of
__init__methods missing from all Cython types after thev3.0update.
v0.3.0 - 2024-06-11#
Added#
Slicing for
Template,MoleculeandJessobjects.
Fixed#
Typing for
chain_idproperty ofTemplateAtom.Query.__next__ignores and raises a warning onNaNmatrices caused by planar molecule coordinates.
Changed#
Make
Jessgeneric over the internal template class to allowTemplatesubclasses as inputs andHitoutputs attribute.Make
Molecule.conservedreturn an instance of the caller class rather than aMoleculeobject.
v0.2.1 - 2024-05-30#
Fixed#
Type hints for
Molecule.loadandTemplate.loadnot marked as accepting paths.Thread-unsafe use of
qsortin Jess code, replaced withqsort_rorqsort_sto allow multithreading.
v0.2.0 - 2024-05-24#
Added#
best_matchargument toJess.queryto only return the best match to each template for a query molecule.idargument toMolecule.loadandMolecule.loadsto allow overriding the PDB ID stored in the file.ignore_endmdlargument toMolecule.loadandMolecule.loadsto control whether the parser should stop at the first model in a file.
Changed#
Make
Molecule.loadstop at the first model when parsing a PDB file.
Fixed#
Invalid pointer assignments in
TessAtom.ccausing compilation errors on stricter compilers.
v0.1.1 - 2024-04-18#
Added#
Support for passing filenames to
Template.loadandMolecule.loaddirectly.Default initialization of empty
Jessobjects from an empty iterable.Make
Jessimplement theSizedabstract base class interface.
Changed#
Skip displaying default attribute values in
reprimplementation ofAtomandTemplateAtom.Make
Jess.queryoptional parameters keyword-only.
v0.1.0 - 2024-04-18#
Initial release.