Scripts for creating taxonomy database

This commit is contained in:
Anton Nekrutenko
2008-02-06 18:27:10 +00:00
parent 2f96d33be7
commit b9d3d02303
12 changed files with 1568 additions and 0 deletions
+24
View File
@@ -0,0 +1,24 @@
PYTHONPATH="../../lib:../../eggs:../../eggs/`../check_python_ucs.py`"
export PYTHONPATH
echo "Getting files from NCBI..."
wget ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz
wget ftp://ftp.ncbi.nih.gov/pub/taxonomy/gi_taxid_nucl.dmp.gz
wget ftp://ftp.ncbi.nih.gov/pub/taxonomy/gi_taxid_prot.dmp.gz
echo "Unzipping untarring..."
gunzip -c taxdump.tar.gz | tar xvf -
gunzip gi_taxid_nucl.dmp.gz
gunzip gi_taxid_prot.dmp.gz
cat gi_taxid_nucl.dmp gi_taxid_prot.dmp > gi_taxid_all.dmp
rm gi_taxid_nucl.dmp gi_taxid_prot.dmp
echo "Parsing nodes.dmp..."
cat nodes.dmp | tr -s "\t" "|" | tr "|" "\t" | cut -f 1,2,3,5 > nodes.txt
echo "Collapsing taxonomy. This will take several hours..."
python tax1_NodeParser.py nodes.txt > node2child.txt
echo "Parsing names.dmg"
cat names.dmp | cut -f 1,2,4 -d "|" | tr -s "\t" "|" | tr "|" "\t" | sed s/\"//g > names.txt
echo "Running tax2_Node2Name.py"
python tax2_Node2Name.py node2child.txt names.txt taxonomy.db
echo "Running tax3_gi2tax.py"
python tax3_gi2tax.py taxonomy.db gi_taxid_all.dmp
echo "Done!.."
+8
View File
@@ -0,0 +1,8 @@
PYTHONPATH="../../lib:../../eggs:../../eggs/`../check_python_ucs.py`"
export PYTHONPATH
rm -f /tmp/taxTest.db
python tax1_NodeParser.py tax1_test_argv1.txt > tax2_test_argv1.txt
python tax2_Node2Name.py tax2_test_argv1.txt tax2_test_argv2.txt /tmp/taxTest.db
python tax3_gi2tax.py /tmp/taxTest.db tax3_test_argv2.txt
python tax.py /tmp/taxTest.db tax3_test_argv2.txt tax_out.txt -c 1
diff tax_out.txt tax_result.txt
+62
View File
@@ -0,0 +1,62 @@
#!/usr/bin/env python
"""
Identify full taxonomic standing for sequences identified by gi number
usage: %prog taxonomy_db gi_list_file out_file
-c, --cols=N: Number of column containing gi within the gi_list file
gi_list_file - user's input containing gi's in the column specified by option -c
taxonomy_db - database containing collapsed NCBI taxonomy generated by prepareTaxonomy.sh script
distributed with Galaxy. See prepareTaxonomy.readme for information on how to generate
necessary files
"""
import pkg_resources
pkg_resources.require( 'bx-python' )
pkg_resources.require( 'pysqlite' )
import traceback
import fileinput
from pysqlite2 import dbapi2 as sqlite
from warnings import warn
from bx.cookbook import doc_optparse
import string, sys
def main():
options, args = doc_optparse.parse( __doc__ )
if len(args) < 3:
sys.stderr.write("Not enough arguments\n")
sys.exit(0)
try:
db_name, gi_fname, out_fname = args
giCol = int( options.cols ) - 1
except:
doc_optparse.exception
con = sqlite.connect(db_name)
cur = con.cursor()
fg = open(gi_fname, 'r')
of = open( out_fname, "w" )
try:
for line in fg:
field = string.split(line.rstrip(), '\t')
sqlTemplate = string.Template('select gi2tax.gi, tax.* from gi2tax left join tax on gi2tax.taxId = tax.taxId where gi2tax.gi = $gi')
sql = sqlTemplate.substitute(gi = int(field[giCol]))
cur.execute(sql)
for item in cur.fetchall():
ranks = string.split(item[2], ",")
print >> of, str(item[0]) + "\t" + str(item[1]) + "\t" + "\t".join(ranks)
finally:
fg.close()
if __name__ == "__main__":
main()
+118
View File
@@ -0,0 +1,118 @@
"""
tax1_NodeParser.py <nodes_file>
flattens NCBI taxonomy by printing list of children for every node
nodes_file is created from nodes.dmp file using the following command:
cat nodes.dmp | tr -s "\t" "|" | tr "|" "\t" | cut -f 1,2,3,5 > nodes.txt
(nodes.dmp is downloaded from NCBI taxonomy FTP site)
anton nekrutenko | anton@bx.psu.edu
"""
import sys
import string
def findAll(L, value):
hits = []
i = 0
for item in L:
if item == value:
hits.append(i)
else:
pass
i += 1
return hits
def makeLookup(L):
D = {}
i = 0
for item in L:
if item in D:
D[item].append(i)
else:
D[item] = [i]
i += 1
return D
def addUnique(baseList, otherList):
auxDict = dict.fromkeys(baseList)
for item in otherList:
if item not in auxDict:
baseList.append(item)
auxDict[item] = None
return baseList
def main():
taxId = []
taxParentId = []
name = []
try:
inFile = sys.argv[1]
nodeFile = open(inFile, 'r')
except:
sys.stderr.write('tax1_NodeParser.py <nodes_file>: No arguments or file does not exist\n')
sys.exit(0)
try:
for line in nodeFile:
field = string.split(line.rstrip(), '\t')
taxId.append(int(field[0]))
taxParentId.append(int(field[1]))
name.append(field[2])
finally:
nodeFile.close()
# Check data consistency
if (len(taxId)+len(taxParentId)+len(name))/3 != len(taxId):
sys.stderr.write('Arrays are of different length: Corrupted input file')
sys.exit(0)
else:
pass
parentLookUp = makeLookup(taxParentId)
i = 0
children = []
for taxon in taxId:
try:
children = parentLookUp[taxon] #findAll(taxParentId, taxon)
except:
pass
for child in children:
if len(children) > 0:
if taxId[child] != taxParentId[child]:
try:
children = addUnique(children, parentLookUp[taxId[child]])
except:
pass
else:
pass
if len(children) > 0:
for child in children:
outTmp = string.Template('$pId\t$pRank\t$cId\t$cRank')
out = outTmp.substitute(pId = taxon, pRank = name[i], cId = taxId[child], cRank = name[child])
print out
else:
outTmp = string.Template('$pId\t$pRank\t0\tNone')
out = outTmp.substitute(pId = taxon, pRank = name[i])
print out
children = []
i += 1
if __name__ == "__main__":
main()
+32
View File
@@ -0,0 +1,32 @@
63221 9606 subspecies
1 1 no rank
2759 131567 superkingdom
6072 33208 no rank
7711 33511 phylum
7742 89593 no rank
7776 7742 superclass
8287 117571 no rank
9347 32525 no rank
9443 314146 order
9526 314293 parvorder
9604 314295 family
9605 207598 genus
32523 8287 no rank
32524 32523 no rank
32525 40674 no rank
33154 2759 no rank
33208 33154 kingdom
33213 6072 no rank
33316 33213 no rank
33511 33316 no rank
40674 32524 class
89593 7711 subphylum
117570 7776 no rank
117571 117570 no rank
131567 1 no rank
207598 9604 no rank
314146 9347 superorder
314293 376913 infraorder
314295 9526 superfamily
376913 9443 suborder
9606 9605 species
+143
View File
@@ -0,0 +1,143 @@
"""
tax2_Node2Name.py <node2child_file> <names_file> <db_name>
adds taxonomic names to collapsed NCBI taxonomy produced by tax1_NodeParser.py script
node2child_file = created by tax1_NodeParser.py script
names_file = created from names.dmp file with the following command:
cat names.dmp | cut -f 1,2,4 -d "|" | tr -s "\t" "|" | tr "|" "\t" | sed s/\"//g > names.txt
(names.dmp is downloaded from NCBI taxonomy FTP site)
db_name = a name of sqlite file this program will create. Output of this script is stored in table names of this database
anton nekrutenko | anton@bx.psu.edu
"""
import pkg_resources
pkg_resources.require('pysqlite')
from pysqlite2 import dbapi2 as sqlite
import sys
import string
def main():
try:
inFileNodes = sys.argv[1]
inFileNames = sys.argv[2]
dbName = sys.argv[3]
except:
sys.stderr.write('tax2_Node2Name.py <node2child_file> <names_file> <db_name>: Not enough arguments\n')
sys.exit(0)
taxRank = {
'root' :1,
'superkingdom':2,
'kingdom' :3,
'subkingdom' :4,
'superphylum' :5,
'phylum' :6,
'subphylum' :7,
'superclass' :8,
'class' :9,
'subclass' :10,
'superorder' :11,
'order' :12,
'suborder' :13,
'superfamily' :14,
'family' :15,
'subfamily' :16,
'tribe' :17,
'subtribe' :18,
'genus' :19,
'subgenus' :20,
'species' :21,
'subspecies' :22
}
con = sqlite.connect(dbName)
cur = con.cursor()
cur.execute('drop table if exists nodes')
cur.execute('create table nodes (pid int unsigned not null, pidRank varchar(20) not null, pnumRank smallint unsigned not null, id int unsigned not null, idRank varchar(20), numRank smallint unsigned not null)')
cur.execute('create index if not exists ipid on nodes(pid)')
cur.execute('drop table if exists names')
cur.execute('create table names (taxId int unsigned not null, name text, type text)')
cur.execute('create index itaxId on names(taxId)')
con.commit()
f = open(inFileNodes, 'r')
try:
for line in f:
field = string.split(line.rstrip(), '\t')
field = [ int(field[0]), field[1], 0, int(field[2]), field[3], 0 ]
# Changing taxId == 1 from 'no rank' to 'root'
if field[0] == 1:
field[1] = 'root'
# Setting numeric IDs for major taxonomic groups from taxRank dictionary
if taxRank.has_key(field[1]):
field[2] = taxRank[field[1]]
if taxRank.has_key(field[4]):
field[5] = taxRank[field[4]]
sqlTemplate = string.Template('insert into nodes values($pId, "$pRank", $pNumRank, $cId, "$cRank", $cNumRank)')
sql = sqlTemplate.substitute(pId = field[0], pRank = field[1], pNumRank = field[2], cId = field[3], cRank = field[4], cNumRank = field[5])
cur.execute(sql)
finally:
f.close()
con.commit()
f = open(inFileNames, 'r')
try:
for line in f:
field = string.split(line.rstrip(), '\t')
# The following is based on assimption that every tax id in NCBI taxonomy
# contains a single 'scientific name' type
try:
if field[2] == 'scientific name':
sqlTemplate = string.Template('insert into names values($taxId, "$name", "$syn")')
sql = sqlTemplate.substitute(taxId = int(field[0]), name = field[1], syn = field[2])
cur.execute(sql)
except:
pass
finally:
f.close()
con.commit()
cur.execute('drop table if exists t')
cur.execute('create table t (pid int unsigned not null, pidRank varchar(20) not null, pnumRank smallint unsigned not null, id int unsigned not null, idRank varchar(20), numRank smallint unsigned not null, pName text)')
cur.execute('insert into t select nodes.*, name from nodes left join names on pid = taxId')
cur.execute('create index iid on t(id)')
cur.execute('drop table nodes')
cur.execute('drop table if exists node2name')
cur.execute('create table node2name (pId int unsigned not null, pIdRank varchar(20) not null, pNumRank smallint unsigned not null, cId int unsigned not null, cIdRank varchar(20), cNumRank smallint unsigned not null, pName text, cName text)')
cur.execute('insert into node2name select t.*, name from t left join names on id = taxId')
cur.execute('drop table t')
cur.execute('vacuum')
con.commit()
con.close()
if __name__ == "__main__":
main()
+498
View File
@@ -0,0 +1,498 @@
63221 subspecies 0 None
1 no rank 1 no rank
1 no rank 131567 no rank
1 no rank 2759 superkingdom
1 no rank 33154 no rank
1 no rank 33208 kingdom
1 no rank 6072 no rank
1 no rank 33213 no rank
1 no rank 33316 no rank
1 no rank 33511 no rank
1 no rank 7711 phylum
1 no rank 89593 subphylum
1 no rank 7742 no rank
1 no rank 7776 superclass
1 no rank 117570 no rank
1 no rank 117571 no rank
1 no rank 8287 no rank
1 no rank 32523 no rank
1 no rank 32524 no rank
1 no rank 40674 class
1 no rank 32525 no rank
1 no rank 9347 no rank
1 no rank 314146 superorder
1 no rank 9443 order
1 no rank 376913 suborder
1 no rank 314293 infraorder
1 no rank 9526 parvorder
1 no rank 314295 superfamily
1 no rank 9604 family
1 no rank 207598 no rank
1 no rank 9605 genus
1 no rank 9606 species
1 no rank 63221 subspecies
2759 superkingdom 33154 no rank
2759 superkingdom 33208 kingdom
2759 superkingdom 6072 no rank
2759 superkingdom 33213 no rank
2759 superkingdom 33316 no rank
2759 superkingdom 33511 no rank
2759 superkingdom 7711 phylum
2759 superkingdom 89593 subphylum
2759 superkingdom 7742 no rank
2759 superkingdom 7776 superclass
2759 superkingdom 117570 no rank
2759 superkingdom 117571 no rank
2759 superkingdom 8287 no rank
2759 superkingdom 32523 no rank
2759 superkingdom 32524 no rank
2759 superkingdom 40674 class
2759 superkingdom 32525 no rank
2759 superkingdom 9347 no rank
2759 superkingdom 314146 superorder
2759 superkingdom 9443 order
2759 superkingdom 376913 suborder
2759 superkingdom 314293 infraorder
2759 superkingdom 9526 parvorder
2759 superkingdom 314295 superfamily
2759 superkingdom 9604 family
2759 superkingdom 207598 no rank
2759 superkingdom 9605 genus
2759 superkingdom 9606 species
2759 superkingdom 63221 subspecies
6072 no rank 33213 no rank
6072 no rank 33316 no rank
6072 no rank 33511 no rank
6072 no rank 7711 phylum
6072 no rank 89593 subphylum
6072 no rank 7742 no rank
6072 no rank 7776 superclass
6072 no rank 117570 no rank
6072 no rank 117571 no rank
6072 no rank 8287 no rank
6072 no rank 32523 no rank
6072 no rank 32524 no rank
6072 no rank 40674 class
6072 no rank 32525 no rank
6072 no rank 9347 no rank
6072 no rank 314146 superorder
6072 no rank 9443 order
6072 no rank 376913 suborder
6072 no rank 314293 infraorder
6072 no rank 9526 parvorder
6072 no rank 314295 superfamily
6072 no rank 9604 family
6072 no rank 207598 no rank
6072 no rank 9605 genus
6072 no rank 9606 species
6072 no rank 63221 subspecies
7711 phylum 89593 subphylum
7711 phylum 7742 no rank
7711 phylum 7776 superclass
7711 phylum 117570 no rank
7711 phylum 117571 no rank
7711 phylum 8287 no rank
7711 phylum 32523 no rank
7711 phylum 32524 no rank
7711 phylum 40674 class
7711 phylum 32525 no rank
7711 phylum 9347 no rank
7711 phylum 314146 superorder
7711 phylum 9443 order
7711 phylum 376913 suborder
7711 phylum 314293 infraorder
7711 phylum 9526 parvorder
7711 phylum 314295 superfamily
7711 phylum 9604 family
7711 phylum 207598 no rank
7711 phylum 9605 genus
7711 phylum 9606 species
7711 phylum 63221 subspecies
7742 no rank 7776 superclass
7742 no rank 117570 no rank
7742 no rank 117571 no rank
7742 no rank 8287 no rank
7742 no rank 32523 no rank
7742 no rank 32524 no rank
7742 no rank 40674 class
7742 no rank 32525 no rank
7742 no rank 9347 no rank
7742 no rank 314146 superorder
7742 no rank 9443 order
7742 no rank 376913 suborder
7742 no rank 314293 infraorder
7742 no rank 9526 parvorder
7742 no rank 314295 superfamily
7742 no rank 9604 family
7742 no rank 207598 no rank
7742 no rank 9605 genus
7742 no rank 9606 species
7742 no rank 63221 subspecies
7776 superclass 117570 no rank
7776 superclass 117571 no rank
7776 superclass 8287 no rank
7776 superclass 32523 no rank
7776 superclass 32524 no rank
7776 superclass 40674 class
7776 superclass 32525 no rank
7776 superclass 9347 no rank
7776 superclass 314146 superorder
7776 superclass 9443 order
7776 superclass 376913 suborder
7776 superclass 314293 infraorder
7776 superclass 9526 parvorder
7776 superclass 314295 superfamily
7776 superclass 9604 family
7776 superclass 207598 no rank
7776 superclass 9605 genus
7776 superclass 9606 species
7776 superclass 63221 subspecies
8287 no rank 32523 no rank
8287 no rank 32524 no rank
8287 no rank 40674 class
8287 no rank 32525 no rank
8287 no rank 9347 no rank
8287 no rank 314146 superorder
8287 no rank 9443 order
8287 no rank 376913 suborder
8287 no rank 314293 infraorder
8287 no rank 9526 parvorder
8287 no rank 314295 superfamily
8287 no rank 9604 family
8287 no rank 207598 no rank
8287 no rank 9605 genus
8287 no rank 9606 species
8287 no rank 63221 subspecies
9347 no rank 314146 superorder
9347 no rank 9443 order
9347 no rank 376913 suborder
9347 no rank 314293 infraorder
9347 no rank 9526 parvorder
9347 no rank 314295 superfamily
9347 no rank 9604 family
9347 no rank 207598 no rank
9347 no rank 9605 genus
9347 no rank 9606 species
9347 no rank 63221 subspecies
9443 order 376913 suborder
9443 order 314293 infraorder
9443 order 9526 parvorder
9443 order 314295 superfamily
9443 order 9604 family
9443 order 207598 no rank
9443 order 9605 genus
9443 order 9606 species
9443 order 63221 subspecies
9526 parvorder 314295 superfamily
9526 parvorder 9604 family
9526 parvorder 207598 no rank
9526 parvorder 9605 genus
9526 parvorder 9606 species
9526 parvorder 63221 subspecies
9604 family 207598 no rank
9604 family 9605 genus
9604 family 9606 species
9604 family 63221 subspecies
9605 genus 9606 species
9605 genus 63221 subspecies
32523 no rank 32524 no rank
32523 no rank 40674 class
32523 no rank 32525 no rank
32523 no rank 9347 no rank
32523 no rank 314146 superorder
32523 no rank 9443 order
32523 no rank 376913 suborder
32523 no rank 314293 infraorder
32523 no rank 9526 parvorder
32523 no rank 314295 superfamily
32523 no rank 9604 family
32523 no rank 207598 no rank
32523 no rank 9605 genus
32523 no rank 9606 species
32523 no rank 63221 subspecies
32524 no rank 40674 class
32524 no rank 32525 no rank
32524 no rank 9347 no rank
32524 no rank 314146 superorder
32524 no rank 9443 order
32524 no rank 376913 suborder
32524 no rank 314293 infraorder
32524 no rank 9526 parvorder
32524 no rank 314295 superfamily
32524 no rank 9604 family
32524 no rank 207598 no rank
32524 no rank 9605 genus
32524 no rank 9606 species
32524 no rank 63221 subspecies
32525 no rank 9347 no rank
32525 no rank 314146 superorder
32525 no rank 9443 order
32525 no rank 376913 suborder
32525 no rank 314293 infraorder
32525 no rank 9526 parvorder
32525 no rank 314295 superfamily
32525 no rank 9604 family
32525 no rank 207598 no rank
32525 no rank 9605 genus
32525 no rank 9606 species
32525 no rank 63221 subspecies
33154 no rank 33208 kingdom
33154 no rank 6072 no rank
33154 no rank 33213 no rank
33154 no rank 33316 no rank
33154 no rank 33511 no rank
33154 no rank 7711 phylum
33154 no rank 89593 subphylum
33154 no rank 7742 no rank
33154 no rank 7776 superclass
33154 no rank 117570 no rank
33154 no rank 117571 no rank
33154 no rank 8287 no rank
33154 no rank 32523 no rank
33154 no rank 32524 no rank
33154 no rank 40674 class
33154 no rank 32525 no rank
33154 no rank 9347 no rank
33154 no rank 314146 superorder
33154 no rank 9443 order
33154 no rank 376913 suborder
33154 no rank 314293 infraorder
33154 no rank 9526 parvorder
33154 no rank 314295 superfamily
33154 no rank 9604 family
33154 no rank 207598 no rank
33154 no rank 9605 genus
33154 no rank 9606 species
33154 no rank 63221 subspecies
33208 kingdom 6072 no rank
33208 kingdom 33213 no rank
33208 kingdom 33316 no rank
33208 kingdom 33511 no rank
33208 kingdom 7711 phylum
33208 kingdom 89593 subphylum
33208 kingdom 7742 no rank
33208 kingdom 7776 superclass
33208 kingdom 117570 no rank
33208 kingdom 117571 no rank
33208 kingdom 8287 no rank
33208 kingdom 32523 no rank
33208 kingdom 32524 no rank
33208 kingdom 40674 class
33208 kingdom 32525 no rank
33208 kingdom 9347 no rank
33208 kingdom 314146 superorder
33208 kingdom 9443 order
33208 kingdom 376913 suborder
33208 kingdom 314293 infraorder
33208 kingdom 9526 parvorder
33208 kingdom 314295 superfamily
33208 kingdom 9604 family
33208 kingdom 207598 no rank
33208 kingdom 9605 genus
33208 kingdom 9606 species
33208 kingdom 63221 subspecies
33213 no rank 33316 no rank
33213 no rank 33511 no rank
33213 no rank 7711 phylum
33213 no rank 89593 subphylum
33213 no rank 7742 no rank
33213 no rank 7776 superclass
33213 no rank 117570 no rank
33213 no rank 117571 no rank
33213 no rank 8287 no rank
33213 no rank 32523 no rank
33213 no rank 32524 no rank
33213 no rank 40674 class
33213 no rank 32525 no rank
33213 no rank 9347 no rank
33213 no rank 314146 superorder
33213 no rank 9443 order
33213 no rank 376913 suborder
33213 no rank 314293 infraorder
33213 no rank 9526 parvorder
33213 no rank 314295 superfamily
33213 no rank 9604 family
33213 no rank 207598 no rank
33213 no rank 9605 genus
33213 no rank 9606 species
33213 no rank 63221 subspecies
33316 no rank 33511 no rank
33316 no rank 7711 phylum
33316 no rank 89593 subphylum
33316 no rank 7742 no rank
33316 no rank 7776 superclass
33316 no rank 117570 no rank
33316 no rank 117571 no rank
33316 no rank 8287 no rank
33316 no rank 32523 no rank
33316 no rank 32524 no rank
33316 no rank 40674 class
33316 no rank 32525 no rank
33316 no rank 9347 no rank
33316 no rank 314146 superorder
33316 no rank 9443 order
33316 no rank 376913 suborder
33316 no rank 314293 infraorder
33316 no rank 9526 parvorder
33316 no rank 314295 superfamily
33316 no rank 9604 family
33316 no rank 207598 no rank
33316 no rank 9605 genus
33316 no rank 9606 species
33316 no rank 63221 subspecies
33511 no rank 7711 phylum
33511 no rank 89593 subphylum
33511 no rank 7742 no rank
33511 no rank 7776 superclass
33511 no rank 117570 no rank
33511 no rank 117571 no rank
33511 no rank 8287 no rank
33511 no rank 32523 no rank
33511 no rank 32524 no rank
33511 no rank 40674 class
33511 no rank 32525 no rank
33511 no rank 9347 no rank
33511 no rank 314146 superorder
33511 no rank 9443 order
33511 no rank 376913 suborder
33511 no rank 314293 infraorder
33511 no rank 9526 parvorder
33511 no rank 314295 superfamily
33511 no rank 9604 family
33511 no rank 207598 no rank
33511 no rank 9605 genus
33511 no rank 9606 species
33511 no rank 63221 subspecies
40674 class 32525 no rank
40674 class 9347 no rank
40674 class 314146 superorder
40674 class 9443 order
40674 class 376913 suborder
40674 class 314293 infraorder
40674 class 9526 parvorder
40674 class 314295 superfamily
40674 class 9604 family
40674 class 207598 no rank
40674 class 9605 genus
40674 class 9606 species
40674 class 63221 subspecies
89593 subphylum 7742 no rank
89593 subphylum 7776 superclass
89593 subphylum 117570 no rank
89593 subphylum 117571 no rank
89593 subphylum 8287 no rank
89593 subphylum 32523 no rank
89593 subphylum 32524 no rank
89593 subphylum 40674 class
89593 subphylum 32525 no rank
89593 subphylum 9347 no rank
89593 subphylum 314146 superorder
89593 subphylum 9443 order
89593 subphylum 376913 suborder
89593 subphylum 314293 infraorder
89593 subphylum 9526 parvorder
89593 subphylum 314295 superfamily
89593 subphylum 9604 family
89593 subphylum 207598 no rank
89593 subphylum 9605 genus
89593 subphylum 9606 species
89593 subphylum 63221 subspecies
117570 no rank 117571 no rank
117570 no rank 8287 no rank
117570 no rank 32523 no rank
117570 no rank 32524 no rank
117570 no rank 40674 class
117570 no rank 32525 no rank
117570 no rank 9347 no rank
117570 no rank 314146 superorder
117570 no rank 9443 order
117570 no rank 376913 suborder
117570 no rank 314293 infraorder
117570 no rank 9526 parvorder
117570 no rank 314295 superfamily
117570 no rank 9604 family
117570 no rank 207598 no rank
117570 no rank 9605 genus
117570 no rank 9606 species
117570 no rank 63221 subspecies
117571 no rank 8287 no rank
117571 no rank 32523 no rank
117571 no rank 32524 no rank
117571 no rank 40674 class
117571 no rank 32525 no rank
117571 no rank 9347 no rank
117571 no rank 314146 superorder
117571 no rank 9443 order
117571 no rank 376913 suborder
117571 no rank 314293 infraorder
117571 no rank 9526 parvorder
117571 no rank 314295 superfamily
117571 no rank 9604 family
117571 no rank 207598 no rank
117571 no rank 9605 genus
117571 no rank 9606 species
117571 no rank 63221 subspecies
131567 no rank 2759 superkingdom
131567 no rank 33154 no rank
131567 no rank 33208 kingdom
131567 no rank 6072 no rank
131567 no rank 33213 no rank
131567 no rank 33316 no rank
131567 no rank 33511 no rank
131567 no rank 7711 phylum
131567 no rank 89593 subphylum
131567 no rank 7742 no rank
131567 no rank 7776 superclass
131567 no rank 117570 no rank
131567 no rank 117571 no rank
131567 no rank 8287 no rank
131567 no rank 32523 no rank
131567 no rank 32524 no rank
131567 no rank 40674 class
131567 no rank 32525 no rank
131567 no rank 9347 no rank
131567 no rank 314146 superorder
131567 no rank 9443 order
131567 no rank 376913 suborder
131567 no rank 314293 infraorder
131567 no rank 9526 parvorder
131567 no rank 314295 superfamily
131567 no rank 9604 family
131567 no rank 207598 no rank
131567 no rank 9605 genus
131567 no rank 9606 species
131567 no rank 63221 subspecies
207598 no rank 9605 genus
207598 no rank 9606 species
207598 no rank 63221 subspecies
314146 superorder 9443 order
314146 superorder 376913 suborder
314146 superorder 314293 infraorder
314146 superorder 9526 parvorder
314146 superorder 314295 superfamily
314146 superorder 9604 family
314146 superorder 207598 no rank
314146 superorder 9605 genus
314146 superorder 9606 species
314146 superorder 63221 subspecies
314293 infraorder 9526 parvorder
314293 infraorder 314295 superfamily
314293 infraorder 9604 family
314293 infraorder 207598 no rank
314293 infraorder 9605 genus
314293 infraorder 9606 species
314293 infraorder 63221 subspecies
314295 superfamily 9604 family
314295 superfamily 207598 no rank
314295 superfamily 9605 genus
314295 superfamily 9606 species
314295 superfamily 63221 subspecies
376913 suborder 314293 infraorder
376913 suborder 9526 parvorder
376913 suborder 314295 superfamily
376913 suborder 9604 family
376913 suborder 207598 no rank
376913 suborder 9605 genus
376913 suborder 9606 species
376913 suborder 63221 subspecies
9606 species 63221 subspecies
+498
View File
@@ -0,0 +1,498 @@
63221 subspecies 0 None
1 no rank 1 no rank
1 no rank 131567 no rank
1 no rank 2759 superkingdom
1 no rank 33154 no rank
1 no rank 33208 kingdom
1 no rank 6072 no rank
1 no rank 33213 no rank
1 no rank 33316 no rank
1 no rank 33511 no rank
1 no rank 7711 phylum
1 no rank 89593 subphylum
1 no rank 7742 no rank
1 no rank 7776 superclass
1 no rank 117570 no rank
1 no rank 117571 no rank
1 no rank 8287 no rank
1 no rank 32523 no rank
1 no rank 32524 no rank
1 no rank 40674 class
1 no rank 32525 no rank
1 no rank 9347 no rank
1 no rank 314146 superorder
1 no rank 9443 order
1 no rank 376913 suborder
1 no rank 314293 infraorder
1 no rank 9526 parvorder
1 no rank 314295 superfamily
1 no rank 9604 family
1 no rank 207598 no rank
1 no rank 9605 genus
1 no rank 9606 species
1 no rank 63221 subspecies
2759 superkingdom 33154 no rank
2759 superkingdom 33208 kingdom
2759 superkingdom 6072 no rank
2759 superkingdom 33213 no rank
2759 superkingdom 33316 no rank
2759 superkingdom 33511 no rank
2759 superkingdom 7711 phylum
2759 superkingdom 89593 subphylum
2759 superkingdom 7742 no rank
2759 superkingdom 7776 superclass
2759 superkingdom 117570 no rank
2759 superkingdom 117571 no rank
2759 superkingdom 8287 no rank
2759 superkingdom 32523 no rank
2759 superkingdom 32524 no rank
2759 superkingdom 40674 class
2759 superkingdom 32525 no rank
2759 superkingdom 9347 no rank
2759 superkingdom 314146 superorder
2759 superkingdom 9443 order
2759 superkingdom 376913 suborder
2759 superkingdom 314293 infraorder
2759 superkingdom 9526 parvorder
2759 superkingdom 314295 superfamily
2759 superkingdom 9604 family
2759 superkingdom 207598 no rank
2759 superkingdom 9605 genus
2759 superkingdom 9606 species
2759 superkingdom 63221 subspecies
6072 no rank 33213 no rank
6072 no rank 33316 no rank
6072 no rank 33511 no rank
6072 no rank 7711 phylum
6072 no rank 89593 subphylum
6072 no rank 7742 no rank
6072 no rank 7776 superclass
6072 no rank 117570 no rank
6072 no rank 117571 no rank
6072 no rank 8287 no rank
6072 no rank 32523 no rank
6072 no rank 32524 no rank
6072 no rank 40674 class
6072 no rank 32525 no rank
6072 no rank 9347 no rank
6072 no rank 314146 superorder
6072 no rank 9443 order
6072 no rank 376913 suborder
6072 no rank 314293 infraorder
6072 no rank 9526 parvorder
6072 no rank 314295 superfamily
6072 no rank 9604 family
6072 no rank 207598 no rank
6072 no rank 9605 genus
6072 no rank 9606 species
6072 no rank 63221 subspecies
7711 phylum 89593 subphylum
7711 phylum 7742 no rank
7711 phylum 7776 superclass
7711 phylum 117570 no rank
7711 phylum 117571 no rank
7711 phylum 8287 no rank
7711 phylum 32523 no rank
7711 phylum 32524 no rank
7711 phylum 40674 class
7711 phylum 32525 no rank
7711 phylum 9347 no rank
7711 phylum 314146 superorder
7711 phylum 9443 order
7711 phylum 376913 suborder
7711 phylum 314293 infraorder
7711 phylum 9526 parvorder
7711 phylum 314295 superfamily
7711 phylum 9604 family
7711 phylum 207598 no rank
7711 phylum 9605 genus
7711 phylum 9606 species
7711 phylum 63221 subspecies
7742 no rank 7776 superclass
7742 no rank 117570 no rank
7742 no rank 117571 no rank
7742 no rank 8287 no rank
7742 no rank 32523 no rank
7742 no rank 32524 no rank
7742 no rank 40674 class
7742 no rank 32525 no rank
7742 no rank 9347 no rank
7742 no rank 314146 superorder
7742 no rank 9443 order
7742 no rank 376913 suborder
7742 no rank 314293 infraorder
7742 no rank 9526 parvorder
7742 no rank 314295 superfamily
7742 no rank 9604 family
7742 no rank 207598 no rank
7742 no rank 9605 genus
7742 no rank 9606 species
7742 no rank 63221 subspecies
7776 superclass 117570 no rank
7776 superclass 117571 no rank
7776 superclass 8287 no rank
7776 superclass 32523 no rank
7776 superclass 32524 no rank
7776 superclass 40674 class
7776 superclass 32525 no rank
7776 superclass 9347 no rank
7776 superclass 314146 superorder
7776 superclass 9443 order
7776 superclass 376913 suborder
7776 superclass 314293 infraorder
7776 superclass 9526 parvorder
7776 superclass 314295 superfamily
7776 superclass 9604 family
7776 superclass 207598 no rank
7776 superclass 9605 genus
7776 superclass 9606 species
7776 superclass 63221 subspecies
8287 no rank 32523 no rank
8287 no rank 32524 no rank
8287 no rank 40674 class
8287 no rank 32525 no rank
8287 no rank 9347 no rank
8287 no rank 314146 superorder
8287 no rank 9443 order
8287 no rank 376913 suborder
8287 no rank 314293 infraorder
8287 no rank 9526 parvorder
8287 no rank 314295 superfamily
8287 no rank 9604 family
8287 no rank 207598 no rank
8287 no rank 9605 genus
8287 no rank 9606 species
8287 no rank 63221 subspecies
9347 no rank 314146 superorder
9347 no rank 9443 order
9347 no rank 376913 suborder
9347 no rank 314293 infraorder
9347 no rank 9526 parvorder
9347 no rank 314295 superfamily
9347 no rank 9604 family
9347 no rank 207598 no rank
9347 no rank 9605 genus
9347 no rank 9606 species
9347 no rank 63221 subspecies
9443 order 376913 suborder
9443 order 314293 infraorder
9443 order 9526 parvorder
9443 order 314295 superfamily
9443 order 9604 family
9443 order 207598 no rank
9443 order 9605 genus
9443 order 9606 species
9443 order 63221 subspecies
9526 parvorder 314295 superfamily
9526 parvorder 9604 family
9526 parvorder 207598 no rank
9526 parvorder 9605 genus
9526 parvorder 9606 species
9526 parvorder 63221 subspecies
9604 family 207598 no rank
9604 family 9605 genus
9604 family 9606 species
9604 family 63221 subspecies
9605 genus 9606 species
9605 genus 63221 subspecies
32523 no rank 32524 no rank
32523 no rank 40674 class
32523 no rank 32525 no rank
32523 no rank 9347 no rank
32523 no rank 314146 superorder
32523 no rank 9443 order
32523 no rank 376913 suborder
32523 no rank 314293 infraorder
32523 no rank 9526 parvorder
32523 no rank 314295 superfamily
32523 no rank 9604 family
32523 no rank 207598 no rank
32523 no rank 9605 genus
32523 no rank 9606 species
32523 no rank 63221 subspecies
32524 no rank 40674 class
32524 no rank 32525 no rank
32524 no rank 9347 no rank
32524 no rank 314146 superorder
32524 no rank 9443 order
32524 no rank 376913 suborder
32524 no rank 314293 infraorder
32524 no rank 9526 parvorder
32524 no rank 314295 superfamily
32524 no rank 9604 family
32524 no rank 207598 no rank
32524 no rank 9605 genus
32524 no rank 9606 species
32524 no rank 63221 subspecies
32525 no rank 9347 no rank
32525 no rank 314146 superorder
32525 no rank 9443 order
32525 no rank 376913 suborder
32525 no rank 314293 infraorder
32525 no rank 9526 parvorder
32525 no rank 314295 superfamily
32525 no rank 9604 family
32525 no rank 207598 no rank
32525 no rank 9605 genus
32525 no rank 9606 species
32525 no rank 63221 subspecies
33154 no rank 33208 kingdom
33154 no rank 6072 no rank
33154 no rank 33213 no rank
33154 no rank 33316 no rank
33154 no rank 33511 no rank
33154 no rank 7711 phylum
33154 no rank 89593 subphylum
33154 no rank 7742 no rank
33154 no rank 7776 superclass
33154 no rank 117570 no rank
33154 no rank 117571 no rank
33154 no rank 8287 no rank
33154 no rank 32523 no rank
33154 no rank 32524 no rank
33154 no rank 40674 class
33154 no rank 32525 no rank
33154 no rank 9347 no rank
33154 no rank 314146 superorder
33154 no rank 9443 order
33154 no rank 376913 suborder
33154 no rank 314293 infraorder
33154 no rank 9526 parvorder
33154 no rank 314295 superfamily
33154 no rank 9604 family
33154 no rank 207598 no rank
33154 no rank 9605 genus
33154 no rank 9606 species
33154 no rank 63221 subspecies
33208 kingdom 6072 no rank
33208 kingdom 33213 no rank
33208 kingdom 33316 no rank
33208 kingdom 33511 no rank
33208 kingdom 7711 phylum
33208 kingdom 89593 subphylum
33208 kingdom 7742 no rank
33208 kingdom 7776 superclass
33208 kingdom 117570 no rank
33208 kingdom 117571 no rank
33208 kingdom 8287 no rank
33208 kingdom 32523 no rank
33208 kingdom 32524 no rank
33208 kingdom 40674 class
33208 kingdom 32525 no rank
33208 kingdom 9347 no rank
33208 kingdom 314146 superorder
33208 kingdom 9443 order
33208 kingdom 376913 suborder
33208 kingdom 314293 infraorder
33208 kingdom 9526 parvorder
33208 kingdom 314295 superfamily
33208 kingdom 9604 family
33208 kingdom 207598 no rank
33208 kingdom 9605 genus
33208 kingdom 9606 species
33208 kingdom 63221 subspecies
33213 no rank 33316 no rank
33213 no rank 33511 no rank
33213 no rank 7711 phylum
33213 no rank 89593 subphylum
33213 no rank 7742 no rank
33213 no rank 7776 superclass
33213 no rank 117570 no rank
33213 no rank 117571 no rank
33213 no rank 8287 no rank
33213 no rank 32523 no rank
33213 no rank 32524 no rank
33213 no rank 40674 class
33213 no rank 32525 no rank
33213 no rank 9347 no rank
33213 no rank 314146 superorder
33213 no rank 9443 order
33213 no rank 376913 suborder
33213 no rank 314293 infraorder
33213 no rank 9526 parvorder
33213 no rank 314295 superfamily
33213 no rank 9604 family
33213 no rank 207598 no rank
33213 no rank 9605 genus
33213 no rank 9606 species
33213 no rank 63221 subspecies
33316 no rank 33511 no rank
33316 no rank 7711 phylum
33316 no rank 89593 subphylum
33316 no rank 7742 no rank
33316 no rank 7776 superclass
33316 no rank 117570 no rank
33316 no rank 117571 no rank
33316 no rank 8287 no rank
33316 no rank 32523 no rank
33316 no rank 32524 no rank
33316 no rank 40674 class
33316 no rank 32525 no rank
33316 no rank 9347 no rank
33316 no rank 314146 superorder
33316 no rank 9443 order
33316 no rank 376913 suborder
33316 no rank 314293 infraorder
33316 no rank 9526 parvorder
33316 no rank 314295 superfamily
33316 no rank 9604 family
33316 no rank 207598 no rank
33316 no rank 9605 genus
33316 no rank 9606 species
33316 no rank 63221 subspecies
33511 no rank 7711 phylum
33511 no rank 89593 subphylum
33511 no rank 7742 no rank
33511 no rank 7776 superclass
33511 no rank 117570 no rank
33511 no rank 117571 no rank
33511 no rank 8287 no rank
33511 no rank 32523 no rank
33511 no rank 32524 no rank
33511 no rank 40674 class
33511 no rank 32525 no rank
33511 no rank 9347 no rank
33511 no rank 314146 superorder
33511 no rank 9443 order
33511 no rank 376913 suborder
33511 no rank 314293 infraorder
33511 no rank 9526 parvorder
33511 no rank 314295 superfamily
33511 no rank 9604 family
33511 no rank 207598 no rank
33511 no rank 9605 genus
33511 no rank 9606 species
33511 no rank 63221 subspecies
40674 class 32525 no rank
40674 class 9347 no rank
40674 class 314146 superorder
40674 class 9443 order
40674 class 376913 suborder
40674 class 314293 infraorder
40674 class 9526 parvorder
40674 class 314295 superfamily
40674 class 9604 family
40674 class 207598 no rank
40674 class 9605 genus
40674 class 9606 species
40674 class 63221 subspecies
89593 subphylum 7742 no rank
89593 subphylum 7776 superclass
89593 subphylum 117570 no rank
89593 subphylum 117571 no rank
89593 subphylum 8287 no rank
89593 subphylum 32523 no rank
89593 subphylum 32524 no rank
89593 subphylum 40674 class
89593 subphylum 32525 no rank
89593 subphylum 9347 no rank
89593 subphylum 314146 superorder
89593 subphylum 9443 order
89593 subphylum 376913 suborder
89593 subphylum 314293 infraorder
89593 subphylum 9526 parvorder
89593 subphylum 314295 superfamily
89593 subphylum 9604 family
89593 subphylum 207598 no rank
89593 subphylum 9605 genus
89593 subphylum 9606 species
89593 subphylum 63221 subspecies
117570 no rank 117571 no rank
117570 no rank 8287 no rank
117570 no rank 32523 no rank
117570 no rank 32524 no rank
117570 no rank 40674 class
117570 no rank 32525 no rank
117570 no rank 9347 no rank
117570 no rank 314146 superorder
117570 no rank 9443 order
117570 no rank 376913 suborder
117570 no rank 314293 infraorder
117570 no rank 9526 parvorder
117570 no rank 314295 superfamily
117570 no rank 9604 family
117570 no rank 207598 no rank
117570 no rank 9605 genus
117570 no rank 9606 species
117570 no rank 63221 subspecies
117571 no rank 8287 no rank
117571 no rank 32523 no rank
117571 no rank 32524 no rank
117571 no rank 40674 class
117571 no rank 32525 no rank
117571 no rank 9347 no rank
117571 no rank 314146 superorder
117571 no rank 9443 order
117571 no rank 376913 suborder
117571 no rank 314293 infraorder
117571 no rank 9526 parvorder
117571 no rank 314295 superfamily
117571 no rank 9604 family
117571 no rank 207598 no rank
117571 no rank 9605 genus
117571 no rank 9606 species
117571 no rank 63221 subspecies
131567 no rank 2759 superkingdom
131567 no rank 33154 no rank
131567 no rank 33208 kingdom
131567 no rank 6072 no rank
131567 no rank 33213 no rank
131567 no rank 33316 no rank
131567 no rank 33511 no rank
131567 no rank 7711 phylum
131567 no rank 89593 subphylum
131567 no rank 7742 no rank
131567 no rank 7776 superclass
131567 no rank 117570 no rank
131567 no rank 117571 no rank
131567 no rank 8287 no rank
131567 no rank 32523 no rank
131567 no rank 32524 no rank
131567 no rank 40674 class
131567 no rank 32525 no rank
131567 no rank 9347 no rank
131567 no rank 314146 superorder
131567 no rank 9443 order
131567 no rank 376913 suborder
131567 no rank 314293 infraorder
131567 no rank 9526 parvorder
131567 no rank 314295 superfamily
131567 no rank 9604 family
131567 no rank 207598 no rank
131567 no rank 9605 genus
131567 no rank 9606 species
131567 no rank 63221 subspecies
207598 no rank 9605 genus
207598 no rank 9606 species
207598 no rank 63221 subspecies
314146 superorder 9443 order
314146 superorder 376913 suborder
314146 superorder 314293 infraorder
314146 superorder 9526 parvorder
314146 superorder 314295 superfamily
314146 superorder 9604 family
314146 superorder 207598 no rank
314146 superorder 9605 genus
314146 superorder 9606 species
314146 superorder 63221 subspecies
314293 infraorder 9526 parvorder
314293 infraorder 314295 superfamily
314293 infraorder 9604 family
314293 infraorder 207598 no rank
314293 infraorder 9605 genus
314293 infraorder 9606 species
314293 infraorder 63221 subspecies
314295 superfamily 9604 family
314295 superfamily 207598 no rank
314295 superfamily 9605 genus
314295 superfamily 9606 species
314295 superfamily 63221 subspecies
376913 suborder 314293 infraorder
376913 suborder 9526 parvorder
376913 suborder 314295 superfamily
376913 suborder 9604 family
376913 suborder 207598 no rank
376913 suborder 9605 genus
376913 suborder 9606 species
376913 suborder 63221 subspecies
9606 species 63221 subspecies
+72
View File
@@ -0,0 +1,72 @@
taxid name class
63221 Homo neanderthalensis synonym
63221 Homo sapiens neanderthalensis scientific name
1 all synonym
1 root scientific name
2759 Eucarya synonym
2759 Eucaryotae synonym
2759 Eukarya synonym
2759 Eukaryota scientific name
2759 Eukaryotae synonym
2759 eucaryotes genbank common name
2759 eukaryotes common name
2759 eukaryotes blast name
6072 Eumetazoa scientific name
7711 Chordata scientific name
7711 chordates genbank common name
7711 chordates blast name
7742 Vertebrata scientific name
7742 vertebrates genbank common name
7742 vertebrates blast name
7776 Gnathostomata scientific name
7776 jawed vertebrates genbank common name
8287 Sarcopterygii scientific name
9347 Eutheria scientific name
9347 Placentalia synonym
9347 eutherian mammals common name
9347 placental mammals common name
9347 placentals genbank common name
9347 placentals blast name
9443 Primata synonym
9443 Primates scientific name
9443 primate equivalent name
9443 primates blast name
9526 Catarrhini scientific name
9604 Hominidae scientific name
9604 Pongidae synonym
9604 great apes common name
9605 Homo scientific name
32523 Tetrapoda scientific name
32523 tetrapods genbank common name
32524 Amniota scientific name
32524 amniotes genbank common name
32525 Theria scientific name
33154 Fungi/Metazoa group scientific name
33208 Animalia synonym
33208 Metazoa scientific name
33208 animals blast name
33208 metazoans genbank common name
33208 multicellular animals common name
33213 Bilateria scientific name
33316 Coelomata scientific name
33511 Deuterostomia scientific name
40674 Mammalia scientific name
40674 mammals genbank common name
40674 mammals blast name
89593 Craniata scientific name
117570 Teleostomi scientific name
117571 Euteleostomi scientific name
117571 bony vertebrates genbank common name
131567 biota synonym
131567 cellular organisms scientific name
207598 Homo/Pan/Gorilla group scientific name
314146 Euarchontoglires scientific name
314293 Anthropoidea synonym
314293 Simiiformes scientific name
314295 Hominoidea scientific name
314295 ape common name
314295 apes common name
376913 Haplorrhini scientific name
9606 Homo sapiens scientific name
9606 human genbank common name
9606 man common name
+103
View File
@@ -0,0 +1,103 @@
"""
tax3_gi2tax.py <db_name> <gi2tax_file>
db_name = name of the database produced by tax2_Node2Name.py scriopt
gi2tax_file = conactenation of gi_taxid_nucl.dmp and gi_taxid_prot.dmp downloaded from NCBI Taxonomy FTP site
"""
import pkg_resources
pkg_resources.require('pysqlite')
from pysqlite2 import dbapi2 as sqlite
import sys
import string
def main():
try:
dbName = sys.argv[1]
inFileGIs = sys.argv[2]
con = sqlite.connect(dbName)
except:
sys.stderr.write('tax3_gi2tax.py <db_name> <gi2tax_file>: Not enough arguments of database does not exist\n')
sys.exit(0)
cur = con.cursor()
try:
cur.execute('select * from node2name limit 1')
except:
sys.stderr.write('Table node2name does not exist')
sys.exit(0)
cur.execute('drop table if exists gi2tax')
cur.execute('create table gi2tax (gi int unsigned primary key, taxId int unsigned not null)')
cur.execute('drop table if exists tax')
cur.execute('create table tax (taxId int unsigned not null, tax text)')
cur.execute('insert into tax values(0,"superkingdom,kingdom,subkingdom,superphylum,phylum,subphylum,superclass,class,subclass,superorder,order,suborder,superfamily,family,subfamily,tribe,subtribe,genus,subgenus,species,subspecies")')
cur.execute('create index if not exists cId_index on node2name(cId)')
con.commit()
fg = open(inFileGIs, 'r')
try:
for line in fg:
field = string.split(line.rstrip(), '\t')
sqlTemplate = string.Template('insert into gi2tax values($gi, $taxId)')
sql = sqlTemplate.substitute(gi = int(field[0]), taxId = int(field[1]))
cur.execute(sql)
finally:
con.commit()
fg.close()
cur.execute('select distinct taxId from gi2tax')
for line in cur.fetchall():
i = 0
taxRank = ['n' for i in range(22)] # This number depends on the length of taxRank dictionary in tax2_Node2Name.py
# select all parents of a given taxId
sqlTemplate = string.Template('select * from node2name where cId = $taxId and pNumRank > 0 order by pNumRank asc')
sql = sqlTemplate.substitute(taxId = int(line[0]))
cur.execute(sql)
for item in cur.fetchall():
taxRank[item[2]-1] = str(item[6])
# select lowest ranking parent (with max pNumRank)
sqlTemplate = string.Template('select max(pNumRank) from node2name where cId = $taxId')
sql = sqlTemplate.substitute(taxId = int(line[0]))
cur.execute(sql)
row = cur.fetchone()
# Set the child of the lowest ranking parent as the lowest taxon for that taxId (e.g., species, subspecies etc.)
try:
sqlTemplate = string.Template('select * from node2name where cId = $taxId and pNumRank = $max_pNumRank')
sql = sqlTemplate.substitute(taxId = int(line[0]), max_pNumRank = int(row[0]))
cur.execute(sql)
lowestRank = cur.fetchone()
taxRank[int(lowestRank[5])-1] = str(lowestRank[7])
taxonomyInfo = ",".join(taxRank)
except:
print "The following taxId was not found in taxonomy database: ", line[0]
pass
taxTemplate = string.Template('insert into tax values($taxId, "$taxInfo")')
tax = taxTemplate.substitute(taxId = int(line[0]), taxInfo = taxonomyInfo)
cur.execute(tax)
cur.execute('create index taxId_index on tax(taxId)')
cur.execute('drop table if exists node2name')
cur.execute('vacuum')
con.commit()
con.close()
if __name__ == "__main__":
main()
+5
View File
@@ -0,0 +1,5 @@
33001686 9443
23236241 9604
12583 9606
410771 40674
2286205 63221
+5
View File
@@ -0,0 +1,5 @@
33001686 9443 root Eukaryota Metazoa n n Chordata Craniata Gnathostomata Mammalia n Euarchontoglires Primates n n n n n n n n n n
23236241 9604 root Eukaryota Metazoa n n Chordata Craniata Gnathostomata Mammalia n Euarchontoglires Primates Haplorrhini Hominoidea Hominidae n n n n n n n
12583 9606 root Eukaryota Metazoa n n Chordata Craniata Gnathostomata Mammalia n Euarchontoglires Primates Haplorrhini Hominoidea Hominidae n n n Homo n Homo sapiens n
410771 40674 root Eukaryota Metazoa n n Chordata Craniata Gnathostomata Mammalia n n n n n n n n n n n n n
2286205 63221 root Eukaryota Metazoa n n Chordata Craniata Gnathostomata Mammalia n Euarchontoglires Primates Haplorrhini Hominoidea Hominidae n n n Homo n Homo sapiens Homo sapiens neanderthalensis