# this is the actual zoning @sim.table('zoning', cache=True) def zoning(store): df = store['zoning'] return df # zoning for use in the "baseline" scenario # comes in the hdf5 @sim.table('zoning_baseline', cache=True) def zoning_baseline(zoning, zoning_for_parcels): df = pd.merge(zoning_for_parcels.to_frame(), zoning.to_frame(), left_on='zoning', right_index=True) return df sim.broadcast('zones', 'homesales', cast_index=True, onto_on='zone_id') sim.broadcast('zones', 'costar', cast_index=True, onto_on='zone_id') sim.broadcast('zones', 'apartments', cast_index=True, onto_on='zone_id') sim.broadcast('zones', 'buildings', cast_index=True, onto_on='zone_id') sim.broadcast('zones_prices', 'buildings', cast_index=True, onto_on='zone_id') sim.broadcast('parcels', 'buildings', cast_index=True, onto_on='parcel_id') sim.broadcast('buildings', 'households', cast_index=True, onto_on='building_id') sim.broadcast('buildings', 'jobs', cast_index=True, onto_on='building_id')
return df # residential price data @sim.table('assessor_transactions', cache=True) def assessor_transactions(store): df = store['assessor_transactions'] df["index"] = df.index df.drop_duplicates(cols='index', take_last=True, inplace=True) del df["index"] return df # luz price from pecas @sim.table('pecas_prices', cache=True) def pecas_prices(store): df = store['pecas_prices'] return df # this specifies the relationships between tables sim.broadcast('nodes', 'costar', cast_index=True, onto_on='node_id') sim.broadcast('parcels', 'costar', cast_index=True, onto_on='parcel_id') sim.broadcast('nodes', 'assessor_transactions', cast_index=True, onto_on='node_id') sim.broadcast('parcels', 'assessor_transactions', cast_index=True, onto_on='parcel_id')
# these are shapes - "zones" in the bay area @sim.table('zones', cache=True) def zones(store): df = store['zones'] return df # these are dummy returns that last until accessibility runs @sim.table("nodes", cache=True) def nodes(): return pd.DataFrame() @sim.table("logsums", cache=True) def logsums(settings): logsums_index = settings.get("logsums_index_col", "taz") return pd.read_csv(os.path.join(misc.data_dir(), 'logsums.csv'), index_col=logsums_index) # this specifies the relationships between tables sim.broadcast('nodes', 'buildings', cast_index=True, onto_on='node_id') sim.broadcast('nodes', 'parcels', cast_index=True, onto_on='node_id') sim.broadcast('logsums', 'buildings', cast_index=True, onto_on='zone_id') sim.broadcast('logsums', 'parcels', cast_index=True, onto_on='zone_id') sim.broadcast('parcels', 'buildings', cast_index=True, onto_on='parcel_id') sim.broadcast( 'buildings', 'households', cast_index=True, onto_on='building_id') sim.broadcast('buildings', 'jobs', cast_index=True, onto_on='building_id')
def naics_to_empsix(settings): return settings["naics_to_empsix"] @sim.injectable('sector_id_to_desc', cache=True) def building_sqft_per_job(settings): return settings['sector_id_to_desc'] @sim.injectable("summary", cache=True) def simulation_summary_data(run_number): return wfrc_utils.SimulationSummaryData(run_number) # this specifies the relationships between tables sim.broadcast('zones', 'buildings', cast_index=True, onto_on='zone_id') sim.broadcast('zones', 'parcels', cast_index=True, onto_on='zone_id') sim.broadcast('nodes', 'buildings_for_estimation', cast_index=True, onto_on='node_id') sim.broadcast('parcels', 'buildings_for_estimation', cast_index=True, onto_on='parcel_id') sim.broadcast('zones', 'buildings_for_estimation', cast_index=True, onto_on='zone_id') sim.broadcast('nodes', 'buildings_for_estimation_grouped',
@sim.table('zones', cache=True) def zones(store): df = store['zones'] return df # these are dummy returns that last until accessibility runs @sim.table("nodes", cache=True) def nodes(): return pd.DataFrame() @sim.table("logsums", cache=True) def logsums(settings): logsums_index = settings.get("logsums_index_col", "taz") return pd.read_csv(os.path.join(misc.data_dir(), 'logsums.csv'), index_col=logsums_index) # this specifies the relationships between tables sim.broadcast('nodes', 'buildings', cast_index=True, onto_on='node_id') sim.broadcast('nodes', 'parcels', cast_index=True, onto_on='node_id') sim.broadcast('logsums', 'buildings', cast_index=True, onto_on='zone_id') sim.broadcast('logsums', 'parcels', cast_index=True, onto_on='zone_id') sim.broadcast('parcels', 'buildings', cast_index=True, onto_on='parcel_id') sim.broadcast('buildings', 'households', cast_index=True, onto_on='building_id') sim.broadcast('buildings', 'jobs', cast_index=True, onto_on='building_id')
@sim.injectable('building_sqft_per_job', cache=True) def building_sqft_per_job(settings): return settings['building_sqft_per_job'] # non-residential rent data @sim.table('costar', cache=True) def costar(store): df = store['costar'] return df # residential price data @sim.table('assessor_transactions', cache=True) def assessor_transactions(store): df = store['assessor_transactions'] df["index"] = df.index df.drop_duplicates(cols='index', take_last=True, inplace=True) del df["index"] return df # luz price from pecas @sim.table('pecas_prices', cache=True) def pecas_prices(store): df = store['pecas_prices'] return df # this specifies the relationships between tables sim.broadcast('nodes', 'costar', cast_index=True, onto_on='node_id') sim.broadcast('parcels', 'costar', cast_index=True, onto_on='parcel_id') sim.broadcast('nodes', 'assessor_transactions', cast_index=True, onto_on='node_id') sim.broadcast('parcels', 'assessor_transactions', cast_index=True, onto_on='parcel_id')