@Test(dataProvider = "FASTQ_TESTCASES", groups = {"unix"}) public void testFastqQualityInference(final File input, final FastqQualityFormat expectedQualityFormat) { final FastqReader reader = new FastqReader(input); Assert.assertEquals(QualityEncodingDetector.detect(reader), expectedQualityFormat); reader.close(); }
/** * Looks at fastq input(s) and attempts to determine the proper quality format * * Closes the reader(s) by side effect * * @param reader1 The first fastq input * @param reader2 The second fastq input, if necessary. To not use this input, set it to null * @param expectedQuality If provided, will be used for sanity checking. If left null, autodetection will occur */ public static FastqQualityFormat determineQualityFormat(final FastqReader reader1, final FastqReader reader2, final FastqQualityFormat expectedQuality) { final QualityEncodingDetector detector = new QualityEncodingDetector(); if (reader2 == null) { detector.add(QualityEncodingDetector.DEFAULT_MAX_RECORDS_TO_ITERATE, reader1); } else { detector.add(QualityEncodingDetector.DEFAULT_MAX_RECORDS_TO_ITERATE, reader1, reader2); reader2.close(); } reader1.close(); final FastqQualityFormat qualityFormat = detector.generateBestGuess(QualityEncodingDetector.FileContext.FASTQ, expectedQuality); if (detector.isDeterminationAmbiguous()) { LOG.warn("Making ambiguous determination about fastq's quality encoding; more than one format possible based on observed qualities."); } LOG.info(String.format("Auto-detected quality format as: %s.", qualityFormat)); return qualityFormat; }
/** * Looks at fastq input(s) and attempts to determine the proper quality format * * Closes the reader(s) by side effect * * @param reader1 The first fastq input * @param reader2 The second fastq input, if necessary. To not use this input, set it to null * @param expectedQuality If provided, will be used for sanity checking. If left null, autodetection will occur */ public static FastqQualityFormat determineQualityFormat(final FastqReader reader1, final FastqReader reader2, final FastqQualityFormat expectedQuality) { final QualityEncodingDetector detector = new QualityEncodingDetector(); if (reader2 == null) { detector.add(QualityEncodingDetector.DEFAULT_MAX_RECORDS_TO_ITERATE, reader1); } else { detector.add(QualityEncodingDetector.DEFAULT_MAX_RECORDS_TO_ITERATE, reader1, reader2); reader2.close(); } reader1.close(); final FastqQualityFormat qualityFormat = detector.generateBestGuess(QualityEncodingDetector.FileContext.FASTQ, expectedQuality); if (detector.isDeterminationAmbiguous()) { LOG.warn("Making ambiguous determination about fastq's quality encoding; more than one format possible based on observed qualities."); } LOG.info(String.format("Auto-detected quality format as: %s.", qualityFormat)); return qualityFormat; }