
    Xf(                     `    d Z ddlmZ ddlmZ ddlmZ ddlmZ  G d dej                  ZdS )	zBio.Align support for "emboss" alignment output from EMBOSS tools.

This module contains a parser for the EMBOSS srspair/pair/simple file format,
for example from the needle, water, and stretcher tools.
    )	Alignment)
interfaces)Seq)	SeqRecordc                   "    e Zd ZdZdZd Zd ZdS )AlignmentIteratorzEmboss alignment iterator.

    For reading the (pairwise) alignments from EMBOSS tools in what they
    call the "pairs" and "simple" formats.
    EMBOSSc                    	 t          |          }n# t          $ r t          d          d w xY w|                                dk    rt          d          |z  i | _        d| j        d<   d }|D ]T}|                                dk    r d S |                    d          st          d          |z  |D|                    d          r#|d|d	d                                          z   z  }|| j        d
<   d }|dd                              dd	          \  }}|dk    r|                                | j        d<   |dk    r|                                | j        d<   |dk    r|                                | j        d<   |dk    r|                                | j        d<   :|dk    r|                                }Vd S )NzEmpty file.z(########################################Unexpected line: %ssrspairAlign_format# z#        zCommand line   :ProgramRundateReport_fileCommandline)nextStopIteration
ValueErrorrstripmetadata
startswithstripsplit)selfstreamlinecommandlinekeyvalues         0lib/python3.11/site-packages/Bio/Align/emboss.py_read_headerzAlignmentIterator._read_header   s   	6<<DD 	6 	6 	6]++5	6;;==FFF233d:: (1n% 	, 	,D{{}} JJJ??4(( ? !677$>>&??7++ 3abb)9)9#99K0;n-"abbQ//JCi+0;;==i((	!!+0;;==i((%%/4{{}}m,,&&05n--%%#kkmm+	, 	,s    -c                 z   d }i }|D ]^}|                     d          }|s|                    d          r0|                    d          rg }d }d } nt          d|z            |D ]}|                     d          }|dk    r n|                                dk    r:|                    d          st          d          |z  	 |dd                              dd	          \  }}	n1# t          $ r$ |dd                              d
d	          \  }}	Y nw xY w|dk    rt          |	                                          }t          |          dk    sJ t          |          D ]\  }
}|                    d          st          d          |z  |dd                              d          \  }}|
d	z   t          |          k    sJ |                    |                                           t          |          |k    r n|dk    r|	                                ||<   |dk    r&t          |	                                          ||<   |dk    r&t          |	                                          ||<   |dk    r#t          |	                                          }C|dk    r?t          |	                                                    d          d                   ||<   |dk    r?t          |	                                                    d          d                   ||<   |dk    r?t          |	                                                    d          d                   ||<   |dk    r&t          |	                                          ||<   >|dk    r|	                                ||<   ]|dk    r|	                                ||<   ||dk    r|	                                ||<   |dk    r|	                                ||<   t          d|z            d S t          |          dk    rt          d          |t          d          dg|z  }dg|z  }d}dg|z  }dg|z  }d}d}|D ]}|                     d          }|s||k    r||k    r nYd},|d d                                         }|dk    r||dd         z  }\|                    d d	          \  }}||                             |          sJ |dd                              d d	          \  }}t          |          }t          |          }t          ||                   }|
                    d d          }|dk    rZt          |          dk    rG||k     r|d	z  }||t          |          z   k    sJ n|d	z  }||t          |          z
  k    sJ |||<   n||         ||         k    rY| j        d!         d"k    r*t          |          dk    r|||         k    sJ ||k    sJ ny|d	z  }||t          |          z   k    sJ n[| j        d!         d"k    r-t          |          dk    r|d	z
  ||         k    sJ ||k    sJ n|d	z  }||t          |          z
  k    sJ |||<   ||xx         |z  cc<   ||xx         |z  cc<   |dk    r|t          |          z  }n|t          ||                   k    sJ |d	z  }d# |D             }t          j        |          \  }}g }t          |          }t          |          D ]}
||
         }||
         }||
         }|dk    rt          |          }nm||k     r(||
d d fxx         |z  cc<   t          ||i|$          }n?||}}|||
d d f         z
  ||
d d f<   t          d|i|$                                          }t#          |||
                   }|                    |           t          ||          }|r||_        |r	d%|i|_        |S )&Nz
z(#---------------------------------------z(#=======================================r   #r   r   r   r   z = Aligned_sequencesr   MatrixGap_penaltyExtend_penaltyLengthIdentity/
SimilarityGapsScoreLongest_IdentityLongest_SimilarityShortest_IdentityShortest_SimilarityzFailed to parse line '%s'zNumber of sequences missing!zLength of alignment missing!    G   -r   r   c                 6    g | ]}|                                 S  )encode).0aligned_sequences     r%   
<listcomp>z:AlignmentIterator._read_next_alignment.<locals>.<listcomp>   s2     
 
 
*:##%%
 
 
    )lengthemboss_consensus)r   r   r   r   r   intlen	enumerateappendfloatreplacer   r   parse_printed_alignmentranger   reverse_complementr   annotationscolumn_annotations)r   r    number_of_sequencesrM   r!   identifiersncols	sequencesr#   r$   inumber
identifieraligned_sequences	consensusstartsendscolumnindexprefixstartr?   endrB   sequencecoordinatesrecordsndatarecord	alignments                                  r%   _read_next_alignmentz&AlignmentIterator._read_next_alignment@   si	   " 	? 	?D;;v&&D ?!KLL 
?!KLL ?  	 !6!=>>> =	 =	D;;v&&DAAA$$__T** ? !677$>>6!!""X^^C33
UU 6 6 6
 "!""X^^E155
UUU6 )))&)%++--&8&8#;''1,,,,(00  GAt??400 G()>??$FF)-abb)<)<&FJq5CKK////&&z'7'7'9'9:::;''+>>> ?#(;;==C  %%#(#7#7C  (((#(#7#7C  EKKMM**
""#&u{{}}':':3'?'?'B#C#CC  $$#&u{{}}':':3'?'?'B#C#CC  #&u{{}}':':3'?'?'B#C#CC  #(#7#7C   ***#(;;==C  ,,,#(;;==C  +++#(;;==C  ---#(;;==C   !<t!CDDDF{q  ;<<<=;<<<D..	D#66	**s(( ?	 ?	D;;v&&D ///E#2#Y__&&F||T"R%[(		$*LLq$9$9!
E"5)44Z@@@@@(,RSS	a(@(@% #E

#hhYu-..+33C<<Q;;3x==1#4#4s{{
"ec(mm&;;;;;;q"ec(mm&;;;;;$)F5MMe}U33 !M.9YFF #H 2 2#(DK#7#7#7#7#&%<<<<<!QJE#&%#h--*?#?#?#?#?#? !M.9YFF #H 2 2#(19U#;#;#;#;#&%<<<<<1HC#&%#h--*?#?#?#?#?!U%   H,   !%(((,<<(((A::c"2333FF!S):5)A%B%BBBBB

 
>O
 
 
 "+!BCT!U!U	;	NNq 	# 	#A1IEq'CQ<Dzzt99AqqqD!!!U*!!!t}S999 %s$'+ad*;$;AqqqD!4y555HHJJxQ88FNN6""""g{33	 	0$/I! 	K,>	+JI(s   
!C,,+DDN)__name__
__module____qualname____doc__fmtr&   rf   r<   rA   r%   r   r      sI          C", ", ",Hw w w w wrA   r   N)	rj   	Bio.Alignr   r   Bio.Seqr   Bio.SeqRecordr   r   r<   rA   r%   <module>ro      s                              # # # # # #d d d d d
4 d d d d drA   