# Sensitivity Analysis¶

Neet provides an API for computing various measures of sensitivity on Networks via the
`SensitivityMixin`

. Sensitivity, in its simplest form, is a measure of how small
perturbations of the network’s state change under the dynamics. In the sensitivity parlance, a
network is called, *sub-critical*, *critical*, or *chaotic* if the perturbation tends to shrink,
stay the same, or grow over time.

Note

As of the v1.0.0 release, only the `neet.boolean`

module provides implementations of the
sensitivity interface. A subsequent release will generalize this mixin to support a wider range
of network models.

## Boolean Sensitivity¶

The standard definition of sensitivity at a given state of a Boolean network is defined in terms of the Hamming distance:

That is, the number of bits differing between two binary states, \(x\) and \(y\). A Hamming neighbor of a state \(x\) is a state that differs from it by exactly \(1\) bit. We can write \(x \oplus e_i\) to represent the Hamming neighbor of \(x\) which differs in the \(i\)-th bit. The sensitivity of the state \(x\) is then defined as

where \(f\) is the network’s update function, and \(N\) is the number of nodes in the network.

Neet makes computing sensitivity at a given network state as straightforward as possible:

```
>>> s_pombe.sensitivity([0, 0, 0, 0, 0, 0, 0, 0 ,0])
1.5555555555555556
```

More often than not, though, you’ll want to compute the average of the sensitivity over all of the states of the network. That is

In Neet, just ask for it

```
>>> s_pombe.average_sensitivity()
0.9513888888888888
```

For a full range of sensitivity-related features offered by Neet, see the API References.