IndraNet Graphs (indra.assemblers.indranet)

The IndraNet assembler creates multiple different types of networkx graphs from INDRA Statements. It also allows exporting binary Statement information as a pandas DataFrame.

class indra.assemblers.indranet.net.IndraNet(incoming_graph_data=None, **attr)[source]

A Networkx representation of INDRA Statements.

classmethod digraph_from_df(df, flattening_method=None, weight_mapping=None)[source]

Create a digraph from a pandas DataFrame.

Parameters
  • df (pd.DataFrame) – The dataframe to build the graph from.

  • flattening_method (str or function(networkx.DiGraph, edge)) – The method to use when updating the belief for the flattened edge.

  • weight_mapping (function(networkx.DiGraph)) – A function taking at least the graph G as an argument and returning G after adding edge weights as an edge attribute to the flattened edges using the reserved keyword ‘weight’.

Returns

An IndraNet graph flattened to a DiGraph

Return type

IndraNet(nx.DiGraph)

classmethod from_df(df)[source]

Create an IndraNet MultiDiGraph from a pandas DataFrame.

Returns an instance of IndraNet with graph data filled out from a dataframe containing pairwise interactions.

Parameters

df (pd.DataFrame) –

A pandas.DataFrame with each row containing node and edge data for one edge. Indices are used to distinguish multiedges between a pair of nodes. Any columns not part of the below mentioned mandatory columns are considered extra attributes. Columns starting with ‘agA_’ or ‘agB_’ (excluding the agA/B_name) will be added to its respective nodes as node attributes. Any other columns will be added as edge attributes.

Mandatory columns are : agA_name, agB_name, agA_ns, agA_id, agB_ns, agB_id, stmt_type, evidence_count, stmt_hash, belief and source_counts.

Returns

An IndraNet object

Return type

IndraNet

classmethod signed_from_df(df, sign_dict=None, flattening_method=None, weight_mapping=None)[source]

Create a signed graph from a pandas DataFrame.

Parameters
  • df (pd.DataFrame) – The dataframe to build the signed graph from.

  • sign_dict (dict) – A dictionary mapping a Statement type to a sign to be used for the edge. By default only Activation and IncreaseAmount are added as positive edges and Inhibition and DecreaseAmount are added as negative edges, but a user can pass any other Statement types in a dictionary.

  • flattening_method (str or function(networkx.DiGraph, edge)) – The method to use when updating the belief for the flattened edge.

  • weight_mapping (function(networkx.DiGraph)) – A function taking at least the graph G as an argument and returning G after adding edge weights as an edge attribute to the flattened edges using the reserved keyword ‘weight’.

Returns

An IndraNet graph flattened to a signed graph

Return type

IndraNet(nx.MultiDiGraph)

to_digraph(flattening_method=None, weight_mapping=None)[source]

Flatten the IndraNet to a DiGraph

Parameters
  • flattening_method (str|function) – The method to use when updating the belief for the flattened edge

  • weight_mapping (function) – A function taking at least the graph G as an argument and returning G after adding edge weights as an edge attribute to the flattened edges using the reserved keyword ‘weight’.

Returns

G – An IndraNet graph flattened to a DiGraph

Return type

IndraNet(nx.DiGraph)

to_signed_graph(sign_dict=None, flattening_method=None, weight_mapping=None)[source]

Flatten the IndraNet to a signed graph.

Parameters
  • sign_dict (dict) – A dictionary mapping a Statement type to a sign to be used for the edge. By default only Activation and IncreaseAmount are added as positive edges and Inhibition and DecreaseAmount are added as negative edges, but a user can pass any other Statement types in a dictionary.

  • flattening_method (str or function(networkx.DiGraph, edge)) –

    The method to use when updating the belief for the flattened edge.

    If a string is provided, it must be one of the predefined options ‘simple_scorer’ or ‘complementary_belief’.

    If a function is provided, it must take the flattened graph ‘G’ and an edge ‘edge’ to perform the belief flattening on and return a number:

    >>> def flattening_function(G, edge):
    ...     # Return the average belief score of the constituent edges
    ...     all_beliefs = [s['belief']
    ...         for s in G.edges[edge]['statements']]
    ...     return sum(all_beliefs)/len(all_beliefs)
    

  • weight_mapping (function(networkx.DiGraph)) –

    A function taking at least the graph G as an argument and returning G after adding edge weights as an edge attribute to the flattened edges using the reserved keyword ‘weight’.

    Example:

    >>> def weight_mapping(G):
    ...     # Sets the flattened weight to the average of the
    ...     # inverse source count
    ...     for edge in G.edges:
    ...         w = [1/s['evidence_count']
    ...             for s in G.edges[edge]['statements']]
    ...         G.edges[edge]['weight'] = sum(w)/len(w)
    ...     return G
    

Returns

SG – An IndraNet graph flattened to a signed graph

Return type

IndraNet(nx.MultiDiGraph)

