Boolean network-based analysis of the apoptosis network (Mai and Liu 2009)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:144586
"To understand the design principles of the molecular interaction network associated with the irreversibility of cell apoptosis and the stability of cell surviving, we constructed a Boolean network integrating both the intrinsic and extrinsic pro-apoptotic pathways with pro-survival signal transduction pathways. We performed statistical analyses of the dependences of cell fate on initial states and on input signals. The analyses reproduced the well-known pro- and anti-apoptotic effects of key external signals and network components. We found that the external GF signal by itself did not change the apoptotic ratio from randomly chosen initial states when there is no external TNF signal, but can significantly offset apoptosis induced by the TNF signal. ..."
Reference:
1 . Mai Z, Liu H (2009) Boolean network-based analysis of the apoptosis network: irreversible apoptosis and stable surviving. J Theor Biol 259:760-9 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Molecular Network;
Brain Region(s)/Organism: Generic;
Cell Type(s):
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON; Python;
Model Concept(s): Methods; Signaling pathways; Boolean network; Apoptosis;
Implementer(s): Neymotin, Sam [Samuel.Neymotin at nki.rfmh.org];
/
anetdemo
readme.html
bnet.mod
misc.mod *
stats.mod *
vecst.mod *
apopnames.txt
apoprules.txt
bnet.py
dbgnames.txt
dbgrules.txt
declist.hoc *
decmat.hoc *
decnqs.hoc *
decvec.hoc *
default.hoc *
grvec.hoc *
init.hoc
local.hoc *
misc.h *
misc.py *
mosinit.py
netstate.gif
network.py
nqs.hoc *
nrnoc.hoc *
pyinit.py *
python.hoc
pywrap.hoc *
simctrl.hoc *
snutils.py
                            
# $Id: network.py,v 1.34 2012/08/09 16:29:02 samn Exp $ 

from pyinit import *

h.load_file("pywrap.hoc") 

from bnet import *

#######################################
#      some utils to avoid the h.     #
vlk = h.vlk
Vector = h.Vector
NQS = h.NQS
gg = h.gg
ge = h.ge
gg()
g = h.g[0]
Random = h.Random
List = h.List
Matrix = h.Matrix
nqsdel = h.nqsdel
#######################################

class apopnet(bnet):
    "apoptosis boolean network"    
    def __init__ (self,fnames="apopnames.txt",frules="apoprules.txt"):
        bnet.__init__(self,fnames,frules)

    # run boolean network bn for niters using starting vector vstart
    # save animation to a gif using Graphviz and ImageMagick convert
    # requires Graphviz/ImageMagick installation and a directory called
    # frames in the current working directory to save output to. this
    # function will also write to a temporary file called __junk__.dot
    def myanim (self,niters,fgif):
        self.start()
        os.system("rm frames/frame*.gif") # get rid of old gif frames
        for i in range(niters):
            fn = "frames/frame." + ("%03d" % i) + ".gif"
            self.bn.graphviz("__junk__.dot",fn,"gif",1,15,10,20) # must have Graphviz installed
            self.bn.advancebn()
        os.system("convert -delay 200 -loop 0 frames/frame*.gif %s" % fgif) # uses ImageMagick convert

    # reachedapop - return True when the network has been run to an apoptotic state
    def reachedapop (self):
        idx = self.idnames["Apoptosis"]
        for i in range(len(self.lstate)):
            if self.lstate[i][idx] == 1: return True
        return False

    # survived - return True when network has not reached an apoptotic state
    def survived (self):
        return not self.reachedapop()

    # randruns - run for niters with different random starting states
    #  each run consists of nsteps advances
    #  returns an NQS with iteration number, starting/final state, and whether apoptotic
    def randruns (self,niters,nsteps=200,rseed=1234):
        nq=h.NQS("iter","TNF","GF","vstart","vfinal","apop")
        nq.odec("vstart")
        nq.odec("vfinal")
        nq.clear(niters*4) # reserve space
        self.setrand(rseed)
        for i in range(niters):
            if i % 100 == 0: print("init %d of %d" % (i, niters))
            self.randvstart() # randomize starting state
            for TNFState in range(2):
                self.vstart.x[self.idnames["TNF"]] = TNFState # sets TNF state
                for GFState in range(2):
                    self.vstart.x[self.idnames["GF"]] = GFState # sets GF state
                    self.startrun(nsteps) # start the network up and run it
                    nq.append(i,TNFState,GFState,self.vstart,self.lstate[-1],self.reachedapop())
        return nq

anet = apopnet() # make the apoptosis network