コード例 #1
0
class TestOpsimFieldSlicerPlotting(unittest.TestCase):
    def setUp(self):
        rng = np.random.RandomState(65332)
        self.testslicer = OpsimFieldSlicer()
        self.fieldData = makeFieldData()
        self.simData = makeDataValues(self.fieldData, random=462)
        self.testslicer.setupSlicer(self.simData, self.fieldData)

        self.metricdata = ma.MaskedArray(data=np.zeros(len(self.testslicer),
                                                       dtype='float'),
                                         mask=np.zeros(len(self.testslicer),
                                                       'bool'),
                                         fill_value=self.testslicer.badval)
        for i, s in enumerate(self.testslicer):
            idxs = s['idxs']
            if len(idxs) > 0:
                self.metricdata.data[i] = np.mean(
                    self.simData['testdata'][idxs])
            else:
                self.metricdata.mask[i] = True
        self.metricdata2 = ma.MaskedArray(data=rng.rand(len(self.testslicer)),
                                          mask=np.zeros(
                                              len(self.testslicer), 'bool'),
                                          fill_value=self.testslicer.badval)

    def tearDown(self):
        del self.testslicer
        self.testslicer = None
コード例 #2
0
ファイル: testOpsimFieldSlicer.py プロジェクト: lsst/sims_maf
class TestOpsimFieldSlicerPlotting(unittest.TestCase):

    def setUp(self):
        rng = np.random.RandomState(65332)
        self.testslicer = OpsimFieldSlicer()
        self.fieldData = makeFieldData()
        self.simData = makeDataValues(self.fieldData, random=462)
        self.testslicer.setupSlicer(self.simData, self.fieldData)

        self.metricdata = ma.MaskedArray(data=np.zeros(len(self.testslicer), dtype='float'),
                                         mask=np.zeros(len(self.testslicer), 'bool'),
                                         fill_value=self.testslicer.badval)
        for i, s in enumerate(self.testslicer):
            idxs = s['idxs']
            if len(idxs) > 0:
                self.metricdata.data[i] = np.mean(self.simData['testdata'][idxs])
            else:
                self.metricdata.mask[i] = True
        self.metricdata2 = ma.MaskedArray(data=rng.rand(len(self.testslicer)),
                                          mask=np.zeros(len(self.testslicer), 'bool'),
                                          fill_value=self.testslicer.badval)

    def tearDown(self):
        del self.testslicer
        self.testslicer = None
コード例 #3
0
class TestOpsimFieldSlicerSlicing(unittest.TestCase):
    # Note that this is really testing baseSpatialSlicer, as slicing is done there for healpix grid

    def setUp(self):
        self.testslicer = OpsimFieldSlicer()
        self.fieldData = makeFieldData()
        self.simData = makeDataValues(self.fieldData, random=98)

    def tearDown(self):
        del self.testslicer
        self.testslicer = None

    def testSlicing(self):
        """Test slicing returns (all) data points which match fieldId values."""
        # Test that slicing fails before setupBinner
        self.assertRaises(NotImplementedError, self.testslicer._sliceSimData,
                          0)
        # Set up slicer.
        self.testslicer.setupSlicer(self.simData, self.fieldData)
        for s in self.testslicer:
            didxs = np.where(self.simData['fieldId'] == s['slicePoint']['sid'])
            binidxs = s['idxs']
            self.assertEqual(len(binidxs), len(didxs[0]))
            if len(binidxs) > 0:
                didxs = np.sort(didxs[0])
                binidxs = np.sort(binidxs)
                np.testing.assert_equal(self.simData['testdata'][didxs],
                                        self.simData['testdata'][binidxs])
コード例 #4
0
    def testSlicerEquivalence(self):
        """Test that slicers are marked equal when appropriate, and unequal when appropriate."""
        # Note that opsimfield slicers are considered 'equal' when all fieldId's, RA and Decs match.
        testslicer2 = OpsimFieldSlicer()
        fieldData2 = np.copy(self.fieldData)
        testslicer2.setupSlicer(self.simData, fieldData2)
        # These slicers should be equal.
        self.assertTrue(self.testslicer == testslicer2)
        self.assertFalse(self.testslicer != testslicer2)
        # These slicers should not be equal.
        fieldData2['fieldId'] = fieldData2['fieldId'] + 1
        testslicer2.setupSlicer(self.simData, fieldData2)
        self.assertTrue(self.testslicer != testslicer2)
        self.assertFalse(self.testslicer == testslicer2)
        # Test a slicer that is not the same kind.
        testslicer2 = UniSlicer()
        self.assertNotEqual(self.testslicer, testslicer2)
        # Test slicers that haven't been setup
        ts1 = OpsimFieldSlicer()
        ts2 = OpsimFieldSlicer()

        self.assertTrue(ts1 == ts2)
        self.assertFalse(ts1 != ts2)
        # Set up one with an odd value.
        ts2 = OpsimFieldSlicer(fieldRaColName='WackyName')
        self.assertTrue(ts1 != ts2)
        self.assertFalse(ts1 == ts2)
