# Examples This page contains complete, ready-to-run examples for every supported database and function. Replace the paths with your own data locations. ## CPU / GPU kwargs you can reuse ```python # CPU (default) COMPUTE_CPU = dict( ncputrans=4, ncpufiles=1, chunk_size=100000, run_mode='CPU', ) # GPU (AUTO backend, recommended) COMPUTE_GPU_AUTO = dict( ncputrans=4, ncpufiles=1, chunk_size=100000, run_mode='GPU', gpu_backend='AUTO', # PyTorch-CUDA -> CuPy-CUDA -> MPS -> CPU fallback gpu_batch_lines=8192, # memory-control knob gpu_batch_grid=256, # memory-control knob ) # GPU (CUDA policy: PyTorch-CUDA -> CuPy-CUDA -> MPS -> CPU fallback) COMPUTE_GPU_CUDA = dict( run_mode='GPU', gpu_backend='CUDA', gpu_batch_lines=8192, gpu_batch_grid=256, ) # GPU (force PyTorch CUDA only) COMPUTE_GPU_TORCH = dict( run_mode='GPU', gpu_backend='PyTorch-CUDA', gpu_batch_lines=8192, gpu_batch_grid=256, ) # GPU (force CuPy CUDA only) COMPUTE_GPU_CUPY = dict( run_mode='GPU', gpu_backend='CuPy-CUDA', gpu_batch_lines=8192, gpu_batch_grid=256, ) # GPU (force PyTorch MPS) COMPUTE_GPU_MPS = dict( run_mode='GPU', gpu_backend='MPS', gpu_batch_lines=8192, gpu_batch_grid=256, ) ``` Use `COMPUTE_GPU_AUTO` with GPU-enabled functions: ```python px.cooling_functions(..., **COMPUTE_GPU_AUTO) px.stick_spectra(..., **COMPUTE_GPU_AUTO) px.cross_sections(..., **COMPUTE_GPU_AUTO) px.stick_spectra_cross_section(..., **COMPUTE_GPU_AUTO) ``` --- ## ExoMol Examples ### Conversion (ExoMol -> HITRAN) ```python import pyexocross as px px.conversion( database='ExoMol', molecule='MgH', isotopologue='24Mg-1H', dataset='XAB', species_id=501, read_path='/path/to/Databases/ExoMol/', save_path='/path/to/output/', logs_path='/path/to/output/log/exomol_conversion.log', ncputrans=4, ncpufiles=1, chunk_size=100000, qnslabel_list=['+/-', 'e/f', 'ElecState', 'v', 'Lambda', 'Sigma', 'Omega'], qnsformat_list=['%1s', '%1s', '%12s', '%3d', '%3d', '%5.1f', '%5.1f'], conversion_format='HITRAN', conversion_min_freq=0, conversion_max_freq=30000, conversion_unc=0.01, conversion_threshold=1e-30, global_qn_label_list=['ElecState', 'v', 'Omega'], global_qn_format_list=['%9s', '%2d', '%4s'], local_qn_label_list=['J', 'e/f'], local_qn_format_list=['%5.1f', '%2s'] ) ``` ### Partition Functions ```python import pyexocross as px px.partition_functions( database='ExoMol', molecule='MgH', isotopologue='24Mg-1H', dataset='XAB', read_path='/path/to/Databases/ExoMol/', save_path='/path/to/output/', logs_path='/path/to/output/log/exomol_pf.log', ntemp=1, tmax=5000 ) ``` ### Specific Heats ```python import pyexocross as px px.specific_heats( database='ExoMol', molecule='MgH', isotopologue='24Mg-1H', dataset='XAB', read_path='/path/to/Databases/ExoMol/', save_path='/path/to/output/', logs_path='/path/to/output/log/exomol_cp.log', ntemp=1, tmax=5000 ) ``` ### Cooling Functions ```python import pyexocross as px px.cooling_functions( database='ExoMol', molecule='MgH', isotopologue='24Mg-1H', dataset='XAB', read_path='/path/to/Databases/ExoMol/', save_path='/path/to/output/', logs_path='/path/to/output/log/exomol_cf.log', ncputrans=4, ncpufiles=1, chunk_size=100000, ntemp=1, tmax=5000 ) ``` ### Lifetimes ```python import pyexocross as px px.lifetimes( database='ExoMol', molecule='MgH', isotopologue='24Mg-1H', dataset='XAB', read_path='/path/to/Databases/ExoMol/', save_path='/path/to/output/', logs_path='/path/to/output/log/exomol_lifetime.log', ncputrans=4, ncpufiles=1, chunk_size=100000, compress=False ) ``` ### Oscillator Strengths ```python import pyexocross as px px.oscillator_strengths( database='ExoMol', molecule='MgH', isotopologue='24Mg-1H', dataset='XAB', read_path='/path/to/Databases/ExoMol/', save_path='/path/to/output/', logs_path='/path/to/output/log/exomol_os.log', ncputrans=4, ncpufiles=1, chunk_size=100000, gf_or_f='f', plot=True, plot_method='log', plot_wn_wl='WN', plot_unit='cm-1', limit_yaxis=1e-30 ) ``` ### Stick Spectra (LTE) ```python import pyexocross as px px.stick_spectra( database='ExoMol', molecule='MgH', isotopologue='24Mg-1H', dataset='XAB', read_path='/path/to/Databases/ExoMol/', save_path='/path/to/output/', logs_path='/path/to/output/log/exomol_stick.log', ncputrans=4, ncpufiles=1, chunk_size=100000, temperatures=[1000, 2000], wn_wl='WN', wn_wl_unit='cm-1', min_range=0, max_range=30000, abs_emi='Ab', plot=True, plot_method='log', plot_wn_wl='WN', plot_unit='cm-1', limit_yaxis=1e-30 ) ``` ### Stick Spectra (Non-LTE, Treanor Method) ```python import pyexocross as px px.stick_spectra( database='ExoMol', molecule='MgH', isotopologue='24Mg-1H', dataset='XAB', read_path='/path/to/Databases/ExoMol/', save_path='/path/to/output/', logs_path='/path/to/output/log/exomol_stick_nlte.log', ncputrans=4, ncpufiles=1, chunk_size=100000, qnslabel_list=['+/-', 'e/f', 'ElecState', 'v', 'Lambda', 'Sigma', 'Omega'], qnsformat_list=['%1s', '%1s', '%12s', '%3d', '%3d', '%5.1f', '%5.1f'], nlte_method='T', tvib_list=[1000, 2000, 3000], trot_list=[100, 200], vib_label=['v', 'ElecState'], rot_label=['J', 'e/f'], wn_wl='WN', wn_wl_unit='cm-1', min_range=0, max_range=30000, abs_emi='Ab', unc_filter=0.01, threshold=1e-30, qns_filter={ '+/-': [], 'e/f': [], 'ElecState': [], 'v': ['0,', '1,', '2,', '3,', '4,', ',0', ',1', ',2', ',3', ',4'], } ) ``` ### Cross Sections (LTE) ```python import pyexocross as px px.cross_sections( database='ExoMol', molecule='MgH', isotopologue='24Mg-1H', dataset='XAB', read_path='/path/to/Databases/ExoMol/', save_path='/path/to/output/', logs_path='/path/to/output/log/exomol_xsec.log', ncputrans=4, ncpufiles=1, chunk_size=100000, temperatures=[1000, 2000, 3000], pressures=[1.0, 5.0], wn_wl='WN', wn_wl_unit='cm-1', min_range=0, max_range=30000, bin_size=0.1, profile='SciPyVoigt', predissociation=False, broadeners=['Default'], ratios=[1.0], cutoff=25.0, abs_emi='Ab', plot=True, plot_method='log', plot_wn_wl='WN', plot_unit='cm-1', limit_yaxis=1e-30 ) ``` ### Cross Sections (Non-LTE, Treanor Method) ```python import pyexocross as px px.cross_sections( database='ExoMol', molecule='MgH', isotopologue='24Mg-1H', dataset='XAB', read_path='/path/to/Databases/ExoMol/', save_path='/path/to/output/', logs_path='/path/to/output/log/exomol_xsec_nlte.log', ncputrans=4, ncpufiles=1, chunk_size=100000, qnslabel_list=['+/-', 'e/f', 'ElecState', 'v', 'Lambda', 'Sigma', 'Omega'], qnsformat_list=['%1s', '%1s', '%12s', '%3d', '%3d', '%5.1f', '%5.1f'], nlte_method='T', tvib_list=[1000, 2000, 3000], trot_list=[100, 200], vib_label=['v', 'ElecState'], rot_label=['J', 'e/f'], pressures=[1.0, 5.0], wn_wl='WN', wn_wl_unit='cm-1', min_range=0, max_range=30000, bin_size=0.1, profile='SciPyVoigt', predissociation=False, broadeners=['Default'], ratios=[1.0], cutoff=25.0, abs_emi='Em', plot=True, plot_method='log', plot_wn_wl='WN', plot_unit='cm-1', limit_yaxis=1e-30 ) ``` --- ## ExoMolHR Examples ### Conversion (ExoMolHR -> HITRAN) ```python import pyexocross as px px.conversion( database='ExoMolHR', molecule='NO', isotopologue='14N-16O', species_id=81, read_path='/path/to/Databases/ExoMolHR/', save_path='/path/to/output/', logs_path='/path/to/output/log/exomolhr_conversion.log', ncputrans=1, ncpufiles=1, chunk_size=100000, conversion_format='HITRAN', conversion_min_freq=24, conversion_max_freq=53452, conversion_unc=0.01, conversion_threshold=1e-30, global_qn_label_list=['ElecState', 'v', 'Omega'], global_qn_format_list=['%9s', '%2d', '%4s'], local_qn_label_list=['J', 'e/f'], local_qn_format_list=['%7.1f', '%1s'] ) ``` ### Stick Spectra (LTE) ```python import pyexocross as px px.stick_spectra( database='ExoMolHR', molecule='NO', isotopologue='14N-16O', read_path='/path/to/Databases/ExoMolHR/', save_path='/path/to/output/', logs_path='/path/to/output/log/exomolhr_stick.log', ncputrans=1, ncpufiles=1, chunk_size=100000, temperatures=[1000, 2000], wn_wl='WN', wn_wl_unit='cm-1', min_range=24, max_range=53452, abs_emi='Ab', plot=True, plot_method='log', plot_wn_wl='WN', plot_unit='cm-1', limit_yaxis=1e-30 ) ``` ### Stick Spectra (Non-LTE, Treanor Method) ```python import pyexocross as px px.stick_spectra( database='ExoMolHR', molecule='NO', isotopologue='14N-16O', read_path='/path/to/Databases/ExoMolHR/', save_path='/path/to/output/', logs_path='/path/to/output/log/exomolhr_stick_nlte.log', ncputrans=1, ncpufiles=1, chunk_size=100000, nlte_method='T', tvib_list=[1000, 2000], trot_list=[296], vib_label=['v', 'ElecState'], rot_label=['J', 'e/f'], wn_wl='WN', wn_wl_unit='cm-1', min_range=24, max_range=53452, abs_emi='Ab', unc_filter=0.01, threshold=1e-30, qns_filter={ 'e/f': [], 'ElecState': [], 'v': [], } ) ``` ### Cross Sections (LTE) ```python import pyexocross as px px.cross_sections( database='ExoMolHR', molecule='NO', isotopologue='14N-16O', read_path='/path/to/Databases/ExoMolHR/', save_path='/path/to/output/', logs_path='/path/to/output/log/exomolhr_xsec.log', ncputrans=1, ncpufiles=1, chunk_size=100000, temperatures=[296, 3000], pressures=[1.0, 5.0], wn_wl='WN', wn_wl_unit='cm-1', min_range=24, max_range=53452, bin_size=0.1, profile='SciPyVoigt', predissociation=False, broadeners=['Default'], ratios=[1.0], alpha_hwhm=3.0, gamma_hwhm=None, cutoff=25.0, abs_emi='Ab', plot=True, plot_method='log', plot_wn_wl='WN', plot_unit='cm-1', limit_yaxis=1e-30 ) ``` ### Cross Sections (Non-LTE, Treanor Method) ```python import pyexocross as px px.cross_sections( database='ExoMolHR', molecule='NO', isotopologue='14N-16O', read_path='/path/to/Databases/ExoMolHR/', save_path='/path/to/output/', logs_path='/path/to/output/log/exomolhr_xsec_nlte.log', ncputrans=1, ncpufiles=1, chunk_size=100000, nlte_method='T', tvib_list=[1000, 2000, 3000], trot_list=[100, 200], vib_label=['v', 'ElecState'], rot_label=['J', 'e/f'], pressures=[1.0, 5.0], wn_wl='WN', wn_wl_unit='cm-1', min_range=24, max_range=53452, bin_size=0.1, profile='SciPyVoigt', predissociation=False, broadeners=['Default'], ratios=[1.0], alpha_hwhm=3.0, gamma_hwhm=None, cutoff=25.0, abs_emi='Em', plot=True, plot_method='log', plot_wn_wl='WN', plot_unit='cm-1', limit_yaxis=1e-30 ) ``` --- ## ExoAtom Examples ### Conversion (ExoAtom -> HITRAN) ```python import pyexocross as px px.conversion( database='ExoAtom', atom='Ar', dataset='NIST', species_id=601, read_path='/path/to/Databases/ExoAtom/', save_path='/path/to/output/', logs_path='/path/to/output/log/exomol.log', ncputrans=4, ncpufiles=1, chunk_size=100000, qnslabel_list=['configuration', 'Multiple', 'parity'], qnsformat_list=['%20s', '%10s', '%2s'], conversion_format='HITRAN', conversion_min_freq=0, conversion_max_freq=115400, conversion_unc=None, conversion_threshold=None, global_qn_label_list=['configuration'], global_qn_format_list=['%20s'], local_qn_label_list=['J', 'Multiple', 'parity'], local_qn_format_list=['%5.1f', '%10s', '%1s'] ) ``` ### Partition Functions ```python import pyexocross as px px.partition_functions( database='ExoAtom', atom='Ar', dataset='NIST', read_path='/path/to/Databases/ExoAtom/', save_path='/path/to/output/', logs_path='/path/to/output/log/exoatom_pf.log', ntemp=1, tmax=6000 ) ``` ### Specific Heats ```python import pyexocross as px px.specific_heats( database='ExoAtom', atom='Ar', dataset='NIST', read_path='/path/to/Databases/ExoAtom/', save_path='/path/to/output/', logs_path='/path/to/output/log/exoatom_cp.log', ntemp=1, tmax=6000 ) ``` ### Cooling Functions ```python import pyexocross as px px.cooling_functions( database='ExoAtom', atom='Ar', dataset='NIST', read_path='/path/to/Databases/ExoAtom/', save_path='/path/to/output/', logs_path='/path/to/output/log/exoatom_cf.log', ncputrans=4, ncpufiles=1, chunk_size=100000, ntemp=1, tmax=6000 ) ``` ### Lifetimes ```python import pyexocross as px px.lifetimes( database='ExoAtom', atom='Ar', dataset='NIST', read_path='/path/to/Databases/ExoAtom/', save_path='/path/to/output/', logs_path='/path/to/output/log/exoatom_lifetime.log', ncputrans=4, ncpufiles=1, chunk_size=100000, compress=False ) ``` ### Oscillator Strengths ```python import pyexocross as px px.oscillator_strengths( database='ExoAtom', atom='Ar', dataset='NIST', read_path='/path/to/Databases/ExoAtom/', save_path='/path/to/output/', logs_path='/path/to/output/log/exoatom_os.log', ncputrans=4, ncpufiles=1, chunk_size=100000, gf_or_f='f', plot=True, plot_method='log', plot_wn_wl='WN', plot_unit='cm-1', limit_yaxis=1e-30 ) ``` ### Stick Spectra (LTE) ```python import pyexocross as px px.stick_spectra( database='ExoAtom', atom='Ar', dataset='NIST', read_path='/path/to/Databases/ExoAtom/', save_path='/path/to/output/', logs_path='/path/to/output/log/exoatom_stick_nlte.log', ncputrans=4, ncpufiles=1, chunk_size=100000, qnslabel_list=['configuration', 'Multiple', 'parity'], qnsformat_list=['%20s', '%10s', '%2s'], temperatures=[300, 3000], wn_wl='WN', wn_wl_unit='cm-1', min_range=0, max_range=115400, abs_emi='Ab', qns_filter={ 'configuration': [], 'Multiple': [], 'parity': [], }, plot=True, plot_method='log', plot_wn_wl='WN', plot_unit='cm-1', limit_yaxis=1e-30 ) ``` ### Stick Spectra (Non-LTE, Population Method) ```python import pyexocross as px px.stick_spectra( database='ExoAtom', atom='Ar', dataset='NIST', read_path='/path/to/Databases/ExoAtom/', save_path='/path/to/output/', logs_path='/path/to/output/log/exoatom_stick_nlte.log', ncputrans=4, ncpufiles=1, chunk_size=100000, qnslabel_list=['configuration', 'Multiple', 'parity'], qnsformat_list=['%20s', '%10s', '%2s'], nlte_method='P', nlte_path='/path/to/Databases/ExoAtom/Ar/NIST/Ar_Ids.csv', temperatures=[300, 3000], wn_wl='WN', wn_wl_unit='cm-1', min_range=0, max_range=115400, abs_emi='Ab', qns_filter={ 'configuration': [], 'Multiple': [], 'parity': [], }, plot=True, plot_method='log', plot_wn_wl='WN', plot_unit='cm-1', limit_yaxis=1e-30 ) ``` ### Cross Sections (LTE) ```python import pyexocross as px px.cross_sections( database='ExoAtom', atom='Ar', dataset='NIST', read_path='/path/to/Databases/ExoAtom/', save_path='/path/to/output/', logs_path='/path/to/output/log/exoatom_stick_nlte.log', ncputrans=4, ncpufiles=1, chunk_size=100000, temperatures=[1000, 2000, 3000], pressures=[1.0, 10.0], wn_wl='WN', wn_wl_unit='cm-1', min_range=0, max_range=115400, bin_size=1, profile='SciPyVoigt', predissociation=False, broadeners=['Default'], ratios=[1.0], cutoff=25.0, abs_emi='Ab', plot=True, plot_method='log', plot_wn_wl='WN', plot_unit='cm-1', limit_yaxis=1e-30 ) ``` ### Cross Sections (Non-LTE, Treanor Method) ```python import pyexocross as px px.cross_sections( database='ExoAtom', atom='Ar', dataset='NIST', read_path='/path/to/Databases/ExoMol/', save_path='/path/to/output/', logs_path='/path/to/output/log/exomol_xsec_nlte.log', ncputrans=4, ncpufiles=1, chunk_size=100000, qnslabel_list=['configuration', 'Multiple', 'parity'], qnsformat_list=['%20s', '%10s', '%1s'], nlte_method='T', tvib_list=[1000], trot_list=[100, 200], vib_label=['parity'], rot_label=['J'], pressures=[1.0, 5.0], wn_wl='WN', wn_wl_unit='cm-1', min_range=0, max_range=30000, bin_size=1, profile='SciPyVoigt', predissociation=False, broadeners=['Default'], ratios=[1.0], cutoff=25.0, abs_emi='Em', plot=True, plot_method='log', plot_wn_wl='WN', plot_unit='cm-1', limit_yaxis=1e-30 ) ``` ### Cross Sections (Non-LTE, Population Method) ```python import pyexocross as px px.cross_sections( database='ExoAtom', atom='Ar', dataset='NIST', read_path='/path/to/Databases/ExoAtom/', save_path='/path/to/output/', logs_path='/path/to/output/log/exoatom_xsec_nlte.log', ncputrans=4, ncpufiles=1, chunk_size=100000, qnslabel_list=['configuration', 'Multiple', 'parity'], qnsformat_list=['%20s', '%10s', '%2s'], nlte_method='P', nlte_path='/path/to/Databases/ExoAtom/Ar/NIST/Ar_Ids.csv', wn_wl='WN', wn_wl_unit='cm-1', min_range=0, max_range=115400, bin_size=0.1, profile='Gaussian', broadeners=['Default'], ratios=[1.0], abs_emi='Ab', plot=True, plot_method='log', plot_wn_wl='WN', plot_unit='cm-1', limit_yaxis=1e-30 ) ``` --- ## HITRAN Examples ### Conversion (HITRAN -> ExoMol) ```python import pyexocross as px px.conversion( database='HITRAN', molecule='NO', isotopologue='14N-16O', dataset='NO-HITRAN', species_id=81, read_path='/path/to/Databases/HITRAN/', save_path='/path/to/output/', logs_path='/path/to/output/log/hitran.log', chunk_size=100000, qnslabel_list=['J', 'X', 'Omega', 'v1', 'Sym', 'F'], qnsformat_list=['%5.1f', '%2s', '%3s', '%2d', '%1s', '%5s'], conversion_format='ExoMol', conversion_min_freq=0, conversion_max_freq=63000, conversion_unc=None, conversion_threshold=None, global_qn_label_list=['X', 'Omega', 'v1'], global_qn_format_list=['%2s', '%3s', '%2d'], local_qn_label_list=['Br', 'Sym', 'F'], local_qn_format_list=['%2s', '%1s', '%5s'] ) ``` ### Partition Functions ```python import pyexocross as px px.partition_functions( database='HITRAN', molecule='NO', isotopologue='14N-16O', dataset='NO-HITRAN', species_id=81, read_path='/path/to/Databases/HITRAN/', save_path='/path/to/output/', logs_path='/path/to/output/log/hitran_pf.log', chunk_size=100000, qnslabel_list=['J', 'X', 'Omega', 'v1', 'Sym', 'F'], qnsformat_list=['%5.1f', '%2s', '%3s', '%2d', '%1s', '%5s'], ntemp=1, tmax=5000 ) ``` ### Specific Heats ```python import pyexocross as px px.specific_heats( database='HITRAN', molecule='NO', isotopologue='14N-16O', dataset='NO-HITRAN', species_id=81, read_path='/path/to/Databases/HITRAN/', save_path='/path/to/output/', logs_path='/path/to/output/log/hitran_cp.log', chunk_size=100000, qnslabel_list=['J', 'X', 'Omega', 'v1', 'Sym', 'F'], qnsformat_list=['%5.1f', '%2s', '%3s', '%2d', '%1s', '%5s'], ntemp=1, tmax=5000 ) ``` ### Cooling Functions ```python import pyexocross as px px.cooling_functions( database='HITRAN', molecule='NO', isotopologue='14N-16O', dataset='NO-HITRAN', species_id=81, read_path='/path/to/Databases/HITRAN/', save_path='/path/to/output/', logs_path='/path/to/output/log/hitran_cf.log', chunk_size=100000, ntemp=1, tmax=5000, read_path='/Users/beryl/Academic/UCL/PhD/Data/database/HITRAN/', save_path='/Users/beryl/Academic/UCL/PhD/Data/pyexocross/', logs_path='/Users/beryl/Academic/UCL/PhD/Data/pyexocross/log/test_api_hitran.log' ) ``` ### Lifetimes ```python import pyexocross as px px.lifetimes( database='HITRAN', molecule='NO', isotopologue='14N-16O', dataset='NO-HITRAN', species_id=81, read_path='/path/to/Databases/HITRAN/', save_path='/path/to/output/', logs_path='/path/to/output/log/hitran_lifetime.log', ncputrans=4, ncpufiles=1, chunk_size=100000, qnslabel_list=['J', 'X', 'Omega', 'v1', 'Sym', 'F'], qnsformat_list=['%5.1f', '%2s', '%3s', '%2d', '%1s', '%5s'], compress=False ) ``` ### Oscillator Strengths ```python import pyexocross as px px.oscillator_strengths( database='HITRAN', molecule='NO', isotopologue='14N-16O', dataset='NO-HITRAN', species_id=81, read_path='/path/to/Databases/HITRAN/', save_path='/path/to/output/', logs_path='/path/to/output/log/hitran_os.log', chunk_size=100000, gf_or_f='f', plot=True, plot_method='log', plot_wn_wl='WN', plot_unit='cm-1', limit_yaxis=1e-30 ) ``` ### Stick Spectra (LTE) ```python import pyexocross as px px.stick_spectra( database='HITRAN', molecule='NO', isotopologue='14N-16O', dataset='NO-HITRAN', species_id=81, read_path='/path/to/Databases/HITRAN/', save_path='/path/to/output/', logs_path='/path/to/output/log/hitran_stick_nlte.log', chunk_size=100000, temperatures=[296, 1000], wn_wl='WN', wn_wl_unit='cm-1', min_range=0, max_range=30000, abs_emi='Ab', unc_filter=0.01, threshold=1e-30, plot=True, plot_method='log', plot_wn_wl='WN', plot_unit='cm-1', limit_yaxis=1e-30 ) ``` ### Stick Spectra (Non-LTE, Treanor Method) ```python import pyexocross as px px.stick_spectra( database='HITRAN', molecule='NO', isotopologue='14N-16O', dataset='NO-HITRAN', species_id=81, read_path='/path/to/Databases/HITRAN/', save_path='/path/to/output/', logs_path='/path/to/output/log/hitran_stick_nlte.log', chunk_size=100000, qnslabel_list=['J', 'X', 'Omega', 'v1', 'Sym', 'F'], qnsformat_list=['%5.1f', '%2s', '%3s', '%2d', '%1s', '%5s'], nlte_method='T', tvib_list=[1000, 2000], trot_list=[300, 400], vib_label=['v1', 'X'], rot_label=['J'], wn_wl='WN', wn_wl_unit='cm-1', min_range=0, max_range=30000, abs_emi='Ab', unc_filter=0.01, threshold=1e-35, plot=True, plot_method='log', plot_wn_wl='WN', plot_unit='cm-1', limit_yaxis=1e-30 ) ``` ### Cross Sections (with Air + Self Broadening) ```python import pyexocross as px px.cross_sections( database='HITRAN', molecule='NO', isotopologue='14N-16O', dataset='NO-HITRAN', species_id=81, read_path='/path/to/Databases/HITRAN/', save_path='/path/to/output/', logs_path='/path/to/output/log/hitran_xsec.log', chunk_size=100000, qnslabel_list=['J', 'X', 'Omega', 'v1', 'Sym', 'F'], qnsformat_list=['%5.1f', '%2s', '%3s', '%2d', '%1s', '%5s'], temperatures=[1000, 2000], pressures=[0.5, 1.0], wn_wl='WN', wn_wl_unit='cm-1', min_range=0, max_range=30000, bin_size=0.1, profile='SciPyVoigt', broadeners=['Air', 'Self'], ratios=[0.7, 0.3], cutoff=25.0, abs_emi='Ab', plot=True, plot_method='log', plot_unit='cm-1', limit_yaxis=1e-30 ) ``` --- ## Batch Processing Example Run multiple species or temperatures in a loop: ```python import pyexocross as px species_list = [ {'molecule': 'NO', 'isotopologue': '14N-16O', 'dataset': 'XABC'}, {'molecule': 'NO', 'isotopologue': '15N-16O', 'dataset': 'XABC'}, {'molecule': 'MgH', 'isotopologue': '24Mg-1H', 'dataset': 'XAB'}, ] COMMON = dict( database='ExoMol', read_path='/path/to/Databases/ExoMol/', save_path='/path/to/output/', logs_path='/path/to/output/log/exomol_multiple_species.log' ) COMPUTE_PARAMS = dict( ncputrans=4, ncpufiles=1, chunk_size=100000, ) QN_PARAMS = dict( qnslabel_list=['+/-', 'e/f', 'ElecState', 'v', 'Lambda', 'Sigma', 'Omega'], qnsformat_list=['%1s', '%1s', '%12s', '%3d', '%3d', '%5.1f', '%5.1f'], ) RANGE_PARAMS = dict( wn_wl='WN', wn_wl_unit='cm-1', min_range=0, max_range=30000, abs_emi='Ab', unc_filter=0.01, threshold=1e-30, ) LINE_PROFILE = dict( profile='Gaussian', broadeners=['Default'], ratios=[1.0], alpha_hwhm=None, gamma_hwhm=None, ) PLOT = dict( plot=True, plot_method='log', plot_wn_wl='WN', plot_unit='cm-1', limit_yaxis=1e-30, ) for species in species_list: px.cross_sections( **COMMON, **COMPUTE_PARAMS, **QN_PARAMS, **RANGE_PARAMS, **LINE_PROFILE, **PLOT, molecule=species['molecule'], isotopologue=species['isotopologue'], dataset=species['dataset'], temperatures=[1000, 3000], bin_size=1, predissociation=False, cutoff=25.0, ) ```