本文整理汇总了Python中opus_core.datasets.dataset.DatasetSubset.get_id_index方法的典型用法代码示例。如果您正苦于以下问题:Python DatasetSubset.get_id_index方法的具体用法?Python DatasetSubset.get_id_index怎么用?Python DatasetSubset.get_id_index使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类opus_core.datasets.dataset.DatasetSubset
的用法示例。
在下文中一共展示了DatasetSubset.get_id_index方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: estimate_mu
# 需要导入模块: from opus_core.datasets.dataset import DatasetSubset [as 别名]
# 或者: from opus_core.datasets.dataset.DatasetSubset import get_id_index [as 别名]
def estimate_mu(self):
iout = -1
self.values_from_mr = {}
for quantity in self.observed_data.get_quantity_objects():
dataset_name = quantity.get_dataset_name()
variable = quantity.get_variable_name()
iout += 1
dimension_reduced = False
quantity_ids = quantity.get_dataset().get_id_attribute()
for i in range(self.number_of_runs):
ds = self._compute_variable_for_one_run(i, variable, dataset_name, self.get_calibration_year(), quantity)
if isinstance(ds, InteractionDataset):
ds = ds.get_flatten_dataset()
if i == 0: # first run
self.mu[iout] = zeros((self.y[iout].size, self.number_of_runs), dtype=float32)
ids = ds.get_id_attribute()
else:
if ds.size() > ids.shape[0]:
ds = DatasetSubset(ds, ds.get_id_index(ids))
dimension_reduced = True
scale = self.get_scales(ds, i+1, variable)
matching_index = ds.get_id_index(quantity_ids)
values = scale[matching_index] * ds.get_attribute(variable)[matching_index]
self.mu[iout][:,i] = try_transformation(values, quantity.get_transformation())
self.values_from_mr[variable.get_expression()] = self.mu[iout]
if dimension_reduced:
self.y[iout] = self.y[iout][quantity.get_dataset().get_id_index(ids)]
示例2: run
# 需要导入模块: from opus_core.datasets.dataset import DatasetSubset [as 别名]
# 或者: from opus_core.datasets.dataset.DatasetSubset import get_id_index [as 别名]
#.........这里部分代码省略.........
# 16. nonresidential parcel with no building
idx_wrk_vacant_nonres = where(logical_and(processed_bindicator==0, business_codes == 8))[0]
jidx = in1d(job_array_labels, business_ids[idx_wrk_vacant_nonres])
job_assignment_case[jidx] = 16
processed_bindicator[idx_wrk_vacant_nonres] = True
logger.log_status("16. %s jobs (%s businesses) could not be placed due to non-existing buildings in parcels with non-esidential LU type." % (
business_sizes[idx_wrk_vacant_nonres].sum(), idx_wrk_vacant_nonres.size))
# 17. 31+ workers in single residential building. Do not place - will go into ELCM.
idx_wrk_fit = where(logical_and(logical_and(processed_bindicator==0, business_sizes > 30), business_codes == 1))[0]
jidx = in1d(job_array_labels, business_ids[idx_wrk_fit])
job_assignment_case[jidx] = 17
processed_bindicator[idx_wrk_fit] = True
logger.log_status("17. %s jobs (%s businesses) in 31+ workers x single residential building." % (
business_sizes[idx_wrk_fit].sum(), idx_wrk_fit.size))
# 18. 31+ workers in multiple residential buildings.
idx_wrk_fit = where(logical_and(logical_and(processed_bindicator==0, business_sizes > 30), business_codes == 2))[0]
jidx = in1d(job_array_labels, business_ids[idx_wrk_fit])
job_assignment_case[jidx] = 18
processed_bindicator[idx_wrk_fit] = True
logger.log_status("18. %s jobs (%s businesses) in 31+ workers x multiple residential building." % (
business_sizes[idx_wrk_fit].sum(), idx_wrk_fit.size))
# jobs in messy buildings
idx_messy_fit = where(logical_and(logical_and(processed_bindicator==0, business_sizes > 0), business_codes == 0))[0]
processed_bindicator[idx_messy_fit] = True
logger.log_status("%s jobs (%s businesses) could not be placed due to messy buildings." % (
business_sizes[idx_messy_fit].sum(), idx_messy_fit.size))
# build new buildings for jobs in cases 7, 8, 15 and 16
jidx_no_bld = where(in1d(job_assignment_case, [7,8,15,16]))[0]
bus = unique(job_array_labels[jidx_no_bld])
bsidx = businesses.get_id_index(bus)
# first create buildings for single workplaces per parcel
single_workplace_idx = where(business_nworkplaces[bsidx] == 1)[0]
newbld_parcel_id = businesses['parcel_id'][bsidx][single_workplace_idx]
newbld_bt = sector2building_type(businesses['sector_id'][bsidx][single_workplace_idx])
newbids = arange(buildings.get_id_attribute().max()+1, buildings.get_id_attribute().max()+single_workplace_idx.size+1)
bbldid = zeros(bsidx.size, dtype='int32')
bbldid[single_workplace_idx] = newbids
# for parcels with multiple workplaces select the largest business to determine its building type
mult_bsidx = bsidx[where(business_nworkplaces[bsidx] > 1)[0]]
empty_parcels = businesses['parcel_id'][mult_bsidx]
uempty_parcels = unique(empty_parcels)
bsize_on_empty_pcl = ndmax(business_sizes[mult_bsidx], labels=empty_parcels, index=uempty_parcels)
newbld2_sec = zeros(uempty_parcels.size, dtype='int32')
newbids2 = arange(newbids.max()+1, newbids.max()+uempty_parcels.size+1)
for ipcl in range(uempty_parcels.size):
newbld2_sec[ipcl] = businesses['sector_id'][mult_bsidx][logical_and(businesses['parcel_id'][mult_bsidx] == uempty_parcels[ipcl],
business_sizes[mult_bsidx]==bsize_on_empty_pcl[ipcl])][0]
this_bidx = where(businesses['parcel_id'][bsidx] == uempty_parcels[ipcl])
bbldid[this_bidx] = newbids2[ipcl]
newbld_parcel_id = concatenate((newbld_parcel_id, uempty_parcels))
newbld_bt = concatenate((newbld_bt, sector2building_type(newbld2_sec)))
newbldgs = {'building_id': concatenate((newbids, newbids2)),
'parcel_id': newbld_parcel_id,
'building_type_id': newbld_bt,
}
buildings.add_elements(newbldgs, require_all_attributes=False)
jidx = where(in1d(job_array_labels, business_ids[bsidx]))[0]
job_building_id[jidx] = bbldid.repeat(business_sizes[bsidx])
logger.log_status("Build %s new buildings to accommodate %s jobs (out of which %s are governmental) from cases 7, 15, 16." % (
newbld_parcel_id.size, jidx.size, business_sizes[bsidx][where(in1d(businesses['sector_id'][bsidx], [18,19]))].sum()))