From 125e6c1a475a25388cd2ad32a3f2397772673d65 Mon Sep 17 00:00:00 2001 From: Mauricio Carneiro Date: Fri, 6 Jul 2012 15:03:20 -0400 Subject: [PATCH] added BinaryTagCovariate for ancient dna analysis --- .../gatk/walkers/bqsr/BinaryTagCovariate.java | 61 +++++++++++++++++++ .../sting/gatk/walkers/bqsr/Covariate.java | 2 +- .../bqsr/RecalibrationArgumentCollection.java | 7 +++ .../walkers/bqsr/RecalibrationReport.java | 3 + 4 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 public/java/src/org/broadinstitute/sting/gatk/walkers/bqsr/BinaryTagCovariate.java diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/bqsr/BinaryTagCovariate.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/bqsr/BinaryTagCovariate.java new file mode 100644 index 000000000..424d076b7 --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/bqsr/BinaryTagCovariate.java @@ -0,0 +1,61 @@ +package org.broadinstitute.sting.gatk.walkers.bqsr; + +import org.broadinstitute.sting.utils.exceptions.UserException; +import org.broadinstitute.sting.utils.sam.GATKSAMRecord; + +/** + * Binary covariate allows BQSR to recalibrate based on a binary covariate in the BAM file. This covariate should assume values of 1 and 0. + * + * @author Mauricio Carneiro + * @since 7/6/12 + */ +public class BinaryTagCovariate implements StandardCovariate { + + private String tag; + + @Override + public void initialize(RecalibrationArgumentCollection RAC) { + tag = RAC.BINARY_TAG_NAME; + } + + @Override + public void recordValues(GATKSAMRecord read, ReadCovariates values) { + final Object tagObject = read.getAttribute(tag); + + byte[] binaryTag; + if (tagObject instanceof byte[]) + binaryTag = (byte[]) tagObject; + else if (tagObject instanceof String) { + int readLength = ((String) tagObject).length(); + binaryTag = new byte[readLength]; + for (int i = 0; i