code: def test_sphere_surface_area(self):
      if USE_SCIKIT:
          from skimage.measure import (
              marching_cubes_classic,
              mesh_surface_area,
          )
  
          # (B, W, H, D)
          volume = torch.Tensor(
              [
                  [
                      [
                          (x - 10) ** 2 + (y - 10) ** 2 + (z - 10) ** 2
                          for z in range(20)
                      ]
                      for y in range(20)
                  ]
                  for x in range(20)
              ]
          ).unsqueeze(0)
          volume = volume.permute(0, 3, 2, 1)  # (B, D, H, W)
          verts, faces = marching_cubes_naive(volume, isolevel=64)
          verts_c, faces_c = marching_cubes(volume, isolevel=64)
          verts_sci, faces_sci = marching_cubes_classic(
              volume[0], level=64
          )
  
          surf = mesh_surface_area(verts[0], faces[0])
          surf_c = mesh_surface_area(verts_c[0], faces_c[0])
          surf_sci = mesh_surface_area(verts_sci, faces_sci)
  
          self.assertClose(surf, surf_sci)
          self.assertClose(surf, surf_c)
  
imports: import os
  import pickle
  import unittest
  import torch
  from pytorch3d.ops.marching_cubes import marching_cubes, marching_cubes_naive
  from .common_testing import get_tests_dir, TestCaseMixin
label_desc: Use image node_id 7 for calling the TestMarchingCubes obj's underlying member method code with example usage: obj.test_sphere_surface_area() without return types