From a946e5c3665e4aeec2e659f5bf9eefbf8cd5ff5e Mon Sep 17 00:00:00 2001 From: Peter Powers <pmpowers@usgs.gov> Date: Sun, 30 Jan 2022 09:26:04 -0700 Subject: [PATCH] removed stale GridLoader.GrLoader --- .../earthquake/nshmp/model/GridLoader.java | 175 +----------------- 1 file changed, 4 insertions(+), 171 deletions(-) diff --git a/src/main/java/gov/usgs/earthquake/nshmp/model/GridLoader.java b/src/main/java/gov/usgs/earthquake/nshmp/model/GridLoader.java index 63b7b056..f271e0ae 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/model/GridLoader.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/model/GridLoader.java @@ -4,15 +4,12 @@ import static com.google.common.base.Preconditions.checkState; import static gov.usgs.earthquake.nshmp.model.Deserialize.MFD_TREE; import static java.lang.Math.log10; import static java.util.stream.Collectors.toUnmodifiableList; -import static java.util.stream.Collectors.toUnmodifiableMap; import java.nio.file.Path; import java.util.ArrayList; import java.util.EnumMap; -import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Map.Entry; import java.util.Optional; import java.util.OptionalDouble; import java.util.stream.Stream; @@ -71,7 +68,7 @@ class GridLoader { String mfdTreeKey, ModelData data) { - GrLoader2 loader = new GrLoader2(id, name, featureId, mfdTreeKey, data); + GrLoader loader = new GrLoader(id, name, featureId, mfdTreeKey, data); return loader.createSlabRuptureSet(); } @@ -92,7 +89,7 @@ class GridLoader { IncrLoader loader = new IncrLoader(id, name, featureId, mfdTreeKey, data); return loader.createRuptureSet(); } else { - GrLoader2 loader = new GrLoader2(id, name, featureId, mfdTreeKey, data); + GrLoader loader = new GrLoader(id, name, featureId, mfdTreeKey, data); return loader.createGridRuptureSet(); } } @@ -206,172 +203,8 @@ class GridLoader { return fmMap; } - private static class GrLoader { - - private final ModelData data; - private final Map<Integer, SourceFeature.Grid> featureMap; - private final Path pdfPath; - private final Map<Integer, LogicTree<Mfd>> modelMfdTrees; - private final Map<Integer, FeatureData> dataMap; - - private GrLoader(ModelData data) { - - this.data = data; - this.featureMap = data.gridFeatureMap().orElseThrow(); - this.pdfPath = data.gridRateFile().orElseThrow(); - this.modelMfdTrees = createModelMfds(); - this.dataMap = featureMap.keySet().stream() - .collect(toUnmodifiableMap( - i -> i, - i -> new FeatureData())); - processNodes(); - } - - private List<GridRuptureSet> createGridRuptureSets() { - List<GridRuptureSet> ruptureSets = new ArrayList<>(); - for (Entry<Integer, FeatureData> entry : dataMap.entrySet()) { - SourceFeature.Grid feature = featureMap.get(entry.getKey()); - FeatureData featureData = dataMap.get(entry.getKey()); - GridRuptureSet grs = GridRuptureSet.builder() - .feature(feature) - .modelData(data) - .nodeData( - featureData.locations, - featureData.mfds, - featureData.mfdsTree, - Optional.empty()) - .build(); - ruptureSets.add(grs); - } - return ruptureSets; - } - - private List<SlabRuptureSet> createSlabRuptureSets() { - List<SlabRuptureSet> ruptureSets = new ArrayList<>(); - for (Entry<Integer, FeatureData> entry : dataMap.entrySet()) { - SourceFeature.Grid feature = featureMap.get(entry.getKey()); - FeatureData featureData = dataMap.get(entry.getKey()); - SlabRuptureSet.Builder srsb = SlabRuptureSet.builder(); - srsb.feature(feature) - .modelData(data) - .nodeData( - featureData.locations, - featureData.mfds, - featureData.mfdsTree, - Optional.empty()); - ruptureSets.add(srsb.build()); - } - return ruptureSets; - } - - private void processNodes() { - DelimitedData data = DelimitedData.comma(pdfPath); - /* May or may not have mMax column in rate file. */ - boolean mMaxPresent = data.columnKeys().contains(Key.MMAX); - try (Stream<Record> s = data.records()) { - s.forEach(record -> processRecord(record, mMaxPresent)); - } - - /* Create total MFDs and transpose mfd tree lists. */ - for (FeatureData featureData : dataMap.values()) { - featureData.mfds = reduceMfds(featureData.mfdTrees); - featureData.mfdsTree = Trees.transpose(featureData.mfdTrees); - } - } - - private List<Mfd> reduceMfds(List<LogicTree<Mfd>> mfdTrees) { - return mfdTrees.stream() - .map(ModelTrees::reduceMfdTree) - .collect(toUnmodifiableList()); - } - - // private boolean temp = true; - - private void processRecord(Record record, boolean mMaxPresent) { - - Location loc = Location.create( - record.getDouble(Key.LON), - record.getDouble(Key.LAT)); - double a = Math.log10(record.getDouble(Key.PDF)); - OptionalDouble mMax = mMaxPresent - ? record.getOptionalDouble(Key.MMAX) - : OptionalDouble.empty(); - - Optional<Integer> gridIdOpt = gridFeatureForLocation(loc); - // if (gridIdOpt.isEmpty()) { - // return; - // } - Integer gridId = gridIdOpt.orElseThrow(); - - FeatureData featureData = dataMap.get(gridId); - featureData.locations.add(loc); - - LogicTree<Mfd> modelMfds = modelMfdTrees.get(gridId); - LogicTree<Mfd> nodeMfds = createNodeMfdTree(modelMfds, a, mMax); - - // if (temp) { - // System.out.println(nodeMfds); - // System.out.println(a + " " + mMax); - // for (Branch<Mfd> branch : nodeMfds) { - // System.out.println(branch.value().properties().getAsGr().mMin()); - // System.out.println(branch.value()); - // } - // temp = false; - // } - featureData.mfdTrees.add(nodeMfds); - } - - private LogicTree<Mfd> createNodeMfdTree( - LogicTree<Mfd> modelTree, - double a, - OptionalDouble mMax) { - - LogicTree.Builder<Mfd> nodeMfdTree = LogicTree.builder(MFD_TREE); - for (Branch<Mfd> branch : modelTree) { - - Mfd.Properties.GutenbergRichter grProps = branch.value().properties().getAsGr(); - double mMin = grProps.mMin() + grProps.Δm() * 0.5; - double rate = Mfds.gutenbergRichterRate(a, grProps.b(), mMin); - Mfd.Builder nodeMfd = Mfd.Builder.from(branch.value()) - .scaleToIncrementalRate(rate); - mMax.ifPresent(m -> truncate(grProps, nodeMfd, m)); - nodeMfdTree.addBranch( - branch.id(), - nodeMfd.build(), - branch.weight()); - } - return nodeMfdTree.build(); - } - - /* - * Check that each MFD logic tree consists fo the same type, has the same - * mMin and Δm. This ensures we'll be able to create different mMax MFDs - * with the same magnitude bins. - */ - private Map<Integer, LogicTree<Mfd>> createModelMfds() { - Map<Integer, LogicTree<Mfd>> modelMfds = new HashMap<>(); - for (Entry<Integer, SourceFeature.Grid> entry : featureMap.entrySet()) { - SourceFeature.Grid grid = entry.getValue(); - LogicTree<Mfd.Properties> propsTree = Deserialize.mfdTree( - grid.source.properties(), - data); - LogicTree<Mfd> mfdTree = ModelTrees.grPropsTreeToMmaxMfdTree(propsTree); - modelMfds.put(entry.getKey(), mfdTree); - } - return Map.copyOf(modelMfds); - } - - @Deprecated - private Optional<Integer> gridFeatureForLocation(Location location) { - return featureMap.values().stream() - .filter(grid -> grid.contains(location)) - .map(grid -> grid.id) - .findFirst(); - } - } - /* Handles logic trees of GR MFDs and multiple features. */ - private static class GrLoader2 { + private static class GrLoader { private final int id; private final String name; @@ -382,7 +215,7 @@ class GridLoader { private final LogicTree<Mfd> modelMfdTree; private final FeatureData featureData; - private GrLoader2( + private GrLoader( int id, String name, int featureId, -- GitLab