def test_paths(projectFolder, prefix, path_list): scenario = dta.DynameqScenario(Time(0, 0), Time(12, 0)) scenario.read(projectFolder, prefix) net = dta.DynameqNetwork(scenario) net.read(projectFolder, prefix) TEST_PATHS = { "geary": [], "downtown": [{ "name": "Mission St from 8th St to 1st St", "street": "3rd St", "from": "Folsom St", "to": "Mission St", "answer": [2150, 9001847, 9001848, 9001871, 9001872, 2214] }], } TEST_PATHS["sf"] = TEST_PATHS["geary"] + TEST_PATHS["downtown"] paths = TEST_PATHS[path_list] for p in paths: intersection_list = [[p["street"].upper(), p["from"].upper()], [p["street"].upper(), p["to"].upper()]] testPath = Path.createPath(net, p["name"], intersection_list) testPathLinkList = [l.getId() for l in testPath.iterLinks()] print "CODE GOT :", testPathLinkList print "ANSWER IS:", p['answer'] assert p['answer'] == testPathLinkList
def NOtest_rounding(self): """ This method writes histograms of the input demand and can be used to check the differences of the row and column sums for two matrices """ projectFolder = "/Users/michalis/Documents/sfcta/testNetworks" projectFolder = "/Users/michalis/Documents/sfcta/05252012/" prefix = "sfCounty_lisa" prefix = "SF_Test_wSig_5_100pct_NetworkReview" scenario = DynameqScenario(Time(0, 0), Time(12, 0)) scenario.read(projectFolder, prefix) net = DynameqNetwork(scenario) net.read(projectFolder, prefix) file1 = "/Users/michalis/Documents/sfcta/05252012/car_notoll_matx.dqt" demand1 = Demand.readDynameqTable(net, file1) _npyArray1 = demand1._demandTable.getNumpyArray() * 3 file2 = "/Users/michalis/Documents/sfcta/05252012/vehcountorig_Car_NoToll_matx.dqt" demand2 = Demand.readDynameqTable(net, file2) pdb.set_trace() _npyArray1 = _npyArray1.sum(0) _npyArray2 = demand2._demandTable.getNumpyArray().sum(0) pdb.set_trace() plotTripHistogram(_npyArray1, "carNoTollHistogram1") plotTripHistogram(_npyArray2, "carNoTollHistogram2")
def test_1iterPlanInfo(self): net = getSimpleNet() net.addPlanCollectionInfo(Time(7, 0), Time(9, 0), "test1", "test1") net.addPlanCollectionInfo(Time(6, 0), Time(8, 0), "test2", "test2") for pInfo in net.iterPlanCollectionInfo(): pInfo
def getTestScenario(): projectFolder = os.path.join(mainFolder, 'dynameqNetwork_gearySubset') prefix = 'smallTestNet' scenario = DynameqScenario(Time(0, 0), Time(12, 0)) scenario.read(projectFolder, prefix) return scenario
def getTestScenario(): prefix = 'smallTestNet' scenario = DynameqScenario(Time(0,0), Time(12,0)) scenario.read(projectFolder, prefix) return scenario
def test_getPlanInfo(self): net = getSimpleNet() net.addPlanCollectionInfo(Time(7, 0), Time(9, 0), "test1", "test1") pi = net.getPlanCollectionInfo(Time(7, 0), Time(9, 0)) start, end = pi.getTimePeriod() assert start.getMinutes() == 7 * 60 assert end.getMinutes() == 9 * 60
def test_1getTimePeriods(self): net = getTestNet() startTime = Time(8, 30) endTime = Time(9, 30) timeStep = Time(0, 15) demand = Demand(net, "Default", startTime, endTime, timeStep) print[tp for tp in demand.iterTimePeriods()]
def test_cmp(self): t1 = Time(7, 30) t2 = Time(7, 45) t3 = Time(7, 30) assert t1 < t2 assert not t1 < t3 assert t1 == t3 assert t1 != t2
def getDowntownSF(): projectFolder = os.path.join(mainFolder, 'dynameqNetwork_downtownSF') prefix = 'sfDowntown' scenario = DynameqScenario(Time(0, 0), Time(12, 0)) scenario.read(projectFolder, prefix) net = DynameqNetwork(scenario) net.read(projectFolder, prefix) return net
def getCubeSubarea(): projectFolder = os.path.join(mainFolder, 'cubeSubarea_downtownSF/dynameqNetwork') prefix = 'sf' scenario = DynameqScenario(Time(0, 0), Time(12, 0)) scenario.read(projectFolder, prefix) net = DynameqNetwork(scenario) net.read(projectFolder, prefix) return net
def test_hash(self): t1 = Time(7, 30) t2 = t1 + Time(0, 15) t3 = Time(7, 30) result = {} result[t1] = 1 result[t2] = 2 result[t3] = 3 print result
def test_readScenario(self): net = getGearySubNet() projectFolder = os.path.join(mainFolder, 'dynameqNetwork_gearySubset') prefix = 'smallTestNet' sc = DynameqScenario(Time(0, 0), Time(12, 0)) sc.read(projectFolder, prefix) assert 'All' in sc.vehicleClassGroups.keys() assert 'Transit' in sc.vehicleClassGroups.keys() assert 'Prohibited' in sc.vehicleClassGroups.keys()
def test_readCubeDemand(self): fileName = os.path.join(os.path.dirname(__file__), '..', 'testdata', 'dynameqNetwork_gearySubset', 'cubeTestDemand.txt') net = getTestNet() demand = Demand.readCubeODTable(fileName, net, "AUTO", Time(7, 0), Time(8, 0)) assert demand.getValue(Time(8, 0), 2, 6) == 1000 assert demand.getValue(Time(8, 0), 6, 2) == 4000
def NOtest_applyTimeOfDayFactors(self): fileName = os.path.join(os.path.dirname(__file__), '..', 'testdata', 'dynameqNetwork_gearySubset', 'cubeTestDemand.txt') net = getTestNet() demand = Demand.readCubeODTable(fileName, net, "AUTO", Time(7, 0), Time(8, 0)) d2 = demand.applyTimeOfDayFactors([0.5, 0.5]) assert d2.getValue(730, 2, 6) == 500 assert d2.getValue(800, 2, 6) == 500
def getVolumesAlongCorridor(self, startTimeInMin, endTimeInMin): """Generator method that returns the edge, leftTurn and right turn volumes for all the links on the route """ linkOutVolumes = [] linkInVolumes = [] leftTurnVolumes = [] rightTurnVolumes = [] thruCapacities = [] start = Time(startTimeInMin / 60, startTimeInMin % 60) end = Time(endTimeInMin / 60, endTimeInMin % 60) if self._net.hasPlanCollectionInfo(start, end): planInfo = self._net.getPlanCollectionInfo(start, end) else: planInfo = None for edge in self._path.iterLinks(): edgeVolume = edge.getSimOutVolume(startTimeInMin, endTimeInMin) edgeInVolume = edge.getSimInVolume(startTimeInMin, endTimeInMin) leftTurnVolume = 0 rightTurnVolume = 0 if edge.hasLeftTurn(): leftTurn = edge.getLeftTurn() leftTurnVolume = leftTurn.getSimOutVolume( startTimeInMin, endTimeInMin) else: leftTurn = 0 if edge.hasRightTurn(): rightTurn = edge.getRightTurn() rightTurnVolume = rightTurn.getSimOutVolume( startTimeInMin, endTimeInMin) else: rightTurn = 0 if edge.hasThruTurn() and planInfo: thruTurn = edge.getThruTurn() try: thruCapacity = thruTurn.getCapacity(planInfo=planInfo) except DtaError, e: thruCapacity = 0 else: thruCapacity = 0 linkOutVolumes.append(edgeVolume) linkInVolumes.append(edgeInVolume) leftTurnVolumes.append(leftTurnVolume) rightTurnVolumes.append(rightTurnVolume) thruCapacities.append(thruCapacity)
def test_readWrite(self): projectFolder = os.path.join(os.path.dirname(__file__), '..', "test") prefix = 'test' scenario = DynameqScenario(Time(0, 0), Time(12, 0)) scenario.read(projectFolder, prefix) net = DynameqNetwork(scenario) net.read(projectFolder, prefix) net.write("test", "crossHair") net.moveCentroidConnectorsFromIntersectionsToMidblocks() net.write("test", "crossHair3")
def getTestNet(): projectFolder = os.path.join(os.path.dirname(__file__), '..', 'testdata', 'dynameqNetwork_gearySubset') prefix = 'smallTestNet' scenario = DynameqScenario(Time(0, 0), Time(12, 0)) scenario.read(projectFolder, prefix) #nose.tools.set_trace() dta.VehicleType.LENGTH_UNITS = "feet" dta.Node.COORDINATE_UNITS = "feet" dta.RoadLink.LENGTH_UNITS = "miles" net = DynameqNetwork(scenario) net.read(projectFolder, prefix) return net
def test_addAndSubstract(self): t1 = Time(7, 30) t2 = t1 + Time(0, 15) assert t2 == Time(7, 45) t3 = t2 + Time(0, 15) assert t3 == Time(8, 0) assert t2 == t3 - Time(0, 15) assert t1.getMinutes() == 7 * 60 + 30
def _getTimePeriods(self, startTime, endTime, timeStep): """ Return the time labels of the different time slices as a list of :py:class:`dta.Utils.Time` instances. Each time in the list is the *end* of the time slice. """ if ((endTime - startTime) % timeStep) != 0: raise DtaError( "Demand interval is not divisible by the demand time step") result = [] #TODO: this is interesting. The following line fails #time = copy.deepcopy(startTime) time = Time(startTime.hour, startTime.minute) while time != endTime: time += timeStep result.append(time) return result
def test_plotHistogram(self): fileName = os.path.join(os.path.dirname(__file__), '..', 'testdata', 'dynameqNetwork_gearySubset', 'gearysubnet_matx.dqt') net = getTestNet() demand = Demand.readDynameqTable(net, fileName) for startTime in range(0, 45, 15): for o in net.iterCentroids(): for d in net.iterCentroids(): demand.setValue(Time(0, startTime + 15), o.getId(), d.getId(), random.random() * 10) _npyArray = demand._demandTable.getNumpyArray() plotTripHistogram(_npyArray, "tripHistogram")
def test_1read(self): fileName = os.path.join(os.path.dirname(__file__), '..', 'testdata', 'dynameqNetwork_gearySubset', 'gearysubnet_matx.dqt') net = getTestNet() demand = Demand.readDynameqTable(net, fileName) assert demand.getNumSlices() == 4 assert demand.getValue(Time(0, 15), 56, 8) == 4000 assert demand.getValue(Time(0, 45), 8, 2) == 34 demand.setValue(Time(0, 45), 8, 2, 35) assert demand.getValue(Time(0, 45), 8, 2) == 35 demand.setValue(Time(0, 15), 56, 8, 4001) assert not demand.getValue(Time(0, 15), 56, 8) == 4000 assert demand.getValue(Time(0, 15), 56, 8) == 4001
def test_volumes(self): net = getGearySubNet() net.addPlanCollectionInfo(Time(7, 0), Time(9, 0), "test1", "test1") pi = net.getPlanCollectionInfo(Time(7, 0), Time(9, 0)) node = net.getNodeForId(25956) for link in node.iterIncomingLinks(): for mov in link.iterOutgoingMovements(): if mov.isUTurn(): link.prohibitOutgoingMovement(mov) tp = dta.TimePlan(node, 0, pi) p1 = dta.Phase(tp, 40, 3, 2) p1Movs = [mov for mov in net.getLinkForId(101674).iterOutgoingMovements()] p1Movs.extend([mov for mov in net.getLinkForId(14597).iterOutgoingMovements()]) for mov in p1Movs: pMov = PhaseMovement(mov, 1) if pMov.getMovement().isUTurn(): continue if mov.isLeftTurn(): pMov.setPermitted() p1.addPhaseMovement(pMov) p2 = dta.Phase(tp, 40, 3, 2) p2Movs = [mov for mov in net.getLinkForId(14620).iterOutgoingMovements()] p2Movs.extend([mov for mov in net.getLinkForId(14582).iterOutgoingMovements()]) for mov in p2Movs: pMov = PhaseMovement(mov, 1) if pMov.getMovement().isUTurn(): continue if mov.isLeftTurn(): pMov.setPermitted() p2.addPhaseMovement(pMov) tp.addPhase(p1) tp.addPhase(p2) node.addTimePlan(tp) mov = net.getLinkForId(101674).getOutgoingMovement(25958) mov.getProtectedCapacity(planInfo=pi) net.writeLinksToShp("gearySubnet_links") net.writeNodesToShp("gearySubnet_nodes") link1 = net.getLinkForId(14834) link2 = net.getLinkForId(14539) pathLinks = dta.Algorithms.ShortestPaths.getShortestPathBetweenLinks(net, link1, link2, runSP=True) path = dta.Path(net, "test", pathLinks) print [link.getId() for link in pathLinks] volumesVsCounts = dta.CorridorPlots.CountsVsVolumes(net, path, False) #VC = VolumesVsCounts(net, path, False) names = volumesVsCounts.getIntersectionNames() locations = volumesVsCounts.getIntersectionLocations() volumes = volumesVsCounts.getVolumesAlongCorridor(0, 60) volumes2 = volumesVsCounts.getMovementVolumesCrossingCorridor(0, 60) print volumes2 print "names=", volumesVsCounts.getIntersectionNames() print "locations=", volumesVsCounts.getIntersectionLocations() print "volumes=", volumesVsCounts.getVolumesAlongCorridor(0, 60) volumesVsCounts.writeVolumesVsCounts(0, 60, 'testplot2')
def test_mod(self): t1 = Time(7, 30) assert t1 % Time(0, 15) == 0 assert not t1 % Time(0, 16) == 0