Health, Safety, and Flammability Properties (chemicals.safety)¶
This module contains functions for lookup the following properties for a chemical:
Short-term Exposure Limit (STEL)
Time-Weighted Average Exposure Limit (TWA)
Celing limit for working exposure
Whether a chemicals is absorbed thorough human skin
Whether a chemical is a carcinogen, suspected of being a carcinogen, or has been identified as unlikely to be a carcinogen
Flash point
Auto ignition point
Lower flammability limit
Upper flammability limit
In addition, several estimation methods for chemicals without flammability limits are provided and for calculating the flammability limits of mixtures.
This module also contains several utility functions.
For reporting bugs, adding feature requests, or submitting pull requests, please use the GitHub issue tracker.
Short-term Exposure Limit¶
- chemicals.safety.STEL(CASRN, method=None)[source]¶
This function handles the retrieval of Short-term Exposure Limit (STEL) on worker exposure to dangerous chemicals.
- Parameters
- Returns
Notes
The ppm value is preferentially returned if both are available. While they can be converted in specific cases, it is better to work with the specified units of the original source.
Examples
>>> STEL('67-64-1') (750.0, 'ppm') >>> STEL('7664-38-2') (0.7489774978301237, 'ppm') >>> STEL('55720-99-5') (2.0, 'mg/m^3')
Time-Weighted Average Exposure Limit¶
- chemicals.safety.TWA(CASRN, method=None)[source]¶
Return the Time-Weighted Average exposure limits (TWA) for the desired chemical if it is available.
- Parameters
- Returns
Notes
The ppm value is preferentially returned if both are available. While they can be converted in specific cases, it is better to work with the specified units of the original source.
Examples
>>> TWA('98-00-0') (10.0, 'ppm') >>> TWA('1303-00-0') (5.0742430905659505e-05, 'ppm')
Ceiling Limit¶
- chemicals.safety.Ceiling(CASRN, method=None)[source]¶
This function handles the retrieval of ceiling limits on worker exposure to dangerous chemicals. Ceiling limits are not to be exceeded at any time.
- Parameters
- Returns
Examples
>>> Ceiling('75-07-0') (25.0, 'ppm') >>> Ceiling('1395-21-7') (6e-05, 'mg/m^3')
Skin Absorbance¶
- chemicals.safety.Skin(CASRN, method=None)[source]¶
This function handles the retrieval of whether or not a chemical can be absorbed through the skin, relevant to chemical safety calculations.
- Parameters
- Returns
- skinbool
Whether or not the substance is absorbed through human skin, [-]
Examples
>>> Skin('108-94-1') True >>> Skin('1395-21-7') False
Carcinogenicity¶
- chemicals.safety.Carcinogen(CASRN, method=None)[source]¶
Looks up if a chemical is listed as a carcinogen or not according to either a specifc method or with all methods. Returns either the status as a string for a specified method, or the status of the chemical in all available data sources, in the format {source: status}.
- Parameters
- CASRN
str
CASRN [-]
- CASRN
- Returns
- Other Parameters
- method
str
,optional
A string for the method name to use, as defined in the variable, Carcinogen_all_methods.
- method
Notes
- Supported methods are:
IARC: International Agency for Research on Cancer, [1]. As extracted with a last update of February 22, 2016. Has listing information of 863 chemicals with CAS numbers. Chemicals without CAS numbers not included here. If two listings for the same CAS were available, the harshest rating was used. If two listings were available published at different times, the latest value was used. All else equal, the most pessimistic value was used.
NTP: National Toxicology Program, [2]. Has data on 228 chemicals.
References
- 1
International Agency for Research on Cancer. Agents Classified by the IARC Monographs, Volumes 1-115. Lyon, France: IARC; 2020 Available from: http://monographs.iarc.fr/ENG/Classification/
- 2
NTP (National Toxicology Program). 2021. Report on Carcinogens, Fifteenth Edition.; Research Triangle Park, NC: U.S. Department of Health and Human Services, Public Health Service. https://doi.org/10.22427/NTP-OTHER-1003
Examples
>>> Carcinogen('61-82-5') {'International Agency for Research on Cancer': 'Not classifiable as to its carcinogenicity to humans (3)', 'National Toxicology Program 13th Report on Carcinogens': 'Reasonably Anticipated'}
- chemicals.safety.Carcinogen_methods(CASRN)[source]¶
Return all methods available to obtain Carcinogen listings for the desired chemical.
- Parameters
- CASRN
str
CASRN, [-]
- CASRN
- Returns
See also
- chemicals.safety.Carcinogen_all_methods = ('International Agency for Research on Cancer', 'National Toxicology Program 13th Report on Carcinogens')¶
Tuple of method name keys. See the
Carcinogen
for the actual references
Flash Point¶
- chemicals.safety.T_flash(CASRN, method=None)[source]¶
This function handles the retrieval or calculation of a chemical’s flash point. Lookup is based on CASRNs. No predictive methods are currently implemented. Will automatically select a data source to use if no method is provided; returns None if the data is not available.
- Parameters
- CASRN
str
CASRN [-]
- CASRN
- Returns
- T_flash
float
Flash point of the chemical, [K]
- T_flash
- Other Parameters
- method
str
,optional
A string for the method name to use, as defined in the variable, T_flash_all_methods,
- method
See also
Notes
Preferred source is ‘IEC 60079-20-1 (2010)’ [1], with the secondary source ‘NFPA 497 (2008)’ [2] having very similar data. A third source ‘Serat DIPPR (2017)’ [3] provides third hand experimental but evaluated data from the DIPPR database, version unspecified, for 870 compounds.
The predicted values from the DIPPR databank are also available in the supporting material in [3], but are not included.
References
- 1
IEC. “IEC 60079-20-1:2010 Explosive atmospheres - Part 20-1: Material characteristics for gas and vapour classification - Test methods and data.” https://webstore.iec.ch/publication/635. See also https://law.resource.org/pub/in/bis/S05/is.iec.60079.20.1.2010.pdf
- 2
National Fire Protection Association. NFPA 497: Recommended Practice for the Classification of Flammable Liquids, Gases, or Vapors and of Hazardous. NFPA, 2008.
- 3(1,2)
Serat, Fatima Zohra, Ali Mustapha Benkouider, Ahmed Yahiaoui, and Farid Bagui. “Nonlinear Group Contribution Model for the Prediction of Flash Points Using Normal Boiling Points.” Fluid Phase Equilibria 449 (October 15, 2017): 52-59. doi:10.1016/j.fluid.2017.06.008.
- 4
Wikidata. Wikidata. Accessed via API. https://www.wikidata.org/
Examples
>>> T_flash(CASRN='64-17-5') 285.15 >>> T_flash('111-69-3', method='WIKIDATA') 365.92778
Autoignition Point¶
- chemicals.safety.T_autoignition(CASRN, method=None)[source]¶
This function handles the retrieval or calculation of a chemical’s autoifnition temperature. Lookup is based on CASRNs. No predictive methods are currently implemented. Will automatically select a data source to use if no Method is provided; returns None if the data is not available.
- Parameters
- CASRN
str
CASRN [-]
- CASRN
- Returns
- Tautoignition
float
Autoignition point of the chemical, [K].
- Tautoignition
- Other Parameters
- method
str
,optional
A string for the method name to use, as defined in the variable, T_autoignition_all_methods.
- method
See also
Notes
Preferred source is ‘IEC 60079-20-1 (2010)’ [1], with the secondary source ‘NFPA 497 (2008)’ [2] having very similar data.
References
- 1
IEC. “IEC 60079-20-1:2010 Explosive atmospheres - Part 20-1: Material characteristics for gas and vapour classification - Test methods and data.” https://webstore.iec.ch/publication/635. See also https://law.resource.org/pub/in/bis/S05/is.iec.60079.20.1.2010.pdf
- 2
National Fire Protection Association. NFPA 497: Recommended Practice for the Classification of Flammable Liquids, Gases, or Vapors and of Hazardous. NFPA, 2008.
- 3
Wikidata. Wikidata. Accessed via API. https://www.wikidata.org/
Examples
>>> T_autoignition(CASRN='71-43-2') 771.15 >>> T_autoignition('111-69-3', method='WIKIDATA') 823.15
- chemicals.safety.T_autoignition_methods(CASRN)[source]¶
Return all methods available to obtain T_autoignition for the desired chemical.
- Parameters
- CASRN
str
CASRN, [-]
- CASRN
- Returns
See also
- chemicals.safety.T_autoignition_all_methods = ('IEC 60079-20-1 (2010)', 'NFPA 497 (2008)', 'WIKIDATA')¶
Tuple of method name keys. See the
T_autoignition
for the actual references
Lower Flammability Limit¶
- chemicals.safety.LFL(Hc=None, atoms=None, CASRN='', method=None)[source]¶
This function handles the retrieval or calculation of a chemical’s Lower Flammability Limit. Lookup is based on CASRNs. Will automatically select a data source to use if no Method is provided; returns None if the data is not available.
- Parameters
- Returns
- LFL
float
Lower flammability limit of the gas in an atmosphere at STP, [mole fraction].
- LFL
- Other Parameters
- method
str
,optional
A string for the method name to use, as defined in the variable, LFL_all_methods.
- method
Notes
Preferred source is ‘IEC 60079-20-1 (2010)’ [1], with the secondary source ‘NFPA 497 (2008)’ [2] having very similar data. If the heat of combustion is provided, the estimation method
Suzuki_LFL
can be used. If the atoms of the molecule are available, the methodCrowl_Louvar_LFL
can be used.References
- 1
IEC. “IEC 60079-20-1:2010 Explosive atmospheres - Part 20-1: Material characteristics for gas and vapour classification - Test methods and data.” https://webstore.iec.ch/publication/635. See also https://law.resource.org/pub/in/bis/S05/is.iec.60079.20.1.2010.pdf
- 2
National Fire Protection Association. NFPA 497: Recommended Practice for the Classification of Flammable Liquids, Gases, or Vapors and of Hazardous. NFPA, 2008.
- 3
Wikidata. Wikidata. Accessed via API. https://www.wikidata.org/
Examples
>>> LFL(CASRN='71-43-2') 0.012 >>> LFL(Hc=-890590.0, atoms={'C': 1, 'H': 4}, CASRN='74-82-8') 0.044 >>> LFL(CASRN='111-69-3', method='WIKIDATA') 0.017
- chemicals.safety.LFL_methods(Hc=None, atoms=None, CASRN='')[source]¶
Return all methods available to obtain LFL for the desired chemical.
- Parameters
- Returns
See also
Examples
Methane
>>> LFL_methods(Hc=-890590.0, atoms={'C': 1, 'H': 4}, CASRN='74-82-8') ['IEC 60079-20-1 (2010)', 'NFPA 497 (2008)', 'Suzuki (1994)', 'Crowl and Louvar (2001)']
- chemicals.safety.LFL_all_methods = ('IEC 60079-20-1 (2010)', 'NFPA 497 (2008)', 'WIKIDATA', 'Suzuki (1994)', 'Crowl and Louvar (2001)')¶
Tuple of method name keys. See the
LFL
for the actual references
- chemicals.safety.Suzuki_LFL(Hc)[source]¶
Calculates lower flammability limit, using the Suzuki [1] correlation. Uses heat of combustion only.
The lower flammability limit of a gas is air is:
- Parameters
- Hc
float
Heat of combustion of gas [J/mol]
- Hc
- Returns
- LFL
float
Lower flammability limit, mole fraction [-]
- LFL
Notes
Fit performed with 112 compounds, r^2 was 0.977. LFL in percent volume in air. Hc is at standard conditions, in MJ/mol. 11 compounds left out as they were outliers. Equation does not apply for molecules with halogen atoms, only hydrocarbons with oxygen or nitrogen or sulfur. No sample calculation provided with the article. However, the equation is straightforward. Limits of equations’s validity are -6135596 J where it predicts a LFL of 0, and -48322129 J where it predicts a LFL of 1.
References
- 1
Suzuki, Takahiro. “Note: Empirical Relationship between Lower Flammability Limits and Standard Enthalpies of Combustion of Organic Compounds.” Fire and Materials 18, no. 5 (September 1, 1994): 333-36. doi:10.1002/fam.810180509.
Examples
Pentane, 1.5 % LFL in literature
>>> Suzuki_LFL(-3536600) 0.014276107095811815
- chemicals.safety.Crowl_Louvar_LFL(atoms)[source]¶
Calculates lower flammability limit, using the Crowl-Louvar [1] correlation. Uses molecular formula only. The lower flammability limit of a gas is air is:
- Parameters
- atoms
dict
Dictionary of atoms and atom counts
- atoms
- Returns
- LFL
float
Lower flammability limit, mole fraction
- LFL
Notes
Coefficient of 0.55 taken from [2]
References
- 1(1,2)
Crowl, Daniel A., and Joseph F. Louvar. Chemical Process Safety: Fundamentals with Applications. 2E. Upper Saddle River, N.J: Prentice Hall, 2001.
- 2
Jones, G. W. “Inflammation Limits and Their Practical Application in Hazardous Industrial Operations.” Chemical Reviews 22, no. 1 (February 1, 1938): 1-26. doi:10.1021/cr60071a001
Examples
Hexane, example from [1], lit. 1.2 %
>>> Crowl_Louvar_LFL({'H': 14, 'C': 6}) 0.011899610558199915
- chemicals.safety.LFL_ISO_10156_2017(zs, LFLs, CASs)[source]¶
Calculate the lower flammability limit of a mixture of combustible gases and inert gases according to ISO 10156 (2017) [1].
The B sum is the total mole fraction of all inert gas compounds; and the A sum is the total mole fraction of all combustible compounds. are the looked up inert gas coefficients. is calculated as the Le Chatelier’s lower flammability limit if there were no inert gases in the mixture.
- Parameters
- Returns
- LFL
float
Lower or flammability limit of a gas mixture, [-]
- LFL
Notes
Inert gas parameters are available for O2, N2, CO2, He, Ar, Ne, Kr, Xe, SO2, SF6, CF4, C3F8, and C2HF5.
References
- 1(1,2)
Standardization, International Organization for. ISO 10156: 2017 : Gas Cylinders - Gases and Gas Mixtures - Determination of Fire Potential and Oxidizing Ability for the Selection of Cylinder Valve Outlets, 2017.
Examples
All the sample problems from [1] have been implemented as tests.
>>> zs = [.15, .15, .3, .35+.05*.79, .05*.21] >>> LFLs = [.04, .044, None, None, None] >>> CASs = ['1333-74-0', '74-82-8', '124-38-9', '7727-37-9', '7782-44-7'] >>> LFL_ISO_10156_2017(zs, LFLs, CASs) 0.1427372274
Upper Flammability Limit¶
- chemicals.safety.UFL(Hc=None, atoms=None, CASRN='', method=None)[source]¶
This function handles the retrieval or calculation of a chemical’s Upper Flammability Limit. Lookup is based on CASRNs. Two predictive methods are currently implemented. Will automatically select a data source to use if no Method is provided; returns None if the data is not available.
- Parameters
- Returns
- UFL
float
Upper flammability limit of the gas in an atmosphere at STP, [mole fraction]
- UFL
- Other Parameters
- method
str
,optional
A string for the method name to use, as defined in the variable, UFL_all_methods.
- method
Notes
Preferred source is ‘IEC 60079-20-1 (2010)’ [1], with the secondary source ‘NFPA 497 (2008)’ [2] having very similar data. If the heat of combustion is provided, the estimation method
Suzuki_UFL
can be used. If the atoms of the molecule are available, the methodCrowl_Louvar_UFL
can be used.References
- 1
IEC. “IEC 60079-20-1:2010 Explosive atmospheres - Part 20-1: Material characteristics for gas and vapour classification - Test methods and data.” https://webstore.iec.ch/publication/635. See also https://law.resource.org/pub/in/bis/S05/is.iec.60079.20.1.2010.pdf
- 2
National Fire Protection Association. NFPA 497: Recommended Practice for the Classification of Flammable Liquids, Gases, or Vapors and of Hazardous. NFPA, 2008.
- 3
Wikidata. Wikidata. Accessed via API. https://www.wikidata.org/
Examples
>>> UFL(CASRN='71-43-2') 0.086
Methane
>>> UFL(Hc=-890590.0, atoms={'C': 1, 'H': 4}, CASRN='74-82-8') 0.17 >>> UFL(CASRN='111-69-3', method='WIKIDATA') 0.05
- chemicals.safety.UFL_methods(Hc=None, atoms=None, CASRN='')[source]¶
Return all methods available to obtain UFL for the desired chemical.
- Parameters
- Returns
See also
Examples
Methane
>>> UFL_methods(Hc=-890590.0, atoms={'C': 1, 'H': 4}, CASRN='74-82-8') ['IEC 60079-20-1 (2010)', 'NFPA 497 (2008)', 'Suzuki (1994)', 'Crowl and Louvar (2001)']
- chemicals.safety.UFL_all_methods = ('IEC 60079-20-1 (2010)', 'NFPA 497 (2008)', 'WIKIDATA', 'Suzuki (1994)', 'Crowl and Louvar (2001)')¶
Tuple of method name keys. See the
UFL
for the actual references
- chemicals.safety.Suzuki_UFL(Hc)[source]¶
Calculates upper flammability limit, using the Suzuki [1] correlation. Uses heat of combustion only. The upper flammability limit of a gas is air is:
- Parameters
- Hc
float
Heat of combustion of gas [J/mol]
- Hc
- Returns
- UFL
float
Upper flammability limit, mole fraction
- UFL
Notes
UFL in percent volume in air according to original equation. Hc is at standard conditions in the equation, in units of MJ/mol. AAPD = 1.2% for 95 compounds used in fit. Somewhat better results than the High and Danner method. 4.9% < UFL < 23.0% -890.3 kJ/mol < dHc < -6380 kJ/mol r^2 = 0.989 Sample calculations provided for all chemicals, both this method and High and Danner. Examples are from the article. Predicts a UFL of 1 at 7320190 J and a UFL of 0 at -5554160 J.
References
- 1
Suzuki, Takahiro, and Kozo Koide. “Short Communication: Correlation between Upper Flammability Limits and Thermochemical Properties of Organic Compounds.” Fire and Materials 18, no. 6 (November 1, 1994): 393-97. doi:10.1002/fam.810180608.
Examples
Pentane, literature 7.8% UFL
>>> Suzuki_UFL(-3536600) 0.0831119493052
- chemicals.safety.Crowl_Louvar_UFL(atoms)[source]¶
Calculates upper flammability limit, using the Crowl-Louvar [1] correlation. Uses molecular formula only. The upper flammability limit of a gas is air is:
- Parameters
- atoms
dict
Dictionary of atoms and atom counts
- atoms
- Returns
- UFL
float
Upper flammability limit, mole fraction
- UFL
Notes
Coefficient of 3.5 taken from [2]
References
- 1(1,2)
Crowl, Daniel A., and Joseph F. Louvar. Chemical Process Safety: Fundamentals with Applications. 2E. Upper Saddle River, N.J: Prentice Hall, 2001.
- 2
Jones, G. W. “Inflammation Limits and Their Practical Application in Hazardous Industrial Operations.” Chemical Reviews 22, no. 1 (February 1, 1938): 1-26. doi:10.1021/cr60071a001
Examples
Hexane, example from [1], lit. 7.5 %
>>> Crowl_Louvar_UFL({'H': 14, 'C': 6}) 0.07572479446127219
Mixture Flammability Limit¶
- chemicals.safety.fire_mixing(ys, FLs)[source]¶
Le Chatelier’s mixing rule for lower and upper flammability limits of mixtures of gases.
- Parameters
- Returns
- FL
float
Lower or upper flammability limit of a gas, [-]
- FL
Notes
This equation has a higher accuracy for lower flammability limits than upper flammability limits. Some sources recommend not using it for upper flammability limits.
References
- 1
Crowl, Daniel A., and Joseph F. Louvar. Chemical Process Safety: Fundamentals with Applications. 2E. Upper Saddle River, N.J: Prentice Hall, 2001.
Examples
Sample problems from [1] for the lower and upper flammability limit.
>>> fire_mixing(ys=normalize([0.0024, 0.0061, 0.0015]), FLs=[.012, .053, .031]) 0.02751172136637642
>>> fire_mixing(ys=normalize([0.0024, 0.0061, 0.0015]), FLs=[.075, .15, .32]) 0.12927551844869378
Utility Methods¶
- chemicals.safety.ppmv_to_mgm3(ppmv, MW, T=298.15, P=101325.0)[source]¶
Converts a concentration in ppmv to units of mg/m^3. Used in industrial toxicology.
- Parameters
- Returns
- mgm3
float
Concentration of a substance in an ideal gas mixture [mg/m^3]
- mgm3
Notes
The term P/(RT)/1000 converts to 0.040874 at STP. Its inverse is reported as 24.45 in [1].
References
- 1
ACGIH. Industrial Ventilation: A Manual of Recommended Practice, 23rd Edition. American Conference of Governmental and Industrial Hygenists, 2004.
Examples
>>> ppmv_to_mgm3(1.0, 40.0) 1.6349617809430446
- chemicals.safety.mgm3_to_ppmv(mgm3, MW, T=298.15, P=101325.0)[source]¶
Converts a concentration in mg/m^3 to units of ppmv. Used in industrial toxicology.
- Parameters
- Returns
- ppmv
float
Concentration of a component in a gas mixure [parts per million, volumetric]
- ppmv
Notes
The term P/(RT)/1000 converts to 0.040874 at STP. Its inverse is reported as 24.45 in [1].
References
- 1
ACGIH. Industrial Ventilation: A Manual of Recommended Practice, 23rd Edition. American Conference of Governmental and Industrial Hygenists, 2004.
Examples
>>> mgm3_to_ppmv(1.635, 40.0) 1.0000233761164334
- chemicals.safety.NFPA_30_classification(T_flash, Tb=None, Psat_100F=None)[source]¶
Classify a chemical’s flammability/combustibility according to the NFPA 30 standard Flammable and Combustible Liquids Code.
Class IA: Flash Point < 73°F; Boiling Point < 100°F Class IB: Flash Point < 73°F; 100°F <= Boiling Point Class IC: 73°F <= Flash Point < 100°F Class II: 100°F <= Flash Point < 140°F Class IIIA: 140°F <= Flash Point < 200°F Class IIIB: 200°F <= Flash Point
Class I liquids are designated as flammable; class II and II liquids are designated as combustible.
- Parameters
- Returns
- classification
str
One of ‘IA’, ‘IB’, ‘IC’, ‘II’, ‘IIIA’, ‘IIIB’, [-]
- classification
Notes
Only one of Tb or Psat_100F is needed.
Class ‘IA’ also includes unstable liquids.
References
- 1
NFPA (National Fire Prevention Association). NFPA 30: Flammable and Combustible Liquids Code, 2008. National Fire Protection Association (NFPA), 2007.
Examples
Ethylene oxide
>>> NFPA_30_classification(253.15, 283.55) 'IA'
Butyl alcohol
>>> NFPA_30_classification(308.15) 'IC'