{ "metadata": { "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.7-final" }, "orig_nbformat": 2, "kernelspec": { "name": "python3", "display_name": "Python 3.8.7 64-bit ('analysis')", "metadata": { "interpreter": { "hash": "7f44b18cfbfdf62cb269156e4e62984896b36596773974c4ef0d6947d77de0d1" } } } }, "nbformat": 4, "nbformat_minor": 2, "cells": [ { "source": [ "# Examples\n", "\n", "Here is a short guide to using carspy in a project:\n", "\n", "## Setup\n", "\n", "### Import necessary modules" ], "cell_type": "markdown", "metadata": {} }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from carspy import CarsSpectrum, CarsFit\n", "from carspy.utils import downsample\n", "from carspy.convol_fcn import asym_Gaussian" ] }, { "source": [ "### Additional modules\n", "\n", "`numpy` and `matplotlib` are also used in this demo." ], "cell_type": "markdown", "metadata": {} }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n" ] }, { "source": [ "## Synthesize CARS spectra\n", "\n", "### Initialize the parameters\n", "\n", "Following is the standard procedure to start syntheiszing a spectrum. By default, the set of nonresonant susceptibilities used is taken from CARSFT \\[[Pal89](references)\\] (\"Set 1\"). Details regarding the choices can be found in the [module documentation](cars_synth). Custom values can be used by modifying the following attributes:\n", " \n", "- `.chi_nrs` (a dictionary of species names and nonresonant susceptiblities),\n", "- `.chi_nrs_T0` (standard temperature for the susceptibilities),\n", "- `.chi_nrs_P0` (standard pressure for the susceptibilities) " ], "cell_type": "markdown", "metadata": {} }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# set the modes used to generate the spectrum\n", "synth_mode = {'pump_ls': 'Gaussian', # pump laser lineshape\n", " 'chi_rs': 'G-matrix', # solve G-matrix\n", " 'convol': 'Kataoka', # Kataoka convolution (convolve twice)\n", " 'doppler_effect': True, # convolution with Doppler broadening\n", " 'chem_eq': False} # Not assume chemical equilibrium\n", "\n", "# (optional) initial gas composition\n", "init_comp = {'N2': 0.79,\n", " 'Ar': 0.0,\n", " 'CO2': 0,\n", " 'CO': 0,\n", " 'H2': 0,\n", " 'O2': 0.21,\n", " 'H2O': 0,\n", " 'CH4': 0}\n", "\n", "# initialize the spectrum\n", "cars = CarsSpectrum(pressure=1, \n", " init_comp=init_comp,\n", " chi_set=\"SET 1\")\n" ] }, { "source": [ "### Create the spectrum\n", "\n", "Try varying the temperature and other parameters to see the changes in the CARS spectrum.\n" ], "cell_type": "markdown", "metadata": {} }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "output_type": "display_data", "data": { "text/plain": "
", "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n 2021-03-18T15:31:02.813758\r\n image/svg+xml\r\n \r\n \r\n Matplotlib v3.3.4, https://matplotlib.org/\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ], "source": [ "# define the spectral range\n", "nu = np.linspace(2260, 2350, num=10000)\n", "_, spect = cars.signal_as(temperature=1750,\n", " nu_s=nu,\n", " synth_mode=synth_mode,\n", " pump_lw=0.2)\n", "\n", "_, ax = plt.subplots(1)\n", "ax.plot(nu, spect/spect.max())\n", "ax.set_ylabel(r'$I$ [-]')\n", "ax.set_xlabel(r'$\\nu$ [cm$^{-1}$]')\n", "plt.show()" ] }, { "source": [ "### Apply a slit function" ], "cell_type": "markdown", "metadata": {} }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "output_type": "display_data", "data": { "text/plain": "
", "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n 2021-03-18T15:31:03.099441\r\n image/svg+xml\r\n \r\n \r\n Matplotlib v3.3.4, https://matplotlib.org/\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ], "source": [ "# create random noise\n", "np.random.seed(42)\n", "noise = np.random.rand(120)\n", "\n", "# a mock slit function\n", "slit_fcn = asym_Gaussian(nu, 1/2*(nu[0] + nu[-1]),\n", " 1.2, 1.2, 0.14, 0., 0)\n", "\n", "# convolve the spectrum with the slit function\n", "spect_conv = np.convolve(spect, slit_fcn, 'same')\n", "\n", "# downsample a segment and add noise to synthesize an expt. spectrum\n", "nu_expt = np.linspace(2280, 2345, num=120)\n", "expt_spec = downsample(nu_expt, nu, spect_conv) + noise*8000 - 3000\n", "\n", "_, ax = plt.subplots(1)\n", "ax.plot(nu_expt, expt_spec/expt_spec.max())\n", "ax.set_ylabel(r'$I$ [-]')\n", "ax.set_xlabel(r'$\\nu$ [cm$^{-1}$]')\n", "plt.show()" ] }, { "source": [ "## Fit CARS spectra\n", "\n", "### Initialize the fit" ], "cell_type": "markdown", "metadata": {} }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "modes = {'power_factor' : 0, \n", " 'downsample' : 'local_mean',\n", " 'slit' : 'sGaussian',\n", " 'pump_ls' : 'Gaussian',\n", " 'chi_rs' : 'G-matrix', \n", " 'convol' : 'K',\n", " 'doppler_effect' : False,\n", " 'chem_eq' : False,\n", " 'fit' : 'custom'}\n", " \n", "fit_expt = CarsFit(expt_spec, nu_expt, fit_mode=modes, ref_fac=80)\n", "fit_expt.preprocess()" ] }, { "source": [ "### Control the fitting parameters" ], "cell_type": "markdown", "metadata": {} }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "params = (('temperature', 2000, True, 250, 3000),\n", " ('del_Tv', 0, False, 0, 500),\n", " ('x_mol', 0.79, False, 0.2, 1.5),\n", " ('nu_shift', 0, True, -1, 1),\n", " ('nu_stretch', 1, False, 0.5, 1.5),\n", " ('pump_lw', 0.2, False, 0.1, 10),\n", " ('param1', 1.2, False),\n", " ('param2', 1.2, False),\n", " ('param3', 0.14, False),\n", " ('param4', 0, False))\n" ] }, { "source": [ "### Perform the least-square fit" ], "cell_type": "markdown", "metadata": {} }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "[[Fit Statistics]]\n # fitting method = leastsq\n # function evals = 41\n # data points = 120\n # variables = 4\n chi-square = 0.03175832\n reduced chi-square = 2.7378e-04\n Akaike info crit = -980.451086\n Bayesian info crit = -969.301119\n## Warning: uncertainties could not be estimated:\n param5: at initial value\n param5: at boundary\n param6: at initial value\n param6: at boundary\n[[Variables]]\n x_mol: 0.79 (fixed)\n temperature: 1769.71918 (init = 2000), model_value = 2000\n del_Tv: 0 (fixed)\n nu_shift: -0.08683537 (init = 0), model_value = 0\n nu_stretch: 1 (fixed)\n pump_lw: 0.2 (fixed)\n param1: 1.2 (fixed)\n param2: 1.2 (fixed)\n param3: 0.14 (fixed)\n param4: 0 (fixed)\n param5: -inf (init = -inf), model_value = -inf\n param6: -inf (init = -inf), model_value = -inf\n" ] }, { "output_type": "display_data", "data": { "text/plain": "
", "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n 2021-03-18T15:31:20.287158\r\n image/svg+xml\r\n \r\n \r\n Matplotlib v3.3.4, https://matplotlib.org/\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZcAAAGDCAYAAADnIV2AAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAABgd0lEQVR4nO3deXxU5bnA8d8zkwkkbGFVCCi4sSgCGlfcWwU3QK1bta3XtZu2VqlQW7W2KhZbra3V61aXWgtuEQWLeoFqERQwKJtRZJEElLCELQmZzLz3j3MmTCazb2cmeb6fTz5JzpzlnTNnznPeXYwxKKWUUunkcjoBSiml2h4NLkoppdJOg4tSSqm00+CilFIq7TS4KKWUSjsNLkoppdJOg4tqk0RkoIgYESmIY92rROS/IcteFJEJGUugakVE7hKRf0R5/SMROTybaVLJ0+CicoKIrBORRhHpFbK8wg4SA7OYliOBEcDr2TpmtiUSfDN0/NNEpCrBzR4A7s5EelT6aXBRuWQtcHngHxEZDhQ7kI4bgBdMmnsYO3Ujb0NmAKeLyP5OJ0TFpsFF5ZLnge8H/f8D4LnAPyLSTUSeE5EaEVkvIr8WEZf9mltEHhCRLSKyBjg3eMf2tk+JyCYRqRaR34uIO0I6zgb+E7L9dSKySkR2ichKETnKXj5JRL4MWn5B0DZXich8EXlQRLYCd4nIISLyHxHZYad1WqyTIiJDROQdEdkmIpUicom9/GB7WSAt/exzc5r9/zwRuc8uTtopIq+LSA97t+/Zv2tFZLeInBDl+GHTLCKPiMgfQ9adISI323+vE5FbReRTe9tpItJRRDoBbwH97GPvFpF+9i4K7c94l4isEJGywL6NMQ3AEmBMrHOmcoAxRn/0x/EfYB3wbaASGAq4gSrgQMAAA7ECzetAF/v/z4Fr7O1/CHwGDAB6AHPt7Qrs118D/hfoBPQBPgJusF+7Cviv/Xcne7veQWm7GKgGjgEEOAQ4MOi1flgPapcCe4C+QfttAm4ECoAi4EXgdnv9jsBJMc5LJ2AD8D/2PkYBW4Bh9uvXASuxcnizgQeCtp1np/sIez+vAP+wXxsYfH5ipCFsmoFjgY2Ay/6/F1AH7Bf0mX5kn58ewCrgh/ZrpwFVIce5C2gAzrE///uAhSHrPAz8yenrVX9i/2jOReWaQO7lTKybUbW93A1cBkw2xuwyxqwD/gh8z379EuAhY8wGY8w2rBsTACKyH9YN6+fGmD3GmM3Ag/b+QpXYv3cFLbsW+IMxZpGxrDbGrAcwxrxkjNlojPEbY6YBX2DddAM2GmP+YoxpMsbUA16sgNnPGNNgjGnRkCCM84B1xpi/2/uowAoSF9vHfwJYDXwI9MUKAsGeN8YsN8bsAX4DXBIlxxZJ2DQbYz4CdgDfste7DJhnjPkmaNuH7fOzDXgDGBnjWP81xswyxviwroURIa/vYt9npHKYBheVa54Hvov11P9c0PJegAdYH7RsPVBq/90P6wk/+LWAA+1tN4lIrYjUYuVi+oQ5fq39u0vQsgHAl+ESKyLfF5GlQfs9wk5rwIaQTX6Jlfv5yC72uTrcfkPSflxg//YxrgCC6x2esI/7F2PM3pDtQ8+JJyR98YiW5meBK+2/r8T6/IJ9HfR3HdA5xrFC1+8YUlfVhX2fkcphWsGocooxZr2IrMXKaVwT9NIW9j1Br7SXHcC+nM0mrCBA0GsBG4C9QC9jTFOM4+8RkS+Bw4CaoO0PDl1XRA7EurF/C1hgjPGJyFKsG3HzLkP2/zVWURYichLwroi8Z4xZHSFJG4D/GGPODPeiiHQGHgKewqrTecXOJQSEnhMv1rnsH+F4rcRI8z+A5SIyAqs4szze3cZ7/BBD7WOqHKc5F5WLrgHOsItyAnzAdOAeEeli39h/wb4bzXTgJhHpLyLdgUmBDY0xm4C3gT+KSFcRcdmV4adGOP4sIPi1J4FbReRosRxiHz9QP1MDICL/g5WDiEhELhaRwI19u729P8ombwKHicj3RMRj/xwjIkPt1/8MLDbGXAvMBB4L2f5KERkmIsVYzXhftoucauzjHhQtvbHSbIypAhZh5VhesYv+4vEN0FNEusW5PiLSETgaeCfebZRzNLionGOM+dIYszjMSzdiVZivAf4L/BN42n7tCawK7U+Aj4FXQ7b9PlCIlevZDryMVUcRzuPAFSIidnpeAu6xj7cL6+m8hzFmJVa9zwKsm+VwYH6Mt3cM8KGI7MZqWvszY8yaSCsbY3YBZ2HVZ2zEKja6H+ggIuOBscCP7NV/ARwlIlcE7eJ54Bl7u47ATfZ+6+z3NN8ubjs+hTQ/a7/30CKxiIwxn2E1FFhjH79frG2A87HqdDbGexzlHDFGJwtTKpSI/BOYbowpdzotyRKReVitw57M8HFOwcpBHmgyeEMRkQ+xWgcuz9QxVPponYtSYRhjvut0GvKBiHiAnwFPZjKwABhjjsvk/lV6abGYUg4TkZODOhO2+MliGh6LkIbQOpzgbYZitdzqi9WoQKlmWiymlFIq7TTnopRSKu20zgXo1auXGThwoNPJUO1cbZ2Xr3c24PX58bhd7N+1IyXFnpzZn1KhlixZssUY0zvcaxpcgIEDB7J4cbiWr0plR3lFNZNfXUYvr695mcfj5tcXDmfCqNIoW2Znf9lQXlHN1NmVbKytp19JERPHDM7ZtCqLiKyP9JqjxWIiMlasUV5Xi8ikMK93sEdSXS0iH4o9p4eInCkiS0Rkmf37jKBt5tn7XGr/hBviQ6mcMnV2JfVBgQCg3utj6uzKnNhfssorqhk9ZQ6DJs1k9JQ5lFdUR1xv8qvLqK6txwDVtfVMfnVZxPVTPZ7KPMdyLvbgeY9gDVBYBSwSkRl2x7SAa4DtxphDROQyrM5jl2INX3G+MWajiByB1Xku+BHnigid8FSW6dNofDbWhu/YHml5tveXjEDACAS5QMAAWl0D0YJhvNdLIsdTmedkzuVYYLUxZo0xphH4FzA+ZJ3xWL1/wepR/S0REWNMRVAv3RVAkYh0yEqqVdzS9TTaHvQrKUpoebb3l4xEck/pCIa5kltTFifrXEppOWJrFRDaSap5HWNMk4jsAHpi5VwCLgI+DhkN9u8i4sMamvz34Tp3icj1wPUABxxwQOjLOSOfn/zT8TQaTjLnJNfP48Qxg1s8dQMUedxMHDPYkf2l43wlEjD6lRRRHWF5Oo7n9XqpqqqioaEh7v2pfTp27Ej//v3xeOJvEJLXFfoicjhWUdlZQYuvMMZUi0gXrODyPVoO3Q6AMeZxrDGkKCsry8nOPvmezY/n5pLoTSyecxK6z9OH9OaVJdU5fR4D6UhXAExlf+m67hIJGOkIrtGOV1VVRZcuXRg4cCD2kHEqTsYYtm7dSlVVFYMGDYp7OyeDSzUthwPvz77h00PXqbLndOgGbAWwR2l9Dfi+MaZ5rg1jTLX9e5c9PtSxhAku+SBTT/7ZEuvmksxNLNY5CbfPFxZ+1Wp8d6fPY6Sgms70JLu/ZK+7WEEdIgeMdATXaAGqoWFn0oFle10j3+xooNHnp9DtYr9uHeleXJjwfvKViNCzZ09qampirxzEyeCyCDhURAZhBZHLsCaJCjYDax71BcB3gDnGGCMiJVjDi08yxjSPQmsHoBJjzBZ7zKPzgHcz/k6SEM8Tey5UyqYi1tNoMjexWOck3D4jZUudOo9O5kgzdd2Fe0+vLKnmoqNLmftZTVwBI9XgGi1ArVq1M+nAUr29Hr9dst7o81O9vZ66vU3samhqNwEnmXPnWHCx61B+itXSyw08bYxZISJ3Y81PMQNrAqTnRWQ1sI1909L+FGse8ztE5A572VlYw7HPtgOLGyuwPJG1NxWneG8u6SiHdlKsp9FkbmKxzkkiAcOp8+hUjjST112k9zT3sxrmTzojwlbpl+7c3zc7GpoDS4DfGLbuaWz+PxBwgDYdYBIVV2sxERktIp3sv68UkT/ZkyWlxJ4r+zBjzMHGmHvsZXfYgQV7vu6LjTGHGGOODcwhYYz5vTGmkzFmZNDPZnt+9KONMUcaYw43xvzMnhgpp8TbqmXimMEUeVpOd55KJa8TJowqZf6kM1g75VzmTzqjRb2IK8LTULSbWKxzEmnb0CM5eR6dypFm8rrL91x2JI2+aPO47eM3hm92ZK6xwLXXXsvKlStbLX/mmWf46U9/mvR+O3eONet08uLNuTwKjLCnMr0Fa2a+52g5W5+KU7xfxHRX8sYjG62qAk/QvjCDpsa6icU6J5GK4hIpnomV9lTPj1M50kxed/meyw4V/Dn36tKB7x1/AKcNjt4fO95ABFYluTEGlyu+3iBPPpnRKXkyIt7g0mTXdYwH/mqMeUpErom5lQorkS9iurP50SRbF5DoDTfcEzSAW4T74hieJNo5yWRATlddSbqbHccrnusu9LN88NKRcb03p95TJoR+zjW79vLIXKvNULQAU+iOHijWrVvHmDFjOO6441iyZAmXXHIJb775Jnv37uWCCy7gt7/9LXv27OGSSy6hqqoKn8/Hb37zGy699FJOO+00HnjgAcrKyvj73//OfffdR0lJCSNGjKBDB6uL31VXXcV5553Hd77zHcDKlezevZvdu3czfvx4tm/fjtfr5fe//z3jx7fsUrhp0yYuvfRSdu7cSVNTE48++ignn3xy0ucQ4g8uu0RkMnAlcIqIuAAdAS9OgS9sdW09bhF8xiC0rGjOhS9iMnUBydxwIz1B+41JSxDIVEBOV12JEzlSiB0AUgmeTr2nTAj3Oe9t8vP8wq8iBheXCPt16xhz31988QXPPvssO3fu5OWXX+ajjz7CGMO4ceN47733qKmpoV+/fsycOROAHTt2tNh+06ZN3HnnnSxZsoRu3bpx+umnM2rUqKjH7NixI6+99hpdu3Zly5YtHH/88YwbN65FJf0///lPxowZw+23347P56Ouri7me4kl3uByKVZLrmuMMV+LyAHA1JSP3g6EfmEDRUEGmgNMaRq+iNnu9BaQzA03X4tQ0lmvkM0cafAxIXIASDV4ZuI9OdH5NdLnuWXX3rDLBaG0e1FclfkHHnggxx9/PLfeeitvv/12c2DYvXs3X3zxBSeffDK33HILt912G+edd16r3MOHH37IaaedRu/e1kDEl156KZ9//nnUYxpj+NWvfsV7772Hy+Wiurqab775hv333795nWOOOYarr74ar9fLhAkTGDlyZMz3EktcwcUY8zXwp6D/vyJP+45kW6QiINgXWFJpTVNeUc1dM1ZQW+9tXlZdW8/N05by82lLEwpcydz0k7nh5msRSiaCYribJ8SXAwjetluRBxFrmP1o20QLALlWKe9Uk+1In3OvLuFHmDKYuFuJderUydrGGCZPnswNN9zQap2PP/6YWbNm8etf/5pvfetb3HHHHa3WCaegoAC/36r38fv9NDZaLdpeeOEFampqWLJkCR6Ph4EDB7YaqeCUU07hvffeY+bMmVx11VX84he/4Pvf/35cx40kaiGhiOwSkZ1hfnaJyM6UjtxOxPpipvLFDXz5ggNLQKDILZHxvJJpJZTMGFYTRpVy34XDKS0pQrACbKy6lkyMdpvoPtPdei/c2GsTX/qEiS9/EnM8ttBta+u9bK/zpjSGWy6MRxbMqbHCIn3O/3PiwLDrx6prCWfMmDE8/fTT7N5tzWRdXV3N5s2b2bhxI8XFxVx55ZVMnDiRjz/+uMV2xx13HP/5z3/YunUrXq+Xl156qfm1gQMHsmTJEgBmzJiB12vdF3bs2EGfPn3weDzMnTuX9etbj5K/fv169ttvP6677jquvfbaVsdNRtScizGmS8pHaOciPQUFv56saLmiYPEWbSRTbp5sLiSRIpRMPMEms8901yuE+/y8/tYt6MJ9frE++2TqgnItR+lUTirS53zq4N4tOlRC/HUtoc466yxWrVrFCSecAFiV7//4xz9YvXo1EydOxOVy4fF4ePTRR1ts17dvX+666y5OOOEESkpKWhRf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\n" }, "metadata": { "needs_background": "light" } } ], "source": [ "fit_expt.ls_fit(add_params=params, show_fit=True)" ] }, { "source": [ "## Batch processing\n", "\n", "Although there is no built-in method for batch fitting single-shot CARS spectra, it is relatively easy to parallelize the fitting processes to speed up computation. The following is an example implementation with [`joblib`](https://joblib.readthedocs.io/en/latest/).\n", "\n", "First, define a function that wraps around the module `carspy.CarsFit` used above:" ], "cell_type": "markdown", "metadata": {} }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "from joblib import Parallel, delayed\n", "\n", "def single_fit(expt_spec, nu, modes, params):\n", " fit_expt = CarsFit(expt_spec, nu_expt, fit_mode=modes, ref_fac=80)\n", " fit_expt.preprocess()\n", " fit_expt.ls_fit(add_params=params, show_fit=False)\n", " # optionally save the single fits to a specific directory 'save_dir'\n", " # fit_expt.save_fit(save_dir, \"%d\" % (frame,))" ] }, { "source": [ "Then, initiate parallel computation by assigning a larger than 1 integer value to *n_jobs* `joblib.Parallel` (check the number of available CPU cores first):" ], "cell_type": "markdown", "metadata": {} }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stderr", "text": [ "[Parallel(n_jobs=4)]: Using backend LokyBackend with 4 concurrent workers.\n", "[Parallel(n_jobs=4)]: Done 2 out of 8 | elapsed: 9.9s remaining: 29.8s\n", "[Parallel(n_jobs=4)]: Done 3 out of 8 | elapsed: 9.9s remaining: 16.6s\n", "[Parallel(n_jobs=4)]: Done 4 out of 8 | elapsed: 9.9s remaining: 9.9s\n", "[Parallel(n_jobs=4)]: Done 5 out of 8 | elapsed: 18.1s remaining: 10.8s\n", "[Parallel(n_jobs=4)]: Done 6 out of 8 | elapsed: 18.1s remaining: 6.0s\n", "[Parallel(n_jobs=4)]: Done 8 out of 8 | elapsed: 18.2s remaining: 0.0s\n", "[Parallel(n_jobs=4)]: Done 8 out of 8 | elapsed: 18.2s finished\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "[None, None, None, None, None, None, None, None]" ] }, "metadata": {}, "execution_count": 12 } ], "source": [ "Parallel(n_jobs=4, verbose=10)(delayed(single_fit)(\n", " expt_spec, nu, modes, params) for _ in range(8))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ] }