def inverse(self, x):
if   pimms.is_vector(x, '<STR_LIT>'):     return self.inverse([x])[<NUM_LIT:0>]<EOL>elif isinstance(x, Mesh):            return x.copy(coordinates=self.inverse(x.coordinates))<EOL>elif not pimms.is_matrix(x, '<STR_LIT>'): raise ValueError('<STR_LIT>')<EOL>x = np.asarray(x)<EOL>if x.shape[<NUM_LIT:0>] != <NUM_LIT:2>:<EOL><INDENT>if x.shape[<NUM_LIT:1>] != <NUM_LIT:2>: raise ValueError('<STR_LIT>')<EOL>else: return self.inverse(x.T).T<EOL><DEDENT>ones = np.ones((<NUM_LIT:1>, x.shape[<NUM_LIT:1>]))<EOL>ptx = self.inverse_post_affine<EOL>if ptx is not None:<EOL><INDENT>x = ptx.dot(np.concatenate((x, ones)))[<NUM_LIT:0>:<NUM_LIT:2>]<EOL><DEDENT>inv = MapProjection.projection_inverse_methods[self.method]<EOL>x = inv(x, sphere_radius=self._sphere_radius)<EOL>aff0 = self.inverse_alignment_matrix<EOL>x = aff0.dot(np.concatenate((x, ones)))[<NUM_LIT:0>:<NUM_LIT:3>]<EOL>return x<EOL>
proj.inverse(x) yields the result of unprojecting the given 2D coordinate or coordinates in
  x back to the original 3D sphere. See also proj.forward().