NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #4351 most downloaded on PyPI
A comprehensive library for computational molecular biology
Last release 3 months ago
22 Jun 2026
Ships fairly regularly
a new release about every 3 months
Nearly every release is documented
notes for 35 of 35 stable releases
1 version withdrawn
withdrawn after publishing
7 years old
36 releases · first in 2020
One column per quarter.
Added missing license files for Rust dependencies.
Added support for Linux ARM 64 (aarch64) builds.
aarch64) builds. (#851)structure.filter_heavy() to filter non-hydrogen atoms. (#845)sequence.io.fasta.get_a3m_alignments() and sequence.io.fasta.set_a3m_alignments() for reading and writing alignments in A3M format. (#848)database.rcsb.fetch()
gzip parameter. (#841)structure.filter_intersection(). (#849)structure.AtomArray and structure.AtomArrayStack are now abbreviated to improve readability for large structures. (#835)structure.find_stacking_interactions() and find_pi_cation_interactions() somteimes miss interaction. (#839)numpy.ndarray initialization when and structure.AtomArray or structure.AtomArrayStack is indexed. (#840)structure.io.pdbx.get_assembly() removing inter-chain bonds. (#843)numpy >= 2.4. (#850)Added structure.dihedral_side_chain() analogous to dihedral_backbone().
structure.dihedral_side_chain() analogous to dihedral_backbone(). (#827)structure.get_all_residue_positions() and structure.get_atom_name_indices() to residue level functionalities. (#827)structure.filter_solvent(). (#832)structure.io.pdbx.get_structure(use_author_fields=False) assigns an incrementing res_id for hetero residues instead of -1. (#823)
-1 to hetero residues lead to missing distinction of subsequent residues. (#553)res_name is not used anymore to distinct two subsequent residues in the residue-level functionalities. (#825)
res_name, both would be incorrectly kept. (#824)py-mmcif in structure.io.pdbx.BinaryCIFFile. (#833)structure.io.pdbx.BinaryCIFData.array is now writable if it was encoded only with ByteEncoding. (#833)database.rcsb.fetch() would still downloaded another entry. (#833)
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)
Deprecated include_bonds parameter in structure.io.pdbx.set_structure().
structure.find_pi_cation_interactions() to identify pi-cation interactions in a structure. (#810)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.include_bonds parameter in structure.io.pdbx.set_structure(). (#804)
chem_comp_bond category.interface.rdkit.from_mol() writes the altloc into the altloc_id annotation
instead of label_alt_id. (#807)structure.io.pdbx.set_structure() for PDBx files where each atom has an altloc. (#806)structure.lddt() that was raised, if no contact exists. (#811)selection parameter interface.pymol.PyMOLObject methods that errored if a slice index was passed. (#801)amount parameter in structure.repeat_box_coord() not being used. (#800)structure.io.pdb.PDBFile.get_structure(). (#810)
structure.io.pdb.PDBFile.get_assembly(), if the file contains multiple assemblies. (#810)structure.io.pdb.PDBFile.get_symmetry_mates() and structure.io.pdb.get_symmetry_mates() are now deprecated in favor of get_unit_cell().
structure.space_group_transforms() to get transformations for a given space group.structure.io.pdbx.get_unit_cell() to get AtomArray/AtomArrayStack that represents the entire unit cell.structure.io.pdb.get_symmetry_mates() to structure.io.pdb.get_unit_cell().sym_id annotation array is also considered when determining chain starts. (#786)structure.io.pdb.PDBFile.get_symmetry_mates() and structure.io.pdb.get_symmetry_mates() are now deprecated in favor of get_unit_cell(). (#778)Encoding is either manually set or it is set by structure.io.pdbx.compress() before writing the file.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.structure.io.pdbx.get_structure(altloc='occupancy'). (#781)structure.io.pdbx.get_assembly(). (#792)Added interfaces to other packages in the bioinformatics ecosystem via the new interface subpackage.
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)database.alphafold subpackage for accessing structures from AlphaFold DB. (#492)
database.rcsb.search() can be passed directly to database.alphafold.fetch().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)structure.find_aromatic_rings() finds atom indices of aromatic rings in a structure.structure.find_stacking_interactions() finds pi-stacking interactions between aromatic rings.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)structure.spread_residue_wise() and structure.spread_chain_wise(). (#770)structure.CellList() (#733).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)structure.io.pdbx.CIFBlock objects raising an exception. (#767)structure.io.mol.set_structure() checks if the input coordinates fit into the fixed number of columns in MOL/SDF files. (#772)sequence.graphics.plot_feature_map.plot_sequence_logo() is now more accurate. (#769)Support for Python 3.13 (#661).
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)sequence.align.SubstitutionMatrix for these structural alphabets. (#682)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.structure.io.pdbx:
set_structure() with extra_fields=True. (#669)atom_site category are now handled by using sensible default annotations. (#670)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)PDBFile.get_space_group() and PDBFile.set_space_group() to read and write the space group information. (#707)structure.concatenate(), which supports concatenating more than AtomArrayStack objects. (#712)structure.io.pdbx.CIFFile (#722).sequence.align.KmerTable objects. (#664)
sequence.align.KmerTable between processes improves likewise.structure.io.pdbx.set_structure() does not write 'canonical' bonds to struct_conn category anymore. (#678)python -m biotite.setup_ccd.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)sequence.align.align_banded() that occurred when the given band was outside the sequence bounds. (#723)
Fixed structure.AtomArray.chain_id having the chain ID restricted to 4 characters.
structure.AtomArray.chain_id having the chain ID restricted to 4 characters. (#643)structure.io.pdbx.CIFFile, when a multiline value contains a quote character. (#651)chem_comp_bond category, when include_bonds=True is set in structure.io.pdbx.set_structure(). (#653)Previously deprecated functionality was removed.
2.0 (#529)
1.x versions are still compatible.structure.io do not require mdtraj as extra dependency anymore (#627).
biotraj package is now a mandatory dependency of Biotite.sequence.Alphabet.sequence.graphics uses flower color scheme as default instead of rainbow. (#617).
structure.io.pdbx.get_sequence() returns dict mapping chain IDs to sequences (#611).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.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.structure.BondList sometime discarding bonds after merging to bond lists (#618).structure.io.pdbx.CIFFile (#619).Updated platform and tooling versions in CI. The previous configuration caused wheels to not be available for MacOS-ARM.
Atom __repr__() (#602)NumPy version is now properly restricted
Deprecated get_header() and set_header() in biotite.structure.io.mol.MOLFile
biotite.structure.mol
V3000 blocks can be read and written in addition to V2000 in MOLFile (#575)M CHG lines in CTAB V2000 block can can be read and written in MOLFile (#589)biotite.structure.SDFile for full support of SD files (#589)
biotite.structure.io.pdbx (#567)
The bonds are written to the chem_comp_bond category, if include_bonds=True in set_structure()
AtomArray objects with missing or irregular annotations
structure.create_continuous_res_ids() renumbers residue IDs to make them continuous for each chain (#576)structure.infer_elements() guesses chemical elements from atom names in case the element annotation is missing (#576)structure.create_atom_names() names atoms based on their element in case the atom_name annotation is missing (#581)structure.info.one_letter_code() obtains the most appropriate one-letter code (if existing) for a residue name, based on information from the Chemical Component Dictionary (#572)structure.to_sequence() converts an AtomArray into a Sequence based on codes obtained via structure.info.one_letter_code() (#587)structure.superimpose_without_outliers() allows superimposition with iterative conformational outlier removal to decrease the RMSD of the remaining atomsstructure.superimpose_homologs() finds corresponding atoms via sequence alignment and optional outlier removal
structure.AffineTransform can be converted into a 4x4 transformation matrix containing both, translation and rotation (#576)sequence.align.write_alignment_to_cigar() now includes terminal gaps in the segment sequence (usually the shorter sequence) in the CIGAR string, if include_terminal_gaps is set to True (#563)
get_header() and set_header() in biotite.structure.io.mol.MOLFile
MOLFile.header attribute should be used instead (#589)structure.renumber_atom_ids() and structure.renumber_res_ids()
renumber_res_ids() can be substituted with create_continuous_res_ids()structure.io.pdbx.CIFFile (#555)structure.io.pdbx.get_assembly() (#555)structure.io.pdb.PDBFile.set_structure() checks if input annotations exceed the fixed number of columns, preventing writing malformed PDB files (#588)structure.residue() cannot find the requested residue (#580)sequence.io.fasta.get_sequence() converts pyrrolyine (O) into lysine (K) when creating the Sequence object (#587)Annotation in sequence.AnnotatedSequence if annotation is on the minus strand (#577)biotite.structure.base_pairs() and biotite.structure.dot_bracket_from_structure() if no base paris were found (#573)superimpose_apply() is deprecated in favor of AffineTransformation.apply()
struc.superimpose() (#526)
fixed models are allowed'bcif' format to database.rcsb.fetch()structure.io.pdbx.BinaryCIFFile to parse BinaryCIF filesstructure.io.pdbx.CIFFile to parse CIF files with analogous API to BinaryCIFFileget_structure(), get_assembly(), etc.) supports these new file classesinclude_bondsparameter to structure.io.pdbx.get_structure() and structure.io.pdbx.get_assembly() to parse bond information from filestructure.info subpackage (#540)
setup_ccd.py script, enabling the user to get an up-to-date version of the component datasetstructure.info.bond_order() and structure.info.bond_dataset (#540)struc.superimpose returns now an AffineTransformation object instead of a transformation tuple (#526)
superimpose_apply() is deprecated in favor of AffineTransformation.apply()structure.io.pdbx.PDBxFile is deprecated and superseded by CIFFile (#531)structure.io.mmtf is deprecated and superseded by BinaryCIFFile (#531)
CRYST1 records in PDB files correctly (#523)1.x is used (#537)
2.x will be added in the futureAdded modern fast *k-mer* subsetting methods to sequence.align
sequence.align (#510)
MinimizerSelectorSyncmerSelectorCachedSyncmerSelectorMincodeSelectorRandomPermutationFrequencyPermutationBucketKmerTable to support indexing of long k-mers with reasonable memory consumptionbiotite.sequence.align.Alignment from/to CIGAR strings (#516)
read_alignment_from_cigar()write_alignment_to_cigar()sequence.graphics.plot_alignment_array() (#485)database.entrez to increase download limits (#514)application.sra(#504).
prefetch is called before fasterq_dump, as suggested hereFastaDumpApp is added, which decreases computation time by writing as FASTA instead of a FASTQ file, which omits the scoresapplication.sra.FastaDumpApp.get_sequences() now only returns sequence (#504) strings and not scores anymore (#504)
get_sequences_and_scores() insteadsequence.align.KmerTable.from_tables() (#510)Faster *k-mer* decomposition in sequence.align.KmerAlphabet.create_kmers()
sequence.align.KmerAlphabet.create_kmers() (#475)sequence.io.fasta ( #478)sequence.AnnotatedSequence with a slice (#479)box parameter in structure.rdf() (#494)Deprecate atom_mask parameter in structure.connect_via_residue_names() and structure.connect_via_distances()
database.pubchem (#472)
database subpackages, it supports, search() and fetch()fetch_property() can be used to quickly obtain a wide range of properties for a given list of compound IDsdatabase.rcsb.search() and database.rcsb.count() (#466):
content_types parametergroup_by and return_groups parameters
Grouping subclassesSorting classdatabase.entrez.search() now also accepts the common database name in addition to the E-utility database name (#471)
database.entrez.fetch()structure.io.pdb.PDBFile.get_b_factor() analogous to structure.io.pdb.PDBFile.get_coord() (#469)structure.io.pdbx.get_component() and set_component() (#468)
chem_comp group of categories instead of atom_siteatom_mask parameter in structure.connect_via_residue_names() and structure.connect_via_distances() (#474)
structure.BondList.merge() the BondList given as parameter takes precedence, if both BondLists contain the same bond with different BondType (#473)
BondList returned by structure.io.pdb.PDBFile.get_structure() (if include_bonds is True) gives appropriate BondTypes, if they can be determined using the CCD (#473)
BondType is BondType.ANYBondType.ANY for all bondsstructure.remove_pbc()(#460)
selection can only be a boolean matrixstructure.connect_via_distances() and structure.connect_via_residue_names() that allowed unexpected bonds between polymer and non-polymer residues (#473)Fixed parsing of remarks < 100 in structure.io.PDBFile
structure.io.PDBFile (#457)structure.io.PDBFile (#456)structure.filter_backbone() is deprecated and replaced by filter_peptide_backbone()
biotite.structure.io.pdb and biotite.structure.io.mmtf now support parsing of assemblies via list_assemblies() and get_assembly()biotite.structure.io.pdb is able to parse all atoms within a single unit cell via get_symmetry_mates()structure.rmspd() to compute the root-mean-square-pairwise-deviation
structure.annotate_sse() (#448)
structure subpackage (#436)
filter_peptide_backbone() and filter_phosphate_backbone() to filter backbone atoms of proteins and nucleotides, respectivelyfilter_linear_bond_continuity() that filters atoms that are within distance boundaries to the next atomfilter_polymer() that filters biomacromolecules of the given type (peptide, nucleotide, carbohydrate) and minimum lengthstructure subpackage (#436)
check_linear_continuity() gives positions in a structure where atoms are not within distance boundaries to the next atomcheck_backbone_continuity() does the same exclusively for peptide/nucleotide backbone atomssequence.common_alphabet() to determine the Alphabet from a list of alphabets that extends all other alphabets from this list (#446)sequence.phylo.Tree.to_newick() and sequence.phylo.TreeNode.to_newick() allow rounding of distance labels (#439)application.TantanApp is able to process multiple sequences in a single call (#446)
structure.filter_backbone() is deprecated and replaced by filter_peptide_backbone() (#436)structure.check_bond_continuity() is deprecated and replaced by check_backbone_continuity() (#436)chain_id parameter in structure.annotate_sse(), multiple chains can now be processed at once (#448)structure.CellList accepts empty query coordinates in get_atoms() and get_atoms_in_cells() (#448)CRYST1 records to 80 instead of 70 characters (#453)application.dssp.DSSPApp did not give correct number of secondary structure elements for multi-chain structures (#444)MemoryError in structure.repeat_box() (#450)Deprecated application.viennarna.RNAfoldApp.get_mfe() and replaced it by application.viennarna.RNAfoldApp.get_free_energy()
Path objects in File.read()subpackage (#425)
filter_amino_acids() now also filters for non-canonical amino acidsfilter_nucleotides() uses an updated list of nucleotidesfilter_carbohydrates() filters for saccharidesfilter_canonical_amino_acids() and filter_canonical_nucleotides() filter the respective canonical residuesstructure.info.carbohydrate_names() and structure.info.amino_acid_names() give a list of residue names considered as carbohydrates and amino acids, respectivelyapplication.LocalApp now supports input to STDINapplication.viennarna.RNAalifoldApp interface to RNAalifoldapplication.viennarna.RNAfoldApp and application.viennarna.RNAalifoldAppstructure.filter_amino_acids() have changed (see above)application.viennarna.RNAfoldApp.get_mfe() and replaced it by application.viennarna.RNAfoldApp.get_free_energy()X+ instead of +X)
in structure.io.PDBFile(#421)strutcure.io.mmtf.MMTFFile, if an MMTF file
has multiple different groupType entries for the same residue name and the same number of atoms (#426)structure.base_stacking() (#432)TypeError in database.muscle.Muscle5Appbond_line_style parameter in structure.graphics.plot_secondary_structure()pseudoknots() and base_pairs_from_dot_bracket() in cases the secondary structure had no base pairsdatabase.entrez.fetch()Support for new UniProt REST API
AtomArray is read from PDB and PDBQT files (#413)application.vina.VinaApp supports now docking of molecules containing certain metal elementsSupport for new RCSB search API
case_sensitive parameter in database.rcsb.FieldQuerystructure.info.mass() support deuteriumstructure.connect_via_distances() can connect atoms over periodic boundariesstructure.apply_chain_wise()structure.spread_chain_wise()structure.get_chain_masks()structure.get_chain_starts_for()structure.get_chain_positions()structure.superimpose() supports also pure coordinatesstructure.hbond() uses an associated structure.BondList to find hydrogen atoms to potential hydrogen bond donorsstructure.graphics.plot_atoms() and structure.graphics.plot_ball_and_stick_model() use rounded tipsstructure.io.pdbx.get_assembly missing chains in some structures (#387)structure.io.pdb.PDBFile has erroneous atom IDs (#379)structure.io.pdb.PDBFile pads lines always to 80 characterssequence.io.GFFFilesequence.align.SubstitutionMatrix with two different alphabets is read from string or fileapplication.mafft.MafftApp runs for more than 10 sequences.Fixed DeprecationWarning in structure.align_vectors()
application.muscle.Muscle5App to support the changed CLI of Muscle 5structure.orient_principal_components() to orient atom coordinates
to the given axesbiotite.structure.io.pdbx.get_structure() uses label_xxx or auth_xxx
field as fallback, if the respective other one is not availabledefault_bond_type parameter to
biotite.structure.io.write_structure_to_ctab() and
biotite.structure.connect_via_distances to allow the user to change the
BondType in the generated BondListsequence.io.gff.GFFFile.read() is now able to read GFF records with trailing
tabsDeprecationWarning in structure.align_vectors() (#295)structure.io.pdb.PDBFile.write()structure.index_xxx() functions, if invalid input
shape is givenstructure.io.pdbx.PDBxFile.set_category()Add writer_iter() to some File classes
writer_iter() to some File classes
sequence.io.FastaFile, sequence.io.FastqFile and all
classes inheriting from structure.io.TrajectoryFilesymbol_spacing parameter to sequence.graphics.plot_alignment
sequence.graphics.plot_alignment_similarity_based and
sequence.graphics.plot_alignment_types_basedstructure.io.NetCDFFile, previously it was always NoneDeprecated structure.info.bond_order()
sequence.SequenceProfile
probability_matrix() to compute the symbol probabilities
from total frequencieslog_odds_matrix() to calculate a position weight matrixsequence_probability() and sequence_score() to assess the
adherence of a given sequence to a profilestructure.BondList
structure.BondType.AROMATIC_TRIPLE to support triple bonds
in aromatic systemsstructure.BondList.without_aromaticity() to convert bonds with
structure.BondType.AROMATIC_<order> to structure.BondType.<order>structure.info.bond_order()
structure.BondType of the bond between two atoms in a
residuestructure.info.bond_order()structure.info.bond_order()structure.io.pdb.PDBFile.get_structure() raising an exception,
if the PDB file contains an invalid CRYST1 record, now a warning is printedCONECT records written by structure.io.pdb.PDBFile.set_structure()
CONECT record was created, if a atom has 4
bond partnersapplication.muscle.MuscleApp with nucleotide sequencessequence.graphics.plot_sequence_logo() requires now a sequence.SequenceProfile, usage of sequence.align.Alignment still works, but is deprecated
sequence.graphics.plot_sequence_logo() requires now a
sequence.SequenceProfile, usage of sequence.align.Alignment still works,
but is deprecateddatabase.rcsb.FieldQuery has now an optional molecular_definition
parameter to allow searches in molecule related fields.database.rcsb.Query objects can be combined with logical
operatorsapplication.blast.BlastWebApp now also reports hit sequences containing
selenocysteine without errors (#344)Atom, AtomArray and AtomArrayStack can be unpickled (#349)sequence.graphics.plot_sequence_logo() supports now all Matplotlib backends
(#345)Extended functionalities for homology searches
application.tantan.TantanApp for sequence repeat masking with
Tantansequence.align.KmerAlphabet and sequence.align.KmerTable support spaced
k-merssequence.align.local_gapped() and sequence.align.local_ungapped()
for aligning sequences locally with X-drop heuristicEValueEstimator for calculation of expect values (E-values)
from alignment scoressequence.LetterAlphabet.extends()sequence.SequenceProfile for representing sequence profiles by means
of a symbol frequency table
sequence.SequenceProfile.from_alignment() creates a profile from an
alignmentsequence.SequenceProfile.to_consenus() creates a consensus sequencesequence.align.get_codes() and
sequence.align.get_symbols()CONECT records in
structure.io.pdb.PDBFile (#329)'X' or '*' (#322)sequence.graphics,plot_nucleotide_secondary_structure() is now able to set
the color of symbols (#333)Most classes support now the repr() function
repr() function (#290)sequence.CodonTablestructure.info.all_residues(), that gives all residue names from the
Chemical Component Dictionarystructure.infostructure.io.mol.MOLFile to support MOL and SDF files for
small molecule structure datadatabase.uniprot for UniProt database support
database.uniprot.search() searches for Uniprot IDs that match a given
database.uniprot.Querydatabase.uniprot.fetch() downloads the file corresponding to the given
Uniprot ID.structure.pseudoknots() by using NetworkX
to identify conflicting regions (#289)structure.BondType enum values for more precise description of
aromatic bonds
BondType.AROMATIC is replaced by
BondType.AROMATIC_SINGLE and BondType.AROMATIC_DOUBLEstructure.BondList.remove_aromaticity() converts
BondType.AROMATIC_SINGLE to BondType.SINGLE and
BondType.AROMATIC_DOUBLE to BondType.DOUBLE in-placestructure.io.PDBFile,
if the MODEL line is missing in the filestructure.io.PDBFile
'+2' instead of the correct 2+atom_i parameter when reading a trajectory via
structure.io.load_structure() (#308)structure.CellList
radius
parameter of structure.CellList.get_atoms() was equal to the
cell_size parameter of the constructor (#311)structure.AtomArray and
structure.AtomArrayStack preserves the NumPy dtypeAdded interface to *AutoDock Vina*
application.autodock.VinaApp uses vina executable to perform
docking of ligand to a receptor moleculestructure.io.pdbqt.PDBQTFile class for writing input for
and reading output from vina
sequence.align.KmerAlphabet encodes a sequence.Sequence into
k-merssequence.align.KmerTable is able to find k-mer matches between
sequence in an efficient mannersequence.align.SimilarityRule allows matching similar instead of
exact k-mer matches via a sequence.align.KmerTablesequence.align.align_banded() performs a heuristic local or
semi-global sequence alignment within a defined diagonal bandsequence.align.remove_terminal_gaps() functionapplication.sra.FastqDumpApp.get_file_paths() methodsequence.Sequence.get_symbol_frequency()sequence.NucleotideSequence.complement()sequence.Sequence.reverse() can optionally create an array view
instead of a copyapplication.sra.FastqDumpApp.get_file_paths() only parses
downloaded PDBQT files, if requiredAdded interface to some programs of the *ViennaRNA* software package
application.viennarna.RNAfoldApp uses RNAfold to predict the minimum
free energy secondary structure of an RNA sequenceapplication.viennarna.RNAplotApp uses RNAplot to calculate the
2D coordinates for base symbols in a secondary structure plotstructure.graphics.plot_nucleotide_secondary_structure() for
visualization of an RNA secondary structure via Matplotlib
RNAplotstructure.find_connected()structure.partial_charges()structure.BondList.remove_bonds_tostructure.get_molecule_indices(), structure.get_molecule_masks() and
structure.molecule_iter select atoms belong to a single molecule, i.e.
atoms that are connected via bondsas_graph() method to sequence.phylo.Tree and structure.BondList
for conversion into a NetworkX Graphfind_rotatable_bonds() function uses NetworkX to identify
rotatable bonds, i.e. single bonds that are not part of a cycle,
in structures with a structure.BondList()networkx package as dependencystructure.io.pdbx.set_structure() does not convert the residue ID -1
to "." anymorestructure.io.pdb.PDBFilestructure.io.pdbx.set_structure() supports now atom IDs larger than
one millionapplication.dssp.DsspApp unable to work with multicharacter chain
identifiers (#264)application.muscle.MuscleApp sometimes not finishing for long
alignments (#273)structure.BondList potentially ending in a broken state after
indexing it with an unordered index arraystructure.partial_charges() uses bond order instead of number of bond
partners to calculate correct charges for atoms with positive or negative
formal chargeNew analysis capabilities for nucleic acid base pairs
structure.info.nucleotide_names()structure.base_pairs()structure.base_pairs() and
structure.filter_nucleotides()structure.base_pairs_edge() and
structure.base_pairs_glycosidic_bond() for further
characterization of base pairsstructure.base_stacking() for identification of pi-stacking
of nucleobasesstructure.pseudoknots() for identification of pseudoknots
in a given list of base pairingsstructure.dot_bracket(),
structure.dot_bracket_from_structure() and
structure.base_pairs_from_dot_bracket() for conversion of
base pairs to dot-bracket-letter notation and vice versastructure.BondList:
get_all_bonds() for obtaining the bonds atoms for each atom
in the structureadjacency_matrix() and bond_type_matrix()structure.partial_charges() for partial charge calculation
using the PEOE methodstructure.info.standardize_order(), that reorders atoms in
residues into the PDB standard atom order for the respective residuestructure.graphics.plot_ball_and_stick_model()structure.get_residue_positions()sequence.io.genbank.get_raw_sequence() which returns the
sequence as stringstructure.hbond() raises a warning if an input structure without
hydrogen atoms is given (#241)get_sequence() and get_sequences() of biotite.sequence.io.fasta
and biotite.sequence.io.fastq convert selenocysteine to cysteine (#232)biotite.sequence.io.fasta.get_sequence() and
biotite.sequence.io.fasta.get_sequences() try to create (#232):
sequence.NucleotideSequencesequence.ProteinSequenceapplication subpackage are removed via
os.remove() due to issues on Windows (#243)structure.base_pairs() for structures that contian residues,
that are not in the PDB standard order (#237)structure.graphics.plot_atoms()structure.BondList constructor
(related to #252):
structure.BondList indexing with an unsorted index array (#238)charge annotation of molecules obtained via
structure.info.residue() (#254)Added sequence.ProteinSequence.get_molecular_weight() method
sequence.ProteinSequence.get_molecular_weight() methodapplication.sra subpackage as interface to NCBI SRA tools
FastqDumpApp is used for fetching FASTQ files from the NCBI SRAiter_read() static method to sequence.io.fasta.FastaFile
and sequence.io.fasta.FastqFile
set_sequence and set_sequences in sequence.io.fasta
and sequence.io.fasta support writing RNA sequences with the new
as_rna parameter_loop category labels in
PDBx/mmCIF files (#224)1 (#227)structure.density()sequence.io.fastq.get_sequence() and sequence.io.fastq.get_sequences()
properly handle RNA and ambiguous sequences nowstart parameter in structure.renumber_atom_ids and
structure.renumber_res_idsdatabase.rcsb.fetch()The method sequence.io.fastq.FastqFile.get_sequence() is deprecated
database.rcsb.Query classes, that reflect the entirety of the new
search API, including sequence, sequence motif and structure searches
database.rcsb.Query objects can be combined/negated using the
operators |, & and ~return_type, sort_by and range parameter to
database.rcsb.search()database.rcsb.count() function to count the number of results a
database.rcsb.Query would yield in a less costly way than
database.rcsb.search()biotite.structure.BondListsequence.Sequence.alphabet property, that is equivalent to
sequence.Sequence.get_alphabet()fastq.get_sequence(), fastq.get_sequences(),
fastq.set_sequence() and fastq.set_sequences()sequence.io.fasta.FastaFilesequence.AlphabetMappersequence.Alphabet.is_letter_alphabet() methodsequence.io.load_sequence(), sequence.io.load_sequences(),
sequence.io.save_sequence() and sequence.io.save_sequences() that derive
the appropriate File class from the suffix of the file name.omit_chain parameter has been removed from database.rcsb.search()database.rcsb.Query classes have been removedpython setup.py test and python setup.py build_sphinx commands,
please use pytest and sphinx-build directly insteadsequence.NucleotideSequence.alphabet to
sequence.NucleotideSequence.alphabet_unambsequence.io.fastq.FastqFile returns its entries only as str instead of
sequence.NucleotideSequence for consistency with
sequence.io.fastq.FastaFile
sequence.io.fastq.FastqFile.get_sequence() is deprecatedsequence.io.fastq.FastqFile.get_seq_string() returns the
sequence as a str instead of a sequence.NucleotideSequenceexpect_looped parameter in
structure.io.pdbx.PDBxFile.get_category()structure.io.pdbx.PDBxFile, that was raised, if a PDBx
field and its single-line value are in separate linesbiotite.structure.BondListchain_id dtype from 'U3' to 'U4' (#215)…is still available, but is deprecated
structure.filter_nucleotides()structure.io.pdbx.get_sequence() is able to parse a
sequence.NucleotideSequence from a PDBx file in addition to
sequence.ProteinSequencestructure.base_pairs() for determining base pairs in nucleic acid
structuresstructure.get_residue_starts_for()structure.check_atom_id_continuity()structure.renumber_atom_ids() and structure.renumber_res_ids()
to fix structures with discontinuous atom/residue IDsget_model_count() to structure.io.pdb, structure.io.pdbx,
structure.io.mmtf and structure.io.gro to obtain the total number
of modelsmodel parameter in get_structure() in structure.io.pdb,
structure.io.pdbx, structure.io.mmtf and structure.io.gro supports
negative values to start indexing beginning from the last modelstructure.get_residue.starts())'first' choses always chooses the atoms with the first altloc ID
for each residue'occupancy' choses always chooses the atoms with the highest occupancy
for each residue'all' does not filter any altloc IDs and adds the altloc_id
annotation to the resulting structure.AtomArray or
structure.AtomArrayStackstructure.check_id_continuity() into
structure.check_res_id_continuity(); structure.check_id_continuity()
is still available, but is deprecatedstructure.BondList being iterable, yielding nonsense valuesstructure.io.pdb.PDBFile when the
element column is missing (#188)structure.io.mmtf.MMTFFile (#205)structure.io.pdbx.get_structure()
raising an error; the box attribute is set to None insteadtemp_file() and temp_dir() is deprecated, use the Python standard library module tempfile instead
structure.BondList
__contains__() method to test whether a bond existsfind_connected() identifies systems of connected atoms (aka molecules)structure.io.TrajectoryFile.read_iter() yields coordinates, box and time for each framestructure.io.TrajectoryFile.read_iter_structure() yields an structure.AtomArray for each framestructure.io.pdbx.list_assemblies() lists the available assembliesstructure.io.pdbx.get_assembly() returns the given assembly as
structure.AtomArray or structure.AtomArrayStackexpect_looped parameter to
structure.io.pdbx.PDBxFile.get_categorystructure.info.vdw_radius_single() provides VdW radii also for more
uncommon elementsstructure.get_residue_masks(), which masks all residues to which the
given atoms belongstructure.repeat() functions to repeat atoms multiple times in the
same model with different coordinatestemp_file() and temp_dir() is deprecated, use the Python standard library
module tempfile insteadFile classes, read() is now a class method,
e.g. pdbx_file = PDBxFile.read(), the old instance method is deprecateddatabase.rcsb.fetch() and database.enrez.fetch() overwrite an existing
file if it is emptystructure.CellList when using the periodic parameter in combination
with the selection parameter; before unallocated memory was potentially
accessed# Changelog # ## Fixes ## - Fixed support for msgpack 1.0
msgpack 1.0Added structure.from_template() to create a structure.AtomArrayStack from an existing atom array (or stack) and coordinates
structure.from_template() to create a structure.AtomArrayStack from an existing atom array (or stack) and coordinatesignore parameter to sequence.io.genbank.get_annotation() to ignore the given feature keyssequence.graphics.plot_plasmid_map() for visualizing sequence.Annotation objects as plasmidscore_matrix() method of sequence.align.SubstitutionMatrix is not writable anymore, rendering a SubstitutionMatrix truly immutableenvironment.yaml to environment.ymlsequence.Feature must have at least one locationstructure.superimpose(), when providing a boolean mask\r\n line breaks (line breaks with carriage return, typical for Windows)Your coding agent can read these notes before it upgrades. Set up the MCP server →