class indra.assemblers.indranet.assembler.IndraNetAssembler(statements=None)[source]

Assembler to create an IndraNet object from a list of INDRA statements.

Parameters

statements (list[indra.statements.Statement]) – A list of INDRA Statements to be assembled.

model

An IndraNet graph object assembled by this class.

Type

IndraNet

add_statements(stmts)[source]

Add INDRA Statements to the assembler’s list of statements.

Parameters

stmts (list[indra.statements.Statement]) – A list of indra.statements.Statement to be added to the statement list of the assembler.

make_df(exclude_stmts=None, complex_members=3, extra_columns=None, keep_self_loops=True)[source]

Create a dataframe containing information extracted from assembler’s list of statements necessary to build an IndraNet.

Parameters
  • exclude_stmts (list[str]) – A list of statement type names to not include in the dataframe.

  • complex_members (int) – Maximum allowed size of a complex to be included in the data frame. All complexes larger than complex_members will be rejected. For accepted complexes, all permutations of their members will be added as dataframe records. Default is 3.

  • extra_columns (list[tuple(str, function)]) – A list of tuples defining columns to add to the dataframe in addition to the required columns. Each tuple contains the column name and a function to generate a value from a statement.

  • keep_self_loops (Optional[bool]) – Whether to keep the self-loops when constructing the graph.

Returns

df – Pandas DataFrame object containing information extracted from statements. It contains the following columns:

agA_name

The first Agent’s name.

agA_ns

The first Agent’s identifier namespace as per db_refs.

agA_id

The first Agent’s identifier as per db_refs

ags_ns, agB_name, agB_id

As above for the second agent. Note that the Agent may be None (and these fields left empty) if the Statement consists only of a single Agent (e.g., SelfModification, ActiveForm, or Translocation statement).

stmt_type

Statement type, given by the name of the class in indra.statements.

evidence_count

Number of evidences for the statement.

stmt_hash

An unique long integer hash identifying the content of the statement.

belief

The belief score associated with the statement.

source_counts

The number of evidences per input source for the statement.

residue

If applicable, the amino acid residue being modified. NaN if if it is unknown or unspecified/not applicable.

position

If applicable, the position of the modified amino acid. NaN if it is unknown or unspecified/not applicable.

initial_sign

The default sign (polarity) associated with the given statement if the statement type has implied polarity. To facilitate weighted path finding, the sign is represented as 0 for positive polarity and 1 for negative polarity.

More columns can be added by providing the extra_columns parameter.

Return type

pd.DataFrame

make_model(method='preassembly', exclude_stmts=None, complex_members=3, graph_type='multi_graph', sign_dict=None, belief_flattening=None, belief_scorer=None, weight_flattening=None, extra_columns=None, keep_self_loops=True)[source]

Assemble an IndraNet graph object.

Parameters
  • method (str) – Method for assembling an IndraNet graph. Accepted values: df and preassembly. With the df method, the statements are converted into pandas DataFrame first where each row corresponds to an edge in unflattened MultiDiGraph IndraNet. Then the IndraNet can be flattened into signed and unsigned graphs. The beliefs can be calculated on the new edges by providing belief_flattening function. With the preassembly option, the statements are merged together and the beliefs are calculated by leveraging the preassembly functionality with custom matches functions (the matches functions are applied depending on the graph type). This method ensures the more robust belief calculation.

  • exclude_stmts (list[str]) – A list of statement type names to not include in the graph.

  • complex_members (int) – Maximum allowed size of a complex to be included in the graph. All complexes larger than complex_members will be rejected. For accepted complexes, all permutations of their members will be added as edges. Default is 3.

  • graph_type (str) – Specify the type of graph to assemble. Chose from ‘multi_graph’ (default), ‘digraph’, ‘signed’. Default is multi_graph.

  • sign_dict (dict) – A dictionary mapping a Statement type to a sign to be used for the edge. This parameter is only used with the ‘signed’ option. See IndraNet.to_signed_graph for more info.

  • belief_flattening (str or function(networkx.DiGraph, edge)) –

    Only needed when method is set to df. The method to use when updating the belief for the flattened edge.

    If a string is provided, it must be one of the predefined options ‘simple_scorer’ or ‘complementary_belief’.

    If a function is provided, it must take the flattened graph ‘G’ and an edge ‘edge’ to perform the belief flattening on and return a number:

    >>> def belief_flattening(G, edge):
    ...     # Return the average belief score of the constituent edges
    ...     all_beliefs = [s['belief']
    ...         for s in G.edges[edge]['statements']]
    ...     return sum(all_beliefs)/len(all_beliefs)
    

  • belief_scorer (Optional[indra.belief.BeliefScorer]) – Only needed when method is set to preassembly. Instance of BeliefScorer class to use in calculating edge probabilities. If None is provided (default), then the default scorer is used.

  • weight_flattening (function(networkx.DiGraph)) –

    A function taking at least the graph G as an argument and returning G after adding edge weights as an edge attribute to the flattened edges using the reserved keyword ‘weight’.

    Example:

    >>> def weight_flattening(G):
    ...     # Sets the flattened weight to the average of the
    ...     # inverse source count
    ...     for edge in G.edges:
    ...         w = [1/s['evidence_count']
    ...             for s in G.edges[edge]['statements']]
    ...         G.edges[edge]['weight'] = sum(w)/len(w)
    ...     return G
    

  • keep_self_loops (Optional[bool]) – Whether to keep the self-loops when constructing the graph.

