ELIFE-ASU/Neet

c-sensitivity

bcdaniels opened this issue · 1 comments

I haven't looked into this carefully, but Santosh Manicka recommends c-sensitivity:

I also wanted to bring to your attention a generalized measure of sensitivity known as “c-sensitivity” (that was worked out by another group) that can be used to analytically compute the Derrida map on which criticality is based: https://www.sciencedirect.com/science/article/pii/S0167278916303621 It’s actually straight-forward to implement it if you are interested in adding it to your package.

Description

Compute sensitivity based on non-unit perturbations, c. The current implementation of SensitivityMixin.sensitivity and SensitivityMixin.average_sensitivity.

Proposed API

Modify the SensitivityMixin methods sensitivity and average_sensitivity to accept a distance parameter c.

class SensitivityMixin(object):
    def sensitivity(state, c=1, transitions=None):
        pass

    def average_sensitivity(c=1, transitions=None):
        pass

Note: This will require modification of the BooleanNetwork.hamming_neighbors method to accept a hamming distance.

class BooleanNetwork(...):
    def hamming_neighbors(state, c=1):
        pass

Example Usage

from neet.boolean.examples import s_pombe
s_pombe.sensitivity([0, 0, 1, 0, 0, 1, 0, 0, 1], c=2)
s_pombe.average_sensitivity(c=2)

References

Kadelka C, Kuipers J, Laubenbacher R. The influence of canalization on the robustness of Boolean networks. Physica D. 2017;353-354: 39–47. doi:10.1016/j.physd.2017.05.002.