Ejemplo n.º 1
0
    def test_reload(self):
        # Has Metric instance
        pa1_meas = Measurement(
            self.metric_set['testing.PA1'],
            4. * u.mmag
        )

        # Don't have metric instances
        am1_meas = Measurement(
            'testing.AM1',
            2. * u.marcsec
        )
        pa2_meas = Measurement(
            'testing.PA2',
            10. * u.mmag
        )

        measurements = MeasurementSet([pa1_meas, am1_meas, pa2_meas])
        measurements.refresh_metrics(self.metric_set)

        self.assertIs(
            measurements['testing.PA1'].metric,
            self.metric_set['testing.PA1']
        )
        self.assertIs(
            measurements['testing.AM1'].metric,
            self.metric_set['testing.AM1']
        )
        self.assertIs(
            measurements['testing.PA2'].metric,
            self.metric_set['testing.PA2']
        )
    def test_measurement_set_update(self):
        meas_set = MeasurementSet([self.pa1_meas, self.am1_meas])
        meas_set_2 = MeasurementSet([self.am1_meas, self.pa2_meas])

        meas_set.update(meas_set_2)

        self.assertIs(meas_set['testing.PA1'], self.pa1_meas)
        self.assertIs(meas_set['testing.PA2'], self.pa2_meas)
        self.assertIs(meas_set['testing.AM1'], self.am1_meas)
    def test_measurement_iadd(self):
        meas_set = MeasurementSet([self.pa1_meas, self.am1_meas])
        meas_set_2 = MeasurementSet([self.am1_meas, self.pa2_meas])

        meas_set += meas_set_2

        self.assertIs(meas_set['testing.PA1'], self.pa1_meas)
        self.assertIs(meas_set['testing.PA2'], self.pa2_meas)
        self.assertIs(meas_set['testing.AM1'], self.am1_meas)
Ejemplo n.º 4
0
    def setUp(self):
        # Mock metrics
        self.metric_photrms = Metric('test.PhotRms', 'Photometric RMS', 'mmag')
        self.metric_photmed = Metric('test.PhotMedian', 'Median magntidue',
                                     'mag')
        self.metric_set = MetricSet([self.metric_photrms, self.metric_photmed])

        # Mock specifications
        self.spec_photrms_design = ThresholdSpecification(
            'test.PhotRms.design', 20. * u.mmag, '<')
        self.spec_set = SpecificationSet([self.spec_photrms_design])

        # Mock measurements
        self.meas_photrms = Measurement(self.metric_photrms,
                                        15 * u.mmag,
                                        notes={'note': 'value'})
        self.meas_photrms.extras['n_stars'] = Datum(
            250,
            label='N stars',
            description='Number of stars included in RMS estimate')
        self.measurement_set = MeasurementSet([self.meas_photrms])

        # Metrics for Job 2
        self.metric_test_2 = Metric('test2.SourceCount', 'Source Count', '')
        self.blob_test_2 = Blob('test2_blob',
                                sn=Datum(50 * u.dimensionless_unscaled,
                                         label='S/N'))
        self.metric_set_2 = MetricSet([self.metric_test_2])

        # Specifications for Job 2
        self.spec_test_2 = ThresholdSpecification(
            'test2.SourceCount.design', 100 * u.dimensionless_unscaled, '>=')
        self.spec_set_2 = SpecificationSet([self.spec_test_2])

        # Measurements for Job 2
        self.meas_test_2_SourceCount = Measurement(
            self.metric_test_2, 200 * u.dimensionless_unscaled)
        self.meas_test_2_SourceCount.link_blob(self.blob_test_2)
        self.measurement_set_2 = MeasurementSet([self.meas_test_2_SourceCount])
Ejemplo n.º 5
0
    def test_metric_package_reload(self):
        # Create a Job without Metric definitions
        meas = Measurement('validate_drp.PA1', 15 * u.mmag)
        measurement_set = MeasurementSet([meas])

        job = Job(measurements=measurement_set)
        job.reload_metrics_package('verify_metrics')

        # Should now have metrics and specs
        self.assertTrue(len(job.specs) > 0)
        self.assertTrue(len(job.metrics) > 0)
        self.assertIsInstance(job.measurements['validate_drp.PA1'].metric,
                              Metric)
Ejemplo n.º 6
0
    def test_measurement_set(self):
        meas_set = MeasurementSet([self.pa1_meas])
        self.assertEqual(len(meas_set), 1)
        self.assertIn('testing.PA1', meas_set)
        self.assertIs(self.pa1_meas, meas_set['testing.PA1'])
        self.assertNotIn('testing.AM1', meas_set)

        # add an inconsistently labelled measurement
        with self.assertRaises(KeyError):
            meas_set['testing.AMx'] = self.am1_meas

        # Add measurement by key
        meas_set[self.am1_meas.metric_name] = self.am1_meas
        self.assertEqual(len(meas_set), 2)
        self.assertIn('testing.AM1', meas_set)
        self.assertIs(self.am1_meas, meas_set['testing.AM1'])

        # Insert measurement
        meas_set.insert(self.pa2_meas)
        self.assertEqual(len(meas_set), 3)
        self.assertIn('testing.PA2', meas_set)
        self.assertIs(self.pa2_meas, meas_set['testing.PA2'])

        # Delete measurement
        del meas_set['testing.PA2']
        self.assertNotIn('testing.PA2', meas_set)

        # Iterate
        items = {k: v for k, v in meas_set.items()}
        self.assertEqual(len(items), len(meas_set))

        names = [n for n in meas_set]
        self.assertEqual(len(names), 2)
        for n in names:
            self.assertIsInstance(n, Name)

        # Serialize
        json_doc = meas_set.json
        self.assertIsInstance(json_doc, list)
        self.assertEqual(len(json_doc), 2)
        for meas in json_doc:
            self.assertIn('metric', meas)

        # Deserialize (no blobs/BlobSet to propagate)
        new_meas_set = MeasurementSet.deserialize(
            measurements=json_doc,
            metric_set=self.metric_set)
        self.assertEqual(meas_set, new_meas_set)