From ecd7faa3b555b44a4c34bcd499084e0e24edaf5b Mon Sep 17 00:00:00 2001 From: Stephen Bailey Date: Fri, 14 Jan 2022 10:59:38 -0800 Subject: [PATCH] limit humidity model range considered --- py/desispec/fiberflat_vs_humidity.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/py/desispec/fiberflat_vs_humidity.py b/py/desispec/fiberflat_vs_humidity.py index 733f88c98..0c8a06259 100644 --- a/py/desispec/fiberflat_vs_humidity.py +++ b/py/desispec/fiberflat_vs_humidity.py @@ -125,7 +125,6 @@ def _fit_flat(wavelength,flux,ivar,fibers,mean_fiberflat_vs_humidity,humidity_ar log.info("best fit humidity = {:.2f}".format(best_humidity)) - return flat , best_humidity def compute_humidity_corrected_fiberflat(calib_fiberflat, mean_fiberflat_vs_humidity , humidity_array, current_humidity, frame) : @@ -146,10 +145,14 @@ def compute_humidity_corrected_fiberflat(calib_fiberflat, mean_fiberflat_vs_humi best_humidity = current_humidity + # only consider model humidity within 20% of measured humidity + humidity_selection = np.abs(humidity_array - current_humidity)<20 + log.info("using nightly flat to fit for the best fit nightly flat humidity") selection = np.sum(calib_fiberflat.ivar!=0,axis=1)>10 good_flat_fibers = np.where(selection)[0] - flat2 , hum2 = _fit_flat(calib_fiberflat.wave,calib_fiberflat.fiberflat,calib_fiberflat.ivar,good_flat_fibers,mean_fiberflat_vs_humidity,humidity_array) + flat2, hum2 = _fit_flat(calib_fiberflat.wave, calib_fiberflat.fiberflat, calib_fiberflat.ivar, + good_flat_fibers, mean_fiberflat_vs_humidity[humidity_selection], humidity_array[humidity_selection]) flat1 = None hum1 = current_humidity @@ -168,7 +171,8 @@ def compute_humidity_corrected_fiberflat(calib_fiberflat, mean_fiberflat_vs_humi ok=(ivar[fiber]>0) tmp_flux[fiber] = np.interp(frame.wave,frame_wave_in_fiberflat_system[ok],frame.flux[fiber][ok]) tmp_ivar[fiber] = np.interp(frame.wave,frame_wave_in_fiberflat_system[ok],ivar[fiber][ok]) - flat1 , hum1 = _fit_flat(frame.wave,tmp_flux*flat2/calib_fiberflat.fiberflat,tmp_ivar,good_sky_fibers,mean_fiberflat_vs_humidity,humidity_array) + flat1, hum1 = _fit_flat(frame.wave, tmp_flux*flat2/calib_fiberflat.fiberflat, tmp_ivar, good_sky_fibers, + mean_fiberflat_vs_humidity[humidity_selection], humidity_array[humidity_selection]) if flat1 is None : log.info("use input humidity = {:.2f}".format(current_humidity)) flat1 = _interpolated_fiberflat_vs_humidity(mean_fiberflat_vs_humidity , humidity_array, current_humidity)