diff tools/myTools/bin/sfa/data/pezze_2012/__init__.py @ 1:7e5c71b2e71f draft default tip

Uploaded
author laurenmarazzi
date Wed, 22 Dec 2021 16:00:34 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/myTools/bin/sfa/data/pezze_2012/__init__.py	Wed Dec 22 16:00:34 2021 +0000
@@ -0,0 +1,112 @@
+# -*- coding: utf-8 -*-
+
+"""
+[Reference]
+Dalle Pezze, P. et al.
+A Dynamic Network Model of mTOR Signaling Reveals
+TSC-Independent mTORC2 Regulation.
+Science Signaling. 2012 Mar 27;5(217):ra25
+http://doi:10.1126/scisignal.2002469
+
+[Information]
+- The experimental data was generated using ODE model of Pezze et al.
+  (It is hypothesized that the ODE model is quite well constructed enough to be
+  a substitute for real experimental data).
+- The directed network was created by Junsoo Kang (reality312@kaist.ac.kr).
+- The unit of insulin (I) stimulation is nM.
+"""
+
+import sys
+if sys.version_info <= (2, 8):
+    from builtins import super
+
+import os
+import re
+import glob
+
+import numpy as np
+import pandas as pd
+
+import sfa
+import sfa.base
+
+
+def create_data(abbr=None):
+    if abbr is None:  # Create all data objects
+        data_mult = {}  # Multiple data
+        dpath = os.path.dirname(__file__)
+
+        fstr_file = os.path.join(dpath, 'exp_data', '*.tsv')
+        for abspath in glob.glob(fstr_file):
+            fname = os.path.basename(abspath)
+            data_obj = _create_single_data(abbr, fname=fname)
+            data_mult[data_obj.abbr] = data_obj
+
+        # end of for
+
+        return data_mult
+    else:  # Create a single data object
+        return _create_single_data(abbr)
+
+# end of def
+
+def _create_single_data(abbr=None, fname=None):
+    dpath = os.path.dirname(__file__)
+
+    if fname:
+        items = re.split('[._]', fname)
+
+        sim_duration = items[0]
+        data_type = items[1]
+        stim_I = items[2]  # The concentration of insulin stimulation
+
+        # Fetch the concentration of I
+        m = re.search("I=((\d|d)+)", stim_I)
+        dconc_I = m.group(1)
+        conc_I = dconc_I.replace('d', '.')  # Use '.' instead of 'd'
+        abbr = "%s_%s_I=%s"%(sim_duration, data_type, conc_I)
+
+    elif abbr:  # Use abbr
+        items = re.split('[_]', abbr)
+
+        sim_duration = items[1]
+        data_type = items[2]
+        stim_I = items[3]  # The concentration of insulin stimulation
+
+        # Fetch the concentration of I
+        m = re.search("I=((\w|\.)+)", stim_I)
+        conc_I = m.group(1)
+        fname = "%s_%s_I=%s.tsv" % (sim_duration, data_type, conc_I)
+    else:
+        raise ValueError("One of abbr or fname should be given"
+                         "in %s._create_single_data()"%(__name__))
+    # end of if-else
+
+    fname_exp = os.path.join('exp_data', fname)
+    fname_conds = "conds.tsv"
+
+
+    return PezzeData(abbr, data_type,
+                     conc_I,
+                     fname_conds, fname_exp)
+# end of def
+
+
+class PezzeData(sfa.base.Data):
+    def __init__(self, abbr, data_type, conc_I, fname_conds, fname_exp):
+        super().__init__()
+        self._abbr = abbr
+        fstr_name = "PEZZE_2011_%s[I=%snM]"
+        str_name = fstr_name % (data_type, conc_I)
+        self._name = str_name
+
+        inputs = {}
+        inputs['I/IGF'] = 1 #np.log2(float(conc_I))
+
+        self.initialize(__file__,
+                   inputs=inputs,
+                   fname_conds=fname_conds,
+                   fname_exp=fname_exp)
+
+    # end of def __init__
+# end of def class
\ No newline at end of file