diff --git a/ACKNOWLEDGEMENTS.md b/ACKNOWLEDGEMENTS.md deleted file mode 100644 index 287d6775d6458d22fe80fa24e97b009e1df69228..0000000000000000000000000000000000000000 --- a/ACKNOWLEDGEMENTS.md +++ /dev/null @@ -1,14 +0,0 @@ -# Acknowledgements - -This software was developed to meet the U.S. Geological Survey's need for a -high-performance probabilistic seismic hazard (PSHA) engine capable of supporting -increasingly complex earthquake hazard models via web-services. It leverages and -benefits from many design and performance features found in -[OpenSHA](http://www.opensha.org) and the legacy [USGS fortran codes](/usgs/nshmp-haz-fortran), -both of which have been supported by the USGS and others over many years. In particular, -the Southern California Earthquake Center ([SCEC](https://www.scec.org)) has been instrumental -in the continued development of OpenSHA, which is in use worldwide. - -This software is not a replacement for OpenSHA and does not provide a public API for PSHA -development. In the near future, `nshmp-haz` will likely be added as a dependency in OpenSHA -so that it's users may gain access to the most current USGS hazard models. diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000000000000000000000000000000000000..adc2dc1bbd2936711c1f7b5bd5b6f8311fbac305 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,6 @@ +# Code of Conduct + +All contributions to and interactions surrounding this project will abide by +the [USGS Code of Scientific Conduct][1]. + +[1]: https://www2.usgs.gov/fsp/fsp_code_of_scientific_conduct.asp diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000000000000000000000000000000000000..d391f6d24925f2ace086ae680ed0f33567bbd572 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,15 @@ +# Contributing + +Contributions are welcome from the community. Questions can be asked on the +[issues page][1]. Before creating a new issue, please take a moment to search +and make sure a similar issue does not already exist. If one does exist, you +can comment (most simply even with just a `:+1:`) to show your support for that +issue. + +If you have direct contributions you would like considered for incorporation +into the project you can [fork this repository][2] and +[submit a merge request][3] for review. + +[1]: https://code.usgs.gov/ghsc/nshmp/nshm-fault-sections/issues +[2]: https://docs.gitlab.com/ee/gitlab-basics/fork-project.html +[3]: https://docs.gitlab.com/ee/gitlab-basics/add-merge-request.html diff --git a/DISCLAIMER.md b/DISCLAIMER.md index d9d9d57bf8662402a45a9b13b80e6ea2e101bb4a..ec593eb18c6dc06781a39be052b8a14b03fcef77 100644 --- a/DISCLAIMER.md +++ b/DISCLAIMER.md @@ -1,12 +1,11 @@ # Disclaimer -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE -FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Information provided by this software may be preliminary or provisional and is subject to -revision. It is being provided to meet the need for timely best science. The information is -provided on the condition that neither the U.S. Geological Survey nor the U.S. Government -shall be held liable for any damages resulting from the authorized or unauthorized use of the information. +This software has been approved for release by the U.S. Geological Survey +(USGS). Although the software has been subjected to rigorous review, the USGS +reserves the right to update the software as needed pursuant to further analysis +and review. No warranty, expressed or implied, is made by the USGS or the U.S. +Government as to the functionality of the software and related material nor +shall the fact of release constitute any such warranty. Furthermore, the +software is released on condition that neither the USGS nor the U.S. Government +shall be held liable for any damages resulting from its authorized or +unauthorized use. diff --git a/LICENSE.md b/LICENSE.md index c0356e39a8f34a44d782ef69381506cb9ea47b2d..e98788f39d0120e4d3e24974415992974807047a 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,22 +1,37 @@ # License -Unless otherwise noted, this software is in the public domain because it contains materials -that originally came from the U.S. Geological Survey (USGS), an agency of the U.S. Department -of Interior. For more information, see the official USGS -[copyright policy](http://www.usgs.gov/visual-id/credit_usgs.html#copyright). +Unless otherwise noted, this project is in the public domain in the United +States because it contains materials that originally came from the United +States Geological Survey, an agency of the United States Department of +Interior. For more information, see the official USGS copyright policy at +<https://www2.usgs.gov/visual-id/credit_usgs.html#copyright> -Dependent libraries managed by the [Gradle](https://gradle.org) build tool are distributed - under open source (or open source-like) licenses. Links to appropriate license agreements - for each can be found below. +Additionally, we waive copyright and related rights in the work +worldwide through the CC0 1.0 Universal public domain dedication. -## Runtime language and libraries +## CC0 1.0 Universal Summary -- [Java 8](http://www.oracle.com/technetwork/java/javase/terms/license) -- [Google Guava 26.0](https://github.com/google/guava/blob/master/COPYING) -- [Google Gson 2.8.5](https://github.com/google/gson/blob/master/LICENSE) +This is a human-readable summary of the +[Legal Code (read the full text)](https://creativecommons.org/publicdomain/zero/1.0/legalcode). -## Build tools and libraries +### No Copyright -- [Gradle](https://github.com/gradle/gradle/blob/master/LICENSE) -- [JUnit](http://junit.org/junit4/license.html) -- [JaCoCo](http://www.jacoco.org/jacoco/trunk/doc/license.html) +The person who associated a work with this deed has dedicated the work to +the public domain by waiving all of his or her rights to the work worldwide +under copyright law, including all related and neighboring rights, to the +extent allowed by law. + +You can copy, modify, distribute and perform the work, even for commercial +purposes, all without asking permission. + +### Other Information + +In no way are the patent or trademark rights of any person affected by CC0, +nor are the rights that other persons may have in the work or in how the +work is used, such as publicity or privacy rights. + +Unless expressly stated otherwise, the person who associated a work with +this deed makes no warranties about the work, and disclaims liability for +all uses of the work, to the fullest extent permitted by applicable law. +When using or citing the work, you should not imply endorsement by the +author or the affirmer. diff --git a/README.md b/README.md index a1abe1fcba2bc68d92fa8dca7acd072cbc264ac7..c9e65afd93765a2a47388800c1b724560a7b1288 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,11 @@ # nshmp-haz -U.S. Geological Survey ([USGS](https://www.usgs.gov)) National Seismic Hazard Mapping Project -([NSHMP](https://earthquake.usgs.gov/hazards/)) code for performing probabilistic seismic hazard -(PSHA) and related analyses. These codes are intended for use with seismic hazard models -developed by the NSHMP for the U.S. and its territories. +U.S. Geological Survey ([USGS](https://www.usgs.gov)) National Seismic Hazard Model Project +([NSHMP](https://earthquake.usgs.gov/hazards/)) codes for performing probabilistic seismic +hazard (PSHA) and related analyses. These codes are intended for use with seismic hazard models +developed by the NSHMP for the U.S. and its territories. This project includes a variety of +command line applications and web service classes and relies on the +[*nshmp-lib*](https://code.usgs.gov/ghsc/nshmp/nshmp-lib) hazard library, among other +dependencies. -Please see the [wiki](https://code.usgs.gov/ghsc/nshmp/nshmp-haz-v2/wikis/home) -for more information. +Please see the [docs](https://code.usgs.gov/ghsc/nshmp/nshmp-haz/docs) for more information. diff --git a/src/main/java/gov/usgs/earthquake/nshmp/DeaggEpsilon.java b/src/main/java/gov/usgs/earthquake/nshmp/DeaggEpsilon.java index 8fec4b64a3ed5f52f354309cf9f37485a9432b18..c8a5e293b3184cd27093e8f6de92ddada244eb1e 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/DeaggEpsilon.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/DeaggEpsilon.java @@ -10,7 +10,6 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.EnumMap; -import java.util.EnumSet; import java.util.List; import java.util.Map; import java.util.Optional; @@ -91,11 +90,7 @@ public class DeaggEpsilon { log.info(PROGRAM + ": " + HazardCalc.VERSION); Path modelPath = Paths.get(args[0]); - Path wusPath = modelPath.resolve("Western US"); - Path ceusPath = modelPath.resolve("Central & Eastern US"); - - HazardModel wusModel = HazardModel.load(wusPath); - HazardModel ceusModel = HazardModel.load(ceusPath); + HazardModel model = HazardModel.load(modelPath); log.info(""); Path siteFile = Paths.get(args[1]); @@ -105,22 +100,16 @@ public class DeaggEpsilon { int colsToSkip = headerCount(siteFile); List<Imt> imts = readImtList(siteFile, colsToSkip); - CalcConfig wusConfig = wusModel.config(); - CalcConfig ceusConfig = ceusModel.config(); + CalcConfig config = model.config(); if (argCount == 3) { Path userConfigPath = Paths.get(args[2]); - wusConfig = CalcConfig.copyOf(wusModel.config()) - .extend(CalcConfig.from(userConfigPath)) - .imts(EnumSet.copyOf(imts)) - .build(); - ceusConfig = CalcConfig.copyOf(ceusModel.config()) + config = CalcConfig.copyOf(model.config()) .extend(CalcConfig.from(userConfigPath)) - .imts(EnumSet.copyOf(imts)) .build(); } - log.info(wusConfig.toString()); + log.info(config.toString()); - List<Site> sites = ImmutableList.copyOf(Sites.fromCsv(siteFile, wusConfig, true)); + List<Site> sites = ImmutableList.copyOf(Sites.fromCsv(siteFile, config, true)); log.info("Sites: " + sites.size()); log.info("Site data columns: " + colsToSkip); @@ -129,14 +118,14 @@ public class DeaggEpsilon { checkArgument(sites.size() == imtImlMaps.size(), "Sites and spectra lists different sizes"); - Path out = calc(wusModel, wusConfig, ceusModel, ceusConfig, sites, imtImlMaps, log); + Path out = calc(model, config, sites, imtImlMaps, log); log.info(PROGRAM + ": finished"); /* Transfer log and write config, windows requires fh.close() */ fh.close(); Files.move(tmpLog, out.resolve(PROGRAM + ".log")); - wusConfig.write(out); + config.write(out); return Optional.empty(); @@ -196,16 +185,14 @@ public class DeaggEpsilon { * HazardCalc.calc() that will trigger deaggregations if the value is present. */ private static Path calc( - HazardModel wusModel, - CalcConfig wusConfig, - HazardModel ceusModel, - CalcConfig ceusConfig, + HazardModel model, + CalcConfig config, List<Site> sites, List<Map<Imt, Double>> rtrSpectra, Logger log) throws IOException { ExecutorService exec = null; - ThreadCount threadCount = wusConfig.performance.threadCount; + ThreadCount threadCount = config.performance.threadCount; if (threadCount == ThreadCount.ONE) { exec = MoreExecutors.newDirectExecutorService(); log.info("Threads: Running on calling thread"); @@ -215,7 +202,7 @@ public class DeaggEpsilon { } log.info(PROGRAM + ": calculating ..."); - Path outDir = createOutputDir(wusConfig.output.directory); + Path outDir = createOutputDir(config.output.directory); Path siteDir = outDir.resolve("vs30-" + (int) sites.get(0).vs30); Files.createDirectory(siteDir); @@ -226,24 +213,11 @@ public class DeaggEpsilon { Site site = sites.get(i); Map<Imt, Double> spectrum = rtrSpectra.get(i); - Hazard wusHazard = null; - if (site.location.longitude <= -100.0) { - wusHazard = HazardCalcs.hazard(wusModel, wusConfig, site, exec); - } - Hazard ceusHazard = null; - if (site.location.longitude > -115.0) { - ceusHazard = HazardCalcs.hazard(ceusModel, ceusConfig, site, exec); - } - Hazard cousHazard = (wusHazard == null) - ? ceusHazard - : (ceusHazard == null) - ? wusHazard - : Hazard.merge(wusHazard, ceusHazard); - - Disaggregation disagg = Disaggregation.atImls(cousHazard, spectrum, exec); + Hazard hazard = HazardCalcs.hazard(model, config, site, exec); + Disaggregation disagg = Disaggregation.atImls(hazard, spectrum, exec); List<Response> responses = new ArrayList<>(spectrum.size()); - for (Imt imt : wusConfig.hazard.imts) { + for (Imt imt : config.hazard.imts) { ResponseData imtMetadata = new ResponseData( ImmutableList.of(), site,