U
    ñad’:  ã                   @   s"  d dl Z d dlZd dlZd dlZd dlmZ e ¡  d dlmZ eej	 
ejd¡ƒ d dlmZmZmZmZ d dlmZmZmZ d dlmZ d dlmZ eejƒZe ¡  d	Zd
d„ Zedkrzeejdd… ƒZe eƒ W n> e!k
r   e "¡ \Z#Z$Z#e %e$¡ ej&dddd Y nX dS )é    N)Úqconfig)Ú
addsitedirZsite_packages)ÚqutilsÚrun_barrnapÚplotter_dataÚunique_kmers)ÚcleanupÚcheck_dirpathÚcheck_reads_fpaths)Úparse_options)Ú
get_loggerFc           8      C   s"	  t tjdttjƒ d d dd | s>tjtjd t d¡ z dd l}| 	t¡ | 	t
¡ W n( ttfk
r†   t	tƒ t	t
ƒ Y nX zt tjd	¡ W nF tk
rà   zt tjd
¡ W n tk
rÚ   t d¡ Y nX Y nX tg}tt||  ƒ\}}tjtjtj  }}}tj |tj¡}t ¡  t ¡  ddlm}	 |	j }
zdd l}| 	|	¡ W n" ttfk
rz   t	|	ƒ Y nX |
|	_ g |	_!ddlm"} tj#r°tj |dtj¡}n"tj $|¡rÈt% &|¡ t '|¡ t (t¡ t)tƒ |rŽt ¡  t d¡ |}t
 *||¡}tj+r’tj,s8tj-s8tj.s8t d¡ nTddlm+} | /||tj |tj0¡¡}|d k	r’| 1d|¡ | 1dd¡ t
 2||¡}nd}t ¡  t d¡ t
 3||||	¡\}}|D ]&}|	 4|¡}| 5|	j6j7t
 8|¡¡ q¼t9|ƒt_:tj;}tj<}tj=s"tj>s"tj>s"tj?s"tj@rXddlmA} |j/||tj |tjB¡td\}}}|t_C|sptjDddd dS tjEr®tjFr®tG|ƒD ]$\}}tjE| tjF| ftHjI|< qˆ|t_Jd }tjKrØ|jLrØtj |tjM¡}tjNrúddlOmP} |jQrúd t_NddlmR} | /||tj |d¡|¡\}}tjSrL|rLtT /tj |d¡||t¡ g }g }d }d } |rÚddlmU}! tjVo|tjW }"|! /|||"tj |tjX¡|tjC¡\}#}$|D ]0}|#| |!jYjZkr¨| [|¡ | [|$| ¡ q¨tj\rìt d¡ d }%d }&t9|ƒrl|rltj |tjX¡}%dd lm]}' |' /||||tj |d!¡¡ dd"lm^}( |( /|||tj_tj`|%tj |d#¡¡}&d })tjarždd$lma}* |* /|tjbtj |d%¡¡})tjcrÔdd&lmd}+ |+ /|tjbtj |d%¡tjVtje¡})|)d kròt d¡ t fd'¡ tjgrth /|tj |d%¡t¡ tjir”tj#s”tjjd(krDt d¡ t d)¡ nPtjkdd… d*k rnt d¡ t d+¡ n&dd,lmi}, |, /|tj |tjl¡t¡ |	 m|¡\}-}.tjKsºtjnsºtjorBt p¡  t d-¡ t d.¡ z*|%rtj |%tjq¡}/tj |%tjr¡}0nd }/d }0tjn}1tjoo$|o$t9|ƒ}2tsd/d0„ |1|2|fD ƒƒ}3|r\t d1|3 ¡ | t|¡ |1r¬t d2|rrd3nd|3f ¡ dd4lmu}4 |4j/||/|||0|&|||tjN|)d5}|2röt d6|3|3f ¡ dd7lmv}5 |5 /|||/||&|tj |d8¡t¡\} }6t d9¡ W n> twk
