Ejemplo n.º 1
0
    def setUp(self):
        astrom_data = AstromParser().parse(
            self.get_abs_path("data/1616681p22.measure3.cands.astrom"))
        self.source = astrom_data.get_sources()[0]
        self.reading0 = self.source.get_reading(0)
        self.reading1 = self.source.get_reading(1)
        self.reading2 = self.source.get_reading(2)

        self.undertest = TripletFocusCalculator(self.source)
Ejemplo n.º 2
0
    def setUp(self):
        astrom_data = AstromParser().parse(
            self.get_abs_path("data/1616681p22.measure3.cands.astrom"))
        self.source = astrom_data.get_sources()[0]
        self.reading0 = self.source.get_reading(0)
        self.reading1 = self.source.get_reading(1)
        self.reading2 = self.source.get_reading(2)

        self.needs_apcor = False
        self.callback = Mock()
Ejemplo n.º 3
0
    def test_download_callback(self):
        astrom_data = AstromParser().parse(
            self.get_abs_path("data/1616681p22.measure3.cands.astrom"))

        source = astrom_data.get_sources()[0]
        reading = source.get_reading(0)

        callback = Mock()

        downloadable_item = DownloadableItem(reading, source, True, callback)

        self.undertest.do_download(downloadable_item)

        callback.assert_called_once_with(reading, self.downloaded_image)
Ejemplo n.º 4
0
    def setUp(self):
        test_file = "data/image_reading/realstest2.measure3.reals.astrom"
        astrom_data = AstromParser().parse(self.get_abs_path(test_file))

        self.reading = astrom_data.get_sources()[0].get_reading(0)
        self.original_observed_x = self.reading.x
        self.original_observed_y = self.reading.y

        self.offset_x = 10
        self.offset_y = 15
        coordinate_converter = CoordinateConverter(self.offset_x, self.offset_y)

        self.undertest = SourceCutout(self.reading, Mock(), coordinate_converter)

        self.mock_update_ra_dec = Mock()
        self.undertest._update_ra_dec = self.mock_update_ra_dec
Ejemplo n.º 5
0
    def setUp(self):
        test_file = "data/image_reading/realstest2.measure3.reals.astrom"
        astrom_data = AstromParser().parse(self.get_abs_path(test_file))

        self.reading = astrom_data.get_sources()[0].get_reading(0)
        self.original_observed_x = self.reading.x
        self.original_observed_y = self.reading.y

        self.offset_x = 10
        self.offset_y = 15
        coordinate_converter = CoordinateConverter(self.offset_x,
                                                   self.offset_y)

        self.undertest = SourceCutout(self.reading, Mock())

        self.mock_update_ra_dec = Mock()
        self.undertest._update_ra_dec = self.mock_update_ra_dec
Ejemplo n.º 6
0
    def setUp(self):
        test_file = self.path("realstest2.measure3.reals.astrom")
        astrom_data = AstromParser().parse(test_file)

        self.reading = astrom_data.get_sources()[0].get_reading(0)

        # Load the real image
        hdulist = fits.open(self.path("cutout-1616687p.fits"))

        with open(self.path("1616687p10.apcor")) as fh:
            apcor = ApcorData.from_string(fh.read())

        # NOTE: the test image
        # vos://cadc.nrc.ca~vospace/OSSOS/dbimages/1616687/1616687p.fits
        # has cutout: [11][1449:1199,1429:1179] and is inverted.
        #
        # Therefore the first reading at (772.13, 3334.70) in observed
        # coordinates is at
        # (NAX1 - max cutout x, NAX2 - max cutout y)
        #  = (2112 - 1449, 4644 - 1429) = (663, 3215)
        self.original_pixel_x = 663
        self.original_pixel_y = 3215

        self.original_observed_x = 772.13
        self.original_observed_y = 3334.70

        x_offset = self.original_observed_x - self.original_pixel_x
        y_offset = self.original_observed_y - self.original_pixel_y

        self.undertest = SourceCutout(self.reading, hdulist,
                                      CoordinateConverter(x_offset, y_offset),
                                      apcor=apcor)

        assert_that(self.undertest.observed_x, equal_to(self.original_observed_x))
        assert_that(self.undertest.observed_y, equal_to(self.original_observed_y))

        assert_that(self.undertest.pixel_x, equal_to(self.original_pixel_x))
        assert_that(self.undertest.pixel_y, equal_to(self.original_pixel_y))
