Changelog
Additions
- Added type annotations to the entire code base, checked via
pyright. (#904) - Added support for reading and writing ClustalW
.alnalignment files via the newsequence.io.clustalsubpackage. (#880) - Added
structure.nucleotide_dihedral_backbone()andstructure.nucleotide_dihedral_side_chain()for measuring dihedral angles of nucleic acid structures. (#886) - Added optional
entity_idannotation toAtomArray, mirroringatom_site.label_entity_idfrom the mmCIF format. (#894) - Added
application.autodock.VinaApp.set_cpu(). (#904)
Changes
- Many performance-critical modules previously written in Cython are now implemented in Rust. (#814, #864, #867, #871, #873, #874, #876, #898)
- Currently the entire
structuresubpackage and parts of thesequencesubpackage are already migrated. - The
fastpdbpackage is now incorporated into Biotite asstructure.io.pdb - Massive performance improvements for many functionalities.
- Installation does not require a pre-existing Rust toolchain:
puccinialininstalls it temporarily if needed.
- Currently the entire
- Replaced the Conda-based development setup with a
pixisetup for a more ergonomic build and test workflow. (#901) - Dropped support for Python 3.11; the minimum supported version is now Python 3.12.
Fixes
structure.create_atom_names()now uses the element name for single-atom residues such as ions (e.g.CLinstead ofCL1). (#897)structure.filter_monoatomic_ions()is now more rigorous in identifying ions. (#887)structure.io.pdbx.set_structure()now emits a warning and writes a single bond as a fallback when intra-residue bonds areBond.ANYorBond.COORDINATIONinstead of raising. (#870)structure.io.pdbx.get_structure()now always assigns continuous atom IDs to theatom_idannotation. (#861)- Fixed missing intra-residue bonds for 'unknown' residue types when reading PDBx files. (#891)
- Fixed
structure.get_residue_starts()andstructure.get_chain_starts()missing the exclusive stop entry for empty atom arrays. (#889) - Fixed
KeyErrorinstructure.io.pdbx.get_structure()when the optionalpdbx_PDB_ins_codecolumn is missing. (#877) - Fixed
database.rcsb.StructureQueryso that queries for assembly IDs work as expected. (#872) structure.filter_polymer()now properly works withAtomArrayStack. (#866)- Fixed numeric altloc IDs being ignored when reading structure files. (#858)
- Fixed
UnboundLocalErrorraised in someAtomArrayoperations. (#857) - Fixed
application.openmm.from_topology()not parsingatom_id. (#893)