Returns

model – IndraNet graph object.

Return type

IndraNet

make_model_by_preassembly(exclude_stmts=None, complex_members=3, graph_type='multi_graph', sign_dict=None, belief_scorer=None, weight_flattening=None, extra_columns=None, keep_self_loops=True)[source]

Assemble an IndraNet graph object by preassembling the statements according to selected graph type.

Parameters
  • exclude_stmts (list[str]) – A list of statement type names to not include in the graph.

  • complex_members (int) – Maximum allowed size of a complex to be included in the graph. All complexes larger than complex_members will be rejected. For accepted complexes, all permutations of their members will be added as edges. Default is 3.

  • graph_type (str) – Specify the type of graph to assemble. Chose from ‘multi_graph’ (default), ‘digraph’, ‘signed’. Default is multi_graph.

  • sign_dict (dict) – A dictionary mapping a Statement type to a sign to be used for the edge. This parameter is only used with the ‘signed’ option. See IndraNet.to_signed_graph for more info.

  • belief_scorer (Optional[indra.belief.BeliefScorer]) – Instance of BeliefScorer class to use in calculating edge probabilities. If None is provided (default), then the default scorer is used.

  • weight_flattening (function(networkx.DiGraph)) –

    A function taking at least the graph G as an argument and returning G after adding edge weights as an edge attribute to the flattened edges using the reserved keyword ‘weight’.

    Example:

    >>> def weight_flattening(G):
    ...     # Sets the flattened weight to the average of the
    ...     # inverse source count
    ...     for edge in G.edges:
    ...         w = [1/s['evidence_count']
    ...             for s in G.edges[edge]['statements']]
    ...         G.edges[edge]['weight'] = sum(w)/len(w)
    ...     return G
    

  • keep_self_loops (Optional[bool]) – Whether to keep the self-loops when constructing the graph.

Returns

model – IndraNet graph object.

Return type

IndraNet

make_model_from_df(exclude_stmts=None, complex_members=3, graph_type='multi_graph', sign_dict=None, belief_flattening=None, weight_flattening=None, extra_columns=None, keep_self_loops=True)[source]

Assemble an IndraNet graph object by constructing a pandas Dataframe first.

Parameters
  • exclude_stmts (list[str]) – A list of statement type names to not include in the graph.

  • complex_members (int) – Maximum allowed size of a complex to be included in the graph. All complexes larger than complex_members will be rejected. For accepted complexes, all permutations of their members will be added as edges. Default is 3.

  • graph_type (str) – Specify the type of graph to assemble. Chose from ‘multi_graph’ (default), ‘digraph’, ‘signed’. Default is multi_graph.

  • sign_dict (dict) – A dictionary mapping a Statement type to a sign to be used for the edge. This parameter is only used with the ‘signed’ option. See IndraNet.to_signed_graph for more info.

  • belief_flattening (str or function(networkx.DiGraph, edge)) –

    The method to use when updating the belief for the flattened edge.

    If a string is provided, it must be one of the predefined options ‘simple_scorer’ or ‘complementary_belief’.

    If a function is provided, it must take the flattened graph ‘G’ and an edge ‘edge’ to perform the belief flattening on and return a number:

    >>> def belief_flattening(G, edge):
    ...     # Return the average belief score of the constituent edges
    ...     all_beliefs = [s['belief']
    ...         for s in G.edges[edge]['statements']]
    ...     return sum(all_beliefs)/len(all_beliefs)
    

  • weight_flattening (function(networkx.DiGraph)) –

    A function taking at least the graph G as an argument and returning G after adding edge weights as an edge attribute to the flattened edges using the reserved keyword ‘weight’.

    Example:

    >>> def weight_flattening(G):
    ...     # Sets the flattened weight to the average of the
    ...     # inverse source count
    ...     for edge in G.edges:
    ...         w = [1/s['evidence_count']
    ...             for s in G.edges[edge]['statements']]
    ...         G.edges[edge]['weight'] = sum(w)/len(w)
    ...     return G
    

  • keep_self_loops (Optional[bool]) – Whether to keep the self-loops when constructing the graph.

Returns

model – IndraNet graph object.

Return type

IndraNet

indra.assemblers.indranet.assembler.get_ag_ns_id(ag)[source]

Return a tuple of name space, id from an Agent’s db_refs.