Changelog
Additions
- Added support for Python 3.15. (#959)
- Added
biotite.application_v2, a redesign of the application interface. (#941)- An application is now a reusable handle to the installed software: A run is launched by calling a method with all its inputs, which returns a
Futurethat yields the result on demand. - Results are returned as typed dataclasses (e.g.
ClustalOmegaResult,VinaResult) instead of via a set of getter methods. - All applications from
biotite.applicationare ported, exceptBlastWebApp. - Added interfaces to MMseqs2 (
MMseqsApp) and Foldseek (FoldseekApp), including typed database objects and utility functions for conversion from and to Biotite objects.
- An application is now a reusable handle to the installed software: A run is launched by calling a method with all its inputs, which returns a
- Added the VTML substitution matrix family (VTML10 to VTML200) to the matrix database. (#941)
- Added the CLePAPS structural alphabet via
structure.alphabet.to_clepaps()andstructure.alphabet.ClepapsSequence, as well as the correspondingSubstitutionMatrix.std_clepaps_matrix(). (#681) - Added
structure.infer_bond_types()to determine the bond orders of aBondListcontainingBondType.ANYbonds, e.g. as returned bystructure.connect_via_distances(). (#940) - Added
structure.info.atomic_number()to obtain the atomic numbers of elements. (#940) - Added
structure.io.pdb.PDBFile.get_sequence()andstructure.io.pdb.get_sequence()to obtain the sequences fromSEQRESrecords. (#960) - Structure files with different atoms in each model can now be written by passing an iterable of
AtomArrayobjects toset_structure()ofstructure.io.pdb,structure.io.pdbxandstructure.io.gro. (#921) - Added
allow_duplicatesparameter tosequence.io.fasta.FastaFileandsequence.io.fastq.FastqFile, which makes duplicate headers unique by appending_1,_2, etc., e.g. to support A3M files. (#957) - All pairwise alignment functions accept a simple match/mismatch scoring scheme instead of a
SubstitutionMatrixand provide a fasterscore_onlymode. (#916) - Added
sequence.align.SeedExtensionas reusable and faster replacement foralign_local_ungapped(). (#916) - Added support for CIF files with indented category names. (#633)
- Improved performance of multiple functions
structure.io.pdbx.get_structure()withinclude_bonds=True(up to ~20x). (#956)structure.lddt()withsymmetric=True(~5x). (#955)structure.hbond(),structure.sasa(),structure.io.pdbx.set_structure()and indexing ofAtomArray/AtomArrayStack. (#936)structure.superimpose(). (#935)sequence.align.align_multiple(). (#927)
- Continued the migration of Cython modules to Rust. (#916, #918, #920)
- Migrated the pairwise alignment functions
align_optimal(),align_banded(),align_local_gapped(),align_local_ungapped()andalign_ungapped(). - Migrated
KmerTableandBucketKmerTable, which substantially reduces their memory footprint. - Migrated
KmerAlphabet,KmerSelector,PermutationandSimilarityRule.
- Migrated the pairwise alignment functions
Changes
structure.connect_via_distances()is now more robust, i.e. it finds fewer false negative/positive bonds and works for all elements. (#940)- The
distance_rangeparameter is deprecated and has no effect anymore; usetoleranceinstead.
- The
biotite.applicationis deprecated in favor ofbiotite.application_v2. (#941)- In the upcoming Biotite 2.0,
biotite.applicationwill be removed andbiotite.application_v2will be renamed tobiotite.application.
- In the upcoming Biotite 2.0,
sequence.align.align_local_ungapped()is deprecated in favor ofsequence.align.SeedExtension. (#916)sequence.io.fasta.FastaFileandsequence.io.fastq.FastqFilenow raise an exception when duplicate identifiers are read, unlessallow_duplicates=True. (#957)- Previously, the last record with some identifier silently overwrote previous records with the same identifier.
- The example gallery uses
biotite.application_v2and searches a local UniProtKB/Swiss-Prot database with MMseqs2 instead of NCBI BLAST. (#941)
Fixes
- Fixed
structure.dihedral_backbone()andstructure.nucleotide_dihedral_backbone()returning arbitrary angles instead of NaN across chain breaks. (#933) - Fixed
structure.create_atom_names()not accepting a list of elements anymore. (#917) - Fixed
structure.info.vdw_radius_protor()(and hencestructure.sasa()) deriving the element from the atom name, leading to wrong radii for e.g. selenium. (#938) - Fixed
CTGbeing translated to alanine instead of leucine in the genetic code tables 27-30. (#939) - Fixed lowercase bond orders and aromatic flags in
chem_comp_bondbeing ignored instructure.io.pdbx.get_structure()andstructure.io.pdbx.get_component(). (#952) - Fixed
interface.rdkit.to_mol()failing for structures containing deuterium. (#954) - Fixed ignore masks being incorrectly applied for spaced k-mers in
KmerTableandBucketKmerTable. (#918) - Fixed deleted annotations reappearing as zero-length arrays when an
AtomArrayis indexed. (#936)