ó
£žbc           @€  sä  d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l m Z d  d l m Z m	 Z	 m
 Z
 m Z y d  d l m Z Wn! e k
 r d  d l m Z n Xd  d l m Z m Z d  d l m Z d  d l m Z m Z d  d	 l m Z d  d
 l m Z m Z m Z d  d l m Z m Z m  Z  d  d l! m" 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 „  Z0 d „  Z1 d „  Z2 d „  Z3 d „  Z4 d „  Z5 d „  Z6 d  „  Z7 d S(!   iÿÿÿÿ(   t   with_statementN(   t   defaultdict(   t   joint   existst   dirnamet   realpath(   t   OrderedDict(   t   qutilst   qconfig(   t   get_aux_out_fpaths(   t   create_minimap_output_dirt   parse_cs_tag(   t   get_chr_lengths_from_fastafile(   t   get_assembliest   check_misassembled_blockst	   Alignment(   t   get_path_to_programt   is_non_empty_filet   relpath(   t   COVERAGE_FACTORs
   circos.pngg{®Gáz¤?g¸…ëQ¸®?iPÃ  c   	      C€  s(  t  |  j ƒ  ƒ } d } t | d ƒ } t | d ƒ h } x^ |  j ƒ  D]P \ } } | j d j d d | | d t | ƒ d g ƒ d	 ƒ t | | ƒ } qF WWd  QXt | d
 ƒ } t | d ƒ [} | j d ƒ | j d ƒ t j	 r | d k r | j d ƒ nE | d k r| j d ƒ n) | d k r8| j d ƒ n | j d ƒ | j d ƒ | j d ƒ | j d ƒ | j d ƒ | j d ƒ | j d ƒ | j d ƒ | j d ƒ | j d ƒ | j d ƒ | j d ƒ | j d ƒ | j d  ƒ | j d! ƒ | j d" ƒ | j d# ƒ Wd  QX| | | f S($   Ni    s   reference.karyotype.txtt   ws   	t   chrt   -t   0t   lgreys   
s   ideogram.confs   <ideogram>
s
   <spacing>
i   s   default = 0r
i   s   default = 0.005r
id   s   default = 0.001r
s   default = 0.0005r
s   break = 0.005r
s   </spacing>
s   thickness = 30p
s   stroke_thickness = 2
s   stroke_color = black
s   fill = yes
s   radius = 0.85r
s   show_label = no
s   label_font = default
s-   label_radius = dims(ideogram,radius) + 0.05r
s   label_size = 36
s   label_parallel = yes
s   band_stroke_thickness = 2
s   show_bands = yes
s   fill_bands = yes
s   </ideogram>(
   t   lent   keysR   t   opent   itemst   writet   strt   maxR   t
   prokaryote(	   t   chr_lengthst
   output_dirt   num_chromosomest   max_lent   karyotype_fpatht   out_ft   namet   seq_lent   ideogram_fpath(    (    s?   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/circos.pyt   create_ideogram$   sF    5c         C€  so  t  | d ƒ } t | d ƒ K} | j d ƒ | j d ƒ | j d ƒ | j d ƒ | j d ƒ | j d ƒ | j d	 ƒ | j d
 ƒ | j d ƒ | j d ƒ | j d ƒ | j d ƒ | j d ƒ |  d d( k rñ d |  d } d } n d |  } d } | j d t | ƒ d ƒ | j d ƒ | j d ƒ | j d ƒ | j d ƒ | j d ƒ | j d ƒ | j d ƒ | j d ƒ | j d ƒ | j d ƒ | j d  ƒ | j d! ƒ | j d" ƒ | j d ƒ | j d ƒ | j d ƒ | j d# ƒ | j d ƒ | j d$ ƒ | j d! ƒ | j d% ƒ | j d& | ƒ | j d ƒ | j d ƒ | j d' ƒ Wd  QX| S()   Ns
   ticks.confR   s   show_ticks = yes
s   show_tick_labels = yes
s   show_grid = no
s   <ticks>
s   skip_first_label = yes
s   skip_last_label = no
s%   radius = dims(ideogram,radius_outer)
s   tick_separation = 2p
s    min_label_distance_to_edge = 0p
s   label_separation = 5p
s   label_offset = 5p
s   label_size = 12p
s   thickness = 3p
i
   i   g      ð?t   Mbpt   kbps   label_multiplier = s   
