2222
2323swap_section = {"genbank" :"refseq" ,"refseq" :"genbank" }
2424
25- def run (cmd ,accession ):
25+ def run (cmd ,accession , timeout = None ):
2626 '''Run command'''
2727 try :
2828 res = check_call (cmd ,stderr = STDOUT ,stdout = PIPE ,shell = True ,
29- universal_newlines = True )
29+ universal_newlines = True , timeout = timeout )
3030 # res = Popen(cmd.split(" "),stderr=STDOUT, stdout=PIPE,
3131 # universal_newlines=True)
3232 # res = Popen(cmd,stderr=STDOUT, stdout=PIPE,
@@ -58,6 +58,7 @@ def check_taxonomic_group(accession,section=False,force=False):
5858 Returns
5959 taxonomic_group
6060 '''
61+ ltime = 10
6162 base_cmd = "ncbi-genome-download -A {accession} {group} -s {section} -n"
6263 if not section :
6364 section = get_section (accession )
@@ -67,19 +68,25 @@ def check_taxonomic_group(accession,section=False,force=False):
6768 group = group ,
6869 section = section
6970 )
70- e = run (cmd ,accession )
71+ e = run (cmd ,accession , timeout = ltime )
7172 if not e :
7273 #logger.debug(cmd)
73- return group ,section
74+ return group ,section , accession
7475 else :
7576 pass #logger.debug(e)
7677 '''group could not be found in section, if X on try other section'''
7778 '''This should not be done as genomes removed from RefSeq usually are better to skip'''
7879 if force :
79- group ,section = check_taxonomic_group (accession ,section = swap_section [section ])
80+ accession = list (accession )
81+ if accession [2 ] == "A" :
82+ accession [2 ] = "F"
83+ else :
84+ accession [2 ] = "A"
85+ accession = '' .join (accession )
86+ group ,section ,accession = check_taxonomic_group (accession ,section = swap_section [section ])
8087 if group :
81- return group ,section
82- return False ,False
88+ return group ,section , accession
89+ return False ,False , accession
8390
8491def get_genome (accession ,force = False ):
8592 '''Return taxonomic group of accession
@@ -89,7 +96,7 @@ def get_genome(accession,force=False):
8996 Returns
9097 taxonomic_group
9198 '''
92- group , section = check_taxonomic_group (accession ,force = force )
99+ group , section , accession = check_taxonomic_group (accession ,force = force )
93100 genome = {"accession" :accession ,"group" :group , "section" :section }
94101 return genome
95102
@@ -116,6 +123,7 @@ def ncbi_genome_download(genome,outdir="./downloads"):
116123 section = section ,
117124 outdir = outdir
118125 )
126+ logger .debug (cmd )
119127 e = run (cmd ,accession )
120128 if not e :
121129 logger .debug (cmd )
@@ -130,12 +138,16 @@ def download_genomes(genomes,added,filepath,missing,force=False):
130138 if gen_i :
131139 outdir = gen_i ["outdir" ]
132140 genome = get_genome (gen_i ["genome_id" ],force )
141+ if not genome ["group" ]:
142+ missing .put (genome ["accession" ].strip ())
143+ continue
133144 if genome ["accession" ].startswith ("GCF" ) or genome ["accession" ].startswith ("GCA" ):
134145 outdir = ncbi_genome_download (genome ,outdir )
135146 if outdir :
136147 added .put (genome ["accession" ].strip ())
137148 filepath .put (outdir )
138149 else :
150+ print ("missing" )
139151 missing .put (genome ["accession" ].strip ())
140152
141153def read_file (fin ):
0 commit comments