-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathplot.py
More file actions
75 lines (67 loc) · 2.82 KB
/
Copy pathplot.py
File metadata and controls
75 lines (67 loc) · 2.82 KB
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import plotly.graph_objects as go
import sys
import json
if __name__ == '__main__':
with open(f'{sys.argv[1]}', 'r') as f:
input_data = json.load(f)
labels = list()
parents = list()
values = list()
for i, accession in enumerate(input_data):
print(f'Processing item {i + 1}/{len(input_data)} -> {accession}')
item = input_data[accession]
if 'kingdom' in item and item['kingdom'] is not None:
kingdom_name = item['kingdom']['name']
if kingdom_name not in labels:
labels.append(kingdom_name)
parents.append('')
values.append(0)
else:
index = labels.index(kingdom_name)
values[index] += 1
if 'superclass' in item and item['superclass'] is not None:
superclass_name = item['superclass']['name']
if superclass_name not in labels:
labels.append(superclass_name)
parents.append(kingdom_name)
values.append(0)
else:
index = labels.index(superclass_name)
values[index] += 1
if 'class' in item and item['class'] is not None:
class_name = item['class']['name']
if class_name not in labels:
labels.append(class_name)
parents.append(superclass_name)
values.append(0)
else:
index = labels.index(class_name)
values[index] += 1
if 'subclass' in item and item['subclass'] is not None:
subclass_name = item['subclass']['name']
if subclass_name not in labels:
labels.append(subclass_name)
parents.append(class_name)
values.append(0)
else:
index = labels.index(subclass_name)
values[index] += 1
print(labels)
print(parents)
print(values)
print(len(labels))
print(len(parents))
print(len(values))
fig = go.Figure()
fig.add_trace(go.Sunburst(
ids=labels,
labels=labels,
parents=parents,
values=values,
branchvalues="total",
insidetextorientation='radial',
))
fig.update_layout(
margin = dict(t=10, l=10, r=10, b=10)
)
fig.show()