Mercurial > repos > cschu > kraken_tools
comparison kraken_visualize.py @ 8:fe6f7ae0bec2 draft
Uploaded
author | cschu |
---|---|
date | Mon, 18 May 2015 15:45:09 -0400 |
parents | 0916697409ea |
children |
comparison
equal
deleted
inserted
replaced
7:5f6f86c9937b | 8:fe6f7ae0bec2 |
---|---|
1 #!/usr/bin/env python | |
2 | |
3 import sys | |
4 | |
5 def readTaxonomyNames(names_dmp): | |
6 nodeNames = [] | |
7 for line in open(names_dmp): | |
8 line = line.strip().strip('|').strip() | |
9 if not line: break | |
10 line = line.split('\t|\t') | |
11 if line[3].strip() == 'scientific name': | |
12 nodeNames.append((int(line[0].strip()), line[1].strip())) | |
13 pass | |
14 return dict(nodeNames) | |
15 | |
16 def readTaxonomyNodes(nodes_dmp): | |
17 nodeRanks = [] | |
18 nodeChildren = {} | |
19 nodeParents = {} | |
20 for line in open(nodes_dmp): | |
21 line = line.strip().strip('|').strip() | |
22 if not line: break | |
23 line = map(lambda x:x.strip(), line.split('\t|\t')) | |
24 line[:2] = map(int, line[:2]) | |
25 if line[0] == 1: | |
26 line[1] = 1 | |
27 | |
28 nodeParents[line[0]] = line[1] | |
29 try: | |
30 nodeChildren[line[1]].add(line[0]) | |
31 except: | |
32 nodeChildren[line[1]] = set([line[0]]) | |
33 nodeRanks.append((line[0], line[2])) | |
34 | |
35 return dict(nodeRanks), nodeChildren, nodeParents | |
36 | |
37 def getDescendents(taxID, tree): | |
38 descendents = set([taxID]) | |
39 queue = [taxID] | |
40 while queue: | |
41 node = queue.pop() | |
42 | |
43 children = tree.get(node, set()) | |
44 if children: | |
45 descendents = descendents.union(children) | |
46 queue.extend(children) | |
47 pass | |
48 return descendents |