Skip to content
This repository was archived by the owner on Nov 9, 2019. It is now read-only.

Commit e53ac59

Browse files
committed
Using Utils.stream and Utils.validate
1 parent b4390fb commit e53ac59

38 files changed

+122
-263
lines changed

src/main/java/org/broadinstitute/hellbender/tools/HaplotypeCallerSpark.java

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@
4646
import java.util.function.Function;
4747
import java.util.stream.Collectors;
4848
import java.util.stream.Stream;
49-
import java.util.stream.StreamSupport;
5049

5150
/**
5251
* Call germline SNPs and indels via local re-assembly of haplotypes
@@ -179,15 +178,10 @@ private static FlatMapFunction<Iterator<Tuple2<AssemblyRegion, SimpleInterval>>,
179178
//HaplotypeCallerEngine isn't serializable but is expensive to instantiate, so construct and reuse one for every partition
180179
final ReferenceMultiSourceAdapter referenceReader = new ReferenceMultiSourceAdapter(referenceBroadcast.getValue(), authHolder);
181180
final HaplotypeCallerEngine hcEngine = new HaplotypeCallerEngine(hcArgsBroadcast.value(), header, referenceReader);
182-
return iteratorToStream(regionAndIntervals).flatMap(regionToVariants(hcEngine)).iterator();
181+
return Utils.stream(regionAndIntervals).flatMap(regionToVariants(hcEngine)).iterator();
183182
};
184183
}
185184

186-
private static <T> Stream<T> iteratorToStream(Iterator<T> iterator) {
187-
Iterable<T> regionsIterable = () -> iterator;
188-
return StreamSupport.stream(regionsIterable.spliterator(), false);
189-
}
190-
191185
private static Function<Tuple2<AssemblyRegion, SimpleInterval>, Stream<? extends VariantContext>> regionToVariants(HaplotypeCallerEngine hcEngine) {
192186
return regionAndInterval -> {
193187
final List<VariantContext> variantContexts = hcEngine.callRegion(regionAndInterval._1(), new FeatureContext());
@@ -259,7 +253,7 @@ private static FlatMapFunction<Iterator<Shard<GATKRead>>, Tuple2<AssemblyRegion,
259253
final ReferenceMultiSourceAdapter referenceSource = new ReferenceMultiSourceAdapter(referenceMultiSource, authHolder);
260254
final HaplotypeCallerEngine hcEngine = new HaplotypeCallerEngine(hcArgsBroadcast.value(), header, referenceSource);
261255

262-
return iteratorToStream(shards).flatMap(shardToRegion(assemblyArgs, header, referenceSource, hcEngine)).iterator();
256+
return Utils.stream(shards).flatMap(shardToRegion(assemblyArgs, header, referenceSource, hcEngine)).iterator();
263257
};
264258
}
265259

@@ -280,8 +274,7 @@ private static Function<Shard<GATKRead>, Stream<? extends Tuple2<AssemblyRegion,
280274
assemblyArgs.assemblyRegionPadding, assemblyArgs.activeProbThreshold,
281275
assemblyArgs.maxProbPropagationDistance);
282276

283-
return StreamSupport.stream(assemblyRegions.spliterator(), false)
284-
.map(a -> new Tuple2<>(a, shard.getInterval()));
277+
return Utils.stream(assemblyRegions).map(a -> new Tuple2<>(a, shard.getInterval()));
285278
};
286279
}
287280

src/main/java/org/broadinstitute/hellbender/tools/exome/CombineReadCounts.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import org.broadinstitute.hellbender.exceptions.GATKException;
1111
import org.broadinstitute.hellbender.exceptions.UserException;
1212
import org.broadinstitute.hellbender.utils.SimpleInterval;
13+
import org.broadinstitute.hellbender.utils.Utils;
1314
import org.broadinstitute.hellbender.utils.tsv.DataLine;
1415
import org.broadinstitute.hellbender.utils.tsv.TableColumnCollection;
1516
import org.broadinstitute.hellbender.utils.tsv.TableReader;
@@ -508,9 +509,7 @@ private void composeCountColumnNamesAndSourceIndexMapping() {
508509
for (final TableReader<ReadCountRecord> reader : readers) {
509510
unsortedCountColumnNames.addAll(readCountColumnNames(reader.columns()));
510511
}
511-
if (unsortedCountColumnNames.isEmpty()) {
512-
throw new IllegalStateException("there must be at least one count column");
513-
}
512+
Utils.validate(!unsortedCountColumnNames.isEmpty(), "there must be at least one count column");
514513
countColumnSourceIndexMap = IntStream.range(0, unsortedCountColumnNames.size()).boxed()
515514
.sorted(Comparator.comparing(unsortedCountColumnNames::get))
516515
.mapToInt(Integer::intValue).toArray();

src/main/java/org/broadinstitute/hellbender/tools/exome/ReadCountCollectionUtils.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -156,9 +156,7 @@ public static TableWriter<ReadCountRecord> writerWithIntervals(final Writer writ
156156
@Override
157157
protected void composeLine(final ReadCountRecord record, final DataLine dataLine) {
158158
final SimpleInterval interval = record.getTarget().getInterval();
159-
if (interval == null) {
160-
throw new IllegalStateException("invalid combination of targets with and without intervals defined");
161-
}
159+
Utils.validate(interval != null, "invalid combination of targets with and without intervals defined");
162160
dataLine.append(interval.getContig())
163161
.append(interval.getStart())
164162
.append(interval.getEnd())

src/main/java/org/broadinstitute/hellbender/tools/exome/Target.java

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -98,25 +98,19 @@ public String getName() {
9898
// Three methods to implement Locatable
9999
@Override
100100
public String getContig() {
101-
if (interval == null) {
102-
throw new IllegalStateException("the target does not have an interval assigned");
103-
}
101+
Utils.validate(interval != null, "the target does not have an interval assigned");
104102
return interval.getContig();
105103
}
106104

107105
@Override
108106
public int getStart() {
109-
if (interval == null) {
110-
throw new IllegalStateException("the target does not have an interval assigned");
111-
}
107+
Utils.validate(interval != null, "the target does not have an interval assigned");
112108
return interval.getStart();
113109
}
114110

115111
@Override
116112
public int getEnd() {
117-
if (interval == null) {
118-
throw new IllegalStateException("the target does not have an interval assigned");
119-
}
113+
Utils.validate(interval != null, "the target does not have an interval assigned");
120114
return interval.getEnd();
121115
}
122116

src/main/java/org/broadinstitute/hellbender/tools/exome/eval/EvaluateCopyNumberTriStateCalls.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
import java.util.function.Function;
3636
import java.util.stream.Collectors;
3737
import java.util.stream.Stream;
38-
import java.util.stream.StreamSupport;
3938

4039
/**
4140
* Tool to evaluate the output of {@link XHMMSegmentCaller}.
@@ -686,8 +685,7 @@ private CopyNumberTriStateAllele copyNumberToTrueAllele(final int cn) {
686685
* @return never {@code null}, potentially immutably
687686
*/
688687
private List<VariantContext> variantQueryToList(final VCFFileReader reader, final Locatable interval) {
689-
return StreamSupport.stream(Spliterators.spliteratorUnknownSize(reader.query(interval.getContig(),
690-
interval.getStart(), interval.getEnd()), Spliterator.NONNULL),false)
688+
return Utils.stream(reader.query(interval.getContig(), interval.getStart(), interval.getEnd()))
691689
.sorted(IntervalUtils.LEXICOGRAPHICAL_ORDER_COMPARATOR)
692690
.collect(Collectors.toList());
693691
}

