gatk-3.8/java/test/org/broadinstitute/sting/utils/broad/PicardPipelineUnitTest.java

72 lines
3.3 KiB
Java
Executable File

package org.broadinstitute.sting.utils.broad;
import junit.framework.Assert;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
import org.broadinstitute.sting.BaseTest;
import org.broadinstitute.sting.datasources.pipeline.Pipeline;
import org.broadinstitute.sting.datasources.pipeline.PipelineSample;
import org.broadinstitute.sting.utils.yaml.YamlUtils;
import org.testng.annotations.Test;
import static org.broadinstitute.sting.utils.broad.PicardAggregationUtilsUnitTest.*;
import java.io.File;
import java.io.IOException;
import java.util.Collections;
public class PicardPipelineUnitTest {
@Test
public void testParseTsv() throws IOException {
File tsv = writeTsv(PROJECT, SAMPLE);
Pipeline pipeline = PicardPipeline.parse(tsv);
validatePipeline(pipeline, FilenameUtils.getBaseName(tsv.getPath()));
}
@Test
public void testParseTsvWithPicardComments() throws Exception {
File tsv = writeTsv("C460", "HG01359");
PicardPipeline.parse(tsv);
}
@Test
public void testParseYaml() throws IOException {
File yaml = writeYaml("project_name", PROJECT, SAMPLE);
Pipeline pipeline = PicardPipeline.parse(yaml);
validatePipeline(pipeline, "project_name");
}
private void validatePipeline(Pipeline pipeline, String name) {
Assert.assertEquals(pipeline.getProject().getName(), name);
Assert.assertTrue("reference not found", pipeline.getProject().getReferenceFile().exists());
Assert.assertTrue("intervals not found", pipeline.getProject().getIntervalList().exists());
Assert.assertTrue("refseq not found", pipeline.getProject().getRefseqTable().exists());
Assert.assertTrue("genotype dbsnp not found", pipeline.getProject().getGenotypeDbsnp().exists());
Assert.assertTrue("eval dbsnp not found", pipeline.getProject().getEvalDbsnp().exists());
Assert.assertEquals(pipeline.getSamples().size(), 1);
for (PipelineSample sample: pipeline.getSamples()) {
Assert.assertEquals(sample.getId(), PROJECT + "_" + SAMPLE);
Assert.assertTrue("bam not found", sample.getBamFiles().get(PicardPipeline.PICARD_BAM_TYPE).exists());
Assert.assertEquals(sample.getTags().get(PicardPipeline.PROJECT_TAG), PROJECT);
Assert.assertEquals(sample.getTags().get(PicardPipeline.SAMPLE_TAG), SAMPLE);
}
}
private File writeTsv(String project, String sample) throws IOException {
File tsv = BaseTest.createTempFile("pipeline", ".tsv");
FileUtils.writeLines(tsv, Collections.singletonList(project + "\t" + sample));
return tsv;
}
private File writeYaml(String projectName, String project, String sample) throws IOException {
File yaml = BaseTest.createTempFile("pipeline", ".yaml");
PipelineSample pipelineSample = new PipelineSample();
pipelineSample.getTags().put(PicardPipeline.PROJECT_TAG, project);
pipelineSample.getTags().put(PicardPipeline.SAMPLE_TAG, sample);
Pipeline pipeline = new Pipeline();
pipeline.getProject().setName(projectName);
pipeline.getSamples().add(pipelineSample);
YamlUtils.dump(pipeline, yaml);
return yaml;
}
}