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()