@Override public BAMFileSpan getSpanOverlapping(int referenceIndex, int startPos, int endPos) { BinList binList = getBinsOverlapping(referenceIndex, startPos, endPos); BAMFileSpan result = new BAMFileSpan(); Set<Chunk> savedChunks = new HashSet<Chunk>(); for (Bin bin : binList) { List<Chunk> chunks = getSpanOverlapping(bin).getChunks(); for (Chunk chunk : chunks) { if (!savedChunks.contains(chunk)) { savedChunks.add(chunk); result.add(chunk); } } } return result; }
@Override public BAMFileSpan getSpanOverlapping(int referenceIndex, int startPos, int endPos) { BinList binList = getBinsOverlapping(referenceIndex, startPos, endPos); BAMFileSpan result = new BAMFileSpan(); Set<Chunk> savedChunks = new HashSet<Chunk>(); for (Bin bin : binList) { List<Chunk> chunks = getSpanOverlapping(bin).getChunks(); for (Chunk chunk : chunks) { if (!savedChunks.contains(chunk)) { savedChunks.add(chunk); result.add(chunk); } } } return result; }
/** * The list of chunks is often represented as an array of * longs where every even-numbered index is a start coordinate * and every odd-numbered index is a stop coordinate. Convert * from that format back to a list of chunks. * @param coordinateArray List of chunks to convert. * @return A list of chunks. */ protected static SAMFileSpan toChunkList(final long[] coordinateArray) { if(coordinateArray.length % 2 != 0) throw new SAMException("Data supplied does not appear to be in coordinate array format."); final BAMFileSpan chunkList = new BAMFileSpan(); for(int i = 0; i < coordinateArray.length; i += 2) chunkList.add(new Chunk(coordinateArray[i],coordinateArray[i+1])); chunkList.validateSorted(); return chunkList; }
/** * The list of chunks is often represented as an array of * longs where every even-numbered index is a start coordinate * and every odd-numbered index is a stop coordinate. Convert * from that format back to a list of chunks. * @param coordinateArray List of chunks to convert. * @return A list of chunks. */ protected static SAMFileSpan toChunkList(final long[] coordinateArray) { if(coordinateArray.length % 2 != 0) throw new SAMException("Data supplied does not appear to be in coordinate array format."); final BAMFileSpan chunkList = new BAMFileSpan(); for(int i = 0; i < coordinateArray.length; i += 2) chunkList.add(new Chunk(coordinateArray[i],coordinateArray[i+1])); chunkList.validateSorted(); return chunkList; }
/** * The list of chunks is often represented as an array of * longs where every even-numbered index is a start coordinate * and every odd-numbered index is a stop coordinate. Convert * from that format back to a list of chunks. * @param coordinateArray List of chunks to convert. * @return A list of chunks. */ protected static SAMFileSpan toChunkList(final long[] coordinateArray) { if(coordinateArray.length % 2 != 0) throw new SAMException("Data supplied does not appear to be in coordinate array format."); final BAMFileSpan chunkList = new BAMFileSpan(); for(int i = 0; i < coordinateArray.length; i += 2) chunkList.add(new Chunk(coordinateArray[i],coordinateArray[i+1])); chunkList.validateSorted(); return chunkList; }
@Override public CloseableIterator<SAMRecord> query(QueryInterval[] intervals, boolean contained) { BAMFileSpan span = new BAMFileSpan(); BrowseableBAMIndex index = getBrowseableIndex(); for (QueryInterval interval : intervals) { BAMFileSpan intervalSpan; if (!contained) { intervalSpan = index.getSpanOverlapping(interval.referenceIndex, interval.start, interval.end); } else { intervalSpan = getSpanContained(interval.referenceIndex, interval.start, interval.end); } span.add(intervalSpan); } return getIterator(span); }
@Override public CloseableIterator<SAMRecord> query(QueryInterval[] intervals, boolean contained) { BAMFileSpan span = new BAMFileSpan(); BrowseableBAMIndex index = getBrowseableIndex(); for (QueryInterval interval : intervals) { BAMFileSpan intervalSpan; if (!contained) { intervalSpan = index.getSpanOverlapping(interval.referenceIndex, interval.start, interval.end); } else { intervalSpan = getSpanContained(interval.referenceIndex, interval.start, interval.end); } span.add(intervalSpan); } return getIterator(span); }