s   <tick>
s   spacing = 1u
s   color = dgrey
s   size = 12p
s   show_label = no
s   format = %s
s   </tick>
s   spacing = 5u
s   color = black
s   size = 18p
s   show_label = yes
s   label_size = 24p
s   spacing = 10u
s   size = 24p
s   label_size = 32p
s   suffix = " %s"
s   </ticks>i@B (   R   R   R   R   (   t   chrom_unitsR"   t   ticks_fpathR&   t   label_multipliert   suffix(    (    s?   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/circos.pyt   create_ticks_confL   s^    	
c         C€  s  t  | d ƒ } d d d g } t | d ƒ æ } t ƒ  } d d l m } xG | j j ƒ  D]6 \ } } | | k r~ g  | | <n  | | j | ƒ qY Wxy t | j ƒ  ƒ D]e \ }	 \ } }
 xP |
 D]H } | j	 d j  | d	 t
 |  | ƒ d
 | |	 t | ƒ g ƒ d ƒ q¿ Wq¦ WWd  QX| S(   Ns   highlights.txtt   oranget   purplet   blueR   iÿÿÿÿ(   t   contigs_analyzers   	R   s   fill_color=s   
(   R   R   R   t
   quast_libsR5   t   ref_labels_by_chromosomesR   t   appendt	   enumerateR   R   R   (   R!   R"   t   highlights_fpatht   colorsR&   t   chrom_by_refsR5   t   chromt   reft   it   chromosomes(    (    s?   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/circos.pyt   create_meta_highlights   s    	%Pc         C€  s"  g  } t  t ƒ } t |  ƒ ø} d  } d  } d  } d  } d  } d  }	 d  }
 xÄt | ƒ D]¶\ } } | j d d ƒ j d ƒ } | d k r÷ | j d ƒ } | j d ƒ } | j d ƒ } | j d ƒ } | j d	 ƒ } | j d
 ƒ }	 | j d ƒ }
 qX | r| d d k rqX qX | rEt | ƒ d k  rE| | j	 | j
 ƒ  ƒ qX | rX t | ƒ d k rX t | | ƒ t | | ƒ | | | | | |	 | |
 f \ } } } } } } t d | d | d | d | d | d k ƒ } | | _ | j r| j	 | ƒ | | j	 | ƒ qqX qX WWd  QX| | f S(   Ns   
t    s   	i    t   S1t   E1t	   Referencet   Contigt   IDYt	   Ambiguoust
   Best_groupt   CONTIGi   R'   t   startt   endt   ref_namet   is_best_sett   True(   R   t   listR   t   NoneR9   t   replacet   splitt   indexR   R8   t   stript   intR   t	   ambiguousRN   (   t   report_fpatht   aligned_blockst   misassembled_id_to_structuret   report_filet	   contig_idt	   start_colt   end_colt   ref_colt
   contig_colt	   ambig_colt   best_colR?   t   linet
   split_linet   idy_colRK   RL   RM   t	   ambiguityt   is_bestt   block(    (    s?   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/circos.pyt   parse_aligner_contig_report   sD    &-		!c         C€  sÂ   g  } xp |  D]h } | r | t  j | ƒ } t | ƒ \ } } | d  k rP q n  t | | d t ƒ} | j | ƒ q q W| rº t g  | D] } t | ƒ ^ q‰ ƒ } t	 |  | ƒ j
 | f Sd Sd  S(   Nt   filter_local(   NN(   R   t   label_from_fpath_for_fnameRi   RQ   R   RO   R8   R   R   R   t
   assemblies(   t   contigs_fpathst   contig_report_fpath_patternt   lists_of_aligned_blockst   contigs_fpathRX   RY   RZ   t   max_contigs(    (    s?   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/circos.pyt   parse_alignments·   s    %c         C€  s§  t  | |  j d ƒ } | d } t | d ƒ r} d  } x |  j D]} d | _ | j rf d | _ n | j r{ d | _ n  | r| j | j k r| j | j k rt	 | j
 | j
 ƒ t | j | j ƒ | k  rt | j
 | j
 ƒ | _
 t	 | j | j ƒ | _ qB | rQ| j d j  | j t | j
 ƒ t | j ƒ d | j g ƒ d	 ƒ n  | } qB W| j d j  | j t | j
 ƒ t | j ƒ d | j g ƒ d	 ƒ Wd  QX| S(
   Ns   .confiPÃ  R   t   greent   redt   ppurples   	s   color=s   
(   R   t   labelR   RQ   t
   alignmentst   colort   misassembledRW   RM   R   RK   t   minRL   R   R   (   t   assemblyt   ref_lenR"   t
   conf_fpatht   max_gapR&   t
   prev_alignt   align(    (    s?   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/circos.pyt   create_alignment_plotsÊ   s&    
			*.E
Hc   	   	   C€  s©   g  } t  |  ƒ 5 } x+ | D]# } | j t | j ƒ  d ƒ ƒ q WWd  QXt | ƒ } t t | ƒ ƒ t t | ƒ ƒ } } t | d ƒ } t	 j
 |  | ƒ | | | | f S(   Niÿÿÿÿs   gc.txt(   R   R8   t   floatRS   R   RV   Rz   R   R   t   shutilt   copy(	   t   gc_fpatht   data_dirt	   gc_valuest   fRc   t
   max_pointst   min_gct   max_gct   dst_gc_fpath(    (    s?   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/circos.pyt   create_gc_plotá   s    '%c         C€  sò  d } |  s d  | f St ƒ  } t | d ƒ } t | j ƒ  ƒ } t |  ƒ Ø } d } xÈ t | ƒ D]º \ }	 }
 |
 j ƒ  } |
 j d ƒ ré d } | d d } t	 | d ƒ d } | | } g  t
 | | d ƒ D] } g  ^ qÐ | | <qb t	 | d ƒ } | | | | j | ƒ | t 7} qb WWd  QXt | d ƒ ± } x§ | j ƒ  D]™ \ } } xŠ t | ƒ D]| \ } } | r†t | ƒ t | ƒ n d } | j d j | t | | ƒ t | d | ƒ t | ƒ g ƒ d	 ƒ | d 7} q^WqEWWd  QX| | f S(
   Ni    s   coverage.txtt   #i   i   iÿÿÿÿR   s   	s   
(   RQ   t   dictR   RP   t   valuesR   R9   RS   t
   startswithRV   t   rangeR8   R   R   t   sumR   R   R   (   t	   cov_fpatht   window_sizeR!   R"   R‰   t   cov_by_chromt   cov_data_fpathRˆ   t   posRT   Rc   t   fsR=   t   chrom_ordert	   chrom_lenR?   t   depthR&   t
   depth_listt   depthst	   avg_depth(    (    s?   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/circos.pyt   create_coverage_plotí   s4    
	
."Dc         €  sß  t  j |  j ƒ } t | d t j ƒ } t t | ƒ | ƒ } t | ƒ \ } }	 } } t |	 ƒ sk t j	 ro d  St | | d ƒ }
 t ‡  ‡ f d †  ƒ } t |	 ƒ ê } xà | D]Ø } t | j d ƒ d j ƒ  d ƒ } | j ƒ  d j ƒ  } | j ƒ  d j ƒ  } | } xz t | ƒ D]l } t | ƒ d } | j d	 ƒ rh| | t | ƒ ˆ c d 7<| d 7} q| j d
 ƒ s| | 7} qqWq° WWd  QXt |
 d ƒ 8} x.| j ƒ  D] \ } } d \ } } xÊ t | ƒ D]¼ \ } } | d k rÿ| d ˆ } qÖ| r:| j d j | t | ƒ t | ƒ d g ƒ d ƒ n  | j d j | t | ˆ ƒ t | d ˆ ƒ t | ƒ g ƒ d ƒ | d ˆ } d  } qÖW| r±| j d j | t | ƒ t | ƒ d g ƒ d ƒ q±q±WWd  QX|
 S(   Ns   ..s   .mismatches.txtc           €  s   d g ˆ  ˆ d S(   Ni    i   (    (    (   R|   R•   (    s?   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/circos.pyt   <lambda>  s    t   |i    i   iÿÿÿÿi   t   *t   +R   s   	R   s   
(   i    i    (   R   Rk   t   fpathR   R   t    detailed_contigs_reports_dirnameR
   R	   R   t	   show_snpsRQ   R   R   RV   RS   RU   R   R   R‘   R   R9   R   R   (   R{   R•   R|   t   root_dirR"   t   assembly_labelt   aligner_dirpatht   coords_basenamet   _t   coords_filtered_fpatht   mismatches_fpatht   mismatch_density_by_chromt   coords_fileRc   t   s1R=   t   cigart   ref_post   opt   n_basesR&   t   density_listRK   RL   R?   t   density(    (   R|   R•   s?   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/circos.pyt   create_mismatches_plot  sF    #5D
?c         €  s,  g  } d } |  s | | f Sx|  D]û} t  | | j d ƒ } t | j ƒ d k rZ q# n  d } t ‡  ‡ f d †  ƒ }	 t | d ƒ j}
 xØ | j D]Í } | j r¾ | j | j k r¾ | j n | j } | | j k rã | j | n d  } | sõ q” n  xi t
 | j ˆ t | j ˆ d t |	 | ƒ ƒ ƒ D]3 } | t |	 | ƒ k  r*|	 | | c d 7<q*q*Wq” Wx… |	 j ƒ  D]w \ } } xh t | ƒ D]Z \ } } |
 j d j  | t | ˆ ƒ t | d ˆ ƒ t | ƒ g ƒ d ƒ | d 7} q‹WqrWWd  QXt | ƒ r| j | ƒ n  t | | ƒ } q# W| | f S(   Ni    s   .txtc           €  s   d g ˆ  ˆ d S(   Ni    i   (    (    (   R|   R•   (    s?   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/circos.pyR¡   A  s    R   i   s   	s   
