def test_analysis_pipeline(self): test_out_dir = self.set_outputfolder("test_analysis_pipeline") ag = AGAnalysis(self.agilepyConf, self.sourcesConfTxt) ag.setOptions(tmin = 433857532, tmax = 434289532, timetype = "TT", glon = 263.55, glat = -2.78) maplistFilePath = ag.generateMaps() self.assertEqual(True, os.path.isfile(maplistFilePath)) sources = ag.loadSourcesFromCatalog("2AGL", rangeDist = (0, 21)) sources = ag.freeSources('name == "2AGLJ0835-4514"', "flux", True, show=True) products_1 = ag.mle() for p in products_1: self.assertEqual(True, os.path.isfile(p)) products_2 = ag.mle() for p in products_2: self.assertEqual(True, os.path.isfile(p)) ag.setOptions(tmin = 433857532, tmax = 433907532, timetype = "TT", glon = 263.55, glat = -2.78) maplistfile = ag.generateMaps() products_3 = ag.mle() for p in products_3: self.assertEqual(True, os.path.isfile(p)) ag.destroy()
def test_update_source_position(self): ag = AGAnalysis(self.agilepyconfPath, self.sourcesconfPath) ag.generateMaps() ag.freeSources('name == "2AGLJ2021+4029"', "pos", False) ag.mle() self.assertRaises(ValueError, ag.updateSourcePosition, "2AGLJ2021+4029", useMulti=False) changed = ag.updateSourcePosition("2AGLJ2021+4029", useMulti=False, glon=78.2375, glat=2.12298) self.assertEqual(False, changed) ag.freeSources('name == "2AGLJ2021+4029"', "pos", True) ag.mle() changed = ag.updateSourcePosition("2AGLJ2021+4029", useMulti=True) self.assertEqual(False, changed) ag.destroy()
def test_calc_bkg(self): test_out_dir = self.set_outputfolder("test_calc_bkg") ag = AGAnalysis(self.agilepyConf, self.sourcesConfTxt) ag.setOptions( timetype="TT", galcoeff=[-1, -1, -1, -1], isocoeff=[10, 12, 10, 12] ) """ galBkg, isoBkg, maplistfile = ag.calcBkg('CYGX3', pastTimeWindow=0) print("\ngalBkg:",galBkg) print("isoBkg:",isoBkg) galBkg, isoBkg, maplistfile = ag.calcBkg('CYGX3', galcoeff=[-1,-1,-1,-1], pastTimeWindow=0) print("\ngalBkg:",galBkg) print("isoBkg:",isoBkg) galBkg, isoBkg, maplistfile = ag.calcBkg('CYGX3', galcoeff=[0,0,0,0], pastTimeWindow=0) print("\ngalBkg:",galBkg) print("isoBkg:",isoBkg) """ galCoeff, isoCoeff, maplistfile = ag.calcBkg(self.VELA, galcoeff=[0.8, 0.6, 0.8, 0.6], pastTimeWindow=0) self.assertEqual([10, 12, 10, 12], isoCoeff) self.assertEqual([0.8, 0.6, 0.8, 0.6], galCoeff) ag.destroy()
def test_setOptionEnergybin(self): test_out_dir = self.set_outputfolder("test_setOptionEnergybin") energybin0 = [[100, 10000]] energybin1 = [[100, 50000]] energybin2 = [[100, 300], [300, 1000], [1000, 3000], [3000, 10000]] energybin3 = [[100, 300], [300, 1000], [1000, 3000], [3000, 10000], [10000, 50000]] energybin4 = [[50, 100], [100, 300], [300, 1000], [1000, 3000], [3000, 10000]] energybin5 = [[50, 100], [100, 300], [300, 1000], [1000, 3000], [3000, 10000], [10000, 50000]] ag = AGAnalysis(self.agilepyConf) self.assertRaises(ValueOutOfRange, ag.setOptionEnergybin, 42) ag.setOptionEnergybin(0) self.assertEqual(ag.getOption("energybins"), energybin0) ag.setOptionEnergybin(1) self.assertEqual(ag.getOption("energybins"), energybin1) ag.setOptionEnergybin(2) self.assertEqual(ag.getOption("energybins"), energybin2) ag.setOptionEnergybin(3) self.assertEqual(ag.getOption("energybins"), energybin3) ag.setOptionEnergybin(4) self.assertEqual(ag.getOption("energybins"), energybin4) ag.setOptionEnergybin(5) self.assertEqual(ag.getOption("energybins"), energybin5) ag.destroy()
def test_lc(self): test_out_dir = self.set_outputfolder("test_lc") ag = AGAnalysis(self.agilepyConf, self.sourcesConfTxt) ag.setOptions(energybins=[[100, 300]], fovbinnumber=1) # to reduce the computational time ag.freeSources(lambda name: name == self.VELA, "flux", True) lightCurveData = ag.lightCurveMLE(self.VELA, tmin=433860000, tmax=433880000, timetype="TT", binsize=20000) self.assertEqual(True, os.path.isfile(lightCurveData)) with open(lightCurveData, "r") as lcd: lines = lcd.readlines() # print("readlines: ", lines) self.assertEqual(True,len(lines) == 1+1) # 1 header + 2 temporal bins lightCurveData = ag.lightCurveMLE(self.VELA, tmin=433900000, tmax=433940000, timetype="TT", binsize=20000) self.assertEqual(True, os.path.isfile(lightCurveData)) with open(lightCurveData, "r") as lcd: lines = lcd.readlines() # print("readlines: ", lines) self.assertEqual(True, len(lines) == 1+2) # 1 header + 3 temporal bins lightCurvePlot = ag.displayLightCurve("mle", saveImage=True) self.assertEqual(True, os.path.isfile(lightCurvePlot)) ag.destroy()
def test_parse_maplistfile(self): test_out_dir = self.set_outputfolder("test_parse_maplistfile") ag = AGAnalysis(self.agilepyConf, self.sourcesConfTxt) ag.setOptions(energybins=[[100,300],[300,1000]], fovbinnumber=2) maplistFilePath = ag.generateMaps() maplistRows1 = ag.parseMaplistFile() maplistRows2 = ag.parseMaplistFile(maplistFilePath) self.assertEqual(4, len(maplistRows1)) self.assertEqual(4, len(maplistRows2)) for i in range(4): for j in range(3): self.assertEqual(maplistRows1[i][j], maplistRows2[i][j]) for i in range(4): for j in range(3): self.assertEqual(True, os.path.isfile(maplistRows1[i][j])) ag.destroy()
def test_calc_bkg(self): ag = AGAnalysis(self.agilepyconfPath, self.sourcesconfPathcalcBkg) ag.setOptions(tmin=456461778.0, tmax=456537945.0, timetype="TT", galcoeff=[-1, -1, -1, -1], isocoeff=[10, 12, 10, 12]) """ galBkg, isoBkg, maplistfile = ag.calcBkg('CYGX3', pastTimeWindow=0) print("\ngalBkg:",galBkg) print("isoBkg:",isoBkg) galBkg, isoBkg, maplistfile = ag.calcBkg('CYGX3', galcoeff=[-1,-1,-1,-1], pastTimeWindow=0) print("\ngalBkg:",galBkg) print("isoBkg:",isoBkg) galBkg, isoBkg, maplistfile = ag.calcBkg('CYGX3', galcoeff=[0,0,0,0], pastTimeWindow=0) print("\ngalBkg:",galBkg) print("isoBkg:",isoBkg) """ galBkg, isoBkg, maplistfile = ag.calcBkg('CYGX3', galcoeff=[0.8, 0.6, 0.8, 0.6], pastTimeWindow=0) print("\ngalBkg:", galBkg) print("isoBkg:", isoBkg) ag.destroy()
def test_setDQ(self): test_out_dir = self.set_outputfolder("test_setDQ") ag = AGAnalysis(self.agilepyConf) # dq out of range self.assertRaises(ConfigurationsNotValidError, ag.setOptions, dq=42) # dq = 0 ag.setOptions(dq=0, albedorad=101, fovradmax=102) self.assertEqual(ag.getOption("albedorad"), 101) self.assertEqual(ag.getOption("fovradmax"), 102) # dq == 5 ag.setOptions(dq=5) self.assertEqual(ag.getOption("albedorad"), 100) self.assertEqual(ag.getOption("fovradmax"), 50) # Try to change albedorad or fovradmax with dq == 5 self.assertRaises(CannotSetNotUpdatableOptionError, ag.setOptions, albedorad=42, fovradmax=42) ag.destroy()
def test_source_dist_updated_after_mle(self): test_out_dir = self.set_outputfolder("test_source_dist_updated_after_mle") ag = AGAnalysis(self.agilepyConf, self.sourcesConfTxt) maplistFilePath = ag.generateMaps() ag.freeSources(lambda name: name == self.VELA, "pos", True) ag.freeSources(lambda name: name == self.VELA, "flux", True) source = ag.selectSources(lambda name: name == self.VELA).pop() print(source) dist_before = source.get("dist")["value"] ag.mle(maplistFilePath) source = ag.selectSources(lambda name: name == self.VELA).pop() print(source) dist_after = source.get("dist")["value"] multiDist_after = source.get("multiDist")["value"] assert dist_before == dist_after assert multiDist_after != dist_after ag.destroy()
def test_fixed_parameters(self): test_out_dir = self.set_outputfolder("test_fixed_parameters") ag = AGAnalysis(self.agilepyConf) ag.setOptions( energybins=[[100, 1000]], tmin=434279000, tmax=434289532, timetype="TT") sources = ag.loadSourcesFromCatalog("2AGL", rangeDist=(0, 25)) assert len(sources) == 9 source = ag.selectSources('name == "2AGLJ0835-4514"').pop() flux0 = source.spectrum.getVal("flux") sources = ag.freeSources( 'name == "2AGLJ0835-4514"', "flux", False, show=True) _ = ag.generateMaps() _ = ag.mle() flux1 = source.get("multiFlux")["value"] assert flux0 == flux1 ag.destroy()
def test_update_source_parameter_value(self): test_out_dir = self.set_outputfolder("test_update_source_parameter_value") ag = AGAnalysis(self.agilepyConf, self.sourcesConfTxt) sources = ag.selectSources(lambda name: name == self.VELA) source = sources.pop() self.assertEqual(1.34774, source.spectrum.getVal("index2")) source.set("index2", {"value": 1}) assert 1 == source.spectrum.getVal("index2") self.assertEqual(969.539e-08, source.spectrum.getVal("flux")) source.set("flux", {"value": 1}) assert 1 == source.spectrum.getVal("flux") self.assertEqual(3913.06, source.spectrum.getVal("cutoffEnergy")) source.set("cutoffEnergy", {"value": 1}) assert 1 == source.spectrum.getVal("cutoffEnergy") # self.assertRaises(AttributeError, source.spectrum.get, "index") # self.assertRaises(AttributeError, source.spectrum.set, "index", 10) ag.destroy()
def test_extract_light_curve_data(self): test_out_dir = self.set_outputfolder("test_extract_light_curve_data") ag = AGAnalysis(self.agilepyConf, self.sourcesConfTxt) sourceFile = Path(self.currentDirPath).joinpath("data/testcase_2AGLJ0835-4514.source") lcdata = ag._extractLightCurveDataFromSourceFile(str(sourceFile)) lcdataKeys = ["sqrt(ts)", "flux","flux_err", "flux_ul","gal","gal_error","iso","iso_error",\ "l_peak","b_peak","dist_peak","l","b","r","ell_dist","a","b","phi","exp","ExpRatio","counts",\ "counts_err","Index","Index_Err","Par2","Par2_Err","Par3","Par3_Err","Erglog","Erglog_Err","Erglog_UL",\ "time_start_tt","time_end_tt","Fix","index","ULConfidenceLevel","SrcLocConfLevel","start_l","start_b",\ "start_flux","typefun","par2","par3","galmode2","isomode2","isomode2fit","edpcor","fluxcor",\ "integratortype","expratioEval","expratio_minthr","expratio_maxthr","expratio_size",\ "emin", "emax", "fovmin", "fovmax", "albedo", "binsize", "expstep", "phasecode", "fit_cts", \ "fit_fitstatus0", "fit_fcn0", "fit_edm0", "fit_nvpar0", "fit_nparx0", "fit_iter0", \ "fit_fitstatus1", "fit_fcn1", "fit_edm1", "fit_nvpar1", "fit_nparx1", "fit_iter1", "fit_Likelihood1"] self.assertEqual(len(lcdataKeys), len(lcdata)) for key in lcdataKeys: self.assertEqual(True, key in lcdata) ag.destroy()
def test_generate_maps(self): test_out_dir = self.set_outputfolder("test_generate_maps") ag = AGAnalysis(self.agilepyConf, self.sourcesConfTxt) ag.setOptions(tmin=433857532, tmax=433858532, timetype="TT") outDir = ag.getOption("outdir") maplistFilePath0 = ag.generateMaps() self.assert_maplistfile_lines_number(maplistFilePath0, 4) outDir0 = Path(outDir).joinpath("maps", "0") self.assertEqual(True, outDir0.is_dir()) self.assert_generated_maps_number(outDir0, 16) self.assert_generated_maps_exist(ag.parseMaplistFile(maplistFilePath0)) # second generation (same parameters) maplistFilePath1 = ag.generateMaps() self.assert_maplistfile_lines_number(maplistFilePath1, 4) outDir1 = Path(outDir).joinpath("maps", "1") self.assertEqual(True, outDir1.is_dir()) self.assert_generated_maps_number(outDir1, 16) self.assert_generated_maps_exist(ag.parseMaplistFile(maplistFilePath1)) # third generation with different time interval ag.setOptions(tmin=433957532, tmax=433957632, timetype="TT") maplistFilePath2 = ag.generateMaps() self.assert_maplistfile_lines_number(maplistFilePath2, 4) outDir2 = Path(outDir).joinpath("maps", "2") self.assertEqual(True, outDir2.is_dir()) self.assert_generated_maps_number(outDir2, 16) self.assert_generated_maps_exist(ag.parseMaplistFile(maplistFilePath2)) # fourth generation with different glon and glat ag.setOptions(glon=265, glat=-3, timetype="TT") maplistFilePath3 = ag.generateMaps() self.assert_maplistfile_lines_number(maplistFilePath3, 4) outDir3 = Path(outDir).joinpath("maps", "3") self.assertEqual(True, outDir3.is_dir()) self.assert_generated_maps_number(outDir3, 16) self.assert_generated_maps_exist(ag.parseMaplistFile(maplistFilePath3)) # fifth generation with different fovbinnumber, and energy range ag.setOptions(fovbinnumber=1, energybins=[[100,300]]) maplistFilePath4 = ag.generateMaps() self.assert_maplistfile_lines_number(maplistFilePath4, 1) outDir3 = Path(outDir).joinpath("maps", "4") self.assertEqual(True, outDir3.is_dir()) self.assert_generated_maps_number(outDir3, 4) self.assert_generated_maps_exist(ag.parseMaplistFile(maplistFilePath4)) ag.destroy()
def test_print_source(self): ag = AGAnalysis(self.agilepyconfPath, self.sourcesconfPath) maplistFilePath = ag.generateMaps() ag.freeSources('name == "2AGLJ2021+3654"', "pos", True) ag.mle(maplistFilePath) for s in ag.sourcesLibrary.sources: print(s) self.assertEqual(True, True) ag.destroy()
def test_analysis_pipeline(self): ag = AGAnalysis(self.agilepyconfPath, self.sourcesconfPath) maplistFilePath = ag.generateMaps() self.assertEqual(True, os.path.isfile(maplistFilePath)) products_1 = ag.mle(maplistFilePath) for p in products_1: self.assertEqual(True, os.path.isfile(p)) products_2 = ag.mle(maplistFilePath) for p in products_2: self.assertEqual(True, os.path.isfile(p)) ag.destroy()
def test_fix_exponent(self): test_out_dir = self.set_outputfolder("test_fix_exponent") ag = AGAnalysis(self.agilepyConf, self.sourcesConfTxt) self.assertEqual('894.587e-08', ag._fixToNegativeExponent(8.94587e-06, fixedExponent=-8)) self.assertEqual('309.757e-08', ag._fixToNegativeExponent(3.09757e-06, fixedExponent=-8)) self.assertEqual('1623.16e-08', ag._fixToNegativeExponent(1.62316e-05, fixedExponent=-8)) self.assertEqual('1.524e-08', ag._fixToNegativeExponent(1.524e-8, fixedExponent=-8)) self.assertEqual('1.524e+18e-08', ag._fixToNegativeExponent(1.524e10, fixedExponent=-8)) self.assertEqual('0.0', ag._fixToNegativeExponent(0.0, fixedExponent=-8)) ag.destroy()
def test_source_Flux_updated_after_mle(self): ag = AGAnalysis(self.agilepyconfPath, self.sourcesconfPath) maplistFilePath = ag.generateMaps() source_1 = ag.selectSources( lambda name: name == '2AGLJ2021+3654').pop() flux_1 = source_1.spectrum.get("flux") ag.mle(maplistFilePath) source_2 = ag.selectSources( lambda name: name == '2AGLJ2021+3654').pop() flux_2 = source_2.multi.get("multiFlux") self.assertNotEqual(flux_1, flux_2) ag.destroy()
def test_source_dist_updated_after_source_position_update(self): test_out_dir = self.set_outputfolder("test_source_dist_updated_after_source_position_update") ag = AGAnalysis(self.agilepyConf, self.sourcesConfTxt) ag.setOptions(tmin = 433857532, tmax = 433857542, timetype = "TT", fovbinnumber=1, energybins=[[100,200]], glon = 263.55, glat = -2.78) source_1 = ag.selectSources(lambda name: name == self.VELA).pop() dist_1 = source_1.spatialModel.get("dist")["value"] ag.updateSourcePosition(self.VELA, glon=264, glat=-3) source_2 = ag.selectSources(lambda name: name == self.VELA).pop() dist_2 = source_2.spatialModel.get("dist")["value"] assert True, dist_1 != dist_2 ag.destroy()
def test_display_sky_maps_singlemode(self): ag = AGAnalysis(self.agilepyconfPath, self.sourcesconfPath) _ = ag.generateMaps() maps = ag.displayCtsSkyMaps(saveImage=True) for m in maps: self.assertEqual(True, os.path.isfile(m)) maps = ag.displayExpSkyMaps(saveImage=True) for m in maps: self.assertEqual(True, os.path.isfile(m)) maps = ag.displayGasSkyMaps(saveImage=True) for m in maps: self.assertEqual(True, os.path.isfile(m)) ag.destroy()
def test_generate_maps(self): ag = AGAnalysis(self.agilepyconfPath, self.sourcesconfPath) outDir = ag.getOption("outdir") maplistFilePath = ag.generateMaps() self.assertEqual(True, os.path.isfile(maplistFilePath)) maps = os.listdir(Path(outDir).joinpath("maps")) self.assertEqual(16, len(maps)) lines = None with open(maplistFilePath) as mfp: lines = mfp.readlines() self.assertEqual(4, len(lines)) ag.destroy()
def test_source_dist_updated_after_mle(self): ag = AGAnalysis(self.agilepyconfPath, self.sourcesconfPath) maplistFilePath = ag.generateMaps() ag.mle(maplistFilePath) source_1 = ag.selectSources( lambda name: name == '2AGLJ2021+4029').pop() dist_1 = source_1.multi.get("multiDist") ag.setOptions(glon=81, glat=1) ag.mle(maplistFilePath) source_2 = ag.selectSources( lambda name: name == '2AGLJ2021+4029').pop() dist_2 = source_2.multi.get("multiDist") self.assertNotEqual(dist_1, dist_2) ag.destroy()
def test_saving_sky_maps_singlemode(self): test_out_dir = self.set_outputfolder("test_saving_sky_maps_singlemode") ag = AGAnalysis(self.agilepyConf, self.sourcesConfTxt) _ = ag.generateMaps() maps = ag.displayCtsSkyMaps(saveImage=True) for m in maps: self.assertEqual(True, os.path.isfile(m)) maps = ag.displayExpSkyMaps(saveImage=True) for m in maps: self.assertEqual(True, os.path.isfile(m)) maps = ag.displayGasSkyMaps(saveImage=True) for m in maps: self.assertEqual(True, os.path.isfile(m)) ag.destroy()
def test_multi_update_free_parameters(self): test_out_dir = self.set_outputfolder("test_multi_update_free_parameters") ag = AGAnalysis(self.agilepyConf, self.sourcesConfTxt) ag.generateMaps() sources = ag.selectSources(lambda name: name == self.VELA) source = sources.pop() #index2 = source.spectrum.get("index2") flux = source.spectrum.getVal("flux") #cutoffEnergy = source.spectrum.get("cutoffEnergy") ag.freeSources(lambda name: name == self.VELA, "pos", True) # ag.freeSources(lambda name: name == self.VELA, "index2", True) ag.freeSources(lambda name: name == self.VELA, "flux", True) # ag.freeSources(lambda name: name == self.VELA, "cutoffEnergy", True) print(source) ag.mle() print(source) assert source.multiAnalysis.getVal("multiFlux") != source.spectrum.getVal("flux") assert flux == source.spectrum.getVal("flux") ag.mle() assert source.multiAnalysis.getVal("multiFlux") != source.spectrum.getVal("flux") assert flux != source.spectrum.getVal("flux") print(source) #todo: validation test ag.destroy()
def test_generic_column(self): test_out_dir = self.set_outputfolder("g_col") ag = AGAnalysis(self.agilepyConf, self.sourcesConfTxt) ag.setOptions(energybins=[[100, 300]], fovbinnumber=1) ag.freeSources(lambda name: name == self.VELA, "flux", True) lightCurveData = ag.lightCurveMLE( self.VELA, tmin=433860000, tmax=433880000, timetype="TT", binsize=20000) #filename = ag.displayGenericColumns( # lightCurveData, columns=["l_peak"], um=["test_um"], saveImage=True) filename = ag.displayGenericColumns( lightCurveData, columns=["l_peak", "counts"], um=["test_um", "counts"], saveImage=True) self.assertEqual(True, os.path.isfile(filename)) ag.destroy()
def test_saving_sky_maps(self): test_out_dir = self.set_outputfolder("test_saving_sky_maps") ag = AGAnalysis(self.agilepyConf, self.sourcesConfTxt) ag.setOptions(tmin = 433857532, tmax = 433857732, timetype = "TT") _ = ag.generateMaps() maps = ag.displayCtsSkyMaps(singleMode=False, saveImage=True) for m in maps: self.assertEqual(True, os.path.isfile(m)) maps = ag.displayExpSkyMaps(singleMode=False, saveImage=True) for m in maps: self.assertEqual(True, os.path.isfile(m)) maps = ag.displayGasSkyMaps(singleMode=False, saveImage=True) for m in maps: self.assertEqual(True, os.path.isfile(m)) ag.destroy()
def test_source_flux_updated_after_mle(self): test_out_dir = self.set_outputfolder("test_source_flux_updated_after_mle") ag = AGAnalysis(self.agilepyConf, self.sourcesConfTxt) maplistFilePath = ag.generateMaps() ag.freeSources(lambda name: name == self.VELA, "flux", True) source_1 = ag.selectSources(lambda name: name == self.VELA).pop() flux_1 = source_1.get("flux")["value"] ag.mle(maplistFilePath) source_2 = ag.selectSources(lambda name: name == self.VELA).pop() flux_2 = source_2.get("multiFlux")["value"] self.assertNotEqual(flux_1, flux_2) ag.destroy()
def test_setOptionTimeMJD(self): test_out_dir = self.set_outputfolder("test_setOptionTimeMJD") ag = AGAnalysis(self.agilepyConf) tmin1 = 58030.0 tmax1 = 58035.0 tmintt = AstroUtils.time_mjd_to_agile_seconds(tmin1) tmaxtt = AstroUtils.time_mjd_to_agile_seconds(tmax1) ag.setOptionTimeMJD(tmin=tmin1, tmax=tmax1) tmin2 = ag.getOption("tmin") tmax2 = ag.getOption("tmax") self.assertEqual(tmintt, tmin2) self.assertEqual(tmaxtt, tmax2) ag.destroy()
def test_update_gal_iso(self): ag = AGAnalysis(self.agilepyconfPath, self.sourcesconfPath) outDir = Path(ag.getOption("outdir")) ag.config.setOptions(galcoeff=[0.6, 0.8, 0.6, 0.8]) ag.config.setOptions(isocoeff=[10, 15, 10, 15]) galcoeffs = ag.config.getOptionValue("galcoeff") isocoeffs = ag.config.getOptionValue("isocoeff") maplistFilePath = ag.generateMaps() matrix = ag.parseMaplistFile() for idx, row in enumerate(matrix): self.assertEqual(str(galcoeffs[idx]), row[4]) self.assertEqual(str(isocoeffs[idx]), row[5]) if outDir.joinpath("maps").exists() and outDir.joinpath( "maps").is_dir(): shutil.rmtree(outDir.joinpath("maps")) outDir.joinpath("maps").mkdir(parents=False, exist_ok=True) ag.config.setOptions(galcoeff=[0, 0, 0, 0]) ag.config.setOptions(isocoeff=[0, 0, 0, 0]) galcoeffs = ag.config.getOptionValue("galcoeff") isocoeffs = ag.config.getOptionValue("isocoeff") matrix = ag.parseMaplistFile() for idx, row in enumerate(matrix): self.assertEqual(str(galcoeffs[idx]), row[4]) self.assertEqual(str(isocoeffs[idx]), row[5]) ag.destroy()