                           self._queues["in"],
                           self._queues["predict"])
          self._add_thread("{}_predict".format(self._plugin_type),
                           self._predict,
                           self._queues["predict"],
                           self._queues["post"])
          self._add_thread("{}_output".format(self._plugin_type),
                           self.process_output,
                           self._queues["post"],
                           self._queues["out"])
          logger.debug("Compiled %s threads: %s", self._plugin_type, self._threads)
  
 
</s> remove                          self._queues["post"],
 </s> add                          self._queues["post_{}".format(name)], </s> remove                          self._queues["predict"])
        self._add_thread("{}_predict".format(self._plugin_type),
 </s> add                          self._queues["predict_{}".format(name)])
        self._add_thread("{}_predict".format(base_name), </s> remove         self._add_thread("{}_input".format(self._plugin_type),
 </s> add         name = self.name.replace(" ", "_").lower()
        base_name = "{}_{}".format(self._plugin_type, name)
        self._add_thread("{}_input".format(base_name), </s> remove         plugin = getattr(self, "_{}".format(phase))
 </s> add         plugin_type, idx = self._get_plugin_type_and_index(phase)
        plugin = getattr(self, "_{}".format(plugin_type))
        plugin = plugin[idx] if idx is not None else plugin </s> remove         logger.info("sample filename: %s, base filename: %s", sample_filename, basename)
 </s> add         logger.debug("sample filename: %s, base filename: %s", sample_filename, basename)
                         self._queues["predict_{}".format(name)],
                         self._queues["post_{}".format(name)])
        self._add_thread("{}_output".format(base_name),
                           self._queues["in"],
                           self._queues["predict"])
          self._add_thread("{}_predict".format(self._plugin_type),
                           self._predict,
                         self._queues["predict_{}".format(name)],
                         self._queues["post_{}".format(name)])
        self._add_thread("{}_output".format(base_name),
                         self._queues["predict_{}".format(name)],
                         self._queues["post_{}".format(name)])
        self._add_thread("{}_output".format(base_name),
                         self._queues["predict_{}".format(name)],
                         self._queues["post_{}".format(name)])
        self._add_thread("{}_output".format(base_name),
                           self.process_output,
                           self._queues["post"],
                           self._queues["out"])
          logger.debug("Compiled %s threads: %s", self._plugin_type, self._threads)
  
keep keep keep keep replace replace replace keep keep keep keep keep
 Extraction - Auto generate Components and Extended Masks 
plugins/extract/_base.py