Changelog
Additions
- Added convenience functions for chains, similar to the functions for residues
- Added `get_chain_starts()`
- Added `get_chains()`
- Added `get_chain_count()`
- Added `chain_iter()`
- Revamped interface for GenBank files
- `sequence.io.genbank.GenBankFile` provides a low-level API for obtaining field names and the corresponding lines and subfields
- `sequence.io.genbank.GenBankFile` is now used for both GenBank and GenPept files
- High level objects are obtained via module-level functions
- `get_locus()`, `get_definition()`, `get_accession()`, `get_version()`, `get_gi()`, `get_source()`, `get_db_link()`, `get_annotation()`, `get_sequence()` and `get_annotated_sequence()` are now functions `sequence.io.genbank`
- Added `set_locus()`, `set_annotation()`, `set_sequence()`, `set_annotated_sequence()`, to `sequence.io.genbank` for creating and editing GenBank files
Changes
- `structure.dihedral_backbone()` does not require a chain ID anymore
- The dihedrals are automatically calculated over all chains
- Dihedrals at the transition of one chain to the next one are NaN
- Completely changed usage of `sequence.io.genbank.GenBankFile` (see above)
Fixes
- Atom IDs above 99999 and residue IDs above 9999 do not break writing `structure.io.gro.GROFile`
- In case of overflow, the ID restarts at 1
- Dummy boxes in `.gro` files are not converted into a real `box` attribute of a `structure.AtomArray` anymore
- When creating a `sequence.Alignment` from strings, it is checked whether at least to strings (sequences) are given
- Fixed annotation equality checks when setting an `structure.AtomArrayStack` element with an `structure.AtomArray`
- Fixed indexing a `sequence.AnnotatedSequence` with a `sequence.Feature` containing multiple locations
- Previously the locations were merged in a random order resulting in wrong `sequence.Sequence` objects