def testMagArrayForSedList(self): """ Test that magArrayForSedList calculates the correct magnitude """ nBandpasses = 7 bpNameList, bpList = self.getListOfBandpasses(nBandpasses) testBpDict = BandpassDict(bpList, bpNameList) nSed = 20 sedNameList = self.getListOfSedNames(nSed) magNormList = self.rng.random_sample(nSed)*5.0 + 15.0 internalAvList = self.rng.random_sample(nSed)*0.3 + 0.1 redshiftList = self.rng.random_sample(nSed)*5.0 galacticAvList = self.rng.random_sample(nSed)*0.3 + 0.1 # first, test on an SedList without a wavelenMatch testSedList = SedList(sedNameList, magNormList, fileDir=self.sedDir, internalAvList=internalAvList, redshiftList=redshiftList, galacticAvList=galacticAvList) magArray = testBpDict.magArrayForSedList(testSedList) for ix, sedObj in enumerate(testSedList): dummySed = Sed(wavelen=copy.deepcopy(sedObj.wavelen), flambda=copy.deepcopy(sedObj.flambda)) for iy, bp in enumerate(bpNameList): mag = dummySed.calcMag(bpList[iy]) self.assertAlmostEqual(mag, magArray[bp][ix], 2) # now use wavelenMatch testSedList = SedList(sedNameList, magNormList, fileDir=self.sedDir, internalAvList=internalAvList, redshiftList=redshiftList, galacticAvList=galacticAvList, wavelenMatch=testBpDict.wavelenMatch) magArray = testBpDict.magArrayForSedList(testSedList) for ix, sedObj in enumerate(testSedList): dummySed = Sed(wavelen=copy.deepcopy(sedObj.wavelen), flambda=copy.deepcopy(sedObj.flambda)) for iy, bp in enumerate(bpNameList): mag = dummySed.calcMag(bpList[iy]) self.assertAlmostEqual(mag, magArray[bp][ix], 2)
def testIndicesOnMagnitudes(self): """ Test that, when you pass a list of indices into the calcMagList methods, you get the correct magnitudes out. """ nBandpasses = 7 nameList, bpList = self.getListOfBandpasses(nBandpasses) testBpDict = BandpassDict(bpList, nameList) # first try it with a single Sed wavelen = np.arange(10.0, 2000.0, 1.0) flux = (wavelen*2.0-5.0)*1.0e-6 spectrum = Sed(wavelen=wavelen, flambda=flux) indices = [1, 2, 5] magList = testBpDict.magListForSed(spectrum, indices=indices) ctNaN = 0 for ix, (name, bp, magTest) in enumerate(zip(nameList, bpList, magList)): if ix in indices: magControl = spectrum.calcMag(bp) self.assertAlmostEqual(magTest, magControl, 5) else: ctNaN += 1 np.testing.assert_equal(magTest, np.NaN) self.assertEqual(ctNaN, 4) nSed = 20 sedNameList = self.getListOfSedNames(nSed) magNormList = self.rng.random_sample(nSed)*5.0 + 15.0 internalAvList = self.rng.random_sample(nSed)*0.3 + 0.1 redshiftList = self.rng.random_sample(nSed)*5.0 galacticAvList = self.rng.random_sample(nSed)*0.3 + 0.1 # now try a SedList without a wavelenMatch testSedList = SedList(sedNameList, magNormList, fileDir=self.sedDir, internalAvList=internalAvList, redshiftList=redshiftList, galacticAvList=galacticAvList) magList = testBpDict.magListForSedList(testSedList, indices=indices) magArray = testBpDict.magArrayForSedList(testSedList, indices=indices) self.assertEqual(magList.shape[0], nSed) self.assertEqual(magList.shape[1], nBandpasses) self.assertEqual(magArray.shape[0], nSed) for bpname in testBpDict: self.assertEqual(len(magArray[bpname]), nSed) for ix, sedObj in enumerate(testSedList): dummySed = Sed(wavelen=copy.deepcopy(sedObj.wavelen), flambda=copy.deepcopy(sedObj.flambda)) ctNaN = 0 for iy, bp in enumerate(testBpDict): if iy in indices: mag = dummySed.calcMag(testBpDict[bp]) self.assertAlmostEqual(mag, magList[ix][iy], 2) self.assertAlmostEqual(mag, magArray[ix][iy], 2) self.assertAlmostEqual(mag, magArray[bp][ix], 2) else: ctNaN += 1 np.testing.assert_equal(magList[ix][iy], np.NaN) np.testing.assert_equal(magArray[ix][iy], np.NaN) np.testing.assert_equal(magArray[bp][ix], np.NaN) self.assertEqual(ctNaN, 4) # now use wavelenMatch testSedList = SedList(sedNameList, magNormList, fileDir=self.sedDir, internalAvList=internalAvList, redshiftList=redshiftList, galacticAvList=galacticAvList, wavelenMatch=testBpDict.wavelenMatch) magList = testBpDict.magListForSedList(testSedList, indices=indices) magArray = testBpDict.magArrayForSedList(testSedList, indices=indices) self.assertEqual(magList.shape[0], nSed) self.assertEqual(magList.shape[1], nBandpasses) self.assertEqual(magArray.shape[0], nSed) for bpname in testBpDict: self.assertEqual(len(magArray[bpname]), nSed) for ix, sedObj in enumerate(testSedList): dummySed = Sed(wavelen=copy.deepcopy(sedObj.wavelen), flambda=copy.deepcopy(sedObj.flambda)) ctNaN = 0 for iy, bp in enumerate(testBpDict): if iy in indices: mag = dummySed.calcMag(testBpDict[bp]) self.assertAlmostEqual(mag, magList[ix][iy], 2) self.assertAlmostEqual(mag, magArray[ix][iy], 2) self.assertAlmostEqual(mag, magArray[bp][ix], 2) else: ctNaN += 1 np.testing.assert_equal(magList[ix][iy], np.NaN) np.testing.assert_equal(magArray[ix][iy], np.NaN) np.testing.assert_equal(magArray[bp][ix], np.NaN) self.assertEqual(ctNaN, 4)