(   R   t   kindR   t   region_listR   R   t
   chromosomet   chr_names_dictt   seqnameRQ   R’   RK   Rz   RL   R   R9   R   R   R   R8   R   (   t   features_containersR•   R|   R"   t   feature_fpathsR‰   t   feature_containert   feature_fpatht
   num_pointst   gene_density_by_chromR&   t   regionR=   R?   t   gene_density_listR·   (    (   R|   R•   s?   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/circos.pyt   create_genes_plot5  s8    
$	";Dc         C€  sq   t  | d ƒ } t | d ƒ M } xC |  j ƒ  D]5 \ } } | j d j  | d t | ƒ g ƒ d ƒ q. WWd  QX| S(   Ns
   genome.txtR   s   	R   s   
(   R   R   R   R   R   (   R!   R"   t   genome_fpathR&   R'   R(   (    (    s?   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/circos.pyt   create_genome_fileV  s
    3c         C€  s€  t  | d ƒ } g  } d } xE t | ƒ D]7 \ } }	 | j d t | d ƒ | f ƒ | d 7} q( WxF | D]> }
 t |
 j ƒ d k rj | j |
 j | f ƒ | d 7} qj qj W| rÈ | j d | f ƒ n  t | d ƒ X } | j t	 |  j
 ƒ  ƒ d d d j  g  | D] \ } } d	 | | f ^ qƒ ƒ Wd  QXt  | d
 ƒ } t | d ƒ % } | j d t | | ƒ d ƒ Wd  QX| | f S(   Ns
   labels.txti    R{   i   t   coverageR   s
   	0	0	null	t   ,s
   track%d=%ss
   label.confsR   z = 10
type = text
label_size = 30p
label_font = bold
label_parallel = yes
file = sÍ   
r0 = eval(sprintf("%fr+5p", conf(conf(., track_idx)_pos)))
r1 = eval(sprintf("%fr+500p", conf(conf(., track_idx)_pos)))
<rules>
<rule>
condition = 1
value = eval(var(conf(., track_idx)))
</rule>
</rules>
(   R   R9   R8   R   R   Rº   R¹   R   R   RP   R   R   (   R!   Rl   R¾   t   coverage_fpathR"   t   labels_txt_fpatht   track_labelst   plot_idxR?   R{   RÀ   R&   Rv   t   labels_conf_fpath(    (    s?   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/circos.pyt   create_labels^  s&    !W	c         C€  sf   |  d d k r d } nI |  d d k r2 d } n0 |  d k rG d } n |  d k r\ d	 } n d
 } | S(   Ni   i
   i   i N  i   i'  iˆ  i   iè  id   i áõi áõi áõi@B (    (   R|   R•   (    (    s?   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/circos.pyt   set_window_size  s    				c   
   	   C€  sþ   t  | d ƒ } t | d ƒ Ú } | j d t j r9 d n d | | f ƒ t j rc | j d ƒ n  | j d ƒ x8 t |  ƒ D]* \ } }	 | j d | d	 |	 j f ƒ q} W| j d
 ƒ | rÎ | j d ƒ n  | rô | j d | ré d n d ƒ n  Wd  QX| S(   Ns
   legend.txtR   sn   1) The outer circle represents reference sequence%s with GC (%%) heatmap [from %d%% (white) to %d%% (black)].