コード例 #5
0
ファイル: testOpsimFieldSlicer.py プロジェクト: lsst/sims_maf
class TestOpsimFieldSlicerSlicing(unittest.TestCase):
    # Note that this is really testing baseSpatialSlicer, as slicing is done there for healpix grid

    def setUp(self):
        self.testslicer = OpsimFieldSlicer()
        self.fieldData = makeFieldData()
        self.simData = makeDataValues(self.fieldData, random=98)

    def tearDown(self):
        del self.testslicer
        self.testslicer = None

    def testSlicing(self):
        """Test slicing returns (all) data points which match fieldId values."""
        # Test that slicing fails before setupBinner
        self.assertRaises(NotImplementedError, self.testslicer._sliceSimData, 0)
        # Set up slicer.
        self.testslicer.setupSlicer(self.simData, self.fieldData)
        for s in self.testslicer:
            didxs = np.where(self.simData['fieldId'] == s['slicePoint']['sid'])
            binidxs = s['idxs']
            self.assertEqual(len(binidxs), len(didxs[0]))
            if len(binidxs) > 0:
                didxs = np.sort(didxs[0])
                binidxs = np.sort(binidxs)
                np.testing.assert_equal(self.simData['testdata'][didxs], self.simData['testdata'][binidxs])
コード例 #6
0
ファイル: testOpsimFieldSlicer.py プロジェクト: lsst/sims_maf
    def testSlicerEquivalence(self):
        """Test that slicers are marked equal when appropriate, and unequal when appropriate."""
        # Note that opsimfield slicers are considered 'equal' when all fieldId's, RA and Decs match.
        testslicer2 = OpsimFieldSlicer()
        fieldData2 = np.copy(self.fieldData)
        testslicer2.setupSlicer(self.simData, fieldData2)
        # These slicers should be equal.
        self.assertTrue(self.testslicer == testslicer2)
        self.assertFalse(self.testslicer != testslicer2)
        # These slicers should not be equal.
        fieldData2['fieldId'] = fieldData2['fieldId'] + 1
        testslicer2.setupSlicer(self.simData, fieldData2)
        self.assertTrue(self.testslicer != testslicer2)
        self.assertFalse(self.testslicer == testslicer2)
        # Test a slicer that is not the same kind.
        testslicer2 = UniSlicer()
        self.assertNotEqual(self.testslicer, testslicer2)
        # Test slicers that haven't been setup
        ts1 = OpsimFieldSlicer()
        ts2 = OpsimFieldSlicer()

        self.assertTrue(ts1 == ts2)
        self.assertFalse(ts1 != ts2)
        # Set up one with an odd value.
        ts2 = OpsimFieldSlicer(fieldRaColName='WackyName')
        self.assertTrue(ts1 != ts2)
        self.assertFalse(ts1 == ts2)
コード例 #7
0
class TestOpsimFieldSlicerWarning(unittest.TestCase):
    def setUp(self):
        self.testslicer = OpsimFieldSlicer()
        self.fieldData = makeFieldData()
        self.simData = makeDataValues(self.fieldData)

    def tearDown(self):
        del self.testslicer
        self.testslicer = None

    def testWarning(self):
        self.testslicer.setupSlicer(self.simData, self.fieldData)
        with warnings.catch_warnings(record=True) as w:
            self.testslicer.setupSlicer(self.simData, self.fieldData)
            self.assertEqual(len(w), 1)
            self.assertIn("Re-setting up an OpsimFieldSlicer", str(w[-1].message))
