From dd732e78a2196073167bf538ce5bbad1276834aa Mon Sep 17 00:00:00 2001 From: Felipe Xavier Costa Date: Thu, 12 Mar 2026 09:15:21 +0000 Subject: [PATCH 1/6] Update README.md Add branch specific installation --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 510c1bc..6e62958 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ Installation: Pull and install the code directly from the github [project page](https://github.com/casci-lab/CANA). ``` - pip install git+https://github.com/CASCI-lab/CANA + pip install git+https://github.com/CASCI-lab/CANA/ceg_visualization ``` Please note that CANA uses Cython. For it to compile you may need to install the following: From 5067cdec8b1eee6bd3558a77e51d2854614c275a Mon Sep 17 00:00:00 2001 From: yoshiakifujita Date: Fri, 10 Apr 2026 17:17:51 +0100 Subject: [PATCH 2/6] Adding visualization functions. Add our new effective graph and conditional effective graph visualization functions. --- cana/drawing/effective_graph.py | 903 ++++++++++++++++++++++++++++++++ 1 file changed, 903 insertions(+) create mode 100644 cana/drawing/effective_graph.py diff --git a/cana/drawing/effective_graph.py b/cana/drawing/effective_graph.py new file mode 100644 index 0000000..3cf8771 --- /dev/null +++ b/cana/drawing/effective_graph.py @@ -0,0 +1,903 @@ +# -*- coding: utf-8 -*- +""" +Drawing the Effective graph and the Conditional Effective graph. +================================ + +Methods to draw the Effective graph and the Conditional Effective graph. + +""" +# Copyright (C) 2026 by +# Yoshiaki Fujita +# All rights reserved. +# MIT license. +import warnings +import math +import io +import base64 + +try: + import graphviz +except ImportError as error: + warnings.warn( + "'Graphviz' could not be loaded, you won't be able to plot graphs. Try installing it first. {error:s}".format( + error=error + ) + ) +try: + import matplotlib as mpl +except ImportError as error: + warnings.warn( + "'matplotlib' could not be loaded, you won't be able to plot graphs. Try installing it first. {error:s}".format( + error=error + ) + ) +import matplotlib.pyplot as plt +from matplotlib.colors import LinearSegmentedColormap + +try: + import IPython +except ImportError as error: + warnings.warn( + "'IPython' could not be loaded, you won't be able to plot graphs. Try installing it first. {error:s}".format( + error=error + ) + ) +from IPython.display import display, Markdown, HTML + +# =========================== +# GLOBAL VISUALIZATION CONFIG +# =========================== + +VIZ_CONFIG = { + "CANVAS_INCH": 7, + "FONT_SIZE": "8", + "EDGE_PENWIDTH": "4", + "NODE_HEIGHT": "0.4", + "WIDTH": "0.8", + "NODE_MARGIN": ".05", + "NODE_OUTLINE_COLOR": "black", + "NODE_FILLCOLOR": "#edf7ed", + "INPUT_FILL": "#d299ff", + "SINK_FILL": "#22c55e", + "NODE_FONTNAME": "Helvetica", + "NODE_FONTCOLOR": "black", + "GRID_DX": 120.0, # Increased from 2.0 (standard points) + "GRID_DY": 80.0, # Increased from 1.5 +} + + + +# =========================== +# Common functions +# =========================== + +def compute_grid_layout(SG, custom_order=None): + nodes = list(SG.nodes()) + # Sort nodes by label to keep the grid order consistent/alphabetical + sg_label = {n: SG.nodes[n].get('label', str(n)) for n in SG.nodes()} + nodes.sort(key=lambda n: sg_label[n].lower()) + + N_total = len(nodes) + if N_total == 0: + return {}, set(), set(), {} + + # 1. Calculate Grid Dimensions + # cols is the square root (e.g., sqrt(16)=4, sqrt(20)=4.47 -> 5) + cols = math.ceil(math.sqrt(N_total)) + # rows is determined by total nodes divided by columns + rows = math.ceil(N_total / cols) + + cfg = VIZ_CONFIG + + # 2. Center the grid around (0,0) + x0 = - (cols - 1) * cfg["GRID_DX"] / 2.0 + y0 = + (rows - 1) * cfg["GRID_DY"] / 2.0 + + def xy_of(r, c): + return (x0 + c * cfg["GRID_DX"], y0 - r * cfg["GRID_DY"]) + + positions = {} + + # 3. Fill the grid row-by-row + for i, nid in enumerate(nodes): + r = i // cols # Current row + c = i % cols # Current column + positions[nid] = xy_of(r, c) + + # Maintain compatibility with the rest of your script + inputs = [n for n in nodes if SG.in_degree(n) == 0] + sinks = [n for n in nodes if SG.out_degree(n) == 0] + + return positions, set(inputs), set(sinks), sg_label + +def create_base_graph(): + + cfg = VIZ_CONFIG + g = graphviz.Digraph(engine='neato') + + # ... (graph attributes remain same) + + g.attr( + 'node', + pin='true', + shape='box', + # --- ADD THESE THREE LINES --- + fixedsize='true', # Forces Graphviz to honor width/height + width='0.8', # Set your desired width in inches + height=cfg["NODE_HEIGHT"], # This is already 0.4 in your config + # ----------------------------- + margin=cfg["NODE_MARGIN"], + color=cfg["NODE_OUTLINE_COLOR"], + style='filled', + fillcolor=cfg["NODE_FILLCOLOR"], + fontname=cfg["NODE_FONTNAME"], + fontcolor=cfg["NODE_FONTCOLOR"], + fontsize=cfg["FONT_SIZE"] + ) + + g.attr('edge', arrowhead='normal', arrowsize='.5') + + stitle="" + g.attr( + 'graph', + label=f'\n{stitle}', + # ... other settings ... + overlap='false', # Changed from 'true' to 'false' + splines='true', # Routes edges as curves around nodes + sep='+10', # Adds a small buffer/padding around each node + esep='+2', # Buffer specifically for edge routing + ) + + return g + +# =================================================== +# Functions for the effective graph visualization +# =================================================== + +def get_effective_node_color(nid, EG, norm_out, cmap): + + out_degree = EG.out_degree(nid, weight='weight') + + # --- Zero effective out-degree --- + if out_degree == 0: + fill = '#2ca02c' # dark green fill + outline = '#98df8a' # light green border + return fill, outline + + # --- Positive effective out-degree --- + rgb = cmap(norm_out(out_degree)) + fill = mpl.colors.rgb2hex(rgb) + + outline = '#ff9896' # light red border + + return fill, outline + +def get_effective_legend_fig(max_outdegree=10): + import matplotlib.pyplot as plt + import matplotlib as mpl + import numpy as np + from matplotlib.colors import LinearSegmentedColormap + + # 1. Replicate your colormap logic exactly + cmap = LinearSegmentedColormap.from_list('custom', ['white', '#d62728']) + cmap.set_under('#2ca02c') # Matches your out_degree == 0 color + + # 2. Replicate your normalization (vmin must be slightly above 0 for 'under' to trigger) + norm = mpl.colors.Normalize(vmin=1e-10, vmax=max_outdegree) + + fig = plt.figure(figsize=(1.2, 3)) + ax = fig.add_axes([0.05, 0.1, 0.25, 0.8]) + + ticks = [0, 2, 4, 6, 8, 10] + # Boundaries help define the segments in the bar + boundaries = np.linspace(0, max_outdegree, 50).tolist() + + cb = mpl.colorbar.ColorbarBase( + ax, cmap=cmap, norm=norm, + boundaries=boundaries, + ticks=ticks, + spacing='uniform', + orientation='vertical', + extend='min', # This creates the pointed 'arrow' at the bottom for the Green color + format='%.0f' + ) + + # Set the label and styling + cb.set_label('Effective out-degree', fontsize=9, fontweight='bold') + ax.tick_params(labelsize=8) + + # Label the 'under' color specifically if you want + ax.set_title("Zero = Green", fontsize=7, pad=10, color='#2ca02c') + + return fig + +def visualize_effective_graph(EG, sModel='your model', threshold=0.0, manual_positions=None): + """ + Visualize the effective graph of a Boolean network, with optional manual node positions. + + Parameters + ---------- + EG : networkx directed graph + Effective graph. + sModel : str, optional + Model name for title. + threshold : float, optional + Threshold for effective graph edge weights. + manual_positions : dict, optional + Dictionary of node positions keyed by node ID (int) or node label (str). + Values are (x, y) coordinates, e.g., {0: (0,0), 'Zeb': (1,2)} + """ + + # --- Labels and layout --- + sg_label = {n: EG.nodes[n].get('label', str(n)) for n in EG.nodes()} + positions, inputs_set, sinks_set, _ = compute_grid_layout(EG) + + # --- Override with manual positions if provided --- + if manual_positions: + new_positions = {} + for key, value in manual_positions.items(): + if isinstance(key, str): + nid = next((n for n, lbl in sg_label.items() if lbl == key), None) + if nid is None: + raise ValueError(f"Label '{key}' not found in network nodes.") + else: + nid = key + new_positions[nid] = value + positions.update(new_positions) + + # --- Base Graphviz --- + pSG = create_base_graph() + #pSG = create_base_graph() + cfg = VIZ_CONFIG + max_penwidth = float(cfg["EDGE_PENWIDTH"]) + + # ===================== + # PRECOMPUTE NORMALIZATION FOR NODE COLORS + # ===================== + out_vals = [EG.out_degree(n, weight='weight') for n in EG.nodes()] + vmin, vmax = min(out_vals), max(out_vals) + norm_out = mpl.colors.Normalize(vmin=vmin, vmax=vmax) + cmap = LinearSegmentedColormap.from_list('custom', ['white', '#d62728']) + cmap.set_under('#2ca02c') # nodes with zero out-degree + + # 1. Calculate the grid dimensions first to get 'cols' + N_total = len(EG.nodes()) + cols = math.ceil(math.sqrt(N_total)) + + # 2. Your new Scaling Logic + if cols > 4: + size_multiplier = 0.9 ** (cols - 4) + else: + size_multiplier = 1.0 + + # 3. Apply the multiplier to the base config + node_w = float(VIZ_CONFIG["WIDTH"]) * size_multiplier + node_h = float(VIZ_CONFIG["NODE_HEIGHT"]) * size_multiplier + base_font = 10 * size_multiplier # Starting point for font + + # ===================== + # NODES + # ===================== + for nid in EG.nodes(): + label = sg_label[nid] + x, y = positions[nid] + fill, outline = get_effective_node_color(nid, EG, norm_out, cmap) + + # --- DYNAMIC FONT CALCULATION --- + # Start with a base size (e.g., 12) and reduce it for longer labels + # This formula shrinks the font as the character count increases + base_size = 10 + if len(label) > 4: + # Decrease font size by 1 point for every 2 extra characters + dynamic_font = max(6, base_size - (len(label) - 4) // 2) + else: + dynamic_font = base_size + + pSG.node(str(nid), + label=label, + pos=f"{x:.3f},{y:.3f}!", + fillcolor=fill, + color=outline, + width=str(node_w), # New Scaled Width + height=str(node_h), # New Scaled Height + fontsize=str(dynamic_font), + fixedsize='true') + + # ===================== + # EDGES (weighted) + # ===================== + for uid, vid, data in EG.edges(data=True): + weight = data.get('weight', 1.0) + penwidth = max_penwidth * float(weight) + + if uid == vid: + # Self-loop + color = '#bdbdbd' + uid_draw = f"{uid}:w" + vid_draw = f"{vid}:c" + else: + color = '#636363' + uid_draw = f"{uid}:w" # :w forces the edge to the West (left) port + vid_draw = f"{vid}:c" # :c forces the edge to the Center + + pSG.edge(str(uid), str(vid), penwidth=str(penwidth), color=color) + + # ===================== + # Display + # ===================== + # 1. Display the Title/Condition + + if threshold != 0.0: + title_str = f"##### Threshold Effective Graph: {sModel}" + title_str += f"\n**Edge Weight Threshold:** {str(threshold)}" + else: + title_str = f"##### Effective Graph: {sModel}" + + display(Markdown(title_str)) + + #display(pSG) + + # Prepare Legend Image + # Find the actual max out-degree from your data to scale the bar correctly + current_max = max([EG.out_degree(n, weight='weight') for n in EG.nodes()]) + fig_legend = get_effective_legend_fig(current_max) + + buf = io.BytesIO() + fig_legend.savefig(buf, format='png', bbox_inches='tight', dpi=150, transparent=True) + plt.close(fig_legend) + + legend_base64 = base64.b64encode(buf.getbuffer()).decode("ascii") + legend_html = f"" + + # Prepare Graph Image (SVG is best for Graphviz) + graph_svg = pSG.pipe(format='svg').decode('utf-8') + + # 4. Final Side-by-Side Layout + display(HTML(f""" +
+
+ {graph_svg} +
+
+ {legend_html} +
+
+ """)) + +# ================================================================= +# Functions for the conditional effective graph visualization +# ================================================================= + +def get_legend_figure(): + import matplotlib.pyplot as plt + from matplotlib.patches import Patch + from matplotlib.lines import Line2D + + # Reduced height (0.8) to keep it compact between graph and title + fig, ax = plt.subplots(figsize=(12, 0.8)) + + # Custom color for dark gray + dark_gray = '#4F4F4F' + + handles = [ + Patch(facecolor='white', edgecolor=dark_gray, linewidth=2, label='Conditioned Node (Double Border)'), + Patch(facecolor='white', edgecolor='red', linewidth=2, label='Node Fixed as 1'), + Line2D([0], [0], color='red', linestyle='--', dashes=(5, 2), linewidth=2, marker='>', markersize=8, label='Signal from Fixed 1'), + Patch(facecolor='white', edgecolor='blue', linewidth=2, label='Node Fixed as 0'), + Line2D([0], [0], color='blue', linestyle='--', dashes=(5, 2), linewidth=2, marker='>', markersize=8, label='Signal from Fixed 0'), + Patch(facecolor='#C0C0C0', edgecolor='white', linewidth=2, label='Fully Redundant Node'), # Updated to match your hex + Line2D([0], [0], color='#00000040', linestyle='--', linewidth=2, marker='>', markersize=8, label='Redundant Signal'), + Line2D([0], [0], color='#000000', linestyle='-', linewidth=2, marker='>', markersize=8, label='Viral Signal') + ] + + ax.legend(handles=handles, loc='upper left', ncol=4, frameon=False, handlelength=3.0, handletextpad=0.5, fontsize=9) + plt.axis('off') + return fig + +def create_conditional_effective_graph(EG_cn, EG0, conditioned_nodes): + + # Compute effective graph + #EG_cn = bn.conditional_effective_graph(conditioned_nodes=conditioned_nodes, bound=bound, threshold=0.0) + + print(type(EG_cn)) + + # Assign effective connectivity on edges + #dict_effconn = {nid: node.effective_connectivity(norm=False) + # for nid, node in enumerate(EG_cn.nodes,start=0) } + #nx.set_node_attributes(EG_cn, dict_effconn, 'effective_connectivity') + + # Add an attribute which discriminate conditioned nodes from non-conditioned node + for node in EG_cn.nodes(): + if node in conditioned_nodes: + EG_cn.nodes[node]['conditioned'] = True + else: + EG_cn.nodes[node]['conditioned'] = False + + # Add removed edges due to their fully redandant character aquisitions + # Identify edges become fully redundant due to conditioning + #EG = bn.effective_graph() + fully_redundant_edges = set(EG0.edges()) - set(EG_cn.edges()) + + # Add them to the conditional effective graph with an attribute + for u, v in fully_redundant_edges: + EG_cn.add_edge(u, v, fully_redundant=True) + for u, v in EG_cn.edges(): + if 'fully_redundant' not in EG_cn[u][v]: + EG_cn[u][v]['fully_redundant'] = False + + # Determine nodes whose ALL outgoing edges are fully redundant as fully redundant nodes + fully_redundant_nodes = {} + + for nid in EG_cn.nodes(): + + edges_out = [ + (u, v, d) for (u, v, d) in EG_cn.out_edges(nid, data=True) + if v != u + ] + + if len(edges_out) == 0: + fully_redundant_nodes[nid] = False + continue + + fully_redundant_nodes[nid] = all( + d.get('fully_redundant', False) for (_, _, d) in edges_out + ) + return EG_cn, fully_redundant_nodes + +def visualize_conditional_effective_graph(EG_cn, EG0, conditioned_nodes, sModel='your model', conditioned_str=None, manual_positions=None, node_attribute_map=None, category_color_map=None): + """ + Visualize the conditional effective graph of a Boolean network + + Parameters + ---------- + EG_cn: networkx directed graph + Conditional Effective graph generated with conditioned_nodes. + EG0 : networkx directed graph + Effective graph generated with edge removal threshold 0.0. + conditioned_nodes: dictionary + Conditioned nodes used to generate EG_cn. + sModel : str, optional + Model name for title. + conditioned_str : str, optional + Conditioned nodes information for title. + manual_positions : dict, optional + Dictionary of node positions keyed by node ID (int) or node label (str). + Values are (x, y) coordinates, e.g., {0: (0,0), 'Zeb': (1,2)} + node_attribute_map : dict, optional + category_color_map : dict, optional + """ + + #from cana.boolean_network import BooleanNetwork as BN + #from IPython.display import display + + DEFAULT_NODE_COLOR = VIZ_CONFIG["NODE_FILLCOLOR"] + + #bn = BN.from_file(input_cnet, type='cnet') + + # --- Build conditional effective graph --- + EG_cn_viz, fully_redundant_nodes = create_conditional_effective_graph(EG_cn, EG0, conditioned_nodes) + + # --- Labels and layout --- + sg_label = {n: EG_cn_viz.nodes[n].get('label', str(n)) for n in EG_cn_viz.nodes()} + positions, inputs_set, sinks_set, _ = compute_grid_layout(EG_cn_viz) + + # --- Override with manual positions if provided --- + if manual_positions: + new_positions = {} + for key, value in manual_positions.items(): + # Map label to node id if needed + if isinstance(key, str): + nid = next((n for n, lbl in sg_label.items() if lbl == key), None) + if nid is None: + raise ValueError(f"Label '{key}' not found in network nodes.") + else: + nid = key + new_positions[nid] = value + positions.update(new_positions) + + # --- Base Graphviz --- + pSG = create_base_graph() + #if conditioned_str==None: + # pSG = create_base_graph(f"Effective graph: {sModel}") + #else: + # pSG = create_base_graph(f"Effective graph: {sModel} \n Condition:{conditioned_str}") + + cfg = VIZ_CONFIG + max_penwidth = float(cfg["EDGE_PENWIDTH"]) + + # 1. Calculate the grid dimensions first to get 'cols' + N_total = len(EG_cn.nodes()) + cols = math.ceil(math.sqrt(N_total)) + + # 2. Your new Scaling Logic + if cols > 4: + size_multiplier = 0.9 ** (cols - 4) + else: + size_multiplier = 1.0 + + # 3. Apply the multiplier to the base config + node_w = float(VIZ_CONFIG["WIDTH"]) * size_multiplier + node_h = float(VIZ_CONFIG["NODE_HEIGHT"]) * size_multiplier + base_font = 10 * size_multiplier # Starting point for font + + # ========================================================== + # Determine Base Fill (default / sink / input) + # ========================================================== + fill = cfg["NODE_FILLCOLOR"] + + if nid in sinks_set: + fill = cfg["SINK_FILL"] + elif nid in inputs_set and nid not in sinks_set: + fill = cfg["INPUT_FILL"] + + # ===================== + # NODES + # ===================== + for nid, d in EG_cn_viz.nodes(data=True): + label_text = sg_label[nid] + x, y = positions[nid] + + # 1. Determine Font + dynamic_font = max(6, 10 - (len(label_text) - 4) // 2) if len(label_text) > 4 else 10 + + # 2. Determine Background Color (Fill) + # Start with default/input/sink + node_fill = cfg["NODE_FILLCOLOR"] + if nid in sinks_set: + node_fill = cfg["SINK_FILL"] + elif nid in inputs_set: + node_fill = cfg["INPUT_FILL"] + + # Override with category color + if node_attribute_map and category_color_map: + attr = node_attribute_map.get(label_text) or node_attribute_map.get(nid) + if attr in category_color_map: + node_fill = category_color_map[attr] + + # Apply grey if redundant (Move this up if you prefer category colors over grey) + if fully_redundant_nodes.get(nid, False): + node_fill = '#C0C0C0' + + # 3. Determine Border (Color & Style) + border_color = "black" + pen_w = "1" + periph = "1" + + c_state = d.get('conditioned_state', None) + is_cond = d.get('conditioned', False) + + if is_cond: + periph = "2" # Double border for the source of the condition + border_color = "blue" if c_state == 0 else "red" + pen_w = "1.5" + elif c_state is not None: + border_color = "blue" if c_state == 0 else "red" + pen_w = "3" # Thick border for nodes affected by the condition + + # 4. ONE SINGLE CALL TO DRAW + pSG.node(str(nid), + label=label_text, + pos=f"{x:.3f},{y:.3f}!", + fillcolor=node_fill, + color=border_color, + peripheries=periph, + penwidth=pen_w, + width=str(node_w), + height=str(node_h), + fontsize=str(dynamic_font), + fixedsize='true', + style='filled') + + + # ===================== + # EDGES + # ===================== + for uid, vid, d in EG_cn_viz.edges(data=True): + uid_str, vid_str = str(uid), str(vid) + weight = d.get('weight', 0) + penwidth = float(max_penwidth) * weight + source_state = EG_cn.nodes[uid].get('conditioned_state', None) + + DASH_PENWIDTH = "3" + + if d.get('fully_redundant', False): + pSG.edge(uid_str, vid_str, style='dashed', color='#00000040', penwidth=DASH_PENWIDTH) + continue + if source_state == 0: + pSG.edge(uid_str, vid_str, style='dashed', color='#0000FF70', penwidth=str(penwidth)) + continue + elif source_state == 1: + pSG.edge(uid_str, vid_str, style='dashed', color='#FF000070', penwidth=str(penwidth)) + continue + + if uid_str == vid_str: + color = '#636363' + uid_draw = f"{uid}:w" + vid_draw = f"{vid}:c" + else: + color = '#000000' + uid_draw = uid_str + vid_draw = vid_str + + pSG.edge(uid_draw, vid_draw, penwidth=str(penwidth), color=color) + + # 1. Display the Title/Condition + title_str = f"##### Conditional Effective Graph: {sModel}" + if conditioned_str: + title_str += f"\n**Condition:** {conditioned_str}" + + display(Markdown(title_str)) + + # 2. Display the conditional effective graph + display(pSG) + + # 3. Display the Legend (Matplotlib) + fig_legend = get_legend_figure() + display(fig_legend) + plt.close(fig_legend) # Prevents double-display in some environments + +def visualize_conditional_effective_graph_old(EG_cn, EG0, conditioned_nodes, sModel='your model', conditioned_str=None, manual_positions=None, node_attribute_map=None, category_color_map=None): + """ + Visualize the conditional effective graph of a Boolean network + + Parameters + ---------- + EG_cn: networkx directed graph + Conditional Effective graph generated with conditioned_nodes. + EG0 : networkx directed graph + Effective graph generated with edge removal threshold 0.0. + conditioned_nodes: dictionary + Conditioned nodes used to generate EG_cn. + sModel : str, optional + Model name for title. + conditioned_str : str, optional + Conditioned nodes information for title. + manual_positions : dict, optional + Dictionary of node positions keyed by node ID (int) or node label (str). + Values are (x, y) coordinates, e.g., {0: (0,0), 'Zeb': (1,2)} + node_attribute_map : dict, optional + category_color_map : dict, optional + """ + + #from cana.boolean_network import BooleanNetwork as BN + #from IPython.display import display + + DEFAULT_NODE_COLOR = VIZ_CONFIG["NODE_FILLCOLOR"] + + #bn = BN.from_file(input_cnet, type='cnet') + + # --- Build conditional effective graph --- + EG_cn_viz, fully_redundant_nodes = create_conditional_effective_graph(EG_cn, EG0, conditioned_nodes) + + # --- Labels and layout --- + sg_label = {n: EG_cn_viz.nodes[n].get('label', str(n)) for n in EG_cn_viz.nodes()} + positions, inputs_set, sinks_set, _ = compute_grid_layout(EG_cn_viz) + + # --- Override with manual positions if provided --- + if manual_positions: + new_positions = {} + for key, value in manual_positions.items(): + # Map label to node id if needed + if isinstance(key, str): + nid = next((n for n, lbl in sg_label.items() if lbl == key), None) + if nid is None: + raise ValueError(f"Label '{key}' not found in network nodes.") + else: + nid = key + new_positions[nid] = value + positions.update(new_positions) + + # --- Base Graphviz --- + pSG = create_base_graph() + #if conditioned_str==None: + # pSG = create_base_graph(f"Effective graph: {sModel}") + #else: + # pSG = create_base_graph(f"Effective graph: {sModel} \n Condition:{conditioned_str}") + + cfg = VIZ_CONFIG + max_penwidth = float(cfg["EDGE_PENWIDTH"]) + + # 1. Calculate the grid dimensions first to get 'cols' + N_total = len(EG_cn.nodes()) + cols = math.ceil(math.sqrt(N_total)) + + # 2. Your new Scaling Logic + if cols > 4: + size_multiplier = 0.9 ** (cols - 4) + else: + size_multiplier = 1.0 + + # 3. Apply the multiplier to the base config + node_w = float(VIZ_CONFIG["WIDTH"]) * size_multiplier + node_h = float(VIZ_CONFIG["NODE_HEIGHT"]) * size_multiplier + base_font = 10 * size_multiplier # Starting point for font + + # ========================================================== + # Determine Base Fill (default / sink / input) + # ========================================================== + fill = cfg["NODE_FILLCOLOR"] + + if nid in sinks_set: + fill = cfg["SINK_FILL"] + elif nid in inputs_set and nid not in sinks_set: + fill = cfg["INPUT_FILL"] + + # ===================== + # NODES + # ===================== + for nid, d in EG_cn_viz.nodes(data=True): + + label_text = sg_label[nid] + x, y = positions[nid] + conditioned = d.get('conditioned', False) + conditioned_state = d.get('conditioned_state', None) + + # --- DYNAMIC FONT CALCULATION --- + # Start with a base size (e.g., 12) and reduce it for longer labels + # This formula shrinks the font as the character count increases + base_size = 10 + if len(label_text) > 4: + # Decrease font size by 1 point for every 2 extra characters + dynamic_font = max(6, base_size - (len(label_text) - 4) // 2) + else: + dynamic_font = base_size + + # ========================================================== + # PRIORITY 0: Conditioned nodes (border emphasis) + # ========================================================== + if conditioned: + + #label_text = f'<{label_text}>' + #penwidth = "3" + color = "blue" if conditioned_state == 0 else "red" + + # Set color based on state + color = "blue" if conditioned_state == 0 else "red" + + pSG.node(str(nid), + label=label_text, + pos=f"{x:.3f},{y:.3f}!", + fillcolor=fill, + color=color, + peripheries="2", # Creates the double border + penwidth="1.5", # Optional: slightly thinner lines look cleaner for double borders + width=str(node_w), + height=str(node_h), + fontsize=str(dynamic_font), + fixedsize='true') + continue + + + # ========================================================== + # PRIORITY 1: Fully redundant nodes (DO NOT override color) + # ========================================================== + if fully_redundant_nodes.get(nid, False): + + fill = '#C0C0C0' + + if conditioned: + label_text = f'<{label_text}>' + + color = None + penwidth = "1" + + if conditioned_state == 0: + color = "blue" + penwidth = "3" + elif conditioned_state == 1: + color = "red" + penwidth = "3" + + pSG.node(str(nid), + label=label_text, + pos=f"{x:.3f},{y:.3f}!", + color=color, + fillcolor=fill, + penwidth=penwidth, + width=str(node_w), # New Scaled Width + height=str(node_h), # New Scaled Height + fontsize=str(dynamic_font), + fixedsize='true') + + continue + + # ========================================================== + # PRIORITY 2: Nodes with conditioned_state + # ========================================================== + if conditioned_state == 0: + pSG.node(str(nid), + label=label_text, + pos=f"{x:.3f},{y:.3f}!", + fillcolor=fill, + color="blue", + penwidth="3", + width=str(node_w), # New Scaled Width + height=str(node_h), # New Scaled Height + fontsize=str(dynamic_font), + fixedsize='true') + continue + + elif conditioned_state == 1: + pSG.node(str(nid), + label=label_text, + pos=f"{x:.3f},{y:.3f}!", + fillcolor=fill, + color="red", + penwidth="3", + width=str(node_w), # New Scaled Width + height=str(node_h), # New Scaled Height + fontsize=str(dynamic_font), + fixedsize='true') + continue + + + # ========================================================== + # Apply Category Coloring (NEW SECTION) + # Only overrides base fill + # ========================================================== + if node_attribute_map and category_color_map: + + attr = node_attribute_map.get(label_text) or node_attribute_map.get(nid) + + if attr in category_color_map and category_color_map[attr]: + fill = category_color_map[attr] + + # ========================================================== + # PRIORITY 4: Normal nodes + # ========================================================== + pSG.node(str(nid), + label=label_text, + pos=f"{x:.3f},{y:.3f}!", + fillcolor=fill, + width=str(node_w), # New Scaled Width + height=str(node_h), # New Scaled Height + fontsize=str(dynamic_font), + fixedsize='true') + + + # ===================== + # EDGES + # ===================== + for uid, vid, d in EG_cn_viz.edges(data=True): + uid_str, vid_str = str(uid), str(vid) + weight = d.get('weight', 0) + penwidth = float(max_penwidth) * weight + source_state = EG_cn.nodes[uid].get('conditioned_state', None) + + DASH_PENWIDTH = "3" + + if d.get('fully_redundant', False): + pSG.edge(uid_str, vid_str, style='dashed', color='#00000040', penwidth=DASH_PENWIDTH) + continue + if source_state == 0: + pSG.edge(uid_str, vid_str, style='dashed', color='#0000FF70', penwidth=str(penwidth)) + continue + elif source_state == 1: + pSG.edge(uid_str, vid_str, style='dashed', color='#FF000070', penwidth=str(penwidth)) + continue + + if uid_str == vid_str: + color = '#636363' + uid_draw = f"{uid}:w" + vid_draw = f"{vid}:c" + else: + color = '#000000' + uid_draw = uid_str + vid_draw = vid_str + + pSG.edge(uid_draw, vid_draw, penwidth=str(penwidth), color=color) + + # 1. Display the Title/Condition + title_str = f"##### Conditional Effective Graph: {sModel}" + if conditioned_str: + title_str += f"\n**Condition:** {conditioned_str}" + + display(Markdown(title_str)) + + # 2. Display the conditional effective graph + display(pSG) + + # 3. Display the Legend (Matplotlib) + fig_legend = get_legend_figure() + display(fig_legend) + plt.close(fig_legend) # Prevents double-display in some environments From 28184b6e2f83f282df80d3917a23480e07858dc7 Mon Sep 17 00:00:00 2001 From: yoshiakifujita Date: Fri, 10 Apr 2026 17:21:15 +0100 Subject: [PATCH 3/6] Update bio.py Add BT474_ErbB_S(). --- cana/datasets/bio.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/cana/datasets/bio.py b/cana/datasets/bio.py index 180ad31..8c976d1 100644 --- a/cana/datasets/bio.py +++ b/cana/datasets/bio.py @@ -21,6 +21,18 @@ _path = os.path.dirname(os.path.realpath(__file__)) """ Make sure we know what the current directory is """ +def BT474_ErbB_S(): + """Boolean network model of the control of HCC1954 Breast Cell Line Short-term ErbB Network model + + The network is defined in :cite:`der Heyde:2014`. + + Returns: + (BooleanNetwork) + """ + return BooleanNetwork.from_file( + _path + "/cell_collective/BT474 Breast Cell Line Short-term ErbB Network.txt", name="BT474 Breast Cell Line Short-term ErbB", keep_constants=True + ) + def THALIANA(): """Boolean network model of the control of flower morphogenesis in Arabidopsis thaliana From 02b394d40f1dba1272ccef4767dd8f85c5d64be0 Mon Sep 17 00:00:00 2001 From: yoshiakifujita Date: Fri, 10 Apr 2026 17:23:19 +0100 Subject: [PATCH 4/6] Add effective graph manual addition Add the effective graph and the conditional effective graph jupyter notebook file. --- ...ditional Effective Graph Manual Demo.ipynb | 2340 +++++++++++++++++ tutorials/Fig_3_der_Heyde_2014.png | Bin 0 -> 89838 bytes 2 files changed, 2340 insertions(+) create mode 100644 tutorials/Effective Graph - Conditional Effective Graph Manual Demo.ipynb create mode 100644 tutorials/Fig_3_der_Heyde_2014.png diff --git a/tutorials/Effective Graph - Conditional Effective Graph Manual Demo.ipynb b/tutorials/Effective Graph - Conditional Effective Graph Manual Demo.ipynb new file mode 100644 index 0000000..4606c41 --- /dev/null +++ b/tutorials/Effective Graph - Conditional Effective Graph Manual Demo.ipynb @@ -0,0 +1,2340 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "8892d457-d135-45db-8c17-fc9c5781fb32", + "metadata": {}, + "source": [ + "# Effective graph and conditional effective graph\n", + "\n", + "> A.J. Gates, R.B. Correia, X. Wang, & L.M. Rocha [2021]. \"The effective graph reveals redundancy, canalization, and control pathways in biochemical regulation and signaling\". Proceedings of the National Academy of Sciences (PNAS), 118 (12)." + ] + }, + { + "cell_type": "markdown", + "id": "2cc65885-b5d1-4d83-83cb-19e21be1453e", + "metadata": {}, + "source": [ + "This notebook demonstrates the use of CANA to compute edge effectiveness values as edge weights in:\n", + "\n", + "1. **The effective graph** – a probabilistic synthesis of the network’s dynamical redundancies across all possible initial conditions.\n", + "\n", + "2. **The conditional effective graph** – a probabilistic synthesis conditioned on user-specified initial states or interventions.\n", + "\n", + "As an example, we use the **BT474 Breast Cell Line Short-term ErbB Network model** from Cell Collective. \n", + "\n", + ">der Heyde, S. V., Bender, C., Henjes, F., Sonntag, J., Korf, U., & Beissbarth, T. (2014). Boolean ErbB network reconstructions and perturbation simulations reveal individual drug response in different breast cancer cell lines. BMC systems biology, 8(1), 75.\n", + " \n", + "This model includes three drug intervention nodes, making it suitable for demonstrating both:\n", + "\n", + "- effective graph analyses, and \n", + "- conditional effective graph analyses.\n", + "\n", + "Users can explore how drug interventions alter signal cascades and the propagation of influence through the network.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "3cd893a1-83e3-4333-a4dd-b3ec91332f16", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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YGGMMcYYY4zVWtc0YElNTcWJEyeUybUaEeHixYvKZOaGxYsXY/78+cpkh4qKijBt2jRs3rxZOem2kpOTo0yqcV9//TWWLl0KANi9ezemTZuG7OxsAEBubi4qKioUS9z6rkf9O336NFJSUpTJVbZmzRp8+OGH2L17t3LSDbNjxw7k5eUpk6ssLS3tun1HrFmzRpnEalBV6gQfi5pjW5a3Y7ler32uqet5dZ08eRKpqanK5NvKVQUsy5YtQ7169ez+srOzkZ2djZ49e0Kn0ykXu65KSkoQExODAQMG4OGHH8arr76KnTt3KmcDADz33HOoW7cuGjRogEaNGuGRRx7B//73P+VsN1x5efk1C6quZt3z5s3DzJkzlckOFRQU4MMPP8SGDRuUk67K+fPnlUl23Jnneli2bBkCAgLw559/KifVqGnTpuHrr78GAOzcuRMffvghDh06hJycHLRp0wZ6vV65yA11PY5PTdW/lStX4qOPPsJHH32Erl27iv/PnDkTp06dQnJysnKRKtmyZQsyMzMxdepUXLx4EfPmzVPOckNs3rwZubm5AIBFixZh69atylncsm3bNhw7dkyZfE2sXLlSmcRqkG2dqMztdCxSU1Ov6XlrW5bS/6/1NmuT61WXauJ6fjVycnKwZcsWZfJt5aoCFiJCWVkZWrRogb59+4q/hg0bIiAgAGPHjsV7772nXOy6Ki8vx4cffojU1FRkZmZi2bJl0Gq1Dn/Zzs/PR7t27bBjxw7MnTsXR44cQb9+/XDhwgXlrDfM77//jubNm1+Tinst13099O3bF88++6wyWTh9+jSCgoLw+eefKyfdEKGhofj000/RvXt35aTrolWrVpg6dSpefvll5aQbprJjWNu89NJLmDp1KqZOnYrg4GDx/3HjxilnrZaff/4ZOp0OHh4e6NixI55++mnlLDfc448/jrvvvluZfMOtW7cO+/fvVybfMq7F/h07dgw//vijMrnWqiy/lU2/Hm7EeXsjtulIbSh/duuoo1f8vPrXXzvwwAMP2CY5tWvXLqxatQrPPPMMfvrpJ7z88st4+eWX0ahRI+Tl5cFkMoGI0KtXL8D6a9rMmTOxdetWNG7cGF9//TUqKirQvn17REdH448//sDDDz+MunXrYu7cufjll1/QuXNnNG7cGHq9HgcPHkTdunXxySefIDQ0FPXq1cMff/yB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", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from IPython.display import Image, display\n", + "\n", + "display(Image(filename='Fig_3_der_Heyde_2014.png'))" + ] + }, + { + "cell_type": "markdown", + "id": "b03767c4-701b-43ec-bf7a-ec9ad04f632a", + "metadata": {}, + "source": [ + "### 1. Effective graph\n", + "\n", + "#### 1. 1 Edge effectiveness computation\n", + "\n", + "##### Import modules" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "de437207-3fe8-44ae-8300-bcce257e5a19", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import networkx as nx\n", + "\n", + "# Cana\n", + "from cana.boolean_network import BooleanNetwork\n", + "from cana.datasets.bio import BT474_ErbB_S" + ] + }, + { + "cell_type": "markdown", + "id": "88915994-9675-4e2a-a56a-05689b556db6", + "metadata": {}, + "source": [ + "##### Read the BT474 Breast Cell Line model" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "a193906f-6d0c-4cad-a5a6-600b811d419a", + "metadata": {}, + "outputs": [], + "source": [ + "B = BT474_ErbB_S()" + ] + }, + { + "cell_type": "markdown", + "id": "89a594e9-5d98-46db-8844-61fbb3666618", + "metadata": {}, + "source": [ + "##### Compute edge effectiveness" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "7cd9ef88-fbd3-4b9d-8cb6-6d7a7c931cb2", + "metadata": {}, + "outputs": [], + "source": [ + "# Parameter settings\n", + "\n", + "# threshold (float) – Only return edges above a certain effective connectivity threshold. \n", + "# This is usefull when computing graph measures at diffent levels.\n", + "threshold=0.0\n", + "EG = B.effective_graph(threshold=threshold)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "9513f77d-3455-4069-9095-aff7159f42b1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
SourceTargetEdge effectiveness
0PKCaPKCa0.625
1MEK1_2MEK1_20.296875
2MEK1_2ERK1_20.296875
3MEK1_2PDK10.225
4p70S6Kp70S6K0.296875
............
46EGFERK1_20.296875
47EGFERBB10.145833
48EGFERBB20.095052
49EGFPLCg0.225
50EGFEGF1.0
\n", + "
" + ], + "text/plain": [ + " Source Target Edge effectiveness\n", + "0 PKCa PKCa 0.625\n", + "1 MEK1_2 MEK1_2 0.296875\n", + "2 MEK1_2 ERK1_2 0.296875\n", + "3 MEK1_2 PDK1 0.225\n", + "4 p70S6K p70S6K 0.296875\n", + "... ... ... ...\n", + "46 EGF ERK1_2 0.296875\n", + "47 EGF ERBB1 0.145833\n", + "48 EGF ERBB2 0.095052\n", + "49 EGF PLCg 0.225\n", + "50 EGF EGF 1.0" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Display computed edge effectiveness\n", + "nodes=B.nodes\n", + "edge_data = [(nodes[u].name, nodes[v].name, EG[u][v]['weight']) for u, v in EG.edges()]\n", + "\n", + "df = pd.DataFrame(edge_data, columns=['Source', 'Target', 'Edge effectiveness'])\n", + "df = df.sort_index(ascending=True)\n", + "df\n", + "top = df.head(5)\n", + "bottom = df.tail(5)\n", + "\n", + "ellipsis = pd.DataFrame({col: [\"...\"] for col in df.columns}, index=[\"...\"])\n", + "\n", + "df_edge_effectiveness = pd.concat([top, ellipsis, bottom])\n", + "df_edge_effectiveness" + ] + }, + { + "cell_type": "markdown", + "id": "c09eb1a2-f41e-4e08-8fea-967f582aa94c", + "metadata": {}, + "source": [ + "#### 1. 2 Effective graph visualization" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "60a8f87e-6352-494f-8276-a83577bd1e29", + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "##### Effective Graph: BT474 Breast Cell Line Short-term ErbB Network" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + "
\n", + " \r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "0\r\n", + "\r\n", + "PKCa\r\n", + "\r\n", + "\r\n", + "\r\n", + "0->0\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "1\r\n", + "\r\n", + "MEK1_2\r\n", + "\r\n", + "\r\n", + "\r\n", + "1->1\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "4\r\n", + "\r\n", + "ERK1_2\r\n", + "\r\n", + "\r\n", + "\r\n", + "1->4\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "5\r\n", + "\r\n", + "PDK1\r\n", + "\r\n", + "\r\n", + "\r\n", + "1->5\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "2\r\n", + "\r\n", + "p70S6K\r\n", + "\r\n", + "\r\n", + "\r\n", + "2->2\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "3\r\n", + "\r\n", + "mTOR\r\n", + "\r\n", + "\r\n", + "\r\n", + "3->2\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "3->3\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "6\r\n", + "\r\n", + "AKT\r\n", + "\r\n", + "\r\n", + "\r\n", + "3->6\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "4->2\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "4->4\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "5->5\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "5->6\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "6->2\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "6->3\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "6->6\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "7\r\n", + "\r\n", + "ERBB3\r\n", + "\r\n", + "\r\n", + "\r\n", + "7->1\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "7->5\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "7->6\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "7->7\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "9\r\n", + "\r\n", + "ERBB2\r\n", + "\r\n", + "\r\n", + "\r\n", + "7->9\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "10\r\n", + "\r\n", + "PLCg\r\n", + "\r\n", + "\r\n", + "\r\n", + "7->10\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "8\r\n", + "\r\n", + "ERBB1\r\n", + "\r\n", + "\r\n", + "\r\n", + "8->1\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "8->5\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "8->8\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "8->10\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "9->1\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "9->5\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "9->9\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "9->10\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "10->0\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "10->8\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "10->10\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "11\r\n", + "\r\n", + "trastuzumab\r\n", + "\r\n", + "\r\n", + "\r\n", + "11->9\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "11->11\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "12\r\n", + "\r\n", + "pertuzumab\r\n", + "\r\n", + "\r\n", + "\r\n", + "12->3\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "12->4\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "12->7\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "12->8\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "12->9\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "12->12\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "13\r\n", + "\r\n", + "erlotinib\r\n", + "\r\n", + "\r\n", + "\r\n", + "13->7\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "13->8\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "13->9\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "13->13\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "14\r\n", + "\r\n", + "HRG\r\n", + "\r\n", + "\r\n", + "\r\n", + "14->7\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "14->14\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "15\r\n", + "\r\n", + "EGF\r\n", + "\r\n", + "\r\n", + "\r\n", + "15->4\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "15->8\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "15->9\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "15->10\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "15->15\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\n", + "
\n", + "
\n", + " \n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from cana.drawing.effective_graph import visualize_effective_graph\n", + "model_name = \"BT474 Breast Cell Line Short-term ErbB Network\"\n", + "\n", + "# Set each node's location along with Figure 3 in der Heyde et al, 2014\n", + "manual_pos = {\n", + " 'EGF': (0, 4), 'erlotinib': (1.5, 4), 'trastuzumab': (3, 4), 'pertuzumab': (4.5, 4), 'HRG': (6, 4),\n", + " 'ERBB1': (0, 3), 'ERBB2': (3, 3), 'ERBB3': (6, 3),\n", + " 'MEK1_2': (0, 2), 'PDK1': (2, 2), 'PLCg': (4, 2), 'PKCa': (6, 2), \n", + " 'ERK1_2': (0, 1), 'AKT': (3, 1), 'mTOR': (6, 1),\n", + " 'p70S6K': (3, 0)\n", + "}\n", + "\n", + "threshold=0.0\n", + "EG = B.effective_graph(threshold=threshold)\n", + "\n", + "visualize_effective_graph(EG, model_name, threshold, manual_pos)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "9647c463-bc27-4682-92fd-69134bb8db92", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
SourceTargetEdge effectiveness
0pertuzumabmTOR0.416667
1pertuzumabERK1_20.296875
2pertuzumabERBB30.520833
3pertuzumabERBB10.572917
4pertuzumabERBB20.386719
5pertuzumabpertuzumab1.000000
\n", + "
" + ], + "text/plain": [ + " Source Target Edge effectiveness\n", + "0 pertuzumab mTOR 0.416667\n", + "1 pertuzumab ERK1_2 0.296875\n", + "2 pertuzumab ERBB3 0.520833\n", + "3 pertuzumab ERBB1 0.572917\n", + "4 pertuzumab ERBB2 0.386719\n", + "5 pertuzumab pertuzumab 1.000000" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Display edges with source as 'pertuzumab'\n", + "edge_data = [(nodes[u].name, nodes[v].name, EG[u][v]['weight']) for u, v in EG.edges() if nodes[u].name.lower() == 'pertuzumab']\n", + "pd.DataFrame(edge_data, columns=['Source', 'Target', 'Edge effectiveness'])" + ] + }, + { + "cell_type": "markdown", + "id": "93e4dde5-0415-430f-a49c-3e6395a67e1f", + "metadata": {}, + "source": [ + "In the effective graph visualization, each edge width represents its edge effectiveness.\n", + "\n", + "Each node color represents fffective out-degree of a node, the sum of edge effectiveness of the node.\n", + "\n", + "Here, node pertuzumab has maximum effective out-degree, 3.194, as sum of" + ] + }, + { + "cell_type": "markdown", + "id": "3d9bbf69-6175-4af3-91aa-cc0b3d62a13a", + "metadata": {}, + "source": [ + "#### 1. 3 Threshold Effective graph visualization\n", + "\n", + "By setting threshold parameter with specific values, you can see the threshold effective graph with edges whose edge effectiveness is above the threshold." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "d60987e4-6d83-4cf4-90b3-533654cdc31c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "##### Threshold Effective Graph: BT474 Breast Cell Line Short-term ErbB Network\n", + "**Edge Weight Threshold:** 0.4" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + "
\n", + " \r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "0\r\n", + "\r\n", + "PKCa\r\n", + "\r\n", + "\r\n", + "\r\n", + "0->0\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "1\r\n", + "\r\n", + "MEK1_2\r\n", + "\r\n", + "\r\n", + "\r\n", + "2\r\n", + "\r\n", + "p70S6K\r\n", + "\r\n", + "\r\n", + "\r\n", + "3\r\n", + "\r\n", + "mTOR\r\n", + "\r\n", + "\r\n", + "\r\n", + "3->3\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "4\r\n", + "\r\n", + "ERK1_2\r\n", + "\r\n", + "\r\n", + "\r\n", + "5\r\n", + "\r\n", + "PDK1\r\n", + "\r\n", + "\r\n", + "\r\n", + "6\r\n", + "\r\n", + "AKT\r\n", + "\r\n", + "\r\n", + "\r\n", + "6->3\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "7\r\n", + "\r\n", + "ERBB3\r\n", + "\r\n", + "\r\n", + "\r\n", + "8\r\n", + "\r\n", + "ERBB1\r\n", + "\r\n", + "\r\n", + "\r\n", + "9\r\n", + "\r\n", + "ERBB2\r\n", + "\r\n", + "\r\n", + "\r\n", + "10\r\n", + "\r\n", + "PLCg\r\n", + "\r\n", + "\r\n", + "\r\n", + "10->0\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "11\r\n", + "\r\n", + "trastuzumab\r\n", + "\r\n", + "\r\n", + "\r\n", + "11->11\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "12\r\n", + "\r\n", + "pertuzumab\r\n", + "\r\n", + "\r\n", + "\r\n", + "12->3\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "12->7\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "12->8\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "12->12\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "13\r\n", + "\r\n", + "erlotinib\r\n", + "\r\n", + "\r\n", + "\r\n", + "13->7\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "13->8\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "13->13\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "14\r\n", + "\r\n", + "HRG\r\n", + "\r\n", + "\r\n", + "\r\n", + "14->14\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "15\r\n", + "\r\n", + "EGF\r\n", + "\r\n", + "\r\n", + "\r\n", + "15->15\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\r\n", + "\n", + "
\n", + "
\n", + " \n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Visualize edges with weight larger than threshold parameter, in this case, 0.4\n", + "threshold=0.4\n", + "EG04 = B.effective_graph(threshold=threshold)\n", + "visualize_effective_graph(EG04, model_name, threshold, manual_pos)" + ] + }, + { + "cell_type": "markdown", + "id": "28d6a9e8-4580-45f4-832d-cbde61a5121a", + "metadata": {}, + "source": [ + "### 2. Conditional effective graph\n", + "\n", + "with loaded the BT474 Breast Cell Line model" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "384c2a5a-90d9-4087-8876-3f8d54380b40", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Index 11: trastuzumab\n", + "Index 12: pertuzumab\n", + "Index 13: erlotinib\n" + ] + } + ], + "source": [ + "#### Drug nodes and their IDs\n", + "drugs = [11, 12, 13]\n", + "for i in drugs:\n", + " print(f\"Index {i}: {B.nodes[i].name}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "bae1f366-8c4a-477a-8f5e-4c1f6f6c1801", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Index 14: HRG\n", + "Index 15: EGF\n" + ] + } + ], + "source": [ + "#### Growth factor nodes (always set as 1 in the reference) and their IDs\n", + "growth_factors = [14, 15]\n", + "for i in growth_factors:\n", + " print(f\"Index {i}: {B.nodes[i].name}\")" + ] + }, + { + "cell_type": "markdown", + "id": "6bc9f034-bb7d-4cc0-a809-f0ba42391710", + "metadata": {}, + "source": [ + "#### 2. 1 Compute edge effectiveness with baseline condition" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "5c432826-c559-4321-9ec8-34fd9f554417", + "metadata": {}, + "outputs": [], + "source": [ + "# Parameter settings\n", + "# conditioned_nodes (dict) – a dictionary mapping node ids to their conditioned states. dict of form { nodeid : nodestate }\n", + "conditioned_nodes={14:1, 15:1} # Two growth factors HRG: ON, EGF: ON\n", + "\n", + "# threshold (float) – Only return edges above a certain effective connectivity threshold. \n", + "# This is usefull when computing graph measures at diffent levels.\n", + "threshold = 0.0 # gain all edges\n", + "\n", + "EG_cn = B.conditional_effective_graph(conditioned_nodes=conditioned_nodes, threshold=threshold)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "ce94e894-6e38-4bed-834e-497ad32f50d5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
SourceTargetEdge effectiveness
0MEK1_2MEK1_20.296875
1MEK1_2PDK10.225
2mTORmTOR0.416667
3mTORAKT0.296875
4ERK1_2p70S6K0.296875
............
30EGFERK1_20.296875
31EGFERBB10.145833
32EGFERBB20.095052
33EGFPLCg0.225
34EGFEGF1.0
\n", + "
" + ], + "text/plain": [ + " Source Target Edge effectiveness\n", + "0 MEK1_2 MEK1_2 0.296875\n", + "1 MEK1_2 PDK1 0.225\n", + "2 mTOR mTOR 0.416667\n", + "3 mTOR AKT 0.296875\n", + "4 ERK1_2 p70S6K 0.296875\n", + "... ... ... ...\n", + "30 EGF ERK1_2 0.296875\n", + "31 EGF ERBB1 0.145833\n", + "32 EGF ERBB2 0.095052\n", + "33 EGF PLCg 0.225\n", + "34 EGF EGF 1.0" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Display computed edge effectiveness\n", + "nodes=B.nodes\n", + "edge_data = [(nodes[u].name, nodes[v].name, EG_cn[u][v]['weight']) for u, v in EG_cn.edges()]\n", + "\n", + "df = pd.DataFrame(edge_data, columns=['Source', 'Target', 'Edge effectiveness'])\n", + "df = df.sort_index(ascending=True)\n", + "top = df.head(5)\n", + "bottom = df.tail(5)\n", + "\n", + "ellipsis = pd.DataFrame({col: [\"...\"] for col in df.columns}, index=[\"...\"])\n", + "\n", + "df_edge_effectiveness_baseline = pd.concat([top, ellipsis, bottom])\n", + "df_edge_effectiveness_baseline" + ] + }, + { + "cell_type": "markdown", + "id": "5e1d1ba9-829d-4b4d-9a33-3845d50481ec", + "metadata": {}, + "source": [ + "The number of edges decreases from **51** to **35**, meaning that there are 16 edges which become fully redundant because of the baseline conditioning." + ] + }, + { + "cell_type": "markdown", + "id": "5d0ebcf4-dfb9-4d1e-bc80-8ff219eb7e42", + "metadata": {}, + "source": [ + "#### 2. 2 Conditional effective graph visualization\n", + "\n", + "Visualize Conditional effective graph with baseline condition" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "6436b9ac-ec5d-47a6-9b11-3fc59761d876", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + }, + { + "data": { + "text/markdown": [ + "##### Conditional Effective Graph: BT474 Breast Cell Line Short-term ErbB Network\n", + "**Condition:** HRG: 1, EGF: 1" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "PKCa\n", + "\n", + "\n", + "\n", + "0->0\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "1\n", + "\n", + "MEK1_2\n", + "\n", + "\n", + "\n", + "1:w->1:c\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "4\n", + "\n", + "ERK1_2\n", + "\n", + "\n", + "\n", + "1->4\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "5\n", + "\n", + "PDK1\n", + "\n", + "\n", + "\n", + "1->5\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "2\n", + "\n", + "p70S6K\n", + "\n", + "\n", + "\n", + "2->2\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "3\n", + "\n", + "mTOR\n", + "\n", + "\n", + "\n", + "3->2\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "3:w->3:c\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "6\n", + "\n", + "AKT\n", + "\n", + "\n", + "\n", + "3->6\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "4->2\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "4->4\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "5:w->5:c\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "5->6\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "6->2\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "6->3\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "6:w->6:c\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "7\n", + "\n", + "ERBB3\n", + "\n", + "\n", + "\n", + "7->1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "7->5\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "7->6\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "7->7\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "9\n", + "\n", + "ERBB2\n", + "\n", + "\n", + "\n", + "7->9\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "10\n", + "\n", + "PLCg\n", + "\n", + "\n", + "\n", + "7->10\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "8\n", + "\n", + "ERBB1\n", + "\n", + "\n", + "\n", + "8->1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "8->5\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "8->8\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "8->10\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "9->1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "9->5\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "9->9\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "9->10\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "10->0\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "10->8\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "10->10\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "11\n", + "\n", + "trastuzumab\n", + "\n", + "\n", + "\n", + "11->9\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "11:w->11:c\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "12\n", + "\n", + "pertuzumab\n", + "\n", + "\n", + "\n", + "12->3\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "12->4\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "12->7\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "12->8\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "12->9\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "12:w->12:c\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "13\n", + "\n", + "erlotinib\n", + "\n", + "\n", + "\n", + "13->7\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "13->8\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "13->9\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "13:w->13:c\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "14\n", + "\n", + "\n", + "HRG\n", + "\n", + "\n", + "\n", + "14->7\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "14->14\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "15\n", + "\n", + "\n", + "EGF\n", + "\n", + "\n", + "\n", + "15->4\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "15->8\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "15->9\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "15->10\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "15->15\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from cana.drawing.effective_graph import visualize_conditional_effective_graph\n", + "threshold = 0.0\n", + "EG0 = B.conditional_effective_graph(threshold=threshold)\n", + "\n", + "conditioned_nodes={14:1, 15:1} # Two growth factors HRG: ON, EGF: ON\n", + "EG_cn = B.conditional_effective_graph(conditioned_nodes=conditioned_nodes, threshold=threshold)\n", + "\n", + "# Optinal: Create conditioning string for visualization\n", + "node_strings = [f\"{B.nodes[i].name}: {state}\" for i, state in conditioned_nodes.items()]\n", + "conditioned_str = \", \".join(node_strings)\n", + "\n", + "visualize_conditional_effective_graph(EG_cn, EG0, conditioned_nodes, model_name, conditioned_str, manual_pos)" + ] + }, + { + "cell_type": "markdown", + "id": "2bcf06b1-800d-43ca-af9b-ee3e59927d5d", + "metadata": {}, + "source": [ + "Visualize Conditional effective graph with baseline + three drug administrations" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "9f18624d-fad7-477b-910e-8f07af2654ce", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + }, + { + "data": { + "text/markdown": [ + "##### Conditional Effective Graph: BT474 Breast Cell Line Short-term ErbB Network\n", + "**Condition:** trastuzumab: 1, pertuzumab: 1, erlotinib: 1, HRG: 1, EGF: 1" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "PKCa\n", + "\n", + "\n", + "\n", + "0->0\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "1\n", + "\n", + "MEK1_2\n", + "\n", + "\n", + "\n", + "1:w->1:c\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "4\n", + "\n", + "ERK1_2\n", + "\n", + "\n", + "\n", + "1->4\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "5\n", + "\n", + "PDK1\n", + "\n", + "\n", + "\n", + "1->5\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "2\n", + "\n", + "p70S6K\n", + "\n", + "\n", + "\n", + "2->2\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "3\n", + "\n", + "mTOR\n", + "\n", + "\n", + "\n", + "3->2\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "3->3\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "6\n", + "\n", + "AKT\n", + "\n", + "\n", + "\n", + "3->6\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "4->2\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "4->4\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "5:w->5:c\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "5->6\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "6->2\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "6->3\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "6->6\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "7\n", + "\n", + "ERBB3\n", + "\n", + "\n", + "\n", + "7->1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "7->5\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "7->6\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "7->7\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "9\n", + "\n", + "ERBB2\n", + "\n", + "\n", + "\n", + "7->9\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "10\n", + "\n", + "PLCg\n", + "\n", + "\n", + "\n", + "7->10\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "8\n", + "\n", + "ERBB1\n", + "\n", + "\n", + "\n", + "8->1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "8->5\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "8->8\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "8->10\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "9->1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "9->5\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "9->9\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "9->10\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "10->0\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "10->8\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "10->10\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "11\n", + "\n", + "\n", + "trastuzumab\n", + "\n", + "\n", + "\n", + "11->9\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "11->11\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "12\n", + "\n", + "\n", + "pertuzumab\n", + "\n", + "\n", + "\n", + "12->3\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "12->4\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "12->7\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "12->8\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "12->9\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "12->12\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "13\n", + "\n", + "\n", + "erlotinib\n", + "\n", + "\n", + "\n", + "13->7\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "13->8\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "13->9\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "13->13\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "14\n", + "\n", + "\n", + "HRG\n", + "\n", + "\n", + "\n", + "14->7\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "14->14\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "15\n", + "\n", + "\n", + "EGF\n", + "\n", + "\n", + "\n", + "15->4\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "15->8\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "15->9\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "15->10\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "15->15\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "conditioned_nodes={11:1, 12:1, 13:1, # Three drugs pertuzumab: ON, erlotinib: OFF, trastuzumab: OFF\n", + " 14:1, 15:1} # Two growth factors HRG: ON, EGF: ON\n", + "\n", + "EG_cn = B.conditional_effective_graph(conditioned_nodes=conditioned_nodes, threshold=threshold)\n", + "\n", + "# Optinal: Create conditioning string for visualization\n", + "node_strings = [f\"{B.nodes[i].name}: {state}\" for i, state in conditioned_nodes.items()]\n", + "conditioned_str = \", \".join(node_strings)\n", + "\n", + "visualize_conditional_effective_graph(EG_cn, EG0, conditioned_nodes, model_name, conditioned_str, manual_pos)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2fc6b3a6-bb1b-49fc-9f41-a6e7c54ee42c", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python (cana_env)", + "language": "python", + "name": "cana_env" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.15" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/tutorials/Fig_3_der_Heyde_2014.png b/tutorials/Fig_3_der_Heyde_2014.png new file mode 100644 index 0000000000000000000000000000000000000000..63e9a8d12bf03162a5264d65344a2ce666d61f0f GIT binary patch literal 89838 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 s?2zh@t3|r(yWMD8>8(FZj44e-A2T$0XOaK4? literal 0 HcmV?d00001 From 44a06d0d433f52b42446c214de1eac4a5dcdef30 Mon Sep 17 00:00:00 2001 From: Felipe Xavier Costa Date: Fri, 10 Apr 2026 17:41:01 +0100 Subject: [PATCH 5/6] Fix installation command and update changelog Updated installation command and added changelog entry for version 0.1.0. --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6e62958..a344b52 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ Installation: Pull and install the code directly from the github [project page](https://github.com/casci-lab/CANA). ``` - pip install git+https://github.com/CASCI-lab/CANA/ceg_visualization + pip install git+https://github.com/CASCI-lab/CANA ``` Please note that CANA uses Cython. For it to compile you may need to install the following: @@ -114,6 +114,9 @@ Run nosetests -v to perform tests and diagnoses on functions. Changelog --------- +v0.1.0 +- Added visualization routines to drawing (effective graph and conditional effective graph) + v0.1 - Canalization methods ported to Cython From 9730fd6e9348d80e76b57b97b7c74064ffd6413e Mon Sep 17 00:00:00 2001 From: yoshiakifujita Date: Tue, 14 Apr 2026 17:53:35 +0100 Subject: [PATCH 6/6] Fix: Resolve CEG visualization issue Fix an issue in visualize_conditional_effective_graph method that the function did not work when it was called without manual_positions argument. --- cana/drawing/effective_graph.py | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/cana/drawing/effective_graph.py b/cana/drawing/effective_graph.py index 3cf8771..7ea241e 100644 --- a/cana/drawing/effective_graph.py +++ b/cana/drawing/effective_graph.py @@ -57,8 +57,8 @@ "NODE_MARGIN": ".05", "NODE_OUTLINE_COLOR": "black", "NODE_FILLCOLOR": "#edf7ed", - "INPUT_FILL": "#d299ff", - "SINK_FILL": "#22c55e", + "INPUT_FILL": "#edf7ed", + "SINK_FILL": "#edf7ed", "NODE_FONTNAME": "Helvetica", "NODE_FONTCOLOR": "black", "GRID_DX": 120.0, # Increased from 2.0 (standard points) @@ -525,11 +525,6 @@ def visualize_conditional_effective_graph(EG_cn, EG0, conditioned_nodes, sModel= # ========================================================== fill = cfg["NODE_FILLCOLOR"] - if nid in sinks_set: - fill = cfg["SINK_FILL"] - elif nid in inputs_set and nid not in sinks_set: - fill = cfg["INPUT_FILL"] - # ===================== # NODES # =====================