def test_main(): last = time.time() for i in range(100): print 'EXPERIMENT', i, time.time() - last last = time.time() history = RandomHistory(5, 5) avg = history.avg() assert avg.validate() graph = deAVG(avg) assert graph.validate() avg2 = reAVG(graph) assert avg2.validate() assert avg2.isAVG() assert avg2.substitutionCost() >= graph.substitutionCost() assert avg2.rearrangementCost() >= graph.rearrangementCost()
def testCases_random(self): experimentNumber = 10 iterationNumber = 10 last = time.time() experiment = 0 while experiment < experimentNumber: print 'EXPERIMENT', experiment, time.time() - last last = time.time() #Create a random history history = RandomHistory(3, 3) avg = history.avg() #Undo stuff in the first graph baseGraph = deAVG(avg) if baseGraph.substitutionAmbiguity( ) == 0 or baseGraph.rearrangementAmbiguity() == 0: continue def reportGraph(graph, graphName, iteration, step): graph = copy.copy(graph) graph.addFreeRoots() print "\t".join([ "graphName", graphName, "experiment", str(experiment), "iteration", str(iteration), "step", str(step), "ambiguity", str(graph.ambiguity()), "u_s", str(graph.substitutionAmbiguity()), "u_r", str(graph.rearrangementAmbiguity()), "lbsc", str(graph.lowerBoundSubstitutionCost()), "lbrc", str(graph.lowerBoundRearrangementCost()), "ubsc", str(graph.upperBoundSubstitutionCost()), "ubrc", str(graph.upperBoundRearrangementCost()) ]) #Report the starting point reportGraph(avg, "H", "n/a", "n/a") assert avg.validate() #Write stuff about G reportGraph(baseGraph, "G", "n/a", "n/a") assert baseGraph.validate() for iteration in range(iterationNumber): print "Starting iteration", iteration graph = copy.copy(baseGraph) #Undo the ambiguity lBSC = graph.lowerBoundSubstitutionCost() lBRC = graph.lowerBoundRearrangementCost() step = 1 while graph.ambiguity(): reportGraph(graph, "G'", iteration, step) c1EL = listCase1(graph) c2EL = listCase2(graph) #print "There are %s labeling extensions and %s bond extensions" % (len(c1EL), len(c2EL)) chosenExtension = random.choice(c1EL + c2EL) chosenExtension.function(chosenExtension.args) assert graph.validate() assert lBSC <= graph.lowerBoundSubstitutionCost() assert lBRC <= graph.lowerBoundRearrangementCost() lBSC = graph.lowerBoundSubstitutionCost() lBRC = graph.lowerBoundRearrangementCost() step += 1 #Report final AVG reportGraph(graph, "G'", iteration, step) assert graph.validate() assert graph.lowerBoundSubstitutionCost( ) == graph.upperBoundSubstitutionCost() assert graph.lowerBoundRearrangementCost( ) == graph.upperBoundRearrangementCost() for m in graph.modules(): assert m.isSimple() experiment += 1
def testCases_random(self): experimentNumber = 10 iterationNumber = 10 last = time.time() experiment = 0 while experiment < experimentNumber: print 'EXPERIMENT', experiment, time.time() - last last = time.time() #Create a random history history = RandomHistory(3, 3) avg = history.avg() #Undo stuff in the first graph baseGraph = deAVG(avg) if baseGraph.substitutionAmbiguity() == 0 or baseGraph.rearrangementAmbiguity() == 0: continue def reportGraph(graph, graphName, iteration, step): graph = copy.copy(graph) graph.addFreeRoots() print "\t".join([ "graphName", graphName, "experiment", str(experiment), "iteration", str(iteration), "step", str(step), "ambiguity", str(graph.ambiguity()), "u_s", str(graph.substitutionAmbiguity()), "u_r", str(graph.rearrangementAmbiguity()), "lbsc", str(graph.lowerBoundSubstitutionCost()), "lbrc", str(graph.lowerBoundRearrangementCost()), "ubsc", str(graph.upperBoundSubstitutionCost()), "ubrc", str(graph.upperBoundRearrangementCost()) ]) #Report the starting point reportGraph(avg, "H", "n/a", "n/a") assert avg.validate() #Write stuff about G reportGraph(baseGraph, "G", "n/a", "n/a") assert baseGraph.validate() for iteration in range(iterationNumber): print "Starting iteration", iteration graph = copy.copy(baseGraph) #Undo the ambiguity lBSC = graph.lowerBoundSubstitutionCost() lBRC = graph.lowerBoundRearrangementCost() step = 1 while graph.ambiguity(): reportGraph(graph, "G'", iteration, step) c1EL = listCase1(graph) c2EL = listCase2(graph) #print "There are %s labeling extensions and %s bond extensions" % (len(c1EL), len(c2EL)) chosenExtension = random.choice(c1EL + c2EL) chosenExtension.function(chosenExtension.args) assert graph.validate() assert lBSC <= graph.lowerBoundSubstitutionCost() assert lBRC <= graph.lowerBoundRearrangementCost() lBSC = graph.lowerBoundSubstitutionCost() lBRC = graph.lowerBoundRearrangementCost() step += 1 #Report final AVG reportGraph(graph, "G'", iteration, step) assert graph.validate() assert graph.lowerBoundSubstitutionCost() == graph.upperBoundSubstitutionCost() assert graph.lowerBoundRearrangementCost() == graph.upperBoundRearrangementCost() for m in graph.modules(): assert m.isSimple() experiment += 1