def get_serializer(self): """ Set the serializer to be used for loading and saving alignments """ if not self.args.serializer and self.args.alignments_path: ext = os.path.splitext(self.args.alignments_path)[-1] serializer = Serializer.get_serializer_from_ext(ext) print("Alignments Output: {}".format(self.args.alignments_path)) else: serializer = Serializer.get_serializer(self.args.serializer) print("Using {} serializer".format(serializer.ext)) return serializer
def get_serializer(self): """ Set the serializer to be used for loading and saving alignments """ if (not hasattr(self.args, "serializer") or not self.args.serializer): if self.args.alignments_path: ext = os.path.splitext(self.args.alignments_path)[-1] else: ext = "json" serializer = Serializer.get_serializer_from_ext(ext) else: serializer = Serializer.get_serializer(self.args.serializer) print("Using {} serializer".format(serializer.ext)) return serializer
def process(self): """ Main processing function of the sort tool """ # Setting default argument values that cannot be set by argparse # Set output dir to the same value as input dir # if the user didn't specify it. if self.args.output_dir is None: logger.verbose( "No output directory provided. Using input dir as output dir.") self.args.output_dir = self.args.input_dir # Assigning default threshold values based on grouping method if (self.args.final_process == "folders" and self.args.min_threshold < 0.0): method = self.args.group_method.lower() if method == 'face-cnn': self.args.min_threshold = 7.2 elif method == 'hist': self.args.min_threshold = 0.3 # Load VGG Face if sorting by face if self.args.sort_method.lower() == "face": self.vgg_face = VGGFace(backend=self.args.backend, loglevel=self.args.loglevel) # If logging is enabled, prepare container if self.args.log_changes: self.changes = dict() # Assign default sort_log.json value if user didn't specify one if self.args.log_file_path == 'sort_log.json': self.args.log_file_path = os.path.join(self.args.input_dir, 'sort_log.json') # Set serializer based on logfile extension serializer_ext = os.path.splitext(self.args.log_file_path)[-1] self.serializer = Serializer.get_serializer_from_ext( serializer_ext) # Prepare sort, group and final process method names _sort = "sort_" + self.args.sort_method.lower() _group = "group_" + self.args.group_method.lower() _final = "final_process_" + self.args.final_process.lower() self.args.sort_method = _sort.replace('-', '_') self.args.group_method = _group.replace('-', '_') self.args.final_process = _final.replace('-', '_') self.sort_process()
def process(self): """ Main processing function of the sort tool """ # Setting default argument values that cannot be set by argparse # Set output dir to the same value as input dir # if the user didn't specify it. if self.args.output_dir.lower() == "_output_dir": self.args.output_dir = self.args.input_dir # Assigning default threshold values based on grouping method if (self.args.final_process == "folders" and self.args.min_threshold < 0.0): method = self.args.group_method.lower() if method == 'face': self.args.min_threshold = 0.6 elif method == 'face-cnn': self.args.min_threshold = 7.2 elif method == 'hist': self.args.min_threshold = 0.3 # If logging is enabled, prepare container if self.args.log_changes: self.changes = dict() # Assign default sort_log.json value if user didn't specify one if self.args.log_file_path == 'sort_log.json': self.args.log_file_path = os.path.join(self.args.input_dir, 'sort_log.json') # Set serializer based on logfile extension serializer_ext = os.path.splitext( self.args.log_file_path)[-1] self.serializer = Serializer.get_serializer_from_ext( serializer_ext) # Prepare sort, group and final process method names _sort = "sort_" + self.args.sort_method.lower() _group = "group_" + self.args.group_method.lower() _final = "final_process_" + self.args.final_process.lower() self.args.sort_method = _sort.replace('-', '_') self.args.group_method = _group.replace('-', '_') self.args.final_process = _final.replace('-', '_') self.sort_process()
def get_serializer(self, filename, serializer): """ Set the serializer to be used for loading and saving alignments If a filename with a valid extension is passed in this will be used as the serializer, otherwise the specified serializer will be used """ extension = os.path.splitext(filename)[1] if extension in (".json", ".p", ".yaml", ".yml"): retval = Serializer.get_serializer_from_ext(extension) elif serializer not in ("json", "pickle", "yaml"): raise ValueError("Error: {} is not a valid serializer. Use " "'json', 'pickle' or 'yaml'") else: retval = Serializer.get_serializer(serializer) if self.verbose: print("Using {} serializer for alignments".format(retval.ext)) return retval
def process(self): # Setting default argument values that cannot be set by argparse # Set output dir to the same value as input dir # if the user didn't specify it. if self.args.output_dir.lower() == "_output_dir": self.args.output_dir = self.args.input_dir # Assigning default threshold values based on grouping method if (self.args.final_process == "folders" and self.args.min_threshold == -1.0): method = self.args.group_method.lower() if method == 'face': self.args.min_threshold = 0.6 elif method == 'face-cnn': self.args.min_threshold = 7.2 elif method == 'hist': self.args.min_threshold = 0.3 # If logging is enabled, prepare container if self.args.log_changes: self.changes = dict() # Assign default sort_log.json value if user didn't specify one if self.args.log_file_path == 'sort_log.json': self.args.log_file_path = os.path.join(self.args.input_dir, 'sort_log.json') # Set serializer based on logfile extension serializer_ext = os.path.splitext(self.args.log_file_path)[-1] self.serializer = Serializer.get_serializer_from_ext( serializer_ext) # Prepare sort, group and final process method names _sort = "sort_" + self.args.sort_method.lower() _group = "group_" + self.args.group_method.lower() _final = "final_process_" + self.args.final_process.lower() self.args.sort_method = _sort.replace('-', '_') self.args.group_method = _group.replace('-', '_') self.args.final_process = _final.replace('-', '_') self.sort_process()
def __init__(self, alignments_file, destination_format, verbose): print("\n[ALIGNMENT DATA]") # Tidy up cli output self.file = alignments_file self.verbose = verbose self.check_file_exists() self.src_format = self.get_source_format() self.dst_format = self.get_destination_format(destination_format) if self.src_format == "dfl": self.set_destination_serializer() return self.serializer = Serializer.get_serializer_from_ext(self.src_format) self.alignments = self.load() self.count = len(self.alignments) self.set_destination_serializer() if self.verbose: print("{} items loaded".format(self.count))
def __init__(self, alignments_file, destination_format, verbose): print("\n[ALIGNMENT DATA]") # Tidy up cli output self.alignments_file = alignments_file self.verbose = verbose self.check_alignments_file_exists() self.alignments_format = os.path.splitext( self.alignments_file)[1].lower() self.destination_format = self.get_destination_format( destination_format) self.serializer = Serializer.get_serializer_from_ext( self.alignments_format) self.alignments = self.load_alignments() self.count = len(self.alignments) self.count_per_frame = {key: len(value) for key, value in self.alignments.items()} self.set_destination_serializer() if self.verbose: print("{} items loaded".format(self.count))
def get_serializer(filename, serializer): """ Set the serializer to be used for loading and saving alignments If a filename with a valid extension is passed in this will be used as the serializer, otherwise the specified serializer will be used """ logger.debug("Getting serializer: (filename: '%s', serializer: '%s')", filename, serializer) extension = os.path.splitext(filename)[1] if extension in (".json", ".p", ".yaml", ".yml"): logger.debug("Serializer set from file extension: '%s'", extension) retval = Serializer.get_serializer_from_ext(extension) elif serializer not in ("json", "pickle", "yaml"): raise ValueError("Error: {} is not a valid serializer. Use " "'json', 'pickle' or 'yaml'") else: logger.debug("Serializer set from argument: '%s'", serializer) retval = Serializer.get_serializer(serializer) logger.verbose("Using '%s' serializer for alignments", retval.ext) return retval