Exemple #1
0
    def calculate_electrolyte_mass_concentrations(self):
        """no docstring"""
        # ion_mass_concentration = self.data
        materials = _properties.get_commen()

        materials.index = materials.species_name
        material_ions = materials.loc[[
            'ammonium', 'sulfate', 'nitrate', 'chloride', 'sodium', 'calcium'
        ]]
        material_ions = material_ions.dropna(axis=1)
        material_ions = material_ions.drop(['Species', 'species_name'], axis=1)

        # cats = material_ions.loc[material_ions['ion'] == 'cat']
        # ans = material_ions.loc[material_ions['ion'] == 'an']

        material_elct = materials.loc[[
            'ammonium_sulfate', 'ammonium_nitrate', 'ammonium_chloride',
            'sodium_chloride', 'sodium_sulfate', 'sodium_nitrate',
            'calcium_nitrate', 'calcium_chloride', 'sulfuric_acid',
            'ammonium_hydrogen_sulfate'
        ]]
        material_elct = material_elct.dropna(axis=1)

        dt = _np.zeros((self.data.shape[0], material_elct.shape[0]))
        df = _pd.DataFrame(dt,
                           columns=material_elct.index,
                           index=self.data.index)
        for i in self.data.index:
            cct = self.data.loc[i]
            electro = ion2electrolyte_mass_concentration(
                cct, material_ions, material_elct)
            df.loc[i] = electro.mass_concentration
        df['organic_aerosol'] = self.data.organic_aerosol
        return AMS_Timeseries_lev02(df)
Exemple #2
0
    def calculate_electrolyte_mass_concentrations(self):
        """no docstring"""
        # ion_mass_concentration = self.data
        materials = _properties.get_commen()

        materials.index = materials.species_name
        material_ions = materials.loc[['ammonium','sulfate', 'nitrate', 'chloride', 'sodium', 'calcium' ]]
        material_ions = material_ions.dropna(axis=1)
        material_ions = material_ions.drop(['Species', 'species_name'], axis = 1)

        # cats = material_ions.loc[material_ions['ion'] == 'cat']
        # ans = material_ions.loc[material_ions['ion'] == 'an']

        material_elct = materials.loc[['ammonium_sulfate',
                                       'ammonium_nitrate',
                                       'ammonium_chloride',
                                       'sodium_chloride',
                                       'sodium_sulfate',
                                       'sodium_nitrate',
                                       'calcium_nitrate',
                                       'calcium_chloride',
                                       'sulfuric_acid',
                                       'ammonium_hydrogen_sulfate'
                                      ]]
        material_elct = material_elct.dropna(axis=1)

        dt = _np.zeros((self.data.shape[0],material_elct.shape[0]))
        df = _pd.DataFrame(dt,columns=material_elct.index, index = self.data.index)
        for i in self.data.index:
            cct = self.data.loc[i]
            electro = ion2electrolyte_mass_concentration(cct, material_ions, material_elct)
            df.loc[i] = electro.mass_concentration
        df['organic_aerosol'] = self.data.organic_aerosol
        return AMS_Timeseries_lev02(df)
Exemple #3
0
def zdanovskii_stokes_robinson(data, which = 'refractive_Index'):
    """(Stokes and Robinson,1966)
    Arguments
    ---------
    data: pandas dataframe
        containing chemical composition data
    which: str
        which property to mix ['refractive_Index', 'density', 'kappa_chem']
        """
    materials = _properties.get_commen()
    materials.index = materials.species_name

    essential_elcts = ['ammonium_sulfate',
                                   'ammonium_nitrate',
                                   'ammonium_chloride',
                                   'sodium_chloride',
                                   'sodium_sulfate',
                                   'sodium_nitrate',
                                   'calcium_nitrate',
                                   'calcium_chloride',
                                   'organic_aerosol'
                                  ]

    electrolytes = materials.loc[essential_elcts]
    electrolytes = electrolytes[['refractive_Index', 'density', 'kappa_chem']]

    _pandas_tools.ensure_column_exists(data, 'organic_aerosol', col_alt = ['total_organics'] )

    for e in essential_elcts:
        _pandas_tools.ensure_column_exists(data, e)

    tobemixed = electrolytes[which]
    # _pdb.set_trace()
    numerator = (data * tobemixed / electrolytes.density).sum(axis=1)
    denominator = (data / electrolytes.density).sum(axis=1)
    mixed = numerator/denominator
    df = _pd.DataFrame(mixed, columns=[which])
    ts = _timeseries.TimeSeries(df)
    return ts