Ejemplo n.º 1
0
    def _concat(self, arm_data_objs, close_gaps=True):
        for att in self._concatable:
            first_object = getattr(arm_data_objs[0], att)
            which_type = type(first_object).__name__
            data_period = first_object._data_period
            if which_type == 'TimeSeries_2D':
                value = _timeseries.TimeSeries_2D(
                    _pd.concat([getattr(i, att).data for i in arm_data_objs]))
            elif which_type == 'TimeSeries':
                value = _timeseries.TimeSeries(
                    _pd.concat([getattr(i, att).data for i in arm_data_objs]))
            elif which_type == 'AMS_Timeseries_lev01':
                value = _AMS.AMS_Timeseries_lev01(
                    _pd.concat([getattr(i, att).data for i in arm_data_objs]))
            elif which_type == 'SizeDist_TS':
                # value = _AMS.AMS_Timeseries_lev01(pd.concat([getattr(i, att).data for i in arm_data_objs]))
                data = _pd.concat(
                    [getattr(i, att).data for i in arm_data_objs])
                value = _sizedistribution.SizeDist_TS(
                    data,
                    getattr(arm_data_objs[0], att).bins,
                    'dNdlogDp',
                    ignore_data_gap_error=True,
                )
            elif which_type == 'TimeSeries_3D':
                value = _timeseries.TimeSeries_3D(
                    _pd.concat([getattr(i, att).data for i in arm_data_objs]))
            else:
                raise TypeError(
                    '%s is not an allowed type here (TimeSeries_2D, TimeSeries)'
                    % which_type)

            if hasattr(first_object, 'availability'):
                try:
                    avail_concat = _pd.concat([
                        getattr(i, att).availability.availability
                        for i in arm_data_objs
                    ])
                    avail = Data_Quality(None, avail_concat, None,
                                         first_object.flag_info)
                    value.availability = avail
                except:
                    _warnings.warn(
                        'availability could not be concatinated make sure you converted it to a pandas frame at some point!'
                    )
            value._data_period = data_period
            if close_gaps:
                setattr(self, att, value.close_gaps())
            else:
                setattr(self, att, value)
Ejemplo n.º 2
0
    def _parse_netCDF(self):
        "returns a dictionary, with panels in it"
        super(ArmDatasetSub,self)._parse_netCDF()


        size_bins = self._read_variable('size_bins')['data'] * 1000
        df = pd.DataFrame(self._read_variable('RH_interDMA')['data'], index = self.time_stamps, columns=size_bins)
        df.columns.name = 'size_bin_center_nm'
        self.RH_interDMA = timeseries.TimeSeries(df)
        self.RH_interDMA._data_period = self._data_period

        data = self._read_variable('hyg_distributions')['data']
        growthfactors = self._read_variable('growthfactors')['data']
        data = pd.Panel(data, items= self.time_stamps, major_axis = size_bins, minor_axis = growthfactors)
        data.major_axis.name = 'size_bin_center_nm'
        data.minor_axis.name = 'growthfactors'
        self.hyg_distributions = timeseries.TimeSeries_3D(data)
        self.hyg_distributions._data_period = self._data_period
Ejemplo n.º 3
0
    def mean_growth_factor(self):
        """Calculates the mean growthfactor of the particular size bin."""
        if '__mean_growth_factor' not in dir(self):


            def mean_linewise(gf_dist):
                growthfactors = self.hyg_distributions.data.minor_axis.values
                # meanl = ((gf_dist[~ gf_dist.mask] * np.log10(growthfactors[~ gf_dist.mask])).sum()/gf_dist[~gf_dist.mask].sum())
                meanl = ((gf_dist[~ np.isnan(gf_dist)] * np.log10(growthfactors[~ np.isnan(gf_dist)])).sum()/gf_dist[~np.isnan(gf_dist)].sum())
                stdl = np.sqrt((gf_dist[~ np.isnan(gf_dist)] * (np.log10(growthfactors[~ np.isnan(gf_dist)]) - meanl)**2).sum()/gf_dist[~np.isnan(gf_dist)].sum())
                return np.array([10**meanl,stdl])
            data = self.hyg_distributions.data
            allmeans = timeseries.TimeSeries_3D(pd.Panel(items=data.items, major_axis=data.major_axis, minor_axis= ['mean', 'std_log']))
            for i,time in enumerate(data.values):
                for e,size in enumerate(time):
                    allmeans.data.iloc[i,e] = mean_linewise(size)
            self.__mean_growth_factor = allmeans
            self.__mean_growth_factor._data_period = self._data_period
        return self.__mean_growth_factor