def crear_archivos(temporary_path, number=5): from megaradrp.simulation.actions import simulate_flat from megaradrp.simulation.detector import ReadParams, MegaraDetectorSat from megaradrp.recipes.calibration.bpm import BadPixelsMaskRecipe PSCAN = 50 DSHAPE = (2056 * 2, 2048 * 2) OSCAN = 50 ron = 2.0 gain = 1.0 bias = 1000.0 qe = 0.8 * np.ones(DSHAPE) qe[0:15, 0:170] = 0.0 readpars1 = ReadParams(gain=gain, ron=ron, bias=bias) readpars2 = ReadParams(gain=gain, ron=ron, bias=bias) detector = MegaraDetectorSat('megara_test_detector', DSHAPE, OSCAN, PSCAN, qe=qe, dark=(3.0 / 3600.0), readpars1=readpars1, readpars2=readpars2, bins='11') source2 = 1.0 fs = [simulate_flat(detector, exposure=1.0, source=5000 * source2) for i in range(number)] for aux in range(len(fs)): fits.writeto('%s/flat_%s.fits' % (temporary_path, aux), fs[aux], clobber=True) master_bias = generate_bias(detector, number, temporary_path) master_bias_data = master_bias.master_bias.frame[0].data fits.writeto('%s/master_bias_data0.fits' % temporary_path, master_bias_data, clobber=True) # Master Bias ob = ObservationResult() ob.instrument = 'MEGARA' ob.mode = 'bias_image' ob.configuration = build_instrument_config('4fd05b24-2ed9-457b-b563-a3c618bb1d4c', loader=Loader()) names = [] for aux in range(number): names.append('%s/flat_%s.fits' % (temporary_path, aux)) ob.frames = [DataFrame(filename=open(nombre).name) for nombre in names] recipe = BadPixelsMaskRecipe() ri = recipe.create_input(obresult=ob, master_bias=DataFrame( filename=open(temporary_path + '/master_bias_data0.fits').name)) aux = recipe.run(ri) fits.writeto('%s/master_bpm.fits' % temporary_path, aux.master_bpm.frame[0].data, clobber=True) return names
def generate_bias(detector, number, temporary_path): from megaradrp.simulation.actions import simulate_bias from megaradrp.recipes.calibration.bias import BiasRecipe fs = [simulate_bias(detector) for i in range(number)] for aux in range(len(fs)): fits.writeto('%s/bias_%s.fits' % (temporary_path, aux), fs[aux], clobber=True) fs = ["%s/bias_%s.fits" % (temporary_path, i) for i in range(number)] ob = ObservationResult() ob.instrument = 'MEGARA' ob.mode = 'bias_image' ob.configuration = build_instrument_config('4fd05b24-2ed9-457b-b563-a3c618bb1d4c', loader=Loader()) ob.frames = [DataFrame(filename=f) for f in fs] recipe = BiasRecipe() ri = recipe.create_input(obresult=ob) return recipe.run(ri)
def test_bpm_corrector(): import shutil from tempfile import mkdtemp directorio = mkdtemp() names = crear_archivos(directorio, number=4) ob = ObservationResult() ob.instrument = 'MEGARA' ob.mode = 'bias_image' ob.configuration = build_instrument_config('4fd05b24-2ed9-457b-b563-a3c618bb1d4c', loader=Loader()) ob.frames = [DataFrame(filename=open(nombre).name) for nombre in names] recipe = TestRecipe(directorio) ri = recipe.create_input(obresult=ob, master_bias=DataFrame( filename=open(directorio + '/master_bias_data0.fits').name), master_bpm=DataFrame(filename=open( directorio + '/master_bpm.fits').name)) recipe.run(ri) shutil.rmtree(directorio)