def alt_feasibility(parcels, settings, parcel_sales_price_sqft_func, parcel_is_allowed_func): kwargs = settings['feasibility'] config = sqftproforma.SqFtProFormaConfig() config.parking_rates["office"] = 1.5 config.parking_rates["retail"] = 1.5 utils.run_feasibility(parcels, parcel_sales_price_sqft_func, parcel_is_allowed_func, config=config, **kwargs) f = subsidies.policy_modifications_of_profit( orca.get_table('feasibility').to_frame(), parcels) orca.add_table("feasibility", f)
def nonresidential_proforma(form, devtype_id, use, parking_rate): print form parcels = sim.get_table('parcels').to_frame() residential_to_yearly = False parcel_filter = settings['feasibility']['parcel_filter'] #parcel_filter = None pfc = sqftproforma.SqFtProFormaConfig() pfc.forms = {form: {use: 1.0}} pfc.uses = [use] pfc.residential_uses = [False] pfc.parking_rates = {use: parking_rate} if use == 'retail': pfc.costs = {use: [160.0, 175.0, 200.0, 230.0]} elif use == 'industrial': pfc.costs = {use: [140.0, 175.0, 200.0, 230.0]} else: #office pfc.costs = {use: [160.0, 175.0, 200.0, 230.0]} #Fees fee_schedule_devtype = fee_schedule[fee_schedule.development_type_id == devtype_id] parcel_fee_schedule_devtype = pd.merge(parcel_fee_schedule, fee_schedule_devtype, left_on='fee_schedule_id', right_on='fee_schedule_id') parcel_fee_schedule_devtype[ 'development_fee_per_unit'] = parcel_fee_schedule_devtype.development_fee_per_unit_space_initial * parcel_fee_schedule_devtype.portion parcel_fees_processed = parcel_fee_schedule_devtype.groupby( 'parcel_id').development_fee_per_unit.sum() fees = pd.Series(data=parcel_fees_processed, index=parcels.index).fillna(0) pf = sqftproforma.SqFtProForma(pfc) fees = fees * pf.config.cap_rate return run_proforma_lookup(parcels, fees, pf, use, form, residential_to_yearly, parcel_filter=parcel_filter)
def alt_feasibility(parcels, settings, parcel_sales_price_sqft_func, parcel_is_allowed_func): kwargs = settings['feasibility'] config = sqftproforma.SqFtProFormaConfig() config.parking_rates["office"] = 1.5 config.parking_rates["retail"] = 1.5 config.building_efficiency = .85 config.parcel_coverage = .85 # use the cap rate from settings.yaml config.cap_rate = settings["cap_rate"] utils.run_feasibility(parcels, parcel_sales_price_sqft_func, parcel_is_allowed_func, config=config, **kwargs) f = subsidies.policy_modifications_of_profit( orca.get_table('feasibility').to_frame(), parcels) orca.add_table("feasibility", f)
def subsidized_residential_feasibility(parcels, settings, add_extra_columns_func, parcel_sales_price_sqft_func, parcel_is_allowed_func, parcels_geography): kwargs = settings['feasibility'].copy() kwargs["only_built"] = False kwargs["forms_to_test"] = ["residential"] config = sqftproforma.SqFtProFormaConfig() # use the cap rate from settings.yaml config.cap_rate = settings["cap_rate"] # step 1 utils.run_feasibility(parcels, parcel_sales_price_sqft_func, parcel_is_allowed_func, config=config, **kwargs) feasibility = orca.get_table("feasibility").to_frame() # get rid of the multiindex that comes back from feasibility feasibility = feasibility.stack(level=0).reset_index(level=1, drop=True) # join to parcels_geography for filtering feasibility = feasibility.join(parcels_geography.to_frame()) # add the multiindex back feasibility.columns = pd.MultiIndex.from_tuples([ ("residential", col) for col in feasibility.columns ]) feasibility = policy_modifications_of_profit(feasibility, parcels) orca.add_table("feasibility", feasibility) df = orca.get_table("feasibility").to_frame() df = df.stack(level=0).reset_index(level=1, drop=True) df.to_csv("runs/run{}_feasibility_{}.csv".format( orca.get_injectable("run_number"), orca.get_injectable("year")))