          self.process = None
          self.train_stats = {"iterations": 0, "timestamp": None}
          self.consoleregex = {
              "loss": re.compile(r"([a-zA-Z_]+):.*?(\d+\.\d+)"),
              "tqdm": re.compile(r".*?(?P<pct>\d+%).*?(?P<itm>\d+/\d+)\W\["
                                 r"(?P<tme>\d+:\d+<.*),\W(?P<rte>.*)[a-zA-Z/]*\]"),
              "ffmpeg": re.compile(r"([a-zA-Z]+)=\s*(-?[\d|N/A]\S+)")}
          logger.debug("Initialized %s", self.__class__.__name__)
  
      def execute_script(self, command, args):
 
</s> remove def initialize_config(cli_opts, scaling_factor, pathcache, statusbar, session):
 </s> add def initialize_config(root, cli_opts, scaling_factor, pathcache, statusbar, session): </s> remove                  for f in os.listdir(imgpath) if f.endswith((".png", ".jpg"))]
 </s> add                  for f in os.listdir(imgpath) if f.lower().endswith((".png", ".jpg"))] </s> remove         message = "{}  |  {}  |  {}  |  {}".format(processtime,
                                                   tqdm["rte"],
                                                   tqdm["itm"],
                                                   tqdm["pct"])

        current, total = tqdm["itm"].split("/")
        position = int((float(current) / float(total)) * 1000)
 </s> add         message = "{}{}  |  {}  |  {}  |  {}".format(description,
                                                     processtime,
                                                     tqdm["rte"],
                                                     tqdm["itm"],
                                                     tqdm["pct"])

        position = tqdm["pct"].replace("%", "")
        position = int(position) if position.isdigit() else 0 </s> remove         pbar = tqdm(desc="Extracting", unit="B", total=length, unit_scale=True, unit_divisor=1024)
 </s> add         pbar = tqdm(desc="Decompressing",
                    unit="B",
                    total=length,
                    unit_scale=True,
                    unit_divisor=1024)
            "tqdm": re.compile(r"(?P<dsc>.*?)(?P<pct>\d+%).*?(?P<itm>\S+/\S+)\W\["
          self.process = None
          self.train_stats = {"iterations": 0, "timestamp": None}
          self.consoleregex = {
              "loss": re.compile(r"([a-zA-Z_]+):.*?(\d+\.\d+)"),
            "tqdm": re.compile(r"(?P<dsc>.*?)(?P<pct>\d+%).*?(?P<itm>\S+/\S+)\W\["
                                 r"(?P<tme>\d+:\d+<.*),\W(?P<rte>.*)[a-zA-Z/]*\]"),
              "ffmpeg": re.compile(r"([a-zA-Z]+)=\s*(-?[\d|N/A]\S+)")}
          logger.debug("Initialized %s", self.__class__.__name__)
  
      def execute_script(self, command, args):
keep keep keep keep replace keep keep keep keep keep
 GUI Fixups

- Analysis: Handle missing session Ids
- Analysis: Handle invalid data selections
- Analysis: Don't update graph on check box selection
- Analysis: Add cursor events to analysis tab
- Analysis: Change default graph view
- Training: Prevent GUI from attempting to close graphs which do not exist
- Extract/Convert: Make file extensions case-insensitive for preview
- Progress bar: Make compatible for downloads
- Progress bar: Add TQDM Description to progress bar stats text 
lib/gui/wrapper.py