code: def O(self):
          
          N = self.N
          tig_to_idx = self.tig_to_idx
          O = np.zeros((N, N), dtype=int)
          for (at, bt), (strandedness, md, mh) in self.orientations.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]
              score = strandedness * md
              O[ai, bi] = O[bi, ai] = score
          return O
docs: Pairwise strandedness matrix. Each cell contains whether i-th and j-th
          contig are the same orientation +1, or opposite orientation -1.