class TestReconcileModel(unittest.TestCase): def setUp(self): self.data = genfromtxt("/home/kkonduri/simtravel/test/mag_zone/schedule_txt.csv", delimiter=",", dtype=int) colNames = [ "houseid", "personid", "scheduleid", "activitytype", "locationid", "starttime", "endtime", "duration", ] self.actSchedules = DataArray(self.data, colNames) def test_retrieve_loop_ids(self): houseIdsCol = self.actSchedules.columns(["houseid"]).data houseIdsUnique = unique(houseIdsCol) print houseIdsUnique for hid in houseIdsUnique: schedulesRowsIndForHh = houseIdsCol == hid schedulesForHh = self.actSchedules.rowsof(schedulesRowsIndForHh) pIdsCol = schedulesForHh.columns(["personid"]).data pIdsUnique = unique(pIdsCol) for pid in pIdsUnique: schedulesRowIndForPer = pIdsCol == pid schedulesForPerson = schedulesForHh.rowsof(schedulesRowIndForPer) # print 'Raw schedules for hid:%s and pid:%s' %(hid, pid) # print schedulesForPerson activityList = [] for sch in schedulesForPerson.data: scheduleid = sch[2] activitytype = sch[3] locationid = sch[4] starttime = sch[5] endtime = sch[6] duration = sch[7] actepisode = ActivityEpisode(scheduleid, activitytype, locationid, starttime, endtime, duration) activityList.append(actepisode) personObject = Person(hid, pid) personObject.add_and_reconcile_episodes(activityList)
def update_houseids(self, hhldSyn, persSyn, hhldVars, persVars, highestHid): hhldSynDataObj = DataArray(hhldSyn, hhldVars) persSynDataObj = DataArray(persSyn, persVars) maxFreqCol = amax(hhldSynDataObj.columns(['frequency']).data) powFreqCol = floor(log(maxFreqCol, 10)) + 1 coefficients = {'frequency': 1, 'hhid': 10**powFreqCol} newHid = hhldSynDataObj.calculate_equation(coefficients) hhldSynDataObj.setcolumn('hhid', newHid) newHid = persSynDataObj.calculate_equation(coefficients) persSynDataObj.setcolumn('hhid', newHid) hhldSynDataObj.sort([self.idSpec.hidName]) persSynDataObj.sort([self.idSpec.hidName, self.idSpec.pidName]) hidIndex_popgenH = hhldVars.index('hhid') hidIndex_popgenP = persVars.index('hhid') self.create_indices(persSynDataObj) hhldSyn = hhldSynDataObj.data persSyn = persSynDataObj.data row = 0 for hhldIndex in self.hhldIndicesOfPersons: firstPersonRec = hhldIndex[1] lastPersonRec = hhldIndex[2] #print hhldIndex[0], highestHid + 1, firstPersonRec, lastPersonRec hhldSyn[row, hidIndex_popgenH] = highestHid + 1 persSyn[firstPersonRec:lastPersonRec, hidIndex_popgenP] = highestHid + 1 highestHid += 1 row += 1 return hhldSyn, persSyn
class TestReconcileModel(unittest.TestCase): def setUp(self): self.data = genfromtxt("/home/kkonduri/simtravel/test/mag_zone/schedule_txt.csv", delimiter=",", dtype=int) colNames = ['houseid', 'personid', 'scheduleid', 'activitytype', 'locationid', 'starttime', 'endtime', 'duration'] self.actSchedules = DataArray(self.data, colNames) def test_retrieve_loop_ids(self): houseIdsCol = self.actSchedules.columns(['houseid']).data houseIdsUnique = unique(houseIdsCol) print houseIdsUnique for hid in houseIdsUnique: schedulesRowsIndForHh = houseIdsCol == hid schedulesForHh = self.actSchedules.rowsof(schedulesRowsIndForHh) pIdsCol = schedulesForHh.columns(['personid']).data pIdsUnique = unique(pIdsCol) for pid in pIdsUnique: schedulesRowIndForPer = pIdsCol == pid schedulesForPerson = schedulesForHh.rowsof(schedulesRowIndForPer) #print 'Raw schedules for hid:%s and pid:%s' %(hid, pid) #print schedulesForPerson activityList = [] for sch in schedulesForPerson.data: scheduleid = sch[2] activitytype = sch[3] locationid = sch[4] starttime = sch[5] endtime = sch[6] duration = sch[7] actepisode = ActivityEpisode(scheduleid, activitytype, locationid, starttime, endtime, duration) activityList.append(actepisode) personObject = Person(hid, pid) personObject.add_and_reconcile_episodes(activityList)
def update_houseids(self, hhldSyn, persSyn, hhldVars, persVars, highestHid): hhldSynDataObj = DataArray(hhldSyn, hhldVars) persSynDataObj = DataArray(persSyn, persVars) maxFreqCol = amax(hhldSynDataObj.columns(['frequency']).data) powFreqCol = floor(log(maxFreqCol, 10)) + 1 coefficients = {'frequency':1, 'hhid':10**powFreqCol} newHid = hhldSynDataObj.calculate_equation(coefficients) hhldSynDataObj.setcolumn('hhid', newHid) newHid = persSynDataObj.calculate_equation(coefficients) persSynDataObj.setcolumn('hhid', newHid) hhldSynDataObj.sort([self.idSpec.hidName]) persSynDataObj.sort([self.idSpec.hidName, self.idSpec.pidName]) hidIndex_popgenH = hhldVars.index('hhid') hidIndex_popgenP = persVars.index('hhid') self.create_indices(persSynDataObj) hhldSyn = hhldSynDataObj.data persSyn = persSynDataObj.data row = 0 for hhldIndex in self.hhldIndicesOfPersons: firstPersonRec = hhldIndex[1] lastPersonRec = hhldIndex[2] #print hhldIndex[0], highestHid + 1, firstPersonRec, lastPersonRec hhldSyn[row,hidIndex_popgenH] = highestHid + 1 persSyn[firstPersonRec:lastPersonRec,hidIndex_popgenP] = highestHid + 1 highestHid += 1 row += 1 return hhldSyn, persSyn