Network

Boolean Network

Main class for Boolean network objects.

class cana.boolean_network.BooleanNetwork(name='', Nnodes=0, logic=None, sg=None, stg=None, stg_r=None, _eg=None, attractors=None, constants=None, Nconstants=None, keep_constants=False, bin2num=None, num2bin=None, verbose=False, *args, **kwargs)[source]
activity_graph(threshold=None)[source]

Returns the activity graph as proposed in Ghanbarnejad & Klemm (2012) EPL, 99

Parameters:

threshold (float) – Only return edges above a certain activity threshold. This is usefull when computing graph measures at diffent levels.

Returns:

directed graph

Return type:

(networkx.DiGraph)

approx_dynamic_impact(source, n_steps=1, target_set=None, bound='mean', threshold=0.0)[source]

Use the network structure to approximate the dynamical impact of a perturbation to node for each of n_steps for details see: Gates et al (2020).

Parameters:
  • source (int) – the source index for perturbations

  • n_steps (int) – the number of time steps

bound (str)the bound for the effective graph

‘mean’ - edge effectiveness ‘upper’ - activity

Returns:

approximate dynamical impact for each node at each step (2 x n_steps x n_nodes)

Return type:

(matrix)

attractor(initial)[source]

Computes the trajectory starting at initial until it reaches an attracor (this is garanteed)

Parameters:

initial (string) – the initial state.

Returns:

the atractor state.

Return type:

attractor (string)

attractor_driver_nodes(min_dvs=1, max_dvs=4, verbose=False)[source]

Get the minimum necessary driver nodes by iterating the combination of all possible driver nodes of length \(min <= x <= max\).

Parameters:
  • min_dvs (int) – Mininum number of driver nodes to search.

  • max_dvs (int) – Maximum number of driver nodes to search.

Returns:

The list of driver nodes found in the search.

Return type:

(list)

Note

This is an inefficient bruit force search, maybe we can think of better ways to do this?

attractors(mode='stg')[source]

Find the attractors of the boolean network.

Parameters:

mode (string) – stg or sat. Defaults to stg. stg: Uses the full State Transition Graph (STG) and identifies the attractors as strongly connected components. bns: Uses the SAT-based cana.bns to find all attractors.

Returns:

A list containing all attractors for the boolean network.

Return type:

attractors (list)

See also

cana.bns

average_trajectory_length(nsamples=10, random_seed=None, method='random')[source]

The average length of trajectories from a random initial configuration to its attractor.

Parameters:
  • nsamples (int) – The number of samples per hammimg distance to get.

  • random_seed (int) – The random state seed.

  • method (string) – specify the method you want. either ‘random’ or ….

Returns:

The average trajectory length to an attractor.

Return type:

trajlen (float)

conditional_effective_graph(conditioned_nodes={}, bound='mean', threshold=None)[source]

Computes and returns the BN effective graph conditioned on some known states.

Parameters:
  • conditioned_nodes (dict) – a dictionary mapping node ids to their conditioned states. dict of form { nodeid : nodestate }

  • bound (string) – The bound to which compute input redundancy. Can be one of : [“lower”, “mean”, “upper”, “tuple”]. Defaults to “mean”.

  • threshold (float) – Only return edges above a certain effective connectivity threshold. This is usefull when computing graph measures at diffent levels.

Returns:

directed graph

Return type:

(networkx.DiGraph)

controlled_attractor_graph(driver_nodes=[])[source]
Parameters:

cstg (networkx.DiGraph) – A Controlled State-Transition-Graph (CSTG)

Returns:

The Controlled Attractor Graph (CAG)

Return type:

(networkx.DiGraph)

controlled_state_transition_graph(driver_nodes=[])[source]

Returns the Controlled State-Transition-Graph (CSTG). In practice, it copies the original STG, flips driver nodes (variables), and updates the CSTG.

Parameters:

driver_nodes (list) – The list of driver nodes.

Returns:

The Controlled State-Transition-Graph.

Return type:

(networkx.DiGraph)

derrida_coefficient(nsamples=10, random_seed=None, method='random')[source]

The Derrida Coefficient. When “mode” is set as “random” (default), it would use random sampling to estimate Derrida value If “mode” is set as “sensitivity”, it would use c-sensitivity to calculate Derrida value (slower) You can refer to :cite:’kadelka2017influence’ about why c-sensitivity can be used to caculate Derrida value

Parameters:
  • nsamples (int) – The number of samples per hammimg distance to get.

  • random_seed (int) – The random state seed.

  • method (string) – specify the method you want. either ‘random’ or ‘sensitivity’

Returns:

The dx and dy of the curve.

Return type:

(dx,dy) (tuple)

derrida_curve(nsamples=10, max_hamm=None, random_seed=None, method='random')[source]

