code: def my_solid_angle(center, coords):
      
      o = np.array(center)
      r = [np.array(c) - o for c in coords]
      r.append(r[0])
      n = [np.cross(r[i + 1], r[i]) for i in range(len(r) - 1)]
      n.append(np.cross(r[1], r[0]))
      phi = 0.0
      for i in range(len(n) - 1):
          try:
              value = math.acos(-np.dot(n[i], n[i + 1]) / (np.linalg.norm(n[i]) * np.linalg.norm(n[i + 1])))
          except ValueError:
              mycos = -np.dot(n[i], n[i + 1]) / (np.linalg.norm(n[i]) * np.linalg.norm(n[i + 1]))
              if 0.999999999999 < mycos < 1.000000000001:
                  value = math.acos(1.0)
              elif -0.999999999999 > mycos > -1.000000000001:
                  value = math.acos(-1.0)
              else:
                  raise SolidAngleError(mycos)
          phi += value
      return phi + (3 - len(r)) * math.pi
docs: Helper method to calculate the solid angle of a set of coords from the
      center.
  
      Args:
          center:
              Center to measure solid angle from.
          coords:
              List of coords to determine solid angle.
  
      Returns:
          The solid angle.