code: def test_hemisphere_constructor():
      s0 = HemiSphere(xyz=verts)
      s1 = HemiSphere(theta=theta, phi=phi)
      s2 = HemiSphere(*verts.T)
  
      uniq_verts = verts[::2].T
      rU, thetaU, phiU = cart2sphere(*uniq_verts)
  
      nt.assert_array_almost_equal(s0.theta, s1.theta)
      nt.assert_array_almost_equal(s0.theta, s2.theta)
      nt.assert_array_almost_equal(s0.theta, thetaU)
  
      nt.assert_array_almost_equal(s0.phi, s1.phi)
      nt.assert_array_almost_equal(s0.phi, s2.phi)
      nt.assert_array_almost_equal(s0.phi, phiU)
  
imports: import numpy
  import numpy.testing
  import pytest
  import warnings
  from dipy.core.sphere import Sphere, HemiSphere, unique_edges, unique_sets, faces_from_sphere_vertices, disperse_charges, fibonacci_sphere, disperse_charges_alt, _get_forces, _get_forces_alt, unit_octahedron, unit_icosahedron, hemi_icosahedron
  from dipy.core.geometry import cart2sphere, vector_norm
  from dipy.core.sphere_stats import random_uniform_on_sphere
  from dipy.utils.optpkg import optional_package
label_desc: Use image node_id 16 for calling a global function with example usage: test_hemisphere_constructor() without return types