code: def test_nodes(self):
      import cudf
  
      g = graphistry.edges(
          pd.DataFrame(
              {
                  "s": [x[0] for x in edges],
                  "d": [x[1] for x in edges],
              }
          ),
          "s",
          "d",
      ).nodes(pd.DataFrame({"n": nodes, "names": names_v}), "n")
      G = g.to_cugraph()
      logger.debug("ig: %s", G)
      g2 = graphistry.from_cugraph(G).materialize_nodes()
      assert g2._edges.shape == g._edges.shape
      assert g2._source == SRC_CUGRAPH
      assert g2._destination == DST_CUGRAPH
      assert g2._edge is None
      assert g2._node == "id"
      logger.debug("g2._nodes: %s", g2._nodes)
      assert (
          g2._nodes.sort_values(by="id")
          .reset_index(drop=True)
          .equals(cudf.DataFrame({"id": nodes}))
      )
  
imports: from functools import lru_cache
  import graphistry, logging, os, pandas, pytest
  from graphistry.tests.common import NoAuthTestCase
  from graphistry.constants import SRC, DST, NODE
  from graphistry.plugins.cugraph import SRC_CUGRAPH, DST_CUGRAPH, NODE_CUGRAPH, from_cugraph, to_cugraph, compute_cugraph, layout_cugraph, compute_algs, node_compute_algs_to_attr, layout_algs
label_desc: Use image node_id 5 for calling the Test_to_cugraph obj's underlying member method code with example usage: obj.test_nodes() without return types