def load_law_data(): global DSL_data if DSL_data is not None: return None global TSCA_data, EINECS_data, SPIN_data, NLP_data import pandas as pd import zipfile folder = os_path_join(os.path.dirname(__file__), 'Law') # Data is stored as integers to reduce memory usage DSL_data = pd.read_csv(os.path.join(folder, 'Canada Feb 11 2015 - DSL.csv.gz'), sep='\t', index_col=0, compression='gzip') TSCA_data = pd.read_csv(os.path.join(folder, 'TSCA Inventory 2016-01.csv.gz'), sep='\t', index_col=0, compression='gzip') EINECS_data = pd.read_csv(os.path.join(folder, 'EINECS 2015-03.csv.gz'), index_col=0, compression='gzip') SPIN_data = pd.read_csv(os.path.join(folder, 'SPIN Inventory 2015-03.csv.gz'), compression='gzip', index_col=0) NLP_data = pd.read_csv(os.path.join( folder, 'EC Inventory No Longer Polymers (NLP).csv'), sep='\t', index_col=0)
def __init__( self, elements=True, main_db=os_path_join(folder, 'chemical identifiers pubchem large.tsv'), user_dbs=[ os_path_join(folder, 'chemical identifiers pubchem small.tsv'), os_path_join(folder, 'chemical identifiers example user db.tsv'), os_path_join(folder, 'Cation db.tsv'), os_path_join(folder, 'Anion db.tsv'), os_path_join(folder, 'Inorganic db.tsv') ]): '''Construct the database from its parameters, loading all of the files in `user_dbs`, the periodic table, and defering loading of `main_db` as it is very large until a search doesn't find a chemical in the smaller database. ''' self.pubchem_index = {} self.smiles_index = {} self.InChI_index = {} self.InChI_key_index = {} self.name_index = {} self.CAS_index = {} self.formula_index = {} self.main_db = main_db self.user_dbs = user_dbs self.elements = elements for db in self.user_dbs: self.load(db) self.load_elements()
def load_economic_data(): global HPV_data if HPV_data is not None: return None global _EPACDRDict, _ECHATonnageDict import pandas as pd import zipfile folder = os_path_join(os.path.dirname(__file__), 'Law') '''OECD are chemicals produced by and OECD members in > 1000 tonnes/year.''' HPV_data = pd.read_csv(os.path.join(folder, 'HPV 2015 March 3.csv'), sep='\t', index_col=0) # 13061-29-2 not valid and removed _ECHATonnageDict = {} with zipfile.ZipFile(os.path.join(folder, 'ECHA Tonnage Bands.csv.zip')) as z: with z.open(z.namelist()[0]) as f: for line in f.readlines(): # for some reason, the file must be decoded to UTF8 first CAS, band = line.decode("utf-8").strip('\n').split('\t') if CAS in _ECHATonnageDict: if band in _ECHATonnageDict[CAS]: pass else: _ECHATonnageDict[CAS].append(band) else: _ECHATonnageDict[CAS] = [band] _EPACDRDict = {} with open(os.path.join(folder, 'EPA 2012 Chemical Data Reporting.csv')) as f: '''EPA summed reported chemical usages. In metric tonnes/year after conversion. Many producers keep their date confidential. This was originally in terms of lb/year, but rounded to the nearest kg. ''' next(f) for line in f: values = line.rstrip().split('\t') CAS, manufactured, imported, exported = to_num(values) _EPACDRDict[CAS] = { "Manufactured": manufactured / 1000., "Imported": imported / 1000., "Exported": exported / 1000. }
'Sanjari', 'Psat_IAPWS', 'dPsat_IAPWS_dT', 'Tsat_IAPWS', 'Psub_Clapeyron', 'Antoine_coeffs_from_point', 'Antoine_AB_coeffs_from_point', 'DIPPR101_ABC_coeffs_from_point' ] import os from fluids.constants import R from fluids.numerics import numpy as np from math import e from chemicals.utils import log, exp, sqrt, isnan from chemicals.utils import PY37, source_path, os_path_join, can_load_data from chemicals.dippr import EQ101 from chemicals import miscdata from chemicals.data_reader import register_df_source, data_source folder = os_path_join(source_path, 'Vapor Pressure') register_df_source(folder, 'Antoine Collection Poling.tsv') register_df_source( folder, 'Table 2-8 Vapor Pressure of Inorganic and Organic Liquids.tsv') register_df_source(folder, 'Wagner Original McGarry.tsv', csv_kwargs={ 'dtype': { 'A': float, 'B': float, 'C': float, 'D': float, 'Pc': float, 'Tc': float,
'epsilon_Tee_Gotoh_Steward_1', 'epsilon_Tee_Gotoh_Steward_2', 'collision_integral_Neufeld_Janzen_Aziz', 'As_collision', 'Bs_collision', 'Cs_collision', 'collision_integral_Kim_Monroe', 'T_star' ] import os from fluids.constants import k from chemicals.utils import exp, log, sin from chemicals.utils import PY37, source_path, os_path_join, can_load_data from chemicals.data_reader import (register_df_source, data_source, retrieve_from_df_dict, retrieve_any_from_df_dict, list_available_methods_from_df_dict) # Register data sources and lazy load them folder = os_path_join(source_path, 'Viscosity') register_df_source(folder, 'MagalhaesLJ.tsv') FLYNN = 'Flynn (1960)' STIELTHODOS = 'Stiel and Thodos Tc, Zc (1962)' MAGALHAES = 'Magalhães, Lito, Da Silva, and Silva (2013)' TEEGOTOSTEWARD1 = 'Tee, Gotoh, and Stewart CSP with Tc (1966)' TEEGOTOSTEWARD2 = 'Tee, Gotoh, and Stewart CSP with Tc, omega (1966)' BSLC = 'Bird, Stewart, and Light (2002) critical relation' BSLB = 'Bird, Stewart, and Light (2002) boiling relation' BSLM = 'Bird, Stewart, and Light (2002) melting relation' _LJ_data_loaded = False def _load_LJ_data():
__all__ = [ 'Tt_all_methods', 'Tt_methods', 'Tt', 'Pt_all_methods', 'Pt_methods', 'Pt' ] import os from chemicals.utils import mark_numba_incompatible from chemicals.utils import PY37, source_path, os_path_join, can_load_data from chemicals.phase_change import Tm from chemicals.data_reader import (register_df_source, data_source, retrieve_from_df_dict, retrieve_any_from_df_dict, list_available_methods_from_df_dict) # Register data sources and lazy load them folder = os_path_join(source_path, 'Triple Properties') register_df_source(folder, 'Staveley 1981.tsv') STAVELEY = 'STAVELEY' MELTING = 'MELTING' _triple_data_loaded = False def _load_triple_data(): global triple_data_Staveley, _triple_data_loaded, Tt_sources, Pt_sources triple_data_Staveley = data_source('Staveley 1981.tsv') _triple_data_loaded = True Tt_sources = { STAVELEY: triple_data_Staveley, }
In [2]: chemicals.permittivity.permittivity_data_CRC """ from __future__ import division __all__ = ['permittivity_IAPWS'] import os from fluids.numerics import numpy as np from fluids.constants import N_A, epsilon_0, k from chemicals.utils import sqrt, PY37, source_path, os_path_join, can_load_data from chemicals.data_reader import register_df_source, data_source folder = os_path_join(source_path, 'Electrolytes') register_df_source(folder, 'Permittivity (Dielectric Constant) of Liquids.tsv') _permittivity_data_loaded = False def _load_permittivity_data(): global _permittivity_data_loaded, permittivity_values_CRC, permittivity_data_CRC permittivity_data_CRC = data_source( 'Permittivity (Dielectric Constant) of Liquids.tsv') permittivity_values_CRC = np.array(permittivity_data_CRC.values[:, 1:], dtype=float) if PY37:
'RI_to_brix', 'brix_to_RI' ] from fluids.numerics import interp from fluids.constants import pi, N_A from chemicals.utils import mark_numba_incompatible from chemicals.utils import PY37, source_path, os_path_join, can_load_data from chemicals.utils import sqrt, isnan from chemicals.data_reader import (register_df_source, data_source, retrieve_from_df_dict, retrieve_any_from_df_dict, list_available_methods_from_df_dict) # Register data sources and lazy load them folder = os_path_join(source_path, 'Misc') register_df_source(folder, 'CRC Handbook Organic RI.csv', csv_kwargs={'dtype': { 'RI': float, 'RIT': float }}) CRC = 'CRC' _RI_data_loaded = False def _load_RI_data(): global _RI_data_loaded, RI_data_CRC_organic, RI_sources RI_data_CRC_organic = data_source('CRC Handbook Organic RI.csv')
from chemicals.utils import ceil, log10, PY37, source_path, os_path_join, can_load_data from chemicals import heat_capacity from chemicals.data_reader import (register_df_source, data_source, retrieve_from_df_dict, retrieve_any_from_df_dict, list_available_methods_from_df_dict) # %% Register data sources and lazy load them CRC = 'CRC' YAWS = 'YAWS' API_TDB_G = 'API_TDB_G' ATCT_L = 'ATCT_L' ATCT_G = 'ATCT_G' TRC = 'TRC' folder = os_path_join(source_path, 'Reactions') register_df_source(folder, 'API TDB Albahri Hf (g).tsv') register_df_source(folder, 'ATcT 1.112 (g).tsv') register_df_source(folder, 'ATcT 1.112 (l).tsv') register_df_source(folder, 'Yaws Hf S0 (g).tsv') _reaction_data_loaded = False def _load_reaction_data(): global Hfg_API_TDB_data, Hfg_ATcT_data, Hfl_ATcT_data, Hfg_S0g_YAWS_data global Hfg_sources, Hfl_sources, Hfs_sources global S0g_sources, S0l_sources, S0s_sources global _reaction_data_loaded Hfg_API_TDB_data = data_source('API TDB Albahri Hf (g).tsv') Hfg_ATcT_data = data_source('ATcT 1.112 (g).tsv') Hfl_ATcT_data = data_source('ATcT 1.112 (l).tsv')
from __future__ import division __all__ = [ 'check_CAS', 'CAS_from_any', 'MW', 'search_chemical', 'mixture_from_any', 'cryogenics', 'inerts', 'dippr_compounds', 'IDs_to_CASs', 'get_pubchem_db', 'CAS_to_int', 'sorted_CAS_key', 'int_to_CAS' ] import os from io import open from chemicals.utils import PY37, source_path, os_path_join, can_load_data, to_num from chemicals.elements import (periodic_table, homonuclear_elemental_gases, charge_from_formula, serialize_formula) folder = os_path_join(source_path, 'Identifiers') def check_CAS(CASRN): """Checks if a CAS number is valid. Returns False if the parser cannot parse the given string. Parameters ---------- CASRN : str A three-piece, dash-separated set of numbers Returns ------- result : bool Boolean value if CASRN was valid. If parsing fails, return False also.
] import os from fluids.numerics import numpy as np from fluids.constants import R, N_A, pi from chemicals.utils import log from chemicals.utils import PY37, source_path, os_path_join, can_load_data from chemicals import miscdata from chemicals.data_reader import (register_df_source, data_source, retrieve_from_df_dict, retrieve_any_from_df_dict, list_available_methods_from_df_dict) ### Register data sources and lazy load them folder = os_path_join(source_path, 'Phase Change') register_df_source(folder, 'Yaws Boiling Points.tsv') register_df_source(folder, 'OpenNotebook Melting Points.tsv') register_df_source(folder, 'Ghazerati Appendix Vaporization Enthalpy.tsv', csv_kwargs={'dtype': { 'Hvap298': float }}) register_df_source(folder, 'CRC Handbook Heat of Vaporization.tsv') register_df_source(folder, 'CRC Handbook Heat of Fusion.tsv') register_df_source(folder, 'Ghazerati Appendix Sublimation Enthalpy.tsv') register_df_source( folder, 'Table 2-150 Heats of Vaporization of Inorganic and Organic Liquids.tsv') register_df_source(folder, 'VDI PPDS Enthalpies of vaporization.tsv') register_df_source(folder,
__all__ = ['REFPROP_sigma', 'Somayajulu', 'Jasper', 'Brock_Bird', 'Pitzer_sigma', 'Sastri_Rao', 'Zuo_Stenby', 'sigma_IAPWS', 'Mersmann_Kind_surface_tension', 'API10A32', 'Hakim_Steinberg_Stiel', 'Miqueu', 'Aleem', 'Winterfeld_Scriven_Davis', 'Diguilio_Teja', 'Weinaug_Katz', 'Meybodi_Daryasafar_Karimi'] import os from fluids.numerics import numpy as np from fluids.constants import N_A, k from chemicals.utils import log, exp, sqrt from chemicals.utils import mixing_simple, PY37, source_path, os_path_join, can_load_data from chemicals.data_reader import register_df_source, data_source folder = os_path_join(source_path, 'Interface') register_df_source(folder, 'MuleroCachadinaParameters.tsv') register_df_source(folder, 'Jasper-Lange.tsv') register_df_source(folder, 'Somayajulu.tsv') register_df_source(folder, 'SomayajuluRevised.tsv') register_df_source(folder, 'VDI PPDS surface tensions.tsv') _interface_dfs_loaded = False def load_interface_dfs(): global _interface_dfs_loaded, sigma_data_Mulero_Cachadina, sigma_values_Mulero_Cachadina global sigma_data_Jasper_Lange, sigma_values_Jasper_Lange global sigma_data_Somayajulu, sigma_values_Somayajulu, sigma_data_Somayajulu2 global sigma_values_Somayajulu2, sigma_data_VDI_PPDS_11, sigma_values_VDI_PPDS_11
__all__ = [ 'GWP', 'ODP', 'logP', 'GWP_all_methods', 'ODP_all_methods', 'logP_all_methods', 'GWP_methods', 'ODP_methods', 'logP_methods' ] from chemicals.utils import mark_numba_incompatible from chemicals.utils import PY37, source_path, os_path_join, can_load_data from chemicals.data_reader import (register_df_source, data_source, retrieve_from_df, retrieve_any_from_df, retrieve_from_df_dict, retrieve_any_from_df_dict, list_available_methods_from_df, list_available_methods_from_df_dict) ### Register data sources and lazy load them folder = os_path_join(source_path, 'Environment') register_df_source(folder, 'Official Global Warming Potentials.tsv') register_df_source(folder, 'Ozone Depletion Potentials.tsv') register_df_source(folder, 'CRC logP table.tsv') register_df_source(folder, 'Syrres logP data.csv.gz', csv_kwargs={'compression': 'gzip'}) _GWP_ODP_data_loaded = False @mark_numba_incompatible def _load_GWP_ODP_data(): global _GWP_ODP_data_loaded, GWP_data, ODP_data global _GWP_keys_by_method, _ODP_keys_by_method GWP_data = data_source('Official Global Warming Potentials.tsv')
'ideal_gas', 'Goodman', 'Rackett_fit', 'TDE_VDNS_rho', 'PPDS17', ] import os from fluids.numerics import np, splev, implementation_optimize_tck from fluids.constants import R, atm_inv, root_two from chemicals.utils import log, exp, isnan, sqrt from chemicals.utils import Vm_to_rho, mixing_simple, mark_numba_incompatible from chemicals.utils import PY37, source_path, os_path_join, can_load_data from chemicals.data_reader import data_source, register_df_source folder = os_path_join(source_path, 'Density') register_df_source(folder, 'COSTALD Parameters.tsv') register_df_source(folder, 'Mchaweh SN0 deltas.tsv') register_df_source(folder, 'Perry Parameters 105.tsv') register_df_source(folder, 'CRC Liquid Inorganic Constant Densities.tsv') register_df_source(folder, 'CRC Solid Inorganic Constant Densities.tsv') register_df_source(folder, 'VDI PPDS Density of Saturated Liquids.tsv', csv_kwargs={'dtype': { 'rhoc': float }}) register_df_source(folder, 'CRC Inorganics densties of molten compounds and salts.tsv', csv_kwargs={'dtype': {