t   sRB   s=   Color bars help to distinguish between different references.
s   
2) Assembly tracks:
s   	assembly%d - %s
i   sj   Assembly tracks are combined with mismatches visualization: higher columns indicate larger mismatch rate.
sK   
3) User-provided genes. A darker color indicates higher density of genes.
s:   
%d) The inner circle represents read coverage histogram.
i   i   (   R   R   R   R   t   is_combined_refR9   Rv   (
   Rl   RŠ   R‹   R¾   RË   R"   t   legend_fpathR&   R?   R{   (    (    s?   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/circos.pyt   create_legend  s    	 	"&c   +      C€  sk  t  | d ƒ } t | ƒ s+ t j | ƒ n  t |  ƒ }	 t |	 | ƒ \ }
 } } |
 dB k rd dC } n |
 dD k ry dE } n d } t | | ƒ } t |	 j ƒ  ƒ } t	 | ƒ } t
 | | ƒ \ } } g  | D] } t | | | ƒ ^ qÈ } | sð d  St | | ƒ \ } } } } t | | | | ƒ \ } } g  | D] } t | | | | | ƒ ^ q-} t | | |	 | ƒ \ } } t t | | | | g ƒ } t |	 | | | | ƒ \ } } t  | d ƒ }  d }! d	 }" t g t | ƒ }# | rýt |# d
 <|# t g t | ƒ 7}# n  | rt |# d
 <|# j t ƒ n  t |# d
 <t |  d ƒ }$ |$ j d ƒ |$ j d t | | ƒ ƒ |$ j d t | | ƒ ƒ |$ j d t | | ƒ ƒ |$ j d | ƒ |$ j d ƒ |$ j d t t ƒ d ƒ xI t t |# ƒ ƒ D]5 }% |$ j d |% |! f ƒ |! t 8}! |! |# |% 8}! qàW|$ j d t |# ƒ |! f ƒ |$ j d ƒ |$ j d | ƒ |$ j d t ƒ |$ j d ƒ |$ j d ƒ |$ j d ƒ |$ j d ƒ |$ j d ƒ |$ j d ƒ |$ j d ƒ |$ j d ƒ t j  rP|$ j d ƒ t! |	 | ƒ }& |$ j d  ƒ |$ j d t |& | ƒ ƒ |$ j d! ƒ |$ j d" ƒ |$ j d# ƒ |$ j d$ ƒ n  |$ j d t  d% d& ƒ ƒ |$ j d' | ƒ |$ j d( t |	 j" ƒ  ƒ ƒ |$ j d) ƒ |$ j d* ƒ xY | D]Q \ }' }% |$ j d+ ƒ |$ j d, |% ƒ |$ j d t | | ƒ ƒ |$ j d- ƒ q¹Wxjt# | ƒ D]\\ }% }( |$ j d+ ƒ |$ j d. ƒ |$ j d/ ƒ |$ j d0 ƒ |$ j d1 ƒ |$ j d t |( | ƒ ƒ |$ j d2 t |" ƒ d3 ƒ |$ j d4 t |" ƒ d5 ƒ |$ j d- ƒ | rm| |% rm|$ j d+ ƒ |$ j d6 ƒ |$ j d7 ƒ |$ j d8 ƒ |$ j d t | |% | ƒ ƒ |$ j d2 t |" ƒ d3 ƒ |$ j d4 t |" ƒ d5 ƒ |$ j d- ƒ n  |" d9 7}" qWxœ | D]” }) |$ j d+ ƒ |$ j d: ƒ |$ j d t |) | ƒ ƒ |$ j d; ƒ |$ j d2 t |" ƒ d3 ƒ |$ j d4 t |" ƒ d5 ƒ |$ j d- ƒ |" d9 7}" q‚W| r¾|$ j d+ ƒ |$ j d6 ƒ |$ j d7 ƒ |$ j d t | | ƒ ƒ |$ j d< ƒ |$ j d2 t |" ƒ d3 ƒ |$ j d4 t |" ƒ d5 ƒ |$ j d- ƒ |" d9 7}" n  |$ j d+ ƒ |$ j d: ƒ |$ j d t | | ƒ ƒ |$ j d= ƒ |$ j d> ƒ |$ j d? ƒ |$ j d@ ƒ |$ j d- ƒ |$ j dA ƒ Wd  QXt$ | | | | | | ƒ }* |  |* f S(F   Nt   datai
   i   i   i   iè  s   circos.confgffffffî?i    iÿÿÿÿR   s+   <<include etc/colors_fonts_patterns.conf>>
