
    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 hhr files generated by HHsearch or HHblits in HH-suite.

You are expected to use this module via the Bio.Align functions.
    )	Alignment)
interfaces)Seq)	SeqRecordc                   (    e Zd ZdZdZd Zd Zd ZdS )AlignmentIteratora  Alignment iterator for hhr output files generated by HHsearch or HHblits.

    HHsearch and HHblits are part of the HH-suite of programs for Hidden Markov
    Models. An output files in the hhr format contains multiple pairwise
    alignments for a single query sequence.
    hhrc                 f   i }|D ]}|                                 }|dk    r n|                    d d          \  }}|dk    r|| _        E|dk    rt          |          ||<   ^|dk    r:|                    d          \  }}t          |          t          |          f||<   |dv rt	          |          ||<   |dk    rt          |          ||<   |d	k    r||d
<   |dk    r||d<   t          d|z            || _        	 t          |          }n# t          $ r t          d          d w xY w|                                g dk    sJ d}|D ]O}|                                 dk    r n4|dz  }|                    d d          \  }	}
t          |	          |k    sJ P|| _	        d| _
        d S )N    QueryMatch_columns
No_of_seqsz out of )NeffTemplate_NeffSearched_HMMsDateRundateCommandzCommand linezUnknown key '%s'zTruncated file.)NoHitProbzE-valuezP-valueScoreSSColsr   HMMTemplater   r   )stripsplit
query_nameintfloat
ValueErrormetadatanextStopIteration_length_counter)selfstreamr$   linekeyvaluevalue1value2counterword_s              -lib/python3.11/site-packages/Bio/Align/hhr.py_read_headerzAlignmentIterator._read_header   s    	; 	;D::<<DrzzD!,,JCg~~"''' #E

$$!&Z!8!8!$Vc&kk :111 %e'' #E

