package picard.illumina;
import htsjdk.samtools.SAMException;
import htsjdk.samtools.util.IOUtil;
import picard.illumina.parser.ReadStructure;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.io.File;import java.lang.Exception;import java.lang.Object;import java.lang.String;
/** @author mccowan */
public class IlluminaLaneMetricsCollectorTest {
final static File TEST_DIRECTORY = new File("testdata/picard/illumina/IlluminaLaneMetricsCollectorTest");
final static File TILE_RUN_DIRECTORY = new File(TEST_DIRECTORY, "tileRuns");
private static File buildOutputFile(final File directory, final String prefix, final String extension) {
return new File(directory, String.format("%s.%s", prefix, extension));
}
@Test(dataProvider = "testLaneMetrics")
public void testWriteLaneMetrics(final String testRun) throws Exception {
final CollectIlluminaLaneMetrics clp = new CollectIlluminaLaneMetrics();
clp.OUTPUT_DIRECTORY = IOUtil.createTempDir("illuminaLaneMetricsCollectorTest", null);
clp.RUN_DIRECTORY = new File(TEST_DIRECTORY, testRun);
clp.OUTPUT_PREFIX = "test";
clp.READ_STRUCTURE = new ReadStructure("101T8B101T");
clp.doWork();
final File laneMetricsFile = buildOutputFile(clp.OUTPUT_DIRECTORY, clp.OUTPUT_PREFIX, IlluminaLaneMetrics.getExtension());
final File canonicalOutputFile = buildOutputFile(TEST_DIRECTORY, testRun, IlluminaLaneMetrics.getExtension());
IOUtil.assertFilesEqual(canonicalOutputFile, laneMetricsFile);
IOUtil.deleteDirectoryTree(clp.OUTPUT_DIRECTORY);
}
@DataProvider(name = "testLaneMetrics")
public Object[][] testLaneMetricsDataProvider() {
return new Object[][] {
{"130321_SL-MAK_0035_FC000000000-A306B"},
{"130318_SL-HBB_0226_BFCC1WYMACXX"},
{"130401_SL-HAC_0022_BH07PBADXX"}
};
}
@Test(dataProvider = "testCollectIlluminaLaneMetrics")
public void testCollectIlluminaLaneMetrics(final String testRun, final ReadStructure readStructure) throws Exception {
final File runDirectory = new File(TILE_RUN_DIRECTORY, testRun);
final CollectIlluminaLaneMetrics clp = new CollectIlluminaLaneMetrics();
clp.OUTPUT_DIRECTORY = IOUtil.createTempDir("illuminaLaneMetricsCollectorTest", null);
clp.RUN_DIRECTORY = runDirectory;
clp.OUTPUT_PREFIX = "test";
clp.READ_STRUCTURE = readStructure;
clp.doWork();
final File phasingMetricsPhile = buildOutputFile(clp.OUTPUT_DIRECTORY, clp.OUTPUT_PREFIX, IlluminaPhasingMetrics.getExtension());
final File canonicalPhasingPhile = buildOutputFile(runDirectory, testRun, IlluminaPhasingMetrics.getExtension());
IOUtil.assertFilesEqual(canonicalPhasingPhile, phasingMetricsPhile);
final File laneMetricsFile = buildOutputFile(clp.OUTPUT_DIRECTORY, clp.OUTPUT_PREFIX, IlluminaLaneMetrics.getExtension());
final File canonicalLaneFile = buildOutputFile(runDirectory, testRun, IlluminaLaneMetrics.getExtension());
IOUtil.assertFilesEqual(canonicalLaneFile, laneMetricsFile);
IOUtil.deleteDirectoryTree(clp.OUTPUT_DIRECTORY); }
@DataProvider(name = "testCollectIlluminaLaneMetrics")
public Object[][] testCollectIlluminaLaneMetricsDataProvider() {
return new Object[][] {
{"A7LE0", new ReadStructure("25T8B8B25T")},
{"C2MFAACXX", new ReadStructure("95T101T")},
{"H7BATADXX", new ReadStructure("76T8B76T")},
{"H7H7RADXX", new ReadStructure("101T8B8B101T")},
{"A67HY", new ReadStructure("8B8B")}
};
}
}