diff --git a/megaradrp/core/recipe.py b/megaradrp/core/recipe.py index 013a6c3f..882c767a 100644 --- a/megaradrp/core/recipe.py +++ b/megaradrp/core/recipe.py @@ -46,14 +46,15 @@ def __init__(self, version): 'BadPixelsMaskRecipe': [OverscanCorrector, TrimImage, BiasCorrector, DarkCorrector], 'BiasRecipe': [OverscanCorrector, TrimImage, - BadPixelCorrector, DarkCorrector], + BadPixelCorrector], 'DarkRecipe': [OverscanCorrector, TrimImage, BiasCorrector], 'FiberFlatRecipe': [OverscanCorrector, TrimImage, BiasCorrector, BadPixelCorrector, DarkCorrector], 'TraceMapRecipe': [OverscanCorrector, TrimImage, - BiasCorrector, DarkCorrector], + BiasCorrector, BadPixelCorrector, + DarkCorrector], } super(MegaraBaseRecipe, self).__init__(version=version) @@ -72,17 +73,17 @@ def __generate_flow(self, params): flow[cont] = (flow[cont](params['bpm'])) else: del (flow[cont]) - cont -=1 + cont -= 1 elif issubclass(DarkCorrector, flow[cont]): if 'dark' in params.keys(): flow[cont] = (flow[cont](params['dark'])) else: del (flow[cont]) - cont -=1 + cont -= 1 elif issubclass(TrimImage, flow[cont]) or issubclass( OverscanCorrector, flow[cont]): flow[cont] = (flow[cont]()) - cont +=1 + cont += 1 basicflow = SerialFlow(flow) except Exception as e: @@ -134,4 +135,17 @@ def hdu_creation(self, obresult, params={}): for hdulist in cdata: hdulist.close() - return fits.HDUList(lista), data \ No newline at end of file + return fits.HDUList(lista), data + + def get_parameters(self, rinput): + + with rinput.master_bias.open() as hdul: + mbias = hdul[0].data.copy() + + parameters = {'biasmap':mbias} + if rinput.master_bpm: + parameters['bpm'] = rinput.master_bpm + if rinput.master_dark: + parameters['dark'] = rinput.master_bpm + + return parameters diff --git a/megaradrp/recipes/calibration/arc.py b/megaradrp/recipes/calibration/arc.py index fe39831d..6bb9a953 100644 --- a/megaradrp/recipes/calibration/arc.py +++ b/megaradrp/recipes/calibration/arc.py @@ -43,6 +43,7 @@ from megaradrp.core.recipe import MegaraBaseRecipe from megaradrp.products import TraceMap from megaradrp.requirements import MasterBiasRequirement, MasterBPMRequirement +from megaradrp.requirements import MasterDarkRequirement from megaradrp.core.processing import apextract_tracemap _logger = logging.getLogger('numina.recipes.megara') @@ -54,6 +55,7 @@ class ArcCalibrationRecipe(MegaraBaseRecipe): # Requirements obresult = ObservationResultRequirement() master_bias = MasterBiasRequirement() + master_dark = MasterDarkRequirement() master_bpm = MasterBPMRequirement() tracemap = Requirement(TraceMap, 'Trace information of the Apertures') lines_catalog = Requirement(LinesCatalog, 'Catalog of lines') @@ -68,11 +70,8 @@ def __init__(self): def run(self, rinput): # Basic processing - with rinput.master_bias.open() as hdul: - mbias = hdul[0].data.copy() - - reduced = self.bias_process_common(rinput.obresult, {'biasmap':mbias, - 'bpm':None}) + parameters = self.get_parameters(rinput) + reduced = self.bias_process_common(rinput.obresult, parameters) _logger.info('extract fibers') _logger.info('extract fibers, %i', len(rinput.tracemap)) diff --git a/megaradrp/recipes/calibration/flat.py b/megaradrp/recipes/calibration/flat.py index a3a2c461..5113e62d 100644 --- a/megaradrp/recipes/calibration/flat.py +++ b/megaradrp/recipes/calibration/flat.py @@ -31,7 +31,8 @@ from megaradrp.core.recipe import MegaraBaseRecipe from megaradrp.products import MasterFiberFlat from megaradrp.products import TraceMap -from megaradrp.requirements import MasterBiasRequirement +from megaradrp.requirements import MasterBiasRequirement, MasterBPMRequirement +from megaradrp.requirements import MasterDarkRequirement from megaradrp.core.processing import apextract_tracemap _logger = logging.getLogger('numina.recipes.megara') @@ -43,7 +44,8 @@ class FiberFlatRecipe(MegaraBaseRecipe): # Requirements obresult = ObservationResultRequirement() master_bias = MasterBiasRequirement() - + master_dark = MasterDarkRequirement() + master_bpm = MasterBPMRequirement() tracemap = Requirement(TraceMap, 'Trace information of the Apertures') # Products fiberflat_frame = Product(MasterFiberFlat) @@ -54,10 +56,9 @@ def __init__(self): def run(self, rinput): # Basic processing - with rinput.master_bias.open() as hdul: - mbias = hdul[0].data.copy() + parameters = self.get_parameters(rinput) - reduced = self.bias_process_common(rinput.obresult, {'biasmap':mbias}) + reduced = self.bias_process_common(rinput.obresult, parameters) _logger.info('extract fibers') rssdata = apextract_tracemap(reduced[0].data, rinput.tracemap) diff --git a/megaradrp/recipes/calibration/trace.py b/megaradrp/recipes/calibration/trace.py index fb64b052..ff71aa33 100644 --- a/megaradrp/recipes/calibration/trace.py +++ b/megaradrp/recipes/calibration/trace.py @@ -33,6 +33,7 @@ from megaradrp.products import MasterFiberFlat, TraceMap from megaradrp.core.recipe import MegaraBaseRecipe from megaradrp.requirements import MasterBiasRequirement, MasterBPMRequirement +from megaradrp.requirements import MasterDarkRequirement from megaradrp.trace.traces import init_traces _logger = logging.getLogger('numina.recipes.megara') @@ -41,8 +42,9 @@ class TraceMapRecipe(MegaraBaseRecipe): obresult = ObservationResultRequirement() - master_bpm = MasterBPMRequirement() master_bias = MasterBiasRequirement() + master_dark = MasterDarkRequirement() + master_bpm = MasterBPMRequirement() fiberflat_frame = Product(MasterFiberFlat) traces = Product(TraceMap) @@ -53,11 +55,8 @@ def __init__(self): def run(self, rinput): - # Basic processing - with rinput.master_bias.open() as hdul: - mbias = hdul[0].data.copy() - - reduced = self.bias_process_common(rinput.obresult, {'biasmap':mbias}) + parameters = self.get_parameters(rinput) + reduced = self.bias_process_common(rinput.obresult, parameters) data = reduced[0].data cstart = 2000 diff --git a/megaradrp/requirements.py b/megaradrp/requirements.py index 299d899a..38df2c98 100644 --- a/megaradrp/requirements.py +++ b/megaradrp/requirements.py @@ -43,9 +43,10 @@ def __init__(self, optional=True): class MasterDarkRequirement(Requirement): - def __init__(self): + def __init__(self, optional=True): super(MasterDarkRequirement, - self).__init__(MasterDark, 'Master DARK image') + self).__init__(MasterDark, 'Master DARK image', + optional=optional) class MasterFiberFlatRequirement(Requirement):