public PositionComparator(final SAMSequenceDictionary dict){ comp = new VariantContextComparator(dict); }
@Override public int compare(final Pair<VariantContext,File> p1, final Pair<VariantContext,File> p2) { final VariantContext startPositionP1 = p1.getFirst(); final VariantContext startPositionP2 = p2.getFirst(); return comp.compare(startPositionP1, startPositionP2); } }
public VariantContextComparator(final SAMSequenceDictionary dictionary) { this(getSequenceNameList(dictionary)); }
@Test public void testContigs() { final VariantContext contextOne = buildVariantContext("source", "one", 100); final VariantContext contextTwo = buildVariantContext("source", "two", 100); final List<String> contigs = getOrderedContigList(contextOne, contextTwo); Assert.assertTrue(new VariantContextComparator(contigs).compare(contextOne, contextTwo) < 0); Assert.assertTrue(new VariantContextComparator(contigs).compare(contextTwo, contextOne) > 0); }
variantContextComparator = fileHeader.getVCFRecordComparator(); } else { if (!variantContextComparator.isCompatible(fileHeader.getContigLines())) { throw new IllegalArgumentException( "The contig entries in input file " + file.getAbsolutePath() + " are not compatible with the others.");
@Test public void testCombinationOne() { final VariantContext contextOne = buildVariantContext("source", "one", 100); final VariantContext contextTwo = buildVariantContext("source", "two", 150); final List<String> contigs = getOrderedContigList(contextOne, contextTwo); Assert.assertTrue(new VariantContextComparator(contigs).compare(contextOne, contextTwo) < 0); Assert.assertTrue(new VariantContextComparator(contigs).compare(contextTwo, contextOne) > 0); }
variantContextComparator = fileHeader.getVCFRecordComparator(); } else { if (!variantContextComparator.isCompatible(fileHeader.getContigLines())) { throw new IllegalArgumentException( "The contig entries in input file " + file.getAbsolutePath() + " are not compatible with the others.");
@Test public void testCombinationTwo() { final VariantContext contextOne = buildVariantContext("source", "one", 150); final VariantContext contextTwo = buildVariantContext("source", "two", 100); final List<String> contigs = getOrderedContigList(contextOne, contextTwo); Assert.assertTrue(new VariantContextComparator(contigs).compare(contextOne, contextTwo) < 0); Assert.assertTrue(new VariantContextComparator(contigs).compare(contextTwo, contextOne) > 0); }
public VariantContextComparator getVCFRecordComparator() { return new VariantContextComparator(this.getContigLines()); }
@Override public VcfTuple next() { if (!hasNext()) throw new IllegalStateException("next() called while hasNext() is false."); final Optional<VariantContext> leftVariantContext = this.leftIterator.hasNext() ? Optional.of(this.leftIterator.peek()) : Optional.empty(); final Optional<VariantContext> rightVariantContext = this.rightIterator.hasNext() ? Optional.of(this.rightIterator.peek()) : Optional.empty(); // If one or the other is missing because there is no next, just return a one-sided tuple if (!leftVariantContext.isPresent() && !rightVariantContext.isPresent()) { throw new IllegalStateException("BUG: Both contexts empty."); } else if (!leftVariantContext.isPresent()) { return new VcfTuple(Optional.empty(), this.rightIterator.next().subContextFromSample(rightSample)); } else if (!rightVariantContext.isPresent()) { return new VcfTuple(this.leftIterator.next().subContextFromSample(leftSample), Optional.empty()); } else { // Otherwise check the ordering and do the right thing final int ordering = this.comparator.compare(leftVariantContext.get(), rightVariantContext.get()); if (ordering == 0) { return new VcfTuple(this.leftIterator.next().subContextFromSample(leftSample), this.rightIterator.next().subContextFromSample(rightSample)); } else if (ordering < 0) { return new VcfTuple(this.leftIterator.next().subContextFromSample(leftSample), Optional.empty()); } else { return new VcfTuple(Optional.empty(), this.rightIterator.next().subContextFromSample(rightSample)); } } }
public VariantContextComparator(final SAMSequenceDictionary dictionary) { this(getSequenceNameList(dictionary)); }
@Test public void testPositions() { final VariantContext contextOne = buildVariantContext("source", "one", 100); final VariantContext contextTwo = buildVariantContext("source", "one", 150); final List<String> contigs = getOrderedContigList(contextOne, contextTwo); Assert.assertTrue(new VariantContextComparator(contigs).compare(contextOne, contextTwo) < 0); Assert.assertTrue(new VariantContextComparator(contigs).compare(contextTwo, contextOne) > 0); }
public VariantContextComparator getVCFRecordComparator() { return new VariantContextComparator(this.getContigLines()); }
@Override public VcfTuple next() { if (!hasNext()) throw new IllegalStateException("next() called while hasNext() is false."); final Optional<VariantContext> leftVariantContext = this.leftIterator.hasNext() ? Optional.of(this.leftIterator.peek()) : Optional.empty(); final Optional<VariantContext> rightVariantContext = this.rightIterator.hasNext() ? Optional.of(this.rightIterator.peek()) : Optional.empty(); // If one or the other is missing because there is no next, just return a one-sided tuple if (!leftVariantContext.isPresent() && !rightVariantContext.isPresent()) { throw new IllegalStateException("BUG: Both contexts empty."); } else if (!leftVariantContext.isPresent()) { return new VcfTuple(Optional.empty(), this.rightIterator.next().subContextFromSample(rightSample)); } else if (!rightVariantContext.isPresent()) { return new VcfTuple(this.leftIterator.next().subContextFromSample(leftSample), Optional.empty()); } else { // Otherwise check the ordering and do the right thing final int ordering = this.comparator.compare(leftVariantContext.get(), rightVariantContext.get()); if (ordering == 0) { return new VcfTuple(this.leftIterator.next().subContextFromSample(leftSample), this.rightIterator.next().subContextFromSample(rightSample)); } else if (ordering < 0) { return new VcfTuple(this.leftIterator.next().subContextFromSample(leftSample), Optional.empty()); } else { return new VcfTuple(Optional.empty(), this.rightIterator.next().subContextFromSample(rightSample)); } } }
public VariantContextComparator(final SAMSequenceDictionary dictionary) { this(getSequenceNameList(dictionary)); }
@Test public void testIdentical() { final VariantContext contextOne = buildVariantContext("source", "one", 100); final List<String> contigs = getOrderedContigList(contextOne); Assert.assertEquals(0, new VariantContextComparator(contigs).compare(contextOne, contextOne)); }
public VariantContextComparator getVCFRecordComparator() { return new VariantContextComparator(this.getContigLines()); }
private void validateResultsForMultipleInputs(final File output, final List<Queue<String>> positionQueues) { final VCFFileReader outputReader = new VCFFileReader(output, false); final VariantContextComparator outputComparator = outputReader.getFileHeader().getVCFRecordComparator(); VariantContext last = null; final CloseableIterator<VariantContext> iterator = outputReader.iterator(); while (iterator.hasNext()) { final VariantContext outputContext = iterator.next(); final String position = getContigPosition(outputContext); for (final Queue<String> positionQueue : positionQueues) { if (position.equals(positionQueue.peek())) { positionQueue.poll(); break; } } if (last != null) Assert.assertTrue(outputComparator.compare(last, outputContext) <= 0); last = outputContext; } iterator.close(); for (final Queue<String> positionQueue : positionQueues) { Assert.assertEquals(positionQueue.size(), 0); } }
final VCFHeader header = new VCFFileReader(inputFiles.get(0), false).getFileHeader(); final SAMSequenceDictionary dict = header.getSequenceDictionary(); final VariantContextComparator comparator = new VariantContextComparator(header.getSequenceDictionary()); final List<String> samples = header.getGenotypeSamples(); if (variantIterator.hasNext()) { final VariantContext currentContext = variantIterator.next(); if (lastContext != null && comparator.compare(lastContext, currentContext) >= 0) { throw new IllegalArgumentException("First record in file " + f.getAbsolutePath() + " is not after first record in " + "previous file " + lastFile.getAbsolutePath());
public PairedVariantSubContextIterator(final Iterator<VariantContext> leftIterator, final String leftSample, final Iterator<VariantContext> rightIterator, final String rightSample, final SAMSequenceDictionary dict) { this.leftIterator = new PeekableIterator<>(leftIterator); this.leftSample = leftSample; this.rightIterator = new PeekableIterator<>(rightIterator); this.rightSample = rightSample; this.comparator = new VariantContextComparator(dict); }