.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/0_Database_handling/plot_linestrengths.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note You can download :ref:`below ` the full example code and run it with 🔬 `Radis-Lab `__, .. rst-class:: sphx-glr-example-title .. _sphx_glr_auto_examples_0_Database_handling_plot_linestrengths.py: ================================================ Scale Linestrengths of carbon-monoxide ================================================ This example scales the linestrengths of CO to Tgas=300 from Tref = 296 and then plots the linestrengths against the wavenumbers. We are using :py:func:`~radis.io.hitemp.fetch_hitemp` function to retrieve the dataframe from the HITEMP-CO databank. References ---------- .. math:: S(T) = S_0 \frac{Q_{ref}}{Q_{gas}} \operatorname{exp}\left(-E_l \left(\frac{1}{T_{gas}}-\frac{1}{T_{ref}}\right)\right) \frac{1-\operatorname{exp}\left(\frac{-\omega_0}{Tgas}\right)}{1-\operatorname{exp}\left(\frac{-\omega_0}{T_{ref}}\right)} See Eq.(A11) in [Rothman-1998]_ Similar functions are used directly at the hearth of RADIS's SpectrumFactory in the :py:meth:`~radis.lbl.base.BaseFactory.calc_linestrength_eq` and :py:meth:`~radis.lbl.base.BaseFactory.calc_linestrength_noneq` methods .. GENERATED FROM PYTHON SOURCE LINES 22-93 .. image-sg:: /auto_examples/0_Database_handling/images/sphx_glr_plot_linestrengths_001.png :alt: plot linestrengths :srcset: /auto_examples/0_Database_handling/images/sphx_glr_plot_linestrengths_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none Downloading 05_HITEMP2019.par.bz2 for CO (1/1). Download complete. Parsing CO database to /home/docs/.radisdb/hitemp/CO-05_HITEMP2019.hdf5 /home/docs/checkouts/readthedocs.org/user_builds/radis/checkouts/latest/radis/api/hitranapi.py:128: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method. The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy. For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object. /home/docs/checkouts/readthedocs.org/user_builds/radis/checkouts/latest/radis/api/hitranapi.py:128: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method. The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy. For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object. /home/docs/checkouts/readthedocs.org/user_builds/radis/checkouts/latest/radis/api/hitranapi.py:128: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method. The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy. For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object. /home/docs/checkouts/readthedocs.org/user_builds/radis/checkouts/latest/radis/api/tools.py:280: FutureWarning: Downcasting behavior in `replace` is deprecated and will be removed in a future version. To retain the old behavior, explicitly call `result.infer_objects(copy=False)`. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)` /home/docs/checkouts/readthedocs.org/user_builds/radis/checkouts/latest/radis/api/hitranapi.py:128: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method. The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy. For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object. /home/docs/checkouts/readthedocs.org/user_builds/radis/checkouts/latest/radis/api/hitranapi.py:128: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method. The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy. For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object. /home/docs/checkouts/readthedocs.org/user_builds/radis/checkouts/latest/radis/api/hitranapi.py:128: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method. The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy. For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object. /home/docs/checkouts/readthedocs.org/user_builds/radis/checkouts/latest/radis/api/tools.py:280: FutureWarning: Downcasting behavior in `replace` is deprecated and will be removed in a future version. To retain the old behavior, explicitly call `result.infer_objects(copy=False)`. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)` /home/docs/checkouts/readthedocs.org/user_builds/radis/checkouts/latest/radis/api/hitranapi.py:128: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method. The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy. For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object. /home/docs/checkouts/readthedocs.org/user_builds/radis/checkouts/latest/radis/api/hitranapi.py:128: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method. The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy. For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object. /home/docs/checkouts/readthedocs.org/user_builds/radis/checkouts/latest/radis/api/hitranapi.py:128: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method. The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy. For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object. /home/docs/checkouts/readthedocs.org/user_builds/radis/checkouts/latest/radis/api/tools.py:280: FutureWarning: Downcasting behavior in `replace` is deprecated and will be removed in a future version. To retain the old behavior, explicitly call `result.infer_objects(copy=False)`. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)` /home/docs/checkouts/readthedocs.org/user_builds/radis/checkouts/latest/radis/api/hitranapi.py:128: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method. The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy. For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object. /home/docs/checkouts/readthedocs.org/user_builds/radis/checkouts/latest/radis/api/hitranapi.py:128: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method. The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy. For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object. /home/docs/checkouts/readthedocs.org/user_builds/radis/checkouts/latest/radis/api/hitranapi.py:128: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method. The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy. For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object. /home/docs/checkouts/readthedocs.org/user_builds/radis/checkouts/latest/radis/api/tools.py:280: FutureWarning: Downcasting behavior in `replace` is deprecated and will be removed in a future version. To retain the old behavior, explicitly call `result.infer_objects(copy=False)`. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)` /home/docs/checkouts/readthedocs.org/user_builds/radis/checkouts/latest/radis/api/hitranapi.py:128: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method. The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy. For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object. /home/docs/checkouts/readthedocs.org/user_builds/radis/checkouts/latest/radis/api/hitranapi.py:128: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method. The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy. For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object. /home/docs/checkouts/readthedocs.org/user_builds/radis/checkouts/latest/radis/api/hitranapi.py:128: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method. The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy. For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object. /home/docs/checkouts/readthedocs.org/user_builds/radis/checkouts/latest/radis/api/tools.py:280: FutureWarning: Downcasting behavior in `replace` is deprecated and will be removed in a future version. To retain the old behavior, explicitly call `result.infer_objects(copy=False)`. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)` /home/docs/checkouts/readthedocs.org/user_builds/radis/checkouts/latest/radis/api/hitranapi.py:128: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method. The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy. For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object. /home/docs/checkouts/readthedocs.org/user_builds/radis/checkouts/latest/radis/api/hitranapi.py:128: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method. The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy. For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object. /home/docs/checkouts/readthedocs.org/user_builds/radis/checkouts/latest/radis/api/hitranapi.py:128: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method. The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy. For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object. /home/docs/checkouts/readthedocs.org/user_builds/radis/checkouts/latest/radis/api/tools.py:280: FutureWarning: Downcasting behavior in `replace` is deprecated and will be removed in a future version. To retain the old behavior, explicitly call `result.infer_objects(copy=False)`. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)` /home/docs/checkouts/readthedocs.org/user_builds/radis/checkouts/latest/radis/api/hitranapi.py:128: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method. The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy. For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object. /home/docs/checkouts/readthedocs.org/user_builds/radis/checkouts/latest/radis/api/hitranapi.py:128: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method. The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy. For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object. /home/docs/checkouts/readthedocs.org/user_builds/radis/checkouts/latest/radis/api/hitranapi.py:128: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method. The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy. For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object. /home/docs/checkouts/readthedocs.org/user_builds/radis/checkouts/latest/radis/api/tools.py:280: FutureWarning: Downcasting behavior in `replace` is deprecated and will be removed in a future version. To retain the old behavior, explicitly call `result.infer_objects(copy=False)`. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)` /home/docs/checkouts/readthedocs.org/user_builds/radis/checkouts/latest/radis/api/hitranapi.py:128: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method. The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy. For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object. /home/docs/checkouts/readthedocs.org/user_builds/radis/checkouts/latest/radis/api/hitranapi.py:128: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method. The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy. For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object. /home/docs/checkouts/readthedocs.org/user_builds/radis/checkouts/latest/radis/api/hitranapi.py:128: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method. The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy. For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object. /home/docs/checkouts/readthedocs.org/user_builds/radis/checkouts/latest/radis/api/tools.py:280: FutureWarning: Downcasting behavior in `replace` is deprecated and will be removed in a future version. To retain the old behavior, explicitly call `result.infer_objects(copy=False)`. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)` Added HITEMP-CO database in /home/docs/radis.json Scaling equilibrium linestrength | .. code-block:: Python from matplotlib import pyplot as plt from numpy import exp from radis.db.classes import get_molecule, get_molecule_identifier from radis.io.hitemp import fetch_hitemp from radis.levels.partfunc import PartFuncTIPS from radis.phys.constants import hc_k def get_Qgas(molecule, iso, T): M = get_molecule_identifier(molecule) Q = PartFuncTIPS(M, iso) return Q.at(T=T) def scale_linestrength_eq(df, Tref, Tgas): print("Scaling equilibrium linestrength") # %% Load partition function values def _calc_Q(molecule, iso, T_ref, T_gas): Qref = get_Qgas(molecule, iso, T_ref) Qgas = get_Qgas(molecule, iso, T_gas) return Qref, Qgas id_set = df.id.unique() id = list(id_set)[0] molecule = get_molecule(id) # retrieve the molecule iso_set = set(df.iso) # df1.iso.unique() Qref_Qgas_ratio = {} for iso in iso_set: Qref, Qgas = _calc_Q(molecule, iso, Tref, Tgas) Qref_Qgas_ratio[iso] = Qref / Qgas # Scaling linestrength with the equations from Rothman's paper line_strength = df.int * df["iso"].map(Qref_Qgas_ratio) line_strength *= exp(-hc_k * df.El * (1 / Tgas - 1 / Tref)) line_strength *= (1 - exp(-hc_k * df.wav / Tgas)) / (1 - exp(-hc_k * df.wav / Tref)) # Add a fresh columns with the scaled linestrength df["S"] = line_strength # [cm-1/(molecules/cm-2)] # Just to make sure linestrength is indeed added assert "S" in df return df if __name__ == "__main__": Tref = 296 df = fetch_hitemp( molecule="CO", isotope="1, 2, 3", load_wavenum_min=2000, load_wavenum_max=2250, ) Tgas = 450 df = scale_linestrength_eq(df, Tref, Tgas) plt.bar(df["wav"], df["S"]) plt.xlabel("Wavenumbers in cm-1") plt.ylabel("Linestrengths in cm-1/(molecules/cm-2)") plt.show() .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 28.262 seconds) .. _sphx_glr_download_auto_examples_0_Database_handling_plot_linestrengths.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_linestrengths.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_linestrengths.py `