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)
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)
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