def _get_layer(self, layer_name, *ds_slice): """ Extract data from given dataset Parameters ---------- layer_name : str Exclusion layer to extract ds_slice : tuple of int | list | slice tuple describing slice of layer array to extract Returns ------- layer_data : ndarray Array of exclusion data """ if layer_name not in self.layers: msg = ('{} not in available layers: {}'.format( layer_name, self.layers)) logger.error(msg) raise HandlerKeyError(msg) if len(self.h5[layer_name].shape) == 3: slices = (0, ) + ds_slice else: slices = ds_slice layer_data = ResourceDataset.extract(self.h5[layer_name], slices) return layer_data
def _get_layer(self, layer_name, *ds_slice): """ Extract data from given dataset Parameters ---------- layer_name : str Exclusion layer to extract ds_slice : tuple of int | list | slice tuple describing slice of layer array to extract Returns ------- layer_data : ndarray Array of exclusion data """ if layer_name not in self.layers: msg = ('{} not in available layers: {}' .format(layer_name, self.layers)) logger.error(msg) raise HandlerKeyError(msg) shape = self.h5.get_dset_properties(layer_name)[0] if len(shape) == 3: ds_slice = (layer_name, 0) + ds_slice else: ds_slice = (layer_name, ) + ds_slice layer_data = self.h5[ds_slice] return layer_data
def _get_longitude(self, *ds_slice): """ Extract longitude coordinates Parameters ---------- ds_slice : tuple of int | list | slice Pandas slicing describing which sites and columns to extract Returns ------- lon : ndarray Longitude coordinates """ if 'longitude' not in self.h5: msg = ('"longitude" is missing from {}' .format(self.h5_file)) logger.error(msg) raise HandlerKeyError(msg) ds_slice = ('longitude', ) + ds_slice lon = self.h5[ds_slice] return lon
def __getitem__(self, gid): if gid not in self._features: msg = "Invalid feature gid {}".format(gid) logger.error(msg) raise HandlerKeyError(msg) return self._features[gid]
def __getitem__(self, keys): ds, ds_slice = parse_keys(keys) if ds in self.datasets: if ds.endswith('time_index'): out = self._get_time_index(ds, ds_slice) elif ds.endswith('meta'): out = self._get_meta(ds, ds_slice) else: out = self._get_ds(ds, ds_slice) else: msg = '{} is not a valid Dataset'.format(ds) raise HandlerKeyError(msg) return out
def _features_from_table(self, trans_table): """ Extract features and their capacity from supply curve transmission mapping table Parameters ---------- trans_table : pandas.DataFrame DataFrame of transmission features Returns ------- features : dict Nested dictionary of features (lines, substations, loadcenters) lines : {capacity} substations : {lines} loadcenters : {capacity} """ features = {} cap_frac = self._available_capacity_frac trans_features = trans_table.groupby('trans_line_gid').first() for gid, feature in trans_features.iterrows(): name = feature['category'].lower() feature_dict = {'type': name} if name == 'transline': feature_dict['avail_cap'] = feature['ac_cap'] * cap_frac elif name == 'substation': feature_dict['lines'] = json.loads(feature['trans_gids']) elif name == 'loadcen': feature_dict['avail_cap'] = feature['ac_cap'] * cap_frac elif name == 'pcaloadcen': feature_dict['avail_cap'] = None else: msg = ('Cannot not recognize feature type "{}" ' 'for trans gid {}!'.format(name, gid)) logger.error(msg) raise HandlerKeyError(msg) features[gid] = feature_dict return features
def _get_latitude(self, *ds_slice): """ Extract latitude coordinates Parameters ---------- ds_slice : tuple of int | list | slice Pandas slicing describing which sites and columns to extract Returns ------- lat : ndarray Latitude coordinates """ if 'latitude' not in self.h5: msg = ('"latitude" is missing from {}'.format(self.h5_file)) logger.error(msg) raise HandlerKeyError(msg) lat = ResourceDataset.extract(self.h5['latitude'], ds_slice) return lat