All versions are properly annotated on github so there the source code for each version can be retrieved.
- Added unified file read logic, see
ReadOptions
(Thanks to y1zhou and OWisset)- This deprecates the original read functions
open_gz
(still around for ease of updating) andopen_raw
(fully removed in this update)
- This deprecates the original read functions
- Added
unique_conformer_names
for aPDB
(Thanks to rvhonorato) - Added
chains_in_contact
for aPDB
(Thanks to rvhonorato)
- Added support for zipped (
.gz
) files (Thanks to OWisset) - Does not automatically convert chain names to uppercase anymore (Thanks to OWisset)
- Added
remove_models_except
andremove_models_except_first
(Thanks to OWisset) (#103) - Improved some errors generated by pdbtbx
- Fixed panic (#102)
- Added more amino acids for
is_amino_acid
- Implemented Display for
StrictnessLevel
- Moved from string based elements to enums see
Element
, this means that theAtom::set_element
,Atom::element
, andTerm::element
have changed - Deprecated the following functions
Atom::atom_number
,Atom::atomic_radius
,Atom::covalent_bond_radii
, andAtom::vanderwaals_radius
the radius functions are replaced withElement::atomic_radius
which contains all these measures in the structAtomicRadius
- Added
Element::weight
andElement::electro_negativity
data - Implemented
Extend
for all levels in the PDB hierarchy - Implemented
FromIterator
for thePDB
struct - Removed requirement for
atom_site.pdbx_formal_charge
,atom_site.group_PDB
,atom_site.occupancy
, andatom_site.B_iso_or_equiv
for mmCIF files (thanks to #93) - Added support for SCALE, ORIGX, and MTRIX in mmCIF files (open and save)
- Fixed ignoring some of the
auth_*
series of mmCIF columns, by giving them precedence over thelabel_*
columns inseq_id
andasym_id
(thanks to #95) - Fixed remark-type-number 400 missing from the valid number list (thanks to #96)
- Fixed a small bug in saving MtriX records (thanks to #96)
- Added
open_mmcif_raw
- Fixed a bug in atom parsing (#92)
- Removed below precision errors in validation
- Changed many functions to accept
AsRef<str>
instead of&str
- Marked all applicable functions as
const
- Added more search terms
- Added angle and dihedral angle calculations on atoms (Thanks to DocKDE)
- Added extra examples (Thanks to DocKDE)
- Added support for DBREF1/2
- Improved PDB parsing performance (Thanks to DocKDE)
- Improved error message styling and merged common errors
- Additional code and documentation improvements
- Added
find
method on all levels in the PDB, this should allow for human friendly atom(s) searching.pdb.find(Term::ConformerName("ALA".to_string()) + Term::AtomName("CA".to_string()))
- Added
bounding_box
to the PDB struct. - Added
atom.overlaps_bound()
which uses covalent bond radii instead of unbound radii. (Thanks to raised issue) - Extended
atomic_number
to take the first character of the name if this is one of "CHONS" and the element is unset and the name is not an element name. - Updated covalent bond radii to work in Å as well (was picometers).
- Respecified the dependencies versions to allow cargo to more often reuse dependencies in complex projects.
- Added support for residue serial numbers over 9999 and atom serial numbers over 99999 for PDB files. (Thanks to DocKDE)
- Changed argument type of
save_pdb
fromPDB
to&PDB
. (Thanks to DocKDE) - Allow lack of chain name in PDB files. (Thanks to DocKDE)
- Added mutable structs to extend the use of
AtomWithHierarchy
alongside a refactor which created a struct for every hierarchy level. See the docs for more information. - Removed
Atom.pos_array()
and moved therstar::rtree
to use(f64, f64, f64)
instead of[f64; 3]
. This was made possible by the adoption of tuples as points in rstar.
- Added parallel iterators based on Rayon (Thanks to DocKDE)
- Added support for generating r*trees from Rstar, this has to be opted in by using the feature
rstar
- Added support for serialization using Serde, this has to be opted in using the feature
serde
- Added a new struct
AtomWithHierarchy
to have access to the containing layers of an atom in an easy way and added functions to generate and work with this struct - Added
binary_find_atom
to all hierarchies to find atoms in less time - Added more names for amino acids and backbone atoms (Thanks to DocKDE)
- Added support for bonds (can only read Disulfide bonds from PDBs for now)
- And many more small fixes and docs updates
- Added Anisotropic temperature factor support for mmCIF files
- Fixed an issue in the aniso matrix
- Added a
full_sort
function on PDB - Fixed small bugs in the PDB saving logic
- Fixed a bug in PDB b factor and occupancy validation which showed an error when the value was 0.00
- Fixed a bug in
atom.atomic_radius()
, it used to give the radius of the previous atom in the periodic table - Added more atomic radii (vanderwaals and covalent bonds)
- Fixed a bug arbitrarily constraining the maximum value of atom serial numbers in PDB files
- Reworked the library to handle Hetero atoms as normal atoms (with the
atom.hetero()
function returningtrue
) instead of saving them inmodel.hetero_chains()
- Implemented the standard traits (Clone/PartialEq/Eq/PartialOrd/Ord) for most structures
- Fixed conformers in
pdb.renumber()
they were disregarded before - The symmetry structure now also accepts and provides Hall symbols
- Fixed multiple bugs
- Added many more unit tests and started tracking test coverage
- Fixed bugs in
.remove_empty
to work better with hetero chains - Added support for negative residue sequence numbers
- Standardised the precision of floating points in the mmCIF output, at least 1 and at most 5 decimals will be shown
- Fixed an issue with the occupancy of atoms shared between multiple conformers, it will now add up to the original value
- Added
Conformer
which sits betweenResidue
andAtom
and is analogous toatom_group
in cctbx - Added editing functions for Conformers
- Added
HEADER
identifier support for parsing PDB and saving PDB and mmCIF - Reverted mmCIF output atom_site column ordering to v0.3.3, the newly introduced ordering gave issues with Phenix
- Added
remove_empty
functions on all structs, to remove all empty layers after large scale deletions
- All string based properties for atom/residue/chain are trimmed and converted to uppercase before being set
- A
.extend
function is provided for residue/chain/model/pdb to easily add an iterator to the list of children
- Added mmCIF/PDBx open support
- Changed
open
andsave
to determine the filetype based on the extension - Added
validate_pdb
to validate a PDB model before saving it in a PDB file - Added support for bigger serial numbers and names to allow for bigger models to be saved in mmCIF files
- Fixed some issues with mmCIF output
- Added very basic exporting to mmCIF, it will only export the unit cell, symmetry and atomic data.
- Added saving of
DBREF
/SEQADV
/SEQRES
- Generates default matrices for
SCALE
andORIGX
if not available and the strictness level on save isStrict
- Added constructor
scale
toTransformationMatrix
to have a magnifying matrix with 3 different factors
- Added
distance_wrapping
andoverlaps_wrapping
functions to Atom which wrap around the unit cell to find the shortest distance
- Added support for parsing and validating
DBREF
/SEQADV
/SEQRES
/MODRES
- Added saving of
MODRES
records, the other primary structure sections will follow soon - Added differential saving, which changes the output based on the
StrictnessLevel
provided - Redefined
overlaps
function on Atoms, the calculation was faulty before - Added
distance
function between two Atoms - Removed renumber on save
- Exported
save_raw
was created in v0.2.0 but not accessible - Added
ENDMDL
records after model definitions while saving making saved ensemble files valid in other software - Extended warnings for validation of ensemble files, it will now generate a
LooseWarning
ifHETATM
s do not correspond - Changed the implementation of the
.remove_*_by
functions to be 75% faster
- Made
add_child
methods for model/chain/residue public. - Extended saving it now validates and renumbers the given PDB. It fails upon generation of validation errors, while the user can specify the error levels to allow
- Added save_raw to save to a BufWriter. This function is called
save_raw
. - Extended parser error generation and handling. It now fails upon generation of errors, while the user can specify the error levels to allow
- Added parser from BufReader. This function is called
parse
and the function previously calledparse
is renamed toopen
. - Rewrote
pdb.total_*_count()
as the previous version was inaccurate - Saved 21.4 MB in the published crate by ignoring certain files (thanks Byron!)
- Finally fixed the full bug encountered in v0.1.3
- Fixed a bug in which strings that are too short cause setter functions of various character based properties of atoms/residues/chains to panic
- Fixed a mistake witch prevented valid characters from being used to set various character based properties of atoms/residues/chains
- Added
.join()
on PDB. - Added atomic data lookup (number & radius) on Atoms
- Added
.overlaps()
function to Atom, which uses the atomic radius to determine if two atoms overlap - Added support for the
MASTER
PDB Record both while reading and saving - Fixed the behaviour of
.join()
on Model/Chain/Residue
Textual changes to documentation
Initial release
- Basic PDB parsing, editing and saving functionality