code: def run_umap(self, X=None, metric=None, **kwargs):
          
  
          import umap as umap
  
          if metric is None:
              metric = self.distance
  
          if(X is not None):
              umap_obj = umap.UMAP(metric=metric, **kwargs)
              dt = umap_obj.fit_transform(X)
              return dt
  
          else:
              umap_obj = umap.UMAP(metric=metric, **kwargs)
              umap2d = umap_obj.fit_transform(self.adata.obsm['X_pca'])
              self.adata.obsm['X_umap'] = umap2d
docs: Wrapper for umap-learn.
  
          See https://github.com/lmcinnes/umap sklearn for the documentation
          and source code.