Skip to content
Snippets Groups Projects
Commit 03d90590 authored by Clayton, Brandon Scott's avatar Clayton, Brandon Scott
Browse files

move some to NshmTests

parent 8ea5743a
No related branches found
No related tags found
2 merge requests!681Production Release | nshmp-haz,!680NSHM Unit Tests
...@@ -9,11 +9,8 @@ import java.lang.reflect.Type; ...@@ -9,11 +9,8 @@ import java.lang.reflect.Type;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.EnumSet;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.Set;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -30,37 +27,12 @@ import gov.usgs.earthquake.nshmp.calc.Hazard; ...@@ -30,37 +27,12 @@ import gov.usgs.earthquake.nshmp.calc.Hazard;
import gov.usgs.earthquake.nshmp.calc.HazardCalcs; import gov.usgs.earthquake.nshmp.calc.HazardCalcs;
import gov.usgs.earthquake.nshmp.calc.Site; import gov.usgs.earthquake.nshmp.calc.Site;
import gov.usgs.earthquake.nshmp.data.XySequence; import gov.usgs.earthquake.nshmp.data.XySequence;
import gov.usgs.earthquake.nshmp.gmm.Imt; import gov.usgs.earthquake.nshmp.model.NshmTests.Nshm;
import gov.usgs.earthquake.nshmp.site.NshmpSite;
/** /**
* Utilities to run tests on a NSHM. * Utilities to run tests on a NSHM.
*/ */
class NshmTestUtils { class NshmTestUtils {
/* Alaska test sites */
private static final List<NamedLocation> ALASKA_LOCATIONS = List.of(
NshmpSite.ANCHORAGE_AK);
/* CONUS test sites */
private static final List<NamedLocation> CONUS_LOCATIONS = List.of(
NshmpSite.LOS_ANGELES_CA,
NshmpSite.SAN_FRANCISCO_CA,
NshmpSite.SEATTLE_WA,
NshmpSite.SALT_LAKE_CITY_UT,
NshmpSite.RENO_NV,
NshmpSite.NEW_MADRID_MO,
NshmpSite.BOSTON_MA,
NshmpSite.NEW_YORK_NY,
NshmpSite.CHICAGO_IL);
/* Hawaii test sites */
private static final List<NamedLocation> HAWAII_LOCATIONS = List.of(
NshmpSite.HILO_HI,
NshmpSite.HONOLULU_HI,
NshmpSite.KAILUA_KONA_HI);
private static final Set<Imt> IMTS = EnumSet.of(Imt.PGA, Imt.SA0P2, Imt.SA1P0, Imt.SA5P0);
private static final Path DATA_PATH = Paths.get("src/test/resources/e2e"); private static final Path DATA_PATH = Paths.get("src/test/resources/e2e");
private static final double TOLERANCE = 1e-12; private static final double TOLERANCE = 1e-12;
...@@ -69,6 +41,11 @@ class NshmTestUtils { ...@@ -69,6 +41,11 @@ class NshmTestUtils {
.setPrettyPrinting() .setPrettyPrinting()
.create(); .create();
/**
* Generate results for all {@link NSHM}s
*
* Run "./gradlew nshms" to first download all NSHMs
*/
public static void main(String[] args) throws IOException { public static void main(String[] args) throws IOException {
for (Nshm nshm : Nshm.values()) { for (Nshm nshm : Nshm.values()) {
/* Initialize and shut down executor to generate results. */ /* Initialize and shut down executor to generate results. */
...@@ -86,7 +63,7 @@ class NshmTestUtils { ...@@ -86,7 +63,7 @@ class NshmTestUtils {
static final void testNshm(Nshm nshm) { static final void testNshm(Nshm nshm) {
NshmModel nshmModel = loadModel(nshm); NshmModel nshmModel = loadModel(nshm);
for (NamedLocation location : nshm.locations) { for (NamedLocation location : nshm.locations()) {
compareCurves(nshmModel, location); compareCurves(nshmModel, location);
} }
...@@ -129,12 +106,13 @@ class NshmTestUtils { ...@@ -129,12 +106,13 @@ class NshmTestUtils {
} }
} }
private static Map<String, XySequence> generateActual(NshmModel nshmModel, private static Map<String, XySequence> generateActual(
NshmModel nshmModel,
NamedLocation location) { NamedLocation location) {
Site site = Site.builder().location(location.location()).build(); Site site = Site.builder().location(location.location()).build();
CalcConfig config = CalcConfig.copyOf(nshmModel.model.config()) CalcConfig config = CalcConfig.copyOf(nshmModel.model.config())
.imts(nshmModel.nshm.imts) .imts(nshmModel.nshm.imts())
.build(); .build();
Hazard hazard = HazardCalcs.hazard( Hazard hazard = HazardCalcs.hazard(
...@@ -156,20 +134,14 @@ class NshmTestUtils { ...@@ -156,20 +134,14 @@ class NshmTestUtils {
return new NshmModel( return new NshmModel(
nshm, nshm,
ModelLoader.load(nshm.modelPath), ModelLoader.load(nshm.modelPath()),
Executors.newFixedThreadPool(cores)); Executors.newFixedThreadPool(cores));
} }
private static String resultFilename(
String modelName,
int year,
NamedLocation loc) {
return modelName + "-" + year + "-" + loc.name() + ".json";
}
private static Map<String, XySequence> readExpected(NshmModel nshmModel, NamedLocation loc) { private static Map<String, XySequence> readExpected(NshmModel nshmModel, NamedLocation loc) {
String filename = resultFilename(nshmModel.nshm.modelName, nshmModel.nshm.year, loc); Path resultPath = DATA_PATH
Path resultPath = DATA_PATH.resolve(nshmModel.nshm.modelName).resolve(filename); .resolve(nshmModel.nshm.modelName())
.resolve(nshmModel.nshm.resultFilename(loc));
JsonObject obj = null; JsonObject obj = null;
try (BufferedReader br = Files.newBufferedReader(resultPath)) { try (BufferedReader br = Files.newBufferedReader(resultPath)) {
...@@ -188,24 +160,22 @@ class NshmTestUtils { ...@@ -188,24 +160,22 @@ class NshmTestUtils {
} }
private static void writeExpecteds(NshmModel nshmModel) throws IOException { private static void writeExpecteds(NshmModel nshmModel) throws IOException {
for (NamedLocation location : nshmModel.nshm.locations) { for (NamedLocation location : nshmModel.nshm.locations()) {
Map<String, XySequence> xyMap = generateActual(nshmModel, location); Map<String, XySequence> xyMap = generateActual(nshmModel, location);
String json = GSON.toJson(xyMap); String json = GSON.toJson(xyMap);
writeExpected(nshmModel.nshm.modelName, nshmModel.nshm.year, location, json); writeExpected(nshmModel.nshm, location, json);
} }
} }
private static void writeExpected( private static void writeExpected(
String modelName, Nshm nshm,
int year,
NamedLocation loc, NamedLocation loc,
String json) throws IOException { String json) throws IOException {
String filename = resultFilename(modelName, year, loc); Path modelDir = DATA_PATH.resolve(nshm.modelName());
Path modelDir = DATA_PATH.resolve(modelName);
if (!Files.exists(modelDir)) { if (!Files.exists(modelDir)) {
Files.createDirectories(modelDir); Files.createDirectories(modelDir);
} }
Path resultPath = modelDir.resolve(filename); Path resultPath = modelDir.resolve(nshm.resultFilename(loc));
Files.write(resultPath, json.getBytes()); Files.write(resultPath, json.getBytes());
} }
...@@ -231,28 +201,4 @@ class NshmTestUtils { ...@@ -231,28 +201,4 @@ class NshmTestUtils {
this.exec = exec; this.exec = exec;
} }
} }
static enum Nshm {
ALASKA_2023("nshm-alaska-3.a.0", ALASKA_LOCATIONS, IMTS),
CONUS_2018("nshm-conus-5.2.0", CONUS_LOCATIONS, IMTS),
CONUS_2023("nshm-conus-6.a.3", CONUS_LOCATIONS, IMTS),
HAWAII_2021("nshm-hawaii-2.0.2", HAWAII_LOCATIONS, IMTS);
private final Path modelPath;
private final String modelName;
private final List<NamedLocation> locations;
private final Set<Imt> imts;
private final int year;
Nshm(String modelName, List<NamedLocation> locations, Set<Imt> imts) {
this.locations = locations;
this.imts = imts;
this.modelName = modelName;
this.modelPath = Paths.get("nshms", modelName);
this.year = Integer.parseInt(name().split("_")[1]);
}
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment