code: def write(self, filename, compress=True, catalog_format="QUAKEML"):
          
          if catalog_format not in CAT_EXT_MAP.keys():
              raise TypeError("{0} is not supported".format(catalog_format))
          if not os.path.isdir(filename):
              os.makedirs(filename)
          self._par_write(filename)
          tribe_cat = Catalog()
          for t in self.templates:
              if t.event is not None:
                  tribe_cat.append(t.event)
          if len(tribe_cat) > 0:
              tribe_cat.write(
                  os.path.join(filename, 'tribe_cat.{0}'.format(
                      CAT_EXT_MAP[catalog_format])), format=catalog_format)
          for template in self.templates:
              template.st.write(filename + '/' + template.name + '.ms',
                                format='MSEED')
          if compress:
              with tarfile.open(filename + '.tgz', "w:gz") as tar:
                  tar.add(filename, arcname=os.path.basename(filename))
              shutil.rmtree(filename)
          return self
docs: Write the tribe to a file using tar archive formatting.
  
          :type filename: str
          :param filename:
              Filename to write to, if it exists it will be appended to.
          :type compress: bool
          :param compress:
              Whether to compress the tar archive or not, if False then will
              just be files in a folder.
          :type catalog_format: str
          :param catalog_format:
              What format to write the detection-catalog with. Only Nordic,
              SC3ML, QUAKEML are supported. Note that not all information is
              written for all formats (QUAKEML is the most complete, but is
              slow for IO).
  
          .. rubric:: Example
  
          >>> tribe = Tribe(templates=[Template(name='c', st=read())])
          >>> tribe.write('test_tribe')
          Tribe of 1 templates