VariantAnnotator now supports annotating FILTER field from an external resource.

Updated the docs.
This commit is contained in:
Takuto Sato 2015-09-25 15:35:06 -04:00
parent 25e0956ebb
commit df7a482335
3 changed files with 29 additions and 0 deletions

View File

@ -259,6 +259,15 @@ public class VariantAnnotatorIntegrationTest extends WalkerTest {
executeTest("using expression with multi-alleles", spec);
}
@Test
public void testFilterInExpression(){
/* The order of filters in the output seems platform-dependent. May need to change htsjdk to make the order consistent across platforms. [Sato] */
WalkerTestSpec spec = new WalkerTestSpec(
baseTestString() + " --resource:foo " + privateTestDir + "annotationResourceWithFilter.vcf" + STANDARD_ANNOTATIONS + "--variant " + privateTestDir + "vcfexample3empty-multiAllele.vcf -E foo.FILTER -L " + privateTestDir + "vcfexample3empty-multiAllele.vcf", 1,
Arrays.asList("77bc144fd432b8886ab19ed20bfb9396"));
executeTest("annotate a vcf with the FILTER field of another vcf", spec);
}
@Test
public void testUsingExpressionWithID() {
WalkerTestSpec spec = new WalkerTestSpec(

View File

@ -97,6 +97,19 @@ import java.util.*;
* -E foo.AF
* --resourceAlleleConcordance
* </pre>
*
* <h4>Annotate with AF and FILTER fields from an external resource </h4>
* <pre>
* java -jar GenomeAnalysisTK.jar \
* -R reference.fasta \
* -T VariantAnnotator \
* -o output.vcf \
* --resource:foo resource.vcf \
* --expression foo.AF \
* --expression foo.FILTER \
* -V input.vcf \
* </pre>
*
*/
@DocumentedGATKFeature( groupName = HelpConstants.DOCS_CAT_VARMANIP, extraDocs = {CommandLineGATK.class} )
@Requires(value={})
@ -181,6 +194,7 @@ public class VariantAnnotator extends RodWalker<Integer, Integer> implements Ann
* 'resource_file.vcf', you tag it with '-resource:my_resource resource_file.vcf' (see the -resource argument, also
* documented on this page) and you specify '-E my_resource.AC'. In the resulting output VCF, any records for
* which there is a record at the same position in the resource file will be annotated with 'my_resource.AC=N'.
* INFO field data, ID, ALT, and FILTER fields may be used as expression values.
* Note that if there are multiple records in the resource file that overlap the given position, one is chosen
* randomly.
*/

View File

@ -304,6 +304,12 @@ public class VariantAnnotatorEngine {
infoAnnotations.put(expression.fullName, expressionVC.getID());
} else if (expression.fieldName.equals("ALT")) {
infoAnnotations.put(expression.fullName, expressionVC.getAlternateAllele(0).getDisplayString());
} else if (expression.fieldName.equals("FILTER")) {
if ( expressionVC.isFiltered() ) {
infoAnnotations.put(expression.fullName, expressionVC.getFilters().toString().replace("[", "").replace("]", "").replace(" ", ""));
} else {
infoAnnotations.put(expression.fullName, "PASS");
}
} else if ( expressionVC.hasAttribute(expression.fieldName) ) {
// find the info field
final VCFInfoHeaderLine hInfo = hInfoMap.get(expression.fullName);