Changelog
Additions
- Added 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 sequence
- `application.viennarna.RNAplotApp` uses `RNAplot` to calculate the
2D coordinates for base symbols in a secondary structure plot
- Added `structure.graphics.plot_nucleotide_secondary_structure()` for
visualization of an RNA secondary structure via *Matplotlib*
- Internally uses `RNAplot`
- Optional visualization of pseudoknots
- Increased performance of `structure.find_connected()`
- Increased performance of `structure.partial_charges()`
- Added `structure.BondList.remove_bonds_to`
- Added molecule-level atom selections
- `structure.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 bonds
- Added interface to *NetworkX* package
- Added `as_graph()` method to `sequence.phylo.Tree` and `structure.BondList`
for conversion into a *NetworkX* `Graph`
- The `find_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()`
Changes
- Add support for Python 3.9, remove support for Python 3.6
- Add `networkx` package as dependency
- `structure.io.pdbx.set_structure()` does not convert the *residue ID* `-1`
to `"."` anymore
Fixes
- Fixed missing check for string length of *chain ID*, *residue name*
and *atom name* when setting a structure in a `structure.io.pdb.PDBFile`
- `structure.io.pdbx.set_structure()` supports now *atom IDs* larger than
one million
- Fixed `application.dssp.DsspApp` unable to work with multicharacter chain
identifiers (264)
- Fixed `application.muscle.MuscleApp` sometimes not finishing for long
alignments (273)
- Fixed the creation an AtomArray from atoms with optional annotations (279)
- Fixed deletion of annotation arrays in `structure.AtomArray
- Fixed `structure.BondList` potentially ending in a broken state after
indexing it with an unordered index array
- `structure.partial_charges()` uses bond order instead of number of bond
partners to calculate correct charges for atoms with positive or negative
formal charge