From 173ca1e21506b1a22c10ec48978504ea769b7b10 Mon Sep 17 00:00:00 2001 From: Mark DePristo Date: Tue, 30 Aug 2011 11:08:13 -0400 Subject: [PATCH 02/33] Reverting tribble temporarily while I fix my subtle problems --- .../{tribble-21.jar => tribble-18.jar} | Bin 293413 -> 288370 bytes .../{tribble-21.xml => tribble-18.xml} | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename settings/repository/org.broad/{tribble-21.jar => tribble-18.jar} (88%) rename settings/repository/org.broad/{tribble-21.xml => tribble-18.xml} (51%) diff --git a/settings/repository/org.broad/tribble-21.jar b/settings/repository/org.broad/tribble-18.jar similarity index 88% rename from settings/repository/org.broad/tribble-21.jar rename to settings/repository/org.broad/tribble-18.jar index 2cb96f93db771260acdd64137ca66845b0e275c9..1ea101dd0abc8d35969b14a84fe0b3c9cf712b0b 100644 GIT binary patch delta 10633 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

?yrW3nB(ah5-y$q`ew?+7XLcQcG)$3p#L%Su0 zc1ubxS1ujO^@ZSmP_BOm<&xW!i*Hjdx?Qkv*Y z0B$w_o13HnV~Qr4s@gHOxbcKy!Jx{4Z)q%M2PuD$U8f;`P_XBU9xBxy*6yPUPxqAp zdCk~D#Wspb<32K7U2QlAV`ixpUh*eAKi(2`U@iK;mY4pbcIGE$;1qSukE+f6{XBIY z^MyAs_{mqBSxG!mNjyImtVQ#$7N`!MI#aW_pR84D;>D)Ud)}$OCtL@&M(*4(^*O67d*XSuF+h3-sVCJ3Ray4VY4s)f10MIzFVy|= zH$Cp@U#l0Gtet*N{Ym};$UX5#^^)|D+}He~u9vmqlBJ&{i~UXg)gX(ysBQ|CWse1G zujw*(dzALFA*|S`J#8q}IaMn$m@H4z21v5QX^ z%q$qJ&5)Vb2Ai!ibF_)FWMht2EIQ7=&e3vZNm{O{^G&(XP*lC0t4)=e^dZ_bnYm+# zHc1kHF~sch-$!VXykw}>Ll&WhYH39^3qFm1A&j%~lR;vWyw z3Sz`0ZvXWZ0p8mGwy$`akIT~rIX!R1E6~9ktXGGgqOnpOe^7y@u{H;Pq4q`2A%+n&3rKfn=aIG_cDNmDkd;Fv*Z81wj zhii#W(YamqRi^`i86x%fke2*`V2~%x^U!d#z4K$&zK~#XeVBBa#KD$(ZrpaegGi(l z4=yjaHVWYBBeYJETOo!<+4h~_#+yf&BOu00ah>N2LRiEV{I7pE?r;M9Mv?k?@PFQD z;ac`(Snn(CDSFs@N8-Bsdk~3~=+Sn>MJWw!eO!CKvhe#ynx@(_61t>z=L<$@5#nN# z<6_g|cUh-5jRKLDEQwsDzgYR;QCgt1>0i@6i+ipMMiVK`L*k9S1o>d6h~LF^=r^#J zNXZ^lcTbQ^p!#;9pz6k-&o{L?oe!csUpU5Wv`W+jZf>uU7cZw#Ev@Qvde@QG8W zs%|bcd2JC@Q@(Diir`4MID!8KYi4urzE&`;WC+v>g5_xoUuBYCdk zNdqJ~_fJw{__O0o)g(fU9${38BZ(_k9D5^e8LkJ#6(M|;_P^~bR<<|m!hge@m&Oxt zs`MCT=!P?lD;UP@c&FC}KO&JlQM9zZ)uwXAk4H~1d-dskTL+zkXps`yRR9uZ7q?Rai9vDl|FAa$ZRoA57o+cqAC!+9L`GCw${sW zbgnV#jboJ7s?SB!8SPbFxh31wX6i&#DVWXBMjXC`@?8_nswYL&UQAlE%EFITE8%>@ zJxXwUZ?Y$W=#57%Cu(Ezkf?8Qcc`!5t_1Mi6U|;pt-C%U>SM1Mj8{gczWz_Zf=GoP zmMxPlrpqxs0sWLajtUm3JbJP@D!b>6e(z_r5vjLF+r6&{(r!HGW5vpEXr-UsCp2gc zwl|SHXZ_Eww$baneis_GO{d=`L-f1vb*SHZTygNRQ_SAYoPzo#XFAm9yrg(v(a&RL z6MtBbm`Nm0%$WF5hqgywQ*?eyx!J+?qp8c+-hj`IMjK9Ge&Dpq!X4QFTj8U2Fa#Xt z);}Dx=FSi1xzn|9ez@4w{l#MFzRfHxRn-KJpT1joVvbp#GZpo>M;NV8AHg?FHC1ar z`y#{-?SI=>L}azm`^n=l{u>&}Vf38_eiw6%`n@SQF55L4T8q8$m4W?#eF{6jNS>?w zrO^g`$xzkKj}1_R_!HAiey<9CpA>ee_nU6&7k=YsYw&Yt@snp661Hl%eZ{%yfJL4Ry4fcM;VSn=32(~6lhpk>Aqliv&z z{JiqySbG-QYDH0bZ=u+YsjVI1L_ zZkY*I-0kdUCg~gOiz0b$;P*V!MsJS0;2%3}*VoJ7Z;I5*qgN;Y zCFrwdUlx?2FFW2h6x>s)Mak*(iYSfx#waa4iBK$YhPenPzdJCi89szap3v~jcLx25 zxrz^OC^OZLaGaS?1D8%D&u+Rd7{)#O6U=hz3)RL~7ix}Jq5Iw6tS@~GyOKzre$zyi<7h+W`g`ZfblIrY~C - + From d604019362642c3d9b5c6967b1e4642d5b84a021 Mon Sep 17 00:00:00 2001 From: Mark DePristo Date: Tue, 30 Aug 2011 16:56:48 -0400 Subject: [PATCH 04/33] Finished my broken tribble code. Updated to rev 22 --- .../{tribble-18.jar => tribble-22.jar} | Bin 288370 -> 291124 bytes .../{tribble-18.xml => tribble-22.xml} | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename settings/repository/org.broad/{tribble-18.jar => tribble-22.jar} (90%) rename settings/repository/org.broad/{tribble-18.xml => tribble-22.xml} (51%) diff --git a/settings/repository/org.broad/tribble-18.jar b/settings/repository/org.broad/tribble-22.jar similarity index 90% rename from settings/repository/org.broad/tribble-18.jar rename to settings/repository/org.broad/tribble-22.jar index 1ea101dd0abc8d35969b14a84fe0b3c9cf712b0b..d0de8ceb23fb81db485feb1d395ecdcbbab65159 100644 GIT binary patch delta 10420 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 F`ai!UM+^V} delta 8609 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 VrH&49S%Cj9Da9E7BLUAF_&-p)w4DF| diff --git a/settings/repository/org.broad/tribble-18.xml b/settings/repository/org.broad/tribble-22.xml similarity index 51% rename from settings/repository/org.broad/tribble-18.xml rename to settings/repository/org.broad/tribble-22.xml index d2648ddad..298eb750d 100644 --- a/settings/repository/org.broad/tribble-18.xml +++ b/settings/repository/org.broad/tribble-22.xml @@ -1,3 +1,3 @@ - + From 4b5a7046c5e15129215900b20387c1772727d7b7 Mon Sep 17 00:00:00 2001 From: Mauricio Carneiro Date: Wed, 31 Aug 2011 15:34:58 -0400 Subject: [PATCH 05/33] Making ReadLengthDistribution Public Found this neat little walker Kiran wrote stashed in the private tree. Very useful. Generalized it a bit, added GATKDocs and moved it to public. I might include it as a QC step on the pacbio processing pipeline. * generalize it so it works with non pair ended reads. * generalize it to work with no read group information --- .../diagnostics/ReadLengthDistribution.java | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 public/java/src/org/broadinstitute/sting/gatk/walkers/diagnostics/ReadLengthDistribution.java diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/diagnostics/ReadLengthDistribution.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/diagnostics/ReadLengthDistribution.java new file mode 100644 index 000000000..0f1cea2e1 --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/diagnostics/ReadLengthDistribution.java @@ -0,0 +1,101 @@ +package org.broadinstitute.sting.gatk.walkers.diagnostics; + +import net.sf.samtools.SAMReadGroupRecord; +import net.sf.samtools.SAMRecord; +import org.broadinstitute.sting.commandline.Output; +import org.broadinstitute.sting.gatk.contexts.ReferenceContext; +import org.broadinstitute.sting.gatk.refdata.ReadMetaDataTracker; +import org.broadinstitute.sting.gatk.report.GATKReport; +import org.broadinstitute.sting.gatk.report.GATKReportTable; +import org.broadinstitute.sting.gatk.walkers.ReadWalker; + +import java.io.PrintStream; +import java.util.List; + +/** + * Outputs the read lengths of all the reads in a file. + * + *

+ * Generates a table with the read lengths categorized per sample. If the file has no sample information + * (no read groups) it considers all reads to come from the same sample. + *

+ * + * + *

Input

+ *

+ * A BAM file. + *

+ * + *

Output

+ *

+ * A human/R readable table of tab separated values with one column per sample and one row per read. + *

+ * + *

Examples

+ *
+ *    java
+ *      -jar GenomeAnalysisTK.jar
+ *      -T ReadLengthDistribution
+ *      -I example.bam
+ *      -R reference.fasta
+ *      -o example.tbl
+ *  
+ * + * @author Kiran Garimela + */ + + + +public class ReadLengthDistribution extends ReadWalker { + @Output + public PrintStream out; + + private GATKReport report; + + public void initialize() { + report = new GATKReport(); + report.addTable("ReadLengthDistribution", "Table of read length distributions"); + GATKReportTable table = report.getTable("ReadLengthDistribution"); + + table.addPrimaryKey("readLength"); + + List readGroups = getToolkit().getSAMFileHeader().getReadGroups(); + if (readGroups.isEmpty()) + table.addColumn("SINGLE_SAMPLE", 0); + + else + for (SAMReadGroupRecord rg : readGroups) + table.addColumn(rg.getSample(), 0); + + } + + public boolean filter(ReferenceContext ref, SAMRecord read) { + return ( !read.getReadPairedFlag() || read.getReadPairedFlag() && read.getFirstOfPairFlag()); + } + + @Override + public Integer map(ReferenceContext referenceContext, SAMRecord samRecord, ReadMetaDataTracker readMetaDataTracker) { + GATKReportTable table = report.getTable("ReadLengthDistribution"); + + int length = Math.abs(samRecord.getReadLength()); + String sample = samRecord.getReadGroup().getSample(); + + table.increment(length, sample); + + return null; + } + + @Override + public Integer reduceInit() { + return null; + } + + @Override + public Integer reduce(Integer integer, Integer integer1) { + return null; + } + + public void onTraversalDone(Integer sum) { + report.print(out); + } +} From 65a9159ac67c988d0600a0ea21d4c2b4b4daf3b6 Mon Sep 17 00:00:00 2001 From: Matt Hanna Date: Wed, 31 Aug 2011 17:27:25 -0400 Subject: [PATCH 06/33] Point ivy to the maven repo instead of the default ibiblio repo. Drastically simplify ivy config by completely cutting out module specifications. --- settings/ivysettings.xml | 35 +++++++++-------------------------- 1 file changed, 9 insertions(+), 26 deletions(-) diff --git a/settings/ivysettings.xml b/settings/ivysettings.xml index 2b4a081d4..e17342442 100644 --- a/settings/ivysettings.xml +++ b/settings/ivysettings.xml @@ -1,31 +1,14 @@ - + - - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - From ac49b8d26b4da6f2ca299d24d999241b63aba6fd Mon Sep 17 00:00:00 2001 From: Mark DePristo Date: Thu, 1 Sep 2011 10:41:55 -0400 Subject: [PATCH 12/33] Conditional support for PerformanceTrackingQuerySource to measure Tribble / GATK bridge performance -- Removed DEBUG option, instead use MEASURE_TRIBBLE_QUERY_PERFORMANCE in RMDTrackerBuilder --- .../sting/gatk/refdata/tracks/RMDTrack.java | 10 +++++++--- .../gatk/refdata/tracks/RMDTrackBuilder.java | 20 +++++++++++++------ 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/public/java/src/org/broadinstitute/sting/gatk/refdata/tracks/RMDTrack.java b/public/java/src/org/broadinstitute/sting/gatk/refdata/tracks/RMDTrack.java index a97f3211c..7aa112961 100644 --- a/public/java/src/org/broadinstitute/sting/gatk/refdata/tracks/RMDTrack.java +++ b/public/java/src/org/broadinstitute/sting/gatk/refdata/tracks/RMDTrack.java @@ -26,8 +26,11 @@ package org.broadinstitute.sting.gatk.refdata.tracks; import net.sf.samtools.SAMSequenceDictionary; import net.sf.samtools.util.CloseableIterator; import org.apache.log4j.Logger; +import org.broad.tribble.Feature; import org.broad.tribble.FeatureCodec; import org.broad.tribble.FeatureSource; +import org.broad.tribble.iterators.CloseableTribbleIterator; +import org.broad.tribble.source.PerformanceLoggingFeatureSource; import org.broadinstitute.sting.gatk.refdata.utils.FeatureToGATKFeatureIterator; import org.broadinstitute.sting.gatk.refdata.utils.GATKFeature; import org.broadinstitute.sting.utils.GenomeLoc; @@ -47,7 +50,6 @@ import java.io.IOException; */ public class RMDTrack { private final static Logger logger = Logger.getLogger(RMDTrackBuilder.class); - private final static boolean DEBUG = false; // the basics of a track: private final Class type; // our type @@ -113,8 +115,10 @@ public class RMDTrack { } public CloseableIterator query(GenomeLoc interval) throws IOException { - if ( DEBUG ) logger.debug("Issuing query for %s: " + interval); - return new FeatureToGATKFeatureIterator(genomeLocParser, reader.query(interval.getContig(),interval.getStart(),interval.getStop()), this.getName()); + CloseableTribbleIterator iter = reader.query(interval.getContig(),interval.getStart(),interval.getStop()); + if ( RMDTrackBuilder.MEASURE_TRIBBLE_QUERY_PERFORMANCE ) + logger.warn("Query " + getName() + ":" + ((PerformanceLoggingFeatureSource)reader).getPerformanceLog()); + return new FeatureToGATKFeatureIterator(genomeLocParser, iter, this.getName()); } public void close() { diff --git a/public/java/src/org/broadinstitute/sting/gatk/refdata/tracks/RMDTrackBuilder.java b/public/java/src/org/broadinstitute/sting/gatk/refdata/tracks/RMDTrackBuilder.java index d352894e8..06d05912a 100644 --- a/public/java/src/org/broadinstitute/sting/gatk/refdata/tracks/RMDTrackBuilder.java +++ b/public/java/src/org/broadinstitute/sting/gatk/refdata/tracks/RMDTrackBuilder.java @@ -27,20 +27,21 @@ package org.broadinstitute.sting.gatk.refdata.tracks; import net.sf.samtools.SAMSequenceDictionary; import net.sf.samtools.SAMSequenceRecord; import org.apache.log4j.Logger; -import org.broad.tribble.*; +import org.broad.tribble.FeatureCodec; +import org.broad.tribble.FeatureSource; +import org.broad.tribble.Tribble; +import org.broad.tribble.TribbleException; import org.broad.tribble.index.Index; import org.broad.tribble.index.IndexFactory; import org.broad.tribble.source.BasicFeatureSource; +import org.broad.tribble.source.PerformanceLoggingFeatureSource; import org.broad.tribble.util.LittleEndianOutputStream; import org.broadinstitute.sting.commandline.Tags; import org.broadinstitute.sting.gatk.arguments.ValidationExclusion; -import org.broadinstitute.sting.gatk.refdata.ReferenceDependentFeatureCodec; import org.broadinstitute.sting.gatk.refdata.utils.RMDTriplet; import org.broadinstitute.sting.gatk.refdata.utils.RMDTriplet.RMDStorageType; import org.broadinstitute.sting.utils.GenomeLocParser; import org.broadinstitute.sting.utils.SequenceDictionaryUtils; -import org.broadinstitute.sting.utils.Utils; -import org.broadinstitute.sting.utils.classloader.PluginManager; import org.broadinstitute.sting.utils.collections.Pair; import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; import org.broadinstitute.sting.utils.exceptions.UserException; @@ -51,7 +52,10 @@ import org.broadinstitute.sting.utils.instrumentation.Sizeof; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; -import java.util.*; +import java.util.LinkedHashSet; +import java.util.Map; +import java.util.Set; +import java.util.TreeSet; @@ -70,6 +74,7 @@ public class RMDTrackBuilder { // extends PluginManager { * our log, which we use to capture anything from this class */ private final static Logger logger = Logger.getLogger(RMDTrackBuilder.class); + public final static boolean MEASURE_TRIBBLE_QUERY_PERFORMANCE = false; // a constant we use for marking sequence dictionary entries in the Tribble index property list public static final String SequenceDictionaryPropertyPredicate = "DICT:"; @@ -214,7 +219,10 @@ public class RMDTrackBuilder { // extends PluginManager { sequenceDictionary = getSequenceDictionaryFromProperties(index); } - featureSource = new BasicFeatureSource(inputFile.getAbsolutePath(), index, createCodec(descriptor, name)); + if ( MEASURE_TRIBBLE_QUERY_PERFORMANCE ) + featureSource = new PerformanceLoggingFeatureSource(inputFile.getAbsolutePath(), index, createCodec(descriptor, name)); + else + featureSource = new BasicFeatureSource(inputFile.getAbsolutePath(), index, createCodec(descriptor, name)); } catch (TribbleException e) { throw new UserException(e.getMessage()); From 1aa4b12ff0f49ae9c6d6e48a97e45ffcd862ed4c Mon Sep 17 00:00:00 2001 From: Mark DePristo Date: Thu, 1 Sep 2011 10:42:43 -0400 Subject: [PATCH 13/33] Reduced the number of combinations being tested here, which was overkill --- .../utils/fasta/CachingIndexedFastaSequenceFileUnitTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/java/test/org/broadinstitute/sting/utils/fasta/CachingIndexedFastaSequenceFileUnitTest.java b/public/java/test/org/broadinstitute/sting/utils/fasta/CachingIndexedFastaSequenceFileUnitTest.java index 74cd8d8fe..061dc99fa 100644 --- a/public/java/test/org/broadinstitute/sting/utils/fasta/CachingIndexedFastaSequenceFileUnitTest.java +++ b/public/java/test/org/broadinstitute/sting/utils/fasta/CachingIndexedFastaSequenceFileUnitTest.java @@ -31,8 +31,8 @@ public class CachingIndexedFastaSequenceFileUnitTest extends BaseTest { private static final int STEP_SIZE = 1; //private static final List QUERY_SIZES = Arrays.asList(1); - private static final List QUERY_SIZES = Arrays.asList(1, 10, 100, 1000); - private static final List CACHE_SIZES = Arrays.asList(-1, 10, 1000); + private static final List QUERY_SIZES = Arrays.asList(1, 10, 100); + private static final List CACHE_SIZES = Arrays.asList(-1, 1000); @DataProvider(name = "fastas") public Object[][] createData1() { From 0b794b549182c3b84afc660364bd9ce5bccfb16b Mon Sep 17 00:00:00 2001 From: Mark DePristo Date: Thu, 1 Sep 2011 10:43:03 -0400 Subject: [PATCH 14/33] Reving Tribble to 23 --- .../{tribble-22.jar => tribble-23.jar} | Bin 291124 -> 299168 bytes .../{tribble-22.xml => tribble-23.xml} | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename settings/repository/org.broad/{tribble-22.jar => tribble-23.jar} (82%) rename settings/repository/org.broad/{tribble-22.xml => tribble-23.xml} (51%) diff --git a/settings/repository/org.broad/tribble-22.jar b/settings/repository/org.broad/tribble-23.jar similarity index 82% rename from settings/repository/org.broad/tribble-22.jar rename to settings/repository/org.broad/tribble-23.jar index d0de8ceb23fb81db485feb1d395ecdcbbab65159..40e2d4c5ec85a3fd0c7f14b55a1d0ba3c283c217 100644 GIT binary patch delta 25542 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 delta 20304 zcma)k34ByV*6%sDZ};tV-z+rQ$;wVA5W)^&-xS#wfv^V%5OxU2BG5!O0of)<366k> z;(`u{q(MYbXB=1Dml>UL8Fkcg6h}t|!My*e+vx+Ku~e`<=bGK*UwIx&RH4S9Xe^_#pt zXXeW5i7z}MmUyPOyG!CD{zUzL*8WAmhZ7FzdgJT&)$zSamv#O-r3 z9iMH~L&v{0HFazT%PhdHTu|6qz&~7A?338t^@wi%Sohgdd?LO7`=(U;@uoKN+I--Q zc!_t8JFlyan3&|3_p({rVcr{)6dCSOWb)0GmwxO}Px9M5khlF{ zb0T^2DoZ9NRi3|GzjD@p<3mqc^m7dTLYKUB*`i;4bcL?Q5Yum7s`fE43FDX9crbbS zq`FvKUAgUtEOl(I(a^R=_Zu;C zz|bL>_5qdEKPSb-_E|8$d`ZdtC8JB`E-kGL{4%3*U2an4@?S2gl1bdUa>J#`>Of;| zpk8OgTiM{71pc{l%H`drt9grYC${~1E7zODQ?HL zg+_{cakSk5S(StiFkAdN!&jC!aGfS5!f3DF;-DPl4UHrzSS>0>#0-G1|B4xU`r+=}{ z<-EkEHMBwvb#X9Zsm-_WGMhrQ*5>83U2S%8zT2h>x>cQYaU1^%sj$+fb+lgn+r@>h z4QQHca&y;4+N1`V+|soLiB(7>?4^A+-A1=Ekxk1{@3_f%==_Abf%oz0cfY`1{A6W!3$bjs#Etkk`h(O5m?=3%jS@n)dJ zdu`swcdN->qft+r{>Z<#=|OtP=6iU*#RqJ91uqmvbJPWj|Dhi&K4|m37zSMssE4GJ z`)D6iPUQ#HIWCJ2tEcC1NG-BBBk6vAz~=k;h|Le89$-9#db>FX0v_1xrfi=9JD`xMW4n)VT|$%_+}mGTr85Qrx<- z@KUO}*u;ocL%i65WB|v(E$aAESCVSoi2ZJxAE)nCg_oOpPRKMqp&murf70eE4%>W+ zPdk-AZo~fYZ(dA@Fz`*`RX%=^)wADmfqJY3r>IAp8bvBQmdB{f`P^CUxW!eZZhC<0 zt0@(nuHK5}?Uf71C#jM+emcZtViPT=SnMhoC6-@|uma+AT1mH}Y!%W5-qLCHHSeZy zCCW@;Mje9*bqto$F?dkNU_rzNfdc{WcAeggc3{M&(TuI=;0{!*>9B}Wk={nz5$;eI z5;!@;`zZNwG6F91ESbfwypdJp9^*Qicb<4~@Cowd<2gW0rHbX&RV4Qmc}EtTQYI;< z3G!o*6LUYcm*n$QuO_F8eETRzK=`8|Vx0D&nA+AhTHCw#I-SKvYucwM&Z(?Z(az#g zJ-&((BB1L<8^k-c<7*)YP&E)4Mg3^K0B{dEbtPF_JrUItt0*Y~IXT)Q(W#wSTQvn$ zQ);WGMysYcRZ}8W&7+th7wtqipBf;%fh@X_;zBflvgszurNPvchEgF7qY*TmM&aKQ zx|w#+Xxc@^bPtWgA|8+JU>cU)boz=)>0dO9exfo?!B(F}^SBw!=ian{`_f__LFGJ; zmhb|w-!62QgU*Q;(eJ1dZ<5+gcY+H-O?e>gL8d_p`Sr+WrCp&m7TuMd(JI(77(^Xx zX~Hik-T)}r*r+HNrnDfRq?lkLrJp3*i86wL%##!!e4MgQk|%hEvWvr%bCMEklPSm1 z+|YDrid8|~u>eeJgJfGupmvl(?I{zBpfMIe0hT})?81V-?erVLUvRoxa8mcw=dAWZ zRUe=d)`3l%b%SL69$PbDti|7B<=}9WZCE$GSf3L^F}3)_35l>=Oe~NXED`C}f#Qoo z@d3)(2$cN-1$7kKN#A`yl*Yk4tO*%B;uxV1Vp|A=IO8N`NE|OTLL4|rp@1a7Yfa8m zHV9RVjiwH8FwwV-`ANitWnju0W47|qXFIx!dSfiLSoVox*@q6Gg^cwe-5bHOA8?eZ zOOWM@2|7rYd4xiytClf6y22q1(xG=k1f;Nrn~b=g0`rhVdSrD6Oc^;wiy_tG?##u* zX!1xM{5(_i<{F;Q4C^gsmGktmx^ zjIe2zvk#>OC9a}oG7nC&Ii^DJ?d~ke0LV;q221iO3eZ__;JG?f$f`pH@P8(-!V!sZ zhdP?VIo&-~6wGtr=2uZmN!nG^O5%)2jD1Sy2O?E5;{`~fMxyeia_^9^a2JY0_-7#h zA{4BbupVB;9Y$936bE9NU5cAc^S@OBXNOulXL(TkE)I~GDj=}sW(#)@`2QYk(=Mc7s zC+brmP_!mcbdbEkyfAf@5;ZZ6vqFh2)66RBHs(n6KV-t3`RWbY5PbqFeTp69AJ{=Z zqh|Cuc8o8mBmI*G(wEpr|3zcz8=6S}#(w!NmC<(?;zb<5--BvDL@8E=P46^V$c0ir zJ&BZwHaXx1p-yLvE=s&LV2`t)f!~h^~TE zzfpavrgW^sY-TLwY6`MTV-iHKN%(gTy~;L}7wt4J(y1Hg!+DL9bRSEuD^#DaKq$rf29`XMTWu$l0&s&rq*o&=e zvm%RF@}AdYl+>R!En+c0FJMJDZ0RM8Inl!Ea1eYM2tq`SAb1$DtmGnLq8qRP12W{u zN<-?#(=6<0!&PmDMFPKpDuFkSdCeIaMaG8SrEqZIRMQ`JI$6IFt zOzfEZWWSR`2dAJ0HsNua5SZw$k#9vfb(Twk2!^Lr5J zu@p>;7EG@#5cYCbo5Nm1s1XkwN-cO8_2%K&V@K%GJEF#f$f#Oi_kIuix~LLRi5ztK zzYt7deWQ=hP$_0`hDhisYHKz(4fQ)sGnu-$)7;O~fi(ANn#I(?Kjc_clx z!CvYnqn&GMdPxWEq4R)dNseORPO^k-#hyf(mt<|4ljPa7;1n&05b8*EmweeHOf3a= zz*a_FOt5T#B;&E%CQ=Wc1WuVk1G$8j@l@Kt)4?RAbPvy@54eo}&T}-$W`G#Wu+ToB z4@00#33gOD@w{NrO8Ogk$Agn#C;c5M3#aS7^bviG_0|Gs-Y5EuOu|~OIU_%g^3%sS zRsI2rdqIDh1LusC`Eg);7KQOS1|e&`2ZcOWDaoQQu->cDX$%BtoSpJ&(LXKvlI0{N z%DGHNHN<+ewwwrgfb$i7?aVSQLeIkCor5mnxWGb>rZWUZ&2GgeQkuVt-5{{MY?%|1 z(k(SquHE3ZCY8@Lb|Ze%4SQ?&&L@ze~wS7JcG_Rp3*>1VI-4LxRsF_*{Z7 zJm)TA67iF_e@gJB1Yfy|_PvC>kLha({^g}_Ec&;UeCvbAd(nqA^B;lygAeQFzf$m% zmwxuq=q&ohN0;cbWWn~IMOP%aYB}bADuVTvvS8Sk;aK7Z=m`?B3o*k7)RWy(?05q# z@dez#K8yWoZN4ijoPL%28K$Y9r zNEwYB*mj4}a2q-jY7M2q7RTG1Ks#)x?lWz!#{rA$+nmTrHYZDvLUSxmwK8gmmMYI9R6vALP#G)EbY7N0|qsjaHF!fe~d zhK7dDXHl6b@-xNqiC~5Vdq|007$)O`1Vd?_K+fluYN^Lq+GGlqSlr4MZ-vE$61TCr zt#(k@+<`mVQ1g|Fw~XcK$LVp4J4uz!HVgv*dLJFOp$R@B7T+%3(HI#hGg*Doi8EBS zWwcG|!bLVDwGx}A(lm>^+1#CbRPwMS*J$o3_TUFA2hVR39u{N#WDL#%Q!-3d9&92Y zHJH#KOoEOm5l-BB*SR+%T=NvY7 z;sjJ01xL2CqYZ3mq;ll2aDg;M5AF0jRyR6^NQTwn7(i-!-&cn=z6dN9wgQo(sD~oB zd#}fRf1TDfs5_H18$HjWIT0xDf~Xz9%_&l04Tb z2DTsPrh0LBP z1wbZBx(PHFd?qtAf#xA)phZ{MR7Gg%fVmGXK+;6>1X_rc8`6}BnnwK^mRyX+Z|r2rUe7 z9R{zN28I-?R|ZNt10flmKM0B2XHGduzU$FB1GJv11I8ca1vnW(&NM>Vc0=eTS|(;F zcNNu>n5!rtvBO`H7s&j9JV=_l#D_Shm#c%QKd1$&iAr%Anmgvdv80kjS4i&SNrTxd zrI&=M9n8F(DoQ(2{eE6fD9PMVf)_#B1;cfXS?d{yYtLd*o`d52M`{9_LJ$gm8wlX- zpv-rKscS5b(n(ODOJVAo2X*fjdNaxaW3g4plJUUinWudyqBbv!&ciZzR91s-?I_d- z`-l*sBaW-JniqrvV#)Z8dYh2KE1(;~K_^VX@aQoNJ{ux58wmKYNz+O(RKcw6mbk%5 zVu`v%USQJ2+kS06HC-pkh~)dAxqFH;LSeE_k{5L{db>KfliV4HVEV&bM^CaRxAgW7 zBKdmHP;zl@k~d5+nfMJFlkDle-VL4Wty;2m$8Jcl@Oh!HCO{8Kf+mtlA5u$bHtliH z_ks@7ADYTg=qfkE{xt#iuZ8qQ2+aK{6rL|N?QR4Q+>AqgBS_*wl@v`9FLv_Q@EghU zz-XgXTnVjyGboY-N^e1_fezYfa=P>~YDs1_v?rHETP?Z+TyN2~YCwo)7!Yr_@m0z) zp@A1%LuDL+fIL=J2aIH2);@A;A5)gfu5aXrviDMwkOj^ZZx!Y2jS$x{O$!e>2gScI znr}die*?pB_4u5<-J1vfOk(>t2l%O7nJNm4e_;6 zo~tWNCApg82j@rlJp~De-G?-Qp(S-nS6GW0T#wbyfbk0q6PG}m%Ni>&=4Aud-Jqij zy=Q8Um2D<3f~kSJcj}!(@SCWOt+vCQ89)tUK?K20noXhB!~?yCo8};Fv}wT~(8$n> z%Q=^R)7?6oN?fE17CAtms40m?wmy~|70dWvDjQhc;^YyUyooMl74%P}CO1WiQfC`z zb^SJwx~bWM&Q=T5S9{5qYPC@N$&+f`bfo%13qck8fE-JDt7i|?6pNa$7sjC&7>0b* z7b0fOR$qXrz7q}x)PN;h2)sdW!O5;0+xlQ*Iun zzEWcYGI#H%PNyh8&=TgCR>dw97l^qEwN6p%k;QVPGTpOIQ3s$Ga?o@mYV05vMbkoFvs2V@WU&`13=OFSPtDXg zuU0Amchn=HwyExB>KGXM9#wEYt%tRD6BlB4YePFQyaU{U4sj<<6Y;Oa zU~L`&x5>tNe}p=ca-3q4dJxN6>?em{m7WAX5!xld5Pn5(lUHc1>oTPqpdy6x2oqMh z-3R7*8F*wb3(=6;&8%jBi;rd35`TjiYbp4J{MxLBeNT8|4~^Z;v7+7W{`Iv<+ajRe79mP%W9Rq&dE839HDVG!2~x_A59fk zs2SFNPdrx$dgT5~6iOA6Lrro>j*ZT-aRnMYTN#%t-LUykE1rYbC+Z6J%U33NEX&(%i6`VWpw< zlkhw_8*y!Gtmyxb#vsH~K*@lQY9eAEz+^#Cm>_nn-F*@qme>1zSm{Un;_mbdze;e_qDL)y%!dW^2Oqp0$EEh;eo*8g z$$LVYoRqw(7;zQ)5S+H?NgvK^0DgeZNa`tpe%7L=eK-|D_j$ztlTPO)_Zdk&>lG7B zI{i_CKl$Jk`m+Qth;igacz*;C3@}aU6+a}#hb+1vIk3U_>2*Qn4U68Cx^H>uZP@=M z`K}Lg-+R&nEHSO(eZTl61`eo)`N!5QK88O9#wAHxl@3>vV!PS25iZAbA~+LXc>HfIWASu{b+GpYV;!fmwioMUmWzOWYCkQ>>wksI5LJDY0f zTSgMBc&Tndc)7Z(u~86cCKxy87Gld8hPt?E_m{@TX#dYPY%F<>y(D_yOO0z{wwrPwpX>^qg*Vw#w!er#zBs;UA(0Fm!F)KxfDyQ-FcOm5D2<4mm5m^|&4IdZB5tbT zi_Fv^0$)<|pt#GZI>7h75P)SLccfS;6HQ&PNEM$+y!cGYEm~sHQs4ux3B*n4h(d{F zc)%_ivtNt=1kf|U^Yo(#Zf8qUx-*JWj#*y zt0>Vq4P*iw1z>8O*|#Eq7`k4C&;+%{V7jHb`mD9lR3qWEn^C7-PNba-3|`TCgDog< z4uNabWCs^91qv{;KKY%~vKEm!bpV=CM4U^CK!i5~VYRu?_>)FL-+1B4@J>ykJUIK> z!P(ad&b}Mq?3=?gXa&!NR5pvY!0ES*=fI~nkE(b9oyPq&;o=eCyA|+>+zu}DV6ZVz zU*`h(IgkdnKwfZTZFSO|XTku!7>2?5AjDm`ZFffq6D)$pnJC%Mz-BlM1FK;|r@>-0 z5Q>1&J6)v=&46W>spDnna*WMrJ3^swn+S!yxc%0yirQaC7`~+rVZ7)wwgipD3B6MQ zsN%N9N17zsvdL@74_8%@+`5Tg0tsK`Ez#jm#ERSnUDv_@*Xf~p zFl4#rCkw9#9qa~~+`#sLCW#Bn>7=eF`sjt|=r7QnA;`AQifd00S5vXfs&P_Unza?) z;Iy=Gg;y`XYA^@XEHJ&4XeTCwmwj3#6MAHT^W1d^XWry;2o;3cJ4N^_uPW}@C%pYHuE3H80qX&AB{0OurHiE)|lXp^Oa1SR$5-( z7-thUVpT8TYM>i@?{#IU^J`3x8ny^N#Yd+YKl*Fx;*3+DG&EDx>+_8C%4gdqRvt6r z!>^PWZH(Ac%BR*&bHNxftmdKm2bW8#Wow0Cv&y zob~7tOJvSOiK_%+*rHPwo%V{fnMO}pbk+xsd|Jzy4~Dd-59Ubt`Me@xHk5XdGMh+` z5H-c)B~qp!__CK?@j=FfR0i>~rPOFiFG?S;`(PeBCUxNU^NYNhOmE5S+kTks-j(1z z3Eub14Gu|t;Di0{Z@xm@NchMrf@TZ)MDpSLgTUES1kRrHndE%#6`Au@eRaU1ufjX$ z8gWMK*B1Q?7BD@wv+9xg#-rv-OeLyfg^?IuxWL$G#8$!gXVJI%|CeFcV&hr<|74s1 zld&9}_5WlY^`~-Un>XTJ8>)saF($=-2U)7s%$1hh@4ra1L?|juuwjN2F<2zXAD9YM z;UXhj9k|a(P%W1lxqf&eZTR1RX3DHQel|0F%Tl91^DmVZfhG_=FVXi9#AYp7vam}* zflZgykGB}J;(oQ|`y{w0ZK}o{tHJ^^S*=}W6cjVtY_JR8h|DgzrKF&2K|%krxup>g zq4pJ)vnd~ZK=vFVI^s7X6vM^hq0J%@dqGzeLnwwd3SV0IZ2*h~B~@U#(b5%1KUeN* z2~YkVMpH3HY(@M1fT{(P0Quxer!*p}9 zI=|XT3k9(04At9?xX5Jt0Wyf=!J^_MGei#Lm$6xkF`x>j4A(xfVVK21NPX^e!2pcy z)?UJGK5sE{Vul={a@6vP=8npHsooj#7YEbKFxe;@bB1DJ6^Ik%JwD(GA;fk0|4Ze( zjJ=d~hU&qTpc@5nRaI<`(j-jv&z+$}=`(4FHVfn-nQ{#2wBkT|uw|GUoEy>-wKH3u z(_6Hd%2F|igHYZxa59cTTD`Z%xEjiUUOE#es(1sP8>DgyZwdyoswjIO%)kM-5|FTi zfm|eNOu=1o>8Q9S3wSn+;@PM!o{fQL6T!3T;QUk6YzQvNHHRZ@@Z$vQyo{?wTmZ)S znt|bNOTO#q8EPp_TET8|6nG85sWgdNs8wr?gWOtWRu~=Hh*4IYMtX{Hy1KRO&={=> zp9h@Cv9mZZlHVJr%|jT%q`_!bnSv)U2t5Tj7Ro=G465He*T< zk}kSg73pRRVj)h3?gl-yk-m&zKKhbI%R^G%@pcF?%Oae!346G48Xu0qs4I3Oq;UZZ z33gsOF^mnJ;lOoXyD%(Tqx9DvZB9{<+$m!ihNMFN^Hc;Hbv;7u^jz2QMmLZUW}z0{ z9sWRzHkt>zm}p^13)~=tkw{!}1HjuY)c5O*zkm=guQz6Sjps4DKuZ;EFh(JB=LTan zqPUI5bVTJFja-~BcW#8M7jnW~7=-4PYusvvBVGwxIU+?XtvflogBxN9iDYzAr42eO1N1#>mjF7>KBY zm+TP|;QPQ_8YRKa_zIFnOX(O1#!BU4i^h3rybn6$1ix^zRGjP=Sx_ZhRu> zO}%Ugt6gmn5Gna??zQ`kiJ66jbLCcB6e1fUY`#TnobU7??B7;Yn`hAm$2{=K zO-8BTd4<)E`GDT zY-K6VG<;I1hIcbMhf^Oi5_xbgW`m*AiaQ$EBa~|h&2)@0=omxOF)&5lmPi}aDj@-^ z+Zt&%@(Q6S$iDaVev1PXMG3Y><;(;08lsEcm&=EFGbq>R>9GP)eUk7pQ5xgl#XMfK>%NFWIA=T z;5^C3o|bbQ<0=NlS7F31J)$kvAX+=;EMYHHn)45)YVy%<|G;4&J@ zEgT{1K0)9{=7o}1J)m#Ay5(^F0>SGIb3Jz5TFXnMnaTD!XE>K- z2uxeu`qm-pC8}eiT=C(ThP&?81DZL;^@<*R`zfvzjp&f+E^nOlH+HdWynKisKDom6 zp1$9>eS_<6`GP;3x6?IUH{W%q>owM0oqa9DldnVIU9eJ)!~y501I?@_L@ zCTOL+XI&pi>(9@+F6h=LpL2cUk(|3;a{Z{uy8W-N?mBVdE7yw}uf6|qEvYAU;!X1b zO~9~azN*pLSl>LM@0u1Ro4@JFC`vVdl0h74o2mcWLAZU6xl>B;=K&h4^B=onu2Da$ z8k(2%n15|*D)}1(;oaTLH}#lj^)oN%-Z~91pVJs!9cxYzP-^lxvy0Tddz?AMHAF_l0HVIEh~=GkZ&%Fx$az>TCy}s@djv z$*(`hoFMU{Ip%1IU!3EN>zjpUhUzibY%ZB)bDd7l&2=ihx)OzL=b4(RC(mX|dxbw3=e2Xnm9y#r5eupcT4Uqap8tOH7 zqHC%kK3s8Zw1dQy6K=J&+`;ZZIk1~J&gpL0Y@Ev0$_RQ1-&d{t6}yi-a`@Ez4p;mF zdkBW94i><#Fl(%({ zEoK9w@D-gh6K zl;D>ujcOf~q$Q`Cc84p5CK;;aSI$$_>4rzWvdpw~gF{=7%{UlKBu~eh+Im23TRRQ* ztTfYvmRNKduIAkh^?h?rR0-uqOv~$0t~K(BH>CD=xMFIZcDbrcgkxpV8=jtO=dEVO z{}_Lx2i`B(84n==PeCm#kh;6mLJhsu%+G6}4p(fBv=TdpDq9ty^)-gN+Uh`XQ>oJnY=>zIhC7eC zu*%_bnReH2w>iZL^I)*_u8GVvIjbqIHq_ON~s``LGeEzQDrM)Axa=@aT9< zojf8R)%*@ue7wC*qj%Rh{P^`6bie)gb-Lev&S{GT2g0yCBA3_v4p;1cEZQhl<*aqU>A@PubqVB`*tl!?MOCatcRixzfjzGqLG|5Q zhf-IiaA8$VV=44S5uIEixoW3J1m4o-E|S6@cJT@i54^{Z3dZKKoC@Qo;Wb)-{r`$jWW_fh|B+H;$* z0OYy$;0ca*sb0fIb^^6P**T(Nq;Q@`hVSByGQQ~%k=8?@g5ROM-T zP0!;FMC-?^xXlsxozidH{5$B{@`zel^E+G-ykFhB+00c#I=S$5NlpE)rgscHj6GJK zRyCCoAFhZ!D)qa{YWQd~#^ZWQ-h=9ezk)Kt7E;n{3rhODEF}&1eC@&sx5X*gF9mUL zJ6--wUQqj2iPwMbWcD;oTm2i=^;C}eOHtPlrd^(ErzQU@r~bka4)AX+GxmR+73uaz zBg(KT$#d-(e*Mvzo%2~{oH|?Ij8Us^bMQ;J1E?JPIa-{c#$Xu>l5=#)rD%z*7N!Ez zC+~0?z97X9{uV9vshDj}!%WDZ#>1?>-;T97>{cAi6C))enHpVPQj)2TZgT)VDVa-k zW{zsz(9Ejk(UDCTJvBU;NSz=k1*PUE``X(@Qa?={m|$8eXQxAlRy)yYLf2>s{(#D~xh3W0!v?y+ S!vyc_Iy#SOozz>5GyewzML$6R diff --git a/settings/repository/org.broad/tribble-22.xml b/settings/repository/org.broad/tribble-23.xml similarity index 51% rename from settings/repository/org.broad/tribble-22.xml rename to settings/repository/org.broad/tribble-23.xml index 298eb750d..2f6a16a03 100644 --- a/settings/repository/org.broad/tribble-22.xml +++ b/settings/repository/org.broad/tribble-23.xml @@ -1,3 +1,3 @@ - + From 827fe6130c35e9400f284eb2f9c1b586ed750995 Mon Sep 17 00:00:00 2001 From: Eric Banks Date: Thu, 1 Sep 2011 11:40:35 -0400 Subject: [PATCH 15/33] Adding hidden printing option. Also, always run UG in mode GENOTYPE_GIVEN_ALLELES given that we don't actually test for the correct alleles (otherwise UG may choose a different allele and we may falsely validate the wrong one). --- .../validation/GenotypeAndValidateWalker.java | 40 +++++++++++++++---- 1 file changed, 33 insertions(+), 7 deletions(-) diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/validation/GenotypeAndValidateWalker.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/validation/GenotypeAndValidateWalker.java index b616a0ebe..f416e94a0 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/validation/GenotypeAndValidateWalker.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/validation/GenotypeAndValidateWalker.java @@ -253,6 +253,13 @@ public class GenotypeAndValidateWalker extends RodWalker= 0) uac.MIN_BASE_QUALTY_SCORE = mbq; if (deletions >= 0) uac.MAX_DELETION_FRACTION = deletions; @@ -371,19 +383,26 @@ public class GenotypeAndValidateWalker extends RodWalker Date: Thu, 1 Sep 2011 13:14:40 -0400 Subject: [PATCH 16/33] Added WGS/WEX b37-decoy CEU trio datasets --- .../qscripts/MethodsDevelopmentCallingPipeline.scala | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/MethodsDevelopmentCallingPipeline.scala b/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/MethodsDevelopmentCallingPipeline.scala index 3c9a3fbcb..80bfe03d1 100755 --- a/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/MethodsDevelopmentCallingPipeline.scala +++ b/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/MethodsDevelopmentCallingPipeline.scala @@ -1,6 +1,5 @@ package org.broadinstitute.sting.queue.qscripts -import org.broadinstitute.sting.commandline.Hidden import org.broadinstitute.sting.queue.extensions.gatk._ import org.broadinstitute.sting.queue.QScript import org.broadinstitute.sting.gatk.phonehome.GATKRunReport @@ -70,7 +69,8 @@ class MethodsDevelopmentCallingPipeline extends QScript { val goldStandardClusterFile = new File(goldStandardName + ".clusters") } - val hg19 = new File("/seq/references/Homo_sapiens_assembly19/v1/Homo_sapiens_assembly19.fasta") + val b37_decoy = new File("/humgen/1kg/reference/human_g1k_v37_decoy.fasta") + val hg19 = new File("/seq/references/Homo_sapiens_assembly19/v1/Homo_sapiens_assembly19.fasta") val hg18 = new File("/seq/references/Homo_sapiens_assembly18/v0/Homo_sapiens_assembly18.fasta") val b36 = new File("/humgen/1kg/reference/human_b36_both.fasta") val b37 = new File("/humgen/1kg/reference/human_g1k_v37.fasta") @@ -124,6 +124,14 @@ class MethodsDevelopmentCallingPipeline extends QScript { new File("/humgen/gsa-hpprojects/NA12878Collection/bams/CEUTrio.HiSeq.WGS.bwa.cleaned.recal.bam"), new File("/humgen/gsa-hpprojects/dev/carneiro/trio/analysis/snps/CEUTrio.WEx.filtered.vcf"), // ** THIS GOLD STANDARD NEEDS TO BE CORRECTED ** "/humgen/1kg/processing/pipeline_test_bams/whole_genome_chunked.hg19.intervals", 2.3, 99.0, !lowPass, !exome, 3), + "WExTrioDecoy" -> new Target("CEUTrio.HiSeq.WEx.b37_decoy", b37_decoy, dbSNP_b37, hapmap_b37, indelMask_b37, + new File("/humgen/gsa-hpprojects/NA12878Collection/bams/CEUTrio.HiSeq.WEx.b37_decoy.list"), + new File("/humgen/gsa-hpprojects/dev/carneiro/trio/analysis/snps/CEUTrio.WEx.filtered.vcf"), // ** THIS GOLD STANDARD NEEDS TO BE CORRECTED ** + "/seq/references/HybSelOligos/whole_exome_agilent_1.1_refseq_plus_3_boosters/whole_exome_agilent_1.1_refseq_plus_3_boosters.Homo_sapiens_assembly19.targets.interval_list", 3.3, 98.0, !lowPass, exome, 3), + "WGSTrioDecoy" -> new Target("CEUTrio.HiSeq.WGS.b37_decoy", b37_decoy, dbSNP_b37, hapmap_b37, indelMask_b37, + new File("/humgen/gsa-hpprojects/NA12878Collection/bams/CEUTrio.HiSeq.WGS.b37_decoy.list"), + new File("/humgen/gsa-hpprojects/dev/carneiro/trio/analysis/snps/CEUTrio.WEx.filtered.vcf"), // ** THIS GOLD STANDARD NEEDS TO BE CORRECTED ** + "/humgen/1kg/processing/pipeline_test_bams/whole_genome_chunked.hg19.intervals", 2.3, 99.0, !lowPass, !exome, 3), "FIN" -> new Target("FIN", b37, dbSNP_b37, hapmap_b37, indelMask_b37, new File("/humgen/1kg/processing/pipeline_test_bams/FIN.79sample.Nov2010.chr20.bam"), new File("/humgen/gsa-hpprojects/dev/data/AugChr20Calls_v4_3state/ALL.august.v4.chr20.filtered.vcf"), // ** THIS GOLD STANDARD NEEDS TO BE CORRECTED ** From e253f6f05d793dcd41dde40d2ae30a92ff2dfa95 Mon Sep 17 00:00:00 2001 From: Mauricio Carneiro Date: Thu, 1 Sep 2011 18:13:52 -0400 Subject: [PATCH 17/33] Fixing typo in DPP platform and library were exchanged when rebuilding the read group information --- .../sting/queue/qscripts/DataProcessingPipeline.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/DataProcessingPipeline.scala b/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/DataProcessingPipeline.scala index 116d16f35..b64c715d4 100755 --- a/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/DataProcessingPipeline.scala +++ b/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/DataProcessingPipeline.scala @@ -164,7 +164,7 @@ class DataProcessingPipeline extends QScript { for (rg <- readGroups) { val intermediateInBam: File = if (index == readGroups.length) { inBam } else { swapExt(outBam, ".bam", index+1 + "-rg.bam") } val intermediateOutBam: File = if (index > 1) {swapExt(outBam, ".bam", index + "-rg.bam") } else { outBam} - val readGroup = new ReadGroup(rg.getReadGroupId, rg.getPlatform, rg.getLibrary, rg.getPlatformUnit, rg.getSample, rg.getSequencingCenter, rg.getDescription) + val readGroup = new ReadGroup(rg.getReadGroupId, rg.getLibrary, rg.getPlatform, rg.getPlatformUnit, rg.getSample, rg.getSequencingCenter, rg.getDescription) add(addReadGroup(intermediateInBam, intermediateOutBam, readGroup)) index = index - 1 } From d241f0e9031882a65b71d421cd2624513d0f46ba Mon Sep 17 00:00:00 2001 From: Eric Banks Date: Thu, 1 Sep 2011 21:57:02 -0400 Subject: [PATCH 18/33] Adding docs for the pcr error rate argument. --- .../gatk/walkers/genotyper/UnifiedArgumentCollection.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/genotyper/UnifiedArgumentCollection.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/genotyper/UnifiedArgumentCollection.java index ae419a5c4..7b8045581 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/genotyper/UnifiedArgumentCollection.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/genotyper/UnifiedArgumentCollection.java @@ -52,6 +52,11 @@ public class UnifiedArgumentCollection { @Argument(fullName = "heterozygosity", shortName = "hets", doc = "Heterozygosity value used to compute prior likelihoods for any locus", required = false) public Double heterozygosity = DiploidSNPGenotypePriors.HUMAN_HETEROZYGOSITY; + /** + * The PCR error rate is independent of the sequencing error rate, which is necessary because we cannot necessarily + * distinguish between PCR errors vs. sequencing errors. The practical implication for this value is that it + * effectively acts as a cap on the base qualities. + */ @Argument(fullName = "pcr_error_rate", shortName = "pcr_error", doc = "The PCR error rate to be used for computing fragment-based likelihoods", required = false) public Double PCR_error = DiploidSNPGenotypeLikelihoods.DEFAULT_PCR_ERROR_RATE; From 08ae6c0c61fd3f6216e2f4273cdbb72f6f40c520 Mon Sep 17 00:00:00 2001 From: Mauricio Carneiro Date: Fri, 2 Sep 2011 11:32:30 -0400 Subject: [PATCH 19/33] ReadClipper is now handling unmapped reads --- .../org/broadinstitute/sting/utils/clipreads/ClippingOp.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/java/src/org/broadinstitute/sting/utils/clipreads/ClippingOp.java b/public/java/src/org/broadinstitute/sting/utils/clipreads/ClippingOp.java index faa3cf34e..bc200372f 100644 --- a/public/java/src/org/broadinstitute/sting/utils/clipreads/ClippingOp.java +++ b/public/java/src/org/broadinstitute/sting/utils/clipreads/ClippingOp.java @@ -252,7 +252,8 @@ public class ClippingOp { if (start == 0 && stop == read.getReadLength() -1) return new SAMRecord(read.getHeader()); - CigarShift cigarShift = hardClipCigar(read.getCigar(), start, stop); + // If the read is unmapped there is no Cigar string and neither should we create a new cigar string + CigarShift cigarShift = (read.getReadUnmappedFlag()) ? new CigarShift(new Cigar(), 0, 0) : hardClipCigar(read.getCigar(), start, stop); // the cigar may force a shift left or right (or both) in case we are left with insertions // starting or ending the read after applying the hard clip on start/stop. From 28d782b4c7ba29e9a04bcef84e878ff9b3190864 Mon Sep 17 00:00:00 2001 From: Mauricio Carneiro Date: Fri, 2 Sep 2011 13:38:35 -0400 Subject: [PATCH 21/33] Allowing multiple dnsnp and indel files in the DPP --- .../queue/qscripts/DataProcessingPipeline.scala | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/DataProcessingPipeline.scala b/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/DataProcessingPipeline.scala index b0c23e6b1..2a135496d 100755 --- a/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/DataProcessingPipeline.scala +++ b/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/DataProcessingPipeline.scala @@ -11,7 +11,7 @@ import net.sf.samtools.SAMFileReader import net.sf.samtools.SAMFileHeader.SortOrder import org.broadinstitute.sting.queue.util.QScriptUtils -import org.broadinstitute.sting.queue.function.{CommandLineFunction, ListWriterFunction} +import org.broadinstitute.sting.queue.function.ListWriterFunction class DataProcessingPipeline extends QScript { qscript => @@ -31,7 +31,7 @@ class DataProcessingPipeline extends QScript { var reference: File = _ @Input(doc="dbsnp ROD to use (must be in VCF format)", fullName="dbsnp", shortName="D", required=true) - var dbSNP: File = _ + var dbSNP: List[File] = List() /**************************************************************************** * Optional Parameters @@ -43,7 +43,7 @@ class DataProcessingPipeline extends QScript { // @Input(doc="extra VCF files to use as reference indels for Indel Realignment", fullName="extra_indels", shortName="indels", required=false) - var indels: File = _ + var indels: List[File] = List() @Input(doc="The path to the binary of bwa (usually BAM files have already been mapped - but if you want to remap this is the option)", fullName="path_to_bwa", shortName="bwa", required=false) var bwaPath: File = _ @@ -321,9 +321,9 @@ class DataProcessingPipeline extends QScript { this.input_file = inBams this.out = outIntervals this.mismatchFraction = 0.0 - this.known :+= qscript.dbSNP + this.known ++= qscript.dbSNP if (indels != null) - this.known :+= qscript.indels + this.known ++= qscript.indels this.scatterCount = nContigs this.analysisName = queueLogDir + outIntervals + ".target" this.jobName = queueLogDir + outIntervals + ".target" @@ -333,9 +333,9 @@ class DataProcessingPipeline extends QScript { this.input_file = inBams this.targetIntervals = tIntervals this.out = outBam - this.known :+= qscript.dbSNP + this.known ++= qscript.dbSNP if (qscript.indels != null) - this.known :+= qscript.indels + this.known ++= qscript.indels this.consensusDeterminationModel = cleanModelEnum this.compress = 0 this.scatterCount = nContigs @@ -344,7 +344,7 @@ class DataProcessingPipeline extends QScript { } case class cov (inBam: File, outRecalFile: File) extends CountCovariates with CommandLineGATKArgs { - this.knownSites :+= qscript.dbSNP + this.knownSites ++= qscript.dbSNP this.covariate ++= List("ReadGroupCovariate", "QualityScoreCovariate", "CycleCovariate", "DinucCovariate") this.input_file :+= inBam this.recal_file = outRecalFile From 0adb388dee3abd3272dd831c76ac4fdb69769632 Mon Sep 17 00:00:00 2001 From: Khalid Shakir Date: Tue, 6 Sep 2011 12:41:46 -0400 Subject: [PATCH 22/33] Fixed bug in SelectVariants that was annotating sample_file / exclude_sample_file as @Argument instead of @Input meaning they weren't tracked in Queue. Updates for HybridSelectionPipeline: - Use VQSR on SNPs for projects using bait set whole_exome_agilent_1 and applying cut at 98.5. - If a whole_exome_agilent_1 project has less than 50 samples also mixing in 1000G samples to reach VQSR thresholds. - Updated SNP hard filters based on analysis done with ebanks to approximate VQSR results on small target batches. - Removed GSA_PRODUCTION_ONLY flag from indel caller. - Updated indel hard filters based on delangel's analysis. - Updated HybridSelectionPipelineTest to use HARD SNP filters only, for now. --- .../sting/gatk/walkers/variantutils/SelectVariants.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java index bb3cd82a1..35ff66243 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java @@ -214,7 +214,7 @@ public class SelectVariants extends RodWalker { @Argument(fullName="sample_expressions", shortName="se", doc="Regular expression to select many samples from the ROD tracks provided. Can be specified multiple times", required=false) public Set sampleExpressions ; - @Argument(fullName="sample_file", shortName="sf", doc="File containing a list of samples (one per line) to include. Can be specified multiple times", required=false) + @Input(fullName="sample_file", shortName="sf", doc="File containing a list of samples (one per line) to include. Can be specified multiple times", required=false) public Set sampleFiles; /** @@ -226,7 +226,7 @@ public class SelectVariants extends RodWalker { /** * Note that sample exclusion takes precedence over inclusion, so that if a sample is in both lists it will be excluded. */ - @Argument(fullName="exclude_sample_file", shortName="xl_sf", doc="File containing a list of samples (one per line) to exclude. Can be specified multiple times", required=false) + @Input(fullName="exclude_sample_file", shortName="xl_sf", doc="File containing a list of samples (one per line) to exclude. Can be specified multiple times", required=false) public Set XLsampleFiles = new HashSet(0); /** From 284f83469b9ad7942c369d5fbd41fc36fc34ea0c Mon Sep 17 00:00:00 2001 From: Mark DePristo Date: Tue, 6 Sep 2011 15:09:37 -0400 Subject: [PATCH 25/33] ReducedRead flag cached in GATKSAMRecord. 20% performance improvement --- .../sting/utils/pileup/PileupElement.java | 2 +- .../sting/utils/sam/GATKSAMRecord.java | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/public/java/src/org/broadinstitute/sting/utils/pileup/PileupElement.java b/public/java/src/org/broadinstitute/sting/utils/pileup/PileupElement.java index 66e1afecb..12899e898 100755 --- a/public/java/src/org/broadinstitute/sting/utils/pileup/PileupElement.java +++ b/public/java/src/org/broadinstitute/sting/utils/pileup/PileupElement.java @@ -82,7 +82,7 @@ public class PileupElement { // -------------------------------------------------------------------------- private Integer getReducedReadQualityTagValue() { - return (Integer)getRead().getAttribute(ReadUtils.REDUCED_READ_QUALITY_TAG); + return getRead().getIntegerAttribute(ReadUtils.REDUCED_READ_QUALITY_TAG); } public boolean isReducedRead() { diff --git a/public/java/src/org/broadinstitute/sting/utils/sam/GATKSAMRecord.java b/public/java/src/org/broadinstitute/sting/utils/sam/GATKSAMRecord.java index 517f9f75d..c55a462f1 100755 --- a/public/java/src/org/broadinstitute/sting/utils/sam/GATKSAMRecord.java +++ b/public/java/src/org/broadinstitute/sting/utils/sam/GATKSAMRecord.java @@ -41,6 +41,10 @@ public class GATKSAMRecord extends SAMRecord { // because some values can be null, we don't want to duplicate effort private boolean retrievedReadGroup = false; + /** A private cache for the reduced read quality. Null indicates the value hasn't be fetched yet or isn't available */ + private boolean lookedUpReducedReadQuality = false; + private Integer reducedReadQuality; + // These temporary attributes were added here to make life easier for // certain algorithms by providing a way to label or attach arbitrary data to // individual GATKSAMRecords. @@ -338,7 +342,17 @@ public class GATKSAMRecord extends SAMRecord { public Object getAttribute(final String tag) { return mRecord.getAttribute(tag); } - public Integer getIntegerAttribute(final String tag) { return mRecord.getIntegerAttribute(tag); } + public Integer getIntegerAttribute(final String tag) { + if ( tag == ReadUtils.REDUCED_READ_QUALITY_TAG ) { + if ( ! lookedUpReducedReadQuality ) { + lookedUpReducedReadQuality = true; + reducedReadQuality = mRecord.getIntegerAttribute(tag); + } + return reducedReadQuality; + } else { + return mRecord.getIntegerAttribute(tag); + } + } public Short getShortAttribute(final String tag) { return mRecord.getShortAttribute(tag); } From 3db7ecb92031496bd6474c2e0015791420284bc8 Mon Sep 17 00:00:00 2001 From: Mark DePristo Date: Tue, 6 Sep 2011 15:09:37 -0400 Subject: [PATCH 27/33] ReducedRead flag cached in GATKSAMRecord. 20% performance improvement --- .../sting/utils/pileup/PileupElement.java | 2 +- .../sting/utils/sam/GATKSAMRecord.java | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/public/java/src/org/broadinstitute/sting/utils/pileup/PileupElement.java b/public/java/src/org/broadinstitute/sting/utils/pileup/PileupElement.java index 66e1afecb..12899e898 100755 --- a/public/java/src/org/broadinstitute/sting/utils/pileup/PileupElement.java +++ b/public/java/src/org/broadinstitute/sting/utils/pileup/PileupElement.java @@ -82,7 +82,7 @@ public class PileupElement { // -------------------------------------------------------------------------- private Integer getReducedReadQualityTagValue() { - return (Integer)getRead().getAttribute(ReadUtils.REDUCED_READ_QUALITY_TAG); + return getRead().getIntegerAttribute(ReadUtils.REDUCED_READ_QUALITY_TAG); } public boolean isReducedRead() { diff --git a/public/java/src/org/broadinstitute/sting/utils/sam/GATKSAMRecord.java b/public/java/src/org/broadinstitute/sting/utils/sam/GATKSAMRecord.java index 517f9f75d..c55a462f1 100755 --- a/public/java/src/org/broadinstitute/sting/utils/sam/GATKSAMRecord.java +++ b/public/java/src/org/broadinstitute/sting/utils/sam/GATKSAMRecord.java @@ -41,6 +41,10 @@ public class GATKSAMRecord extends SAMRecord { // because some values can be null, we don't want to duplicate effort private boolean retrievedReadGroup = false; + /** A private cache for the reduced read quality. Null indicates the value hasn't be fetched yet or isn't available */ + private boolean lookedUpReducedReadQuality = false; + private Integer reducedReadQuality; + // These temporary attributes were added here to make life easier for // certain algorithms by providing a way to label or attach arbitrary data to // individual GATKSAMRecords. @@ -338,7 +342,17 @@ public class GATKSAMRecord extends SAMRecord { public Object getAttribute(final String tag) { return mRecord.getAttribute(tag); } - public Integer getIntegerAttribute(final String tag) { return mRecord.getIntegerAttribute(tag); } + public Integer getIntegerAttribute(final String tag) { + if ( tag == ReadUtils.REDUCED_READ_QUALITY_TAG ) { + if ( ! lookedUpReducedReadQuality ) { + lookedUpReducedReadQuality = true; + reducedReadQuality = mRecord.getIntegerAttribute(tag); + } + return reducedReadQuality; + } else { + return mRecord.getIntegerAttribute(tag); + } + } public Short getShortAttribute(final String tag) { return mRecord.getShortAttribute(tag); } From 9559115ad5eeff677798c21187bdd7e07700c319 Mon Sep 17 00:00:00 2001 From: Mark DePristo Date: Tue, 6 Sep 2011 16:54:01 -0400 Subject: [PATCH 28/33] Bugfix for singleton runs. Now with histograms where possible --- public/R/queueJobReport.R | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/public/R/queueJobReport.R b/public/R/queueJobReport.R index 18d33054e..a24d269c9 100644 --- a/public/R/queueJobReport.R +++ b/public/R/queueJobReport.R @@ -12,7 +12,9 @@ if ( onCMDLine ) { inputFileName = args[1] outputPDF = args[2] } else { - inputFileName = "~/Desktop/broadLocal/GATK/unstable/report.txt" + #inputFileName = "~/Desktop/broadLocal/GATK/unstable/report.txt" + inputFileName = "/humgen/gsa-hpprojects/dev/depristo/oneOffProjects/Q-25718@node1149.jobreport.txt" + #inputFileName = "/humgen/gsa-hpprojects/dev/depristo/oneOffProjects/rodPerformanceGoals/history/report.082711.txt" outputPDF = NA } @@ -113,11 +115,22 @@ plotGroup <- function(groupTable) { textplot(as.data.frame(sum), show.rownames=F) title(paste("Job summary for", name, "itemizing each iteration"), cex=3) + # histogram of job times by groupAnnotations + if ( length(groupAnnotations) == 1 && dim(sub)[1] > 1 ) { + # todo -- how do we group by annotations? + p <- ggplot(data=sub, aes(x=runtime)) + geom_histogram() + p <- p + xlab("runtime in seconds") + ylab("No. of jobs") + p <- p + opts(title=paste("Job runtime histogram for", name)) + print(p) + } + # as above, but averaging over all iterations groupAnnotationsNoIteration = setdiff(groupAnnotations, "iteration") - sum = cast(melt(sub, id.vars=groupAnnotationsNoIteration, measure.vars=c("runtime")), ... ~ ., fun.aggregate=c(mean, sd)) - textplot(as.data.frame(sum), show.rownames=F) - title(paste("Job summary for", name, "averaging over all iterations"), cex=3) + if ( dim(sub)[1] > 1 ) { + sum = cast(melt(sub, id.vars=groupAnnotationsNoIteration, measure.vars=c("runtime")), ... ~ ., fun.aggregate=c(mean, sd)) + textplot(as.data.frame(sum), show.rownames=F) + title(paste("Job summary for", name, "averaging over all iterations"), cex=3) + } } # print out some useful basic information @@ -146,7 +159,7 @@ plotJobsGantt(gatkReportData, T) plotJobsGantt(gatkReportData, F) plotProgressByTime(gatkReportData) for ( group in gatkReportData ) { - plotGroup(group) + plotGroup(group) } if ( ! is.na(outputPDF) ) { From da9c8ab38601c2fd893307869c46221cd37d68ba Mon Sep 17 00:00:00 2001 From: Eric Banks Date: Tue, 6 Sep 2011 20:39:42 -0400 Subject: [PATCH 29/33] Revving the Tribble jar where the DbsnpCodec class was renamed to OldDbsnpCodec. Updating GATK code accordingly. --- .../gatk/refdata/VariantContextAdaptors.java | 24 +++++++++--------- .../variantutils/ValidateVariants.java | 11 ++------ .../VariantsToVCFIntegrationTest.java | 2 +- .../{tribble-23.jar => tribble-24.jar} | Bin 299168 -> 299210 bytes .../{tribble-23.xml => tribble-24.xml} | 2 +- 5 files changed, 16 insertions(+), 23 deletions(-) rename settings/repository/org.broad/{tribble-23.jar => tribble-24.jar} (93%) rename settings/repository/org.broad/{tribble-23.xml => tribble-24.xml} (51%) diff --git a/public/java/src/org/broadinstitute/sting/gatk/refdata/VariantContextAdaptors.java b/public/java/src/org/broadinstitute/sting/gatk/refdata/VariantContextAdaptors.java index bf490e28c..7bf518fd5 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/refdata/VariantContextAdaptors.java +++ b/public/java/src/org/broadinstitute/sting/gatk/refdata/VariantContextAdaptors.java @@ -3,7 +3,7 @@ package org.broadinstitute.sting.gatk.refdata; import net.sf.samtools.util.SequenceUtil; import org.broad.tribble.Feature; import org.broad.tribble.annotation.Strand; -import org.broad.tribble.dbsnp.DbSNPFeature; +import org.broad.tribble.dbsnp.OldDbSNPFeature; import org.broad.tribble.gelitext.GeliTextFeature; import org.broadinstitute.sting.gatk.contexts.ReferenceContext; import org.broadinstitute.sting.utils.classloader.PluginManager; @@ -93,27 +93,27 @@ public class VariantContextAdaptors { // -------------------------------------------------------------------------------------------------------------- private static class DBSnpAdaptor implements VCAdaptor { - private static boolean isSNP(DbSNPFeature feature) { + private static boolean isSNP(OldDbSNPFeature feature) { return feature.getVariantType().contains("single") && feature.getLocationType().contains("exact"); } - private static boolean isMNP(DbSNPFeature feature) { + private static boolean isMNP(OldDbSNPFeature feature) { return feature.getVariantType().contains("mnp") && feature.getLocationType().contains("range"); } - private static boolean isInsertion(DbSNPFeature feature) { + private static boolean isInsertion(OldDbSNPFeature feature) { return feature.getVariantType().contains("insertion"); } - private static boolean isDeletion(DbSNPFeature feature) { + private static boolean isDeletion(OldDbSNPFeature feature) { return feature.getVariantType().contains("deletion"); } - private static boolean isIndel(DbSNPFeature feature) { + private static boolean isIndel(OldDbSNPFeature feature) { return isInsertion(feature) || isDeletion(feature) || isComplexIndel(feature); } - public static boolean isComplexIndel(DbSNPFeature feature) { + public static boolean isComplexIndel(OldDbSNPFeature feature) { return feature.getVariantType().contains("in-del"); } @@ -125,7 +125,7 @@ public class VariantContextAdaptors { * * @return an alternate allele list */ - public static List getAlternateAlleleList(DbSNPFeature feature) { + public static List getAlternateAlleleList(OldDbSNPFeature feature) { List ret = new ArrayList(); for (String allele : getAlleleList(feature)) if (!allele.equals(String.valueOf(feature.getNCBIRefBase()))) ret.add(allele); @@ -139,7 +139,7 @@ public class VariantContextAdaptors { * * @return an alternate allele list */ - public static List getAlleleList(DbSNPFeature feature) { + public static List getAlleleList(OldDbSNPFeature feature) { List alleleList = new ArrayList(); // add ref first if ( feature.getStrand() == Strand.POSITIVE ) @@ -156,14 +156,14 @@ public class VariantContextAdaptors { /** * Converts non-VCF formatted dbSNP records to VariantContext. - * @return DbSNPFeature. + * @return OldDbSNPFeature. */ @Override - public Class getAdaptableFeatureType() { return DbSNPFeature.class; } + public Class getAdaptableFeatureType() { return OldDbSNPFeature.class; } @Override public VariantContext convert(String name, Object input, ReferenceContext ref) { - DbSNPFeature dbsnp = (DbSNPFeature)input; + OldDbSNPFeature dbsnp = (OldDbSNPFeature)input; if ( ! Allele.acceptableAlleleBases(dbsnp.getNCBIRefBase()) ) return null; Allele refAllele = Allele.create(dbsnp.getNCBIRefBase(), true); diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/ValidateVariants.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/ValidateVariants.java index c0f695966..2c7902914 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/ValidateVariants.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/ValidateVariants.java @@ -26,7 +26,6 @@ package org.broadinstitute.sting.gatk.walkers.variantutils; import org.broad.tribble.TribbleException; -import org.broad.tribble.dbsnp.DbSNPFeature; import org.broadinstitute.sting.commandline.*; import org.broadinstitute.sting.gatk.arguments.DbsnpArgumentCollection; import org.broadinstitute.sting.gatk.arguments.StandardVariantContextInputArgumentCollection; @@ -41,7 +40,6 @@ import org.broadinstitute.sting.utils.variantcontext.VariantContext; import java.io.File; import java.util.Collection; import java.util.HashSet; -import java.util.List; import java.util.Set; @@ -168,14 +166,9 @@ public class ValidateVariants extends RodWalker { // get the RS IDs Set rsIDs = null; if ( tracker.hasValues(dbsnp.dbsnp) ) { - List dbsnpList = tracker.getValues(dbsnp.dbsnp, ref.getLocus()); rsIDs = new HashSet(); - for ( Object d : dbsnpList ) { - if (d instanceof DbSNPFeature ) - rsIDs.add(((DbSNPFeature)d).getRsID()); - else if (d instanceof VariantContext ) - rsIDs.add(((VariantContext)d).getID()); - } + for ( VariantContext rsID : tracker.getValues(dbsnp.dbsnp, ref.getLocus()) ) + rsIDs.add(rsID.getID()); } try { diff --git a/public/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToVCFIntegrationTest.java b/public/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToVCFIntegrationTest.java index e740acf05..95fafac8d 100755 --- a/public/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToVCFIntegrationTest.java +++ b/public/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToVCFIntegrationTest.java @@ -23,7 +23,7 @@ public class VariantsToVCFIntegrationTest extends WalkerTest { WalkerTest.WalkerTestSpec spec = new WalkerTest.WalkerTestSpec( "-R " + b36KGReference + - " --variant:dbsnp " + GATKDataLocation + "Comparisons/Validated/dbSNP/dbsnp_129_b36.rod" + + " --variant:OldDbsnp " + GATKDataLocation + "Comparisons/Validated/dbSNP/dbsnp_129_b36.rod" + " -T VariantsToVCF" + " -L 1:1-30,000,000" + " -o %s" + diff --git a/settings/repository/org.broad/tribble-23.jar b/settings/repository/org.broad/tribble-24.jar similarity index 93% rename from settings/repository/org.broad/tribble-23.jar rename to settings/repository/org.broad/tribble-24.jar index 40e2d4c5ec85a3fd0c7f14b55a1d0ba3c283c217..b1c39e60a14ce895e515cadb07c356d6d428bbc4 100644 GIT binary patch delta 5617 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 UATL-~O|&*f+C5?teHVoP0cy%BZ~y=R delta 5613 zcmZu#2Ut|s629fIEM=*JG}%RB0c=>1D1t`pQ9-OA0#*d0h*7}?b_FSVmGNm3H8DPn zis&ZU7<)4 zH%umuf}j_KZx$Oj8rsXX^e1wg+~fVgjkQMn`LzxEQH)|o_G=y~W=lA5PW}@I&Jhz1 zn19kO6LBP6-$zEJ+{u%VoN)e?k9^{`iyKe$>@T@fzL<*mxXrs|L15BLNlW%pPI2W&)dpeu?tPN$K0~QBQb$};o}`q(M9dyGzX(+ zqKVmm;1zXxFABUs>say7_cTnhwJ(P8wXd!c`Df zxI%cgh;hvEWlf^8e&LIZ5AVgA4{wc^M0dr0d#ROD4YzY;fa3j2fVqCV9$yav21>y& zXExFMG`9$=iNEWD{oi>B!gpRu)-jWL(w=U5vA2>|K_4r0RP4+jRje0nNhVh6u_oqe z#|rH++f7PT&<=Y+*kO-FWieWryPez1XXW zkMcnarJ~l?>{Q!{_dwLusi?sHAQG&UR5~a%*ZGXyxc(K-<4jIa)i;JC5Ynv_p$A@X)Tqs82(6B=BDOSlcc(ZsKyU^nNuGj8@j$xmN09KyB}4=`cXkQN%z9W$0qDyjns)3-c&33^X#L) zm->r1b?M!_JvY#GyulIjn?xVz+aUQ`PW>S5#=f%5sF&Wst;C{ll&;8_*r~M9k4x+X zfk`ALMxFfNRFkB$wE11y!GrzlnG_zziUv&~a#yTgmr(h84z}zf7YE^3dAxjwk8Kzy zpXW25m@0eop!256_AY3*G+R!@Wn{UQD}Tdh*}Pib#?y=|m8Wo)kGIHQ@`hUr@_TJC zfsV)JYe?dFLayd!*UrjyIvhJ*B|qjxF<+DWxMER)lFENsM$e69dcKb9s$>_~S3q3h zk1E;05_M0`Bf z$wSB)SDdMO#{nxn=(=Rm6_!tx{h)6sArN;%cDJNVAgy_XRf*(PWIL5ehU-|jf?FDi zWalLeOCvE1gQ7Ij8I_Z11Q!GRnnwEINYBY+94Z?plcA{GnoLHb(q#%6h05wFBo39U zQ%F229j267j{Im<5~h)9IC69vNkhdrous2uFr7?Ct5Ptl?jx5sBL@OB6e3l79sL=ekd%3PmIpl@s83esS z0@1n|7X&}sgPZV6zl-mKIGY5(;x~vhnl_(Xg3!TcO0ONu^?T4%nY70vEN+-6wUFsj zr;W|hxmd7eVJtnYm}tGam(3=<@in7o6MyN=nMYBmDj&5h873Vp1YK=PLjc6hC3uWN@?6UEPd4bMXQG28+d6QBtoX(;89-=qgutJX*)Hv7X>)Yw=Qc5xng1|)EL@mL6fx4$mTEL?0Vy>N` z?mf{C4lYpr$L1V;^28_zOuA`8c|zR+@|uxeFJe00xg;#4=Nps$8l&;hZy_0FVn&}1 zJDl*PyC5*>r!nesg-5QxMCn|#Sh$eS<17eF5;UffYq{yErF1Kuw3M_%`=l%F^CwVS zCea%EoXs|S{DuQI@nT1CTShwJ`tC;qiy7>>HI(j_+@NF`F`4MfkGZZ3-=9QR2a_He z(v$;?GzjXc6E3Ej?jPLzkRAX`Mrlk95S~ZU&`5I=)fk1tp*%7iTUN}cQ{Y*x^8Z_M zg1l-vMRED+6k*>kui-DnuBq_0723~SPpDApa^eM@E=nexUEH4i&VF*_f{P$9>8^?Y z@G|G4PVF#@g5{LT@I4=`Y>+&mcDdTr_ZXD$gAMWkdd+o#4C_`Jzk=cs^(vvg>;q%z zn!^MZTx@)E4ZYkkiO?i)<%w$lKiZRaE7eebD=F2X-#C=-A^Sq670PE&*)tB&GPuJR zR_GRkszRXeD&pJWr4CC-CyD+gzj)!O*dsGVH(Dyam+UmDw1Re_+Yh4dvZ0U z4N1k9D4Q&|f*q-{4oqv+eg2mBm>!?ewq(*yL-*QLtB)hhSfjEnSwq=g&qf3u&ZkVD zSfOeL?ak#-{!+PR^Q(1UOQ993ZIH84de9k`(l^HMVM} zO{@KrH38-#dV^-tR%5?{g2G?znO_Mhy8o3rYSS&sGxl_h zNd<#8RH@0_mffMz>g8C#YIjW~EFdB1FpG_z`Pt^+z`lm?!x_F{P*H;#=85cqTtV!l zZvG~Exp!px5z=oJ@d26_U4n&b%6Wy9bf3KyE0?{X%8K2ln6$_f+=}SE!MK6=Vq(2F z(9zD`eDpye(cvP*X`b}d2>a+&hKcq{(bV>s@ z#uz6Kc+ue40OAZy>xnbcei3(m&@%eZI3`-!4ntn_s;{H8TT4{h10|I9(fDQq{{0E` r`%?$cO4Q@QP)e;55>=~`QeqE7OI2(F!%AMj!W|FL8NHcG3nu&@8D?cG diff --git a/settings/repository/org.broad/tribble-23.xml b/settings/repository/org.broad/tribble-24.xml similarity index 51% rename from settings/repository/org.broad/tribble-23.xml rename to settings/repository/org.broad/tribble-24.xml index 2f6a16a03..9b2b967f8 100644 --- a/settings/repository/org.broad/tribble-23.xml +++ b/settings/repository/org.broad/tribble-24.xml @@ -1,3 +1,3 @@ - + From 1ef8a1750a4821cdafd109b63dd83e62b873b68e Mon Sep 17 00:00:00 2001 From: Eric Banks Date: Tue, 6 Sep 2011 21:07:49 -0400 Subject: [PATCH 30/33] I asked nicely and got nothing. Then I threatened and still got nothing. So I am carrying through on my threats. Guillermo, you have a short reprieve because you were away on vacation, but let's get yours done tomorrow afternoon. --- .../sting/gatk/walkers/coverage/DepthOfCoverageWalker.java | 3 +++ .../gatk/walkers/indels/SomaticIndelDetectorWalker.java | 5 +++++ .../sting/gatk/walkers/validation/ValidationAmplicons.java | 3 +++ 3 files changed, 11 insertions(+) diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/coverage/DepthOfCoverageWalker.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/coverage/DepthOfCoverageWalker.java index 7fe16c9df..4537f06f8 100644 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/coverage/DepthOfCoverageWalker.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/coverage/DepthOfCoverageWalker.java @@ -60,6 +60,9 @@ import java.util.*; * and/or percentage of bases covered to or beyond a threshold. * Additionally, reads and bases can be filtered by mapping or base quality score. * + * If any of the command-line arguments for this tool are not clear to you, + * please email chartl at broadinstitute dot org and he will gladly explain them in more detail. + * *

Input

*

* One or more bam files (with proper headers) to be analyzed for coverage statistics diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/indels/SomaticIndelDetectorWalker.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/indels/SomaticIndelDetectorWalker.java index 546bbe1a6..e5ad3106d 100644 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/indels/SomaticIndelDetectorWalker.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/indels/SomaticIndelDetectorWalker.java @@ -77,6 +77,11 @@ import java.util.*; * if even a weak evidence for the same indel, not necessarily a confident call, exists in the first sample ("Normal"), or as somatic * if first bam has coverage at the site but no indication for an indel. In the --somatic mode, BED output contains * only somatic calls, while --verbose output contains all calls annotated with GERMLINE/SOMATIC keywords. + * + * If any of the general usage of this tool or any of the command-line arguments for this tool are not clear to you, + * please email asivache at broadinstitute dot org and he will gladly explain everything in more detail. + * + * */ @ReadFilters({Platform454Filter.class, MappingQualityZeroFilter.class, PlatformUnitFilter.class}) public class SomaticIndelDetectorWalker extends ReadWalker { diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/validation/ValidationAmplicons.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/validation/ValidationAmplicons.java index f9bd019ea..178b4c177 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/validation/ValidationAmplicons.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/validation/ValidationAmplicons.java @@ -39,6 +39,9 @@ import java.util.List; * reasons why the site may fail validation (nearby variation, for example). *

* + * If any of the command-line arguments for this tool are not clear to you, + * please email chartl at broadinstitute dot org and he will gladly explain them in more detail. + * *

Input

*

* Requires a VCF containing alleles to design amplicons towards, a VCF of variants to mask out of the amplicons, and an From 436f6eb52ba9a279a6c3af63749bfe92ad4e925c Mon Sep 17 00:00:00 2001 From: Christopher Hartl Date: Wed, 7 Sep 2011 08:53:30 -0400 Subject: [PATCH 31/33] Reverting Eric's change and pushing in some command-line-option documentation. --- .../coverage/DepthOfCoverageWalker.java | 45 +++++++++++++++++-- .../validation/ValidationAmplicons.java | 19 +++++--- 2 files changed, 54 insertions(+), 10 deletions(-) diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/coverage/DepthOfCoverageWalker.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/coverage/DepthOfCoverageWalker.java index 4537f06f8..3a18fe610 100644 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/coverage/DepthOfCoverageWalker.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/coverage/DepthOfCoverageWalker.java @@ -60,9 +60,6 @@ import java.util.*; * and/or percentage of bases covered to or beyond a threshold. * Additionally, reads and bases can be filtered by mapping or base quality score. * - * If any of the command-line arguments for this tool are not clear to you, - * please email chartl at broadinstitute dot org and he will gladly explain them in more detail. - * *

Input

*

* One or more bam files (with proper headers) to be analyzed for coverage statistics @@ -108,10 +105,19 @@ public class DepthOfCoverageWalker extends LocusWalker out; + /** + * Sets the low-coverage cutoff for granular binning. All loci with depth < START are counted in the first bin. + */ @Argument(fullName = "start", doc = "Starting (left endpoint) for granular binning", required = false) int start = 1; + /** + * Sets the high-coverage cutoff for granular binning. All loci with depth > END are counted in the last bin. + */ @Argument(fullName = "stop", doc = "Ending (right endpoint) for granular binning", required = false) int stop = 500; + /** + * Sets the number of bins for granular binning + */ @Argument(fullName = "nBins", doc = "Number of bins to use for granular binning", required = false) int nBins = 499; @Argument(fullName = "minMappingQuality", shortName = "mmq", doc = "Minimum mapping quality of reads to count towards depth. Defaults to -1.", required = false) @@ -122,28 +128,59 @@ public class DepthOfCoverageWalker extends LocusWalker partitionTypes = EnumSet.of(DoCOutputType.Partition.sample); + /** + * Consider a spanning deletion as contributing to coverage. Also enables deletion counts in per-base output. + */ @Argument(fullName = "includeDeletions", shortName = "dels", doc = "Include information on deletions", required = false) boolean includeDeletions = false; @Argument(fullName = "ignoreDeletionSites", doc = "Ignore sites consisting only of deletions", required = false) boolean ignoreDeletionSites = false; + + /** + * Path to the RefSeq file for use in aggregating coverage statistics over genes + */ @Argument(fullName = "calculateCoverageOverGenes", shortName = "geneList", doc = "Calculate the coverage statistics over this list of genes. Currently accepts RefSeq.", required = false) File refSeqGeneList = null; + /** + * The format of the output file + */ @Argument(fullName = "outputFormat", doc = "the format of the output file (e.g. csv, table, rtable); defaults to r-readable table", required = false) String outputFormat = "rtable"; + /** + * A coverage threshold for summarizing (e.g. % bases >= CT for each sample) + */ @Argument(fullName = "summaryCoverageThreshold", shortName = "ct", doc = "for summary file outputs, report the % of bases coverd to >= this number. Defaults to 15; can take multiple arguments.", required = false) int[] coverageThresholds = {15}; @@ -966,4 +1003,4 @@ class CoveragePartitioner { public Map> getIdentifiersByType() { return identifiersByType; } -} \ No newline at end of file +} diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/validation/ValidationAmplicons.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/validation/ValidationAmplicons.java index 178b4c177..01e8cd321 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/validation/ValidationAmplicons.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/validation/ValidationAmplicons.java @@ -39,9 +39,6 @@ import java.util.List; * reasons why the site may fail validation (nearby variation, for example). *

* - * If any of the command-line arguments for this tool are not clear to you, - * please email chartl at broadinstitute dot org and he will gladly explain them in more detail. - * *

Input

*

* Requires a VCF containing alleles to design amplicons towards, a VCF of variants to mask out of the amplicons, and an @@ -96,20 +93,30 @@ import java.util.List; */ @Requires(value={DataSource.REFERENCE}) public class ValidationAmplicons extends RodWalker { + /** + * A Table-formatted file listing amplicon contig, start, stop, and a name for the amplicon (or probe) + */ @Input(fullName = "ProbeIntervals", doc="A collection of intervals in table format with optional names that represent the "+ "intervals surrounding the probe sites amplicons should be designed for", required=true) RodBinding probeIntervals; - + /** + * A VCF file containing the bi-allelic sites for validation. Filtered records will prompt a warning, and will be flagged as filtered in the output fastq. + */ @Input(fullName = "ValidateAlleles", doc="A VCF containing the sites and alleles you want to validate. Restricted to *BI-Allelic* sites", required=true) RodBinding validateAlleles; - + /** + * A VCF file containing variants to be masked. A mask variant overlapping a validation site will be ignored at the validation site. + */ @Input(fullName = "MaskAlleles", doc="A VCF containing the sites you want to MASK from the designed amplicon (e.g. by Ns or lower-cased bases)", required=true) RodBinding maskAlleles; - @Argument(doc="Lower case SNPs rather than replacing with 'N'",fullName="lowerCaseSNPs",required=false) boolean lowerCaseSNPs = false; + /** + * BWA single-end alignment is used as a primer specificity proxy. Low-complexity regions (that don't align back to themselves as a best hit) are lowercased. + * This changes the size of the k-mer used for alignment. + */ @Argument(doc="Size of the virtual primer to use for lower-casing regions with low specificity",fullName="virtualPrimerSize",required=false) int virtualPrimerSize = 20; From 2f4cf82e3ba07884714b7f4911a005162ba12989 Mon Sep 17 00:00:00 2001 From: Mark DePristo Date: Wed, 7 Sep 2011 10:43:53 -0400 Subject: [PATCH 32/33] VariantEval cleanup. Added VariantType Stratification -- ArrayList are List where possible -- states refactored into VariantStratifier base class (reduces many lines of duplicate code) -- Added VariantType stratification that partitions report by VariantContext.Type --- .../varianteval/VariantEvalWalker.java | 7 +-- .../stratifications/AlleleCount.java | 15 +++--- .../stratifications/AlleleFrequency.java | 16 +++--- .../varianteval/stratifications/CompRod.java | 13 +++-- .../varianteval/stratifications/Contig.java | 14 ++---- .../varianteval/stratifications/CpG.java | 10 +--- .../stratifications/Degeneracy.java | 12 ++--- .../varianteval/stratifications/EvalRod.java | 12 ++--- .../varianteval/stratifications/Filter.java | 14 ++---- .../stratifications/FunctionalClass.java | 13 ++--- .../stratifications/JexlExpression.java | 14 +++--- .../varianteval/stratifications/Novelty.java | 15 +++--- .../varianteval/stratifications/Sample.java | 27 +++++----- .../stratifications/VariantStratifier.java | 13 +++-- .../stratifications/VariantType.java | 49 +++++++++++++++++++ .../varianteval/util/VariantEvalUtils.java | 15 +++--- 16 files changed, 139 insertions(+), 120 deletions(-) create mode 100644 public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/VariantType.java diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/VariantEvalWalker.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/VariantEvalWalker.java index 613a31ed3..fe4729bdc 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/VariantEvalWalker.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/VariantEvalWalker.java @@ -122,9 +122,6 @@ public class VariantEvalWalker extends RodWalker implements Tr @Argument(fullName="doNotUseAllStandardStratifications", shortName="noST", doc="Do not use the standard stratification modules by default (instead, only those that are specified with the -S option)", required=false) protected Boolean NO_STANDARD_STRATIFICATIONS = false; - @Argument(fullName="onlyVariantsOfType", shortName="VT", doc="If provided, only variants of these types will be considered during the evaluation, in ", required=false) - protected Set typesToUse = null; - /** * See the -list argument to view available modules. */ @@ -317,9 +314,9 @@ public class VariantEvalWalker extends RodWalker implements Tr // find the comp final VariantContext comp = findMatchingComp(eval, compSet); - HashMap> stateMap = new HashMap>(); + HashMap> stateMap = new HashMap>(); for ( VariantStratifier vs : stratificationObjects ) { - ArrayList states = vs.getRelevantStates(ref, tracker, comp, compRod.getName(), eval, evalRod.getName(), sampleName); + List states = vs.getRelevantStates(ref, tracker, comp, compRod.getName(), eval, evalRod.getName(), sampleName); stateMap.put(vs, states); } diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/AlleleCount.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/AlleleCount.java index 5cdea4e00..3cc22cc52 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/AlleleCount.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/AlleleCount.java @@ -10,10 +10,13 @@ import org.broadinstitute.sting.utils.variantcontext.VariantContext; import java.util.ArrayList; import java.util.List; +/** + * Stratifies the eval RODs by the allele count of the alternate allele + * + * Looks at the AC value in the INFO field, and uses that value if present. If absent, + * computes the AC from the genotypes themselves. For no AC can be computed, 0 is used. + */ public class AlleleCount extends VariantStratifier { - // needs to know the variant context - private ArrayList states = new ArrayList(); - @Override public void initialize() { List> evals = getVariantEvalWalker().getEvals(); @@ -35,11 +38,7 @@ public class AlleleCount extends VariantStratifier { getVariantEvalWalker().getLogger().info("AlleleCount using " + nchrom + " chromosomes"); } - public ArrayList getAllStates() { - return states; - } - - public ArrayList getRelevantStates(ReferenceContext ref, RefMetaDataTracker tracker, VariantContext comp, String compName, VariantContext eval, String evalName, String sampleName) { + public List getRelevantStates(ReferenceContext ref, RefMetaDataTracker tracker, VariantContext comp, String compName, VariantContext eval, String evalName, String sampleName) { ArrayList relevantStates = new ArrayList(1); if (eval != null) { diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/AlleleFrequency.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/AlleleFrequency.java index 96d9f30ec..3d2dda651 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/AlleleFrequency.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/AlleleFrequency.java @@ -6,11 +6,15 @@ import org.broadinstitute.sting.utils.MathUtils; import org.broadinstitute.sting.utils.variantcontext.VariantContext; import java.util.ArrayList; +import java.util.List; +/** + * Stratifies the eval RODs by the allele frequency of the alternate allele + * + * Uses a constant 0.005 frequency grid, and projects the AF INFO field value. Requires + * that AF be present in every ROD, otherwise this stratification throws an exception + */ public class AlleleFrequency extends VariantStratifier { - // needs to know the variant context - private ArrayList states; - @Override public void initialize() { states = new ArrayList(); @@ -19,11 +23,7 @@ public class AlleleFrequency extends VariantStratifier { } } - public ArrayList getAllStates() { - return states; - } - - public ArrayList getRelevantStates(ReferenceContext ref, RefMetaDataTracker tracker, VariantContext comp, String compName, VariantContext eval, String evalName, String sampleName) { + public List getRelevantStates(ReferenceContext ref, RefMetaDataTracker tracker, VariantContext comp, String compName, VariantContext eval, String evalName, String sampleName) { ArrayList relevantStates = new ArrayList(); if (eval != null) { diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/CompRod.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/CompRod.java index 9f4123589..1f31ebfa7 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/CompRod.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/CompRod.java @@ -6,22 +6,21 @@ import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; import org.broadinstitute.sting.utils.variantcontext.VariantContext; import java.util.ArrayList; +import java.util.List; + +/** + * Required stratification grouping output by each comp ROD + */ public class CompRod extends VariantStratifier implements RequiredStratification { - private ArrayList states; - @Override public void initialize() { - states = new ArrayList(); for ( RodBinding rod : getVariantEvalWalker().getComps() ) states.add(rod.getName()); } - public ArrayList getAllStates() { - return states; - } - public ArrayList getRelevantStates(ReferenceContext ref, RefMetaDataTracker tracker, VariantContext comp, String compName, VariantContext eval, String evalName, String sampleName) { + public List getRelevantStates(ReferenceContext ref, RefMetaDataTracker tracker, VariantContext comp, String compName, VariantContext eval, String evalName, String sampleName) { ArrayList relevantStates = new ArrayList(); relevantStates.add(compName); diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/Contig.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/Contig.java index e12a1ba97..c45a73231 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/Contig.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/Contig.java @@ -5,23 +5,19 @@ import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; import org.broadinstitute.sting.utils.variantcontext.VariantContext; import java.util.ArrayList; +import java.util.List; +/** + * Stratifies the evaluation by each contig in the reference sequence + */ public class Contig extends VariantStratifier { - // needs to know the variant context - private ArrayList states; - @Override public void initialize() { - states = new ArrayList(); states.addAll(getVariantEvalWalker().getContigNames()); states.add("all"); } - public ArrayList getAllStates() { - return states; - } - - public ArrayList getRelevantStates(ReferenceContext ref, RefMetaDataTracker tracker, VariantContext comp, String compName, VariantContext eval, String evalName, String sampleName) { + public List getRelevantStates(ReferenceContext ref, RefMetaDataTracker tracker, VariantContext comp, String compName, VariantContext eval, String evalName, String sampleName) { ArrayList relevantStates = new ArrayList(); if (eval != null) { diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/CpG.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/CpG.java index ff49c8ba9..539cd21ef 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/CpG.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/CpG.java @@ -5,6 +5,7 @@ import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; import org.broadinstitute.sting.utils.variantcontext.VariantContext; import java.util.ArrayList; +import java.util.List; /** * CpG is a stratification module for VariantEval that divides the input data by within/not within a CpG site @@ -19,21 +20,14 @@ import java.util.ArrayList; * A CpG site is defined as a site where the reference base at a locus is a C and the adjacent reference base in the 3' direction is a G. */ public class CpG extends VariantStratifier { - private ArrayList states; - @Override public void initialize() { - states = new ArrayList(); states.add("all"); states.add("CpG"); states.add("non_CpG"); } - public ArrayList getAllStates() { - return states; - } - - public ArrayList getRelevantStates(ReferenceContext ref, RefMetaDataTracker tracker, VariantContext comp, String compName, VariantContext eval, String evalName, String sampleName) { + public List getRelevantStates(ReferenceContext ref, RefMetaDataTracker tracker, VariantContext comp, String compName, VariantContext eval, String evalName, String sampleName) { boolean isCpG = false; if (ref != null && ref.getBases() != null) { String fwRefBases = new String(ref.getBases()); diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/Degeneracy.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/Degeneracy.java index cc878e975..3223626c0 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/Degeneracy.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/Degeneracy.java @@ -7,10 +7,12 @@ import org.broadinstitute.sting.utils.variantcontext.VariantContext; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; +import java.util.List; +/** + * Experimental stratification by the degeneracy of an amino acid, according to VCF annotation. Not safe + */ public class Degeneracy extends VariantStratifier { - private ArrayList states; - private HashMap> degeneracies; @Override @@ -77,11 +79,7 @@ public class Degeneracy extends VariantStratifier { } } - public ArrayList getAllStates() { - return states; - } - - public ArrayList getRelevantStates(ReferenceContext ref, RefMetaDataTracker tracker, VariantContext comp, String compName, VariantContext eval, String evalName, String sampleName) { + public List getRelevantStates(ReferenceContext ref, RefMetaDataTracker tracker, VariantContext comp, String compName, VariantContext eval, String evalName, String sampleName) { ArrayList relevantStates = new ArrayList(); relevantStates.add("all"); diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/EvalRod.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/EvalRod.java index 0bfecee25..e276adc32 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/EvalRod.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/EvalRod.java @@ -6,10 +6,12 @@ import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; import org.broadinstitute.sting.utils.variantcontext.VariantContext; import java.util.ArrayList; +import java.util.List; +/** + * Required stratification grouping output by each eval ROD + */ public class EvalRod extends VariantStratifier implements RequiredStratification { - private ArrayList states; - @Override public void initialize() { states = new ArrayList(); @@ -17,11 +19,7 @@ public class EvalRod extends VariantStratifier implements RequiredStratification states.add(rod.getName()); } - public ArrayList getAllStates() { - return states; - } - - public ArrayList getRelevantStates(ReferenceContext ref, RefMetaDataTracker tracker, VariantContext comp, String compName, VariantContext eval, String evalName, String sampleName) { + public List getRelevantStates(ReferenceContext ref, RefMetaDataTracker tracker, VariantContext comp, String compName, VariantContext eval, String evalName, String sampleName) { ArrayList relevantStates = new ArrayList(); relevantStates.add(evalName); diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/Filter.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/Filter.java index 3e3cbc224..aacfae993 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/Filter.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/Filter.java @@ -5,24 +5,20 @@ import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; import org.broadinstitute.sting.utils.variantcontext.VariantContext; import java.util.ArrayList; +import java.util.List; +/** + * Stratifies by the FILTER status (PASS, FAIL) of the eval records + */ public class Filter extends VariantStratifier { - // needs to know the variant context - private ArrayList states; - @Override public void initialize() { - states = new ArrayList(); states.add("called"); states.add("filtered"); states.add("raw"); } - public ArrayList getAllStates() { - return states; - } - - public ArrayList getRelevantStates(ReferenceContext ref, RefMetaDataTracker tracker, VariantContext comp, String compName, VariantContext eval, String evalName, String sampleName) { + public List getRelevantStates(ReferenceContext ref, RefMetaDataTracker tracker, VariantContext comp, String compName, VariantContext eval, String evalName, String sampleName) { ArrayList relevantStates = new ArrayList(); relevantStates.add("raw"); diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/FunctionalClass.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/FunctionalClass.java index 0de871fe6..193a65591 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/FunctionalClass.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/FunctionalClass.java @@ -5,25 +5,22 @@ import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; import org.broadinstitute.sting.utils.variantcontext.VariantContext; import java.util.ArrayList; +import java.util.List; +/** + * Stratifies by nonsense, missense, silent, and all annotations in the input ROD, from the INFO field annotation. + */ public class FunctionalClass extends VariantStratifier { - // needs to know the variant context - private ArrayList states; - @Override public void initialize() { - states = new ArrayList(); states.add("all"); states.add("silent"); states.add("missense"); states.add("nonsense"); } - public ArrayList getAllStates() { - return states; - } - public ArrayList getRelevantStates(ReferenceContext ref, RefMetaDataTracker tracker, VariantContext comp, String compName, VariantContext eval, String evalName, String sampleName) { + public List getRelevantStates(ReferenceContext ref, RefMetaDataTracker tracker, VariantContext comp, String compName, VariantContext eval, String evalName, String sampleName) { ArrayList relevantStates = new ArrayList(); relevantStates.add("all"); diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/JexlExpression.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/JexlExpression.java index 59b991c4d..c0cab4534 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/JexlExpression.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/JexlExpression.java @@ -6,30 +6,30 @@ import org.broadinstitute.sting.gatk.walkers.varianteval.util.SortableJexlVCMatc import org.broadinstitute.sting.utils.variantcontext.VariantContext; import org.broadinstitute.sting.utils.variantcontext.VariantContextUtils; +import java.util.List; import java.util.ArrayList; import java.util.Set; +/** + * Stratifies the eval RODs by user-supplied JEXL expressions + * + * See http://www.broadinstitute.org/gsa/wiki/index.php/Using_JEXL_expressions for more details + */ public class JexlExpression extends VariantStratifier implements StandardStratification { // needs to know the jexl expressions private Set jexlExpressions; - private ArrayList states; @Override public void initialize() { jexlExpressions = getVariantEvalWalker().getJexlExpressions(); - states = new ArrayList(); states.add("none"); for ( SortableJexlVCMatchExp jexlExpression : jexlExpressions ) { states.add(jexlExpression.name); } } - public ArrayList getAllStates() { - return states; - } - - public ArrayList getRelevantStates(ReferenceContext ref, RefMetaDataTracker tracker, VariantContext comp, String compName, VariantContext eval, String evalName, String sampleName) { + public List getRelevantStates(ReferenceContext ref, RefMetaDataTracker tracker, VariantContext comp, String compName, VariantContext eval, String evalName, String sampleName) { ArrayList relevantStates = new ArrayList(); relevantStates.add("none"); diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/Novelty.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/Novelty.java index a3810a4c0..77d98d33b 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/Novelty.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/Novelty.java @@ -7,32 +7,31 @@ import org.broadinstitute.sting.utils.variantcontext.VariantContext; import java.util.*; +/** + * Stratifies by whether a site in in the list of known RODs (e.g., dbsnp by default) + */ public class Novelty extends VariantStratifier implements StandardStratification { // needs the variant contexts and known names private List> knowns; - final private ArrayList states = new ArrayList(Arrays.asList("all", "known", "novel")); @Override public void initialize() { + states = new ArrayList(Arrays.asList("all", "known", "novel")); knowns = getVariantEvalWalker().getKnowns(); } - public ArrayList getAllStates() { - return states; - } - - public ArrayList getRelevantStates(ReferenceContext ref, RefMetaDataTracker tracker, VariantContext comp, String compName, VariantContext eval, String evalName, String sampleName) { + public List getRelevantStates(ReferenceContext ref, RefMetaDataTracker tracker, VariantContext comp, String compName, VariantContext eval, String evalName, String sampleName) { if (tracker != null && eval != null) { final Collection knownComps = tracker.getValues(knowns, ref.getLocus()); for ( final VariantContext c : knownComps ) { // loop over sites, looking for something that matches the type eval if ( eval.getType() == c.getType() ) { - return new ArrayList(Arrays.asList("all", "known")); + return Arrays.asList("all", "known"); } } } - return new ArrayList(Arrays.asList("all", "novel")); + return Arrays.asList("all", "novel"); } } diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/Sample.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/Sample.java index b714fa291..c697b5b7a 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/Sample.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/Sample.java @@ -4,26 +4,23 @@ import org.broadinstitute.sting.gatk.contexts.ReferenceContext; import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; import org.broadinstitute.sting.utils.variantcontext.VariantContext; -import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +/** + * Stratifies the eval RODs by each sample in the eval ROD. + * + * This allows the system to analyze each sample separately. Since many evaluations + * only consider non-reference sites, stratifying by sample results in meaningful + * calculations for CompOverlap + */ public class Sample extends VariantStratifier { - // needs the sample names - private ArrayList samples; - @Override public void initialize() { - samples = new ArrayList(); - samples.addAll(getVariantEvalWalker().getSampleNamesForStratification()); + states.addAll(getVariantEvalWalker().getSampleNamesForStratification()); } - public ArrayList getAllStates() { - return samples; - } - - public ArrayList getRelevantStates(ReferenceContext ref, RefMetaDataTracker tracker, VariantContext comp, String compName, VariantContext eval, String evalName, String sampleName) { - ArrayList relevantStates = new ArrayList(); - relevantStates.add(sampleName); - - return relevantStates; + public List getRelevantStates(ReferenceContext ref, RefMetaDataTracker tracker, VariantContext comp, String compName, VariantContext eval, String evalName, String sampleName) { + return Arrays.asList(sampleName); } } diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/VariantStratifier.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/VariantStratifier.java index df6523207..5cae2fb15 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/VariantStratifier.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/VariantStratifier.java @@ -6,9 +6,12 @@ import org.broadinstitute.sting.gatk.walkers.varianteval.VariantEvalWalker; import org.broadinstitute.sting.utils.variantcontext.VariantContext; import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; public abstract class VariantStratifier implements Comparable { private VariantEvalWalker variantEvalWalker; + protected ArrayList states = new ArrayList(); /** * @return a reference to the parent VariantEvalWalker running this stratification @@ -27,15 +30,15 @@ public abstract class VariantStratifier implements Comparable { public abstract void initialize(); - public ArrayList getAllStates() { - return new ArrayList(); - } - - public ArrayList getRelevantStates(ReferenceContext ref, RefMetaDataTracker tracker, VariantContext comp, String compName, VariantContext eval, String evalName, String sampleName) { + public List getRelevantStates(ReferenceContext ref, RefMetaDataTracker tracker, VariantContext comp, String compName, VariantContext eval, String evalName, String sampleName) { return null; } public int compareTo(Object o1) { return this.getClass().getSimpleName().compareTo(o1.getClass().getSimpleName()); } + + public ArrayList getAllStates() { + return states; + } } diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/VariantType.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/VariantType.java new file mode 100644 index 000000000..7d25498a5 --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/stratifications/VariantType.java @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2011, The Broad Institute + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +package org.broadinstitute.sting.gatk.walkers.varianteval.stratifications; + +import org.broadinstitute.sting.gatk.contexts.ReferenceContext; +import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; +import org.broadinstitute.sting.utils.variantcontext.VariantContext; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +/** + * Stratifies the eval variants by their type (SNP, INDEL, ETC) + */ +public class VariantType extends VariantStratifier { + @Override + public void initialize() { + for ( VariantContext.Type t : VariantContext.Type.values() ) { + states.add(t.toString()); + } + } + + public List getRelevantStates(ReferenceContext ref, RefMetaDataTracker tracker, VariantContext comp, String compName, VariantContext eval, String evalName, String sampleName) { + return eval == null ? Collections.emptyList() : Arrays.asList(eval.getType().toString()); + } +} diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/util/VariantEvalUtils.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/util/VariantEvalUtils.java index f31dd9f9f..92e7c6554 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/util/VariantEvalUtils.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/util/VariantEvalUtils.java @@ -266,10 +266,7 @@ public class VariantEvalUtils { * @return a new VariantContext with just the requested sample */ public VariantContext getSubsetOfVariantContext(VariantContext vc, String sampleName) { - ArrayList sampleNames = new ArrayList(); - sampleNames.add(sampleName); - - return getSubsetOfVariantContext(vc, sampleNames); + return getSubsetOfVariantContext(vc, Arrays.asList(sampleName)); } /** @@ -371,12 +368,12 @@ public class VariantEvalUtils { * @param stateKeys all the state keys * @return a list of state keys */ - public ArrayList initializeStateKeys(HashMap> stateMap, Stack>> stateStack, StateKey stateKey, ArrayList stateKeys) { + public ArrayList initializeStateKeys(HashMap> stateMap, Stack>> stateStack, StateKey stateKey, ArrayList stateKeys) { if (stateStack == null) { - stateStack = new Stack>>(); + stateStack = new Stack>>(); for (VariantStratifier vs : stateMap.keySet()) { - HashMap> oneSetOfStates = new HashMap>(); + HashMap> oneSetOfStates = new HashMap>(); oneSetOfStates.put(vs, stateMap.get(vs)); stateStack.add(oneSetOfStates); @@ -384,10 +381,10 @@ public class VariantEvalUtils { } if (!stateStack.isEmpty()) { - Stack>> newStateStack = new Stack>>(); + Stack>> newStateStack = new Stack>>(); newStateStack.addAll(stateStack); - HashMap> oneSetOfStates = newStateStack.pop(); + HashMap> oneSetOfStates = newStateStack.pop(); VariantStratifier vs = oneSetOfStates.keySet().iterator().next(); for (String state : oneSetOfStates.get(vs)) { From a1920397e8c4328f8c09006e5982afc2381ac71c Mon Sep 17 00:00:00 2001 From: Mark DePristo Date: Wed, 7 Sep 2011 12:18:11 -0400 Subject: [PATCH 33/33] Major bugfix for per sample VariantEval -- per sample stratification was not being calculated correctly. The alt allele was always remaining, even if the genotype of the sample was hom-ref. Although conceptually fine, this breaks the assumptions of all of the eval modules, so per sample stratifications actually included all variants for everything. Eric is going to fix the system in general, so this commit may break the build. --- .../sting/gatk/walkers/varianteval/util/VariantEvalUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/util/VariantEvalUtils.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/util/VariantEvalUtils.java index 92e7c6554..3cc039141 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/util/VariantEvalUtils.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/util/VariantEvalUtils.java @@ -277,7 +277,7 @@ public class VariantEvalUtils { * @return a new VariantContext with just the requested samples */ public VariantContext getSubsetOfVariantContext(VariantContext vc, Collection sampleNames) { - VariantContext vcsub = vc.subContextFromGenotypes(vc.getGenotypes(sampleNames).values(), vc.getAlleles()); + VariantContext vcsub = vc.subContextFromGenotypes(vc.getGenotypes(sampleNames).values()); HashMap newAts = new HashMap(vcsub.getAttributes());