docs: def create_theta(self):
          """
          Returns the set of inner angles (between 0 and pi)
          reconstructed from point coordinates.
          Also returns the corners corresponding to each entry of theta.
          """
          import itertools
          from pylocus.basics_angles import from_0_to_pi
          theta = np.empty((self.M, ))
          corners = np.empty((self.M, 3))
          k = 0
          indices = np.arange(self.N)
          for triangle in itertools.combinations(indices, 3):
              for counter, idx in enumerate(triangle):
                  corner = idx
                  other = np.delete(triangle, counter)
                  corners[k, :] = [corner, other[0], other[1]]
                  theta[k] = self.get_inner_angle(corner, other)
                  theta[k] = from_0_to_pi(theta[k])
                  if DEBUG:
                      print(self.abs_angles[corner, other[0]],
                            self.abs_angles[corner, other[1]])
                      print('theta', corners[k, :], theta[k])
                  k = k + 1
              inner_angle_sum = theta[k - 1] + theta[k - 2] + theta[k - 3]
              assert abs(inner_angle_sum - pi) < 1e-10, \
                  'inner angle sum: {} {} {}'.format(
                      triangle, inner_angle_sum, (theta[k - 1], theta[k - 2], theta[k - 3]))
          self.theta = theta
          self.corners = corners
          return theta, corners