Skip to content

Commit

Permalink
Use an immutable list for SplitVcfBySamples
Browse files Browse the repository at this point in the history
  • Loading branch information
bbimber committed Mar 20, 2024
1 parent 672914a commit 4be5c76
Showing 1 changed file with 6 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import htsjdk.variant.variantcontext.writer.VariantContextWriterBuilder;
import htsjdk.variant.vcf.VCFHeader;
import htsjdk.variant.vcf.VCFHeaderLine;
import org.apache.commons.collections4.list.UnmodifiableList;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;
import org.broadinstitute.barclay.argparser.Argument;
Expand Down Expand Up @@ -131,15 +132,18 @@ private void prepareOutputsForSampleFile(List<String> samples, VCFHeader header)
for (File outputFile : fileToSamples.keySet()) {
VariantContextWriter writer = new VariantContextWriterBuilder().setOutputFile(outputFile).setReferenceDictionary(getReferenceDictionary()).build();
writers.add(writer);
batches.add(new ArrayList<>(fileToSamples.get(outputFile)));
batches.add(new UnmodifiableList<>(fileToSamples.get(outputFile).stream().toList()));

VCFHeader outputHeader = new VCFHeader(header.getMetaDataInInputOrder(), fileToSamples.get(outputFile));
writer.writeHeader(outputHeader);
}
}

private void prepareOutputsForBatches(List<String> samples, VCFHeader header) {
batches.addAll(Lists.partition(new ArrayList<>(samples), samplesPerVcf));
Lists.partition(new ArrayList<>(samples), samplesPerVcf).forEach(l -> {
batches.add(List.copyOf(l)); // this returns an unmodifiable list
});

if (batches.size() == 1) {
throw new GATKException("This split would result in one output VCF, aborting");
}
Expand Down

0 comments on commit 4be5c76

Please sign in to comment.