r@   t d:¡ |r<tj x|¡r<t y|¡ Y nX t p¡  t d;¡ t d<|- ¡ t d=|. ¡ tjzr¤dd>lOm{}7 |7 |||tHjI¡ |7 }|tj~|¡ |rÆtj x|¡rÆt d?| ¡ | røt d@| tj |6¡tj |  €dAdB¡¡f ¡ |	rt dC| ¡ t|ƒ tj‚tjƒdDS )ENzYou are trying to run it from z
.z<Please, put QUAST in a different directory, then try again.
é   )Z	exit_code)Ústreamé   r   z
en_US.utf8zen_US.UTF-8z'Python locale settings can't be changed)Ú	reporting)Úplotterz..z
Reference:znUpper Bound Assembly cannot be created. It requires mate-pairs or long reads (Pacbio SMRT or Oxford Nanopore).)Úoptimal_assemblyZ
UpperBoundÚ zContigs:)Úreads_analyzer)Zexternal_loggerzxNone of the assembly files contains correct contigs. Please, provide different files or decrease --min-contig threshold.T)Zfake_if_nested_runé   )Ú
json_saver)Úbasic_statsr   Zk_mer_stats)Úcontigs_analyzer)Úaligned_statsr   )Úgenome_analyzerZgenome_stats)ÚglimmerZpredicted_genes)ÚgenemarkzXGenes are not predicted by default. Use --gene-finding or --glimmer option to enable it.ZmacosxzBUSCO can be run on Linux onlyz2.7z8BUSCO does not support Python versions earlier than 2.7.)Ú	run_buscoz"Creating large visual summaries...z7This may take a while: press Ctrl-C to skip this step..c                 S   s   g | ]}t t|ƒƒ‘qS © )ÚintÚbool)Ú.0Úvaluer   r   úopt/quast-5.2.0/quast-lg.pyÚ
<listcomp>ø   s     zmain.<locals>.<listcomp>z4  1 of %d: Creating PDF with all tables and plots...z&  %d of %d: Creating Icarus viewers...é   )Úicarus)Ústdout_patternÚfeaturesÚ	cov_fpathÚphysical_cov_fpathZgc_fpathZjson_output_dirÚgenes_by_labelsz#  %d of %d: Creating Circos plot...)Úcircosr,   ZDonez..step skipped!zRESULTS:z-  Text versions of total report are saved to z8  Text versions of transposed total report are saved to )Ú
html_saverz-  PDF version (tables and plots) is saved to zK  Circos plot is saved to %s (legend is in %s, configuration file is in %s)z.pngz.confz(  Icarus (contig browser) is saved to %s)Z
check_test)„r	   r   Z
QUAST_HOMEÚstrZusageÚsysÚstderrÚexitÚ	importlibÚreloadr   ÚImportErrorÚAttributeErrorÚlocaleÚ	setlocaleÚLC_ALLÚ	ExceptionÚloggerZwarningÚ__file__r   Úoutput_dirpathZ	referenceÚlabelsÚosÚpathÚjoinZcorrected_dirnameZ	main_infoZprint_paramsÚ
quast_libsr   ÚreportsZassembly_fpathsr   Úis_combined_refÚisdirÚshutilZrmtreeÚmkdirZset_max_threadsr
   Zcorrect_referencer   Zpacbio_readsZnanopore_readsZ
mate_pairsZdoZoptimal_assembly_basenameÚinsertZprocess_labelsZcorrect_contigsÚgetZ	add_fieldZFieldsÚNAMEZlabel_from_fpathÚlenZassemblies_numr)   Zphys_cov_fpathZreads_fpathsZreference_samZ
sam_fpathsZ
bam_fpathsr   Zreads_stats_dirnameZbedÚerrorZused_colorsZused_lsÚ	enumerater   Zdict_color_and_lsZassemblies_fpathsZ
draw_plotsZcan_draw_plotsZplots_fnameZjson_output_dirpathZquast_libs.html_saverr   Zsimplejson_errorr   Zuse_kmcr   r   Z
prokaryoteZcheck_for_fragmented_refZ detailed_contigs_reports_dirnameZAlignerStatusZOKÚappendZis_agb_moder   r   r(   Zoperonsr   Zgenes_lengthsZgene_findingr   ZmetagenemarkZnoticeZrna_gene_findingr   r   Zplatform_nameÚversionZbusco_dirnameZ
save_totalZcreate_icarus_htmlZdraw_circosZprint_timestampZicarus_report_fname_patternZcontig_report_fname_patternÚsumZfill_all_pdf_filer&   r,   ÚKeyboardInterruptÚisfileÚremoveZhtml_reportr-   Zsave_colorsZsave_total_reportZ
min_contigÚbasenameÚreplacer   Z	finish_upZtest)8Úargsr2   Z
quast_pathZquast_py_argsZcontigs_fpathsr<   Z	ref_fpathr=   Zcorrected_dirpathr   rB   r   Zoriginal_ref_fpathr   Zoptimal_assembly_fpathZold_contigs_fpathsZcontigs_fpathZreportr)   r*   r   Z	bed_fpathÚiZlabelZall_pdf_fpathr   r   Zicarus_gc_fpathZcircos_gc_fpathZaligned_contigs_fpathsZaligned_lengths_listsZicarus_html_fpathZcircos_png_fpathr   Z	is_cyclicZaligner_statusesZaligned_lengths_per_fpathZ detailed_contigs_reports_dirpathZfeatures_containersr   r   r+   r   r   r   Zreports_fpathsZtransposed_reports_fpathsZreport_for_icarus_fpath_patternr'   Zdraw_alignment_plotsZdraw_circos_plotZnumber_of_stepsr&   r,   Zcircos_legend_fpathr-   r   r   r#   Úmain    sÔ   ÿÿ





ÿ



(þþ    þ

   þ    ý ÿ






ÿ
       ü   ÿ

ÿÿrW   Ú__main__r   zexception caught!T)Zexit_with_codeZ	to_stderr)'r6   r>   r/   rE   rA   r   Zcheck_python_versionZsiter   r?   r@   ZLIBS_LOCATIONr   r   r   r   Zquast_libs.qutilsr   r	   r
   Zquast_libs.options_parserr   Zquast_libs.logr   ZLOGGER_DEFAULT_NAMEr:   Zset_up_console_handlerrC   rW   Ú__name__ÚargvZreturn_coder1   r9   Úexc_infoÚ_Ú	exc_valueZ	exceptionrK   r   r   r   r#   Ú<module>
   s2   
  

