Partial directed coherence factor.

        .. math:: \mathrm{PDCF}_{ij}(f) =
        \\frac{A_{ij}(f)}{\sqrt{A_{:j}'(f) \mathbf{C}^{-1} A_{:j}(f)}}

        References
        ----------
        L. A. Baccalá, K. Sameshima. Partial directed coherence: a new concept
        in neural structure determination. Biol. Cybernetics 84(6): 463-474,
        2001.

def PDCF(self):
        """Partial directed coherence factor.

        .. math:: \mathrm{PDCF}_{ij}(f) =
        \\frac{A_{ij}(f)}{\sqrt{A_{:j}'(f) \mathbf{C}^{-1} A_{:j}(f)}}

        References
        ----------
        L. A. Baccalá, K. Sameshima. Partial directed coherence: a new concept
        in neural structure determination. Biol. Cybernetics 84(6): 463-474,
        2001.
        """
        A = self.A()
        # TODO: can we do that more efficiently?
        return np.abs(A / np.sqrt(np.einsum('aj..., ab..., bj... ->j...',
                                            A.conj(), self.Cinv(), A)))