code: def test_materialize_reuse(self):
      cg = CGFull()
      g = cg.edges(
          pd.DataFrame({"s": ["a", "b", "c"], "d": ["b", "a", "d"]}),
          "s",
          "d",
      )
      g = g.nodes(
          pd.DataFrame({"id": ["a", "b", "c", "d"], "v": [2, 4, 6, 8]}),
          "id",
      )
      g = g.materialize_nodes()
      assert g._nodes.to_dict(orient="records") == [
          {"id": "a", "v": 2},
          {"id": "b", "v": 4},
          {"id": "c", "v": 6},
          {"id": "d", "v": 8},
      ]
      assert g._node == "id"
  
imports: import os, pandas, pytest, unittest
  from graphistry.compute import ComputeMixin
  from graphistry.plotter import PlotterBase
  from graphistry.tests.common import NoAuthTestCase
label_desc: Use image node_id 2 for calling the TestComputeMixin obj's underlying member method code with example usage: obj.test_materialize_reuse() without return types