code: def test_tangent_extrinsic_to_spherical_is_tangent(self, n_points):
      base_point = self.extrinsic_data_generator.random_point(n_points)
      tangent_vec = self.extrinsic_data_generator.random_tangent_vec(
          base_point
      )
  
      try:
          tangent_vec_spherical = (
              self.space.tangent_extrinsic_to_spherical(
                  tangent_vec,
                  base_point=base_point,
              )
          )
      except NotImplementedError:
          return
  
      base_point_spherical = self.space.extrinsic_to_intrinsic_coords(
          base_point
      )
  
      res = _is_tangent_intrinsic(
          self.space_intrinsic,
          tangent_vec_spherical,
          base_point_spherical,
      )
      expected = gs.ones(n_points, dtype=bool)
      self.assertAllEqual(res, expected)
  
imports: import random
  import pytest
  import scipy
  import geomstats.backend
  from geomstats.learning.frechet_mean import FrechetMean
  from geomstats.test.random import EmbeddedSpaceRandomDataGenerator, HypersphereIntrinsicRandomDataGenerator
  from geomstats.test.test_case import TestCase
  from geomstats.test.vectorization import generate_vectorization_data
  from geomstats.test_cases.geometry.base import LevelSetTestCase
  from geomstats.test_cases.geometry.manifold import ManifoldTestCase
  from geomstats.vectorization import get_batch_shape
label_desc: Use image node_id 16 for calling the HypersphereCoordsTransformTestCase obj's underlying member method code with example usage: obj.test_tangent_extrinsic_to_spherical_is_tangent(n_points) without return types