code: def test_chain_4_sparse(self):
      # From https://github.com/graphistry/pygraphistry/pull/513#issuecomment-1784161313
  
      g = graphistry.edges(edges4_df, "s", "d").materialize_nodes()
      g2 = g.compute_igraph("articulation_points")
      assert "articulation_points" in g2._nodes
      g2b = g.compute_igraph("community_optimal_modularity")
      assert "community_optimal_modularity" in g2b._nodes
      g3 = g2.compute_igraph("community_optimal_modularity")
      assert g3._nodes.community_optimal_modularity.equals(
          g2b._nodes.community_optimal_modularity
      )
  
imports: import pyarrow
  import graphistry, logging, pandas, pytest, warnings
  from graphistry.tests.common import NoAuthTestCase
  from graphistry.constants import SRC, DST, NODE
  from graphistry.plugins.igraph import SRC_IGRAPH, DST_IGRAPH, compute_algs, compute_igraph, layout_algs, layout_igraph
label_desc: Use image node_id 5 for calling the Test_igraph_compute obj's underlying member method code with example usage: obj.test_chain_4_sparse() without return types