In [1]:
import copy
import networkx as nx
from regraph.plotting import (plot_graph)
from regraph.primitives import (add_nodes_from, add_edges_from)
from regraph.category_op import pullback_complement, pushout
In [2]:
g = nx.DiGraph()
add_nodes_from(g,
[
('1', {'name': 'EGFR', 'state': 'p'}),
('2', {'name': 'BND'}),
('3', {'name': 'Grb2', 'aa': 'S', 'loc': 90}),
('4', {'name': 'SH2'}),
('5', {'name': 'EGFR'}),
('6', {'name': 'BND'}),
('7', {'name': 'Grb2'}),
('8', {'name': 'WAF1'}),
('9', {'name': 'BND'}),
('10', {'name': 'G1-S/CDK', 'state': 'p'}),
])
edges = [
('1', '2', {'s': 'p'}),
('4', '2', {'s': 'u'}),
('4', '3'),
('5', '6', {'s': 'p'}),
('7', '6', {'s': 'u'}),
('8', '9'),
('9', '8'),
('10', '8', {"a": {1}}),
('10', '9', {"a": {2}}),
('5', '2', {'s': 'u'})
]
add_edges_from(g, edges)
In [3]:
lhs = nx.DiGraph()
add_nodes_from(
lhs,
[(1, {'state': 'p'}),
(2, {'name': 'BND'}),
3,
4]
)
add_edges_from(
lhs,
[(1, 2, {'s': 'p'}),
(3, 2, {'s': 'u'}),
(3, 4)]
)
p = nx.DiGraph()
add_nodes_from(p,
[(1, {'state': 'p'}),
'1_clone',
(2, {'name': 'BND'}),
3,
4
])
add_edges_from(
p,
[(1, 2),
('1_clone', 2),
(3, 4)
])
rhs = nx.DiGraph()
add_nodes_from(
rhs,
[(1, {'state': 'p'}),
'1_clone',
(2, {'name': 'BND'}),
3,
4,
5
])
add_edges_from(
rhs,
[(1, 2, {'s': 'u'}),
('1_clone', 2),
(2, 4),
(3, 4),
(5, 3)
])
p_lhs = {1: 1, '1_clone': 1, 2: 2, 3: 3, 4: 4}
p_rhs = {1: 1, '1_clone': '1_clone', 2: 2, 3: 3, 4: 4}
instance = {1: '1', 2: '2', 3: '4', 4: '3'}
In [4]:
g_m, p_g_m, g_m_g = pullback_complement(p, lhs, g, p_lhs, instance, inplace=False)
assert(id(g) != id(g_m))
In [5]:
g_backup = copy.deepcopy(g)
g_m, p_g_m, g_m_g = pullback_complement(p, lhs, g_backup, p_lhs, instance, inplace=True)
assert(id(g_m) == id(g_backup))
In [6]:
pos = plot_graph(g)
plot_graph(g_backup, parent_pos=pos)
Out[6]:
In [7]:
g_prime, g_m_g_prime, rhs_g_prime =\
pushout(p, g_backup, rhs, p_g_m, p_rhs, inplace=False)
assert(id(g_prime) != id(g_backup))
In [8]:
g_prime, g_m_g_prime, rhs_g_prime =\
pushout(p, g_backup, rhs, p_g_m, p_rhs, inplace=True)
assert(id(g_prime) == id(g_backup))
In [9]:
pos = plot_graph(g)
plot_graph(g_backup, parent_pos=pos)
Out[9]:
In [ ]: