From be39d52d128f8a9ac665e5efe517f0f683f42e72 Mon Sep 17 00:00:00 2001 From: kilian Date: Mon, 21 Sep 2026 11:59:53 +0200 Subject: [PATCH] Vanilline Mod File --- mod/Vanille/hydroxylation.py | 200 +++++++++++++++++++++++++++++++++++ 1 file changed, 200 insertions(+) create mode 100644 mod/Vanille/hydroxylation.py diff --git a/mod/Vanille/hydroxylation.py b/mod/Vanille/hydroxylation.py new file mode 100644 index 0000000..5d21ea0 --- /dev/null +++ b/mod/Vanille/hydroxylation.py @@ -0,0 +1,200 @@ +config.ilp.solver="CPLEX" + +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" ] + 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 "-" ] + ] +] +""" +) + + +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) +) + +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() \ No newline at end of file