forked from eliasventre/cardamom
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Draw_GRN_2.py
64 lines (54 loc) · 1.86 KB
/
Draw_GRN_2.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
55
56
57
58
59
60
61
62
# Draw the final GRN
import os
import numpy as np
import matplotlib.pyplot as plt
from harissa.utils import build_pos, plot_network
from sys import argv
Time_Line=1
# Time_Line: draw a GRN per time point
# The corresponding matrix have been generated by infer_network.py
# And thresholded by carda.py
D=argv[1]
P=argv[2]
T=argv[3]
cwd=argv[4]
def pgr(datamatrixarray,i,pos):
with open('../Data/Genenames.txt') as f:
Genenames = f.read().splitlines()
Genenames=np.asarray(Genenames)
# Figure
fig = plt.figure(figsize=(5,5))
ax = fig.gca()
# Draw the network
plot_network(datamatrixarray, pos, axes=ax, names=Genenames, scale=2)
#plot_network(datamatrixarray, pos, axes=ax, names=Genenames, scale=2, hide_isolated_genes=True, hide_stimulus_leaves=True)
# Export the figure
if i == "all":
ti='OG'+str(D)+'_'+str(P)+'_'+'Threshold='+str(T)+'_All_Times.pdf'
else:
os.chdir(str(cwd)+"/OG"+str(D)+"/"+str(P)+"/Data")
data_real = np.loadtxt('panel_real.txt', dtype=float, delimiter='\t')[1:, 1:]
data_real[0, :] = np.loadtxt('panel_real.txt', dtype=float, delimiter='\t')[0, 1:]
t_real = list(set(data_real[0, :]))
t_real.sort()
ti='OG'+str(D)+'_'+str(P)+'_'+'Threshold='+str(T)+'_Time='+str(t_real[i])+'.pdf'
os.chdir(str(cwd)+"/OG"+str(D)+"/"+str(P)+"/Results")
ax.text(-2, 9, ti,fontsize=30)
fig.savefig(ti, bbox_inches='tight')
# Define pos
os.chdir(str(cwd)+"/OG"+str(D)+"/"+str(P)+"/cardamom")
datamatrixarray = np.load('inter.npy')
# Node positions and names
pos = build_pos(datamatrixarray)
# scale to the number of genes
pos *= 8
# Draw complete GRN
pgr(datamatrixarray,"all", pos)
# Draw time-dependent GRNs
if Time_Line:
os.chdir(str(cwd)+"/OG"+str(D)+"/"+str(P)+"/cardamom")
dim=np.load('inter_t.npy')
for i in range(0, len(dim)):
os.chdir(str(cwd)+"/OG"+str(D)+"/"+str(P)+"/cardamom")
dmt = np.load('inter_{}.npy'.format(i))
pgr(dmt,i,pos)