The Derrida Curve (also reffered as criticality measure \(D_s\)). When “mode” is set as “random” (default), it would use random sampling to estimate Derrida value If “mode” is set as “sensitivity”, it would use c-sensitivity to calculate Derrida value (slower) You can refer to :cite:’kadelka2017influence’ about why c-sensitivity can be used to caculate Derrida value

Parameters:
  • nsamples (int) – The number of samples per hammimg distance to get.

  • max_hamm (int) – The maximum Hamming distance between starting states. default: self.Nnodes

  • random_seed (int) – The random state seed.

  • method (string) – specify the method you want. either ‘random’ or ‘sensitivity’

Returns:

The dx and dy of the curve.

Return type:

(dx,dy) (tuple)

dist_from_attractor()[source]

Find the distance from attractor for each configuration.

Returns:

distance (dict). Nodes are dictionary indexes and distances the values.

dynamics_canalization_map(output=None, simplify=True, builder='legacy', remove_isolates=True)[source]

Computes the Dynamics Canalization Map (DCM). In practice, it asks each node to compute their Canalization Map and then puts them together, simplifying it if possible.

Parameters:
  • output (int) – The output DCM to return. Default is None, retuning both [0,1].

  • simplify (bool) – If True, apply threshold-unit reduction via cana.canalization.cm_simplify.simplify_canalizing_map() (does not remove tau=0 constant schemata).

  • builder (str or callable) – Per-node CM construction method. Default is 'legacy'. See cana.canalization.canalizing_map.build_canalizing_map() and cana.canalization.canalizing_map.CM_BUILDERS.

  • remove_isolates (bool) – If True (default), drop isolated nodes after compose. Isolate cleanup is orthogonal to simplify: unused opposite-polarity variable stubs from other nodes’ CMs are typically noise for drawing/analysis. Pass False for a raw composed graph.

Returns:

a directed graph representation of the DCM.

Return type:

DCM (networkx.DiGraph)

See also

boolean_node.canalizing_map() for the CM and drawing.draw_dynamics_canalizing_map_graphviz() for plotting. cana.canalization.cm_simplify.simplify_canalizing_map() for the simplify rules. cana.canalization.canalizing_map.CM_BUILDERS for named builders.

effective_graph(bound='mean', threshold=None)[source]

Computes and returns the effective graph of the network. In practice, it asks each BooleanNode for their edge_effectiveness(). None thresholded effective graph is cached after the first computation. Thresholded effective graphs are computed from the cached effective graph.

Parameters:
  • bound (string) – The bound to which compute input redundancy. Can be one of : [“lower”, “mean”, “upper”, “tuple”]. Defaults to “mean”.

  • threshold (float) – Only return edges above a certain effective connectivity threshold. This is usefull when computing graph measures at diffent levels.

Returns:

directed graph

Return type:

(networkx.DiGraph)

effective_indegrees()[source]

Returns the in-degrees of the Effective Graph. Sorted.

Returns:

(list)

effective_outdegrees()[source]

Returns the out-degrees of the Effective Graph. Sorted.

Returns:

(list)

feedback_vertex_set_driver_nodes(graph='structural', method='grasp', max_iter=1, max_search=11, keep_self_loops=True, *args, **kwargs)[source]

The minimum set of necessary driver nodes to control the network based on Feedback Vertex Set (FVS) theory.

Parameters:
  • graph (string) – Which graph to perform computation

  • method (string) – FVS method. bruteforce or grasp (default).

  • max_iter (int) – The maximum number of iterations used by the grasp method.

  • max_search (int) – The maximum number of searched used by the bruteforce method.

  • keep_self_loops (bool) – Keep or remove self loop in the graph to be searched.

Returns:

A list-of-lists with FVS solution nodes.

Return type:

(list)

Note

When computing FVS on the structural graph, you might want to use remove_constants=True to make sure the resulting set is minimal – since constants are not controlabled by definition. Also, when computing on the effective graph, you can define the desired threshold level.

fraction_pinned_attractors(pcstg_dict)[source]

Returns the Number of Accessible Attractors

Parameters:

pcstg_dict (dict of networkx.DiGraph) – The dictionary of Pinned Controlled State-Transition-Graphs.

Returns:

Number of Accessible Attractors

Return type:

(int)

fraction_pinned_configurations(pcstg_dict)[source]

Returns the Fraction of successfully Pinned Configurations

Parameters:

pcstg_dict (dict of networkx.DiGraph) – The dictionary of Pinned Controlled State-Transition-Graphs.

Returns:

the Fraction of successfully Pinned Configurations to each attractor

Return type:

(list)

classmethod from_dict(logic, keep_constants=True, **kwargs)[source]

Instanciaets a BooleanNetwork from a logic dictionary.

