Dateien nach "mod/cyanide" hochladen
This commit is contained in:
parent
3f7799d334
commit
aef4858be1
303
mod/cyanide/cyanideWildcard.py
Normal file
303
mod/cyanide/cyanideWildcard.py
Normal file
@ -0,0 +1,303 @@
|
||||
config.ilp.solver="CPLEX"
|
||||
|
||||
cyanide = Graph.fromGMLString("""graph [
|
||||
node [ id 0 label "H" ]
|
||||
node [ id 1 label "C" ]
|
||||
node [ id 2 label "N" ]
|
||||
edge [ source 0 target 1 label "-" ]
|
||||
edge [ source 1 target 2 label "#" ]
|
||||
]""", name="Cyanide")
|
||||
|
||||
adenine = Graph.fromGMLString(
|
||||
"""graph [
|
||||
node [ id 1 label "C" ]
|
||||
node [ id 2 label "C" ]
|
||||
node [ id 3 label "N" ]
|
||||
node [ id 4 label "C" ]
|
||||
node [ id 5 label "N" ]
|
||||
node [ id 6 label "N" ]
|
||||
node [ id 7 label "C" ]
|
||||
node [ id 8 label "N" ]
|
||||
node [ id 9 label "C" ]
|
||||
node [ id 10 label "N" ]
|
||||
node [ id 11 label "H" ]
|
||||
node [ id 12 label "H" ]
|
||||
node [ id 13 label "H" ]
|
||||
node [ id 14 label "H" ]
|
||||
node [ id 15 label "H" ]
|
||||
edge [ source 6 target 2 label "-" ]
|
||||
edge [ source 2 target 1 label "=" ]
|
||||
edge [ source 1 target 9 label "-" ]
|
||||
edge [ source 9 target 10 label "-" ]
|
||||
edge [ source 10 target 12 label "-" ]
|
||||
edge [ source 10 target 11 label "-" ]
|
||||
edge [ source 9 target 8 label "=" ]
|
||||
edge [ source 8 target 7 label "-" ]
|
||||
edge [ source 7 target 6 label "=" ]
|
||||
edge [ source 2 target 3 label "-" ]
|
||||
edge [ source 4 target 3 label "-" ]
|
||||
edge [ source 5 target 4 label "=" ]
|
||||
edge [ source 1 target 5 label "-" ]
|
||||
edge [ source 4 target 13 label "-" ]
|
||||
edge [ source 7 target 14 label "-" ]
|
||||
edge [ source 15 target 3 label "-" ]
|
||||
]"""
|
||||
, name="Adenine")
|
||||
|
||||
chainN = Rule.fromGMLString(
|
||||
"""rule [
|
||||
left [
|
||||
edge [ source 1 target 2 label "-" ]
|
||||
edge [ source 1 target 3 label "-" ]
|
||||
edge [ source 4 target 5 label "#" ]
|
||||
]
|
||||
context [
|
||||
node [ id 1 label "N" ]
|
||||
node [ id 2 label "H"]
|
||||
node [ id 3 label "H"]
|
||||
node [ id 4 label "C"]
|
||||
node [ id 5 label "N"]
|
||||
]
|
||||
right [
|
||||
edge [ source 1 target 4 label "=" ]
|
||||
edge [ source 4 target 5 label "-" ]
|
||||
edge [ source 5 target 2 label "-" ]
|
||||
edge [ source 5 target 3 label "-" ]
|
||||
]
|
||||
]"""
|
||||
)
|
||||
|
||||
chainC = Rule.fromGMLString(
|
||||
"""rule [
|
||||
left [
|
||||
edge [ source 1 target 2 label "-" ]
|
||||
edge [ source 1 target 3 label "-" ]
|
||||
edge [ source 3 target 4 label "#" ]
|
||||
edge [ source 5 target 7 label "-" ]
|
||||
]
|
||||
context [
|
||||
node [ id 1 label "C" ]
|
||||
node [ id 2 label "H"]
|
||||
node [ id 3 label "C"]
|
||||
node [ id 4 label "N"]
|
||||
node [ id 5 label "H"]
|
||||
node [ id 6 label "H"]
|
||||
node [ id 7 label "N"]
|
||||
edge [ source 6 target 7 label "-" ]
|
||||
]
|
||||
right [
|
||||
edge [ source 1 target 3 label "=" ]
|
||||
edge [ source 3 target 4 label "-" ]
|
||||
edge [ source 3 target 7 label "-" ]
|
||||
edge [ source 4 target 2 label "-" ]
|
||||
edge [ source 4 target 5 label "-" ]
|
||||
]
|
||||
]"""
|
||||
)
|
||||
|
||||
branchtriple = Rule.fromGMLString(
|
||||
"""rule [
|
||||
left [
|
||||
edge [ source 2 target 3 label "#" ]
|
||||
edge [ source 5 target 6 label "-" ]
|
||||
]
|
||||
context [
|
||||
node [ id 1 label "_" ]
|
||||
node [ id 2 label "C"]
|
||||
node [ id 3 label "N"]
|
||||
node [ id 4 label "N"]
|
||||
node [ id 5 label "C"]
|
||||
node [ id 6 label "_"]
|
||||
edge [ source 1 target 2 label "-" ]
|
||||
edge [ source 4 target 5 label "#" ]
|
||||
]
|
||||
right [
|
||||
edge [ source 2 target 3 label "=" ]
|
||||
edge [ source 3 target 6 label "-" ]
|
||||
edge [ source 2 target 5 label "-" ]
|
||||
]
|
||||
constrainLabelAny [ label "_" labels [ label "H" label "C" ] ]
|
||||
]"""
|
||||
)
|
||||
|
||||
branchdouble = Rule.fromGMLString(
|
||||
"""rule [
|
||||
left [
|
||||
edge [ source 2 target 3 label "=" ]
|
||||
edge [ source 5 target 6 label "-" ]
|
||||
]
|
||||
context [
|
||||
node [ id 1 label "_" ]
|
||||
node [ id 2 label "C"]
|
||||
node [ id 3 label "N"]
|
||||
node [ id 4 label "N"]
|
||||
node [ id 5 label "C"]
|
||||
node [ id 6 label "_"]
|
||||
edge [ source 1 target 2 label "-" ]
|
||||
edge [ source 4 target 5 label "#" ]
|
||||
]
|
||||
right [
|
||||
edge [ source 2 target 3 label "-" ]
|
||||
edge [ source 3 target 6 label "-" ]
|
||||
edge [ source 2 target 5 label "-" ]
|
||||
]
|
||||
constrainLabelAny [ label "_" labels [ label "H" label "C" ] ]
|
||||
]"""
|
||||
)
|
||||
|
||||
#branchtripleH = Rule.fromGMLString(
|
||||
"""rule [
|
||||
left [
|
||||
edge [ source 2 target 3 label "#" ]
|
||||
edge [ source 5 target 6 label "-" ]
|
||||
]
|
||||
context [
|
||||
node [ id 1 label "H"]
|
||||
node [ id 2 label "C"]
|
||||
node [ id 3 label "N"]
|
||||
node [ id 4 label "N"]
|
||||
node [ id 5 label "C"]
|
||||
node [ id 6 label "H"]
|
||||
edge [ source 1 target 2 label "-" ]
|
||||
edge [ source 4 target 5 label "#" ]
|
||||
]
|
||||
right [
|
||||
edge [ source 2 target 3 label "=" ]
|
||||
edge [ source 3 target 6 label "-" ]
|
||||
edge [ source 2 target 5 label "-" ]
|
||||
]
|
||||
]"""
|
||||
#)
|
||||
|
||||
#branchdoubleH = Rule.fromGMLString(
|
||||
"""rule [
|
||||
left [
|
||||
edge [ source 2 target 3 label "=" ]
|
||||
edge [ source 5 target 6 label "-" ]
|
||||
]
|
||||
context [
|
||||
node [ id 1 label "H"]
|
||||
node [ id 2 label "C"]
|
||||
node [ id 3 label "N"]
|
||||
node [ id 4 label "N"]
|
||||
node [ id 5 label "C"]
|
||||
node [ id 6 label "H"]
|
||||
edge [ source 1 target 2 label "-" ]
|
||||
edge [ source 4 target 5 label "#" ]
|
||||
]
|
||||
right [
|
||||
edge [ source 2 target 3 label "-" ]
|
||||
edge [ source 3 target 6 label "-" ]
|
||||
edge [ source 2 target 5 label "-" ]
|
||||
]
|
||||
]"""
|
||||
#)
|
||||
|
||||
#branchtripleC = Rule.fromGMLString(
|
||||
"""rule [
|
||||
left [
|
||||
edge [ source 2 target 3 label "#" ]
|
||||
edge [ source 5 target 6 label "-" ]
|
||||
]
|
||||
context [
|
||||
node [ id 1 label "H"]
|
||||
node [ id 2 label "C"]
|
||||
node [ id 3 label "N"]
|
||||
node [ id 4 label "N"]
|
||||
node [ id 5 label "C"]
|
||||
node [ id 6 label "C"]
|
||||
edge [ source 1 target 2 label "-" ]
|
||||
edge [ source 4 target 5 label "#" ]
|
||||
]
|
||||
right [
|
||||
edge [ source 2 target 3 label "=" ]
|
||||
edge [ source 3 target 6 label "-" ]
|
||||
edge [ source 2 target 5 label "-" ]
|
||||
]
|
||||
]"""
|
||||
#)
|
||||
|
||||
#branchdoubleC = Rule.fromGMLString(
|
||||
"""rule [
|
||||
left [
|
||||
edge [ source 2 target 3 label "=" ]
|
||||
edge [ source 5 target 6 label "-" ]
|
||||
]
|
||||
context [
|
||||
node [ id 1 label "H"]
|
||||
node [ id 2 label "C"]
|
||||
node [ id 3 label "N"]
|
||||
node [ id 4 label "N"]
|
||||
node [ id 5 label "C"]
|
||||
node [ id 6 label "C"]
|
||||
edge [ source 1 target 2 label "-" ]
|
||||
edge [ source 4 target 5 label "#" ]
|
||||
]
|
||||
right [
|
||||
edge [ source 2 target 3 label "-" ]
|
||||
edge [ source 3 target 6 label "-" ]
|
||||
edge [ source 2 target 5 label "-" ]
|
||||
]
|
||||
]"""
|
||||
#)
|
||||
|
||||
def restriction(dg):
|
||||
for a in dg.right:
|
||||
if a.vLabelCount("C") + a.vLabelCount("N") > 8:
|
||||
return False
|
||||
return True
|
||||
|
||||
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,
|
||||
labelSettings=LabelSettings(
|
||||
LabelType.Term,
|
||||
LabelRelation.Specialisation,
|
||||
LabelRelation.Specialisation))
|
||||
dg.build().execute(
|
||||
addSubset(inputGraphs)
|
||||
>> rightPredicate[
|
||||
restriction
|
||||
](
|
||||
repeat(revive(inputRules)) #Revive not necessary
|
||||
)
|
||||
)
|
||||
dg.print()
|
||||
postSection("Product Graphs")
|
||||
for a in dg.vertices:
|
||||
a.graph.print()
|
||||
|
||||
flow = Flow(dg)
|
||||
flow.addSource(cyanide)
|
||||
flow.addSink(adenine)
|
||||
flow.findSolutions(maxNumSolutions=2)
|
||||
#flow.findSolutions()
|
||||
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()
|
||||
Loading…
x
Reference in New Issue
Block a user