This is the SDSS-V Local Volume Mapper (LVM) Data Analysis Pipeline (DAP) official repository.
It comprises a set of routines, and two main scripts:
lvm-dap : Allows to fit individual and RSS spectra, using a set of command-line given entries
lvm-dap-conf : Allows to fit a fits-file in the LVM format as produced by the LVM-DRP, i.e., the RSS corresponding to a single pointing, using a configuration file to define the parametes.
We recommend installing in a virtual environment to avoid dependencies crashing. Some popular options are miniconda, venv, pipenv. We recommend venv.
The LVM-dap heavy depends on pyPipe3D (http://ifs.astroscu.unam.mx/pyPipe3D/ , Lacerda et al. 2022). That software should be installed before installing the LVM-dap.
The most simple way to install all the required software is the following one (thanks Knox Long):
conda create --name lvmdap python=3.11
conda activate lvmdap
conda install numpy=1.23.5 (** not to have problems with the new implemenation of np.float / np.int)
or
pip install numpy==1.23.5
git clone https://gitlab.com/pipe3d/pyPipe3D.git
cd pyPipe3D
pip install . --user
cd ..
git clone git@github.com:sdss/lvmdap.git
cd lvmdap
pip install . --user
Then you need to download the content of the following directory in your computer:
We recommend you to define three environmental variables:
LVM_DAP :
The directory in which the DAP is installed
LVM_DAP_CFG :
The directory in which the configuration files are stored nominally ${LVM_DAP}/_legacy
LVM_DAP_RSP :
The directory in which the RSP (stellar templates) are stored that would be the directory were is stored the content of the "lvmdap_fitting-data" URL e.g., export LVM_DAP_RSP="_fitting_data";
We will assume hereafter that LVM_DAP_RSP corresponds to "_fitting_data" for simplicity.
If the installation went successfully (and you downloaded the data) your tree directory should look like:
├── dist
├── lvmdap
├── _examples
├── _fitting_data
├── _legacy
├── notebooks
├── poetry.lock
├── pyproject.toml
├── README.md
├── README.rst
└── setup.py
and you should be able to run the following examples
(1) Go to the _examples directory and run the script fit_6109_strong.sh. If everything runs ok, the you have the required files to run the DAP.
cd _examples/
chmod +x fit_6109_strong.sh
fit_6109_strong.sh
(2) Download the lvmSFrame-example.fits.gz file in the LVM format from the following location:
or from the official repositories of the LVM and store it in the "data" subdirectory inside the "_examples" directory.
Then, being in the location where you have downloaded the "lvmdap" repository (i.e. outside the "_examples" directory), run the following script:
lvm-dap-conf _examples/data/lvmSFrame-example.fits.gz dap-4-example _legacy/lvm-dap_fast.yaml
or
lvm-dap-conf _examples/data/lvmCFrame-example.fits dap-4-example _legacy/lvm-dap_fast.yaml
Depending if you have downloaded the compressed or uncompressed files.
'''
Both two scripts, lvm-dap
and 'lvm-dap-conf', implement the Resolved Stellar Population method (Mejia-Narvaez+, in prep.).
usage: lvm-dap-conf [-h] [-d] lvm_file label config_yaml
lvm_file: Fitsfile in the LVM format, comprising the following extensions:
No. Name Ver Type Cards Dimensions Format
0 PRIMARY 1 PrimaryHDU 556 ()
1 FLUX 1 ImageHDU 22 (12401, 1944) float32
2 IVAR 1 ImageHDU 19 (12401, 1944) float32
3 MASK 1 ImageHDU 19 (12401, 1944) uint8
4 WAVE 1 ImageHDU 18 (12401,) float64
5 LSF 1 ImageHDU 19 (12401, 1944) float32
6 SKY 1 ImageHDU 19 (12401, 1944) float32
7 SKY_IVAR 1 ImageHDU 20 (12401, 1944) float32
8 SLITMAP 1 BinTableHDU 51 1944R x 21C [K, K, 3A, K, 8A, 5A, K, 4A, D, D, D, 6A, 8A, K, 17A, D, K, K, K, D, D]
label: string to label the current run
config_ymal: config file including the entries required to fit the spectra
(see the example in provided in the link above)
---
# output directory
output_path: "/disk-a/sanchez/LVM/LVM/ver_231113/output_dap/"
# LVM-DAP software directory
lvmdap_dir: "/home/sanchez/sda2/code/python/lvmdap"
# rsp-file for the full stellar decomposition
rsp-file: "../_fitting-data/_basis-binned_mastar/stellar-basis-spectra-binned-4-mastar.fits.gz"
# rsp-file for the derivation of the non-linear (NL) parameters (vel, vel_disp, Av)
rsp-nl-file: "../_fitting-data/_basis-binned_mastar/stellar-basis-spectra-binned-4-mastar.fits.gz"
# approximate instrumental resolution in AA
sigma-inst: 1
# input format for fitting the data (deprecated)
input-fmt: rss
# redshift range (or velocity) to explore in the NL
redshift:
- 0.0 # guess
- 0.0001 # delta
- -0.0003 # min
- 0.0003 # max
# velocity dispersion in km/s range to explore in the NL
sigma:
- 1 # guess
- 5 # delta
- 1 # min
- 15 # max
# Dust attenuation in the V-band
AV:
- 0 # guess
- 0.3 # delta
- 0.0 # min
- 1.5 # max
# list of strong emission lines to analyze
emission-lines-file: ../_legacy/emission_lines_strong.LVM
# emission-lines-file-long: ../_legacy/emission_lines_long_list.LVM
# full list of emission lines to analyze using the non-parametric fitting procedure
emission-lines-file-long: ../_legacy/emission_lines_strong.LVM
# Wavelength range in which the full stellar decomposition is peformed
w-range:
- 3700
- 9500
# Wavelength range in which the kinematics parameters (vel,vel_disp) are fitted
w-range-nl:
- 3800
- 4200
# File comprising the wavelength bands to be masked (e.g., the bands between spectrographs)
mask-file: ../_legacy/mask_bands_LVM.txt
# File with a set wavelengths to mask (narrow range around the designed wavelength)
mask_file: none
# Configuration file defining the emission lines to fit during the RSP fitting.
config-file: ../_legacy/auto_ssp_LVM.config
# Flag indicating if any previous file with the same label should be removed
clear_outputs: True
# not used so far. Possible binning the wavelength range to speed-up the fitting procedure
bin-nl: 3
# not used so far. Possible binning in the derivation of Av to speed-up the process
bin-AV: 50
# Flag to ignore the emission line fitting during the RSP analysis
ignore_gas: False
# Initial guess for the velocity dispersion for the emission lines analysis in AA
sigma-gas: 0.8
# Flag to perform the emission line fitting one once during the RSP analysis
single-gas-fit: True
# Flag indicating if instead of a decomposition the code looks for the best RSP in the template that
# matchs with the observed spectra
single_rsp: False
# Flag indicating wether to generate plots or not along the fitting process
do_plots: 1
# Flux range for plotting. When set ot [-1,1] it will automatically determine the required range
flux-scale-org:
- -1 # min
- 1 # max
# Range of fibers to fit in case that you do not want to fit the full RSS
ny_range:
- 500
- 503
# Not used so far: range of spectral pixels to perform the fitting
nx_range:
- 100
- 3000
usage: lvm-dap [-h] [--input-fmt INPUT_FMT] [--error-file ERROR_FILE] [--config-file CONFIG_FILE]
[--emission-lines-file EMISSION_LINES_FILE] [--mask-file MASK_FILE] [--sigma-gas SIGMA_GAS] [--ignore-gas]
[--rsp-nl-file RSP_NL_FILE] [--plot PLOT] [--flux-scale min max] [--w-range wmin wmax] [--w-range-nl wmin2 wmax2]
[--redshift input_redshift delta_redshift min_redshift max_redshift]
[--sigma input_sigma delta_sigma min_sigma max_sigma] [--AV input_AV delta_AV min_AV max_AV]
[--ext-curve {CCM,CAL}] [--RV RV] [--single-rsp] [--n-mc N_MC] [-o path] [-c] [-v] [-d]
spectrum-file rsp-file sigma-inst label
Run the spectral fitting procedure for the LVM
positional arguments:
spectrum-file input spectrum to fit
rsp-file the resolved stellar population basis
sigma-inst the standard deviation in wavelength of the Gaussian kernel to downgrade the resolution of the models to
match the observed spectrum. This is: sigma_inst^2 = sigma_obs^2 - sigma_mod^2
label string to label the current run
optional arguments:
-h, --help show this help message and exit
--input-fmt INPUT_FMT
the format of the input file. It can be either 'single' or 'rss'. Defaults to 'single'
--error-file ERROR_FILE
the error file
--config-file CONFIG_FILE
the configuration file used to set the parameters for the emission line fitting
--emission-lines-file EMISSION_LINES_FILE
file containing emission lines list
--mask-file MASK_FILE
the file listing the wavelength ranges to exclude during the fitting
--sigma-gas SIGMA_GAS
the guess velocity dispersion of the gas
--ignore-gas whether to ignore gas during the fitting or not. Defaults to False
--rsp-nl-file RSP_NL_FILE
the resolved stellar population *reduced* basis, for non-linear fitting
--plot PLOT whether to plot (1) or not (0, default) the fitting procedure. If 2, a plot of the result is store in a
file without display on screen
--flux-scale min max scale of the flux in the input spectrum
--w-range wmin wmax the wavelength range for the fitting procedure
--w-range-nl wmin2 wmax2
the wavelength range for the *non-linear* fitting procedure
--redshift input_redshift delta_redshift min_redshift max_redshift
the guess, step, minimum and maximum value for the redshift during the fitting
--sigma input_sigma delta_sigma min_sigma max_sigma
same as the redshift, but for the line-of-sight velocity dispersion
--AV input_AV delta_AV min_AV max_AV
same as the redshift, but for the dust extinction in the V-band
--ext-curve {CCM,CAL}
the extinction model to choose for the dust effects modelling. Choices are: ['CCM', 'CAL']
--RV RV total to selective extinction defined as: A_V / E(B-V). Default to 3.1
--single-rsp whether to fit a single stellar template to the target spectrum or not. Default to False
--n-mc N_MC number of MC realisations for the spectral fitting
-o path, --output-path path
path to the outputs. Defaults to '/disk-a/mejia/Research/UNAM/lvm-dap'
-c, --clear-outputs whether to remove or not a previous run with the same label (if present). Defaults to false
-v, --verbose if given, shows information about the progress of the script. Defaults to false.
-d, --debug debugging mode. Defaults to false.