&+##	!!+0(( !3c!9::: 	:<<DD 	: 	: 	:.//T9	:zz||  
  
  
 
 
 
 
  	( 	(Dzz||r!!qLGjjq))GD!t99'''''s   D D0c                     !"#   !"#fd}d dddd #d dd"d!ddd}|D ]k}|                                 }|s|                    d          r|dd                              d d          \  t          |          }|                                }i |D ]P}|                    d          \  }}|dk    r!|dk    r|                     d          }t	          |          }||<   Q|d	k    r/	 t          |           t          d
          # t          $ r Y w xY w|                    d          r|                                z  ,|                    d          r j        }	 xj        dz  c_        |                                \  }}t          |           j        k    sJ  j         j
        k    rt          d j
         j        fz            |	dk    r |            c S |                    d          r|t          |           d          }|z  |                    d          r |                    d d          \  }}|z  4|                    d          r|                                \  }
}}}}}t          |          dz
  }t          |          }|                    d          sJ |                    d          sJ t          |dd                   }|z  |                    d          r|                                \  }
}}}}} j                            |          sJ t          |          dz
  }t          |          }|                    d          sJ |                    d          sJ t          |dd                    j        d         k    sJ ||z  |                    d          r |                    d d          \  }}"|z  "|                    d          r |                    d d          \  }}!|z  !|                    d          r|                                \  }
}}}}}t          |          dz
  }t          |          }|                    d          sJ |                    d          sJ t          |dd                   }|z  |                    d          r|                                \  }}}}}}|dk    sJ |t          |          dz
  }t          |          }|                    d          sJ |                    d          sJ t          |dd                   #|# |z   St          d|d d         z             |            } j
        } j        }	||	|k    rt          d||	fz            |S )Nc                  >   t                    } t                    | k    sJ | dk    rd S                                                                 g}t          j        |          \  }}|\  }}|dd d fxx         !z  cc<   |dd d fxx         z  cc<   |i}t	          |          }t          |j                  }!|i}t	          |          }	d}
t          |	|
          }d!z   d!z
   d	}|                    d
d          z  |j        d<   |                     d
d          z  |j        d<   |                    d
d          z  |j        d<   |d	                    d t                    D                       z  }dz   dz
   d	}r!|                    d
d          z  |j        d<   r!|                    d
d          z  |j        d<   ||g}t          ||          }|_        i |_        |j        d<   ||j        d<   |S )Nr   r   )length)id)hmm_namehmm_description)r8   annotations z%-s-r   	Consensusss_predss_dsspc              3   ,   K   | ]\  }}|d k    |V  dS )r>   N ).0tcs      r3   	<genexpr>zSAlignmentIterator._read_next_alignment.<locals>.create_alignment.<locals>.<genexpr>m   s3       1 1a!s((((((1 1    )coordinateszcolumn score
Confidence)lenencoder   parse_printed_alignmentr   r   r    replaceletter_annotationsjoinzipr;   column_annotations)"nlinesseq_datarI   target_seq_dataquery_seq_datasequence	query_seqquery
target_seqtarget_annotationstargetfmtalignment_confidencerecords	alignmentalignment_annotationscolumn_score
confidencer:   r9   query_consensusquery_lengthquery_sequencequery_ss_predquery_startr)   target_consensustarget_lengthtarget_nametarget_sequencetarget_ss_dssptarget_ss_predtarget_starts"                   r3   create_alignmentz@AlignmentIterator._read_next_alignment.<locals>.create_alignmentR   s   O$$A~&&!++++Avv$++--~/D/D/F/FGE$-$Ee$L$L!Hk.6+O^111-111,#^4HH\:::IiDO<<<E$o6HXm<<<J$#2" " {8J  F <'JJ=<+GJJJC58;K;S;STWY[;\;\5\F%k2369O9OPSUW9X9X3XF%i0369O9OPSUW9X9X3XF%i0#& 1 1!/:>>1 1 1 * * $  ;&GG,*DGGGC _8;o>U>UVY[]>^>^8^(5 [69M<Q<QRUWY<Z<Z6Z(3uoG!'{CCCI$9I!+-I(;GI(89MI(6rH   r   >r   =Aligned_cols
Identities%zDone!z2Found additional data after 'Done!'; corrupt file?r<   zNo z Expected %d alignments, found %dr   rJ   z
Q ss_pred zQ Consensus ()zQ r   z
T ss_pred z
T ss_dssp zT Consensus zT TzFailed to parse line '%s...'   )rstrip
startswithr   r%   r"   r#   r&   r   r(   r!   r'   rK   rsplitendswithr    r$   )$r)   r*   rq   	consensusr+   wordsr1   r,   r-   r0   key1key2startendtotalrX   namera   r7   rb   rc   rd   r:   r9   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   s$   `                  @@@@@@@@@@@@@@@@@r3   _read_next_alignmentz&AlignmentIterator._read_next_alignmentQ   s   *	 *	 *	 *	 *	 *	 *	 *	 *	 *	 *	 *	 *	 *	 *	 *	 *	 *	 *	 *	 *	 *	X 
	 ]	M ]	MD;;==D [M%% YM,0HNN4,C,C)/F||

(*%! 7 7D!%CJCn,, l** %S 1 1!%LLE16)#..7 LLL %L   %   D %% CM

,'' AM-"!ZZ\\
U5zzT]2222=4<//$:<78   Q;;++----- .. 5Mc)nn_../e#

.. 2M![[q11
U&00 /M;?::<<8dE9c5E

Q#hh'',,,,,~~c*****E!B$K((9,&& 'M:>**,,7dE8S%11$77777E

Q#hh'',,,,,~~c*****"52;//#t}_'EEEEE&"'K(*.. M![[q11
U%'.. M![[q11
U%'00 M;?::<<8dE9c5E

Q#hh'',,,,,~~c*****E!B$K(( I-  && M9=6T5(Cczzzz"E

Q#hh'',,,,,~~c***** #E!B$K 0 0'#(L8+ !?$ss)!KLLL$$&&	-F!2!2?67BSSTTTs   D11
D>=D>c                     | j         S )N)r'   )r)   s    r3   __len__zAlignmentIterator.__len__   s
    |rH   N)__name__
__module____qualname____doc__r^   r4   r   r   rC   rH   r3   r   r      sW          C3 3 3j\ \ \|    rH   r   N)	r   	Bio.Alignr   r   Bio.Seqr   Bio.SeqRecordr   r   rC   rH   r3   <module>r      s    
                          # # # # # #^ ^ ^ ^ ^
4 ^ ^ ^ ^ ^rH   