class_docstr: Ensemble Latent Dirichlet Allocation (eLDA), a method of training a topic model ensemble.
  
  Extracts stable topics that are consistently learned across multiple LDA models. eLDA has the added benefit that
  the user does not need to know the exact number of topics the topic model should extract ahead of time.
class_docstr_tok: ["Ensemble","Latent","Dirichlet","Allocation","(","eLDA",")",",","a","method","of","training","a","topic","model","ensemble",".","Extracts","stable","topics","that","are","consistently","learned","across","multiple","LDA","models",".","eLDA","has","the","added","benefit","that","the","user","does","not","need","to","know","the","exact","number","of","topics","the","topic","model","should","extract","ahead","of","time","."]
docstr: Calculate the pairwise distance matrix for all the ttdas from the ensemble.
  
  Returns the asymmetric pairwise distance matrix that is used in the DBSCAN clustering.
  
  Afterwards, the model needs to be reclustered for this generated matrix to take effect.
docstr_tok: ["Calculate","the","pairwise","distance","matrix","for","all","the","ttdas","from","the","ensemble",".","Returns","the","asymmetric","pairwise","distance","matrix","that","is","used","in","the","DBSCAN","clustering",".","Afterwards",",","the","model","needs","to","be","reclustered","for","this","generated","matrix","to","take","effect","."]
code: def _generate_asymmetric_distance_matrix(self):
      """Calculate the pairwise distance matrix for all the ttdas from the ensemble.
  
      Returns the asymmetric pairwise distance matrix that is used in the DBSCAN clustering.
  
      Afterwards, the model needs to be reclustered for this generated matrix to take effect.
  
      """
      workers = self.distance_workers
  
      # matrix is up to date afterwards
      self.asymmetric_distance_matrix_outdated = False
  
      logger.info(
          f"generating a {len(self.ttda)} x {len(self.ttda)} asymmetric distance matrix..."
      )
  
      if workers is not None and workers <= 1:
          self.asymmetric_distance_matrix = (
              _calculate_asymmetric_distance_matrix_chunk(
                  ttda1=self.ttda,
                  ttda2=self.ttda,
                  start_index=0,
                  masking_method=self.masking_method,
                  masking_threshold=self.masking_threshold,
              )
          )
      else:
          # best performance on 2-core machine: 2 workers
          if workers is None:
              workers = os.cpu_count()
  
          self.asymmetric_distance_matrix = (
              _calculate_assymetric_distance_matrix_multiproc(
                  workers=workers,
                  entire_ttda=self.ttda,
                  masking_method=self.masking_method,
                  masking_threshold=self.masking_threshold,
              )
          )
  
imports: import logging
  import os
  from multiprocessing import Process, Pipe, ProcessError
  import importlib
  from typing import Set, Optional, List
  import numpy
  from scipy.spatial.distance import cosine
  from dataclasses import dataclass
  from gensim import utils
  from gensim.models import ldamodel, ldamulticore, basemodel
  from gensim.utils import SaveLoad
label_desc: Use image node_id 7 for calling the EnsembleLda obj's underlying member method code with example usage: obj._generate_asymmetric_distance_matrix() without return types