code: def _read_from_folder(self, dirname):
          
          templates = _par_read(dirname=dirname, compressed=False)
          t_files = glob.glob(dirname + os.sep + '*.ms')
          tribe_cat_file = glob.glob(os.path.join(dirname, "tribe_cat.*"))
          if len(tribe_cat_file) != 0:
              tribe_cat = read_events(tribe_cat_file[0])
          else:
              tribe_cat = Catalog()
          previous_template_names = [t.name for t in self.templates]
          for template in templates:
              if template.name in previous_template_names:
                  # Don't read in for templates that we already have.
                  continue
              for event in tribe_cat:
                  for comment in event.comments:
                      if comment.text == 'eqcorrscan_template_' + template.name:
                          template.event = event
              t_file = [t for t in t_files
                        if t.split(os.sep)[-1] == template.name + '.ms']
              if len(t_file) == 0:
                  print('No waveform for template: ' + template.name)
                  templates.remove(template)
                  continue
              elif len(t_file) > 1:
                  print('Multiple waveforms found, using: ' + t_file[0])
              template.st = read(t_file[0])
          self.templates.extend(templates)
          return
docs: Internal folder reader.
  
          :type dirname: str
          :param dirname: Folder to read from.