352 lines
9.5 KiB
Python
352 lines
9.5 KiB
Python
config.ilp.solver="CPLEX"
|
|
|
|
phenylalanine = Graph.fromGMLString(
|
|
"""
|
|
graph [
|
|
node [ id 1 label "C" ]
|
|
node [ id 2 label "C" ]
|
|
node [ id 3 label "C" ]
|
|
node [ id 4 label "C" ]
|
|
node [ id 5 label "C" ]
|
|
node [ id 6 label "C" ]
|
|
node [ id 7 label "H" ]
|
|
node [ id 8 label "H" ]
|
|
node [ id 9 label "H" ]
|
|
node [ id 10 label "H" ]
|
|
node [ id 11 label "H" ]
|
|
node [ id 12 label "C" ]
|
|
node [ id 13 label "H" ]
|
|
node [ id 14 label "H" ]
|
|
node [ id 15 label "C" ]
|
|
node [ id 16 label "C" ]
|
|
node [ id 17 label "O" ]
|
|
node [ id 18 label "O" ]
|
|
node [ id 19 label "H" ]
|
|
node [ id 20 label "N" ]
|
|
node [ id 21 label "H" ]
|
|
node [ id 22 label "H" ]
|
|
node [ id 23 label "H" ]
|
|
edge [ source 6 target 1 label ":" ]
|
|
edge [ source 1 target 7 label "-" ]
|
|
edge [ source 1 target 2 label ":" ]
|
|
edge [ source 2 target 8 label "-" ]
|
|
edge [ source 2 target 3 label ":" ]
|
|
edge [ source 3 target 9 label "-" ]
|
|
edge [ source 3 target 4 label ":" ]
|
|
edge [ source 4 target 10 label "-" ]
|
|
edge [ source 4 target 5 label ":" ]
|
|
edge [ source 5 target 11 label "-" ]
|
|
edge [ source 5 target 6 label ":" ]
|
|
edge [ source 6 target 12 label "-" ]
|
|
edge [ source 12 target 13 label "-" ]
|
|
edge [ source 12 target 14 label "-" ]
|
|
edge [ source 12 target 15 label "-" ]
|
|
edge [ source 15 target 16 label "-" ]
|
|
edge [ source 16 target 17 label "-" ]
|
|
edge [ source 16 target 18 label "=" ]
|
|
edge [ source 17 target 19 label "-" ]
|
|
edge [ source 21 target 20 label "-" ]
|
|
edge [ source 20 target 22 label "-" ]
|
|
edge [ source 20 target 15 label "-" ]
|
|
edge [ source 15 target 23 label "-" ]
|
|
]
|
|
"""
|
|
, name="Phenylalanine")
|
|
|
|
noradrenalin = Graph.fromGMLString(
|
|
"""
|
|
graph [
|
|
node [ id 1 label "C" ]
|
|
node [ id 2 label "C" ]
|
|
node [ id 3 label "C" ]
|
|
node [ id 4 label "C" ]
|
|
node [ id 5 label "C" ]
|
|
node [ id 6 label "C" ]
|
|
node [ id 7 label "H" ]
|
|
node [ id 8 label "O" ]
|
|
node [ id 9 label "O" ]
|
|
node [ id 10 label "H" ]
|
|
node [ id 11 label "H" ]
|
|
node [ id 12 label "C" ]
|
|
node [ id 13 label "O" ]
|
|
node [ id 14 label "H" ]
|
|
node [ id 15 label "C" ]
|
|
node [ id 20 label "N" ]
|
|
node [ id 21 label "H" ]
|
|
node [ id 22 label "H" ]
|
|
node [ id 23 label "H" ]
|
|
node [ id 24 label "H" ]
|
|
node [ id 25 label "H" ]
|
|
node [ id 26 label "H" ]
|
|
node [ id 27 label "H" ]
|
|
edge [ source 6 target 1 label ":" ]
|
|
edge [ source 1 target 7 label "-" ]
|
|
edge [ source 1 target 2 label ":" ]
|
|
edge [ source 2 target 8 label "-" ]
|
|
edge [ source 2 target 3 label ":" ]
|
|
edge [ source 3 target 9 label "-" ]
|
|
edge [ source 3 target 4 label ":" ]
|
|
edge [ source 4 target 10 label "-" ]
|
|
edge [ source 4 target 5 label ":" ]
|
|
edge [ source 5 target 11 label "-" ]
|
|
edge [ source 5 target 6 label ":" ]
|
|
edge [ source 6 target 12 label "-" ]
|
|
edge [ source 12 target 13 label "-" ]
|
|
edge [ source 12 target 14 label "-" ]
|
|
edge [ source 12 target 15 label "-" ]
|
|
edge [ source 21 target 20 label "-" ]
|
|
edge [ source 20 target 22 label "-" ]
|
|
edge [ source 20 target 15 label "-" ]
|
|
edge [ source 15 target 23 label "-" ]
|
|
edge [ source 15 target 24 label "-" ]
|
|
edge [ source 13 target 25 label "-" ]
|
|
edge [ source 8 target 27 label "-" ]
|
|
edge [ source 9 target 26 label "-" ]
|
|
]"""
|
|
, name="Noradrenalin")
|
|
|
|
vanilline = Graph.fromGMLString(
|
|
"""
|
|
graph [
|
|
node [ id 1 label "C" ]
|
|
node [ id 2 label "C" ]
|
|
node [ id 3 label "C" ]
|
|
node [ id 4 label "C" ]
|
|
node [ id 5 label "C" ]
|
|
node [ id 6 label "C" ]
|
|
node [ id 7 label "O" ]
|
|
node [ id 8 label "O" ]
|
|
node [ id 9 label "H" ]
|
|
node [ id 10 label "H" ]
|
|
node [ id 11 label "C" ]
|
|
node [ id 12 label "O" ]
|
|
node [ id 13 label "H" ]
|
|
node [ id 19 label "H" ]
|
|
node [ id 20 label "H" ]
|
|
node [ id 21 label "H" ]
|
|
edge [ source 9 target 8 label "-" ]
|
|
edge [ source 8 target 2 label "-" ]
|
|
edge [ source 10 target 7 label "-" ]
|
|
edge [ source 7 target 3 label "-" ]
|
|
edge [ source 3 target 2 label ":" ]
|
|
edge [ source 2 target 1 label ":" ]
|
|
edge [ source 1 target 6 label ":" ]
|
|
edge [ source 6 target 5 label ":" ]
|
|
edge [ source 5 target 4 label ":" ]
|
|
edge [ source 4 target 3 label ":" ]
|
|
edge [ source 6 target 11 label "-" ]
|
|
edge [ source 11 target 13 label "-" ]
|
|
edge [ source 11 target 12 label "=" ]
|
|
edge [ source 19 target 1 label "-" ]
|
|
edge [ source 5 target 21 label "-" ]
|
|
edge [ source 4 target 20 label "-" ]
|
|
]
|
|
"""
|
|
, name="Vanilline")
|
|
|
|
cinnamon = Graph.fromGMLString(
|
|
"""
|
|
graph [
|
|
node [ id 1 label "C" ]
|
|
node [ id 2 label "C" ]
|
|
node [ id 3 label "C" ]
|
|
node [ id 4 label "C" ]
|
|
node [ id 5 label "C" ]
|
|
node [ id 6 label "C" ]
|
|
node [ id 7 label "H" ]
|
|
node [ id 8 label "H" ]
|
|
node [ id 9 label "H" ]
|
|
node [ id 10 label "H" ]
|
|
node [ id 11 label "H" ]
|
|
node [ id 12 label "C" ]
|
|
node [ id 15 label "C" ]
|
|
node [ id 28 label "H" ]
|
|
node [ id 29 label "H" ]
|
|
node [ id 30 label "C" ]
|
|
node [ id 31 label "O" ]
|
|
node [ id 32 label "O" ]
|
|
node [ id 33 label "H" ]
|
|
edge [ source 6 target 1 label ":" ]
|
|
edge [ source 1 target 7 label "-" ]
|
|
edge [ source 1 target 2 label ":" ]
|
|
edge [ source 2 target 8 label "-" ]
|
|
edge [ source 2 target 3 label ":" ]
|
|
edge [ source 3 target 9 label "-" ]
|
|
edge [ source 3 target 4 label ":" ]
|
|
edge [ source 4 target 10 label "-" ]
|
|
edge [ source 4 target 5 label ":" ]
|
|
edge [ source 5 target 11 label "-" ]
|
|
edge [ source 5 target 6 label ":" ]
|
|
edge [ source 6 target 12 label "-" ]
|
|
edge [ source 12 target 15 label "=" ]
|
|
edge [ source 12 target 28 label "-" ]
|
|
edge [ source 15 target 29 label "-" ]
|
|
edge [ source 15 target 30 label "-" ]
|
|
edge [ source 30 target 32 label "=" ]
|
|
edge [ source 30 target 31 label "-" ]
|
|
edge [ source 31 target 33 label "-" ]
|
|
]
|
|
"""
|
|
, name="Cinnamon")
|
|
|
|
|
|
|
|
hydroxylation = Rule.fromGMLString(
|
|
"""
|
|
rule [
|
|
left [
|
|
node [ id 1 label "H" ]
|
|
edge [ source 1 target 2 label "-" ]
|
|
]
|
|
context [
|
|
node [ id 2 label "C" ]
|
|
]
|
|
right [
|
|
node [ id 3 label "O" ]
|
|
node [ id 4 label "H" ]
|
|
edge [ source 2 target 3 label "-" ]
|
|
edge [ source 3 target 4 label "-" ]
|
|
]
|
|
]
|
|
"""
|
|
)
|
|
|
|
#hydroxylation = Rule.fromGMLString(
|
|
"""
|
|
rule [
|
|
left [
|
|
node [ id 1 label "H" ]
|
|
edge [ source 1 target 2 label "-" ]
|
|
]
|
|
context [
|
|
node [ id 2 label "C" ]
|
|
node [ id 3 label "C" ]
|
|
node [ id 4 label "C" ]
|
|
edge [ source 2 target 3 label ":" ]
|
|
edge [ source 2 target 4 label ":" ]
|
|
]
|
|
right [
|
|
node [ id 5 label "O" ]
|
|
node [ id 6 label "H" ]
|
|
edge [ source 2 target 5 label "-" ]
|
|
edge [ source 5 target 6 label "-" ]
|
|
]
|
|
]
|
|
"""
|
|
#)
|
|
|
|
decarboxylation = Rule.fromGMLString(
|
|
"""
|
|
rule [
|
|
left [
|
|
node [ id 1 label "C" ]
|
|
node [ id 2 label "O" ]
|
|
node [ id 3 label "O" ]
|
|
node [ id 4 label "H" ]
|
|
edge [ source 1 target 2 label "=" ]
|
|
edge [ source 1 target 3 label "-" ]
|
|
edge [ source 3 target 4 label "-" ]
|
|
edge [ source 1 target 5 label "-" ]
|
|
]
|
|
context [
|
|
node [ id 5 label "C" ]
|
|
]
|
|
right [
|
|
node [ id 6 label "H" ]
|
|
edge [ source 5 target 6 label "-" ]
|
|
]
|
|
]
|
|
"""
|
|
)
|
|
|
|
###aldehydation = Rule.fromGMLString(
|
|
"""
|
|
rule [
|
|
left [
|
|
node [ id 3 label "C" ]
|
|
node [ id 4 label "H" ]
|
|
node [ id 5 label "C" ]
|
|
node [ id 8 label "H" ]
|
|
node [ id 7 label "O" ]
|
|
node [ id 6 label "O" ]
|
|
edge [ source 1 target 3 label "=" ]
|
|
edge [ source 8 target 7 label "-" ]
|
|
edge [ source 7 target 5 label "-" ]
|
|
edge [ source 5 target 6 label "=" ]
|
|
edge [ source 5 target 3 label "-" ]
|
|
edge [ source 3 target 4 label "-" ]
|
|
]
|
|
context [
|
|
node [ id 1 label "C" ]
|
|
]
|
|
right [
|
|
node [ id 2 label "O" ]
|
|
edge [ source 1 target 2 label "=" ]
|
|
]
|
|
]
|
|
"""
|
|
#)
|
|
|
|
|
|
flowPrinter = FlowPrinter()
|
|
flowPrinter.printUnfiltered = False
|
|
|
|
postSection("Loaded Graphs")
|
|
for a in inputGraphs:
|
|
a.print()
|
|
postSection("Loaded Rules")
|
|
for a in inputRules:
|
|
a.print()
|
|
|
|
dg = DG(graphDatabase=inputGraphs)
|
|
dg.build().execute(
|
|
addSubset(inputGraphs)
|
|
>>repeat(inputRules)
|
|
)
|
|
|
|
#rightPredicate[
|
|
# lambda d: all(g.vLabelCount("C") <= 30 for g in d.right)
|
|
# ](
|
|
dg.print()
|
|
postSection("Product Graphs")
|
|
for a in dg.vertices:
|
|
a.graph.print()
|
|
|
|
flow = Flow(dg)
|
|
|
|
flow.addSource(cinnamon)
|
|
flow.addSink(vanilline)
|
|
#Vanilla has 6
|
|
flow.findSolutions(maxNumSolutions=7)
|
|
#flow.addConstraint(inFlow(cinnamon) == 1)
|
|
#flow.addConstraint(outFlow(vanilline) == 1)
|
|
|
|
'''
|
|
flow.addSource(phenylalanine)
|
|
flow.addSink(noradrenalin)
|
|
#Dopamine has 24
|
|
flow.findSolutions(maxNumSolutions=25)
|
|
#flow.addConstraint(inFlow(phenylalanine) == 1)
|
|
#flow.addConstraint(outFlow(noradrenalin) == 1)
|
|
'''
|
|
flow.solutions.list()
|
|
flow.solutions.print(flowPrinter)
|
|
|
|
|
|
sys.exit(0)
|
|
|
|
rc = rcEvaluator(inputRules)
|
|
for dRef in dg.derivations:
|
|
der = dRef.derivation
|
|
educt = rcId(der.left[0])
|
|
for i in range(1, len(der.left)):
|
|
educt = educt *rcParallel* rcId(der.left[i])
|
|
product = rcId(der.right[0])
|
|
for i in range(1, len(der.right)):
|
|
product = product *rcParallel* rcId(der.right[i])
|
|
rcExp = educt *rcSuper(allowPartial=False)* der.rule *rcSuper(allowPartial=False)* product
|
|
res = rc.eval(rcExp)
|
|
dRef.print()
|
|
for a in res:
|
|
a.print()
|
|
a.printGML() |