/** * Throws an exception if both parameters are non-null and unequal. * * @param s1 a list of sequence headers * @param s2 a second list of sequence headers */ public static void assertSequenceDictionariesEqual(final SAMSequenceDictionary s1, final SAMSequenceDictionary s2) { assertSequenceDictionariesEqual(s1, s2, false); }
/** * Throws an exception if both parameters are non-null and unequal. * * @param s1 a list of sequence headers * @param s2 a second list of sequence headers */ public static void assertSequenceDictionariesEqual(final SAMSequenceDictionary s1, final SAMSequenceDictionary s2) { assertSequenceDictionariesEqual(s1, s2, false); }
/** * Throws an exception if both parameters are non-null and unequal, including the filenames. */ public static void assertSequenceDictionariesEqual(final SAMSequenceDictionary s1, final SAMSequenceDictionary s2, final File f1, final File f2) { try { assertSequenceDictionariesEqual(s1, s2); } catch (final SequenceListsDifferException e) { throw new SequenceListsDifferException("In files " + f1.getAbsolutePath() + " and " + f2.getAbsolutePath(), e); } }
/** * Throws an exception if both parameters are non-null and unequal, including the filenames. */ public static void assertSequenceDictionariesEqual(final SAMSequenceDictionary s1, final SAMSequenceDictionary s2, final File f1, final File f2) { try { assertSequenceDictionariesEqual(s1, s2); } catch (final SequenceListsDifferException e) { throw new SequenceListsDifferException("In files " + f1.getAbsolutePath() + " and " + f2.getAbsolutePath(), e); } }
/** * Throws an exception if both parameters are non-null and unequal, including the filenames. */ public static void assertSequenceDictionariesEqual(final SAMSequenceDictionary s1, final SAMSequenceDictionary s2, final File f1, final File f2) { try { assertSequenceDictionariesEqual(s1, s2); } catch (SequenceListsDifferException e) { throw new SequenceListsDifferException("In files " + f1.getAbsolutePath() + " and " + f2.getAbsolutePath(), e); } } /**
@Test(dataProvider = "compatibleNonEqualLists",expectedExceptions = SequenceUtil.SequenceListsDifferException.class) public void testinCompatible(SAMSequenceDictionary sd1, SAMSequenceDictionary sd2) { SequenceUtil.assertSequenceDictionariesEqual(sd1, sd2, false); }
@Test(dataProvider = "compatibleNonEqualLists") public void testCompatible(SAMSequenceDictionary sd1, SAMSequenceDictionary sd2) { SequenceUtil.assertSequenceDictionariesEqual(sd1, sd2, true); }
/** * Get the sequences off the SAMFileHeader. Throws runtime exception if the sequence * are different from one another. * * @param headers headers to pull sequences from * @return sequences from files. Each file should have the same sequence */ private SAMSequenceDictionary getSequenceDictionary(final Collection<SAMFileHeader> headers) { SAMSequenceDictionary sequences = null; for (final SAMFileHeader header : headers) { if (sequences == null) { sequences = header.getSequenceDictionary(); } else { final SAMSequenceDictionary currentSequences = header.getSequenceDictionary(); SequenceUtil.assertSequenceDictionariesEqual(sequences, currentSequences); } } return sequences; }
/** * Get the sequences off the SAMFileHeader. Throws runtime exception if the sequence * are different from one another. * * @param headers headers to pull sequences from * @return sequences from files. Each file should have the same sequence */ private SAMSequenceDictionary getSequenceDictionary(final Collection<SAMFileHeader> headers) { SAMSequenceDictionary sequences = null; for (final SAMFileHeader header : headers) { if (sequences == null) { sequences = header.getSequenceDictionary(); } else { final SAMSequenceDictionary currentSequences = header.getSequenceDictionary(); SequenceUtil.assertSequenceDictionariesEqual(sequences, currentSequences); } } return sequences; }
/** * Get the sequences off the SAMFileHeader. Throws runtime exception if the sequence * are different from one another. * * @param headers headers to pull sequences from * @return sequences from files. Each file should have the same sequence */ private SAMSequenceDictionary getSequenceDictionary(final Collection<SAMFileHeader> headers) { SAMSequenceDictionary sequences = null; for (final SAMFileHeader header : headers) { if (sequences == null) { sequences = header.getSequenceDictionary(); } else { final SAMSequenceDictionary currentSequences = header.getSequenceDictionary(); SequenceUtil.assertSequenceDictionariesEqual(sequences, currentSequences); } } return sequences; }
@Test(expectedExceptions = SequenceUtil.SequenceListsDifferException.class) public void testMismatch() { final SAMSequenceDictionary sd1 = makeSequenceDictionary(5386, "/seq/references/PhiX174/v0/PhiX174.fasta", "3332ed720ac7eaa9b3655c06f6b9e196"); final SAMSequenceDictionary sd2 = makeSequenceDictionary(5386, "/seq/references/PhiX174/v0/PhiX174.fasta", "deadbeef"); SequenceUtil.assertSequenceDictionariesEqual(sd1, sd2); Assert.fail(); }
@Test public void testExactMatch() { final SAMSequenceDictionary sd1 = makeSequenceDictionary(5386, "/seq/references/PhiX174/v0/PhiX174.fasta", "3332ed720ac7eaa9b3655c06f6b9e196"); final SAMSequenceDictionary sd2 = makeSequenceDictionary(5386, "/seq/references/PhiX174/v0/PhiX174.fasta", "3332ed720ac7eaa9b3655c06f6b9e196"); SequenceUtil.assertSequenceDictionariesEqual(sd1, sd2); }
@Test public void testFileColonDifference() { final SAMSequenceDictionary sd1 = makeSequenceDictionary(5386, "/seq/references/PhiX174/v0/PhiX174.fasta", "3332ed720ac7eaa9b3655c06f6b9e196"); final SAMSequenceDictionary sd2 = makeSequenceDictionary(5386, "file:/seq/references/PhiX174/v0/PhiX174.fasta", "3332ed720ac7eaa9b3655c06f6b9e196"); SequenceUtil.assertSequenceDictionariesEqual(sd1, sd2); }
@Test public void testURDifferent() { final SAMSequenceDictionary sd1 = makeSequenceDictionary(5386, "/seq/references/PhiX174/v0/PhiX174.fasta", "3332ed720ac7eaa9b3655c06f6b9e196"); final SAMSequenceDictionary sd2 = makeSequenceDictionary(5386, "file:/seq/references/PhiX174/v1/PhiX174.fasta", "3332ed720ac7eaa9b3655c06f6b9e196"); SequenceUtil.assertSequenceDictionariesEqual(sd1, sd2); }
/** * Loads genotypes from the supplied file into one or more Fingerprint objects and returns them in a * Map of Sample->Fingerprint. * * @param fingerprintFile - VCF file containing genotypes for one or more samples * @param specificSample - null to load genotypes for all samples contained in the file or the name * of an individual sample to load (and exclude all others). * @return a Map of Sample name to Fingerprint * */ public Map<String, Fingerprint> loadFingerprintsFromNonIndexedVcf(final Path fingerprintFile, final String specificSample) { final VCFFileReader reader = new VCFFileReader(fingerprintFile, false); SequenceUtil.assertSequenceDictionariesEqual(this.haplotypes.getHeader().getSequenceDictionary(), SAMSequenceDictionaryExtractor.extractDictionary(fingerprintFile)); return loadFingerprintsFromVariantContexts(reader, specificSample, fingerprintFile); }
/** * Loads genotypes from the supplied file into one or more Fingerprint objects and returns them in a * Map of Sample->Fingerprint. * * @param fingerprintFile - VCF file containing genotypes for one or more samples * @param specificSample - null to load genotypes for all samples contained in the file or the name * of an individual sample to load (and exclude all others). * @return a Map of Sample name to Fingerprint * */ public Map<String, Fingerprint> loadFingerprintsFromNonIndexedVcf(final Path fingerprintFile, final String specificSample) { final VCFFileReader reader = new VCFFileReader(fingerprintFile, false); SequenceUtil.assertSequenceDictionariesEqual(this.haplotypes.getHeader().getSequenceDictionary(), SAMSequenceDictionaryExtractor.extractDictionary(fingerprintFile)); return loadFingerprintsFromVariantContexts(reader, specificSample, fingerprintFile); }
public static OverlapDetector<Interval> makeOverlapDetector(final File samFile, final SAMFileHeader header, final File ribosomalIntervalsFile, final Log log) { final OverlapDetector<Interval> ribosomalSequenceOverlapDetector = new OverlapDetector<Interval>(0, 0); if (ribosomalIntervalsFile != null) { final IntervalList ribosomalIntervals = IntervalList.fromFile(ribosomalIntervalsFile); if (ribosomalIntervals.size() == 0) { log.warn("The RIBOSOMAL_INTERVALS file, " + ribosomalIntervalsFile.getAbsolutePath() + " does not contain intervals"); } try { SequenceUtil.assertSequenceDictionariesEqual(header.getSequenceDictionary(), ribosomalIntervals.getHeader().getSequenceDictionary()); } catch (SequenceUtil.SequenceListsDifferException e) { throw new PicardException("Sequence dictionaries differ in " + samFile.getAbsolutePath() + " and " + ribosomalIntervalsFile.getAbsolutePath(), e); } final IntervalList uniquedRibosomalIntervals = ribosomalIntervals.uniqued(); final List<Interval> intervals = uniquedRibosomalIntervals.getIntervals(); ribosomalSequenceOverlapDetector.addAll(intervals, intervals); } return ribosomalSequenceOverlapDetector; }
public static OverlapDetector<Interval> makeOverlapDetector(final File samFile, final SAMFileHeader header, final File ribosomalIntervalsFile, final Log log) { final OverlapDetector<Interval> ribosomalSequenceOverlapDetector = new OverlapDetector<Interval>(0, 0); if (ribosomalIntervalsFile != null) { final IntervalList ribosomalIntervals = IntervalList.fromFile(ribosomalIntervalsFile); if (ribosomalIntervals.size() == 0) { log.warn("The RIBOSOMAL_INTERVALS file, " + ribosomalIntervalsFile.getAbsolutePath() + " does not contain intervals"); } try { SequenceUtil.assertSequenceDictionariesEqual(header.getSequenceDictionary(), ribosomalIntervals.getHeader().getSequenceDictionary()); } catch (SequenceUtil.SequenceListsDifferException e) { throw new PicardException("Sequence dictionaries differ in " + samFile.getAbsolutePath() + " and " + ribosomalIntervalsFile.getAbsolutePath(), e); } final IntervalList uniquedRibosomalIntervals = ribosomalIntervals.uniqued(); final List<Interval> intervals = uniquedRibosomalIntervals.getIntervals(); ribosomalSequenceOverlapDetector.addAll(intervals, intervals); } return ribosomalSequenceOverlapDetector; }
/** * Loads genotypes from the supplied file into one or more Fingerprint objects and returns them in a * Map of Sample->Fingerprint. * * @param fingerprintFile - VCF file containing genotypes for one or more samples * @param specificSample - null to load genotypes for all samples contained in the file or the name * of an individual sample to load (and exclude all others). * @return a Map of Sample name to Fingerprint */ public Map<String, Fingerprint> loadFingerprints(final Path fingerprintFile, final String specificSample) { SequenceUtil.assertSequenceDictionariesEqual(this.haplotypes.getHeader().getSequenceDictionary(), VCFFileReader.getSequenceDictionary(fingerprintFile)); final VCFFileReader reader = new VCFFileReader(fingerprintFile, false); if (reader.isQueryable()) { return loadFingerprintsFromQueriableReader(reader, specificSample, fingerprintFile); } else { log.warn("Couldn't find index for file " + fingerprintFile + " going to read through it all."); return loadFingerprintsFromVariantContexts(reader, specificSample, fingerprintFile); } }
/** * Loads genotypes from the supplied file into one or more Fingerprint objects and returns them in a * Map of Sample->Fingerprint. * * @param fingerprintFile - VCF file containing genotypes for one or more samples * @param specificSample - null to load genotypes for all samples contained in the file or the name * of an individual sample to load (and exclude all others). * @return a Map of Sample name to Fingerprint */ public Map<String, Fingerprint> loadFingerprints(final Path fingerprintFile, final String specificSample) { SequenceUtil.assertSequenceDictionariesEqual(this.haplotypes.getHeader().getSequenceDictionary(), VCFFileReader.getSequenceDictionary(fingerprintFile)); final VCFFileReader reader = new VCFFileReader(fingerprintFile, false); if (reader.isQueryable()) { return loadFingerprintsFromQueriableReader(reader, specificSample, fingerprintFile); } else { log.warn("Couldn't find index for file " + fingerprintFile + " going to read through it all."); return loadFingerprintsFromVariantContexts(reader, specificSample, fingerprintFile); } }