ELIFE-ASU / Neet

Simulating and analyzing dynamical network models
https://neet.readthedocs.io/en/stable
Other
4 stars 10 forks source link

Control Kernel Identification #19

Open dglmoore opened 7 years ago

dglmoore commented 7 years ago

Description

It would be useful to have a function that returns a list of the control kernel nodes of a given synchronous network.

Kim, Junil, Sang-Min Park, and Kwang-Hyun Cho. "Discovery of a kernel for controlling biomolecular regulatory networks."Scientific reports 3 (2013): 2223.

Proposed API

"""
:param net: the network for which to find the control kernel
:param n: the number of nodes in `net` (None if it is `net` sized)
:returns: the indices of the control kernel nodes
"""
def control_kernel(net, n=None)

Example Usage


>>> s_pombe = TWNetwork.read("fission-yeast-nodes.txt", "fission-yeast-edges.txt")
>>> ck_nodes = control_kernel(s_pombe)
>>> ck_nodes
[ 2, 3, 6, 7 ]
>>> s_pombe.names[ck_nodes]
[ "Ste9", "Rum1", "Wee1", "Cdc25" ]
dglmoore commented 7 years ago

@thyamu Can you please add a reference to the original CK paper to my above description?

thyamu commented 7 years ago

Scientific reports 2013 Kim-1.pdf

bcdaniels commented 7 years ago

I/we think that there are two main distinct types of control: "pinning" and "intervention".

hbsmith commented 7 years ago

We talked about different definitions of control kernels that we could implement, and the need to formalize these definitions in some kind of outline/document.

siyuzhou commented 7 years ago

@bcdaniels I prefer the name "override" to "intervention". :)

bcdaniels commented 6 years ago

The concept of a control kernel may be related to Stu's ideas of "frozen cores".

bcdaniels commented 11 months ago

Note that the computing of control kernels is now implemented in our fork of Neet, here: https://github.com/Collective-Logic-Lab/Neet There is still work to be done in integrating this more elegantly into the Neet framework: see https://github.com/Collective-Logic-Lab/Neet/issues/3