Source code for pyfibre.addons.shg_pl_trans.shg_pl_trans_parser
import copy
from traits.api import Dict, Str, File
from pyfibre.core.base_file_parser import BaseFileParser, FileSet
from .utils import filter_input_files, get_files_prefixes
[docs]class SHGPLTransFileSet(FileSet):
#: Collection of file paths with labels
registry = Dict(Str, File)
[docs]class SHGPLTransParser(BaseFileParser):
"""Parser class for SHG files"""
_file_set_cache = Dict(Str, SHGPLTransFileSet)
_image_types = ('SHG-PL-Trans', 'SHG', 'PL-Trans')
def _cache_file_sets(self, input_files, image_type):
"""Populate image_dictionary argument using prefixes and filenames
of input_files list"""
files, prefixes = get_files_prefixes(
input_files, image_type)
for filename, prefix in zip(files, prefixes):
if prefix in self._file_set_cache:
file_set = self._file_set_cache[prefix]
else:
file_set = SHGPLTransFileSet(prefix=prefix)
self._file_set_cache[prefix] = file_set
file_set.registry[image_type] = filename
input_files.remove(filename)
[docs] def get_file_sets(self, input_files):
self._file_set_cache = {}
input_files = filter_input_files(copy.copy(input_files))
for image_type in self._image_types:
self._cache_file_sets(input_files, image_type)
return list(self._file_set_cache.values())