Ejemplo n.º 1
0
Archivo: app.py Proyecto: R136a1-/MOP
    def __init__(self, working_directory, output_directory,
                 dry_run=False, debug=False):
        self.dry_run = dry_run

        logger.info("Input directory set to: %s" % working_directory)
        logger.info("Output directory set to: %s" % output_directory)

        working_context = context.get_context(working_directory)
        output_context = context.get_context(output_directory)

        if dry_run and working_context.is_remote():
            sys.stdout.write("A dry run can only be done on local files.\n")
            sys.exit(0)

        if output_context.is_remote():
            sys.stdout.write("The output directory must be local.\n")
            sys.exit(0)

        image_manager = self._create_image_manager()

        progress_manager = working_context.get_progress_manager()
        builder = self._create_workunit_builder(working_context,
                                                output_context,
                                                progress_manager)

        workunit_provider = WorkUnitProvider(self.input_suffix,
                                             working_context,
                                             progress_manager, builder,
                                             randomize=self.should_randomize_workunits)

        prefetching_workunit_provider = PreFetchingWorkUnitProvider(workunit_provider,
                                                                    config.read("PREFETCH.NUMBER"),
                                                                    image_manager)

        if working_context.is_remote():
            synchronization_manager = SynchronizationManager(working_context)
        else:
            synchronization_manager = None

        model = TransAckValidationModel(prefetching_workunit_provider,
                                        image_manager,
                                        synchronization_manager)
        logger.debug("Created model.")

        view = self._create_view(model, debug=debug)

        logger.debug("Created view.")
        model.start_work()

        self.model = model
        self.view = view
        self.controller = view.controller

        self.controller.display_current_image()

        if not synchronization_manager:
            self.view.disable_sync_menu()

        self.view.show()
Ejemplo n.º 2
0
    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()
Ejemplo n.º 3
0
    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()
Ejemplo n.º 4
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.º 5
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))
Ejemplo n.º 6
0
    def __init__(self,
                 working_directory,
                 output_directory,
                 dry_run=False,
                 debug=False,
                 name_filter=None,
                 user_id=None):
        self.dry_run = dry_run
        self.user_id = user_id
        logger.info("Input directory set to: %s" % working_directory)
        logger.info("Output directory set to: %s" % output_directory)

        working_context = context.get_context(working_directory,
                                              userid=self.user_id)
        output_context = context.get_context(output_directory,
                                             userid=self.user_id)

        if dry_run and working_context.is_remote():
            sys.stdout.write("A dry run can only be done on local files.\n")
            sys.exit(0)

        if output_context.is_remote():
            sys.stdout.write("The output directory must be local.\n")
            sys.exit(0)

        image_manager = self._create_image_manager()

        progress_manager = working_context.get_progress_manager()
        builder = self._create_workunit_builder(working_context,
                                                output_context,
                                                progress_manager)

        workunit_provider = WorkUnitProvider(
            self.input_suffix,
            working_context,
            progress_manager,
            builder,
            randomize=self.should_randomize_workunits,
            name_filter=name_filter)

        prefetching_workunit_provider = PreFetchingWorkUnitProvider(
            workunit_provider, config.read("PREFETCH.NUMBER"), image_manager)

        if working_context.is_remote():
            synchronization_manager = SynchronizationManager(working_context,
                                                             sync_enabled=True)
        else:
            synchronization_manager = None

        model = TransAckValidationModel(prefetching_workunit_provider,
                                        image_manager, synchronization_manager)
        logger.debug("Created model.")

        view = self._create_view(model, debug=debug)

        logger.debug("Created view.")
        model.start_work()

        self.model = model
        self.view = view
        self.controller = view.controller

        self.controller.display_current_image()

        if not synchronization_manager:
            self.view.disable_sync_menu()

        self.view.show()