src/main/java/org/broadinstitute/hellbender/tools/exome/eval/VariantEvaluationContext.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,8 @@ private double[] getAlleleDoubleArrayFromAlternativeAlleleArrayAttribute(final S
6969
final double[] alternativeAllelesFrequencies = GATKProtectedVariantContextUtils.getAttributeAsDoubleArray(this, key,
7070
() -> { return new double[alleles.size() - 1]; }, missingValue);
7171
final double[] result = new double[alleles.size()];
72-
if (alternativeAllelesFrequencies.length != alleles.size() - 1) {
73-
throw new IllegalStateException(String.format("We expect the %s Info annotation to contain an array of %d elements (alt. allele count)", key, alleles.size() - 1));
74-
}
72+
Utils.validate(alternativeAllelesFrequencies.length == alleles.size() - 1,
73+
() -> String.format("We expect the %s Info annotation to contain an array of %d elements (alt. allele count)", key, alleles.size() - 1));
7574
System.arraycopy(alternativeAllelesFrequencies, 0, result, 1, alternativeAllelesFrequencies.length);
7675
final double nonRefSum = MathUtils.sum(result);
7776
Utils.validateArg(nonRefSum <= 1.0, () -> String.format("The sum of element on annotation %s cannot greater than 1.0: %g", key, nonRefSum));

src/main/java/org/broadinstitute/hellbender/tools/exome/eval/VariantEvaluationContextBuilder.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,7 @@ public VariantEvaluationContextBuilder alleles(final String... alleleStrings) {
8181
@Override
8282
public List<Allele> getAlleles() {
8383
final List<Allele> result = super.getAlleles();
84-
if (result == null) {
85-
throw new IllegalStateException("you must set the alleles before calling getAlleles");
86-
}
84+
Utils.validate(result != null, "you must set the alleles before calling getAlleles");
8785
return result;
8886
}
8987

src/main/java/org/broadinstitute/hellbender/tools/exome/sexgenotyper/SexGenotypeData.java

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.broadinstitute.hellbender.tools.exome.sexgenotyper;
22

33
import org.broadinstitute.hellbender.exceptions.UserException;
4+
import org.broadinstitute.hellbender.utils.Utils;
45
import org.broadinstitute.hellbender.utils.param.ParamUtils;
56

67
import javax.annotation.Nonnull;
@@ -64,11 +65,8 @@ public SexGenotypeData(@Nonnull final String sampleName,
6465
* @return set of genotype string identifiers
6566
*/
6667
public Set<String> getSexGenotypesSet() {
67-
if (logLikelihoodMap != null) {
68-
return logLikelihoodMap.keySet();
69-
} else {
70-
throw new IllegalStateException("Genotyping inference data is not available");
71-
}
68+
Utils.validate(logLikelihoodMap != null, "Genotyping inference data is not available");
69+
return logLikelihoodMap.keySet();
7270
}
7371

7472
/**
@@ -77,11 +75,8 @@ public Set<String> getSexGenotypesSet() {
7775
* @return log likelihood
7876
*/
7977
public double getLogLikelihoodPerGenotype(@Nonnull final String genotype) {
80-
if (logLikelihoodMap != null) {
81-
return logLikelihoodMap.get(genotype);
82-
} else {
83-
throw new IllegalStateException("Genotyping inference data is not available");
84-
}
78+
Utils.validate(logLikelihoodMap != null, "Genotyping inference data is not available");
79+
return logLikelihoodMap.get(genotype);
8580
}
8681

8782
/**

src/main/java/org/broadinstitute/hellbender/tools/exome/sexgenotyper/SexGenotypeDataCollection.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,7 @@ public void add(@Nonnull final SexGenotypeData sexGenotypeData) {
8383
* @param dataWriter an instance of {@link Writer}
8484
*/
8585
public void write(@Nonnull final Writer dataWriter) {
86-
if (sexGenotypeDataList.isEmpty()) {
87-
throw new IllegalStateException("The sex genotype data collection is empty");
88-
}
86+
Utils.validate(!sexGenotypeDataList.isEmpty(), "The sex genotype data collection is empty");
8987
/* check if extended genotyping information is available; first, check for nulls */
9088
boolean extended = true;
9189
if (sexGenotypeDataList.stream().filter(dat -> !dat.hasExtendedGenotypingInfo()).count() > 0) {

src/main/java/org/broadinstitute/hellbender/tools/walkers/ReferenceConfidenceVariantContextMerger.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -171,9 +171,7 @@ static List<Allele> remapAlleles(final VariantContext vc, final Allele refAllele
171171
final Allele vcRef = vc.getReference();
172172
final byte[] refBases = refAllele.getBases();
173173
final int extraBaseCount = refBases.length - vcRef.getBases().length;
174-
if (extraBaseCount < 0) {
175-
throw new IllegalStateException("the wrong reference was selected");
176-
}
174+
Utils.validate(extraBaseCount >= 0, "the wrong reference was selected");
177175

178176
final List<Allele> result = new ArrayList<>(vc.getNAlleles());
179177
result.add(refAllele);

0 commit comments

Comments
 (0)