
    Ri	                     n    d Z ddlZddlZddlmZ ddlmZ  ej                  d      Z G d d      Z	d Z
y)	znCode for chopping up (dicing) a structure.

This module is used internally by the Bio.PDB.extract() function.
    N)BiopythonWarning)PDBIOz
[123 ]*H.*c                   0    e Zd ZdZddZd Zd Zd Zd Zy)	ChainSelectorzOnly accepts residues with right chainid, between start and end.

    Remove hydrogens, waters and ligands. Only use model 0 by default.
    c                 <    || _         || _        || _        || _        y)zInitialize the class.N)chain_idstartendmodel_id)selfr   r	   r
   r   s        D/home/agent/.friday_env/lib/python3.12/site-packages/Bio/PDB/Dice.py__init__zChainSelector.__init__   s     
     c                 @    |j                         | j                  k(  ryy)z+Verify if model match the model identifier.   r   )get_idr   )r   models     r   accept_modelzChainSelector.accept_model#   s     <<>T]]*r   c                 @    |j                         | j                  k(  ryy)z'Verify if chain match chain identifier.r   r   )r   r   )r   chains     r   accept_chainzChainSelector.accept_chain*   s    <<>T]]*r   c                     |j                         \  }}}|dk7  ry|dk7  r t        j                  d| d| t               | j                  |cxk  r| j
                  k  ry yy)zCVerify if a residue sequence is between the start and end sequence. r   zWARNING: Icode z at position r   )r   warningswarnr   r	   r
   )r   residuehetatm_flagresseqicodes        r   accept_residuezChainSelector.accept_residue0   sj     &-^^%5"VU#C<MM!%fX>@P ::+488+ ,r   c                 P    |j                         }t        j                  |      ryy)z!Verify if atoms are not Hydrogen.r   r   )r   	_hydrogenmatch)r   atomnames      r   accept_atomzChainSelector.accept_atom?   s!     {{}??4 r   N)r   )	__name__
__module____qualname____doc__r   r   r   r    r&    r   r   r   r      s     
!r   r   c                 x    t        |||      }t               }|j                  |        |j                  ||       y)z'Write out selected portion to filename.N)r   r   set_structuresave)	structurer   r	   r
   filenameselios          r   extractr3   I   s3    
%
-C	BYGGHcr   )r*   rer   Bior   Bio.PDB.PDBIOr   compiler"   r   r3   r+   r   r   <module>r8      s8   
 
    BJJ|$	0 0fr   