infomap module¶
- class infomap.Infomap¶
Bases:
_InfomapResultsMixin,_InfomapWritersMixin,InfomapWrapperThis class is a thin wrapper around Infomap C++ compiled with SWIG.
Examples
Create an instance and add nodes and links:
>>> from infomap import Infomap >>> im = Infomap(silent=True) >>> im.add_node(1) >>> im.add_node(2) >>> im.add_link(1, 2) >>> im.run() >>> im.codelength 1.0
Create an instance and read a network file:
>>> from infomap import Infomap >>> im = Infomap(silent=True, num_trials=10) >>> im.read_file("ninetriangles.net") >>> im.run() >>> tol = 1e-4 >>> abs(im.codelength - 3.4622731375264144) < tol True
For more examples, see the examples directory.
- __init__(args=None, cluster_data=None, no_infomap=False, skip_adjust_bipartite_flow=False, bipartite_teleportation=False, weight_threshold=None, include_self_links=None, no_self_links=False, node_limit=None, matchable_multilayer_ids=None, assign_to_neighbouring_module=False, meta_data=None, meta_data_rate=1.0, meta_data_unweighted=False, tree=False, ftree=False, clu=False, verbosity_level=1, silent=False, out_name=None, no_file_output=False, clu_level=None, output=None, hide_bipartite_nodes=False, print_all_trials=False, two_level=False, flow_model=None, directed=None, recorded_teleportation=False, use_node_weights_as_flow=False, to_nodes=False, teleportation_probability=0.15, regularized=False, regularization_strength=1.0, entropy_corrected=False, entropy_correction_strength=1.0, markov_time=1.0, variable_markov_time=False, variable_markov_damping=1.0, variable_markov_min_scale=1.0, preferred_number_of_modules=None, multilayer_relax_rate=0.15, multilayer_relax_limit=-1, multilayer_relax_limit_up=-1, multilayer_relax_limit_down=-1, multilayer_relax_by_jsd=False, seed=123, num_trials=1, core_loop_limit=10, core_level_limit=None, tune_iteration_limit=None, core_loop_codelength_threshold=1e-10, tune_iteration_relative_threshold=1e-05, fast_hierarchical_solution=None, prefer_modular_solution=False, inner_parallelization=False, num_random_moves=None, max_degree_for_random_moves=None)¶
Create a new Infomap instance.
Keyword arguments mirror the Infomap CLI flags. Use
InfomapOptionsfor a reusable configuration object and the full parameter reference.- Parameters:
args (str, optional) – Raw Infomap arguments to prepend before rendered keyword options.
- add_link(source_id, target_id, weight=1.0)¶
Add a link.
Notes
If the source or target nodes does not exist, they will be created.
See also
- Parameters:
source_id (int)
target_id (int)
weight (float, optional)
- add_links(links)¶
Add several links.
Examples
>>> from infomap import Infomap >>> im = Infomap() >>> links = ( ... (1, 2), ... (1, 3) ... ) >>> im.add_links(links) >>> import numpy as np >>> im.add_links(np.array([[2, 3, 1.0], [3, 4, 2.0]]))
See also
- Parameters:
links (iterable of tuples or numpy.ndarray) – Iterable of tuples of int of the form
(source_id, target_id, [weight]). NumPy arrays must be 2-dimensional with 2 or 3 columns, where the first two columns are source and target ids and the optional third column is link weight.
- add_multilayer_inter_link(source_layer_id, node_id, target_layer_id, weight=1.0)¶
Add an inter-layer link.
Adds a link between two layers in a multilayer network. The link is specified through a shared physical node, but that jump will not be recorded so Infomap will spread out this link to the next possible steps for the random walker in the target layer.
Notes
This multilayer format requires a directed network, so if the directed flag is not present, it will add all links also in their opposite direction to transform the undirected input to directed. If no inter-layer links are added, Infomap will simulate these by relaxing the random walker’s constraint to its current layer. The final state network will be generated on run, which will clear the temporary data structure that holds the provided inter-layer links.
Examples
>>> from infomap import Infomap >>> im = Infomap() >>> im.add_multilayer_inter_link(1, 1, 2) >>> im.add_multilayer_inter_link(1, 2, 2) >>> im.add_multilayer_inter_link(2, 1, 1) >>> im.add_multilayer_inter_link(2, 3, 1)
- Parameters:
source_layer_id (int)
node_id (int)
target_layer_id (int)
weight (float, optional)
- add_multilayer_inter_links(links)¶
Add several inter-layer links.
Examples
>>> from infomap import Infomap >>> im = Infomap() >>> links = ( ... (1, 1, 2), ... (1, 2, 2, 2.0), ... (2, 3, 1), ... ) >>> im.add_multilayer_inter_links(links)
See also
- Parameters:
links (iterable of tuples) – Iterable of tuples of the form
(source_layer_id, node_id, target_layer_id, [weight]). NumPy arrays must be 2-dimensional with 3 or 4 columns.
- add_multilayer_intra_link(layer_id, source_node_id, target_node_id, weight=1.0)¶
Add an intra-layer link.
Adds a link within a layer in a multilayer network.
Examples
>>> from infomap import Infomap >>> im = Infomap() >>> im.add_multilayer_intra_link(1, 1, 2) >>> im.add_multilayer_intra_link(1, 2, 3) >>> im.add_multilayer_intra_link(2, 1, 3) >>> im.add_multilayer_intra_link(2, 3, 4)
Notes
This multilayer format requires a directed network, so if the directed flag is not present, it will add all links also in their opposite direction to transform the undirected input to directed. If no inter-layer links are added, Infomap will simulate those by relaxing the random walker’s constraint to its current layer. The final state network will be generated on run, which will clear the temporary data structure that holds the provided intra-layer links.
- Parameters:
layer_id (int)
source_node_id (int)
target_node_id (int)
weight (float, optional)
- add_multilayer_intra_links(links)¶
Add several intra-layer links.
Examples
>>> from infomap import Infomap >>> im = Infomap() >>> links = ( ... (1, 1, 2), ... (1, 2, 3, 2.0), ... (2, 1, 3), ... ) >>> im.add_multilayer_intra_links(links)
See also
- Parameters:
links (iterable of tuples) – Iterable of tuples of the form
(layer_id, source_node_id, target_node_id, [weight]). NumPy arrays must be 2-dimensional with 3 or 4 columns.
- add_multilayer_link(source_multilayer_node, target_multilayer_node, weight=1.0)¶
Add a multilayer link.
Adds a link between layers in a multilayer network.
Examples
Usage with tuples:
>>> from infomap import Infomap >>> im = Infomap() >>> source_multilayer_node = (0, 1) # layer_id, node_id >>> target_multilayer_node = (1, 2) # layer_id, node_id >>> im.add_multilayer_link(source_multilayer_node, target_multilayer_node)
Usage with MultilayerNode
>>> from infomap import Infomap, MultilayerNode >>> im = Infomap() >>> source_multilayer_node = MultilayerNode(layer_id=0, node_id=1) >>> target_multilayer_node = MultilayerNode(layer_id=1, node_id=2) >>> im.add_multilayer_link(source_multilayer_node, target_multilayer_node)
Notes
This is the full multilayer format that supports both undirected and directed links. Infomap will not make any changes to the network.
- Parameters:
source_multilayer_node (tuple of int, or MultilayerNode) – If passed a tuple, it should be of the format
(layer_id, node_id).target_multilayer_node (tuple of int, or MultilayerNode) – If passed a tuple, it should be of the format
(layer_id, node_id).weight (float, optional)
- add_multilayer_links(links)¶
Add several multilayer links.
Examples
>>> from infomap import Infomap >>> im = Infomap() >>> links = ( ... ((0, 1), (1, 2)), ... ((0, 3), (1, 2)) ... ) >>> im.add_multilayer_links(links)
See also
- Parameters:
links (iterable of tuples) – Iterable of tuples of the form
(source_node, target_node, [weight]). NumPy arrays must be 2-dimensional with 4 or 5 columns of the form(source_layer_id, source_node_id, target_layer_id, target_node_id, [weight]).
- add_networkx_graph(g, weight='weight', phys_id='phys_id', layer_id='layer_id', multilayer_inter_intra_format=True)¶
Add a NetworkX graph.
Uses weighted links if present on the weight attribute. Treats the graph as a state network if the phys_id attribute is present and as a multilayer network if also the layer_id attribute is present on the nodes.
Examples
>>> import networkx as nx >>> from infomap import Infomap >>> G = nx.Graph([("a", "b"), ("a", "c")]) >>> im = Infomap(silent=True) >>> mapping = im.add_networkx_graph(G) >>> mapping {0: 'a', 1: 'b', 2: 'c'} >>> im.run() >>> for node in im.nodes: ... print(node.node_id, node.module_id, node.flow, mapping[node.node_id]) 0 1 0.5 a 1 1 0.25 b 2 1 0.25 c
Usage with a state network
>>> import networkx as nx >>> from infomap import Infomap >>> G = nx.Graph() >>> G.add_node("a", phys_id=1) >>> G.add_node("b", phys_id=2) >>> G.add_node("c", phys_id=3) >>> G.add_node("d", phys_id=1) >>> G.add_node("e", phys_id=4) >>> G.add_node("f", phys_id=5) >>> G.add_edge("a", "b") >>> G.add_edge("a", "c") >>> G.add_edge("b", "c") >>> G.add_edge("d", "e") >>> G.add_edge("d", "f") >>> G.add_edge("e", "f") >>> im = Infomap(silent=True) >>> mapping = im.add_networkx_graph(G) >>> mapping {0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e', 5: 'f'} >>> im.run() >>> for node in im.nodes: ... print(node.state_id, node.node_id, node.module_id, node.flow) 0 1 1 0.16666666666666666 1 2 1 0.16666666666666666 2 3 1 0.16666666666666666 3 1 2 0.16666666666666666 4 4 2 0.16666666666666666 5 5 2 0.16666666666666666
Usage with a multilayer network
>>> import networkx as nx >>> from infomap import Infomap >>> G = nx.Graph() >>> G.add_node(11, phys_id=1, layer_id=1) >>> G.add_node(21, phys_id=2, layer_id=1) >>> G.add_node(22, phys_id=2, layer_id=2) >>> G.add_node(32, phys_id=3, layer_id=2) >>> G.add_edge(11, 21, weight=2) >>> G.add_edge(22, 32) >>> im = Infomap(silent=True) >>> mapping = im.add_networkx_graph(G) >>> im.run() >>> for node in sorted(im.nodes, key=lambda n: n.state_id): ... print(node.state_id, node.module_id, f"{node.flow:.2f}", node.node_id, node.layer_id) 11 1 0.28 1 1 21 1 0.28 2 1 22 2 0.22 2 2 32 2 0.22 3 2
Notes
Transforms non-int labels to unique int ids. Assumes that all nodes are of the same type. If node type is string, they are added as names to Infomap. If the NetworkX graph is directed (
nx.DiGraph), and no flow model has been specified in the constructor, this method sets thedirectedflag toTrue.- Parameters:
g (nx.Graph) – A NetworkX graph.
weight (str, optional) – Key to look up link weight in edge data if present. Default
"weight".phys_id (str, optional) – Node attribute for physical node ids, implying a state network.
layer_id (str, optional) – Node attribute for layer ids, implying a multilayer network.
multilayer_inter_intra_format (bool, optional) – Use intra/inter format to simulate inter-layer links. Default
True.
- Returns:
Dict with the internal node ids as keys and original labels as values.
- Return type:
dict
- add_node(node_id, name=None, teleportation_weight=None)¶
Add a node.
- Parameters:
node_id (int)
name (str, optional)
teleportation_weight (float, optional) – Used for teleporting between layers in multilayer networks.
- add_nodes(nodes)¶
Add nodes.
See also
Examples
Add nodes
>>> from infomap import Infomap >>> im = Infomap() >>> im.add_nodes(range(4))
Add named nodes
>>> from infomap import Infomap >>> im = Infomap() >>> nodes = ( ... (1, "Node 1"), ... (2, "Node 2"), ... (3, "Node 3") ... ) >>> im.add_nodes(nodes) >>> im.names {1: 'Node 1', 2: 'Node 2', 3: 'Node 3'}
Add named nodes with teleportation weights
>>> from infomap import Infomap >>> im = Infomap() >>> nodes = ( ... (1, "Node 1", 0.5), ... (2, "Node 2", 0.2), ... (3, "Node 3", 0.8) ... ) >>> im.add_nodes(nodes) >>> im.names {1: 'Node 1', 2: 'Node 2', 3: 'Node 3'}
Add named nodes using dict
>>> from infomap import Infomap >>> im = Infomap() >>> nodes = { ... 1: "Node 1", ... 2: "Node 2", ... 3: "Node 3" ... } >>> im.add_nodes(nodes) >>> im.names {1: 'Node 1', 2: 'Node 2', 3: 'Node 3'}
Add named nodes with teleportation weights using dict
>>> from infomap import Infomap >>> im = Infomap() >>> nodes = { ... 1: ("Node 1", 0.5), ... 2: ("Node 2", 0.2), ... 3: ("Node 3", 0.8) ... } >>> im.add_nodes(nodes) >>> im.names {1: 'Node 1', 2: 'Node 2', 3: 'Node 3'}
- Parameters:
nodes (iterable of tuples or iterable of int or dict of int: str or dict of int: tuple of (str, float)) – Iterable of tuples on the form
(node_id, [name], [teleportation_weight])
- add_state_node(state_id, node_id)¶
Add a state node.
Notes
If a physical node with id node_id does not exist, it will be created. If you want to name the physical node, use
set_name.- Parameters:
state_id (int)
node_id (int) – Id of the physical node the state node should be added to.
- add_state_nodes(state_nodes)¶
Add state nodes.
See also
Examples
With tuples
>>> from infomap import Infomap >>> im = Infomap() >>> states = ( ... (1, 1), ... (2, 1), ... (3, 2) ... ) >>> im.add_state_nodes(states)
With dict
>>> from infomap import Infomap >>> im = Infomap() >>> states = { ... 1: 1, ... 2: 1, ... 3: 2 ... } >>> im.add_state_nodes(states)
- Parameters:
state_nodes (iterable of tuples or dict of int: int) – Iterable of tuples of the form
(state_id, node_id)or dict of the form{state_id: node_id}.
- property bipartite_start_id¶
Get or set the bipartite start id.
Examples
>>> from infomap import Infomap >>> im = Infomap(silent=True, num_trials=10) >>> im.add_node(1, "Left 1") >>> im.add_node(2, "Left 2") >>> im.bipartite_start_id = 3 >>> im.add_node(3, "Right 3") >>> im.add_node(4, "Right 4") >>> im.add_link(1, 3) >>> im.add_link(1, 4) >>> im.add_link(2, 4) >>> im.run() >>> tol = 1e-4 >>> abs(im.codelength - 0.9182958340544896) < tol True
- Parameters:
start_id (int) – The node id where the second node type starts.
- Returns:
The node id where the second node type starts.
- Return type:
int
- property codelength¶
Get the total (hierarchical) codelength.
See also
index_codelength,module_codelength- Returns:
The codelength
- Return type:
float
- property codelengths¶
Get the total (hierarchical) codelength for each trial.
See also
- Returns:
The codelengths for each trial
- Return type:
tuple of float
- property elapsed_time¶
Get the elapsed run time in seconds.
- Returns:
The elapsed run time in seconds.
- Return type:
float
- classmethod from_options(options, args=None)¶
Create an
Infomapinstance fromInfomapOptions.
- property initial_partition¶
Get or set the initial partition.
This is a initial configuration of nodes into modules where Infomap will start the optimizer.
Examples
>>> from infomap import Infomap >>> im = Infomap(silent=True) >>> im.add_node(1) >>> im.add_node(2) >>> im.add_node(3) >>> im.add_node(4) >>> im.add_link(1, 2) >>> im.add_link(1, 3) >>> im.add_link(2, 3) >>> im.add_link(2, 4) >>> im.initial_partition = { ... 1: 0, ... 2: 0, ... 3: 1, ... 4: 1 ... } >>> im.run(no_infomap=True) >>> tol = 1e-4 >>> abs(im.codelength - 3.4056390622295662) < tol True
Notes
The initial partition is saved between runs. If you want to use an initial partition for one run only, use
run(initial_partition=partition).- Parameters:
module_ids (dict of int, or None) – Dict with node ids as keys and module ids as values.
- Returns:
Dict with node ids as keys and module ids as values.
- Return type:
dict of int
- property network¶
Get the internal network.
- read_file(filename, accumulate=True)¶
Read network data from file.
- Parameters:
filename (str)
accumulate (bool, optional) – If the network data should be accumulated to already added nodes and links. Default
True.
- remove_link(source_id, target_id)¶
Remove a link.
Notes
Removing links will not remove nodes if they become disconnected.
See also
- Parameters:
source_id (int)
target_id (int)
- remove_links(links)¶
Remove several links.
Examples
>>> from infomap import Infomap >>> im = Infomap() >>> links = ( ... (1, 2), ... (1, 3) ... ) >>> im.add_links(links) >>> im.remove_links(links) >>> im.num_links 0
See also
- Parameters:
links (iterable of tuples) – Iterable of tuples of the form
(source_id, target_id)
- run(args=None, initial_partition=None, cluster_data=None, no_infomap=False, skip_adjust_bipartite_flow=False, bipartite_teleportation=False, weight_threshold=None, include_self_links=None, no_self_links=False, node_limit=None, matchable_multilayer_ids=None, assign_to_neighbouring_module=False, meta_data=None, meta_data_rate=1.0, meta_data_unweighted=False, tree=False, ftree=False, clu=False, verbosity_level=1, silent=False, out_name=None, no_file_output=False, clu_level=None, output=None, hide_bipartite_nodes=False, print_all_trials=False, two_level=False, flow_model=None, directed=None, recorded_teleportation=False, use_node_weights_as_flow=False, to_nodes=False, teleportation_probability=0.15, regularized=False, regularization_strength=1.0, entropy_corrected=False, entropy_correction_strength=1.0, markov_time=1.0, variable_markov_time=False, variable_markov_damping=1.0, variable_markov_min_scale=1.0, preferred_number_of_modules=None, multilayer_relax_rate=0.15, multilayer_relax_limit=-1, multilayer_relax_limit_up=-1, multilayer_relax_limit_down=-1, multilayer_relax_by_jsd=False, seed=123, num_trials=1, core_loop_limit=10, core_level_limit=None, tune_iteration_limit=None, core_loop_codelength_threshold=1e-10, tune_iteration_relative_threshold=1e-05, fast_hierarchical_solution=None, prefer_modular_solution=False, inner_parallelization=False, num_random_moves=None, max_degree_for_random_moves=None)¶
Run Infomap.
Keyword arguments mirror the Infomap CLI flags. Use
InfomapOptionsfor the full parameter reference andrun_with_options()when reusing a saved configuration.- Parameters:
args (str, optional) – Raw Infomap arguments to prepend before rendered keyword options.
initial_partition (dict, optional) – Initial partition to use for this run only. See
initial_partition.
See also
- run_with_options(options, *, args=None, initial_partition=None)¶
Run Infomap using a reusable
InfomapOptionsinstance.
- set_meta_data(node_id, meta_category)¶
Set meta data to a node.
Examples
>>> from infomap import Infomap >>> im = Infomap(silent=True, num_trials=10) >>> im.add_links(( ... (1, 2), (1, 3), (2, 3), ... (3, 4), ... (4, 5), (4, 6), (5, 6) ... )) >>> im.set_meta_data(1, 0) >>> im.set_meta_data(2, 0) >>> im.set_meta_data(3, 1) >>> im.set_meta_data(4, 1) >>> im.set_meta_data(5, 0) >>> im.set_meta_data(6, 0) >>> im.run(meta_data_rate=0) >>> im.num_top_modules 2 >>> im.run(meta_data_rate=2) >>> im.num_top_modules 3
- Parameters:
node_id (int)
meta_category (int)
- set_name(node_id, name)¶
Set the name of a node.
- Parameters:
node_id (int)
name (str)
- set_names(names)¶
Set names to several nodes at once.
Examples
With tuples
>>> from infomap import Infomap >>> im = Infomap() >>> names = ( ... (1, "Node 1"), ... (2, "Node 2") ... ) >>> im.set_names(names) >>> im.names {1: 'Node 1', 2: 'Node 2'}
With dict
>>> from infomap import Infomap >>> im = Infomap() >>> names = { ... 1: "Node 1", ... 2: "Node 2" ... } >>> im.set_names(names) >>> im.names {1: 'Node 1', 2: 'Node 2'}
See also
set_name,names- Parameters:
names (iterable of tuples or dict of int: str) – Iterable of tuples on the form
(node_id, name)or dict of the form{node_id: name}.
- class infomap.MultilayerNode(layer_id, node_id)¶
Bases:
tuple- layer_id¶
Alias for field number 0
- node_id¶
Alias for field number 1
- class infomap.InfomapOptions(include_self_links: bool | None = None, skip_adjust_bipartite_flow: bool = False, bipartite_teleportation: bool = False, weight_threshold: float | None = None, no_self_links: bool = False, node_limit: int | None = None, matchable_multilayer_ids: int | None = None, cluster_data: str | None = None, assign_to_neighbouring_module: bool = False, meta_data: str | None = None, meta_data_rate: float = 1.0, meta_data_unweighted: bool = False, no_infomap: bool = False, out_name: str | None = None, no_file_output: bool = False, tree: bool = False, ftree: bool = False, clu: bool = False, clu_level: int | None = None, output: list[str] | tuple[str, ...] | None = None, hide_bipartite_nodes: bool = False, print_all_trials: bool = False, verbosity_level: int = 1, silent: bool = False, two_level: bool = False, flow_model: str | None = None, directed: bool | None = None, recorded_teleportation: bool = False, use_node_weights_as_flow: bool = False, to_nodes: bool = False, teleportation_probability: float = 0.15, regularized: bool = False, regularization_strength: float = 1.0, entropy_corrected: bool = False, entropy_correction_strength: float = 1.0, markov_time: float = 1.0, variable_markov_time: bool = False, variable_markov_damping: float = 1.0, variable_markov_min_scale: float = 1.0, preferred_number_of_modules: int | None = None, multilayer_relax_rate: float = 0.15, multilayer_relax_limit: int = -1, multilayer_relax_limit_up: int = -1, multilayer_relax_limit_down: int = -1, multilayer_relax_by_jsd: bool = False, seed: int = 123, num_trials: int = 1, core_loop_limit: int = 10, core_level_limit: int | None = None, tune_iteration_limit: int | None = None, core_loop_codelength_threshold: float = 1e-10, tune_iteration_relative_threshold: float = 1e-05, fast_hierarchical_solution: int | None = None, inner_parallelization: bool = False, prefer_modular_solution: bool = False, num_random_moves: int | None = None, max_degree_for_random_moves: int | None = None)¶
Reusable Infomap keyword options.
This class mirrors the keyword arguments accepted by
infomap.Infomapandinfomap.Infomap.run(). Useto_args()to render command-line flags,from_mapping()to construct options from existing keyword dicts, or the convenience methodsinfomap.Infomap.from_options()andinfomap.Infomap.run_with_options()to apply a reusable configuration.- Parameters:
skip_adjust_bipartite_flow (bool, optional) – Skip distributing all flow from the bipartite nodes to the primary nodes.
bipartite_teleportation (bool, optional) – Teleport like the bipartite flow instead of two-step (unipartite) teleportation.
weight_threshold (float, optional) – Limit the number of links to read from the network. Ignore links with less weight than the threshold.
no_self_links (bool, optional) – Exclude self links in the input network.
node_limit (int, optional) – Limit the number of nodes to read from the network. Ignore links connected to ignored nodes.
matchable_multilayer_ids (int, optional) – Construct state ids from node and layer ids that are consistent across networks for the same max number of layers. Set to at least the largest layer id among networks to match.
cluster_data (str, optional) – Provide an initial two-level (clu format) or multi-layer (tree format) solution.
assign_to_neighbouring_module (bool, optional) – Assign nodes without module assignments (from –cluster-data) to the module assignment of a neighbouring node if possible.
meta_data (str, optional) – Provide meta data (clu format) that should be encoded.
meta_data_rate (float, optional) – Metadata encoding rate. Default is to encode each step.
meta_data_unweighted (bool, optional) – Don’t weight meta data by node flow.
no_infomap (bool, optional) – Don’t run the optimizer. Useful to calculate codelength of provided cluster data or to print non-modular statistics.
out_name (str, optional) – Name for the output files, e.g. [output_directory]/[out-name].tree
no_file_output (bool, optional) – Don’t write output to file.
tree (bool, optional) – Write a tree file with the modular hierarchy. Automatically enabled if no other output is specified.
ftree (bool, optional) – Write a ftree file with the modular hierarchy including aggregated links between (nested) modules. (Used by Network Navigator)
clu (bool, optional) – Write a clu file with the top cluster ids for each node.
clu_level (int, optional) – For clu output, print modules at specified depth from root. Use -1 for bottom level modules.
output (sequence of str, optional) – Comma-separated output formats without spaces, e.g. -o clu,tree,ftree. Options: clu, tree, ftree, newick, json, csv, network, states, flow.
hide_bipartite_nodes (bool, optional) – Project bipartite solution to unipartite.
print_all_trials (bool, optional) – Print all trials to separate files.
verbosity_level (int, optional) – Verbosity level on the console. 1 keeps the default output level, 2 renders -vv and so on.
silent (bool, optional) – No output on the console.
two_level (bool, optional) – Optimize a two-level partition of the network. Default is multi-level.
flow_model (str, optional) – Specify flow model. Options: undirected, directed, undirdir, outdirdir, rawdir, precomputed.
directed (bool, optional) – Assume directed links. Shorthand for ‘–flow-model directed’.
recorded_teleportation (bool, optional) – If teleportation is used to calculate the flow, also record it when minimizing codelength.
use_node_weights_as_flow (bool, optional) – Use node weights (from api or after names in Pajek format) as flow, normalized to sum to 1
to_nodes (bool, optional) – Teleport to nodes instead of to links, assuming uniform node weights if no such input data.
teleportation_probability (float, optional) – Probability of teleporting to a random node or link.
regularized (bool, optional) – Effectively add a fully connected Bayesian prior network to not overfit due to missing links. Implies recorded teleportation
regularization_strength (float, optional) – Adjust relative strength of Bayesian prior network with this multiplier.
entropy_corrected (bool, optional) – Correct for negative entropy bias in small samples (many modules).
entropy_correction_strength (float, optional) – Increase or decrease the default entropy correction with this factor.
markov_time (float, optional) – Scale link flow to change the cost of moving between modules. Higher values results in fewer modules.
variable_markov_time (bool, optional) – Increase Markov time locally to level out link flow. Reduces risk of overpartitioning sparse areas while keeping high resolution in dense areas.
variable_markov_damping (float, optional) – Damping parameter for variable Markov time, to scale with local effective degree (0) or local entropy (1).
variable_markov_min_scale (float, optional) – Minimum local scale for nodes with zero entropy to avoid division by zero. Local Markov time is max scale divided by local scale.
preferred_number_of_modules (int, optional) – Penalize solutions the more they differ from this number.
multilayer_relax_rate (float, optional) – Probability to relax the constraint to move only in the current layer.
multilayer_relax_limit (int, optional) – Number of neighboring layers in each direction to relax to. If negative, relax to any layer.
multilayer_relax_limit_up (int, optional) – Number of neighboring layers with higher id to relax to. If negative, relax to any layer.
multilayer_relax_limit_down (int, optional) – Number of neighboring layers with lower id to relax to. If negative, relax to any layer.
multilayer_relax_by_jsd (bool, optional) – Relax proportional to the out-link similarity measured by the Jensen-Shannon divergence.
seed (int, optional) – A seed (integer) to the random number generator for reproducible results.
num_trials (int, optional) – Number of outer-most loops to run before picking the best solution.
core_loop_limit (int, optional) – Limit the number of loops that tries to move each node into the best possible module.
core_level_limit (int, optional) – Limit the number of times the core loops are reapplied on existing modular network to search bigger structures.
tune_iteration_limit (int, optional) – Limit the number of main iterations in the two-level partition algorithm. 0 means no limit.
core_loop_codelength_threshold (float, optional) – Minimum codelength threshold for accepting a new solution in core loop.
tune_iteration_relative_threshold (float, optional) – Set codelength improvement threshold of each new tune iteration to ‘f’ times the initial two-level codelength.
fast_hierarchical_solution (int, optional) – Find top modules fast. Use 2 to keep all fast levels and 3 to skip the recursive part.
inner_parallelization (bool, optional) – Parallelize the inner-most loop for greater speed. This may give some accuracy tradeoff.
prefer_modular_solution (bool, optional) – Prefer modular solutions even if they are worse than putting all nodes in one module.
num_random_moves (int, optional) – Number of random moves to try in core loop to try merge weakly connected nodes.
max_degree_for_random_moves (int, optional) – Maximum degree of nodes for which to try random moves.
include_self_links (bool, optional) – Deprecated. Self-links are included by default; use no_self_links=True to exclude them.
- class infomap.InfoNode(*args)¶
- property child_degree¶
The number of children.
- Returns:
Number of children
- Return type:
int
- property flow¶
Get the flow of the node.
- Returns:
The flow
- Return type:
float
- get_meta_data(dimension=0)¶
Get meta data on a specific dimension.
- Parameters:
dimension (int) – The dimension (default 0)
- Returns:
The meta data
- Return type:
int
- property is_leaf¶
True if the node has no children.
- Returns:
Is leaf node
- Return type:
bool
- property is_leaf_module¶
True if the node has children but no grandchildren.
- Returns:
Is leaf module
- Return type:
bool
- property is_root¶
True if the node has no parent.
- Returns:
Is root
- Return type:
bool
- property layer_id¶
Get the layer id of a multilayer node.
- Returns:
The layer id
- Return type:
int
- property meta_data¶
Meta data (on first dimension if more).
- Returns:
The meta data
- Return type:
int
- property node_id¶
Get the physical node id.
- Returns:
The node id
- Return type:
int
- property state_id¶
Get the state id of the node.
- Returns:
The state id
- Return type:
int
- class infomap.InfomapIterator(*args)¶
- property child_index¶
Get the child index.
- Returns:
The child index
- Return type:
int
- property depth¶
Get the depth.
- Returns:
The depth
- Return type:
int
- property modular_centrality¶
Get the modular centrality of the node.
- Returns:
The modular centrality
- Return type:
float
- property module_id¶
Get the module id of the node.
- Returns:
The module id
- Return type:
int
- property path¶
Get the path to the node in the tree.
- Returns:
The path
- Return type:
tuple of ints
- class infomap.InfomapLeafModuleIterator(*args)¶
- property child_index¶
Get the child index.
- Returns:
The child index
- Return type:
int
- property depth¶
Get the depth.
- Returns:
The depth
- Return type:
int
- property modular_centrality¶
Get the modular centrality of the node.
- Returns:
The modular centrality
- Return type:
float
- property module_id¶
Get the module id of the node.
- Returns:
The module id
- Return type:
int
- property path¶
Get the path to the node in the tree.
- Returns:
The path
- Return type:
tuple of ints
- class infomap.InfomapLeafIterator(*args)¶
- property child_index¶
Get the child index.
- Returns:
The child index
- Return type:
int
- property depth¶
Get the depth.
- Returns:
The depth
- Return type:
int
- property modular_centrality¶
Get the modular centrality of the node.
- Returns:
The modular centrality
- Return type:
float
- property module_id¶
Get the module id of the node.
- Returns:
The module id
- Return type:
int
- property path¶
Get the path to the node in the tree.
- Returns:
The path
- Return type:
tuple of ints
- class infomap.InfomapIteratorPhysical(*args)¶
- property child_index¶
Get the child index.
- Returns:
The child index
- Return type:
int
- property depth¶
Get the depth.
- Returns:
The depth
- Return type:
int
- property modular_centrality¶
Get the modular centrality of the node.
- Returns:
The modular centrality
- Return type:
float
- property module_id¶
Get the module id of the node.
- Returns:
The module id
- Return type:
int
- property path¶
Get the path to the node in the tree.
- Returns:
The path
- Return type:
tuple of ints
- class infomap.InfomapLeafIteratorPhysical(*args)¶
- property child_index¶
Get the child index.
- Returns:
The child index
- Return type:
int
- property depth¶
Get the depth.
- Returns:
The depth
- Return type:
int
- property modular_centrality¶
Get the modular centrality of the node.
- Returns:
The modular centrality
- Return type:
float
- property module_id¶
Get the module id of the node.
- Returns:
The module id
- Return type:
int
- property path¶
Get the path to the node in the tree.
- Returns:
The path
- Return type:
tuple of ints