
bc           @  s[  d  d l  m Z d  d l  m Z d  d l m Z d  d l m Z m Z m Z d  d l	 m
 Z
 e
 e j  Z d  d l m Z d d d     YZ d	 e f d
     YZ d e f d     YZ d e f d     YZ d d  Z d   Z d   Z d   Z e d e e d  Z d   Z d   Z d   Z d   Z d d  Z d   Z  d   Z! d   Z" d S(   i(   t   with_statement(   t   division(   t   qconfig(   t   is_same_referencet   get_ref_by_chromosomet   parse_cs_tag(   t
   get_logger(   t   correct_namet   Misassemblyc           B  sh   e  Z d  Z d Z d Z d Z d Z d Z d Z d Z	 d Z
 d	 Z d
 Z d Z d Z d Z d Z d Z RS(   i    i   i   i   i   i   i   i   i   i	   i
   i   i   i   i   i   (   t   __name__t
   __module__t   LOCALt	   INVERSIONt
   RELOCATIONt   TRANSLOCATIONt   INTERSPECTRANSLOCATIONt   SCAFFOLD_GAPt   LOCAL_SCAFFOLD_GAPt
   FRAGMENTEDt   POTENTIALLY_MIS_CONTIGSt   POSSIBLE_MISASSEMBLIESt
   MATCHED_SVt   POTENTIAL_MGEt   SCF_INVERSIONt   SCF_RELOCATIONt   SCF_TRANSLOCATIONt   SCF_INTERSPECTRANSLOCATION(    (    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyR      s    t   StructuralVariationsc           B  s    e  Z d Z d   Z d   Z RS(   t
   inversionst   relocationst   translocationsc         C  s   g  |  _  g  |  _ g  |  _ d  S(   N(   R   R   R   (   t   self(    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyt   __init__*   s    		c         C  s'   t  |  j  t  |  j  t  |  j  S(   N(   t   lenR   R   R   (   R   (    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyt	   get_count/   s    (   s
   inversionss   relocationss   translocations(   R	   R
   t	   __slots__R    R"   (    (    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyR   '   s   	t   Mappingc           B  s   e  Z d Z d d d d d d d d d d d 
 Z e d    Z d   Z d   Z d   Z	 d d d  Z
 d   Z d   Z d   Z d   Z RS(   t   s1t   e1t   s2t   e2t   len1t   len2t   idyt   reft   contigt   cigart   ns_post   sv_typec      
   C  sv   | | | | | | | | |	 f	 \	 |  _  |  _ |  _ |  _ |  _ |  _ |  _ |  _ |  _ |
 |  _	 | |  _
 | |  _ d  S(   N(   R%   R&   R'   R(   R)   R*   R+   R,   R-   R.   R/   R0   (   R   R%   R&   R'   R(   R)   R*   R+   R,   R-   R.   R/   R0   (    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyR    6   s    W		c         C  s  | j    } | d | d k oX | d k oX | d k oX | d k oX d k n si t |   | d } | d } g  d	 d
 d d d d g D] } t | |  ^ q \ } } } } }	 }
 t | d  } | d } t | | | | |	 |
 | | | | 
 S(   Ni   i   i   i
   i   t   |i   i   i    i   i   i   i   i   i	   i   (   t   splitt   AssertionErrort   intt   floatR$   (   t   clst   lineR,   R-   t   iR%   R&   R'   R(   R)   R*   R+   R.   (    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyt	   from_line<   s    ]

G
c         C  sY   d j  d   |  j |  j d |  j |  j d |  j |  j d |  j d |  j |  j	 g D  S(   Nt    c         s  s   |  ] } t  |  Vq d  S(   N(   t   str(   t   .0t   x(    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pys	   <genexpr>J   s    R1   (
   t   joinR%   R&   R'   R(   R)   R*   R+   R,   R-   (   R   (    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyt   __str__I   s    9c         C  sb   d j  d   |  j |  j d |  j |  j d |  j |  j d |  j d |  j |  j	 d |  j
 g D  S(   NR:   c         s  s   |  ] } t  |  Vq d  S(   N(   R;   (   R<   R=   (    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pys	   <genexpr>N   s    R1   (   R>   R%   R&   R'   R(   R)   R*   R+   R,   R-   R.   (   R   (    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyt
   coords_strM   s    9c      
   C  sA   d j  d   |  j |  j d |  j |  j d |  j |  j g D  S(   NR:   c         s  s   |  ] } t  |  Vq d  S(   N(   R;   (   R<   R=   (    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pys	   <genexpr>R   s    R1   (   R>   R%   R&   R'   R(   R)   R*   (   R   (    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyt	   short_strQ   s    t    t   Truec         C  sG   d j  d   |  j |  j |  j |  j |  j |  j |  j | | g	 D  S(   Ns   	c         s  s   |  ] } t  |  Vq d  S(   N(   R;   (   R<   R=   (    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pys	   <genexpr>U   s    (   R>   R%   R&   R'   R(   R,   R-   R+   (   R   t	   ambiguityt   is_best(    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyt   icarus_report_strT   s    c         C  sC   t  |  j |  j |  j |  j |  j |  j |  j |  j |  j	 |  j
 
 S(   N(   R$   R%   R&   R'   R(   R)   R*   R+   R,   R-   R.   (   R   (    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyt   cloneW   s    c         C  s   t  |  j |  j  S(   s&   Return start on contig (always <= end)(   t   minR'   R(   (   R   (    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyt   startZ   s    c         C  s   t  |  j |  j  S(   s&   Return end on contig (always >= start)(   t   maxR'   R(   (   R   (    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyt   end^   s    c         C  s   |  j  |  j k  S(   s7   Returns True for positive strand and False for negative(   R'   R(   (   R   (    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyt
   pos_strandb   s    (   s   s1s   e1s   s2s   e2s   len1s   len2s   idys   refs   contigs   cigars   ns_poss   sv_typeN(   R	   R
   R#   t   NoneR    t   classmethodR9   R?   R@   RA   RF   RG   RI   RK   RL   (    (    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyR$   3   s   '						t
   IndelsInfoc           B  s    e  Z d Z d   Z d   Z RS(   t
   mismatchest
   insertionst	   deletionst   indels_listc         C  s(   d |  _  d |  _ d |  _ g  |  _ d  S(   Ni    (   RP   RQ   RR   RS   (   R   (    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyR    j   s    			c         C  sL   |  j  | j  7_  |  j | j 7_ |  j | j 7_ |  j | j 7_ |  S(   N(   RP   RQ   RR   RS   (   R   t   other(    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyt   __add__p   s
    (   s
   mismatchess
   insertionss	   deletionss   indels_list(   R	   R
   R#   R    RU   (    (    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyRO   g   s   	c         C  s=  | j  |  j d } |  j  | j d } |  j   rI | j   rI | } nD |  j   rl | j   rl | } n! | j  |  j  k r | } n | } t } | d  k	 r3| } |  j | j k  r | | t j k  r | | } n2 |  j | j k r	| | t j k  r	| | } n  t |  t |  k  r3| } t } q3n  | | f S(   Ni   (	   R%   R&   RL   t   FalseRM   R   t   extensive_misassembly_thresholdt   absRC   (   t   align1t   align2t   cyclic_ref_lent   distance_align1_align2t   distance_align2_align1t   distancet   cyclic_momentt   cyclic_distance(    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyt   distance_between_alignmentsx   s(    			%%c         C  sa   | j  |  j d } |  j  | j d } | j  |  j  k rM t d |  } n t d |  } | S(   Ni   i    (   R%   R&   RJ   (   RY   RZ   R\   R]   t   overlap(    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyt   cyclic_back_ends_overlap   s    c         C  sd   |  j    r  | |  j |  j n
 |  j d } | j    rF | j d n | | j | j } | | g S(   Ni   (   RL   R,   R&   R%   (   RY   RZ   t   ref_lenst   gap1t   gap2(    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyt   __get_border_gaps   s    --c         C  s   |  j  | j  k r t St j r} t j rB t |  j  | j   rB t St g  t |  | |  D] } | t j k ^ qX  r} t	 Sn  t S(   N(
   R,   RV   R   t   check_for_fragmented_reft   is_combined_refR   t   allRg   t   fragmented_max_indentRC   (   RY   RZ   Rd   t   d(    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyt$   is_fragmented_ref_fake_translocation   s    	4c         C  sK  | j    |  j   d } | r3 | t |  7} n  | r? | n d  }	 |	 d  k	 r |  j | j k r t |  | |	 |  j  \ }
 } n t |  |  \ }
 } d } | d k  r |
 d k r | } q |
 | k  r |
 | } q n  |  j |  j k } | j | j k } |
 | } i | d 6| d 6| d 6| d 6t d 6t d 6} | rmt	 | | |  |  rmt
 | d <t | f S| rt |  | | |  rt
 | d <t | f S| rt t |  | |   | d <t | f S| r t |  |  t |  k r t |  |  | d <n  |  j | j k s7t | d  t j k s7| | k rAt
 | f St | f S(	   Ni   i    t   inconsistencyt   distance_on_contigt   misassembly_internal_overlapR_   t   is_svt   is_scaffold_gap(   RI   RK   R!   RM   R,   Ra   R'   R(   RV   t   check_is_scaffold_gapRC   t   check_svt   sumRg   Rc   RX   R   RW   (   RY   RZ   t
   contig_seqRd   t	   is_cyclict   region_struct_variationst   is_fake_translocationt   is_cyclic_contigRo   t   cyclic_ref_lenst   distance_on_referenceR_   Rp   t   strand1t   strand2Rn   t   aux_data(    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyt   is_misassembly   sD    "






!+
c      	     s}  d  d  t  j d }   f d       f d   }   f d   } |  j | j k r x| j D]. } | |  | |  s | | |  |  re t Sqe Wn|  j |  j k  | j | j k  k r"t |  t  j k  r"x| j D]> } |  j | d j k r | |  |  s| | |  r t Sq WnW| j	 } | j
 |  j
 k  rS| j
 |  j }	 }
 n |  j | j
 }	 }
 xt |  D]\ } } | d j |  j k rs  |	 | d  rs  |
 | d  rt S| d j d	 k ru| d j } | d } x | t |  k  rn| | d j
 | | k rn| | d j |  j k rn| | }   |
 | d  rTt S| d j } | d 7} qWquqsqsWt S(
   Nid   i   i   c           sA   | j  d k r  n   } | j | |  k o> | j | k SS(   Nt   QuastDEL(   R0   R%   R&   (   t   post   svt	   max_error(   t   max_error_svt   max_error_trivial_del(    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyt
   __match_ci   s    c           s`   | d j  |  j  k r\ | d j  | j  k r\   |  j | d  r\   | j | d  r\ t Sd  S(   Ni    i   (   R,   R&   R%   RC   (   RY   RZ   R   (   R   (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyt   __check_translocation   s    ,,c           s     |  j  | d  rG | d j  |  j k o> | d j k n rG t S  |  j | d  r | d j  |  j  k o | d j k n r t Sd  S(   Ni    i   (   R%   R&   RC   (   t   alignR   (   R   (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyt   __check_inversion   s    CCi    i   R   (   R   RW   R,   R   RC   R'   R(   RX   R   R   R%   R&   t	   enumerateR0   R!   RV   (   RY   RZ   Rn   Rx   t   max_gapR   R   R   t
   variationst   sv_startt   sv_endt   indext   prev_endt   index_variation(    (   R   R   R   sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyRt      sD    $94	)

c         C  s  |  s
 d  St   } t |   t} xj| D]b} | j d  } | j d  s) y't d t | d  d t | d  d t | d  d	 | d
  } t d t | d  d t | d  d t | d  d	 | d
  } | j | j k r| j	 j
 | | f  nr d | d
 k r*| j j
 | | f  nI d | d
 k sZd | d
 k sZd | d
 k rs| j j
 | | f  n  Wqt k
 rqXq) q) WWd  QX| S(   Ns   	t   #R%   i   R&   i   R,   i    R0   i   i   i   i   t   INVt   DELt   INSt   BND(   RM   R   t   openR2   t
   startswithR$   R4   R   R,   R   t   appendR   R   t
   ValueError(   t	   bed_fpathRx   t   fR7   t   fsRY   RZ   (    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyt   find_all_sv  s(    	CC0c         C  s  g  } x|t  |  t  |   k  rt  |  } |  | s] | d t  |   k s] |  | d rp | j t  q	 n  |  | d \ } } } } |  | d d \ } } }	 | |	 k rt| t j k rt| j | j k rt| j | j k  | j | j k  k rt| j   | j	   }
 } | |
 d } t
 | |  \ } } | | } t |  t j k rt| j t  | j t  q	 qtn  | j t  q	 W| S(   Ni   i    (   R!   R   RV   R   RW   R,   R'   R(   RK   RI   Ra   RX   RC   (   t   misassembliest   is_potential_mget   idxRY   t   start_in_reft   ms_typet   mge_lenRZ   t
   end_in_reft   ms_type2t   start_in_contigt   end_in_contigRo   R|   R_   Rn   (    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyt   detect_potential_mge0  s(    0-$
	c         C  sw   t  |   t j k rs | j | j k rs | j   | j   k rs | j   | j | j k  k rs t | | |  rs t St S(   N(	   RX   R   t   scaffolds_gap_thresholdR,   RL   R%   t   is_gap_filled_nsRC   RV   (   Rn   Rv   RY   RZ   (    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyRs   H  s
    '6c   
      C  s   d  d  d  } d   } d   } | j   |  j   d } | d k rK d S|  j } | d  k	 r| d | | d | d f n d } |  j | j k r | | d	 |  j   d }	 | | | |  j   d |	  7} n< | |  d
 | j   d }	 | | |  | j   d |	  7} | |  j | f S(   Nc   
      S  s  d } |  j  } |  j  |  j k  r' d n d } d } |  j s@ | Sxt |  j  D]} | j d  r | rw | | k s | r | | k r | | 7} n  | d | 7} qP | j d  r t | d  } n t |  d } | }	 | r(| | | | k s| | k r(| | | d k r| n d }	 nI | rq| | k  sN| | | | k  rq| | d k rc| n d | }	 n  |	 d k  r| j d  s| | | 7} n  | j d  r| | 8} n  | j d  rP | | 7} qP qP n  | j d  rG| | | 7} | | |	 7} | r)| d | d |	 | 7} q| r| | |	 d  7} qqP | j d  r| | |	 8} | r| d | d |	 | 7} q| r| | |	 d  7} qqP | j d  rP | | | 7} | d t |	  7} qP qP W| |  _ | S(	   Ns   cs:Z:i   ii    t   *t   :t   -t   +(   R'   R(   R.   R   R   R4   R!   R;   (
   R   t	   new_startt   new_endt	   new_cigart   ctg_post   strand_directiont   diff_lent   opt   n_basest   corr_n_bases(    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyt   __shift_cigarR  s\    		&#&#	c         S  s   d |  j    } |  j |  j k  r_ |  j | |  j | 7_ | |  _ |  j |  j d |  _ n: |  j | |  j | 8_ | |  _ |  j |  j d |  _ |  j |  j d |  _ | d |  j    7} | S(   Ns   %si   s    --> %s
(   RA   R'   R(   R%   R*   R&   R)   (   R   R   R   t   align_modification(    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyt   __shift_start  s    		c         S  s   d |  j    } |  j |  j k  r_ |  j |  j | | 8_ | |  _ |  j |  j d |  _ n: |  j |  j | | 7_ | |  _ |  j |  j d |  _ |  j |  j d |  _ | d |  j    7} | S(   Ns   %si   s    --> %s
(   RA   R'   R(   R&   R*   R%   R)   (   R   R   R   R   (    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyt   __shift_end  s    		i   i    sF   			Excluding internal overlap of size %d between Alignment %d and %d: i   RB   R   R   (   i    N(   RM   RI   RK   R*   (
   RY   RZ   R8   R   R   R   Ro   t	   prev_len2t   overlap_msgR   (    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyt   exclude_internal_overlapsP  s    4			.# c         C  s@   |  | j    | j   d !} | j d  } | t |  | f S(   Ni   t   N(   RK   RI   t   countR!   (   Rv   RY   RZ   t   gap_in_contigt   ns_count(    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyt"   count_ns_and_not_ns_between_aligns  s    c         C  s.   |  | j    | j   d !} d t j | k S(   Ni   R   (   RK   RI   R   t   Ns_break_threshold(   Rv   RY   RZ   R   (    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyR     s    c   1      C  sq  d } |  d } | j  } t } t } t   } d } g  } g  } xt t |   d  D]} |  | d } t | | |  } t | | |  \ } } t | | | | | |
 |  \ } } d } | rt | j	  t | j	  } } | j	 | j	 k rt
 j r| | k rd } qEd } n( t | d  t
 j k r?d } n d } | j | j k rm| j | j } }  n | j | j } }  | j | | | | j  f | |  | f g  n | j g   | j | | | | | f  | } qW Wd  }! t
 j rt |  }! n  |  d } g  }" xzt t |   d  D]b} |  | d } | | \ } } } } } | rv| | 8} | j j |  n  | d }# | d	 }$ | | d
 7} | d }% | j j | j   d  | j j d | d t |  f  | j | j	 g   j |  | j j | j   d  t | j	  t | j	  } } | d rr| j j d  | j j d  | j t j  n| d rMt |#  t
 j k rd }& | j t j  | | j t j  | j j d |& d  nB d }& | j t j  | | j t j  | j j d |& d  | j j d  | j j d t |#  |& d  n| r|! r|! | r| j j d  | j j d  | j t j   n| rt! } | d 7} |" j |  d } | s| j" j | j# d  t! } n  | j" j d  | j j d  d }' | d k rKt j$ }( |	 | | c d 7<|	 | | c d 7<nY | d k rct j% }( nA | d k rt j& }( d t |#  |% rd n d }' n	 t j' }( | j |(  | | j |(  |( t j$ k r| | j |(  n  t( | | |  r| d 7} | j |( t j) t j'  n  | j j | |'  | j" j | |'  | j j | |'  | j j d  | j" j d | j* | j+ | j* | j+ f d  | j j d  d  | j | j	 i   | j <d  | j | j	 i   | j <nxd |% rd n d | j	 | j	 k rd! n d }) |# d k r]|% r]| j j d" |) d#  | j j d$ |) d  n|# d k r| j	 | j	 k r| j j d" |) d#  | j t j,  | | j t j,  | j j d$ |) d  nt |#  t
 j- k  rt	t. | | |  d t/ t
 j0 t
 j- d  k rt	t. | | |  \ }* }+ |# d k r| j j d% |+ |* f |) d  | j1 |+ 7_1 | j j d& |) d  q^
t |#  }, |, t
 j2 k rd' n d( }- |# d k  rd) n d* }. t/ d |+ |,  }/ | j j d+ |- |. |, |/ |* f |) d  | j3 j |,  |. d) k r1	| j4 |, 7_4 n | j5 |, 7_5 | j1 |/ 7_1 | j j d, |- j6   |) d  n t
 j7 r	|" j |  d } n  |$ d k  r	| j j d-  nN |$ d k r	| j j d.  n/ |# d k  r	| j j d-  n | j j d.  | j j d/ t |#  |) d  | j j d0 |) d  | j t j8  | | j t j8  | } | | j  |$ d k  r
|$ n d 7} q&Wt |   d } | j j d1 | d t |  f d  | j j | j   d  | j | j	 g   j |  | j j | j   d  |" j |  t9 |"  }0 | rt |"  d k r|  d2 j	 |  d j	 k r|0 d3 | |  d j	 k rt |  d2 |  d | | | d4 t! d5 |
 \ } } | r| d r| d rt | d  }# t
 j7 s|# t
 j- k  r|" d c |" d2 7<|" d2  }" qqn  | j: |"  |0 t |  k s^t; d6 |  d j# |0 t |  f   | | | | |0 f S(7   Ni    i   RB   s   interspecies translocationt   translocationRn   t
   relocationt	   inversionRo   Rp   R_   s   
s   			Real Alignment %d: %s
Rq   sY   			  Not a misassembly (structural variation of the genome) between these two alignments
s=   fake: not a misassembly (structural variation of the genome)
Rr   s    (extensive)s(   fake: scaffold gap size wrong estimations    (local)s0   			  Scaffold gap between these two alignments, s1   gap lengths difference (reference vs assembly) = sT   			  Not a misassembly (possible transposable element) between these two alignments
s8   fake: not a misassembly (possible transposable element)
s   Extensive misassembly (s   			  Extensive misassembly (s   , inconsistency = s+    [linear representation of circular genome]s   , scaffold gap is presents   ) between these two alignments
s   ) between %s %s and %s %st   Ms$    [fragmentation of reference genome]s   			  Not a misassemblys    between these two alignments
s   fake: not a misassemblysM   			  Stretch of %d mismatches between these two alignments (number of Ns: %d)s   indel: stretch of mismatchess   Indel (<= 5bp)s   Indel (> 5bp)t	   insertiont   deletionsW   			  %s between these two alignments: %s of length %d; %d mismatches (number of Ns: %d)s   indel: s>   			  Overlap between these two alignments (local misassembly).s:   			  Gap between these two alignments (local misassembly).s    Inconsistency = s   local misassemblys   			Real Alignment %d: %sigffffff?Rz   Rx   sk   Internal QUAST bug: contig aligned length is greater than contig length (contig: %s, len: %d, aligned: %d)!(<   R*   RV   RO   t   rangeR!   Rm   R   R   R   R,   R   Ri   RX   RW   R%   R&   R   RM   t   large_genomeR   t   stdout_ft   writet   icarus_out_fRF   R;   t
   setdefaultt   coords_filtered_fR@   R   R   R   R   R   RC   t   misassembly_fR-   R   R   R   R   R   R   R'   R(   R   t   local_misassembly_min_lengthR   RJ   t   min_alignmentRP   t   SHORT_INDEL_THRESHOLDRS   RQ   RR   t   lowert	   strict_NAR   Ru   t   extendR3   (1   t   sorted_alignsRw   t   aligned_lengthst   region_misassembliesRd   t
   ref_alignst   ref_featuresRv   t   misassemblies_by_reft   istranslocations_by_refRx   t	   ca_outputRp   t
   prev_alignt   cur_aligned_lengtht   is_misassembledt   contig_is_printedt   indels_infot   cnt_misassembliesR   t   misassembly_infoR8   t
   next_alignRy   t   internal_overlapR   t   is_extensive_misassemblyR   t   misassembly_typet   prev_reft   next_refR   R   R   t   contig_aligned_lengthsRn   Ro   R_   t   scaff_gap_typet   msgt   misassembly_idt
   reason_msgt	   ns_numbert   not_ns_numbert   indel_lengtht   indel_classt
   indel_typeRP   t   contig_aligned_length(    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyt   process_misassembled_contig  s^   
					.
	




$

%	
				
0/		"%		"((M N(    (#   t
   __future__R    R   t
   quast_libsR   t   quast_libs.ca_utils.miscR   R   R   t   quast_libs.logR   t   LOGGER_DEFAULT_NAMEt   loggert   quast_libs.qutilsR   R   t   objectR   R$   RO   RM   Ra   Rc   Rg   Rm   RV   R   Rt   R   R   Rs   R   R   R   R   (    (    (    sW   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/analyze_misassemblies.pyt   <module>   s.   4			,	6			c		