s   <<include %s>>
s   karyotype = %s
s   chromosomes_units = %d
s"   chromosomes_display_default = yes
s   track_width = s   
s   track%d_pos = %f
s   <image>
s	   dir = %s
s
   file = %s
s
   png = yes
s	   svg = no
s   radius = 1500p
s   angle_offset = -90
s   auto_alpha_colors = yes
s   auto_alpha_steps = 5
s   background = white
s	   </image>
s   <highlights>
s   <highlight>
s   r0 = 1r - 50p
s   r1 = 1r - 30p
s   </highlight>
s   </highlights>
t   etcs   housekeeping.confs   max_points_per_track* = %d
s   max_ideograms* = %d
s   <plots>
s   layers_overflow = collapse
s   <plot>
s   track_idx = track%d
s   </plot>
s   type = tile
s   thickness = 50p
s   stroke_thickness = 0
s   layers = 1
s$   r0 = eval(sprintf("%.3fr",conf(tracks   _pos) - conf(track_width)))
s$   r1 = eval(sprintf("%.3fr",conf(tracks   _pos)))
s   type = histogram
s   thickness = 1
s   fill_color = vlyellow
i   s   type = heatmap
s   color = ylorbr-9
s   fill_color = vlblue
s   color = greys-6
s   scale_log_base = 1.5
s   r0 = 1r - 29p
s   r1 = 1r - 1p
s	   </plots>
i@B i † i † i'  (%   R   R   t   ost   makedirsR   R*   R1   R“   R   RÑ   Rr   R   RQ   R   RÆ   R¸   R    R   t
   MAX_POINTSRÐ   t   TRACK_INTERVALR   t   BIG_TRACK_INTERVALR8   R   R   R   R   t   TRACK_WIDTHR’   t   circos_png_fnameR   RÓ   RA   R   R9   RÕ   (+   t	   ref_fpathRm   Rn   R"   R…   R¾   R”   t   loggerR†   R!   R$   R%   R)   R-   R.   R|   R•   Rl   t   contig_pointsR{   t   alignments_fpathsRŠ   R‹   t	   gc_pointsR¿   t   gene_pointst   mismatches_fpathsR—   t
   cov_pointsR‰   t   labels_fpathRÍ   R}   t   radiusRÎ   t   track_intervalsR&   R?   R:   Rv   t   alignments_confRÁ   t   circos_legend_fpath(    (    s?   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/circos.pyt   create_conf¢  sþ    		%+



	c      	   C€  s&  t  | ƒ s t j | ƒ n  t |  | | | | | | | ƒ \ } }	 t d ƒ }
 |
 sv | j d | d |	 d ƒ d S|
 d | g } t | d ƒ } t | d ƒ } t | t ƒ } t	 j
 | d t | d	 ƒ d
 t | d	 ƒ ƒ} | d k rt | ƒ r| |	 f S| j d | d | d ƒ d Sd  S(   Nt   circossØ   Circos is not installed!
If you want to create Circos plots, install Circos as described at http://circos.ca/tutorials/lessons/configuration/distribution_and_installation and run the following command:
	circos -conf s   
The plot legend is saved to s   
s   -confs
   circos.logs
   circos.errt   stdoutR   t   stderri    s&     Circos diagram was not created. See s    and s    for details(   NN(   NN(   R   RØ   RÙ   Rì   R   t   warningRQ   R   RÞ   R   t   call_subprocessR   R   (   Rß   Rm   Rn   R…   R¾   R”   R"   Rà   R}   Rë   t   circos_exect   cmdlinet	   log_fpatht	   err_fpatht   circos_png_fpatht   return_code(    (    s?   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/circos.pyt   do-  s"    '-
(8   t
   __future__R    RØ   t   reRƒ   t   collectionsR   t   os.pathR   R   R   R   R   t   ImportErrort%   quast_libs.site_packages.ordered_dictR6   R   R   t!   quast_libs.ca_utils.align_contigsR	   t   quast_libs.ca_utils.miscR
   R   t   quast_libs.fastaparserR   t   quast_libs.icarus_utilsR   R   R   t   quast_libs.qutilsR   R   R   t   quast_libs.reads_analyzerR   RÞ   RÝ   RÛ   RÜ   RÚ   R*   R1   RA   Ri   Rr   R   R   R    R¸   RÆ   RÈ   RÐ   RÑ   RÕ   Rì   Rø   (    (    (    s?   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/circos.pyt   <module>   sJ   "	(	3		(				 	(	!		#			‹