From ea6b9a40973bdccdfaaead864adb26661d890fc7 Mon Sep 17 00:00:00 2001
From: Peter Powers <pmpowers@usgs.gov>
Date: Tue, 20 Oct 2015 13:56:57 -0600
Subject: [PATCH] DataUtils.class to Data.class

---
 src/org/opensha2/calc/CalcConfig.java         |  4 +-
 src/org/opensha2/calc/Deagg.java              | 46 +++++++-------
 src/org/opensha2/calc/DeaggResult.java        | 14 ++---
 src/org/opensha2/calc/Site.java               |  2 +-
 .../data/{DataUtils.java => Data.java}        |  4 +-
 src/org/opensha2/data/DataTable.java          |  6 +-
 src/org/opensha2/data/DataTables.java         |  6 +-
 src/org/opensha2/data/DataVolume.java         |  4 +-
 src/org/opensha2/data/HazardCurve.java        |  4 +-
 .../opensha2/data/ImmutableXySequence.java    |  2 +-
 src/org/opensha2/data/MutableXySequence.java  | 16 ++---
 src/org/opensha2/data/XySequence.java         |  2 +-
 src/org/opensha2/eq/Magnitudes.java           |  6 +-
 src/org/opensha2/eq/fault/Faults.java         | 20 +++----
 .../fault/surface/DefaultGriddedSurface.java  |  2 +-
 .../eq/fault/surface/RuptureFloating.java     | 12 ++--
 .../opensha2/eq/model/AbstractSourceSet.java  |  2 +-
 src/org/opensha2/eq/model/AreaParser.java     |  4 +-
 src/org/opensha2/eq/model/AreaSource.java     |  2 +-
 src/org/opensha2/eq/model/AreaSourceSet.java  |  2 +-
 src/org/opensha2/eq/model/FaultParser.java    |  4 +-
 src/org/opensha2/eq/model/FaultSource.java    |  2 +-
 src/org/opensha2/eq/model/GmmSet.java         |  4 +-
 src/org/opensha2/eq/model/GridParser.java     |  4 +-
 src/org/opensha2/eq/model/GridSourceSet.java  |  4 +-
 .../opensha2/eq/model/SystemSourceSet.java    |  8 +--
 src/org/opensha2/geo/GeoTools.java            | 16 ++---
 src/org/opensha2/geo/Region.java              |  6 +-
 src/org/opensha2/mfd/Mfds.java                |  4 +-
 src/org/opensha2/util/Parsing.java            | 12 ++--
 test/org/opensha2/data/DataUtilsTests.java    | 60 +++++++++----------
 31 files changed, 142 insertions(+), 142 deletions(-)
 rename src/org/opensha2/data/{DataUtils.java => Data.java} (99%)

diff --git a/src/org/opensha2/calc/CalcConfig.java b/src/org/opensha2/calc/CalcConfig.java
index f2001af7f..c141fe59f 100644
--- a/src/org/opensha2/calc/CalcConfig.java
+++ b/src/org/opensha2/calc/CalcConfig.java
@@ -19,7 +19,7 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 
-import org.opensha2.data.DataUtils;
+import org.opensha2.data.Data;
 import org.opensha2.data.XySequence;
 import org.opensha2.gmm.Imt;
 import org.opensha2.util.Parsing;
