예제 #1
0
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
예제 #2
0
파일: test_demand.py 프로젝트: rcads/dta
    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")
예제 #3
0
파일: test_network.py 프로젝트: rcads/dta
    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
예제 #4
0
파일: test_network.py 프로젝트: rcads/dta
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
예제 #5
0
파일: test_control.py 프로젝트: rcads/dta
def getTestScenario(): 

    
    prefix = 'smallTestNet' 

    scenario = DynameqScenario(Time(0,0), Time(12,0))
    scenario.read(projectFolder, prefix) 

    return scenario
예제 #6
0
파일: test_network.py 프로젝트: rcads/dta
    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
예제 #7
0
파일: test_demand.py 프로젝트: rcads/dta
    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()]
예제 #8
0
파일: test_utils.py 프로젝트: rcads/dta
    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
예제 #9
0
파일: test_network.py 프로젝트: rcads/dta
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
예제 #10
0
파일: test_network.py 프로젝트: rcads/dta
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
예제 #11
0
파일: test_utils.py 프로젝트: rcads/dta
    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
예제 #12
0
파일: test_network.py 프로젝트: rcads/dta
    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()
예제 #13
0
파일: test_demand.py 프로젝트: rcads/dta
    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
예제 #14
0
파일: test_demand.py 프로젝트: rcads/dta
    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
예제 #15
0
파일: CorridorPlots.py 프로젝트: rcads/dta
    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)
예제 #16
0
파일: test_network.py 프로젝트: rcads/dta
    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")
예제 #17
0
파일: test_demand.py 프로젝트: rcads/dta
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
예제 #18
0
파일: test_utils.py 프로젝트: rcads/dta
    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
예제 #19
0
파일: Demand.py 프로젝트: rcads/dta
    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
예제 #20
0
파일: test_demand.py 프로젝트: rcads/dta
    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")
예제 #21
0
파일: test_demand.py 프로젝트: rcads/dta
    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
예제 #22
0
    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')
예제 #23
0
파일: test_utils.py 프로젝트: rcads/dta
    def test_mod(self):

        t1 = Time(7, 30)

        assert t1 % Time(0, 15) == 0
        assert not t1 % Time(0, 16) == 0