Ejemplo n.º 7
0
class TransitionAcknowledgementModelTest(FileReadingTestCase):
    def setUp(self):
        events.unsub_all()
        self.workunit_provider = Mock(spec=PreFetchingWorkUnitProvider)
        self.image_manager = Mock(spec=ImageManager)
        self.synchronization_manager = Mock(spec=SynchronizationManager)
        self.model = TransAckValidationModel(self.workunit_provider,
                                             self.image_manager,
                                             self.synchronization_manager)

        self.data = AstromParser().parse(
            self.get_abs_path(
                "data/model_testdir_1/1584431p15.measure3.reals.astrom"))
        self.output_context = Mock(spec=LocalDirectoryWorkingContext)
        self.progress_manager = MagicMock(spec=LocalProgressManager)

        self.sources = self.data.get_sources()

    def use_reals_workunit(self):
        self.workunit = RealsWorkUnit("file", self.data, self.progress_manager,
                                      self.output_context)
        self.model.add_workunit(self.workunit)
        assert_that(self.model.get_current_reading(),
                    equal_to(self.sources[0].get_reading(0)))

    def use_cands_workunit(self):
        self.workunit = CandidatesWorkUnit("file", self.data,
                                           self.progress_manager,
                                           self.output_context)
        self.workunit.get_writer = Mock()
        self.model.add_workunit(self.workunit)
        assert_that(self.model.get_current_reading(),
                    equal_to(self.sources[0].get_reading(0)))

    def test_ignores_change_observations_while_transitioning_observations(
            self):
        self.use_reals_workunit()

        first_reading = self.sources[0].get_reading(0)
        second_reading = self.sources[0].get_reading(1)
        third_reading = self.sources[0].get_reading(2)

        assert_that(self.model.get_current_reading(), equal_to(first_reading))

        # This should cause the model to enter the waiting state.
        self.model.next_obs()

        assert_that(self.model.get_current_reading(), equal_to(second_reading))

        self.model.next_obs()

        assert_that(self.model.get_current_reading(), equal_to(second_reading))

        self.model.previous_obs()

        assert_that(self.model.get_current_reading(), equal_to(second_reading))

        self.model.acknowledge_image_displayed()

        self.model.next_obs()

        assert_that(self.model.get_current_reading(), equal_to(third_reading))

    def test_ignores_change_sources_while_transitioning_sources(self):
        self.use_reals_workunit()

        first_source = self.sources[0]
        second_source = self.sources[1]
        third_source = self.sources[2]

        assert_that(self.model.get_current_source(), equal_to(first_source))

        # This should cause the model to enter the waiting state.
        self.model.next_source()

        assert_that(self.model.get_current_source(), equal_to(second_source))

        self.model.next_source()

        assert_that(self.model.get_current_source(), equal_to(second_source))

        self.model.previous_source()

        assert_that(self.model.get_current_source(), equal_to(second_source))

        self.model.acknowledge_image_displayed()

        self.model.next_source()

        assert_that(self.model.get_current_source(), equal_to(third_source))

    def test_ignores_next_item_while_transitioning_items(self):
        self.use_cands_workunit()

        first_source = self.sources[0]
        second_source = self.sources[1]
        third_source = self.sources[2]

        assert_that(self.model.get_current_source(), equal_to(first_source))

        # This should cause the model to enter the waiting state.
        self.model.next_item()

        assert_that(self.model.get_current_source(), equal_to(second_source))

        self.model.next_item()

        assert_that(self.model.get_current_source(), equal_to(second_source))

        self.model.acknowledge_image_displayed()

        self.model.next_item()

        assert_that(self.model.get_current_source(), equal_to(third_source))

    def test_reals_ignores_accept_while_transitioning_observations(self):
        self.use_reals_workunit()

        first_reading = self.sources[0].get_reading(0)
        second_reading = self.sources[0].get_reading(1)

        assert_that(self.model.get_current_reading(), equal_to(first_reading))

        # This should cause the model to enter the waiting state.
        self.model.next_obs()

        assert_that(self.model.get_current_reading(), equal_to(second_reading))

        assert_that(self.model.get_num_items_processed(), equal_to(0))
        self.model.accept_current_item()
        assert_that(self.model.get_num_items_processed(), equal_to(0))

        self.model.acknowledge_image_displayed()

        self.model.accept_current_item()
        assert_that(self.model.get_num_items_processed(), equal_to(1))

    def test_reals_ignores_reject_while_transitioning_observations(self):
        self.use_reals_workunit()

        first_reading = self.sources[0].get_reading(0)
        second_reading = self.sources[0].get_reading(1)

        assert_that(self.model.get_current_reading(), equal_to(first_reading))

        # This should cause the model to enter the waiting state.
        self.model.next_obs()

        assert_that(self.model.get_current_reading(), equal_to(second_reading))

        assert_that(self.model.get_num_items_processed(), equal_to(0))
        self.model.reject_current_item()
        assert_that(self.model.get_num_items_processed(), equal_to(0))

        self.model.acknowledge_image_displayed()

        self.model.reject_current_item()
        assert_that(self.model.get_num_items_processed(), equal_to(1))

    def test_cands_allow_accept_while_transitioning_observations(self):
        self.use_cands_workunit()

        self.model.next_obs()

        assert_that(self.model.get_num_items_processed(), equal_to(0))
        self.model.accept_current_item()
        assert_that(self.model.get_num_items_processed(), equal_to(1))

    def test_cands_allow_reject_while_transitioning_observations(self):
        self.use_cands_workunit()

        self.model.next_obs()

        assert_that(self.model.get_num_items_processed(), equal_to(0))
        self.model.reject_current_item()
        assert_that(self.model.get_num_items_processed(), equal_to(1))

    def test_cands_ignore_accept_while_transitioning_sources(self):
        self.use_cands_workunit()

        # This should cause the model to enter the waiting state.
        self.model.next_source()

        assert_that(self.model.get_num_items_processed(), equal_to(0))
        self.model.accept_current_item()
        assert_that(self.model.get_num_items_processed(), equal_to(0))

        self.model.acknowledge_image_displayed()

        self.model.accept_current_item()
        assert_that(self.model.get_num_items_processed(), equal_to(1))

    def test_cands_ignore_reject_while_transitioning_sources(self):
        self.use_cands_workunit()

        # This should cause the model to enter the waiting state.
        self.model.next_source()

        assert_that(self.model.get_num_items_processed(), equal_to(0))
        self.model.reject_current_item()
        assert_that(self.model.get_num_items_processed(), equal_to(0))

        self.model.acknowledge_image_displayed()

        self.model.reject_current_item()
        assert_that(self.model.get_num_items_processed(), equal_to(1))

    @patch("daomop.gui.models.validation.events")
    def test_additional_change_image_events_not_sent_when_waiting(
            self, events_mock):
        self.use_reals_workunit()

        # This should cause the model to enter the waiting state.
        self.model.next_item()

        assert_that(events_mock.send.call_count, equal_to(1))

        self.model.next_item()

        assert_that(events_mock.send.call_count, equal_to(1))

        self.model.acknowledge_image_displayed()

        self.model.next_item()

        assert_that(events_mock.send.call_count, equal_to(2))
