B
    ‰°b;  ã               @   s<   d Z ddlmZmZ ddlmZ G dd„ deƒZdd„ ZdS )	zParsing AlignACE output files.é    )ÚMotifÚ	Instances)ÚSeqc               @   s   e Zd ZdZdd„ ZdS )ÚRecordz*AlignACE record (subclass of Python list).c             C   s
   d| _ dS )zInitialize the class.N)Ú
parameters)Úself© r   ú2lib/python3.7/site-packages/Bio/motifs/alignace.pyÚ__init__   s    zRecord.__init__N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   r   r   r   r	   r      s   r   c             C   sÆ  t ƒ }t| ƒ}| ¡ |_t| ƒ}| ¡ |_d}d}xŒ| D ]‚}| ¡ }|dkrRq:|dd… dkrji |_q:|d dkr’| d¡d }|j |¡ q:d	|krÄ| d	¡\}}| ¡ }| ¡ }||j|< q:|dd
… dkrÜg |_q:|dd
… dkr| ¡ }|d dkst	‚t
|d ƒ}g }	q:|dd… dkrnd}
t|	|
ƒ}	t|
|	ƒ}t| ¡ d ƒ|_||_||_| |¡ q:t| d¡ƒdkr t| d¡d ƒ}|	 |¡ q:d|kr¶| d¡}q:t|ƒ‚q:W |S )z3Parse an AlignACE format handle as a Record object.NÚ é   ZParar   ú#ú	é   ú=é   ZInputr   é   ZMAPZACGTéÿÿÿÿÚ*z
)r   ÚnextÚstripÚversionZcommandr   ÚsplitÚ	sequencesÚappendÚAssertionErrorÚintr   r   ÚfloatZscoreÚnumberÚmaskÚlenr   Ú
ValueError)ZhandleÚrecordÚliner#   r"   Zseq_nameZpar_nameZ	par_valueZwordsZ	instancesZalphabetZmotifÚseqr   r   r	   Úread   sV    




r)   N)	r   Z
Bio.motifsr   r   ZBio.Seqr   Úlistr   r)   r   r   r   r	   Ú<module>   s   