Esempio n. 1
0
  /**
   * Verify that the list has an appropriate unbroken chain of back links.
   *
   * @param list the list of splices to validate
   * @return true if the list has an unbroken chain of back links
   */
  boolean spliceListIsValid(final ObjectArrayList<GobyAlignment> list) {

    if (list != null && list.size() > 1) {
      Alignments.AlignmentEntry prevEntry = list.get(0).entry;
      for (int i = 1; i < list.size(); i++) {
        Alignments.AlignmentEntry currentEntry = list.get(i).entry;
        if (!currentEntry.hasSplicedBackwardAlignmentLink()) return false;
        else {
          Alignments.RelatedAlignmentEntry currentBackwardLink =
              currentEntry.getSplicedBackwardAlignmentLink();

          if ((prevEntry.getQueryIndex() != currentEntry.getQueryIndex())
              || (prevEntry.getFragmentIndex() != currentBackwardLink.getFragmentIndex())
              || (prevEntry.getPosition() != currentBackwardLink.getPosition())
              || (prevEntry.getTargetIndex() != currentBackwardLink.getTargetIndex())) {
            return false;
          }
        }
        prevEntry = currentEntry;
      }
    }
    return true;
  }