diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/CovariateCounterWalker.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/CovariateCounterWalker.java index 17e413c30..47180658d 100644 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/CovariateCounterWalker.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/CovariateCounterWalker.java @@ -41,6 +41,9 @@ public class CovariateCounterWalker extends LocusWalker { @Argument(fullName="READ_GROUP", shortName="rg", required=false, doc="Only use reads with this read group (@RG)") public String READ_GROUP = "none"; + @Argument(fullName="MAX_READ_GROUPS", shortName="mrg", required=false, doc="Abort if number of read groups in input file exceeeds this count.") + public int MAX_READ_GROUPS = 100; + int NDINUCS = 16; ArrayList flattenData = new ArrayList(); HashMap data = new HashMap(); @@ -92,6 +95,10 @@ public class CovariateCounterWalker extends LocusWalker { } public void initialize() { + if( getToolkit().getEngine().getSAMHeader().getReadGroups().size() > MAX_READ_GROUPS ) + Utils.scareUser("Number of read groups in the specified file exceeds the number that can be processed in a reasonable amount of memory." + + "To override this limit, use the --MAX_READ_GROUPS (-mrg) parameter"); + for (SAMReadGroupRecord readGroup : this.getToolkit().getEngine().getSAMHeader().getReadGroups()) { if( readGroup.getAttribute("PL") == null ) Utils.warnUser(String.format("PL attribute for read group %s is unset; assuming all reads are illumina",readGroup.getReadGroupId()));