Exemple #1
0
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)
Exemple #2
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()
Exemple #3
0
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.
            }
Exemple #4
0
    '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():
Exemple #6
0
__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:
Exemple #8
0
    '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')
Exemple #10
0
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,
Exemple #12
0
__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
Exemple #13
0
__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')
Exemple #14
0
    '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': {