
bc           @  s  d  d l  m Z d  d l Z d  d l Z d  d l 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 d  d l m Z m Z d  d l m Z d  d l m Z d  d l m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z e e j   Z! y  d  d	 l" m# Z# d  d l$ Z$ Wn& d  d	 l% m# Z# d  d l% j& Z$ n Xd  d l' j( j) Z* d  d l+ Z+ e+ j, d
  e j- d e j.  Z/ e j- d e j.  Z0 d Z1 d e2 e1  d Z3 d e2 e1  d Z4 d e2 e1  d Z5 d d g Z6 d a8 d a9 d, Z: d Z; d Z< e= Z> i  Z? d a@ e j- d  d  ZA d   ZB d   ZC d   ZD d    ZE e! e= d!  ZF d"   ZG d#   ZH d$   ZI d d%  ZJ d&   ZK d'   ZL d(   ZM d)   ZN d*   ZO d d d+  ZP d S(-   i(   t   with_statementN(   t   defaultdict(   t   isdirt   isfilet   join(   t   qconfigt   qutils(   t   _get_fasta_file_handler(   t
   get_logger(
   t   is_non_empty_filet   slugifyt   correct_namet   get_dir_for_downloadt   show_progresst   download_blast_binariest   get_blast_fpatht   md5t   run_parallelt
   add_suffix(   t   urlopenix   s$   [a-zA-Z0-9.]+\_(?P<taxons>[A-Z]\S+)$s)   (?P<id>\S+\_[0-9.]+)[_ |](?P<seqname>\S+)g33333Ca@s:   http://www.arb-silva.de/fileadmin/silva_databases/release_s	   /Exports/t   SILVA_s   _SSURef_NR99_tax_silva.fastas   silva.s   .dbt   makeblastdbt   blastni
   i   s.   https://eutils.ncbi.nlm.nih.gov/entrez/eutils/s/   &tool=quast&email=quast.support@bioinf.spbau.rui    s   ([0-9]+)c         C  sE   g  t  j | |  d  D]* } | j   r5 t |  n	 | j   ^ q S(   Ni    (   t   ret   splitt   isdigitt   intt   lower(   t   st   _nsret   text(    (    sO   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/search_references_meta.pyt   natural_sort_key:   s    c         C  s   d } d  } x | d k  r yo t |   } d a | j   } t | t  s] | j d  } n  | d  k su d | k r | j   t  n  PWq t k
 r | d 7} | d k r t d 7a t d k r t	 j
 d d d n  d  St j d  q Xq W| S(	   Ni    i   s   utf-8t   ERRORi   s   Cannot established internet connection to download reference genomes! Check internet connection or run MetaQUAST with option "--max-ref-number 0" to disable reference search in the NCBI database.t   exit_with_codei  (   t   NoneR   t   connection_errorst   readt
   isinstancet   strt   decodet   closet	   Exceptiont   loggert   errort   timet   sleep(   t   urlt   attemptst   responset   request(    (    sO   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/search_references_meta.pyt   try_send_request?   s.    
	


c   	      C  s   g  } x |  D] } t  t d | j | f t  } | s@ q n  t j |  } | j d  } | d  k rp q n  | j d  j d  } | d  k r q n  | j d  } | s | r t	 |  t	 |  k  r | } t	 |  d k r Pq q q W| S(   Ns9   elink.fcgi?dbfrom=assembly&db=nuccore&id=%s&linkname="%s"t   LinkSett	   LinkSetDbt   Linki   (
   R2   t   ncbi_urlR   t   quast_fieldst   ETt
   fromstringt   findR"   t   findallt   len(	   t   ref_id_listt   dbt   best_ref_linkst   idR0   t   xml_treet   link_sett   link_dbt	   ref_links(    (    sO   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/search_references_meta.pyt   get_download_links^   s&    %c         C  s  |  j  d d  }  d } d } d |  k rB |  j d  \ }  } n  d |  k rf |  j d  \ }  } n  t t d |  | r | d n d | r | d n d t f  } | s t j d	  d  St j	 |  } | j
 d
  d  k s | j
 d  d  k rt j d |  d  S| j
 d
  j d k r'd  S| j
 d  j d  } t | d  } d }	 | srd }	 t | d  } n  t |  | k rt j d |  j  d d   d  S|	 d k r| rt d   | D  }
 t } g  } d } x} t d t |
  |  D]c } t t d d j |
 | | | !  } | r| d d k r| j | j   j d   qqWg  | D] } | j d  d ^ qf} t | d  e } x[ t t | |  d t D]> \ } } | st } n d | j   } | j | j    qWWd  QXnQ | rOy! t | d j
 d  j |  WqOt j d |  j  d d   qOXn  t j j |  sed  St |  st j  |  d  S| S(    Nt   _t   +t    s	   +isolate+s   +strain+s<   esearch.fcgi?db=assembly&term=%s+[Organism]%s%s&retmax=100%ss
   +[Isolate]s	   +[Strain]sC   Empty/No response from NCBI. Could be an Internet connection issue!t   Countt   IdListsm   Unexpected/malformed response from NCBI. Please try to find out what is going wrong or contact us. Response: t   0t   Ids1   assembly_nuccore_refseq+OR+assembly_nuccore_insdct   refseqt	   wgsmastert   assembly_nuccore_wgsmastersB   %s has too fragmented reference genome! It will not be downloaded.t    c         s  s!   |  ] } | j  d   j Vq d S(   RL   N(   R:   R   (   t   .0t   link(    (    sO   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/search_references_meta.pys	   <genexpr>   s    i   i    s9   efetch.fcgi?db=sequences&id=%s&rettype=fasta&retmode=textt   ,t   >s   

t   wt   keys   
s   Failed downloading %s!(!   t   replaceR   R2   R6   R7   R*   t   warningR"   R8   R9   R:   R   R;   RE   R<   t   infot   sortedt   Falset   rangeR   t   extendt   rstript   opent   zipR   t   Truet   writet   download_wgsmaster_contigst   ost   pathR   R	   t   remove(   t   organismt	   ref_fpatht   max_ref_fragmentst   isolatet   strainR0   RA   R=   R?   t   used_dbt   ref_idst   is_first_piecet   fasta_filest
   chunk_sizet   it   fastat   ft   fasta_namest
   fasta_filet   name(    (    sO   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/search_references_meta.pyt   download_refu   sn    	7*	(#&(	 !$c      
   C  s  t  | d  d } t t d |   } t j |  } xn | d D]b } | j d  d k rA | j j d  d d	  } t | j j d  d
 j d  d  } PqA qA Wd  } x | d k r[| r[yl d | | f }	 d | d  | d d !| |	 f }
 t
 |
  } | j   } t | j d  d  } d } Wq d  } | d k rX| d 8} qXq Xq Wt | d  : } x0 t r| j |  } | sPn  | j |  qqWWd  QXt | d  # } t j d d | g d | Wd  QXt j |  d  S(   Nt   tmps   .gzs:   esummary.fcgi?db=nuccore&id=%s&rettype=text&validate=falsei    t   Namet   Extrat   |ii   i   t   .s   %s.%s.fsa_nt.gzs2   ftp://ftp.ncbi.nlm.nih.gov/sra/wgs_aux/%s/%s/%s/%si   i   s   Content-lengthi   i   t   wbRU   t   gunzips   -ct   stdout(   R   R2   R6   R8   R9   t   getR   R   R   R"   R   RY   t
   getheadersR_   Ra   R$   Rb   t
   subprocesst   callRd   Rf   (   t   ref_idRh   t
   temp_fpathR0   RA   t   fieldt   download_systemt   genome_versiont   fsizet   fnameR.   t   metat   bsizeRs   t   buffer(    (    sO   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/search_references_meta.pyRc      s<    )!
	"c         C  s5  t  d d t d g |  d | a t s, t S| ri t j j t  re |  j d t  t j	 t  n  t
 St t t  a t j j t d  r t j j t d  t k r t
 St j j t d  } t j j t t d  } t j j t t  } |  j   t j j |  r'|  j d t t   n |  j d	 t t   t j j t  s`t j t  n  t j   } t t d } | d
 } | d } | d }	 yE | j | | t  | j | |	 t  t j | |	  st  n  Wn) t k
 r|  j d | t f  t SXt j |	  t j | |  |  j d |  t j  |  s"|  j d  | d }
 d | } t j! t" j# |  d t$ |
 d  d t$ | d  d |  | d } t$ |
  I } t$ | d  1 } x' | D] } | j% | j& d d   qWWd  QXWd  QXt j |
  t j | |  n  |  j d  t' d  d | t f } t j! t" j# |  d t$ | d  d t$ | d  d |  } | d k st j j( t d  st j j t d  t k  rt j j( t d  rt j t d  n  |  j d t d |  t St) j* s1t j |  t j |  n  t
 S(   Nt   silvat   Silvas   .nsqt
   only_cleans	   Removing s   blastdb.logs   .gzsO   SILVA 16S ribosomal RNA gene database (version %s) has already been downloaded.sA   Downloading SILVA 16S ribosomal RNA gene database (version %s)...s	   .downloads   .md5s   Failed downloading SILVA 16S rRNA gene database (%s)! The search for reference genomes cannot be performed. Try to download it manually, put under %s/ and restart your command.s,   Processing downloaded file. Logging to %s...s'   Unpacking and replacing " " with "_"...s	   .unpackeds   gunzip -c %sR   RU   t   stderrt   aR*   s   .substitutedRP   RF   s   Making BLAST database...R   s    -in %s -dbtype nucl -out %si    s    Failed to make BLAST database ("s3   "). See details in log. Try to make it manually: %s(+   R   t   silva_downloaded_fnamet   blastdb_dirpathR[   Rd   Re   R   RY   t   shutilt   rmtreeRa   R   t   db_fpathR   t   getsizet   min_db_nsq_fsizet   silva_fnameR&   t   silva_versiont   makedirst   urllibt   FancyURLopenert   silva_db_urlt   retrieveR   R   t
   verify_md5t
   ValueErrorR)   R+   Rf   t   moveR	   t   call_subprocesst   shlexR   R_   Rb   RW   R   t   existsR   t   debug(   R*   R   t	   log_fpatht   db_gz_fpatht   silva_fpatht   silva_downloadt   silva_remote_fpatht   silva_download_in_progress_patht   silva_md5_remote_fpatht   silva_md5_local_fpatht   unpacked_fpatht   cmdt   substituted_fpatht   in_filet   out_filet   linet   ret_code(    (    sO   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/search_references_meta.pyt   download_blastdb   s    "2
	




:
)<?	c           s  t  j d |    } d d d d d g } t   f d   | D  r t  j d |  t j j | t j j    d
  }	 t    = }
 t |	 d  % } x |
 D] } | j	 |  q WWd  QXWd  QX|	 } n  t
 | |  } t
 | |  } t d  d | t | f } t j t j |  d t | d  d t | d  d t  t  j d d | | f  t | d  $ } | j d   t    f  Wd  QXd  S(   Ns     s   processing s   .gzs   .gzips   .bz2s   .bzip2s   .zipc         3  s   |  ] }   j  |  Vq d  S(   N(   t   endswith(   RQ   t   ext(   t   contigs_fpath(    sO   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/search_references_meta.pys	   <genexpr>.  s    s
   unpacking s	   .unpackedRU   R   s+    -query %s -db %s -outfmt 7 -num_threads %sR   R   R   R*   s'   BLAST results for %s are saved to %s...s   Assembly: %s md5 checksum: %s
s     processing s     unpacking (   R*   RY   t   anyRd   Re   R   t   basenameR   R_   Rb   t   get_blast_output_fpathR   R   R   R   R   R   t
   writelinesR   (   R   t   labelt   corrected_dirpatht	   err_fpatht   blast_res_fpatht   blast_check_fpatht   blast_threadst   blast_query_fpatht   compress_extR   t   f_int   f_outt   lt	   res_fpatht   check_fpathR   t
   check_file(    (   R   sO   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/search_references_meta.pyt   parallel_blast*  s&    %	:c         C  s   |  d t  |  S(   NRF   (   R
   (   t   blast_output_fpathR   (    (    sO   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/search_references_meta.pyR   @  s    c         C  s  g  } g  } g  | D] } | ^ q }	 xt  |  D]\ }
 } t |  | |
  } t | | |
  } d  } t } t j j |  r2 t |  r2 t |  A} x7| D]/} d | k r t	 } n  | r@| r@| j
   d | j
   d } } | | j   k r| | | k r| | } t j d | |
  |	 j |  qq | r | r | j
 d  } t |  d k r| d d k r| | d j   j
 d  7} q| d d	 k r| | d j   j
 d  7} qqq q WWd  QXq2 q2 W|	 t |  t |  f S(
   Ns   ---i   is,     Using existing BLAST alignments for %s... RP   i    s   Downloaded:RS   s   Not_founded:(   t	   enumerateR   R"   Ra   Rd   Re   R   R	   R_   R[   R   t   keysR*   t	   main_infoRf   R<   R^   t   set(   R   R   t	   files_md5t   assemblies_fpathst
   assembliest   labelst   downloaded_organismst   not_founded_organismst   assemblyt   blast_assembliesRq   t   assembly_fpathR   R   t   existing_assemblyt   assembly_infoR   R   R   (    (    sO   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/search_references_meta.pyt   check_blastD  s6    	!"
 7c         C  s&  t  j   t j j | d  } t j j | d  } t j j | d  } t d   |  D  } t d   |  D  }	 t | | | |	 |  |  \ }
 } } g  } d  } t j	 } | r d } t
 |  } d  } n t |
 | | | | |  \ } } } | rVt | d t } g  | D] \ } } } | ^ q} g  | D] \ } } } | | ^ q4} n  g  t j |  D]@ \ } } } | D]* } t j |  ryt j j | |  ^ qyqf} t | |  | | | | | | | | |  } | st  j d  n  t j rt j j |  rt j |  n  | j   | S(	   Ns	   blast.errs   blast.checks	   blast.resc         s  s'   |  ] } | j  t | j   f Vq d  S(   N(   t   fpathR   (   RQ   R   (    (    sO   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/search_references_meta.pys	   <genexpr>g  s    c         s  s   |  ] } | j  | f Vq d  S(   N(   R   (   RQ   R   (    (    sO   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/search_references_meta.pys	   <genexpr>h  s    i'  t   reverses    Reference genomes are not found.(   R*   t   print_timestampRd   Re   R   t   dictR   R"   R   t   MAX_REFERENCE_FRAGMENTSt   parse_refs_listt   process_blastRZ   Ra   t   walkR   t   check_is_fasta_filet   search_referencesR   R   R   Rf   t   sort(   R   R   t   downloaded_dirpathR   t   ref_txt_fpathR   R   R   R   R   R   R   R   t   species_listt   replacement_listRi   t   species_by_assemblyt   species_scorest   replacement_dictt   speciest   query_idt   scoreRe   t   dirst   filest   filet   downloaded_ref_fpathst
   ref_fpaths(    (    sO   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/search_references_meta.pyt   dob  s<    
$			")7
c         C  s*  d  } d  } t j |   r t j |   } | r | j d  } | j d d  } | j   d } | r | d k r d | k r d | k r | j   d	 } q q nK t j |   r t j |   } | r | j d
  } q n |  j d d  } | r t j d d |  } | j d  d } n  | | f S(   Nt   taxonst   ;s   	i    t   Bacteriat   Archaeat   Chloroplastt   mitochondriait   seqnameRP   RF   s   [\[,/\]](   R   R   (	   R"   t   silva_patternt   matcht   groupRW   R   t   ncbi_patternR   t   sub(   t   organism_idR   R   t   mt   domain(    (    sO   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/search_references_meta.pyt   parse_organism_id  s(    	!c         C  si   |  j  d  } d  } t |  d k re | d d | d } | d d k re | d | d 7} qe n  | S(   NRF   i   i    s   sp.i   (   R   R"   R<   (   R   t
   seqname_fst   species_name(    (    sO   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/search_references_meta.pyt   get_species_name  s    c   )        s5  t  |   d k rt d t  s% d St j r t j a t t  r g  t j	 t  D] } | j
 d  rS | ^ qS } | r t t j | d j d d   a q n/ t t  r t j
 d  r t t  d   a n  t j j t d  st j d d d qqt   sd Sn  t j j | d  } t  |   d k rt j d	  t t j t  |    }	 t d
 t j |	  }
 g  |  D]' } | j | j | | | | |
 f ^ qy} t t | |	 d t n  t j   g  } t   } d } t t  } x1| D])} g  } g  } t | |  } t j j |  rxd } t  |  =} d \ } } } } } x| D]} | j!   } | j" d  rUd } d | k rk| j#   j! d  d j! d  } d | k r| j$ d  n d } d | k r| j$ d  n d
 } d | k r| j$ d  n d } d | k r(| j$ d  n d } d | k rI| j$ d  n d } qkqU| | k  rUt  |  | k rU| | } | | } t% | |  }  t& | |  }! t% | |  }" |  t j' k rk|! t j( k rk|" t j) k rkt* |  \   }#   sqUn  t+    }$ |$ rhd   k rhd |$ k rh| d k r4|$ | k r| j,   | |" f  |# rs|# t- t.    <n  | j, |$  | d
 7} qbg  | D]0 \ }% }& }' t+ |%  |$ k r|% |& |' f ^ q}( |( rb|" |( d d k rb| j/ |( d  | j,   | |" f  |# r$|# t- t.    <n  | d
 7} qbqe  | | k re| | j,    | d
 7} qeqhqkqUqUWWd  QXn  t0 | d t } | t j1  } xZ | D]R \   } }" | st2   f d   | j3   D  r| j,   | |" f  qqWg  | D] \   } }"   ^ q| | <qW| s(d  S| | | f S(!   Ni    t	   filenamess   .nsqRH   s  You should specify path to BLAST database obtained by running makeblastdb command: either path to directory containing <dbname>.nsq file or path to <dbname>.nsq file itself. Also you can rerun MetaQUAST without --blast-db option. MetaQUAST uses SILVA 16S RNA database by default.R!   i   s	   blast.ress   Running BlastN..i   t   filter_resultsi   t   #t   Fieldss   Fields: is   , s   query ids
   subject ids
   % identitys   alignment lengthi   s	   bit scorei   t
   unculturedt   gut_metagenomeR   c         3  s   |  ] }   | k Vq d  S(   N(    (   RQ   R   (   R   (    sO   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/search_references_meta.pys	   <genexpr>	  s    (   NNN(   NNN(   NNNNN(   NNN(4   R<   R   t   blast_filenamesR"   R   t   custom_blast_db_fpathR   R   Rd   t   listdirR   R   RW   R   Re   R*   R+   R   R   t   mint   max_threadst   maxR   R   R   R   Ra   R   R   t   listR   R   R_   R   t
   startswitht   stript   indext   floatR   t   identity_thresholdt
   min_lengtht   min_bitscoreR	  R  t   appendt   taxons_for_kronaR   Rf   RZ   t   max_referencesR   t   values()   R   R   R   R   R   R   Rs   t   db_aux_filesR   t   n_jobsR   R   t   parallel_run_argsR   R   t   max_entriesR   R   t   assembly_scorest   assembly_speciesR   t   refs_for_queryt   res_filet   query_id_colt   subj_id_colt   idy_colt   len_colt	   score_colR   t   fsR   R  t   idyt   lengthR   R   R  t
   query_namet   seq_query_idt	   seq_scoret
   seq_scores(    (   R   sO   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/search_references_meta.pyR     s    		1(	1
	"!!!!'

-:#**c	         C  s  t  j j | t |  d  }	 | t |  d }
 d  } t } t  j j |	  rs | | k rs t | |	 |  } n! t  j j |	  r t	 } |	 } n  | d 8} | rB| d 7} | r t
 j d | j d d  |
 | | f  | |  k r2|  j |  q2n6 t
 j d | j d d  |
 | | f  |  j |  | j |  n0 t
 j d | j d d  |
 f  | j |  | | | f S(   Ns   .fastaRP   i   s<     %s%s | was downloaded previously (total %d, %d more to go)RG   s:     %s%s | successfully downloaded (total %d, %d more to go)s'     %s%s | not found in the NCBI database(   Rd   Re   R   R   R<   R"   R[   R   Rw   Ra   R*   R   RW   R!  t   add(   R   Rg   Ri   R   t   max_organism_name_lenR   R   t   total_downloadedt   total_scored_leftRh   t   spacest   new_ref_fpatht   was_downloaded(    (    sO   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/search_references_meta.pyt   process_ref  s0    	

	 	 #c         C  sm   g  } t  |   U } xK | j   j d  D]4 } | r+ | j   j d d  } | j |  q+ q+ WWd  QX| S(   Ns   
RP   RF   (   R_   R$   R   R  RW   R!  (   R   t	   organismsRs   R   Rg   (    (    sO   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/search_references_meta.pyR   /  s    c         C  sa  g  } g  } d } t  |   } | d k rZ t j rV t j j |  rV t j |  n  | Sd } x# |  D] } t t  |  |  } qg Wx# | D] } t t  |  |  } q Wt j	   t j
 d t |  d  t  |  d k r t j
 d  n  x t |   D] \ } } t | | | | | | | | | 	 \ } } } | r |
 r x |
 | D]w } | |  k rQt j
 d | j d d  d  t | | | | | | | | | d	 	 \ } } } | } | rPqqQqQWq q Wxt | |  D]v\ } } t | |  } t j j |  rGt |  & } | j   } | | j d
   } Wd  QXn d | j t | j  f } t | d   } | j |  | j d  |	 sg  | D]5 } | ^ qn& g  | D] } | |	 | k r| ^ q} |	 sg  | D]5 } | ^ qn& g  | D] } | |	 | k r| ^ q} | j d d j |   | j d d j |   Wd  QXqW| S(   Ni    s7   Trying to download found references from NCBI. Totally s    organisms to try.sA   MetaQUAST will attempt to use previously downloaded references...s     RG   RP   sG    was not found in NCBI database, trying to download the next best matchi   s   
s   Assembly: %s md5 checksum: %s
RU   s   
---
s   Downloaded: %s
RS   s   Not_founded: %s
(   R<   R   R   Rd   Re   R   Rf   R  R*   R   R   R&   R   R@  RW   R`   R   R_   R$   R:   R   R   R   R   (   RA  R   R   Ri   R   R   R   R   R   t   organisms_assembliesR   R   R   R;  R<  R:  Rg   t   idxRh   t
   next_matchRF   R   R   R   R   R   t   cur_downloaded_organismst   cur_not_founded_organisms(    (    sO   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/search_references_meta.pyR   9  s^    
!	))$i   (Q   t
   __future__R    Rd   R   R   R   R   R,   t   collectionsR   t   os.pathR   R   R   t
   quast_libsR   R   t   quast_libs.fastaparserR   t   quast_libs.logR   t   quast_libs.qutilsR	   R
   R   R   R   R   R   R   R   R   t   LOGGER_META_NAMER*   t   urllib2R   R   t   urllib.requestR1   t   xml.etree.ElementTreet   etreet   ElementTreeR8   t   sockett   setdefaulttimeoutt   compilet   IR  R  R   R&   R   R   R   R  R"   R   R   R   R6   R7   R[   t   is_quast_first_runR"  R#   R   R2   RE   Rw   Rc   R   R   R   R   R   R	  R  R   R@  R   R   (    (    (    sO   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/search_references_meta.pyt   <module>   sj   F			D	#N			'		
	f		