-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfill_tax.py
executable file
·54 lines (45 loc) · 1.96 KB
/
fill_tax.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/usr/bin/env python3
#Fill incomplete tax from sintax files.
#./fill_tax.py -i seed_sintax2.csv -o out_filled_tax.txt
import argparse, sys, getopt
def main ():
options = _set_options()
sys.stdout = open(options.outname,'wt')
_fill_tax(options)
def _fill_tax (options):
filin = open(options.input,"r")
for li in filin:
lip=li.rstrip("\n")
lik=lip.split(sep='\t')
tax=lik[3]
Otu=lik[0].split(sep=' ')[0]
tax_s=tax.split(sep=',')
RANK=len(tax_s)
if RANK==7:
print(Otu,"\t",tax, sep="")
elif RANK==6:
lastRank=tax_s[RANK-1].split(sep=":")[1]
print(Otu,"\t",tax,",s:",lastRank,"_Species" , sep="")
elif RANK==5:
lastRank=tax_s[RANK-1].split(sep=":")[1]
print(Otu,"\t",tax,",g:",lastRank,"_Genus" ,",s:",lastRank,"_Species" , sep="")
elif RANK==4:
lastRank=tax_s[RANK-1].split(sep=":")[1]
print(Otu,"\t",tax,",f:",lastRank,"_Family" ,",g:",lastRank,"_Genus" ,",s:",lastRank,"_Species" , sep="")
elif RANK==3:
lastRank=tax_s[RANK-1].split(sep=":")[1]
print(Otu,"\t",tax,",o:",lastRank,"_Order" ,",f:",lastRank,"_Family" ,",g:",lastRank,"_Genus" ,",s:",lastRank,"_Species" , sep="")
elif RANK==2:
lastRank=tax_s[RANK-1].split(sep=":")[1]
print(Otu,"\t",tax,",c:",lastRank,"_Class" ,",o:",lastRank,"_Order" ,",f:",lastRank,"_Family" ,",g:",lastRank,"_Genus" ,",s:",lastRank,"_Species" , sep="")
elif RANK==1:
lastRank=tax_s[RANK-1].split(sep=":")[1]
print(Otu,"\t",tax,",d:",lastRank,"_Domain" ,",c:",lastRank,"_Class" ,",o:",lastRank,"_Order" ,",f:",lastRank,"_Family" ,",g:",lastRank,"_Genus" ,",s:",lastRank,"_Species" , sep="")
def _set_options ():
parser = argparse.ArgumentParser()
parser.add_argument('-i','--i-sintax-taxtable',action='store',required=True,type=str,dest='input',help='Sintax file with taxonomy.')
parser.add_argument('-o','--output_name',action='store',default='out_filltax.txt',type=str,dest='outname',help='Output filename.')
args = parser.parse_args()
return args
if __name__ == "__main__":
main()