示例#1
0
    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
示例#2
0
    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
示例#3
0
    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
示例#4
0
    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]
示例#5
0
文件: outputs.py 项目: clhughes/reV
    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
示例#6
0
    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
示例#7
0
    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