Refine search
private int calculateHardClippingAlignmentShift(CigarElement cigarElement, int clippedLength) { // Insertions should be discounted from the total hard clip count if (cigarElement.getOperator() == CigarOperator.INSERTION) return -clippedLength; // Deletions and Ns should be added to the total hard clip count (because we want to maintain the original alignment start) else if (cigarElement.getOperator() == CigarOperator.DELETION || cigarElement.getOperator() == CigarOperator.SKIPPED_REGION) return cigarElement.getLength(); // There is no shift if we are not clipping an indel return 0; }
private int countGaps(Cigar cigar) { int count = 0; for (CigarElement elem : cigar.getCigarElements()) { if (elem.getOperator() == CigarOperator.D || elem.getOperator() == CigarOperator.I || elem.getOperator() == CigarOperator.N) { count += 1; } } return count; }
static int getAlignedLength(Cigar readCigar) { int length = 0; for (CigarElement element : readCigar.getCigarElements()) { if (element.getOperator() == CigarOperator.M || element.getOperator() == CigarOperator.D) { length += element.getLength(); } } return length; }
static int getMatchInsertionLength(Cigar readCigar) { int length = 0; for (CigarElement element : readCigar.getCigarElements()) { if (element.getOperator() == CigarOperator.M || element.getOperator() == CigarOperator.I) { length += element.getLength(); } } return length; }
private boolean containsIndel(Cigar cigar) { for (CigarElement elem : cigar.getCigarElements()) { if ((elem.getOperator() == CigarOperator.D) || (elem.getOperator() == CigarOperator.I)) { return true; } } return false; }
/** Returns the number of soft-clipped bases until a non-soft-clipping element is encountered. */ private static int lengthOfSoftClipping(Iterator<CigarElement> iterator) { int clipped = 0; while (iterator.hasNext()) { final CigarElement elem = iterator.next(); if (elem.getOperator() != CigarOperator.SOFT_CLIP && elem.getOperator() != CigarOperator.HARD_CLIP) { break; } if (elem.getOperator() == CigarOperator.SOFT_CLIP) { clipped = elem.getLength(); } } return clipped; }
private int firstIndelLength(Cigar cigar) { int len = 0; for (CigarElement elem : cigar.getCigarElements()) { if (elem.getOperator() == CigarOperator.D || elem.getOperator() == CigarOperator.I) { len = elem.getLength(); break; } } return len; }
/** * Checks a Cigar for the presence of N operators. Reads with skipped bases may be spliced RNAseq reads * * @param cigar */ private boolean checkCigarForSkips(final Cigar cigar) { final List<CigarElement> elements = cigar.getCigarElements(); for (final CigarElement el : elements) { if (el.getOperator() == CigarOperator.N) return true; } return false; }
/** Returns the number of soft-clipped bases until a non-soft-clipping element is encountered. */ private static int lengthOfSoftClipping(Iterator<CigarElement> iterator) { int clipped = 0; while (iterator.hasNext()) { final CigarElement elem = iterator.next(); if (elem.getOperator() != CigarOperator.SOFT_CLIP && elem.getOperator() != CigarOperator.HARD_CLIP) { break; } if (elem.getOperator() == CigarOperator.SOFT_CLIP) { clipped = elem.getLength(); } } return clipped; }
static int getInsertionDeletionLength(Cigar readCigar) { int length = 0; for (CigarElement element : readCigar.getCigarElements()) { if (element.getOperator() == CigarOperator.I || element.getOperator() == CigarOperator.D) { length += element.getLength(); } } return length; } }
/** * Checks a Cigar for the presence of N operators. Reads with skipped bases may be spliced RNAseq reads * * @param cigar */ private boolean checkCigarForSkips(final Cigar cigar) { final List<CigarElement> elements = cigar.getCigarElements(); for (final CigarElement el : elements) { if (el.getOperator() == CigarOperator.N) return true; } return false; }
private int getRefOffset(CigarElement elem) { int offset = -1; switch(elem.getOperator()) { case M: case D: offset = elem.getLength(); break; case I: offset = 0; break; default: throw new IllegalArgumentException("Unexpected Cigar operator: " + elem.getOperator()); } return offset; }
private int firstIndelOffset(Cigar cigar) { int pos = 0; for (CigarElement elem : cigar.getCigarElements()) { if ((elem.getOperator() == CigarOperator.D) || (elem.getOperator() == CigarOperator.I)) { return pos; } else if (elem.getOperator() != CigarOperator.S) { pos += elem.getLength(); } } throw new IllegalArgumentException("No indel for record: [" + cigar + "]"); }
/** * Return the number of insertions, deletions and introns in a SAMRecord */ public static int getNumGaps(SAMRecord read) { int numGaps = 0; for (CigarElement element : read.getCigar().getCigarElements()) { if ((element.getOperator() == CigarOperator.D) || (element.getOperator() == CigarOperator.I) || (element.getOperator() == CigarOperator.N)) { numGaps += 1; } } return numGaps; }
@Override public CigarOperator next() { if (currentElement == null || currentIndex >= currentElement.getLength()) { currentElement = it.next(); currentIndex = 0; } currentIndex++; return currentElement.getOperator(); } }
public static int countInsertedBases(final Cigar cigar) { int ret = 0; for (final CigarElement element : cigar.getCigarElements()) { if (element.getOperator() == CigarOperator.INSERTION) ret += element.getLength(); } return ret; }
/** * Checks whether or not the read has any cigar element that is not H or S * * @param read the read * @return true if it has any M, I or D, false otherwise */ public static boolean readHasNonClippedBases(GATKSAMRecord read) { for (CigarElement cigarElement : read.getCigar().getCigarElements()) if (cigarElement.getOperator() != CigarOperator.SOFT_CLIP && cigarElement.getOperator() != CigarOperator.HARD_CLIP) return true; return false; }
private static void mergeAdjacent(List<CigarElement> list) { for (int i = list.size() - 1; i > 0; i--) { if (list.get(i).getOperator() == list.get(i - 1).getOperator()) { CigarElement replacement = new CigarElement(list.get(i).getLength() + list.get(i - 1).getLength(), list.get(i).getOperator()); list.set(i - 1, replacement); list.remove(i); } } } public static class CigarOperatorIterator implements Iterator<CigarOperator> {
private static int numDeletionsInCigar( Cigar cigar ) { int numDeletions = 0; for(CigarElement cigarElement: cigar.getCigarElements()) { if(cigarElement.getOperator() == CigarOperator.DELETION) numDeletions += cigarElement.getLength(); } return numDeletions; } }
public static int getNumIndels(SAMRecord read) { int numGaps = 0; for (CigarElement element : read.getCigar().getCigarElements()) { if ((element.getOperator() == CigarOperator.D) || (element.getOperator() == CigarOperator.I)) { numGaps += 1; } } return numGaps; }