コード例 #8
0
class TestOpsimFieldSlicerIteration(unittest.TestCase):
    def setUp(self):
        self.testslicer = OpsimFieldSlicer(latLonDeg=True)
        self.fieldData = makeFieldData()
        self.simData = makeDataValues(self.fieldData, random=776221)
        self.testslicer.setupSlicer(self.simData, self.fieldData)

    def tearDown(self):
        del self.testslicer
        self.testslicer = None

    def testIteration(self):
        """Test iteration goes through expected range and ra/dec are in expected range (radians)."""
        for fid, ra, dec, s in zip(self.fieldData['fieldId'],
                                   np.radians(self.fieldData['fieldRA']),
                                   np.radians(self.fieldData['fieldDec']),
                                   self.testslicer):
            self.assertEqual(fid, s['slicePoint']['sid'])
            self.assertEqual(ra, s['slicePoint']['ra'])
            self.assertEqual(dec, s['slicePoint']['dec'])
            self.assertGreaterEqual(s['slicePoint']['sid'], 0)
            self.assertLessEqual(s['slicePoint']['ra'], 2 * np.pi)
            self.assertGreaterEqual(s['slicePoint']['dec'], -np.pi)
            self.assertLessEqual(s['slicePoint']['dec'], np.pi)

    def testGetItem(self):
        """Test getting indexed value."""
        for i, s in enumerate(self.testslicer):
            dict1 = s
            dict2 = self.testslicer[i]
            np.testing.assert_array_equal(dict1['idxs'], dict2['idxs'])
            self.assertDictEqual(dict1['slicePoint'], dict2['slicePoint'])
        n = 0
        self.assertEqual(self.testslicer[n]['slicePoint']['sid'],
                         self.fieldData['fieldId'][n])
        self.assertEqual(self.testslicer[n]['slicePoint']['ra'],
                         np.radians(self.fieldData['fieldRA'][n]))
        self.assertEqual(self.testslicer[n]['slicePoint']['dec'],
                         np.radians(self.fieldData['fieldDec'][n]))
        n = len(self.testslicer) - 1
        self.assertEqual(self.testslicer[n]['slicePoint']['sid'],
                         self.fieldData['fieldId'][n])
        self.assertEqual(self.testslicer[n]['slicePoint']['ra'],
                         np.radians(self.fieldData['fieldRA'][n]))
        self.assertEqual(self.testslicer[n]['slicePoint']['dec'],
                         np.radians(self.fieldData['fieldDec'][n]))
コード例 #9
0
class TestOpsimFieldSlicerSetup(unittest.TestCase):
    def setUp(self):
        self.testslicer = OpsimFieldSlicer()
        self.fieldData = makeFieldData()
        self.simData = makeDataValues(self.fieldData)

    def tearDown(self):
        del self.testslicer
        self.testslicer = None

    def testSlicertype(self):
        """Test instantiation of slicer sets slicer type as expected."""
        self.assertEqual(self.testslicer.slicerName, self.testslicer.__class__.__name__)
        self.assertEqual(self.testslicer.slicerName, 'OpsimFieldSlicer')

    def testSlicerNbins(self):
        """Test that generate expected number of bins for a given set of fields."""
        self.assertEqual(self.testslicer.nslice, None)
        self.testslicer.setupSlicer(self.simData, self.fieldData)
        self.assertEqual(self.testslicer.nslice, len(self.fieldData['fieldID']))
コード例 #10
0
ファイル: testOpsimFieldSlicer.py プロジェクト: lsst/sims_maf
class TestOpsimFieldSlicerIteration(unittest.TestCase):

    def setUp(self):
        self.testslicer = OpsimFieldSlicer(latLonDeg=True)
        self.fieldData = makeFieldData()
        self.simData = makeDataValues(self.fieldData, random=776221)
        self.testslicer.setupSlicer(self.simData, self.fieldData)

    def tearDown(self):
        del self.testslicer
        self.testslicer = None

    def testIteration(self):
        """Test iteration goes through expected range and ra/dec are in expected range (radians)."""
        for fid, ra, dec, s in zip(self.fieldData['fieldId'], np.radians(self.fieldData['fieldRA']),
                                   np.radians(self.fieldData['fieldDec']), self.testslicer):
            self.assertEqual(fid, s['slicePoint']['sid'])
            self.assertEqual(ra, s['slicePoint']['ra'])
            self.assertEqual(dec, s['slicePoint']['dec'])
            self.assertGreaterEqual(s['slicePoint']['sid'], 0)
            self.assertLessEqual(s['slicePoint']['ra'], 2*np.pi)
            self.assertGreaterEqual(s['slicePoint']['dec'], -np.pi)
            self.assertLessEqual(s['slicePoint']['dec'], np.pi)

    def testGetItem(self):
        """Test getting indexed value."""
        for i, s in enumerate(self.testslicer):
            dict1 = s
            dict2 = self.testslicer[i]
            np.testing.assert_array_equal(dict1['idxs'], dict2['idxs'])
            self.assertDictEqual(dict1['slicePoint'], dict2['slicePoint'])
        n = 0
        self.assertEqual(self.testslicer[n]['slicePoint']['sid'], self.fieldData['fieldId'][n])
        self.assertEqual(self.testslicer[n]['slicePoint']['ra'], np.radians(self.fieldData['fieldRA'][n]))
        self.assertEqual(self.testslicer[n]['slicePoint']['dec'], np.radians(self.fieldData['fieldDec'][n]))
        n = len(self.testslicer) - 1
        self.assertEqual(self.testslicer[n]['slicePoint']['sid'], self.fieldData['fieldId'][n])
        self.assertEqual(self.testslicer[n]['slicePoint']['ra'], np.radians(self.fieldData['fieldRA'][n]))
        self.assertEqual(self.testslicer[n]['slicePoint']['dec'], np.radians(self.fieldData['fieldDec'][n]))