Parameters:
  • logic (dict) – The logic dict.

  • keep_constants (bool)

Returns:

(BooleanNetwork)

classmethod from_file(file, type='cnet', keep_constants=True, **kwargs)[source]

Load the Boolean Network from a file.

Parameters:
  • file (string) – The name of a file containing the Boolean Network.

  • type (string) – The type of file, either ‘cnet’ (default) or ‘logical’ for Boolean logical rules.

Returns:

The boolean network object.

Return type:

BooleanNetwork (object)

See also

from_string() from_dict()

classmethod from_string_boolean(string, keep_constants=True, **kwargs)[source]

Instanciates a Boolean Network from a Boolean update rules format.

Parameters:

string (string) – A boolean update rules format representation of a Boolean Network.

Returns:

The boolean network object.

Return type:

(BooleanNetwork)

Examples

String should be structured as follow

# BOOLEAN RULES (this is a comment)
# node_name*=node_input_1 [logic operator] node_input_2 ...
NODE3*=NODE1 AND NODE2 ...

See also

from_string() from_dict()

classmethod from_string_cnet(string, keep_constants=True, **kwargs)[source]

Instanciates a Boolean Network from a string in cnet format.

Parameters:

string (string) – A cnet format representation of a Boolean Network.

Returns:

(BooleanNetwork)

Examples

String should be structured as follow:

#.v = number of nodes
.v 1
#.l = node label
.l 1 node-a
.l 2 node-b
#.n = (node number) (in-degree) (input node 1) … (input node k)
.n 1 2 4 5
01 1 # transition rule
get_constants()[source]

Retrieved a dictionary containing all constant nodes

get_node_name(iterable=[])[source]

Return node names. Optionally, it returns only the names of the ids requested.

Parameters:

iterable (int,list, optional) – The id (or list of ids) of nodes to which return their names.

Returns:

The name of the nodes.

Return type:

names (list)

mean_controlable_configurations(cstg)[source]

The Mean Fraction of Controlable Configurations

Parameters:

cstg (networkx.DiGraph) – The Controlled State-Transition-Graph.

Returns:

Mean Fraction of Controlable Configurations.

Return type:

(float)

mean_fraction_pinned_configurations(pcstg_dict)[source]

Returns the mean Fraction of successfully Pinned Configurations

Parameters:

pcstg_dict (dict of networkx.DiGraph) – The dictionary of Pinned Controlled State-Transition-Graphs.

Returns:

the mean Fraction of successfully Pinned Configurations

Return type:

(int)

mean_reachable_attractors(cag, norm=True)[source]

The Mean Fraction of Reachable Attractors to a specific Controlled Attractor Graph (CAG).

Parameters:

cag (networkx.DiGraph) – A Controlled Attractor Graph (CAG).

Returns:

(float) Mean Fraction of Reachable Attractors

mean_reachable_configurations(cstg)[source]

Returns the Mean Fraction of Reachable Configurations

Parameters:

cstg (networkx.DiGraph) – The Controlled State-Transition-Graph.

Returns:

Mean Fraction of Reachable Configurations

Return type:

(float)

minimum_dominating_set_driver_nodes(graph='structural', max_search=5, keep_self_loops=True, *args, **kwargs)[source]

The minimun set of necessary driver nodes to control the network based on Minimum Dominating Set (MDS) theory.

Parameters:
  • max_search (int) – Maximum search of additional variables. Defaults to 5.

  • keep_self_loops (bool) – If self-loops are used in the computation.

Returns:

A list-of-lists with MDS solution nodes.

Return type:

(list)

network_bias()[source]

Network Bias. The sum of individual node biases divided by the number of nodes. Practically, it asks each node for their own bias.

See also

bias()

number_interactions()[source]

Returns the number of interactions in the Structural Graph (SG). Practically, it returns the number of edges of the SG.

Returns:

int

partial_derative_node(node, n_traj=10, t=1)[source]

The partial derivative of node on all other nodes after t steps

Parameters:
  • node (int) – the node index for perturbations

  • t (int) – the number of time steps the system is run before impact is calculated.

  • n_traj (int) – the number of trajectories used to approximate the dynamical impact of a node. if 0 then the full STG is used to calculate the true value instead of the approximation method.

Returns:

the partial derivatives

Return type:

(vector)

pinned_step(initial, pinned_binstate, pinned_var)[source]

Steps the boolean network 1 step from the given initial input condition when the driver variables are pinned to their controlled states.

Parameters:
  • initial (string) – the initial state.

  • n (int) – the number of steps.

Returns:

The stepped binary state.

Return type:

(string)

pinning_controlled_state_transition_graph(driver_nodes=[])[source]

Returns a dictionary of Controlled State-Transition-Graph (CSTG) under the assumptions of pinning controllability.

