def rvsao(bin_sci, task, template_spectra, rvsao_file, rvsao_bin_list, interactive="no", linesig=1.5, czguess=0., st_lambda="INDEF", end_lambda="INDEF", badlines=None): """ Use the rvsao task emsao or xcsao to measure relative velocity from emission or absoption spectra Note: make sure you select the parameters for your desired use. Refer to the IRAF rvsao package help for description of what each parameter is/does """ assert task == 'xcsao' or task == 'emsao', "task is not either 'xcsao' or 'emsao'" if os.path.exists(rvsao_file): print('File {} already exists'.format(rvsao_file)) return fixbad = "no" if badlines: fixbad = "yes" bin_list = [] for i in range(len(glob.glob(bin_sci.format('*')))): # to ensure order is 0-61 (not 0, 1, 10, 11, etc) bin_list.append(bin_sci.format(i)) assert len(bin_list) > 0, 'Absorption/emission(?) bin spectra do not exist: {}'.format(em_bin_sci.format('*')) np.array(bin_list).tofile(rvsao_bin_list, sep='\n') from pyraf import iraf iraf.images() iraf.rvsao() if task == 'xcsao': iraf.xcsao('@{}'.format(rvsao_bin_list), templates=bin_sci.format(template_spectra), report_mode=2, logfiles=rvsao_file, displot=interactive, low_bin=10, top_low=20, top_nrun=80, nrun=211, zeropad="yes", nzpass=1, curmode="no", pkmode=2, s_emchop="no", vel_init="guess", czguess=czguess, st_lambda=st_lambda, end_lambda=end_lambda, fixbad=fixbad, badlines=badlines) elif task == 'emsao': # Run this interactively as the fit can fail often. Depending on S/N you may have to decrease the linesig # to detect the lines, or if lines are matched inconsistently play with the st_lambda, end_lambda parameters iraf.emsao('@{}'.format(rvsao_bin_list), logfiles=rvsao_file, displot=interactive, report_mode=2, contsub_plot="no", st_lambda=st_lambda, end_lambda=end_lambda, # vel_init="guess", czguess=czguess, linesig=linesig, fixbad=fixbad, badlines=badlines)
def load_modules(): # Define a function to load all of the modules so that they don't' import # unless we need them global iraf from pyraf import iraf iraf.pysalt() iraf.saltspec() iraf.saltred() iraf.set(clobber='YES') global sys import sys global os import os global shutil import shutil global glob from glob import glob global pyfits import pyfits global np import numpy as np global lacosmicx import lacosmicx global interp from scipy import interp global signal from scipy import signal global ndimage from scipy import ndimage global interpolate from scipy import interpolate global WCS from astropy.wcs import WCS global optimize from scipy import optimize global ds9 import pyds9 as ds9 global GaussianProcess from sklearn.gaussian_process import GaussianProcess global pandas import pandas iraf.onedspec() iraf.twodspec() iraf.longslit() iraf.apextract() iraf.imutil() iraf.rvsao(motd='no')
# Global python packages import pyraf from pyraf import iraf import os, shutil, math, subprocess import pyfits # Local python packages from iqutils import * # IRAF modules iraf.images() iraf.noao() iraf.imred() iraf.ccdred() iraf.specred() iraf.rvsao() # IRAF variables yes=iraf.yes no=iraf.no INDEF=iraf.INDEF hedit=iraf.hedit imgets=iraf.imgets imcombine=iraf.imcombine # PyRAF setup pyrafdir="python/pyraf/" pyrafdir_key='PYRAFPARS' if os.environ.has_key(pyrafdir_key): pardir=os.environ[pyrafdir_key]
# Global python packages import pyraf from pyraf import iraf import os, shutil, math, subprocess import pyfits # Local python packages from iqutils import * # IRAF modules iraf.images() iraf.noao() iraf.imred() iraf.ccdred() iraf.specred() iraf.rvsao() # IRAF variables yes = iraf.yes no = iraf.no INDEF = iraf.INDEF hedit = iraf.hedit imgets = iraf.imgets imcombine = iraf.imcombine # PyRAF setup pyrafdir = "python/pyraf/" pyrafdir_key = 'PYRAFPARS' if os.environ.has_key(pyrafdir_key): pardir = os.environ[pyrafdir_key]