docs: def to_term_document_matrix(path_to_bag_of_genomes, max_df=0.99, min_df=1, use_idf=False):
          """
          Creates a term-document matrix which is a mathematical matrix that describes the frequency of terms
          that occur in a collection of documents (in our case a collection of genomes).
  
          :param path_to_bag_of_genomes: Path to the documents (genomes)
          :param max_df: To prune the terms that are existing in the given portion of documents (if set to 1 then it does not prune)
          :return: returns the term-document dataframe
          """
          token_dict = {}
  
          def BoG_tokenizer(_text):
              return _text.split('\n')
  
          print("creating the term-document matrix...")
          for file in tqdm(Parser._get_files('.bag_of_genome', path_to_bag_of_genomes)):
              f = open(file, 'r')
              text = f.read()
              token_dict[file] = text
  
          tfidf = TfidfVectorizer(tokenizer=BoG_tokenizer, use_idf=use_idf, smooth_idf=False,
                                  max_df=max_df, min_df=min_df)  # max df is less than 1.0 to ignore the tokens existing in all of the documents
  
          tfs = tfidf.fit_transform(token_dict.values())
          data = tfs.toarray()
          columns = tfidf.get_feature_names()
          df = pd.DataFrame(data, columns=columns)
          term_document_df = df.T
          return term_document_df