
    Ri6	                     d    d Z ddlmZ ddlmZ ddlmZ erddlmZ ddl	m
Z
  G d ded	         Zy
)z'Model class, used in Structure objects.    )TYPE_CHECKING)Entity)IC_Chain)Chain)	Structurec                   T    e Zd ZdZd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)ModelzThe object representing a model in a structure.

    In a structure derived from an X-ray crystallography experiment,
    only a single model will be present (with some exceptions). NMR
    structures normally contain many different models.
    Nc                 `    d| _         ||| _        n|| _        t        j                  | |       y)zYInitialize.

        Arguments:
         - id - int
         - serial_num - int

        MN)level
serial_numr   __init__)selfidr   s      E/home/agent/.friday_env/lib/python3.12/site-packages/Bio/PDB/Model.pyr   zModel.__init__   s-     
 DO(DOb!    c                 *    d| j                          dS )zReturn model identifier.z
<Model id=>)get_idr   s    r   __repr__zModel.__repr__*   s    DKKM?!,,r   c              #   $   K   | E d{    y7 w)zReturn chains.N r   s    r   
get_chainszModel.get_chains.   s     s   c              #   N   K   | j                         D ]  }|E d{     y7 w)zReturn residues.N)r   )r   cs     r   get_residueszModel.get_residues2   s&     " 	ALL	   %#%c              #   N   K   | j                         D ]  }|E d{     y7 w)zReturn atoms.N)r   )r   rs     r   	get_atomszModel.get_atoms7   s(     ""$ 	ALL	r   verbosereturnc                 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"Model.atom_to_internal_coordinates<   (     ??$ 	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 .pic attribute
        N)r   internal_to_atom_coordinatesr&   s      r   r*   z"Model.internal_to_atom_coordinatesG   r(   r   )N)F)__name__
__module____qualname____doc__r   r   r   r   r!   boolr%   r*   r   r   r   r	   r	      sF    " -

	6D 	6T 	6	6D 	6T 	6r   r	   )r   r   N)r.   typingr   Bio.PDB.Entityr   Bio.PDB.internal_coordsr   Bio.PDB.Chainr   Bio.PDB.Structurer   r	   r   r   r   <module>r5      s.    .   ! ,#+>6F'( >6r   