diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/coverage/DepthOfCoverageStats.java b/java/src/org/broadinstitute/sting/gatk/walkers/coverage/DepthOfCoverageStats.java index 368015a60..70d1d0f26 100644 --- a/java/src/org/broadinstitute/sting/gatk/walkers/coverage/DepthOfCoverageStats.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/coverage/DepthOfCoverageStats.java @@ -274,4 +274,16 @@ public class DepthOfCoverageStats { return totalDepthOfCoverage; } + public double[] getCoverageProportions(String sample) { + int[] hist = granularHistogramBySample.get(sample); + double[] distribution = new double[hist.length]; + long count = 0; + for ( int i = hist.length-1; i >= 0; i -- ) { + count += hist[i]; + distribution[i] = ( (double) count) / nLoci; + } + + return distribution; + } + } \ No newline at end of file diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/coverage/DepthOfCoverageWalker.java b/java/src/org/broadinstitute/sting/gatk/walkers/coverage/DepthOfCoverageWalker.java index ce41bdaf0..3df549a43 100644 --- a/java/src/org/broadinstitute/sting/gatk/walkers/coverage/DepthOfCoverageWalker.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/coverage/DepthOfCoverageWalker.java @@ -476,12 +476,14 @@ public class DepthOfCoverageWalker extends LocusWalker, Covera logger.info("Printing locus summary"); if ( ! useReadGroup || useBoth ) { File perLocusStatisticsFile = deriveFromStream("sample_locus_statistics"); - printPerLocus(perLocusStatisticsFile,coverageProfiles.getCoverageBySample()); + File perLocusCoverageFile = deriveFromStream("sample_coverage_statistics"); + printPerLocus(perLocusStatisticsFile,perLocusCoverageFile,coverageProfiles.getCoverageBySample()); } if ( useReadGroup || useBoth ) { File perLocusRGStats = deriveFromStream("read_group_locus_statistics"); - printPerLocus(perLocusRGStats,coverageProfiles.getCoverageByReadGroup()); + File perLocusRGCoverage = deriveFromStream("read_group_locus_coverage"); + printPerLocus(perLocusRGStats,perLocusRGCoverage,coverageProfiles.getCoverageByReadGroup()); } } } @@ -521,8 +523,9 @@ public class DepthOfCoverageWalker extends LocusWalker, Covera } } - private void printPerLocus(File locusFile, DepthOfCoverageStats stats) { + private void printPerLocus(File locusFile, File coverageFile, DepthOfCoverageStats stats) { PrintStream output = getCorrectStream(out,locusFile); + PrintStream coverageOut = getCorrectStream(out,coverageFile); if ( output == null ) { return; } @@ -543,14 +546,24 @@ public class DepthOfCoverageWalker extends LocusWalker, Covera header.append(String.format("%n")); output.print(header); + coverageOut.print(header); for ( int row = 0; row < samples; row ++ ) { - output.printf("%s_%d\t","NSamples",row+1); + output.printf("%s_%d","NSamples",row+1); for ( int depthBin = 0; depthBin < baseCoverageCumDist[0].length; depthBin ++ ) { - output.printf("%d\t",baseCoverageCumDist[row][depthBin]); + output.printf("\t%d",baseCoverageCumDist[row][depthBin]); } output.printf("%n"); } + + for ( String sample : stats.getAllSamples() ) { + coverageOut.printf("%s",sample); + double[] coverageDistribution = stats.getCoverageProportions(sample); + for ( int bin = 0; bin < coverageDistribution.length; bin ++ ) { + coverageOut.printf("\t%.2f",coverageDistribution[bin]); + } + coverageOut.printf("%n"); + } } private PrintStream getCorrectStream(PrintStream out, File optionalFile) { diff --git a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/varianteval/multisample/MultiSampleConcordanceWalker.java b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/varianteval/multisample/MultiSampleConcordanceWalker.java index 6a0107f11..567125b95 100644 --- a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/varianteval/multisample/MultiSampleConcordanceWalker.java +++ b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/varianteval/multisample/MultiSampleConcordanceWalker.java @@ -10,13 +10,6 @@ import org.broadinstitute.sting.gatk.walkers.Requires; import org.broadinstitute.sting.gatk.walkers.RodWalker; import org.broadinstitute.sting.utils.cmdLine.Argument; -/** - * Created by IntelliJ IDEA. - * User: chartl - * Date: Jan 27, 2010 - * Time: 10:40:44 AM - * To change this template use File | Settings | File Templates. - */ /* * Calculates per-sample concordance metrics across two multi-sample VCF files; outputs simple counts of concordant * variant and genotype calls, genotyping errors, and call errors. Requires a VCF binding with the name 'truth' and diff --git a/java/test/org/broadinstitute/sting/gatk/walkers/DepthOfCoverageIntegrationTest.java b/java/test/org/broadinstitute/sting/gatk/walkers/DepthOfCoverageIntegrationTest.java index 0b20ab38f..6fc0c90f2 100644 --- a/java/test/org/broadinstitute/sting/gatk/walkers/DepthOfCoverageIntegrationTest.java +++ b/java/test/org/broadinstitute/sting/gatk/walkers/DepthOfCoverageIntegrationTest.java @@ -60,12 +60,12 @@ public class DepthOfCoverageIntegrationTest extends WalkerTest { spec.addAuxFile("959937a9b0ace520b4b7d9915d708003", baseOutputFile); spec.addAuxFile("aff2349d6dc221c08f6c469379aeaedf", createTempFileFromBase(baseOutputFile.getAbsolutePath()+".sample_interval_statistics")); spec.addAuxFile("6476ed0c54a4307a618aa6d3268b050f", createTempFileFromBase(baseOutputFile.getAbsolutePath()+".sample_interval_summary")); - spec.addAuxFile("50870dad272f03f77befb0075baed1cd", createTempFileFromBase(baseOutputFile.getAbsolutePath()+".sample_locus_statistics")); + spec.addAuxFile("faf63982622764299c734299ffeb3c63", createTempFileFromBase(baseOutputFile.getAbsolutePath()+".sample_locus_statistics")); spec.addAuxFile("65318c1e73d98a59cc6f817cde12d3d4", createTempFileFromBase(baseOutputFile.getAbsolutePath()+".sample_summary_statistics")); spec.addAuxFile("ef8c3e2ba3fc0da829e10e2d487c00d2", createTempFileFromBase(baseOutputFile.getAbsolutePath()+".sample_statistics")); spec.addAuxFile("223377e07b35e81a394b75b38d8e72ee", createTempFileFromBase(baseOutputFile.getAbsolutePath()+".read_group_interval_statistics")); spec.addAuxFile("096f4ed94020327288ea76245ebd6942", createTempFileFromBase(baseOutputFile.getAbsolutePath()+".read_group_interval_summary")); - spec.addAuxFile("06ed004c86f8b2ad8e64a3b42a0d85c5", createTempFileFromBase(baseOutputFile.getAbsolutePath()+".read_group_locus_statistics")); + spec.addAuxFile("8e391b7b84fc19dff83002b6dd9773d8", createTempFileFromBase(baseOutputFile.getAbsolutePath()+".read_group_locus_statistics")); spec.addAuxFile("43c160ff9d754744728c142709011993", createTempFileFromBase(baseOutputFile.getAbsolutePath()+".read_group_statistics")); spec.addAuxFile("a374410efe20609c5c4b87a6da7f4d51", createTempFileFromBase(baseOutputFile.getAbsolutePath()+".read_group_summary"));