Ejemplo n.º 8
0
class TransitionAcknowledgementModelTest(FileReadingTestCase):
    def setUp(self):
        events.unsub_all()
        self.workunit_provider = Mock(spec=PreFetchingWorkUnitProvider)
        self.image_manager = Mock(spec=ImageManager)
        self.synchronization_manager = Mock(spec=SynchronizationManager)
        self.model = TransAckValidationModel(self.workunit_provider, self.image_manager,
                                             self.synchronization_manager)

        self.data = AstromParser().parse(
            self.get_abs_path("data/model_testdir_1/1584431p15.measure3.reals.astrom"))
        self.output_context = Mock(spec=LocalDirectoryWorkingContext)
        self.progress_manager = MagicMock(spec=LocalProgressManager)

        self.sources = self.data.get_sources()

    def use_reals_workunit(self):
        self.workunit = RealsWorkUnit("file", self.data, self.progress_manager,
                                      self.output_context)
        self.model.add_workunit(self.workunit)
        assert_that(self.model.get_current_reading(), equal_to(self.sources[0].get_reading(0)))

    def use_cands_workunit(self):
        self.workunit = CandidatesWorkUnit("file", self.data, self.progress_manager,
                                           self.output_context)
        self.workunit.get_writer = Mock()
        self.model.add_workunit(self.workunit)
        assert_that(self.model.get_current_reading(), equal_to(self.sources[0].get_reading(0)))

    def test_ignores_change_observations_while_transitioning_observations(self):
        self.use_reals_workunit()

        first_reading = self.sources[0].get_reading(0)
        second_reading = self.sources[0].get_reading(1)
        third_reading = self.sources[0].get_reading(2)

        assert_that(self.model.get_current_reading(), equal_to(first_reading))

        # This should cause the model to enter the waiting state.
        self.model.next_obs()

        assert_that(self.model.get_current_reading(), equal_to(second_reading))

        self.model.next_obs()

        assert_that(self.model.get_current_reading(), equal_to(second_reading))

        self.model.previous_obs()

        assert_that(self.model.get_current_reading(), equal_to(second_reading))

        self.model.acknowledge_image_displayed()

        self.model.next_obs()

        assert_that(self.model.get_current_reading(), equal_to(third_reading))

    def test_ignores_change_sources_while_transitioning_sources(self):
        self.use_reals_workunit()

        first_source = self.sources[0]
        second_source = self.sources[1]
        third_source = self.sources[2]

        assert_that(self.model.get_current_source(), equal_to(first_source))

        # This should cause the model to enter the waiting state.
        self.model.next_source()

        assert_that(self.model.get_current_source(), equal_to(second_source))

        self.model.next_source()

        assert_that(self.model.get_current_source(), equal_to(second_source))

        self.model.previous_source()

        assert_that(self.model.get_current_source(), equal_to(second_source))

        self.model.acknowledge_image_displayed()

        self.model.next_source()

        assert_that(self.model.get_current_source(), equal_to(third_source))

    def test_ignores_next_item_while_transitioning_items(self):
        self.use_cands_workunit()

        first_source = self.sources[0]
        second_source = self.sources[1]
        third_source = self.sources[2]

        assert_that(self.model.get_current_source(), equal_to(first_source))

        # This should cause the model to enter the waiting state.
        self.model.next_item()

        assert_that(self.model.get_current_source(), equal_to(second_source))

        self.model.next_item()

        assert_that(self.model.get_current_source(), equal_to(second_source))

        self.model.acknowledge_image_displayed()

        self.model.next_item()

        assert_that(self.model.get_current_source(), equal_to(third_source))

    def test_reals_ignores_accept_while_transitioning_observations(self):
        self.use_reals_workunit()

        first_reading = self.sources[0].get_reading(0)
        second_reading = self.sources[0].get_reading(1)

        assert_that(self.model.get_current_reading(), equal_to(first_reading))

        # This should cause the model to enter the waiting state.
        self.model.next_obs()

        assert_that(self.model.get_current_reading(), equal_to(second_reading))

        assert_that(self.model.get_num_items_processed(), equal_to(0))
        self.model.accept_current_item()
        assert_that(self.model.get_num_items_processed(), equal_to(0))

        self.model.acknowledge_image_displayed()

        self.model.accept_current_item()
        assert_that(self.model.get_num_items_processed(), equal_to(1))

    def test_reals_ignores_reject_while_transitioning_observations(self):
        self.use_reals_workunit()

        first_reading = self.sources[0].get_reading(0)
        second_reading = self.sources[0].get_reading(1)

        assert_that(self.model.get_current_reading(), equal_to(first_reading))

        # This should cause the model to enter the waiting state.
        self.model.next_obs()

        assert_that(self.model.get_current_reading(), equal_to(second_reading))

        assert_that(self.model.get_num_items_processed(), equal_to(0))
        self.model.reject_current_item()
        assert_that(self.model.get_num_items_processed(), equal_to(0))

        self.model.acknowledge_image_displayed()

        self.model.reject_current_item()
        assert_that(self.model.get_num_items_processed(), equal_to(1))

    def test_cands_allow_accept_while_transitioning_observations(self):
        self.use_cands_workunit()

        self.model.next_obs()

        assert_that(self.model.get_num_items_processed(), equal_to(0))
        self.model.accept_current_item()
        assert_that(self.model.get_num_items_processed(), equal_to(1))

    def test_cands_allow_reject_while_transitioning_observations(self):
        self.use_cands_workunit()

        self.model.next_obs()

        assert_that(self.model.get_num_items_processed(), equal_to(0))
        self.model.reject_current_item()
        assert_that(self.model.get_num_items_processed(), equal_to(1))

    def test_cands_ignore_accept_while_transitioning_sources(self):
        self.use_cands_workunit()

        # This should cause the model to enter the waiting state.
        self.model.next_source()

        assert_that(self.model.get_num_items_processed(), equal_to(0))
        self.model.accept_current_item()
        assert_that(self.model.get_num_items_processed(), equal_to(0))

        self.model.acknowledge_image_displayed()

        self.model.accept_current_item()
        assert_that(self.model.get_num_items_processed(), equal_to(1))

    def test_cands_ignore_reject_while_transitioning_sources(self):
        self.use_cands_workunit()

        # This should cause the model to enter the waiting state.
        self.model.next_source()

        assert_that(self.model.get_num_items_processed(), equal_to(0))
        self.model.reject_current_item()
        assert_that(self.model.get_num_items_processed(), equal_to(0))

        self.model.acknowledge_image_displayed()

        self.model.reject_current_item()
        assert_that(self.model.get_num_items_processed(), equal_to(1))

    @patch("ossos.gui.models.validation.events")
    def test_additional_change_image_events_not_sent_when_waiting(self, events_mock):
        self.use_reals_workunit()

        # This should cause the model to enter the waiting state.
        self.model.next_item()

        assert_that(events_mock.send.call_count, equal_to(1))

        self.model.next_item()

        assert_that(events_mock.send.call_count, equal_to(1))

        self.model.acknowledge_image_displayed()

        self.model.next_item()

        assert_that(events_mock.send.call_count, equal_to(2))