Spaces:
No application file
No application file
# Copyright (C) 2002, Thomas Hamelryck ([email protected]) | |
# | |
# This file is part of the Biopython distribution and governed by your | |
# choice of the "Biopython License Agreement" or the "BSD 3-Clause License". | |
# Please see the LICENSE file that should have been included as part of this | |
# package. | |
"""The structure class, representing a macromolecular structure.""" | |
from Bio.PDB.Entity import Entity | |
class Structure(Entity): | |
"""The Structure class contains a collection of Model instances.""" | |
def __init__(self, id): | |
"""Initialize the class.""" | |
self.level = "S" | |
Entity.__init__(self, id) | |
def __repr__(self): | |
"""Return the structure identifier.""" | |
return f"<Structure id={self.get_id()}>" | |
def get_models(self): | |
"""Return models.""" | |
yield from self | |
def get_chains(self): | |
"""Return chains from models.""" | |
for m in self.get_models(): | |
yield from m | |
def get_residues(self): | |
"""Return residues from chains.""" | |
for c in self.get_chains(): | |
yield from c | |
def get_atoms(self): | |
"""Return atoms from residue.""" | |
for r in self.get_residues(): | |
yield from r | |
def atom_to_internal_coordinates(self, verbose: bool = False) -> None: | |
"""Create/update internal coordinates from Atom X,Y,Z coordinates. | |
Internal coordinates are bond length, angle and dihedral angles. | |
:param verbose bool: default False | |
describe runtime problems | |
""" | |
for chn in self.get_chains(): | |
chn.atom_to_internal_coordinates(verbose) | |
def internal_to_atom_coordinates(self, verbose: bool = False) -> None: | |
"""Create/update atom coordinates from internal coordinates. | |
:param verbose bool: default False | |
describe runtime problems | |
:raises Exception: if any chain does not have .internal_coord attribute | |
""" | |
for chn in self.get_chains(): | |
chn.internal_to_atom_coordinates(verbose) | |