code: def test_umap_kwargs(self):
      umap_kwargs = {
          "n_components": 2,
          "metric": "euclidean",
          "n_neighbors": 3,
          "min_dist": 1,
          "spread": 1,
          "local_connectivity": 1,
          "repulsion_strength": 1,
          "negative_sample_rate": 5,
      }
  
      umap_kwargs2 = {k: v + 1 for k, v in umap_kwargs.items() if k not in ["metric"]}  # type: ignore
      umap_kwargs2["metric"] = "euclidean"
      g = graphistry.nodes(self.test)
      with warnings.catch_warnings():
          warnings.filterwarnings("ignore", category=UserWarning)
          warnings.filterwarnings("ignore", category=DeprecationWarning)
          warnings.filterwarnings("ignore", category=FutureWarning)
          g2 = g.umap(**umap_kwargs, engine="umap_learn")
          g3 = g.umap(**umap_kwargs2, engine="umap_learn")
      assert g2._umap_params == umap_kwargs
      assert (
          g2._umap_params == umap_kwargs
      ), f"Umap params do not match, found {g2._umap_params} vs {umap_kwargs}"
      assert (
          len(g2._node_embedding.columns) == 2
      ), f"Umap params do not match, found {len(g2._node_embedding.columns)} vs 2"
  
      assert (
          g3._umap_params == umap_kwargs2
      ), f"Umap params do not match, found {g3._umap_params} vs {umap_kwargs2}"
      assert (
          len(g3._node_embedding.columns) == 3
      ), f"Umap params do not match, found {len(g3._node_embedding.columns)} vs 3"
  
      g4 = g2.transform_umap(self.test)
      assert (
          g4._umap_params == umap_kwargs
      ), f"Umap params do not match, found {g4._umap_params} vs {umap_kwargs}"
      assert (
          g4._n_components == 2
      ), f"Umap params do not match, found {g2._n_components} vs 2"
  
      g5 = g3.transform_umap(self.test)
      assert (
          g5._umap_params == umap_kwargs2
      ), f"Umap params do not match, found {g5._umap_params} vs {umap_kwargs2}"
  
imports: from xml.sax.handler import feature_external_ges
  import pytest
  import unittest
  import warnings
  import graphistry
  import os
  import logging
  import numpy
  import pandas
  from graphistry import Plottable
  from graphistry.feature_utils import remove_internal_namespace_if_present
  from graphistry.tests.test_feature_utils import ndf_reddit, text_cols_reddit, meta_cols_reddit, good_cols_reddit, single_target_reddit, double_target_reddit, edge_df, edge_df2, edge2_target_df, model_avg_name, lazy_import_has_min_dependancy, check_allclose_fit_transform_on_same_data
  from graphistry.umap_utils import lazy_umap_import_has_dependancy, lazy_cuml_import_has_dependancy, lazy_cudf_import_has_dependancy
label_desc: Use image node_id 6 for calling the TestUMAPFitTransform obj's underlying member method code with example usage: obj.test_umap_kwargs() without return types