diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/bqsr/RecalibrationReport.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/bqsr/RecalibrationReport.java index 9ac1d0562..da21d566c 100644 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/bqsr/RecalibrationReport.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/bqsr/RecalibrationReport.java @@ -19,7 +19,7 @@ import java.util.*; public class RecalibrationReport { private QuantizationInfo quantizationInfo; // histogram containing the counts for qual quantization (calculated after recalibration is done) private final LinkedHashMap> keysAndTablesMap; // quick access reference to the read group table and its key manager - private final ArrayList requestedCovariates = new ArrayList(); // list of all covariates to be used in this calculation + private final Covariate[] requestedCovariates; // list of all covariates to be used in this calculation private final GATKReportTable argumentTable; // keep the argument table untouched just for output purposes private final RecalibrationArgumentCollection RAC; // necessary for quantizing qualities with the same parameter @@ -36,8 +36,12 @@ public class RecalibrationReport { Pair, ArrayList> covariates = RecalDataManager.initializeCovariates(RAC); // initialize the required and optional covariates ArrayList requiredCovariates = covariates.getFirst(); ArrayList optionalCovariates = covariates.getSecond(); - requestedCovariates.addAll(requiredCovariates); // add all required covariates to the list of requested covariates - requestedCovariates.addAll(optionalCovariates); // add all optional covariates to the list of requested covariates + requestedCovariates = new Covariate[requiredCovariates.size() + optionalCovariates.size()]; + int covariateIndex = 0; + for (final Covariate covariate : requiredCovariates) + requestedCovariates[covariateIndex++] = covariate; + for (final Covariate covariate : optionalCovariates) + requestedCovariates[covariateIndex++] = covariate; for (Covariate cov : requestedCovariates) cov.initialize(RAC); // initialize any covariate member variables using the shared argument collection @@ -73,11 +77,12 @@ public class RecalibrationReport { keysAndTablesMap.put(keyManager, table); } - protected RecalibrationReport(QuantizationInfo quantizationInfo, LinkedHashMap> keysAndTablesMap, GATKReportTable argumentTable, RecalibrationArgumentCollection RAC) { + protected RecalibrationReport(final QuantizationInfo quantizationInfo, final LinkedHashMap> keysAndTablesMap, final GATKReportTable argumentTable, final RecalibrationArgumentCollection RAC) { this.quantizationInfo = quantizationInfo; this.keysAndTablesMap = keysAndTablesMap; this.argumentTable = argumentTable; this.RAC = RAC; + this.requestedCovariates = null; } /** @@ -127,7 +132,7 @@ public class RecalibrationReport { return keysAndTablesMap; } - public ArrayList getRequestedCovariates() { + public Covariate[] getRequestedCovariates() { return requestedCovariates; } diff --git a/public/java/src/org/broadinstitute/sting/utils/recalibration/BaseRecalibration.java b/public/java/src/org/broadinstitute/sting/utils/recalibration/BaseRecalibration.java index 45b814c17..a39a2c42b 100644 --- a/public/java/src/org/broadinstitute/sting/utils/recalibration/BaseRecalibration.java +++ b/public/java/src/org/broadinstitute/sting/utils/recalibration/BaseRecalibration.java @@ -44,9 +44,9 @@ public class BaseRecalibration { private final static String UNRECOGNIZED_REPORT_TABLE_EXCEPTION = "Unrecognized table. Did you add an extra required covariate? This is a hard check that needs propagate through the code"; private final static String TOO_MANY_KEYS_EXCEPTION = "There should only be one key for the RG collapsed table, something went wrong here"; - private QuantizationInfo quantizationInfo; // histogram containing the map for qual quantization (calculated after recalibration is done) - private LinkedHashMap> keysAndTablesMap; // quick access reference to the read group table and its key manager - private ArrayList requestedCovariates = new ArrayList(); // list of all covariates to be used in this calculation + private final QuantizationInfo quantizationInfo; // histogram containing the map for qual quantization (calculated after recalibration is done) + private final LinkedHashMap> keysAndTablesMap; // quick access reference to the read group table and its key manager + private final Covariate[] requestedCovariates; // list of all covariates to be used in this calculation /** * Constructor using a GATK Report file @@ -73,7 +73,7 @@ public class BaseRecalibration { * @param keysAndTablesMap the map of key managers and recalibration tables * @param requestedCovariates the list of requested covariates */ - protected BaseRecalibration(QuantizationInfo quantizationInfo, LinkedHashMap> keysAndTablesMap, ArrayList requestedCovariates) { + protected BaseRecalibration(final QuantizationInfo quantizationInfo, final LinkedHashMap> keysAndTablesMap, final Covariate[] requestedCovariates) { this.quantizationInfo = quantizationInfo; this.keysAndTablesMap = keysAndTablesMap; this.requestedCovariates = requestedCovariates; diff --git a/public/java/test/org/broadinstitute/sting/utils/recalibration/BaseRecalibrationUnitTest.java b/public/java/test/org/broadinstitute/sting/utils/recalibration/BaseRecalibrationUnitTest.java index 96dc0ec36..c2aa9b0c7 100644 --- a/public/java/test/org/broadinstitute/sting/utils/recalibration/BaseRecalibrationUnitTest.java +++ b/public/java/test/org/broadinstitute/sting/utils/recalibration/BaseRecalibrationUnitTest.java @@ -112,7 +112,7 @@ public class BaseRecalibrationUnitTest { } QuantizationInfo quantizationInfo = new QuantizationInfo(quantizedQuals, qualCounts); quantizationInfo.noQuantization(); - baseRecalibration = new BaseRecalibration(quantizationInfo, keysAndTablesMap, requestedCovariates); + baseRecalibration = new BaseRecalibration(quantizationInfo, keysAndTablesMap, requestedCovariates.toArray()); }