def ts(self, data, lon_cyclic=True, lon_str=LON_STR, lat_str=LAT_STR,
           land_mask_str=LAND_MASK_STR, sfc_area_str=SFC_AREA_STR):
        """Create yearly time-series of region-averaged data.

        Parameters
        ----------
        data : xarray.DataArray
            The array to create the regional timeseries of
        lon_cyclic : { None, True, False }, optional (default True)
            Whether or not the longitudes of ``data`` span the whole globe,
            meaning that they should be wrapped around as necessary to cover
            the Region's full width.
        lat_str, lon_str, land_mask_str, sfc_area_str : str, optional
            The name of the latitude, longitude, land mask, and surface area
            coordinates, respectively, in ``data``.  Defaults are the
            corresponding values in ``aospy.internal_names``.

        Returns
        -------
        xarray.DataArray
            The timeseries of values averaged within the region and within each
            year, one value per year.

        """
        data_masked = self.mask_var(data, lon_cyclic=lon_cyclic,
                                    lon_str=lon_str, lat_str=lat_str)
        sfc_area = data[sfc_area_str]
        sfc_area_masked = self.mask_var(sfc_area, lon_cyclic=lon_cyclic,
                                        lon_str=lon_str, lat_str=lat_str)
        land_mask = _get_land_mask(data, self.do_land_mask,
                                   land_mask_str=land_mask_str)
        weights = sfc_area_masked * land_mask
        # Mask weights where data values are initially invalid in addition
        # to applying the region mask.
        weights = weights.where(np.isfinite(data))
        weights_reg_sum = weights.sum(lon_str).sum(lat_str)
        data_reg_sum = (data_masked * sfc_area_masked *
                        land_mask).sum(lat_str).sum(lon_str)
        return data_reg_sum / weights_reg_sum
def ts ( self , data , lon_cyclic = True , lon_str = LON_STR , lat_str = LAT_STR , land_mask_str = LAND_MASK_STR , sfc_area_str = SFC_AREA_STR ) : data_masked = self . mask_var ( data , lon_cyclic = lon_cyclic , lon_str = lon_str , lat_str = lat_str ) sfc_area = data [ sfc_area_str ] sfc_area_masked = self . mask_var ( sfc_area , lon_cyclic = lon_cyclic , lon_str = lon_str , lat_str = lat_str ) land_mask = _get_land_mask ( data , self . do_land_mask , land_mask_str = land_mask_str ) weights = sfc_area_masked * land_mask weights = weights . where ( np . isfinite ( data ) ) weights_reg_sum = weights . sum ( lon_str ) . sum ( lat_str ) data_reg_sum = ( data_masked * sfc_area_masked * land_mask ) . sum ( lat_str ) . sum ( lon_str ) return data_reg_sum / weights_reg_sum
Create yearly time-series of region-averaged data.

        Parameters
        ----------
        data : xarray.DataArray
            The array to create the regional timeseries of
        lon_cyclic : { None, True, False }, optional (default True)
            Whether or not the longitudes of ``data`` span the whole globe,
            meaning that they should be wrapped around as necessary to cover
            the Region's full width.
        lat_str, lon_str, land_mask_str, sfc_area_str : str, optional
            The name of the latitude, longitude, land mask, and surface area
            coordinates, respectively, in ``data``.  Defaults are the
            corresponding values in ``aospy.internal_names``.

        Returns
        -------
        xarray.DataArray
            The timeseries of values averaged within the region and within each
            year, one value per year.