def METHOD_NAME(self, Ps, Pt, Pst):
    """
    Get the best value for the number of subspaces
    For more details, read section 3.4 of the paper.
    **Parameters**
      Ps: Source subspace
      Pt: Target subspace
      Pst: Source + Target subspace
    """
    def compute_angles(A, B):
        _, S, _ = np.linalg.svd(np.dot(A.T, B))
        S[np.where(np.isclose(S, 1, atol=self.eps) == True)[0]] = 1
        return np.arccos(S)
    max_d = min(Ps.shape[1], Pt.shape[1], Pst.shape[1])
    alpha_d = compute_angles(Ps, Pst)
    beta_d = compute_angles(Pt, Pst)
    d = 0.5 * (np.sin(alpha_d) + np.sin(beta_d))
    return np.argmax(d)