Skip to content

Releases: biotite-dev/biotite

Biotite 1.6.0

22 Jan 16:45
f29c22d

Choose a tag to compare

Changelog

Additions

  • Added support for Linux ARM 64 (aarch64) builds. (#851)
  • Added structure.filter_heavy() to filter non-hydrogen atoms. (#845)
  • Added sequence.io.fasta.get_a3m_alignments() and sequence.io.fasta.set_a3m_alignments() for reading and writing alignments in A3M format. (#848)
  • Improved performance for database.rcsb.fetch()
    • Added support for gzipped downloads via new gzip parameter. (#841)
    • Fetching multiple entries uses a persistent HTTP connections to speed up multiple consecutive downloads. (#842)
    • Removed time consuming error response checking. (#852)
  • Improved efficiency of structure.filter_intersection(). (#849)

Changes

  • String representations of structure.AtomArray and structure.AtomArrayStack are now abbreviated to improve readability for large structures. (#835)

Fixes

  • Fixed structure.find_stacking_interactions() and find_pi_cation_interactions() somteimes miss interaction. (#839)
  • Fixed unnecessary numpy.ndarray initialization when and structure.AtomArray or structure.AtomArrayStack is indexed. (#840)
  • Fixed structure.io.pdbx.get_assembly() removing inter-chain bonds. (#843)
  • Fixed compatibility with numpy >= 2.4. (#850)

Biotite 1.5.0

15 Oct 14:39
805ecb5

Choose a tag to compare

Changelog

Additions

  • Added support for Python 3.14. (#830)
  • Added structure.dihedral_side_chain() analogous to dihedral_backbone(). (#827)
  • Added structure.get_all_residue_positions() and structure.get_atom_name_indices() to residue level functionalities. (#827)
  • Expanded list of 'water' residue names in structure.filter_solvent(). (#832)

Changes

  • structure.io.pdbx.get_structure(use_author_fields=False) assigns an incrementing res_id for hetero residues instead of -1. (#823)
    • Previously in edge cases assigning -1 to hetero residues lead to missing distinction of subsequent residues. (#553)
  • A different res_name is not used anymore to distinct two subsequent residues in the residue-level functionalities. (#825)
    • Previously, if two altlocs of the same residue had a different res_name, both would be incorrectly kept. (#824)

Fixes

  • Fixed reading BCIF files written by py-mmcif in structure.io.pdbx.BinaryCIFFile. (#833)
  • structure.io.pdbx.BinaryCIFData.array is now writable if it was encoded only with ByteEncoding. (#833)
  • Fixed issue where for some invalid UniProt IDs database.rcsb.fetch() would still downloaded another entry. (#833)
    • For example instead of the invalid A0A12345, A0A123 would have been downloaded.
  • structure.io.pdb.get_structure() now only infers bonds from CCD for proteins and nucleic acids, not for other ligands. (#820)
    • This allows using residue names for compounds that clash with the compound names in the CCD without getting wrong bonds.

Biotite 1.4.0

07 Jul 11:39
ae894b0

Choose a tag to compare

Changelog

Additions

  • Added structure.find_pi_cation_interactions() to identify pi-cation interactions in a structure. (#810)
  • Added more convenient bond type conversion methods for structure.BondList objects. (#808)
    • remove_kekulization() changes AROMATIC_<order> bonds to generic AROMATIC bonds.
    • convert_bond_type() maps the given bond type to a new bond type.

Changes

  • Deprecated include_bonds parameter in structure.io.pdbx.set_structure(). (#804)
    • Intra-residue bonds are now always written to chem_comp_bond category.
  • interface.rdkit.from_mol() writes the altloc into the altloc_id annotation
    instead of label_alt_id. (#807)

Fixes

  • Fixed altloc filtering in structure.io.pdbx.set_structure() for PDBx files where each atom has an altloc. (#806)
  • Fixed warning in structure.lddt() that was raised, if no contact exists. (#811)
  • Fixed selection parameter interface.pymol.PyMOLObject methods that errored if a slice index was passed. (#801)
  • Fixed the amount parameter in structure.repeat_box_coord() not being used. (#800)
  • Fixed spurious bonds added to the structure returned by structure.io.pdb.PDBFile.get_structure(). (#810)
    • Appeared when an altloc atom that participated in a non-canonical bond, was removed during parsing.
  • Fixed exception in structure.io.pdb.PDBFile.get_assembly(), if the file contains multiple assemblies. (#810)

Biotite 1.3.0

14 May 06:58
6dc52bc

Choose a tag to compare

Changelog

Additions

  • Added support for parsing unit cells. (#778)
    • Added structure.space_group_transforms() to get transformations for a given space group.
    • Added structure.io.pdbx.get_unit_cell() to get AtomArray/AtomArrayStack that represents the entire unit cell.
    • Renamed structure.io.pdb.get_symmetry_mates() to structure.io.pdb.get_unit_cell().
    • The sym_id annotation array is also considered when determining chain starts. (#786)

Changes

  • structure.io.pdb.PDBFile.get_symmetry_mates() and structure.io.pdb.get_symmetry_mates() are now deprecated in favor of get_unit_cell(). (#778)
  • Removed support for Python 3.10.

Fixes

  • Fixed integer overflows/underflows leading to potentially corrupted BinaryCIF files. (#783, #796)
    • Only affects cases where the Encoding is either manually set or it is set by structure.io.pdbx.compress() before writing the file.
    • Now structure.io.pdbx.Encoding.encode() always checks if the target data type is compatible with the values.
    • structure.io.pdbx.compress() will fallback to direct ByteArrayEncoding if the data type is incompatible with FixedPointEncoding.
  • Fixed occasionally missing bonds in structure.io.pdbx.get_structure(altloc='occupancy'). (#781)
  • Fixed missing support for PDBx files containing multiple operation expression per assembly in structure.io.pdbx.get_assembly(). (#792)

Biotite 1.2.0

16 Mar 08:08
5465b75

Choose a tag to compare

Changelog

Additions

  • Added interfaces to other packages in the bioinformatics ecosystem via the new interface subpackage. (#762)
    • interface.rdkit allows conversion between AtomArray and Mol objects from the RDKit package. (#736, #741, #742)
    • interface.pymol allows conversion between AtomArray and PyMOL objects, supporting NumPy-style indices as atom selections. (#749)
    • interface.openmm allows conversion between AtomArray and OpenMM Toplology, System and State objects. (#750)
  • Added database.alphafold subpackage for accessing structures from AlphaFold DB. (#492)
    • The IDs of computational models obtained via database.rcsb.search() can be passed directly to database.alphafold.fetch().
  • Added new metrics for measuring similarity of two structures.
    • structure.lddt() computes the Local Distance Difference Test and can be highly customized with filtering and binning options. (#699)
    • structure.tm_score() computes the TM-score. Curresponding structure alignments can be performed with superimpose_structural_homologs(). (#705)
  • Added functions related to aromatic rings. (#751)
    • structure.find_aromatic_rings() finds atom indices of aromatic rings in a structure.
    • structure.find_stacking_interactions() finds pi-stacking interactions between aromatic rings.
  • Added structure.BondType.AROMATIC bond type, for bonds where the kekulized form is unknown. (#738)
  • structure.info.residue() and structure.io.pdbx.get_component() now support chemical components without valid coordinates. (#730)
  • label_entity_id annotation can now be written to PDBx files via structure.io.pdbx.set_structure(). (#732)
  • structure.info.vdw_radius_single() now supports more elements. (#745)
  • Improved performance of structure.spread_residue_wise() and structure.spread_chain_wise(). (#770)

Fixes

  • Now only finite coordinates can be given to structure.CellList() (#733).
  • Fixed structure.array() truncating string annotations. (#755)
  • structure.io.pdbx.get_structure() with include_bonds=True is now much faster and more memory efficient for very large structures. (#765)
  • Fixed serialization (and string representation) of structure.io.pdbx.CIFBlock objects raising an exception. (#767)
  • Now structure.io.mol.set_structure() checks if the input coordinates fit into the fixed number of columns in MOL/SDF files. (#772)
  • The height of letters in sequence.graphics.plot_feature_map.plot_sequence_logo() is now more accurate. (#769)

Biotite 1.1.0

22 Jan 16:41
e76eb24

Choose a tag to compare

Changelog

Additions

  • Support for Python 3.13 (#661).
  • Support for structural alphabets that encodes geometric information from structure.AtomArray objects in sequence.Sequence objects.
    • structure.alphabet.to_3di converts a structure into a 3Di sequence from Foldseek. (#665)
    • structure.alphabet.to_protein_blocks() converts a structure into a Protein Blocks sequence. (#676)
    • Added color schemes and defailt sequence.align.SubstitutionMatrix for these structural alphabets. (#682)
  • Support for positional substitution matrices. (#655)
    • sequence.PositionalSequence acts as a placeholder sequence for a sequence profile in alignment functions from sequence.align.
    • sequence.align.SubstitutionMatrix.as_positional() expands a substitution matrix into a positional substitution matrix.
  • New functionalities for structure.io.pdbx:
    • Custom annotations can be written with set_structure() with extra_fields=True. (#669)
    • Missing columns in atom_site category are now handled by using sensible default annotations. (#670)
    • Added compress() function that automatically finds optimal encodings for BinaryCIFFile, decreasing the file size by a factor of approx 8x. (#674)
    • get_assembly() now adds a sym_id annotation to better distinguish copies of the asymmetric unit. (#700)
  • Added PDBFile.get_space_group() and PDBFile.set_space_group() to read and write the space group information. (#707)
  • Added structure.concatenate(), which supports concatenating more than AtomArrayStack objects. (#712)
  • Performance improvements:
    • Doubled speed to parsing CIF files with structure.io.pdbx.CIFFile (#722).
    • Tripled speed of pickling sequence.align.KmerTable objects. (#664)
      • Speed of transferring sequence.align.KmerTable between processes improves likewise.

Changes

  • structure.io.pdbx.set_structure() does not write 'canonical' bonds to struct_conn category anymore. (#678)
  • The internal Chemical Component Dictionary is not version controlled anymore. (#687, #716)
    • For installations from local repository clones, it must be built with python -m biotite.setup_ccd.

Fixes

  • structure.io.pdbx can now handle atom_site categories with quoted values containing whitespaces. (#673)
  • nan values in structure.AtomArray now count as equal when comparing AtomArray objects. (#714)
  • Fixed wrong band calculation in sequence.align.align_banded() that occurred when the given band was outside the sequence bounds. (#723)
    • This lead to premature traceback termination in rare cases.

Biotite 1.0.1

02 Sep 08:32
0f02222

Choose a tag to compare

Changelog

Fixes

  • Fixed structure.AtomArray.chain_id having the chain ID restricted to 4 characters. (#643)
  • Fixed corrupted category parsing in structure.io.pdbx.CIFFile, when a multiline value contains a quote character. (#651)
  • Fixed duplicate bonds written to chem_comp_bond category, when include_bonds=True is set in structure.io.pdbx.set_structure(). (#653)
  • Fixed non-deterministic altloc atom selection by occupancy, if two altlocs have the same occupancy. (#649)
  • Fixed the version switcher in the documentation showing the latest version twice. (#646)

Biotite 1.0.0

27 Aug 11:08
e77f8c4

Choose a tag to compare

Changelog

Additions

  • Support for Numpy 2.0 (#529)
    • 1.x versions are still compatible.
  • Trajectory file interfaces in structure.io do not require mdtraj as extra dependency anymore (#627).
    • Instead the much smaller biotraj package is now a mandatory dependency of Biotite.
  • New documentation website (#552).
  • Improved performance of multiple auxiliary methods in sequence.Alphabet.

Changes

  • sequence.graphics uses flower color scheme as default instead of rainbow. (#617).
    • It represents similarity of amino acids better.
  • structure.io.pdbx.get_sequence() returns dict mapping chain IDs to sequences (#611).
  • Previously deprecated functionality was removed. (#624)
    • read() instance method of File classes: Use read() class method instead.
    • temp_file() and temp_dir(): Use corresponding functionality from tempfile instead.
    • application.viennarna.RNAfoldApp.get_mfe(): Use application.viennarna.RNAfoldApp.get_free_energy() instead.
    • atom_mask parameter of structure.connect_via_distances() and structure.connect_via_residue_names(): Filter the atoms before instead.
    • Support for Alignment objects as input to sequence.graphics.plot_sequence_logo(): Input a Profile instead.
    • sequence.io.fastq.FastqFile.get_sequence(): Use sequence.io.fastq.FastqFile.get_seq_string() or sequence.io.fastq.get_sequence() instead.
    • structure.filter_backbone(): Use structure.filter_peptide_backbone() instead.
    • structure.check_id_continuity(): Use structure.check_res_id_continuity() instead.
    • structure.check_bond_continuity(): Use structure.check_backbone_continuity() instead.
    • structure.renumber_atom_ids(): Set the atom_id annotation with numpy.arange() instead.
    • structure.renumber_res_ids(): Use structure.create_continuous_res_ids() instead.
    • chain_id parameter of structure.annotate_sse(): Filter the AtomArray before instead.
    • structure.superimpose_apply(): Use structure.AffineTransformation.apply() instead.
    • structure.io.read_structure_from_ctab() and structure.io.write_structure_to_ctab(): Use corresponding functions from structure.io.mol.
    • structure.io.mol.MolFile.get_header() and structure.io.mol.MolFile.set_header(): Use the header attribute instead.
    • structure.io.npz: Internal .npz format is not used anymore.
    • structure.io.pdbx.PDBxFile: Use structure.io.pdbx.CIFFile instead.
    • structure.io.mmtf: .mmtf was superseded by .bcif accessible with structure.io.pdbx.BinaryCIFFile.

Fixes

  • Fixed compilation warnings about deprecated NumPy API. (#626)
  • Fixed structure.BondList sometime discarding bonds after merging to bond lists (#618).
  • Fixed incorrect handling of quotes when reading and writing a structure.io.pdbx.CIFFile (#619).

Biotite 0.41.2

28 Jun 08:53
270f2d6

Choose a tag to compare

Changelog

Fixes

  • Updated platform and tooling versions in CI. The previous configuration caused wheels to not be available for MacOS-ARM. (#603)
  • Fix Atom __repr__() (#602)
  • Fix artifact name for source distribution (#608)
  • Fix indexing with inverse slices(#610)
  • Fix mdtraj 1.10 incompatibility (#612)

Biotite 0.41.1

17 Jun 13:42
47e0a6b

Choose a tag to compare

Changelog

Fixes

  • NumPy version is now properly restricted (#601)