annotate tools/myTools/bin/SFA_exp_attr.py @ 1:7e5c71b2e71f draft default tip

Uploaded
author laurenmarazzi
date Wed, 22 Dec 2021 16:00:34 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
1 #!/usr/bin/env python3
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
2 # -----------------------------------------------------------
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
3 # SimulateAttractors.py
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
4 ## estimate experimental attractors
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
5 ## calculate the median of the resistant and vehicle attractors
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
6 #-----------------------------------------------------------
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
7
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
8
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
9 import os
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
10 import numpy as np
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
11 import pandas as pd
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
12 import networkx as nx
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
13 import random
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
14 import sfa
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
15 import csv
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
16 import sys
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
17 ########INPUTS############
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
18
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
19 fpath = os.path.join(sys.argv[1]) #location of networkfile
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
20
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
21 samples=pd.read_csv(sys.argv[2],index_col = 0) ##expression values for data
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
22
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
23 class ThreeNodeCascade(sfa.base.Data):
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
24 def __init__(self):
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
25 super().__init__()
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
26 self._abbr = "TNC"
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
27 self._name = "A simple three node cascade"
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
28
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
29 signs = {'activates':1, 'inhibits':-1}
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
30 A, n2i, dg = sfa.read_sif(fpath, signs=signs, as_nx=True)
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
31 self._A = A
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
32 self._n2i = n2i
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
33 self._dg = dg
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
34 self._i2n = {idx: name for name, idx in n2i.items()}
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
35
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
36 # end of def __init__
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
37 # end of def class
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
38
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
39 if __name__ == "__main__":
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
40 ## initalize parameters from SFA
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
41 data = ThreeNodeCascade()
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
42 algs = sfa.AlgorithmSet()
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
43 alg = algs.create('SP')
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
44 alg.data = data
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
45 alg.params.apply_weight_norm = True
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
46 alg.initialize()
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
47 alg.params.exsol_forbidden=True
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
48 alg.params.alpha=.9
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
49
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
50 netnodes= list(data.dg.nodes) #get network node names
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
51 samples=samples.loc[list(set(netnodes) & set(samples.index))]
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
52 n = data.dg.number_of_nodes() #the number of nodes
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
53 b = np.zeros((n,))
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
54
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
55
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
56
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
57 logss=pd.DataFrame(index=samples.columns,columns=netnodes,copy=True)
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
58 pi=[]
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
59 for name, item in samples.iteritems(): #for each experimental sample
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
60 enodes=item.index.tolist()
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
61 for node in enodes: # set initial state to sample norm exp value
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
62 b[data.n2i[node]]=float(str(item.loc[node]))
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
63
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
64 x = alg.compute(b,pi) #Run SFA calculation
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
65 logss.loc[name,netnodes]=x[0]
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
66 logss=logss.astype(float).round(3)
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
67 #write out nondisc tables
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
68 logss.to_csv('attrs_exp.tsv', sep=' ',float_format='%.3f',index_label="name",chunksize=10000)