@@ -309,7 +309,7 @@ public final class CalcConfig {
 			for (Imt imt : imts) {
 				double[] imls = imlsForImt(imt);
 				imls = Arrays.copyOf(imls, imls.length);
-				DataUtils.ln(imls);
+				Data.ln(imls);
 				curveMap.put(imt, immutableCopyOf(create(imls, null)));
 			}
 			return Maps.immutableEnumMap(curveMap);
diff --git a/src/org/opensha2/calc/Deagg.java b/src/org/opensha2/calc/Deagg.java
index 4a46e1fdc..54ecfc4f1 100644
--- a/src/org/opensha2/calc/Deagg.java
+++ b/src/org/opensha2/calc/Deagg.java
@@ -12,7 +12,7 @@ import java.util.Set;
 
 import org.opensha2.calc.CalcConfig.DeaggData;
 import org.opensha2.data.DataTable;
-import org.opensha2.data.DataUtils;
+import org.opensha2.data.Data;
 import org.opensha2.data.DataVolume;
 import org.opensha2.eq.Magnitudes;
 import org.opensha2.eq.model.GmmSet;
@@ -87,13 +87,13 @@ class Deagg {
 		// private final double sourceSetWeight;
 
 		// private Model model;
-		private Data.Model modelData;
+		private Result.Model modelData;
 
 		private Imt imt;
 		private double iml;
 		private double totalRate;
 
-		private Map<Gmm, Data.Builder> dataMap;
+		private Map<Gmm, Result.Builder> dataMap;
 
 		private Deaggregator(HazardCurveSet hazard) {
 			this.hazard = hazard;
@@ -102,17 +102,17 @@ class Deagg {
 			// this.sourceSetWeight = hazard.sourceSet.weight();
 		}
 
-		Deaggregator withDataModel(Data.Model model) {
+		Deaggregator withDataModel(Result.Model model) {
 			this.modelData = checkNotNull(model);
 			this.dataMap = createDataMap(gmms, model);
 			return this;
 		}
 
 		// TODO these need to be build as copies of a base model
-		private static Map<Gmm, Data.Builder> createDataMap(Set<Gmm> gmms, Data.Model model) {
-			Map<Gmm, Data.Builder> map = Maps.newEnumMap(Gmm.class);
+		private static Map<Gmm, Result.Builder> createDataMap(Set<Gmm> gmms, Result.Model model) {
+			Map<Gmm, Result.Builder> map = Maps.newEnumMap(Gmm.class);
 			for (Gmm gmm : gmms) {
-				map.put(gmm, Data.builder(model));
+				map.put(gmm, Result.builder(model));
 			}
 			return Maps.immutableEnumMap(map);
 		}
@@ -130,7 +130,7 @@ class Deagg {
 			return this;
 		}
 
-		Map<Gmm, Data> deaggregate() {
+		Map<Gmm, Result> deaggregate() {
 			// TODO check required fields set
 
 			for (GroundMotions gms : hazard.hazardGroundMotionsList) {
@@ -292,7 +292,7 @@ class Deagg {
 	 * results of individual SourceSets and Gmms. Data containers may be
 	 * recombined via add().
 	 */
-	static class Data {
+	static class Result {
 
 		private final DataVolume rmε;
 
@@ -307,7 +307,7 @@ class Deagg {
 
 		// private Map<SourceSet<Source>, Collection<Source>> topContributors;
 
-		private Data(
+		private Result(
 				DataVolume rmε,
 				double rBar, double mBar, double εBar,
 				double barWeight,
@@ -331,7 +331,7 @@ class Deagg {
 		 * Initialize a builder using a data model that will likely have been
 		 * specified cia a calculation configuration.
 		 */
-		static Builder builder(Data.Model model) {
+		static Builder builder(Result.Model model) {
 			return new Builder(model);
 		}
 
@@ -340,7 +340,7 @@ class Deagg {
 		 * structural properties will be shared (e.g. row and column arrays of
 		 * data tables).
 		 */
-		static Builder builder(Data model) {
+		static Builder builder(Result model) {
 			return null;
 		}
 
@@ -378,7 +378,7 @@ class Deagg {
 					.columns(model.mMin, model.mMax, model.Δm);
 			}
 			
-			private Builder(Data model) {
+			private Builder(Result model) {
 				rmε = DataVolume.Builder.fromModel(model.rmε);
 				rPositions = DataTable.Builder.fromModel(model.rPositions);
 				mPositions = DataTable.Builder.fromModel(model.mPositions);
@@ -415,7 +415,7 @@ class Deagg {
 			}
 
 			/* Combine values */
-			Builder add(Data data) {
+			Builder add(Result data) {
 
 				rmε.add(data.rmε);
 
@@ -431,8 +431,8 @@ class Deagg {
 				return this;
 			}
 
-			Data build() {
-				return new Data(
+			Result build() {
+				return new Result(
 					rmε.build(), rBar, mBar, εBar, barWeight,
 					rPositions.build(), mPositions.build(), positionWeights.build());
 			}
@@ -521,23 +521,23 @@ class Deagg {
 				private Double εMin, εMax, Δε;
 
 				private Builder distanceDiscretization(double min, double max, double Δ) {
-					rMin = DataUtils.checkInRange(rRange, "Min distance", min);
-					rMax = DataUtils.checkInRange(rRange, "Max distance", max);
-					Δr = DataUtils.checkDelta(min, max, Δ);
+					rMin = Data.checkInRange(rRange, "Min distance", min);
+					rMax = Data.checkInRange(rRange, "Max distance", max);
+					Δr = Data.checkDelta(min, max, Δ);
 					return this;
 				}
 
 				private Builder magnitudeDiscretization(double min, double max, double Δ) {
 					mMin = Magnitudes.validateMag(min);
 					mMax = Magnitudes.validateMag(max);
-					Δm = DataUtils.checkDelta(min, max, Δ);
+					Δm = Data.checkDelta(min, max, Δ);
 					return this;
 				}
 
 				private Builder epsilonDiscretization(double min, double max, double Δ) {
-					εMin = DataUtils.checkInRange(εRange, "Min epsilon", min);
-					εMax = DataUtils.checkInRange(εRange, "Max epsilon", max);
-					Δε = DataUtils.checkDelta(min, max, Δ);
+					εMin = Data.checkInRange(εRange, "Min epsilon", min);
+					εMax = Data.checkInRange(εRange, "Max epsilon", max);
+					Δε = Data.checkDelta(min, max, Δ);
 					return this;
 				}
 
diff --git a/src/org/opensha2/calc/DeaggResult.java b/src/org/opensha2/calc/DeaggResult.java
index 0752b5ce9..02f9fd403 100644
--- a/src/org/opensha2/calc/DeaggResult.java
+++ b/src/org/opensha2/calc/DeaggResult.java
@@ -5,7 +5,7 @@ import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 
-import org.opensha2.data.DataUtils;
+import org.opensha2.data.Data;
 import org.opensha2.eq.model.Source;
 import org.opensha2.eq.model.SourceSet;
 
@@ -27,7 +27,7 @@ public class DeaggResult {
 	private double returnPeriod;
 	private double iml;
 
-	private transient Data rawData;
+	private transient DataUnit rawData;
 	
 	private double minmag;
 	private double maxmag;
@@ -76,7 +76,7 @@ public class DeaggResult {
 		double[] εvalues;
 	}
 	
-	static class Data {
+	static class DataUnit {
 		private double[] rBins, mBins, εBins;
 
 		private double[][][] rmεMatrix; // [r][m][ε] DataVolume
@@ -137,9 +137,9 @@ public class DeaggResult {
 		result.returnPeriod = 2475;
 		result.iml = 0.65;
 
-		result.rawData = new Data();
-		result.rawData.rBins = DataUtils.buildCleanSequence(0.0, 100.0, 10.0, true, 1);
-		result.rawData.mBins = DataUtils.buildCleanSequence(5.0, 8.0, 0.2, true, 1);
+		result.rawData = new DataUnit();
+		result.rawData.rBins = Data.buildCleanSequence(0.0, 100.0, 10.0, true, 1);
+		result.rawData.mBins = Data.buildCleanSequence(5.0, 8.0, 0.2, true, 1);
 		result.rawData.εBins = new double[] { -2.0, -1.0, -0.5, 0.0, 0.5, 1.0, 2.0, 3.0 };
 
 		result.rawData.rmεMatrix = new double[result.rawData.rBins.length][result.rawData.mBins.length][result.rawData.εBins.length + 1];
@@ -188,7 +188,7 @@ public class DeaggResult {
 		for (int i=0; i<result.rawData.rBins.length; i++) {
 			for (int j=0; j< result.rawData.mBins.length; j++) {
 				double[] values = result.rawData.rmεMatrix[i][j];
-				double rmBinSum = DataUtils.sum(values);
+				double rmBinSum = Data.sum(values);
 				if (rmBinSum == 0.0) continue;
 				
 				Bin bin = new Bin();
diff --git a/src/org/opensha2/calc/Site.java b/src/org/opensha2/calc/Site.java
index 3362b8eb8..c0dfe7b45 100644
--- a/src/org/opensha2/calc/Site.java
+++ b/src/org/opensha2/calc/Site.java
@@ -3,7 +3,7 @@ package org.opensha2.calc;
 import static com.google.common.base.CaseFormat.LOWER_CAMEL;
 import static com.google.common.base.CaseFormat.UPPER_UNDERSCORE;
 import static com.google.common.base.Preconditions.checkNotNull;
-import static org.opensha2.data.DataUtils.checkInRange;
+import static org.opensha2.data.Data.checkInRange;
 
 import java.io.IOException;
 import java.lang.reflect.Type;
diff --git a/src/org/opensha2/data/DataUtils.java b/src/org/opensha2/data/Data.java
similarity index 99%
rename from src/org/opensha2/data/DataUtils.java
rename to src/org/opensha2/data/Data.java
index 98300a36c..3cae0492e 100644
--- a/src/org/opensha2/data/DataUtils.java
+++ b/src/org/opensha2/data/Data.java
@@ -76,7 +76,7 @@ import com.google.common.primitives.Ints;
  * @author Peter Powers
  * @see Doubles
  */
-public final class DataUtils {
+public final class Data {
 
 	/*
 	 * 
@@ -96,7 +96,7 @@ public final class DataUtils {
 	 * multi-threaded applications.
 	 */
 
-	private DataUtils() {}
+	private Data() {}
 
 	/**
 	 * Add a {@code term} to the elements of {@code data} in place.
diff --git a/src/org/opensha2/data/DataTable.java b/src/org/opensha2/data/DataTable.java
index 60727dab1..360ff8c92 100644
--- a/src/org/opensha2/data/DataTable.java
+++ b/src/org/opensha2/data/DataTable.java
@@ -333,7 +333,7 @@ public interface DataTable {
 				"At least one data dimension is empty");
 			checkDataState(rows, columns);
 			checkDataSize(rows.length, columns.length, data);
-			this.data = DataUtils.copyOf(data);
+			this.data = Data.copyOf(data);
 			return this;
 		}
 
@@ -351,9 +351,9 @@ public interface DataTable {
 			// safe covariant casts
 			validateTable((AbstractTable) table);
 			if (table instanceof SingularTable) {
-				DataUtils.uncheckedAdd(((SingularTable) table).value, data);
+				Data.uncheckedAdd(((SingularTable) table).value, data);
 			} else {
-				DataUtils.uncheckedAdd(data, ((DefaultTable) table).data);
+				Data.uncheckedAdd(data, ((DefaultTable) table).data);
 			}
 			return this;
 		}
diff --git a/src/org/opensha2/data/DataTables.java b/src/org/opensha2/data/DataTables.java
index 333912ba4..15874a157 100644
--- a/src/org/opensha2/data/DataTables.java
+++ b/src/org/opensha2/data/DataTables.java
@@ -3,7 +3,7 @@ package org.opensha2.data;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkElementIndex;
 import static com.google.common.base.Preconditions.checkState;
-import static org.opensha2.data.DataUtils.checkDelta;
+import static org.opensha2.data.Data.checkDelta;
 import static org.opensha2.util.TextUtils.NEWLINE;
 
 import java.util.Arrays;
@@ -29,7 +29,7 @@ public final class DataTables {
 	 * where a reference to the row or column keys is helpful to have when
 	 * working with data table and volume builders. Internally, this method
 	 * calls
-	 * {@link DataUtils#buildCleanSequence(double, double, double, boolean, int)}
+	 * {@link Data#buildCleanSequence(double, double, double, boolean, int)}
 	 * wiht a precision value of 4 decimal places. This may change in the future
 	 * 
 	 * <p><b>Example:</b> {@code keys(5.0, 8.0, 1.0)} returns [5.5, 6.5, 7.5]</p>
@@ -48,7 +48,7 @@ public final class DataTables {
 	 */
 	private static double[] keyArray(double min, double max, double Δ) {
 		double Δby2 = Δ / 2.0;
-		return DataUtils.buildCleanSequence(
+		return Data.buildCleanSequence(
 			min + Δby2,
 			max - Δby2,
 			Δ, true, 4);
diff --git a/src/org/opensha2/data/DataVolume.java b/src/org/opensha2/data/DataVolume.java
index d9891355e..644dec765 100644
--- a/src/org/opensha2/data/DataVolume.java
+++ b/src/org/opensha2/data/DataVolume.java
@@ -310,7 +310,7 @@ public interface DataVolume {
 				"At least one data dimension is empty");
 			checkDataState(rows, columns, levels);
 			checkDataSize(rows.length, columns.length, levels.length, data);
-			this.data = DataUtils.copyOf(data);
+			this.data = Data.copyOf(data);
 			return this;
 		}
 
@@ -327,7 +327,7 @@ public interface DataVolume {
 		public Builder add(DataVolume volume) {
 			// safe covariant casts
 			validateVolume((AbstractVolume) volume);
-			DataUtils.uncheckedAdd(data, ((DefaultVolume) volume).data);
+			Data.uncheckedAdd(data, ((DefaultVolume) volume).data);
 			return this;
 		}
 
diff --git a/src/org/opensha2/data/HazardCurve.java b/src/org/opensha2/data/HazardCurve.java
index d955a1f7a..3e97bcd9c 100644
--- a/src/org/opensha2/data/HazardCurve.java
+++ b/src/org/opensha2/data/HazardCurve.java
@@ -2,7 +2,7 @@ package org.opensha2.data;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
-import static org.opensha2.data.DataUtils.*;
+import static org.opensha2.data.Data.*;
 
 import java.util.Arrays;
 
@@ -25,7 +25,7 @@ public class HazardCurve {
 	/* Only for use by static factory methods. See parent. */
 	HazardCurve(double[] xs, double[] ys) {
 //		super(xs, ys);
-		checkArgument(DataUtils.isMonotonic(false, false, ys));
+		checkArgument(Data.isMonotonic(false, false, ys));
 	}
 
 	/**
diff --git a/src/org/opensha2/data/ImmutableXySequence.java b/src/org/opensha2/data/ImmutableXySequence.java
index 6bcf11575..2caae8ad0 100644
--- a/src/org/opensha2/data/ImmutableXySequence.java
+++ b/src/org/opensha2/data/ImmutableXySequence.java
@@ -58,7 +58,7 @@ class ImmutableXySequence extends XySequence {
 	}
 
 	@Override public final boolean isEmpty() {
-		return DataUtils.sum(ys) == 0.0;
+		return Data.sum(ys) == 0.0;
 	}
 
 	@Override public final boolean equals(Object obj) {
diff --git a/src/org/opensha2/data/MutableXySequence.java b/src/org/opensha2/data/MutableXySequence.java
index 9570de338..ed920ed05 100644
--- a/src/org/opensha2/data/MutableXySequence.java
+++ b/src/org/opensha2/data/MutableXySequence.java
@@ -3,9 +3,9 @@ package org.opensha2.data;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkElementIndex;
 import static com.google.common.base.Preconditions.checkNotNull;
-import static org.opensha2.data.DataUtils.add;
-import static org.opensha2.data.DataUtils.flip;
-import static org.opensha2.data.DataUtils.uncheckedMultiply;
+import static org.opensha2.data.Data.add;
+import static org.opensha2.data.Data.flip;
+import static org.opensha2.data.Data.uncheckedMultiply;
 
 import java.util.Arrays;
 import java.util.Iterator;
@@ -37,18 +37,18 @@ final class MutableXySequence extends ImmutableXySequence {
 	}
 
 	@Override public XySequence add(double term) {
-		DataUtils.add(term, ys);
+		Data.add(term, ys);
 		return this;
 	}
 
 	@Override public XySequence add(XySequence sequence) {
 		// safe covariant cast
-		DataUtils.add(ys, validateSequence((ImmutableXySequence) sequence).ys);
+		Data.add(ys, validateSequence((ImmutableXySequence) sequence).ys);
 		return this;
 	}
 
 	@Override public XySequence multiply(double scale) {
-		DataUtils.multiply(scale, ys);
+		Data.multiply(scale, ys);
 		return this;
 	}
 
@@ -59,7 +59,7 @@ final class MutableXySequence extends ImmutableXySequence {
 	}
 
 	@Override public XySequence complement() {
-		DataUtils.add(1, flip(ys));
+		Data.add(1, flip(ys));
 		return this;
 	}
 
@@ -69,7 +69,7 @@ final class MutableXySequence extends ImmutableXySequence {
 	}
 
 	@Override public XySequence transform(Function<Double, Double> function) {
-		DataUtils.uncheckedTransform(function, ys);
+		Data.uncheckedTransform(function, ys);
 		return this;
 	}
 
diff --git a/src/org/opensha2/data/XySequence.java b/src/org/opensha2/data/XySequence.java
index da1f4afdf..3156a71e5 100644
--- a/src/org/opensha2/data/XySequence.java
+++ b/src/org/opensha2/data/XySequence.java
@@ -2,7 +2,7 @@ package org.opensha2.data;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
-import static org.opensha2.data.DataUtils.isMonotonic;
+import static org.opensha2.data.Data.isMonotonic;
 
 import java.util.AbstractList;
 import java.util.Arrays;
diff --git a/src/org/opensha2/eq/Magnitudes.java b/src/org/opensha2/eq/Magnitudes.java
index 8a7a49acb..d765ea9ba 100644
--- a/src/org/opensha2/eq/Magnitudes.java
+++ b/src/org/opensha2/eq/Magnitudes.java
@@ -1,10 +1,10 @@
 package org.opensha2.eq;
 
-import static org.opensha2.data.DataUtils.checkInRange;
+import static org.opensha2.data.Data.checkInRange;
 import static java.lang.Math.log10;
 import static java.lang.Math.pow;
 
-import org.opensha2.data.DataUtils;
+import org.opensha2.data.Data;
 
 import com.google.common.collect.Range;
 
@@ -51,7 +51,7 @@ public final class Magnitudes {
 	 * @param mag magnitude to validate
 	 * @return the supplied magnitude
 	 * @throws IllegalArgumentException if {@code magdip} value is out of range
-	 * @see DataUtils#validate(Range, String, double)
+	 * @see Data#validate(Range, String, double)
 	 */
 	public static double validateMag(double mag) {
 		return checkInRange(magRange, "Magnitude", mag);
diff --git a/src/org/opensha2/eq/fault/Faults.java b/src/org/opensha2/eq/fault/Faults.java
index d0aa66b2f..35384f7e7 100644
--- a/src/org/opensha2/eq/fault/Faults.java
+++ b/src/org/opensha2/eq/fault/Faults.java
@@ -3,7 +3,7 @@ package org.opensha2.eq.fault;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static java.lang.Math.sin;
-import static org.opensha2.data.DataUtils.checkInRange;
+import static org.opensha2.data.Data.checkInRange;
 import static org.opensha2.geo.GeoTools.PI_BY_2;
 import static org.opensha2.geo.GeoTools.TO_RAD;
 import static org.opensha2.geo.GeoTools.TWOPI;
@@ -16,7 +16,7 @@ import static org.opensha2.geo.Locations.location;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.opensha2.data.DataUtils;
+import org.opensha2.data.Data;
 import org.opensha2.geo.Location;
 import org.opensha2.geo.LocationList;
 import org.opensha2.geo.LocationVector;
@@ -87,7 +87,7 @@ public final class Faults {
 	 * @param dip to validate
 	 * @return the supplied dip for use inline
 	 * @throws IllegalArgumentException if {@code dip} is out of range
-	 * @see DataUtils#checkInRange(Range, String, double)
+	 * @see Data#checkInRange(Range, String, double)
 	 */
 	public static double validateDip(double dip) {
 		return checkInRange(DIP_RANGE, "Dip", dip);
@@ -99,7 +99,7 @@ public final class Faults {
 	 * @param strike to validate
 	 * @return the supplied strike for use inline
 	 * @throws IllegalArgumentException if {@code strike} is out of range
-	 * @see DataUtils#checkInRange(Range, String, double)
+	 * @see Data#checkInRange(Range, String, double)
 	 */
 	public static double validateStrike(double strike) {
 		return checkInRange(STRIKE_RANGE, "Strike", strike);
@@ -111,7 +111,7 @@ public final class Faults {
 	 * @param rake to validate
 	 * @return the supplied rake for use inline
 	 * @throws IllegalArgumentException if {@code rake} is out of range
-	 * @see DataUtils#checkInRange(Range, String, double)
+	 * @see Data#checkInRange(Range, String, double)
 	 */
 	public static double validateRake(double rake) {
 		return checkInRange(RAKE_RANGE, "Rake", rake);
@@ -123,7 +123,7 @@ public final class Faults {
 	 * @param depth to validate (positive down)
 	 * @return the supplied depth for use inline
 	 * @throws IllegalArgumentException if {@code depth} is out of range
-	 * @see DataUtils#validate(Range, String, double)
+	 * @see Data#validate(Range, String, double)
 	 */
 	public static double validateDepth(double depth) {
 		return checkInRange(CRUSTAL_DEPTH_RANGE, "Depth", depth);
@@ -135,7 +135,7 @@ public final class Faults {
 	 * @param depth to validate (positive down)
 	 * @return the supplied depth for use inline
 	 * @throws IllegalArgumentException if {@code depth} is out of range
-	 * @see DataUtils#checkInRange(Range, String, double)
+	 * @see Data#checkInRange(Range, String, double)
 	 */
 	public static double validateSlabDepth(double depth) {
 		return checkInRange(SLAB_DEPTH_RANGE, "Subduction Slab Depth", depth);
@@ -147,7 +147,7 @@ public final class Faults {
 	 * @param depth to validate (positive down)
 	 * @return the supplied depth for use inline
 	 * @throws IllegalArgumentException if {@code depth} is out of range
-	 * @see DataUtils#checkInRange(Range, String, double)
+	 * @see Data#checkInRange(Range, String, double)
 	 */
 	public static double validateInterfaceDepth(double depth) {
 		return checkInRange(INTERFACE_DEPTH_RANGE, "Subduction Interface Depth", depth);
@@ -159,7 +159,7 @@ public final class Faults {
 	 * @param width to validate
 	 * @return the supplied width for use inline
 	 * @throws IllegalArgumentException if {@code width} is out of range
-	 * @see DataUtils#validate(Range, String, double)
+	 * @see Data#validate(Range, String, double)
 	 */
 	public static double validateWidth(double width) {
 		return checkInRange(CRUSTAL_WIDTH_RANGE, "Width", width);
@@ -171,7 +171,7 @@ public final class Faults {
 	 * @param width to validate
 	 * @return the supplied width for use inline
 	 * @throws IllegalArgumentException if {@code width} is out of range
-	 * @see DataUtils#checkInRange(Range, String, double)
+	 * @see Data#checkInRange(Range, String, double)
 	 */
 	public static double validateInterfaceWidth(double width) {
 		return checkInRange(INTERFACE_WIDTH_RANGE, "Subduction Interface Width", width);
diff --git a/src/org/opensha2/eq/fault/surface/DefaultGriddedSurface.java b/src/org/opensha2/eq/fault/surface/DefaultGriddedSurface.java
index d4c9c6a28..c7b4e5187 100644
--- a/src/org/opensha2/eq/fault/surface/DefaultGriddedSurface.java
+++ b/src/org/opensha2/eq/fault/surface/DefaultGriddedSurface.java
@@ -3,7 +3,7 @@ package org.opensha2.eq.fault.surface;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkState;
 import static java.math.RoundingMode.HALF_UP;
-import static org.opensha2.data.DataUtils.checkInRange;
+import static org.opensha2.data.Data.checkInRange;
 import static org.opensha2.eq.fault.Faults.validateDepth;
 import static org.opensha2.eq.fault.Faults.validateDip;
 import static org.opensha2.eq.fault.Faults.validateStrike;
diff --git a/src/org/opensha2/eq/fault/surface/RuptureFloating.java b/src/org/opensha2/eq/fault/surface/RuptureFloating.java
index 171315b09..598614f76 100644
--- a/src/org/opensha2/eq/fault/surface/RuptureFloating.java
+++ b/src/org/opensha2/eq/fault/surface/RuptureFloating.java
@@ -9,7 +9,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 
-import org.opensha2.data.DataUtils;
+import org.opensha2.data.Data;
 import org.opensha2.data.Interpolate;
 import org.opensha2.eq.fault.surface.RuptureScaling.Dimensions;
 import org.opensha2.eq.model.Rupture;
@@ -282,7 +282,7 @@ public enum RuptureFloating {
 
 		// scale weights to consider along-strike uniform weights
 		double horizScale = 1.0 / alongCount;
-		DataUtils.multiply(horizScale, depthWeights);
+		Data.multiply(horizScale, depthWeights);
 
 		for (int startCol = 0; startCol < alongCount; startCol++) {
 			for (int startRow = 0; startRow < downCount; startRow++) {
@@ -291,7 +291,7 @@ public enum RuptureFloating {
 				floaterMap.put(gss, depthWeights[startRow]);
 			}
 		}
-		System.out.println(DataUtils.sum(floaterMap.values()));
+		System.out.println(Data.sum(floaterMap.values()));
 		System.out.println(floaterMap.size());
 
 		return floaterMap;
@@ -303,7 +303,7 @@ public enum RuptureFloating {
 	 */
 	private static double[] generateTriangularWeights(double zTop, double zBot, double[] depths) {
 		Range<Double> depthRange = Range.closed(zTop, zBot);
-		DataUtils.checkInRange(depthRange, "Depth", depths);
+		Data.checkInRange(depthRange, "Depth", depths);
 
 		// create PDF
 		double xPeak = (zBot - zTop) / 3.0;
@@ -313,7 +313,7 @@ public enum RuptureFloating {
 
 		// interpolate and normalize
 		double[] weights = Interpolate.findY(xs, ys, depths);
-		DataUtils.normalize(weights);
+		Data.normalize(weights);
 
 		return weights;
 	}
@@ -341,7 +341,7 @@ public enum RuptureFloating {
 		System.out.println(d);
 
 		Map<GriddedSurface, Double> map = createWeightedFloatingSurfaces(surf, d.length, d.width);
-		System.out.println(DataUtils.sum(map.values()));
+		System.out.println(Data.sum(map.values()));
 		System.out.println(map.size());
 
 	}
diff --git a/src/org/opensha2/eq/model/AbstractSourceSet.java b/src/org/opensha2/eq/model/AbstractSourceSet.java
index 368a5b580..1a44b5bd5 100644
--- a/src/org/opensha2/eq/model/AbstractSourceSet.java
+++ b/src/org/opensha2/eq/model/AbstractSourceSet.java
@@ -3,7 +3,7 @@ package org.opensha2.eq.model;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.base.Strings.padEnd;
-import static org.opensha2.data.DataUtils.checkWeight;
+import static org.opensha2.data.Data.checkWeight;
 import static org.opensha2.util.TextUtils.validateName;
 
 import org.opensha2.geo.Location;
diff --git a/src/org/opensha2/eq/model/AreaParser.java b/src/org/opensha2/eq/model/AreaParser.java
index 07a8b1071..d1d79aadc 100644
--- a/src/org/opensha2/eq/model/AreaParser.java
+++ b/src/org/opensha2/eq/model/AreaParser.java
@@ -28,7 +28,7 @@ import java.util.logging.Logger;
 
 import javax.xml.parsers.SAXParser;
 
-import org.opensha2.data.DataUtils;
+import org.opensha2.data.Data;
 import org.opensha2.eq.fault.FocalMech;
 import org.opensha2.eq.fault.surface.RuptureScaling;
 import org.opensha2.geo.LocationList;
@@ -265,7 +265,7 @@ class AreaParser extends DefaultHandler {
 			case INCR:
 				MfdHelper.IncrData incrData = mfdHelper.incrementalData(atts).get(0);
 				IncrementalMfd mfdIncr = Mfds.newIncrementalMFD(incrData.mags,
-					DataUtils.multiply(incrData.weight, incrData.rates));
+					Data.multiply(incrData.weight, incrData.rates));
 				return mfdIncr;
 
 			case SINGLE:
diff --git a/src/org/opensha2/eq/model/AreaSource.java b/src/org/opensha2/eq/model/AreaSource.java
index c0f07f6f9..14e8694a3 100644
--- a/src/org/opensha2/eq/model/AreaSource.java
+++ b/src/org/opensha2/eq/model/AreaSource.java
@@ -20,7 +20,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.NavigableMap;
 
-import org.opensha2.data.DataUtils;
+import org.opensha2.data.Data;
 import org.opensha2.data.XySequence;
 import org.opensha2.eq.fault.FocalMech;
 import org.opensha2.eq.fault.scaling.MagLengthRelationship;
diff --git a/src/org/opensha2/eq/model/AreaSourceSet.java b/src/org/opensha2/eq/model/AreaSourceSet.java
index f922e9778..4bdc576cf 100644
--- a/src/org/opensha2/eq/model/AreaSourceSet.java
+++ b/src/org/opensha2/eq/model/AreaSourceSet.java
@@ -2,7 +2,7 @@ package org.opensha2.eq.model;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
-import static org.opensha2.data.DataUtils.checkWeight;
+import static org.opensha2.data.Data.checkWeight;
 import static org.opensha2.util.TextUtils.validateName;
 
 import java.util.Iterator;
diff --git a/src/org/opensha2/eq/model/FaultParser.java b/src/org/opensha2/eq/model/FaultParser.java
index 1a9e5974e..9e74786b3 100644
--- a/src/org/opensha2/eq/model/FaultParser.java
+++ b/src/org/opensha2/eq/model/FaultParser.java
@@ -28,7 +28,7 @@ import java.util.logging.Logger;
 
 import javax.xml.parsers.SAXParser;
 
-import org.opensha2.data.DataUtils;
+import org.opensha2.data.Data;
 import org.opensha2.eq.Magnitudes;
 import org.opensha2.eq.fault.surface.RuptureScaling;
 import org.opensha2.eq.model.MfdHelper.GR_Data;
@@ -281,7 +281,7 @@ class FaultParser extends DefaultHandler {
 	private List<IncrementalMfd> buildIncremental(IncrData data) {
 		List<IncrementalMfd> mfds = Lists.newArrayList();
 		IncrementalMfd mfd = Mfds.newIncrementalMFD(data.mags,
-			DataUtils.multiply(data.weight, data.rates));
+			Data.multiply(data.weight, data.rates));
 		mfds.add(mfd);
 		return mfds;
 	}
diff --git a/src/org/opensha2/eq/model/FaultSource.java b/src/org/opensha2/eq/model/FaultSource.java
index bd9027807..51469dde7 100644
--- a/src/org/opensha2/eq/model/FaultSource.java
+++ b/src/org/opensha2/eq/model/FaultSource.java
@@ -3,7 +3,7 @@ package org.opensha2.eq.model;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
-import static org.opensha2.data.DataUtils.checkInRange;
+import static org.opensha2.data.Data.checkInRange;
 import static org.opensha2.eq.fault.Faults.validateDepth;
 import static org.opensha2.eq.fault.Faults.validateDip;
 import static org.opensha2.eq.fault.Faults.validateRake;
diff --git a/src/org/opensha2/eq/model/GmmSet.java b/src/org/opensha2/eq/model/GmmSet.java
index def0c99eb..fe6804952 100644
--- a/src/org/opensha2/eq/model/GmmSet.java
+++ b/src/org/opensha2/eq/model/GmmSet.java
@@ -3,8 +3,8 @@ package org.opensha2.eq.model;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
-import static org.opensha2.data.DataUtils.checkInRange;
-import static org.opensha2.data.DataUtils.checkWeightSum;
+import static org.opensha2.data.Data.checkInRange;
+import static org.opensha2.data.Data.checkWeightSum;
 
 import java.util.Map;
 import java.util.Objects;
diff --git a/src/org/opensha2/eq/model/GridParser.java b/src/org/opensha2/eq/model/GridParser.java
index 8f6d084e7..cda306d89 100644
--- a/src/org/opensha2/eq/model/GridParser.java
+++ b/src/org/opensha2/eq/model/GridParser.java
@@ -30,7 +30,7 @@ import java.util.logging.Logger;
 
 import javax.xml.parsers.SAXParser;
 
-import org.opensha2.data.DataUtils;
+import org.opensha2.data.Data;
 import org.opensha2.eq.Magnitudes;
 import org.opensha2.eq.fault.FocalMech;
 import org.opensha2.eq.fault.surface.RuptureScaling;
@@ -374,7 +374,7 @@ class GridParser extends DefaultHandler {
 
 	private static IncrementalMfd buildIncr(IncrData incrData) {
 		IncrementalMfd mfdIncr = Mfds.newIncrementalMFD(incrData.mags,
-			DataUtils.multiply(incrData.weight, incrData.rates));
+			Data.multiply(incrData.weight, incrData.rates));
 		return mfdIncr;
 	}
 	
diff --git a/src/org/opensha2/eq/model/GridSourceSet.java b/src/org/opensha2/eq/model/GridSourceSet.java
index 8c3ad68ea..e880a4c8e 100644
--- a/src/org/opensha2/eq/model/GridSourceSet.java
+++ b/src/org/opensha2/eq/model/GridSourceSet.java
@@ -16,7 +16,7 @@ import java.util.Objects;
 
 import org.opensha2.calc.GridCalc;
 import org.opensha2.data.DataTable;
-import org.opensha2.data.DataUtils;
+import org.opensha2.data.Data;
 import org.opensha2.data.XySequence;
 import org.opensha2.eq.fault.Faults;
 import org.opensha2.eq.fault.FocalMech;
@@ -112,7 +112,7 @@ public class GridSourceSet extends AbstractSourceSet<PointSource> {
 		 * uniformly spaced. Can this be refactored
 		 */
 		double cleanDelta = Double.valueOf(String.format("%.2f", Δm));
-		double[] mags = DataUtils.buildCleanSequence(mMin, mMax, cleanDelta, true, 2);
+		double[] mags = Data.buildCleanSequence(mMin, mMax, cleanDelta, true, 2);
 		depthModel = DepthModel.create(magDepthMap, Doubles.asList(mags), maxDepth);
 
 		this.cacheKey = new Key();
diff --git a/src/org/opensha2/eq/model/SystemSourceSet.java b/src/org/opensha2/eq/model/SystemSourceSet.java
index 396433103..69bb1feb9 100644
--- a/src/org/opensha2/eq/model/SystemSourceSet.java
+++ b/src/org/opensha2/eq/model/SystemSourceSet.java
@@ -24,7 +24,7 @@ import org.opensha2.calc.HazardInput;
 import org.opensha2.calc.InputList;
 import org.opensha2.calc.Site;
 import org.opensha2.calc.SystemInputList;
-import org.opensha2.data.DataUtils;
+import org.opensha2.data.Data;
 import org.opensha2.eq.fault.Faults;
 import org.opensha2.eq.fault.surface.GriddedSurface;
 import org.opensha2.eq.model.Distance.Type;
@@ -194,7 +194,7 @@ public final class SystemSourceSet extends AbstractSourceSet<SystemSourceSet.Sys
 			// NOTE we're doublechecking a UCERF3 rule that ruptures be composed
 			// of at least 2 sections; this may not be the case in the future.
 			checkArgument(indices.size() > 1, "Rupture index list must contain 2 or more values");
-			bitsets.add(DataUtils.indicesToBits(indices, sections.size()));
+			bitsets.add(Data.indicesToBits(indices, sections.size()));
 			return this;
 		}
 
@@ -499,7 +499,7 @@ public final class SystemSourceSet extends AbstractSourceSet<SystemSourceSet.Sys
 				if (siteBitset.isEmpty()) return inputs;
 
 				// create and fill distance table
-				List<Integer> siteIndices = DataUtils.bitsToIndices(siteBitset);
+				List<Integer> siteIndices = Data.bitsToIndices(siteBitset);
 				Table<Integer, Distance.Type, Double> rTable = ArrayTable.create(
 					siteIndices,
 					EnumSet.allOf(Distance.Type.class));
@@ -598,7 +598,7 @@ public final class SystemSourceSet extends AbstractSourceSet<SystemSourceSet.Sys
 			// create index list of relevant sections
 			BitSet sectionBitset = (BitSet) source.bitset().clone();
 			sectionBitset.and(siteBitset);
-			List<Integer> sectionIndices = DataUtils.bitsToIndices(sectionBitset);
+			List<Integer> sectionIndices = Data.bitsToIndices(sectionBitset);
 
 			// find r minima
 			double rJB = Double.MAX_VALUE;
diff --git a/src/org/opensha2/geo/GeoTools.java b/src/org/opensha2/geo/GeoTools.java
index ef45b01ad..a6e5e4a69 100644
--- a/src/org/opensha2/geo/GeoTools.java
+++ b/src/org/opensha2/geo/GeoTools.java
@@ -2,9 +2,9 @@ package org.opensha2.geo;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static java.lang.Math.PI;
-import static org.opensha2.data.DataUtils.checkInRange;
+import static org.opensha2.data.Data.checkInRange;
 
-import org.opensha2.data.DataUtils;
+import org.opensha2.data.Data;
 
 import com.google.common.collect.Range;
 
@@ -95,7 +95,7 @@ public class GeoTools {
 	 * @param lat to validate
 	 * @return the supplied latitude
 	 * @throws IllegalArgumentException if {@code lat} is out of range
-	 * @see DataUtils#checkInRange(Range, String, double)
+	 * @see Data#checkInRange(Range, String, double)
 	 */
 	public static double validateLat(double lat) {
 		return checkInRange(latRange, "Latitude", lat);
@@ -109,7 +109,7 @@ public class GeoTools {
 	 * @param lats to validate
 	 * @return the supplied latitude values
 	 * @throws IllegalArgumentException if any value is out of range
-	 * @see DataUtils#checkInRange(Range, String, double...)
+	 * @see Data#checkInRange(Range, String, double...)
 	 */
 	public static double[] validateLats(double... lats) {
 		return checkInRange(latRange, "Latitude", lats);
@@ -123,7 +123,7 @@ public class GeoTools {
 	 * @param lon to validate
 	 * @return the supplied longitude
 	 * @throws IllegalArgumentException if {@code lon} is out of range
-	 * @see DataUtils#checkInRange(Range, String, double)
+	 * @see Data#checkInRange(Range, String, double)
 	 */
 	public static double validateLon(double lon) {
 		return checkInRange(lonRange, "Longitude", lon);
@@ -137,7 +137,7 @@ public class GeoTools {
 	 * @param lons to validate
 	 * @return the supplied longitude values
 	 * @throws IllegalArgumentException if any value is out of range
-	 * @see DataUtils#checkInRange(Range, String, double...)
+	 * @see Data#checkInRange(Range, String, double...)
 	 */
 	public static double[] validateLons(double... lons) {
 		return checkInRange(lonRange, "Longitude", lons);
@@ -151,7 +151,7 @@ public class GeoTools {
 	 * @param depth to validate
 	 * @return the supplied depth
 	 * @throws IllegalArgumentException if {@code depth} is out of range
-	 * @see DataUtils#checkInRange(Range, String, double)
+	 * @see Data#checkInRange(Range, String, double)
 	 */
 	public static double validateDepth(double depth) {
 		return checkInRange(depthRange, "Depth", depth);
@@ -165,7 +165,7 @@ public class GeoTools {
 	 * @param depths to validate
 	 * @return the supplied depth values
 	 * @throws IllegalArgumentException if any value is out of range
-	 * @see DataUtils#checkInRange(Range, String, double...)
+	 * @see Data#checkInRange(Range, String, double...)
 	 */
 	public static double[] validateDepths(double... depths) {
 		return checkInRange(depthRange, "Depth", depths);
diff --git a/src/org/opensha2/geo/Region.java b/src/org/opensha2/geo/Region.java
index db031e646..2e93e1038 100644
--- a/src/org/opensha2/geo/Region.java
+++ b/src/org/opensha2/geo/Region.java
@@ -31,7 +31,7 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
-import org.opensha2.data.DataUtils;
+import org.opensha2.data.Data;
 import org.opensha2.util.Named;
 
 import com.google.common.base.Strings;
@@ -261,8 +261,8 @@ public class Region implements Named {
 	 * except ensuring that all coordinates are positive.
 	 */
 	private static double computeArea(double[] xs, double[] ys) {
-		DataUtils.positivize(xs);
-		DataUtils.positivize(ys);
+		Data.positivize(xs);
+		Data.positivize(ys);
 		double area = 0;
 		for (int i = 0; i < xs.length - 1; i++) {
 			area += xs[i] * ys[i + 1] - xs[i + 1] * ys[i];
diff --git a/src/org/opensha2/mfd/Mfds.java b/src/org/opensha2/mfd/Mfds.java
index 7ccad4eea..347243127 100644
--- a/src/org/opensha2/mfd/Mfds.java
+++ b/src/org/opensha2/mfd/Mfds.java
@@ -10,7 +10,7 @@ import static org.opensha2.eq.Magnitudes.magToMoment_N_m;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.opensha2.data.DataUtils;
+import org.opensha2.data.Data;
 import org.opensha2.data.XySequence;
 import org.opensha2.eq.Magnitudes;
 
@@ -376,7 +376,7 @@ public final class Mfds {
 		for (IncrementalMfd mfd : mfds) {
 			sequences.add(toSequence(mfd));
 		}
-		return DataUtils.combine(sequences);
+		return Data.combine(sequences);
 	}
 
 }
diff --git a/src/org/opensha2/util/Parsing.java b/src/org/opensha2/util/Parsing.java
index 0b5d7739f..01ca380e7 100644
--- a/src/org/opensha2/util/Parsing.java
+++ b/src/org/opensha2/util/Parsing.java
@@ -3,7 +3,7 @@ package org.opensha2.util;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
-import static org.opensha2.data.DataUtils.checkWeightSum;
+import static org.opensha2.data.Data.checkWeightSum;
 
 import java.io.BufferedInputStream;
 import java.io.DataInputStream;
@@ -21,7 +21,7 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.NavigableMap;
 
-import org.opensha2.data.DataUtils;
+import org.opensha2.data.Data;
 import org.w3c.dom.Comment;
 import org.w3c.dom.Element;
 import org.xml.sax.Attributes;
@@ -82,7 +82,7 @@ public final class Parsing {
 	 * @param type {@code Class} to use as the key of the returned map
 	 * @throws IllegalArgumentException if supplied string is malformed or
 	 *         empty, or if weights do not sum to 1.0, within
-	 *         {@link DataUtils#WEIGHT_TOLERANCE}
+	 *         {@link Data#WEIGHT_TOLERANCE}
 	 * @throws NumberFormatException if supplied string does not contain
 	 *         parseable {@code double} values
 	 * @return a new immutable {@code Map<Enum, Double>} of identifiers and
@@ -112,7 +112,7 @@ public final class Parsing {
 	 * @param s the string to parse
 	 * @throws IllegalArgumentException if {@code s} is malformed or empty, or
 	 *         if weights do not sum to 1.0, within
-	 *         {@link DataUtils#WEIGHT_TOLERANCE}
+	 *         {@link Data#WEIGHT_TOLERANCE}
 	 * @throws NumberFormatException if {@code s} does not contain parseable
 	 *         {@code double} values
 	 * @return a new immutable {@code Map<Double, Double>} of values and their
@@ -138,7 +138,7 @@ public final class Parsing {
 	 * 
 	 * @param s the string to parse
 	 * @throws IllegalArgumentException if {@code s} is malformed or if weights
-	 *         do not sum to 1.0, within {@link DataUtils#WEIGHT_TOLERANCE}
+	 *         do not sum to 1.0, within {@link Data#WEIGHT_TOLERANCE}
 	 * @throws NumberFormatException if {@code s} does not contain parseable
 	 *         {@code double} values
 	 * @return a new immutable {@code Map<Double, Double>} of values and their
@@ -712,7 +712,7 @@ public final class Parsing {
 			if (s.contains(":")) {
 				Iterator<Integer> rangeIt = Iterators.transform(
 					split(s, Delimiter.COLON).iterator(), Ints.stringConverter());
-				return DataUtils.indices(rangeIt.next(), rangeIt.next());
+				return Data.indices(rangeIt.next(), rangeIt.next());
 			}
 			return new int[] { Integer.valueOf(s) };
 		}
diff --git a/test/org/opensha2/data/DataUtilsTests.java b/test/org/opensha2/data/DataUtilsTests.java
index d8345a170..56a59580b 100644
--- a/test/org/opensha2/data/DataUtilsTests.java
+++ b/test/org/opensha2/data/DataUtilsTests.java
@@ -41,14 +41,14 @@ public final class DataUtilsTests {
 
 		// add term
 		expectedArray = new double[] { 2.0, 11.0, 101.0 };
-		actualArray = DataUtils.add(1.0, valueArray());
-		actualList = DataUtils.add(1.0, valueList());
+		actualArray = Data.add(1.0, valueArray());
+		actualList = Data.add(1.0, valueList());
 		testTransform(expectedArray, actualArray, actualList);
 
 		// add arrays
 		expectedArray = new double[] { 2.0, 20.0, 200.0 };
-		actualArray = DataUtils.add(valueArray(), valueArray());
-		actualList = DataUtils.add(valueList(), valueList());
+		actualArray = Data.add(valueArray(), valueArray());
+		actualList = Data.add(valueList(), valueList());
 		testTransform(expectedArray, actualArray, actualList);
 	}
 
@@ -62,12 +62,12 @@ public final class DataUtilsTests {
 		double[][][] d3_1 = { { valueArray(), valueArray() }, { valueArray(), valueArray() } };
 		double[][][] d3_2 = { { valueArray(), valueArray() }, { valueArray(), valueArray() } };
 
-		double[][] d2_actual = DataUtils.add(d2_1, d2_2);
+		double[][] d2_actual = Data.add(d2_1, d2_2);
 		for (int i = 0; i < d2_ex.length; i++) {
 			assertArrayEquals(d2_ex[i], d2_actual[i], 0.0);
 		}
 
-		double[][][] d3_actual = DataUtils.add(d3_1, d3_2);
+		double[][][] d3_actual = Data.add(d3_1, d3_2);
 		for (int i = 0; i < d3_ex.length; i++) {
 			for (int j = 0; j < d3_ex[1].length; j++) {
 				assertArrayEquals(d3_ex[i][j], d3_actual[i][j], 0.0);
@@ -82,8 +82,8 @@ public final class DataUtilsTests {
 
 		// subtract arrays
 		expectedArray = new double[] { 0.0, 0.0, 0.0 };
-		actualArray = DataUtils.subtract(valueArray(), valueArray());
-		actualList = DataUtils.subtract(valueList(), valueList());
+		actualArray = Data.subtract(valueArray(), valueArray());
+		actualList = Data.subtract(valueList(), valueList());
 		testTransform(expectedArray, actualArray, actualList);
 	}
 	
@@ -93,14 +93,14 @@ public final class DataUtilsTests {
 
 		// multiply term
 		expectedArray = new double[] { 5.0, 50.0, 500.0 };
-		actualArray = DataUtils.multiply(5.0, valueArray());
-		actualList = DataUtils.multiply(5.0, valueList());
+		actualArray = Data.multiply(5.0, valueArray());
+		actualList = Data.multiply(5.0, valueList());
 		testTransform(expectedArray, actualArray, actualList);
 
 		// multiply arrays
 		expectedArray = new double[] { 1.0, 100.0, 10000.0 };
-		actualArray = DataUtils.multiply(valueArray(), valueArray());
-		actualList = DataUtils.multiply(valueList(), valueList());
+		actualArray = Data.multiply(valueArray(), valueArray());
+		actualList = Data.multiply(valueList(), valueList());
 		testTransform(expectedArray, actualArray, actualList);
 	}
 
@@ -110,8 +110,8 @@ public final class DataUtilsTests {
 
 		// divide arrays
 		expectedArray = new double[] { 1.0, 1.0, 1.0 };
-		actualArray = DataUtils.divide(valueArray(), valueArray());
-		actualList = DataUtils.divide(valueList(), valueList());
+		actualArray = Data.divide(valueArray(), valueArray());
+		actualList = Data.divide(valueList(), valueList());
 		testTransform(expectedArray, actualArray, actualList);
 	}
 	
@@ -121,10 +121,10 @@ public final class DataUtilsTests {
 
 		// abs array
 		expectedArray = valueArray();
-		double[] absArray = DataUtils.multiply(-1, valueArray());
-		List<Double> absList = DataUtils.multiply(-1, valueList());
-		actualArray = DataUtils.abs(absArray);
-		actualList = DataUtils.abs(absList);
+		double[] absArray = Data.multiply(-1, valueArray());
+		List<Double> absList = Data.multiply(-1, valueList());
+		actualArray = Data.abs(absArray);
+		actualList = Data.abs(absList);
 		testTransform(expectedArray, actualArray, actualList);
 	}
 
@@ -137,8 +137,8 @@ public final class DataUtilsTests {
 		for (int i=0; i<3; i++) {
 			expectedArray[i] = Math.exp(VALUES[i]);
 		}
-		actualArray = DataUtils.exp(valueArray());
-		actualList = DataUtils.exp(valueList());
+		actualArray = Data.exp(valueArray());
+		actualList = Data.exp(valueList());
 		testTransform(expectedArray, actualArray, actualList);
 	}
 
@@ -151,8 +151,8 @@ public final class DataUtilsTests {
 		for (int i=0; i<3; i++) {
 			expectedArray[i] = Math.log(VALUES[i]);
 		}
-		actualArray = DataUtils.ln(valueArray());
-		actualList = DataUtils.ln(valueList());
+		actualArray = Data.ln(valueArray());
+		actualList = Data.ln(valueList());
 		testTransform(expectedArray, actualArray, actualList);
 	}
 
@@ -165,8 +165,8 @@ public final class DataUtilsTests {
 		for (int i=0; i<3; i++) {
 			expectedArray[i] = Math.pow(10, VALUES[i]);
 		}
-		actualArray = DataUtils.pow10(valueArray());
-		actualList = DataUtils.pow10(valueList());
+		actualArray = Data.pow10(valueArray());
+		actualList = Data.pow10(valueList());
 		testTransform(expectedArray, actualArray, actualList);
 	}
 
@@ -179,8 +179,8 @@ public final class DataUtilsTests {
 		for (int i=0; i<3; i++) {
 			expectedArray[i] = Math.log10(VALUES[i]);
 		}
-		actualArray = DataUtils.log(valueArray());
-		actualList = DataUtils.log(valueList());
+		actualArray = Data.log(valueArray());
+		actualList = Data.log(valueList());
 		testTransform(expectedArray, actualArray, actualList);
 	}
 	
@@ -190,15 +190,15 @@ public final class DataUtilsTests {
 
 		// flip arrays
 		expectedArray = new double[] { -1.0, -10.0, -100.0 };
-		actualArray = DataUtils.flip(valueArray());
-		actualList = DataUtils.flip(valueList());
+		actualArray = Data.flip(valueArray());
+		actualList = Data.flip(valueList());
 		testTransform(expectedArray, actualArray, actualList);
 	}
 	
 	@Test public final void testSum() {
 		double expected = 111.0;
-		assertEquals(expected, DataUtils.sum(valueArray()), 0.0);
-		assertEquals(expected, DataUtils.sum(valueList()), 0.0);
+		assertEquals(expected, Data.sum(valueArray()), 0.0);
+		assertEquals(expected, Data.sum(valueList()), 0.0);
 	}
 
 
-- 
GitLab