def run (self, building_dataset, year, storage, event_filter=None, in_table="development_events_exogenous", out_table="development_events_exogenous"): if not storage.has_table(in_table): logger.log_status('No exogenous developments.') return scheduled_development_events = DevelopmentEventDataset(in_storage=storage, in_table_name=in_table, out_table_name=out_table, id_name='event_id') if event_filter: filter_values = scheduled_development_events.compute_variables(event_filter) scheduled_index = where(logical_and(scheduled_development_events.get_attribute("scheduled_year")==year, filter_values>0))[0] else: scheduled_index = where(scheduled_development_events.get_attribute("scheduled_year")==year)[0] scheduled_development_events.subset_by_index(scheduled_index,flush_attributes_if_not_loaded=False) max_building_id = building_dataset.get_id_attribute().max() new_buildings = {} new_buildings["building_id"] = max_building_id + arange(1, scheduled_index.size+1) attained_attributes = ['parcel_id', 'residential_units', 'building_sqft', 'non_residential_sqft','building_type_id', 'blklot'] for attribute in attained_attributes: new_buildings[attribute] = scheduled_development_events.get_attribute(attribute) new_buildings['year_built'] = ones(scheduled_index.size) * year new_buildings['is_development_event'] = ones(scheduled_index.size) * 1 building_dataset.add_elements(new_buildings, require_all_attributes=False) return scheduled_development_events