public String getPairOrientation() { // LOG.info("getPairOrientation"); String pairOrientation = ""; if (EntryFlagHelper.isPaired(entry) && !EntryFlagHelper.isMateUnmapped(entry) && entry.getTargetIndex() == entry.getPairAlignmentLink().getTargetIndex()) { char s1 = EntryFlagHelper.isReadReverseStrand(entry) ? 'R' : 'F'; char s2 = EntryFlagHelper.isMateReverseStrand(entry) ? 'R' : 'F'; char o1 = ' '; char o2 = ' '; char[] tmp = new char[4]; if (EntryFlagHelper.isFirstInPair(entry)) { o1 = '1'; o2 = '2'; } else if (EntryFlagHelper.isSecondInPair(entry)) { o1 = '2'; o2 = '1'; } if (getInferredInsertSize() > 0) { tmp[0] = s1; tmp[1] = o1; tmp[2] = s2; tmp[3] = o2; } else { tmp[2] = s1; tmp[3] = o1; tmp[0] = s2; tmp[1] = o2; } pairOrientation = new String(tmp); } return pairOrientation; }
/** * Returns the mate for a paired-end read. Please note that this method will return an unmapped * mate for any single end read as well. Do check if the read is paired before calling getMate(). * * @return The mate, or a constant unmapped mate (for single end reads, or paired end where the * mate is not found). */ public ReadMate getMate() { if (entry.hasPairAlignmentLink()) { Alignments.RelatedAlignmentEntry link = entry.getPairAlignmentLink(); String mateChr = getChromosome(link.getTargetIndex()); int mateStart = link.getPosition(); boolean mateNegativeStrand = EntryFlagHelper.isMateReverseStrand(entry); boolean isReadUnmappedFlag = EntryFlagHelper.isReadUnmapped(entry); final ReadMate mate = new ReadMate(mateChr, mateStart, mateNegativeStrand, isReadUnmappedFlag); return mate; } else { return unmappedMate; } }