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
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
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]