Skip to content

Biotite 1.7.0

Latest

Choose a tag to compare

@padix-key padix-key released this 19 Jun 10:20
aa04b2c

Changelog

Additions

  • Added type annotations to the entire code base, checked via pyright. (#904)
  • Added support for reading and writing ClustalW .aln alignment files via the new sequence.io.clustal subpackage. (#880)
  • Added structure.nucleotide_dihedral_backbone() and structure.nucleotide_dihedral_side_chain() for measuring dihedral angles of nucleic acid structures. (#886)
  • Added optional entity_id annotation to AtomArray, mirroring atom_site.label_entity_id from 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 structure subpackage and parts of the sequence subpackage are already migrated.
    • The fastpdb package is now incorporated into Biotite as structure.io.pdb
    • Massive performance improvements for many functionalities.
    • Installation does not require a pre-existing Rust toolchain: puccinialin installs it temporarily if needed.
  • Replaced the Conda-based development setup with a pixi setup 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. CL instead of CL1). (#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 are Bond.ANY or Bond.COORDINATION instead of raising. (#870)
  • structure.io.pdbx.get_structure() now always assigns continuous atom IDs to the atom_id annotation. (#861)
  • Fixed missing intra-residue bonds for 'unknown' residue types when reading PDBx files. (#891)
  • Fixed structure.get_residue_starts() and structure.get_chain_starts() missing the exclusive stop entry for empty atom arrays. (#889)
  • Fixed KeyError in structure.io.pdbx.get_structure() when the optional pdbx_PDB_ins_code column is missing. (#877)
  • Fixed database.rcsb.StructureQuery so that queries for assembly IDs work as expected. (#872)
  • structure.filter_polymer() now properly works with AtomArrayStack. (#866)
  • Fixed numeric altloc IDs being ignored when reading structure files. (#858)
  • Fixed UnboundLocalError raised in some AtomArray operations. (#857)
  • Fixed application.openmm.from_topology() not parsing atom_id. (#893)