Skip to content

Commit 48badca

Browse files
committed
Added functionality to --force, to allow the program to try download genomes from genbank or refseq
1 parent f97dace commit 48badca

1 file changed

Lines changed: 20 additions & 8 deletions

File tree

flextaxd/modules/functions.py

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@
2222

2323
swap_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

8491
def 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

141153
def read_file(fin):

0 commit comments

Comments
 (0)