|
3 | 3 |
|
4 | 4 | Instructions: customize these example values for your own ActivitySim implementation |
5 | 5 | """ |
6 | | -from typing import List, Optional |
7 | | -import os, sys, logging |
| 6 | +from __future__ import annotations |
8 | 7 |
|
9 | | -from pydantic import BaseModel, validator |
10 | | -import pandera as pa |
11 | | -import numpy as np |
12 | | -import pandas as pd |
13 | | -import openmatrix as omx |
| 8 | +import csv |
| 9 | +import logging |
| 10 | +import os |
14 | 11 |
|
15 | 12 | # for skim name parsing |
16 | 13 | import re |
17 | | -import csv |
18 | | - |
19 | | -from activitysim.core import config |
| 14 | +import sys |
| 15 | +from typing import List, Optional |
20 | 16 |
|
21 | 17 | import enums as e |
| 18 | +import numpy as np |
| 19 | +import openmatrix as omx |
| 20 | +import pandas as pd |
| 21 | +import pandera as pa |
| 22 | +from pydantic import BaseModel, validator |
22 | 23 |
|
23 | 24 | from activitysim.abm.models.input_checker import TABLE_STORE, log_info |
| 25 | +from activitysim.core import config |
24 | 26 |
|
25 | 27 | logger = logging.getLogger(__name__) |
26 | 28 |
|
@@ -225,12 +227,13 @@ def check_hh_per_zone(cls, land_use: pd.DataFrame): |
225 | 227 | def check_pop_per_zone(cls, land_use: pd.DataFrame): |
226 | 228 | persons = TABLE_STORE["persons"] |
227 | 229 | households = TABLE_STORE["households"] |
228 | | - pop = persons.groupby( |
229 | | - persons.household_id.map( |
230 | | - lambda hhid: households.set_index("household_id").home_zone_id[hhid] |
231 | | - ) |
232 | | - ).person_id.nunique() |
233 | | - return (pop == land_use.set_index("zone_id").TOTPOP).reindex(land_use.index) |
| 230 | + persons_per_household = persons.groupby("household_id").size() |
| 231 | + hh = households[["household_id", "home_zone_id"]].merge( |
| 232 | + persons_per_household.rename("persons_per_household"), on="household_id" |
| 233 | + ) |
| 234 | + pop = hh.groupby(households.home_zone_id)["persons_per_household"].sum() |
| 235 | + lu = land_use.set_index("zone_id") |
| 236 | + return pop.reindex(lu.index) == lu.TOTPOP |
234 | 237 |
|
235 | 238 |
|
236 | 239 | class NetworkLinks(pa.DataFrameModel): |
|
0 commit comments