
    Ric                     L    d Z ddlmZ ddlmZ erddlmZ  G d ded         Zy)	z=The structure class, representing a macromolecular structure.    )TYPE_CHECKING)Entity)Modelc                   X    e Zd ZdZd Zd Zd Zd Zd Zd Z	dde
d	d
fdZdde
d	d
fdZy
)	Structurez=The Structure class contains a collection of Model instances.c                 >    d| _         t        j                  | |       y)zInitialize the class.SN)levelr   __init__)selfids     I/home/agent/.friday_env/lib/python3.12/site-packages/Bio/PDB/Structure.pyr   zStructure.__init__   s    
b!    c                 *    d| j                          dS )z Return the structure identifier.z<Structure id=>)get_idr   s    r   __repr__zStructure.__repr__   s    a00r   c              #   $   K   | E d{    y7 w)zReturn models.N r   s    r   
get_modelszStructure.get_models   s     s   c              #   N   K   | j                         D ]  }|E d{     y7 w)zReturn chains from models.N)r   )r   ms     r   
get_chainszStructure.get_chains"   &     " 	ALL	   %#%c              #   N   K   | j                         D ]  }|E d{     y7 w)zReturn residues from chains.N)r   )r   cs     r   get_residueszStructure.get_residues'   r   r   c              #   N   K   | j                         D ]  }|E d{     y7 w)zReturn atoms from residue.N)r   )r   rs     r   	get_atomszStructure.get_atoms,   s(     ""$ 	ALL	r   verbosereturnNc                 P    | j                         D ]  }|j                  |        y)zCreate/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

        N)r   atom_to_internal_coordinatesr   r#   chns      r   r&   z&Structure.atom_to_internal_coordinates1   s(     ??$ 	6C,,W5	6r   c                 P    | j                         D ]  }|j                  |        y)zCreate/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
        N)r   internal_to_atom_coordinatesr'   s      r   r*   z&Structure.internal_to_atom_coordinates=   s(     ??$ 	6C,,W5	6r   )F)__name__
__module____qualname____doc__r   r   r   r   r   r"   boolr&   r*   r   r   r   r   r      sI    G"
1



6D 
6T 
6	6D 	6T 	6r   r   )Nr   N)r.   typingr   Bio.PDB.Entityr   Bio.PDB.Modelr   r   r   r   r   <module>r3      s(    D   !#46}% 46r   