def Q(self):
        """
        Contact frequency matrix when contigs are already oriented. This is s a
        similar matrix as M, but rather than having the number of links in the
        cell, it points to an array that has the actual distances.
        """
        N = self.N
        tig_to_idx = self.tig_to_idx
        signs = self.signs
        Q = np.ones((N, N, BB), dtype=int) * -1  # Use -1 as the sentinel
        for (at, bt), k in self.contacts_oriented.items():
            if not (at in tig_to_idx and bt in tig_to_idx):
                continue
            ai = tig_to_idx[at]
            bi = tig_to_idx[bt]
            ao = signs[ai]
            bo = signs[bi]
            Q[ai, bi] = k[(ao, bo)]
        return Q
def Q ( self ) : N = self . N tig_to_idx = self . tig_to_idx signs = self . signs Q = np . ones ( ( N , N , BB ) , dtype = int ) * - 1 for ( at , bt ) , k in self . contacts_oriented . items ( ) : if not ( at in tig_to_idx and bt in tig_to_idx ) : continue ai = tig_to_idx [ at ] bi = tig_to_idx [ bt ] ao = signs [ ai ] bo = signs [ bi ] Q [ ai , bi ] = k [ ( ao , bo ) ] return Q
Contact frequency matrix when contigs are already oriented. This is s a
        similar matrix as M, but rather than having the number of links in the
        cell, it points to an array that has the actual distances.