Example #1
0
    def iter_import_from_settings(self, settings, scan_plates=None):
        from cecog.io.importer import IniFileImporter, FlatFileImporter
        settings.set_section(SECTION_NAME_GENERAL)

        for info in self.iter_check_plates(settings):
            plate_id, path_plate_in, path_plate_out, filename = info

            # check whether this plate has to be rescanned
            if not scan_plates is None:
                scan_plate = scan_plates[plate_id]
            else:
                scan_plate = False

            # if no structure file was found scan the plate
            if filename is None:
                scan_plate = True

            # (re)scan the file structure
            if scan_plate:
                if settings.get2('image_import_namingschema'):
                    config_parser = CecogEnvironment.naming_schema
                    section_name = settings.get2('namingscheme')
                    importer = IniFileImporter(path_plate_in,
                                               config_parser, section_name)
                # read file structure according to dimension/structure file
                elif settings.get2('image_import_structurefile'):
                    filename = settings.get2('structure_filename')
                    importer = FlatFileImporter(path_plate_in, filename)

                # scan the file structure
                importer.scan()

                # serialize importer and register plate only upon successful scan
                if importer.is_valid:
                    filename = self._get_structure_filename(settings, plate_id,
                                                            path_plate_in,
                                                            path_plate_out)

                    importer_pickle(importer, filename)
                    self.register_plate(plate_id, path_plate_in,
                                        path_plate_out, filename)
            else:
                self.register_plate(plate_id, path_plate_in,
                                    path_plate_out, filename)

            yield info
Example #2
0
    def iter_import_from_settings(self, settings, scan_plates=None):
        from cecog.io.importer import IniFileImporter, FlatFileImporter
        settings.set_section(SECTION_NAME_GENERAL)

        for info in self.iter_check_plates(settings):
            plate_id, path_plate_in, path_plate_out, filename = info

            # check whether this plate has to be rescanned
            if not scan_plates is None:
                scan_plate = scan_plates[plate_id]
            else:
                scan_plate = False

            # if no structure file was found scan the plate
            if filename is None:
                scan_plate = True

            # (re)scan the file structure
            if scan_plate:
                if settings.get2('image_import_namingschema'):
                    config_parser = CecogEnvironment.naming_schema
                    section_name = settings.get2('namingscheme')
                    importer = IniFileImporter(path_plate_in,
                                               config_parser, section_name)
                # read file structure according to dimension/structure file
                elif settings.get2('image_import_structurefile'):
                    filename = settings.get2('structure_filename')
                    importer = FlatFileImporter(path_plate_in, filename)

                # scan the file structure
                importer.scan()

                # serialize importer and register plate only upon successful scan
                if importer.is_valid:
                    filename = self._get_structure_filename(settings, plate_id,
                                                            path_plate_in,
                                                            path_plate_out)

                    importer_pickle(importer, filename)
                    self.register_plate(plate_id, path_plate_in,
                                        path_plate_out, filename)
            else:
                self.register_plate(plate_id, path_plate_in,
                                    path_plate_out, filename)

            yield info
Example #3
0
    def iter_import_from_settings(self, settings, plates_restriction=None, scan_plates=None):
        settings.set_section(SECTION_NAME_GENERAL)

        for info in self.iter_check_plates(settings, plates_restriction):
            plate_id, path_plate_in, path_plate_out, filename = info

            # check whether this plate has to be rescanned
            if not scan_plates is None:
                scan_plate = scan_plates[plate_id]
            else:
                scan_plate = False

            # if no structure file was found scan the plate
            if filename is None:
                scan_plate = True

            # (re)scan the file structure
            if scan_plate:
                config_parser = CecogEnvironment.naming_schema
                section_name = settings.get2('namingscheme')
                importer = IniFileImporter()
                importer.setup(path_plate_in, config_parser, section_name)
                importer.scan()

                if importer.is_valid:
                    filename = self._get_structure_filename(settings, plate_id,
                                                            path_plate_in,
                                                            path_plate_out)

                    # make missing plate directories
                    if not os.path.isdir(path_plate_out):
                        os.mkdir(path_plate_out)

                    importer.save_xml(filename)
                    self.register_plate(plate_id, path_plate_in,
                                        path_plate_out, filename)
            else:
                self.register_plate(plate_id, path_plate_in,
                                    path_plate_out, filename)

            yield info
Example #4
0
 def set_plate(self, plate):
     if plate != self.current_plate:
         self.current_plate = plate
         filename = self._plates[plate]
         self._importer = IniFileImporter.load_xml(filename)
         self._importer.path = self._path_in[plate]