In practice, it copies the original STG, flips driver nodes (variables), and updates the CSTG.

Parameters:

driver_nodes (list) – The list of driver nodes.

Returns:

The Pinning Controlled State-Transition-Graph.

Return type:

(networkx.DiGraph)

set_constant(node, constant=True, state=None)[source]

Sets or unsets a node as a constant.

Parameters:
  • node (int) – The node id in the logic dict.

  • constant (Boolean) – Whether to set or unset the node as a constant.

  • state (str; optional) – The state value to which to set the node. Either ‘0’ or ‘1’; default to current state value.

signed_interaction_graph()[source]

Calculates and returns the signed interaction graph of the boolean network. Here, edge weights denote if an interaction is activation (1), inhibition (-1), or cannot be classified (0).

Returns:

The boolean network structural graph.

Return type:

G (networkx.Digraph)

state_transition_graph()[source]

Creates and returns the full State Transition Graph (STG) for the Boolean Network.

Returns:

The state transition graph for the Boolean Network.

Return type:

(networkx.DiGraph)

state_transition_graph_reachability(filename=None)[source]

Generates a State-Transition-Graph Reachability (STG-R) dictionary. This dict/file will be used by the State Transition Graph Control Analysis.

Parameters:

filename (string) – The location to a file where the STG-R will be stored.

Returns:

The STG-R in dict format.

Return type:

(dict)

step(initial)[source]

Steps the boolean network from the given initial configuration.

Parameters:

initial (string) – the initial configuration state.

Returns:

The stepped binary state.

Return type:

(string)

stg_indegree()[source]

Returns the In-degrees of the State-Transition-Graph (STG). Sorted.

Returns:

list

structural_controllability_driver_nodes(graph='structural', keep_self_loops=True, *args, **kwargs)[source]

The minimum set of necessary driver nodes to control the network based on Structural Controlability (SC) theory.

Parameters:

keep_self_loops (bool) – If self-loops are used in the computation.

Returns:

A list-of-lists with SC solution nodes.

Return type:

(list)

structural_graph(remove_constants=False)[source]

Calculates and returns the structural graph of the boolean network.

Parameters:

remove_constants (bool) – Remove constants from the graph. Defaults to False.

Returns:

The boolean network structural graph.

Return type:

G (networkx.Digraph)

structural_indegrees()[source]

Returns the in-degrees of the Structural Graph. Sorted.

Returns:

the number of in-degrees.

Return type:

(int)

structural_outdegrees()[source]

Returns the out-degrees of the Structural Graph. Sorted.

Returns:

out-degrees.

Return type:

(list)

to_cnet(file=None, adjust_no_input=False)[source]

Outputs the network logic to .cnet format, which is similar to the Berkeley Logic Interchange Format (BLIF). This is the format used by BNS to compute attractors.

Parameters:
  • file (string,optional) – A string of the file to write the output to. If not supplied, a string will be returned.

  • adjust_no_input (bool) – Adjust output string for nodes with no input.

Returns:

The .cnet format string.

Return type:

(string)

Note

See BNS for more information.

trajectory(initial, length=2)[source]

Computes the trajectory of length steps without the State Transition Graph (STG).

trajectory_to_attractor(initial, precompute_attractors=True, return_attractor=False)[source]

Computes the trajectory starting at initial until it reaches an attracor (this is garanteed).

Parameters:
  • initial (string) – the initial binstate.

  • precompute_attractors (bool) – use precomputed attractors, default True.

  • return_attractor (bool) – also return the attractor reached, default False.

Returns:

the state trajectory between initial and the final attractor state. if return_attractor: (list): the attractor

Return type:

(list)

BNS Attractors Interface

This module interfaces CANA with the [B]oolean [N]etworks with [S]ynchronous update (BNS) [DT11] to compute attractors.

BNS is a software tool for computing attractors in Boolean Networks with Synchronous update. Synchronous Boolean networks are used for the modeling of genetic regulatory networks.

BNS implements the algorithm presented in which is based on a SAT-based bounded model checking. BNS uses much less space compared to BooleNet or other BDD-based approaches for computing attractors. It can handle several orders of magnitude larger networks.

Note

You must have bns compiled for you system. Alternatively, you can download the binary from the bns website directly. Last updated: March 2017.

cana.bns.attractors(cnet, bnspath='/home/runner/work/CANA/CANA/cana/bns', cleanup=True)[source]

Makes a subprocess call to bns supplying a temporary file with the boolean logic.

Parameters:
  • cnet (file,string) – A .cnet formated string or file.

  • bnspath (string) – The path to the bns binary.

  • cleanup (bool) – If cnet is a string, this function creates a temporary file. This forces the removal of this temp file.

Returns:

the list of attractors

Return type:

list