o
    Rŀg	                     @   sP   d Z ddlZddlZddlmZ ddlmZ edZG dd dZ	dd	 Z
dS )
znCode for chopping up (dicing) a structure.

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

    Remove hydrogens, waters and ligands. Only use model 0 by default.
    r   c                 C   s   || _ || _|| _|| _dS )zInitialize the class.N)chain_idstartendmodel_id)selfr   r   r   r    r
   @/var/www/html/myenv/lib/python3.10/site-packages/Bio/PDB/Dice.py__init__   s   
zChainSelector.__init__c                 C      |  | jkr	dS dS )z+Verify if model match the model identifier.   r   )get_idr   )r	   modelr
   r
   r   accept_model#   s   zChainSelector.accept_modelc                 C   r   )z'Verify if chain match chain identifier.r   r   )r   r   )r	   chainr
   r
   r   accept_chain*   s   zChainSelector.accept_chainc                 C   s^   |  \}}}|dkrdS |dkrtd| d| t | j|  kr*| jkr-dS  dS dS )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icoder
   r
   r   accept_residue0   s   zChainSelector.accept_residuec                 C   s   |  }t|rdS dS )z!Verify if atoms are not Hydrogen.r   r   )r   	_hydrogenmatch)r	   atomnamer
   r
   r   accept_atom?   s   
zChainSelector.accept_atomN)r   )	__name__
__module____qualname____doc__r   r   r   r   r    r
   r
   r
   r   r      s    
r   c                 C   s,   t |||}t }||  ||| dS )z'Write out selected portion to filename.N)r   r   set_structuresave)	structurer   r   r   filenameselior
   r
   r   extractI   s   
r+   )r$   rer   Bior   Bio.PDB.PDBIOr   compiler   r   r+   r
   r
   r
   r   <module>   s   
3