From fe1291cf4b44e9ca9d970a3ebd6b056f0f1a3cd2 Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Thu, 3 Nov 2022 08:55:51 -0600 Subject: [PATCH 01/12] rename --- .../{models => }/calc/exceedance-model.util.ts | 0 src/nshmp-lib/{models => }/calc/index.ts | 0 src/nshmp-lib/{models => }/calc/maths.util.ts | 0 src/nshmp-lib/{models => }/data/index.ts | 0 .../{models => }/data/uncertainty-model.model.ts | 0 .../{models => }/data/xy-sequence.model.ts | 0 src/nshmp-lib/{models => }/geo/basin.model.ts | 0 src/nshmp-lib/{models => }/geo/index.ts | 0 src/nshmp-lib/{models => }/geo/region.model.ts | 0 src/nshmp-lib/{models => }/geo/site.model.ts | 0 src/nshmp-lib/{models => }/gmm/gmm-input.model.ts | 0 src/nshmp-lib/{models => }/gmm/gmm.model.ts | 0 src/nshmp-lib/{models => }/gmm/imt.model.ts | 0 src/nshmp-lib/{models => }/gmm/index.ts | 0 .../{models => }/gmm/nehrp-site-class.model.ts | 0 src/nshmp-lib/{models => }/gmm/rate-type.model.ts | 0 src/nshmp-lib/index.ts | 13 +++++-------- src/nshmp-lib/model/index.ts | 4 ++++ src/nshmp-lib/{models => }/model/mfd.ts | 8 ++++---- src/nshmp-lib/{models => }/model/models.ts | 0 src/nshmp-lib/{models => }/model/source-type.ts | 0 .../{models => }/model/tectonic-setting.ts | 0 src/nshmp-lib/models/model/index.ts | 4 ---- src/nshmp-lib/nshm/index.ts | 2 ++ src/nshmp-lib/{models => nshm}/nshm-region.model.ts | 0 src/nshmp-lib/{models => nshm}/nshm.model.ts | 0 26 files changed, 15 insertions(+), 16 deletions(-) rename src/nshmp-lib/{models => }/calc/exceedance-model.util.ts (100%) rename src/nshmp-lib/{models => }/calc/index.ts (100%) rename src/nshmp-lib/{models => }/calc/maths.util.ts (100%) rename src/nshmp-lib/{models => }/data/index.ts (100%) rename src/nshmp-lib/{models => }/data/uncertainty-model.model.ts (100%) rename src/nshmp-lib/{models => }/data/xy-sequence.model.ts (100%) rename src/nshmp-lib/{models => }/geo/basin.model.ts (100%) rename src/nshmp-lib/{models => }/geo/index.ts (100%) rename src/nshmp-lib/{models => }/geo/region.model.ts (100%) rename src/nshmp-lib/{models => }/geo/site.model.ts (100%) rename src/nshmp-lib/{models => }/gmm/gmm-input.model.ts (100%) rename src/nshmp-lib/{models => }/gmm/gmm.model.ts (100%) rename src/nshmp-lib/{models => }/gmm/imt.model.ts (100%) rename src/nshmp-lib/{models => }/gmm/index.ts (100%) rename src/nshmp-lib/{models => }/gmm/nehrp-site-class.model.ts (100%) rename src/nshmp-lib/{models => }/gmm/rate-type.model.ts (100%) create mode 100644 src/nshmp-lib/model/index.ts rename src/nshmp-lib/{models => }/model/mfd.ts (73%) rename src/nshmp-lib/{models => }/model/models.ts (100%) rename src/nshmp-lib/{models => }/model/source-type.ts (100%) rename src/nshmp-lib/{models => }/model/tectonic-setting.ts (100%) delete mode 100644 src/nshmp-lib/models/model/index.ts create mode 100644 src/nshmp-lib/nshm/index.ts rename src/nshmp-lib/{models => nshm}/nshm-region.model.ts (100%) rename src/nshmp-lib/{models => nshm}/nshm.model.ts (100%) diff --git a/src/nshmp-lib/models/calc/exceedance-model.util.ts b/src/nshmp-lib/calc/exceedance-model.util.ts similarity index 100% rename from src/nshmp-lib/models/calc/exceedance-model.util.ts rename to src/nshmp-lib/calc/exceedance-model.util.ts diff --git a/src/nshmp-lib/models/calc/index.ts b/src/nshmp-lib/calc/index.ts similarity index 100% rename from src/nshmp-lib/models/calc/index.ts rename to src/nshmp-lib/calc/index.ts diff --git a/src/nshmp-lib/models/calc/maths.util.ts b/src/nshmp-lib/calc/maths.util.ts similarity index 100% rename from src/nshmp-lib/models/calc/maths.util.ts rename to src/nshmp-lib/calc/maths.util.ts diff --git a/src/nshmp-lib/models/data/index.ts b/src/nshmp-lib/data/index.ts similarity index 100% rename from src/nshmp-lib/models/data/index.ts rename to src/nshmp-lib/data/index.ts diff --git a/src/nshmp-lib/models/data/uncertainty-model.model.ts b/src/nshmp-lib/data/uncertainty-model.model.ts similarity index 100% rename from src/nshmp-lib/models/data/uncertainty-model.model.ts rename to src/nshmp-lib/data/uncertainty-model.model.ts diff --git a/src/nshmp-lib/models/data/xy-sequence.model.ts b/src/nshmp-lib/data/xy-sequence.model.ts similarity index 100% rename from src/nshmp-lib/models/data/xy-sequence.model.ts rename to src/nshmp-lib/data/xy-sequence.model.ts diff --git a/src/nshmp-lib/models/geo/basin.model.ts b/src/nshmp-lib/geo/basin.model.ts similarity index 100% rename from src/nshmp-lib/models/geo/basin.model.ts rename to src/nshmp-lib/geo/basin.model.ts diff --git a/src/nshmp-lib/models/geo/index.ts b/src/nshmp-lib/geo/index.ts similarity index 100% rename from src/nshmp-lib/models/geo/index.ts rename to src/nshmp-lib/geo/index.ts diff --git a/src/nshmp-lib/models/geo/region.model.ts b/src/nshmp-lib/geo/region.model.ts similarity index 100% rename from src/nshmp-lib/models/geo/region.model.ts rename to src/nshmp-lib/geo/region.model.ts diff --git a/src/nshmp-lib/models/geo/site.model.ts b/src/nshmp-lib/geo/site.model.ts similarity index 100% rename from src/nshmp-lib/models/geo/site.model.ts rename to src/nshmp-lib/geo/site.model.ts diff --git a/src/nshmp-lib/models/gmm/gmm-input.model.ts b/src/nshmp-lib/gmm/gmm-input.model.ts similarity index 100% rename from src/nshmp-lib/models/gmm/gmm-input.model.ts rename to src/nshmp-lib/gmm/gmm-input.model.ts diff --git a/src/nshmp-lib/models/gmm/gmm.model.ts b/src/nshmp-lib/gmm/gmm.model.ts similarity index 100% rename from src/nshmp-lib/models/gmm/gmm.model.ts rename to src/nshmp-lib/gmm/gmm.model.ts diff --git a/src/nshmp-lib/models/gmm/imt.model.ts b/src/nshmp-lib/gmm/imt.model.ts similarity index 100% rename from src/nshmp-lib/models/gmm/imt.model.ts rename to src/nshmp-lib/gmm/imt.model.ts diff --git a/src/nshmp-lib/models/gmm/index.ts b/src/nshmp-lib/gmm/index.ts similarity index 100% rename from src/nshmp-lib/models/gmm/index.ts rename to src/nshmp-lib/gmm/index.ts diff --git a/src/nshmp-lib/models/gmm/nehrp-site-class.model.ts b/src/nshmp-lib/gmm/nehrp-site-class.model.ts similarity index 100% rename from src/nshmp-lib/models/gmm/nehrp-site-class.model.ts rename to src/nshmp-lib/gmm/nehrp-site-class.model.ts diff --git a/src/nshmp-lib/models/gmm/rate-type.model.ts b/src/nshmp-lib/gmm/rate-type.model.ts similarity index 100% rename from src/nshmp-lib/models/gmm/rate-type.model.ts rename to src/nshmp-lib/gmm/rate-type.model.ts diff --git a/src/nshmp-lib/index.ts b/src/nshmp-lib/index.ts index e05f6db..ea79905 100644 --- a/src/nshmp-lib/index.ts +++ b/src/nshmp-lib/index.ts @@ -1,8 +1,5 @@ -export * from './models/calc'; -export * from './models/data'; -export * from './models/geo'; -export * from './models/gmm'; -export * from './models/model'; -export * as model from './models/model'; -export * from './models/nshm.model'; -export * from './models/nshm-region.model'; +export * as calc from './calc'; +export * as data from './data'; +export * as geo from './geo'; +export * as model from './model'; +export * as nshm from './nshm'; diff --git a/src/nshmp-lib/model/index.ts b/src/nshmp-lib/model/index.ts new file mode 100644 index 0000000..624e47b --- /dev/null +++ b/src/nshmp-lib/model/index.ts @@ -0,0 +1,4 @@ +export * from './mfd'; +export * from './models'; +export * from './source-type'; +export * from './tectonic-setting'; diff --git a/src/nshmp-lib/models/model/mfd.ts b/src/nshmp-lib/model/mfd.ts similarity index 73% rename from src/nshmp-lib/models/model/mfd.ts rename to src/nshmp-lib/model/mfd.ts index 629dc0b..31e91f7 100644 --- a/src/nshmp-lib/models/model/mfd.ts +++ b/src/nshmp-lib/model/mfd.ts @@ -9,7 +9,7 @@ export enum MfdType { SINGLE = 'SINGLE', } -export interface GutenbergRichter extends Properties { +export interface GutenbergRichter extends MfdProperties { a: number; b: number; Δm: number; @@ -19,14 +19,14 @@ export interface GutenbergRichter extends Properties { export interface Mfd { data: XySequence; - props: Properties; + props: MfdProperties; } -export interface Properties { +export interface MfdProperties { type: MfdType; } -export interface Single extends Properties { +export interface Single extends MfdProperties { m: number; rate: number; } diff --git a/src/nshmp-lib/models/model/models.ts b/src/nshmp-lib/model/models.ts similarity index 100% rename from src/nshmp-lib/models/model/models.ts rename to src/nshmp-lib/model/models.ts diff --git a/src/nshmp-lib/models/model/source-type.ts b/src/nshmp-lib/model/source-type.ts similarity index 100% rename from src/nshmp-lib/models/model/source-type.ts rename to src/nshmp-lib/model/source-type.ts diff --git a/src/nshmp-lib/models/model/tectonic-setting.ts b/src/nshmp-lib/model/tectonic-setting.ts similarity index 100% rename from src/nshmp-lib/models/model/tectonic-setting.ts rename to src/nshmp-lib/model/tectonic-setting.ts diff --git a/src/nshmp-lib/models/model/index.ts b/src/nshmp-lib/models/model/index.ts deleted file mode 100644 index 5b20569..0000000 --- a/src/nshmp-lib/models/model/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * as mfd from './mfd'; -export * as models from './models'; -export * as sourceType from './source-type'; -export * as tectonicSettings from './tectonic-setting'; diff --git a/src/nshmp-lib/nshm/index.ts b/src/nshmp-lib/nshm/index.ts new file mode 100644 index 0000000..1fe7851 --- /dev/null +++ b/src/nshmp-lib/nshm/index.ts @@ -0,0 +1,2 @@ +export * from './nshm.model'; +export * from './nshm-region.model'; diff --git a/src/nshmp-lib/models/nshm-region.model.ts b/src/nshmp-lib/nshm/nshm-region.model.ts similarity index 100% rename from src/nshmp-lib/models/nshm-region.model.ts rename to src/nshmp-lib/nshm/nshm-region.model.ts diff --git a/src/nshmp-lib/models/nshm.model.ts b/src/nshmp-lib/nshm/nshm.model.ts similarity index 100% rename from src/nshmp-lib/models/nshm.model.ts rename to src/nshmp-lib/nshm/nshm.model.ts -- GitLab From d978f298d4077332d92dc4ff52b8b6101e81185c Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Thu, 3 Nov 2022 09:15:06 -0600 Subject: [PATCH 02/12] refactor --- libs/aws/index.ts | 1 + libs/aws/run-nshmp-haz/dynamo-db-item.ts | 35 +++ libs/aws/run-nshmp-haz/index.ts | 4 + libs/aws/run-nshmp-haz/job-status.model.ts | 8 + .../aws/run-nshmp-haz/run-nshmp-haz-config.ts | 93 ++++++++ .../run-nshmp-haz/run-nshmp-haz-response.ts | 11 + libs/index.ts | 8 + libs/leaflet/index.ts | 4 + libs/leaflet/map-baselayer.model.ts | 66 ++++++ libs/leaflet/map.utils.ts | 214 ++++++++++++++++++ libs/nshmp-haz/index.ts | 2 + libs/nshmp-haz/www/constraint.model.ts | 5 + .../disagg-service/disagg-response.model.ts | 89 ++++++++ .../www/disagg-service/disagg-usage.model.ts | 15 ++ libs/nshmp-haz/www/disagg-service/index.ts | 2 + .../hazard-service/hazard-response.model.ts | 68 ++++++ .../www/hazard-service/hazard-usage.model.ts | 24 ++ libs/nshmp-haz/www/hazard-service/index.ts | 2 + libs/nshmp-haz/www/index.ts | 7 + .../www/source-logic-trees-service/index.ts | 2 + .../source-logic-trees-response.ts | 11 + .../source-logic-trees-usage.ts | 9 + libs/nshmp-haz/www/source-model.model.ts | 15 ++ libs/nshmp-haz/www/xy-data-group.model.ts | 14 ++ libs/nshmp-lib/calc/exceedance-model.util.ts | 109 +++++++++ libs/nshmp-lib/calc/index.ts | 3 + libs/nshmp-lib/calc/maths.util.ts | 120 ++++++++++ libs/nshmp-lib/data/index.ts | 2 + .../nshmp-lib/data/uncertainty-model.model.ts | 13 ++ libs/nshmp-lib/data/xy-sequence.model.ts | 4 + libs/nshmp-lib/geo/basin.model.ts | 25 ++ libs/nshmp-lib/geo/index.ts | 3 + libs/nshmp-lib/geo/region.model.ts | 7 + libs/nshmp-lib/geo/site.model.ts | 17 ++ libs/nshmp-lib/gmm/gmm-input.model.ts | 15 ++ libs/nshmp-lib/gmm/gmm.model.ts | 190 ++++++++++++++++ libs/nshmp-lib/gmm/imt.model.ts | 119 ++++++++++ libs/nshmp-lib/gmm/index.ts | 5 + libs/nshmp-lib/gmm/nehrp-site-class.model.ts | 35 +++ libs/nshmp-lib/gmm/rate-type.model.ts | 5 + libs/nshmp-lib/index.ts | 5 + libs/nshmp-lib/model/index.ts | 4 + libs/nshmp-lib/model/mfd.ts | 36 +++ libs/nshmp-lib/model/models.ts | 42 ++++ libs/nshmp-lib/model/source-type.ts | 59 +++++ libs/nshmp-lib/model/tectonic-setting.ts | 19 ++ libs/nshmp-lib/nshm/index.ts | 2 + libs/nshmp-lib/nshm/nshm-region.model.ts | 26 +++ libs/nshmp-lib/nshm/nshm.model.ts | 45 ++++ libs/nshmp-ws-static/index.ts | 2 + .../static-hazard-response.model.ts | 50 ++++ .../static-hazard-usage.model.ts | 54 +++++ libs/nshmp-ws-utils/index.ts | 4 + .../metadata/double-parameter.model.ts | 12 + .../nshmp-ws-utils/metadata/enum-parameter.ts | 18 ++ libs/nshmp-ws-utils/metadata/index.ts | 5 + .../metadata/parameter.model.ts | 10 + libs/nshmp-ws-utils/metadata/server.model.ts | 11 + .../metadata/string-parameter.model.ts | 9 + libs/nshmp-ws-utils/response.model.ts | 30 +++ libs/nshmp-ws-utils/service-error.model.ts | 3 + libs/nshmp-ws-utils/status.model.ts | 8 + .../fault-sections-response.model.ts | 26 +++ .../fault-sections-usage.model.ts | 16 ++ libs/nshmp-ws/fault-sections-service/index.ts | 2 + .../gmm-services/gmm-response.model.ts | 44 ++++ libs/nshmp-ws/gmm-services/gmm-usage.model.ts | 145 ++++++++++++ libs/nshmp-ws/gmm-services/index.ts | 2 + libs/nshmp-ws/index.ts | 3 + libs/nshmp-ws/utilities-service/index.ts | 2 + .../utilities-service/test-sites-response.ts | 7 + .../test-sites-usage.model.ts | 15 ++ libs/plotly/index.ts | 6 + libs/plotly/plotly-config.model.ts | 18 ++ libs/plotly/plotly-layout.model.ts | 14 ++ libs/plotly/plotly-legend.model.ts | 8 + libs/plotly/plotly-plot.model.ts | 15 ++ libs/plotly/plotly-utils.ts | 20 ++ 78 files changed, 2178 insertions(+) create mode 100644 libs/aws/index.ts create mode 100644 libs/aws/run-nshmp-haz/dynamo-db-item.ts create mode 100644 libs/aws/run-nshmp-haz/index.ts create mode 100644 libs/aws/run-nshmp-haz/job-status.model.ts create mode 100644 libs/aws/run-nshmp-haz/run-nshmp-haz-config.ts create mode 100644 libs/aws/run-nshmp-haz/run-nshmp-haz-response.ts create mode 100644 libs/index.ts create mode 100644 libs/leaflet/index.ts create mode 100644 libs/leaflet/map-baselayer.model.ts create mode 100644 libs/leaflet/map.utils.ts create mode 100644 libs/nshmp-haz/index.ts create mode 100644 libs/nshmp-haz/www/constraint.model.ts create mode 100644 libs/nshmp-haz/www/disagg-service/disagg-response.model.ts create mode 100644 libs/nshmp-haz/www/disagg-service/disagg-usage.model.ts create mode 100644 libs/nshmp-haz/www/disagg-service/index.ts create mode 100644 libs/nshmp-haz/www/hazard-service/hazard-response.model.ts create mode 100644 libs/nshmp-haz/www/hazard-service/hazard-usage.model.ts create mode 100644 libs/nshmp-haz/www/hazard-service/index.ts create mode 100644 libs/nshmp-haz/www/index.ts create mode 100644 libs/nshmp-haz/www/source-logic-trees-service/index.ts create mode 100644 libs/nshmp-haz/www/source-logic-trees-service/source-logic-trees-response.ts create mode 100644 libs/nshmp-haz/www/source-logic-trees-service/source-logic-trees-usage.ts create mode 100644 libs/nshmp-haz/www/source-model.model.ts create mode 100644 libs/nshmp-haz/www/xy-data-group.model.ts create mode 100644 libs/nshmp-lib/calc/exceedance-model.util.ts create mode 100644 libs/nshmp-lib/calc/index.ts create mode 100644 libs/nshmp-lib/calc/maths.util.ts create mode 100644 libs/nshmp-lib/data/index.ts create mode 100644 libs/nshmp-lib/data/uncertainty-model.model.ts create mode 100644 libs/nshmp-lib/data/xy-sequence.model.ts create mode 100644 libs/nshmp-lib/geo/basin.model.ts create mode 100644 libs/nshmp-lib/geo/index.ts create mode 100644 libs/nshmp-lib/geo/region.model.ts create mode 100644 libs/nshmp-lib/geo/site.model.ts create mode 100644 libs/nshmp-lib/gmm/gmm-input.model.ts create mode 100644 libs/nshmp-lib/gmm/gmm.model.ts create mode 100644 libs/nshmp-lib/gmm/imt.model.ts create mode 100644 libs/nshmp-lib/gmm/index.ts create mode 100644 libs/nshmp-lib/gmm/nehrp-site-class.model.ts create mode 100644 libs/nshmp-lib/gmm/rate-type.model.ts create mode 100644 libs/nshmp-lib/index.ts create mode 100644 libs/nshmp-lib/model/index.ts create mode 100644 libs/nshmp-lib/model/mfd.ts create mode 100644 libs/nshmp-lib/model/models.ts create mode 100644 libs/nshmp-lib/model/source-type.ts create mode 100644 libs/nshmp-lib/model/tectonic-setting.ts create mode 100644 libs/nshmp-lib/nshm/index.ts create mode 100644 libs/nshmp-lib/nshm/nshm-region.model.ts create mode 100644 libs/nshmp-lib/nshm/nshm.model.ts create mode 100644 libs/nshmp-ws-static/index.ts create mode 100644 libs/nshmp-ws-static/static-hazard-response.model.ts create mode 100644 libs/nshmp-ws-static/static-hazard-usage.model.ts create mode 100644 libs/nshmp-ws-utils/index.ts create mode 100644 libs/nshmp-ws-utils/metadata/double-parameter.model.ts create mode 100644 libs/nshmp-ws-utils/metadata/enum-parameter.ts create mode 100644 libs/nshmp-ws-utils/metadata/index.ts create mode 100644 libs/nshmp-ws-utils/metadata/parameter.model.ts create mode 100644 libs/nshmp-ws-utils/metadata/server.model.ts create mode 100644 libs/nshmp-ws-utils/metadata/string-parameter.model.ts create mode 100644 libs/nshmp-ws-utils/response.model.ts create mode 100644 libs/nshmp-ws-utils/service-error.model.ts create mode 100644 libs/nshmp-ws-utils/status.model.ts create mode 100644 libs/nshmp-ws/fault-sections-service/fault-sections-response.model.ts create mode 100644 libs/nshmp-ws/fault-sections-service/fault-sections-usage.model.ts create mode 100644 libs/nshmp-ws/fault-sections-service/index.ts create mode 100644 libs/nshmp-ws/gmm-services/gmm-response.model.ts create mode 100644 libs/nshmp-ws/gmm-services/gmm-usage.model.ts create mode 100644 libs/nshmp-ws/gmm-services/index.ts create mode 100644 libs/nshmp-ws/index.ts create mode 100644 libs/nshmp-ws/utilities-service/index.ts create mode 100644 libs/nshmp-ws/utilities-service/test-sites-response.ts create mode 100644 libs/nshmp-ws/utilities-service/test-sites-usage.model.ts create mode 100644 libs/plotly/index.ts create mode 100644 libs/plotly/plotly-config.model.ts create mode 100644 libs/plotly/plotly-layout.model.ts create mode 100644 libs/plotly/plotly-legend.model.ts create mode 100644 libs/plotly/plotly-plot.model.ts create mode 100644 libs/plotly/plotly-utils.ts diff --git a/libs/aws/index.ts b/libs/aws/index.ts new file mode 100644 index 0000000..476e027 --- /dev/null +++ b/libs/aws/index.ts @@ -0,0 +1 @@ +export * as runNshmpHaz from './run-nshmp-haz'; diff --git a/libs/aws/run-nshmp-haz/dynamo-db-item.ts b/libs/aws/run-nshmp-haz/dynamo-db-item.ts new file mode 100644 index 0000000..122b778 --- /dev/null +++ b/libs/aws/run-nshmp-haz/dynamo-db-item.ts @@ -0,0 +1,35 @@ +import {JobStatus} from './job-status.model'; +import {RunNshmpHazHttpPostConfig} from './run-nshmp-haz-config'; + +/** + * Dynamo DB item to add to table + */ +export interface DynamoDBItem { + email: string; + jobId: string; + + calc?: DynamoDBItemCalc; + inputs?: RunNshmpHazHttpPostConfig; + job?: DynamoDBItemJob; + results?: DynamoDBItemResults; +} + +export interface DynamoDBItemCalc { + completedOn?: string; + cores?: string; + createdOn?: string; + memory?: string; + totalTime?: string; +} + +export interface DynamoDBItemJob { + environment?: string; + errorMessage?: string; + instanceId?: string; + jobStatus?: JobStatus; +} + +export interface DynamoDBItemResults { + viewLogs?: string; + zipFile?: string; +} diff --git a/libs/aws/run-nshmp-haz/index.ts b/libs/aws/run-nshmp-haz/index.ts new file mode 100644 index 0000000..766403a --- /dev/null +++ b/libs/aws/run-nshmp-haz/index.ts @@ -0,0 +1,4 @@ +export * from './dynamo-db-item'; +export * from './job-status.model'; +export * from './run-nshmp-haz-config'; +export * from './run-nshmp-haz-response'; diff --git a/libs/aws/run-nshmp-haz/job-status.model.ts b/libs/aws/run-nshmp-haz/job-status.model.ts new file mode 100644 index 0000000..53c621c --- /dev/null +++ b/libs/aws/run-nshmp-haz/job-status.model.ts @@ -0,0 +1,8 @@ +/** Job status */ +export enum JobStatus { + COMPLETED = 'Completed', + CREATED = 'Created', + FAILED = 'Failed', + RUNNING = 'Running', + TERMINATED = 'Terminated', +} diff --git a/libs/aws/run-nshmp-haz/run-nshmp-haz-config.ts b/libs/aws/run-nshmp-haz/run-nshmp-haz-config.ts new file mode 100644 index 0000000..9a547d8 --- /dev/null +++ b/libs/aws/run-nshmp-haz/run-nshmp-haz-config.ts @@ -0,0 +1,93 @@ +/** + * nshmp-haz calc config + */ +export interface CalcConfig { + deagg?: unknown; + hazard?: unknown; + output?: CalcConfigOutput; + performance?: unknown; + rate?: unknown; + site?: unknown; +} + +/** nshmp-haz calc config output section */ +export interface CalcConfigOutput { + directory: string; +} + +/** AWS cloud config */ +export interface CloudConfig { + /** EC2 instance type */ + instanceType: string; + + /** Whether to debug; sets "set -x" in user data script for EC2 */ + debug?: boolean; +} + +/** NSHMP config */ +export interface NshmpConfig { + /** + * Java class name of class to run. + * + * Example: HazardCalc + */ + className: string; + + /** Email to get notifications */ + email: string; + + /** + * The URL to the git repository of the model to use. + */ + modelGitUrl: string; + + /** The SHA (branch, tag, etc) of the model to use */ + modelSha?: string; + + /** + * URL to nshmp-lib. + * + * Defaults to using version defined in nshmp-haz Gradle file. + */ + nshmpLibGitUrl?: string; + + /** The SHA of nshmp-lib */ + nshmpLibSha?: string; + + /** URL to site file. */ + siteFileUrl: string; + + /** Intensity measure level for deagg-epsilon */ + iml?: number; + + /** Path inside model tarball for hazard code to run */ + modelPath?: string; + + /** Return period for deagg */ + returnPeriod?: number; + + /** + * The URL to the repository of the hazard to use. + */ + sourceCodeGitUrl?: string; + + /** The SHA (branch, tag, etc) of the source code to use*/ + sourceCodeSha?: string; +} + +/** State machine input */ +export interface NshmpHazJobConfig extends RunNshmpHazHttpPostConfig { + jobId: string; +} + +/** HTTP POST config for running nshmp-haz on AWS */ +export interface RunNshmpHazHttpPostConfig { + /** AWS cloud config */ + cloudConfig: CloudConfig; + + /** NSHMP config to run nshmp-haz */ + nshmpConfig: NshmpConfig; + + /** The nshmp-haz calc config */ + calcConfig?: CalcConfig; +} diff --git a/libs/aws/run-nshmp-haz/run-nshmp-haz-response.ts b/libs/aws/run-nshmp-haz/run-nshmp-haz-response.ts new file mode 100644 index 0000000..b173b89 --- /dev/null +++ b/libs/aws/run-nshmp-haz/run-nshmp-haz-response.ts @@ -0,0 +1,11 @@ +import {Response} from '../../nshmp-ws-utils'; +import {RunNshmpHazHttpPostConfig} from './run-nshmp-haz-config'; + +export type RunNshmpHazResponse = Response< + RunNshmpHazHttpPostConfig, + RunNshmpHazResponseData +>; + +export interface RunNshmpHazResponseData { + jobId: string; +} diff --git a/libs/index.ts b/libs/index.ts new file mode 100644 index 0000000..7ff5ba8 --- /dev/null +++ b/libs/index.ts @@ -0,0 +1,8 @@ +export * as aws from './aws'; +export * as leaflet from './leaflet'; +export * as nshmpHaz from './nshmp-haz'; +export * as nshmpLib from './nshmp-lib'; +export * as nshmpWs from './nshmp-ws'; +export * as nshmpWsStatic from './nshmp-ws-static'; +export * as nshmpWsUtils from './nshmp-ws-utils'; +export * as plotly from './plotly'; diff --git a/libs/leaflet/index.ts b/libs/leaflet/index.ts new file mode 100644 index 0000000..0e71ca2 --- /dev/null +++ b/libs/leaflet/index.ts @@ -0,0 +1,4 @@ +/* Export Leaflet package */ + +export * from './map.utils'; +export * from './map-baselayer.model'; diff --git a/libs/leaflet/map-baselayer.model.ts b/libs/leaflet/map-baselayer.model.ts new file mode 100644 index 0000000..734d77e --- /dev/null +++ b/libs/leaflet/map-baselayer.model.ts @@ -0,0 +1,66 @@ +/** + * Base layers for mapping. + * + * These base layers map to concrete styles in lib/state/map/map.utils. + */ +export enum MapBaseLayer { + /** + * Esri light grey base. + * @see https://doc.arcgis.com/en/data-appliance/2022/maps/world-light-gray-base.htm + */ + GREYSCALE = 'Greyscale', + + /** + * Esri dark grey base. + * @see https://doc.arcgis.com/en/data-appliance/2022/maps/world-dark-gray-base.htm + */ + GREYSCALE_DARK = 'Greyscale Dark', + + /** + * Esri hillshade. + * @see https://doc.arcgis.com/en/data-appliance/2022/maps/world-hillshade.htm + */ + HILLSHADE = 'Hillshade', + + /** + * Esri dark hillshade. + * @see https://doc.arcgis.com/en/data-appliance/2022/maps/world-hillshade-dark.htm + */ + HILLSHADE_DARK = 'Hillshade Dark', + + /** + * Esri National Geographic world map. + * @see https://doc.arcgis.com/en/data-appliance/2022/maps/national-geographic-world-map.htm + */ + NAT_GEO = 'Natational Geographic', + + /** + * Esri ocean map. + * @see https://doc.arcgis.com/en/data-appliance/2022/maps/world-ocean-base.htm + */ + OCEAN = 'Ocean', + + /** + * Esri physical map + * @see https://doc.arcgis.com/en/data-appliance/2022/maps/world-physical-map.htm + */ + PHYSICAL = 'Physical', + + /** + * Esri satellite map. + * @see https://doc.arcgis.com/en/data-appliance/2022/maps/world-imagery.htm + */ + SATELLITE = 'Satellite', + + /** + * Esir street map. + * @see https://doc.arcgis.com/en/data-appliance/2022/maps/world-street-map.htm + */ + STREET = 'Street', + + /** + * Esri topographic map. + * @see https://doc.arcgis.com/en/data-appliance/2022/maps/world-topographic-map.htm + */ + TOPO = 'Topographic', +} diff --git a/libs/leaflet/map.utils.ts b/libs/leaflet/map.utils.ts new file mode 100644 index 0000000..7bad778 --- /dev/null +++ b/libs/leaflet/map.utils.ts @@ -0,0 +1,214 @@ +import * as L from 'leaflet'; + +import {Location} from '../nshmp-lib/geo'; +import {MapBaseLayer} from './map-baselayer.model'; + +/** Location transform */ +export type LocationTransform = (location: Location) => Location; + +/** + * Esri raster base layers for Leaflet. + * + * https://doc.arcgis.com/en/data-appliance/2022/maps/directory-maps-data.htm + */ +export function baseLayers(): Record<MapBaseLayer, L.TileLayer> { + return BASE_LAYERS; +} + +/** + * Returns a specific Esri raster base layer. + */ +export function baseLayer(baseLayer: MapBaseLayer): L.TileLayer { + return BASE_LAYERS[baseLayer]; +} + +/** + * Transform coordinates in a Feature Collection. + * + * @param featureCollection The feature collection + * @param transform The transform function to use + */ +export function transformCoordinates( + featureCollection: GeoJSON.FeatureCollection, + transform: LocationTransform = loc => loc +): GeoJSON.FeatureCollection { + for (const feature of featureCollection.features) { + const geometry = feature.geometry; + + switch (geometry.type) { + case 'LineString': { + geometry.coordinates = geometry.coordinates.map(coord => + transformCoordinate(coord, transform) + ); + break; + } + case 'MultiLineString': { + geometry.coordinates = geometry.coordinates.map(position => + position.map(coord => transformCoordinate(coord, transform)) + ); + break; + } + case 'MultiPoint': { + geometry.coordinates = geometry.coordinates.map(coord => + transformCoordinate(coord, transform) + ); + break; + } + case 'MultiPolygon': { + geometry.coordinates = geometry.coordinates.map(positions => + positions.map(position => + position.map(coord => transformCoordinate(coord, transform)) + ) + ); + break; + } + case 'Point': { + geometry.coordinates = transformCoordinate( + geometry.coordinates, + transform + ); + break; + } + case 'Polygon': { + geometry.coordinates = geometry.coordinates.map(position => + position.map(coord => transformCoordinate(coord, transform)) + ); + break; + } + } + } + + return featureCollection; +} + +const ARCGIS_URL_START = + 'https://services.arcgisonline.com/arcgis/rest/services/'; +const ARCGIS_URL_END = '/MapServer/tile/{z}/{y}/{x}'; +const OPTIONS: L.MapOptions = { + maxZoom: 16, +}; + +const BASE_LAYERS: Record<MapBaseLayer, L.TileLayer> = { + /* Esri light gray */ + [MapBaseLayer.GREYSCALE]: L.tileLayer( + `${ARCGIS_URL_START}Canvas/World_Light_Gray_Base${ARCGIS_URL_END}`, + { + ...OPTIONS, + attribution: + 'Esri, HERE, Garmin, © OpenStreetMap contributors, and the GIS user community', + id: MapBaseLayer.GREYSCALE, + } + ), + /* Esri dark gray */ + [MapBaseLayer.GREYSCALE_DARK]: L.tileLayer( + `${ARCGIS_URL_START}Canvas/World_Dark_Gray_Base${ARCGIS_URL_END}`, + { + ...OPTIONS, + attribution: + 'Esri, HERE, Garmin, © OpenStreetMap contributors, and the GIS user community', + id: MapBaseLayer.GREYSCALE_DARK, + } + ), + /* Esri world hillshade */ + [MapBaseLayer.HILLSHADE]: L.tileLayer( + `${ARCGIS_URL_START}Elevation/World_Hillshade${ARCGIS_URL_END}`, + { + ...OPTIONS, + attribution: + 'Esri, USGS, NGA, NASA, CGIAR, N Robinson, NCEAS, NLS, OS, NMA, ' + + 'Geodatastyrelsen, Rijkswaterstaat, GSA, Geoland, FEMA, Intermap, ' + + 'and the GIS user community', + id: MapBaseLayer.HILLSHADE, + } + ), + /* Esri world hillshade */ + [MapBaseLayer.HILLSHADE_DARK]: L.tileLayer( + `${ARCGIS_URL_START}Elevation/World_Hillshade_Dark${ARCGIS_URL_END}`, + { + ...OPTIONS, + attribution: + 'Esri, USGS, NGA, NASA, CGIAR, N Robinson, NCEAS, NLS, OS, NMA, ' + + 'Geodatastyrelsen, Rijkswaterstaat, GSA, Geoland, FEMA, Intermap, ' + + 'and the GIS user community', + id: MapBaseLayer.HILLSHADE_DARK, + } + ), + /* Esri National Geographics world map */ + [MapBaseLayer.NAT_GEO]: L.tileLayer( + `${ARCGIS_URL_START}NatGeo_World_Map${ARCGIS_URL_END}`, + { + ...OPTIONS, + attribution: + 'National Geographic, Esri, Garmin, HERE, UNEP-WCMC, USGS, ' + + 'NASA, ESA, METI, NRCan, GEBCO, NOAA, INCREMENT P', + id: MapBaseLayer.NAT_GEO, + } + ), + /* Esri world ocean */ + [MapBaseLayer.OCEAN]: L.tileLayer( + `${ARCGIS_URL_START}Ocean/World_Ocean_Base${ARCGIS_URL_END}`, + { + ...OPTIONS, + attribution: 'Esri, Garmin, GEBCO, NOAA NGDC, and other contributors', + id: MapBaseLayer.OCEAN, + maxZoom: 10, + } + ), + /* Esri world physical map */ + [MapBaseLayer.PHYSICAL]: L.tileLayer( + `${ARCGIS_URL_START}World_Physical_Map${ARCGIS_URL_END}`, + { + ...OPTIONS, + attribution: 'U.S. National Park Service', + id: MapBaseLayer.PHYSICAL, + maxZoom: 8, + } + ), + [MapBaseLayer.SATELLITE]: L.tileLayer( + `${ARCGIS_URL_START}World_Imagery${ARCGIS_URL_END}`, + { + ...OPTIONS, + attribution: + 'Esri, Maxar, Earthstar Geographics, and the GIS User Community', + id: MapBaseLayer.SATELLITE, + } + ), + [MapBaseLayer.STREET]: L.tileLayer( + `${ARCGIS_URL_START}World_Street_Map${ARCGIS_URL_END}`, + { + ...OPTIONS, + attribution: + 'Esri, HERE, Garmin, USGS, Intermap, INCREMENT P, ' + + 'NRCan, Esri Japan, METI, Esri China (Hong Kong), Esri Korea, ' + + 'Esri (Thailand), NGCC, © OpenStreetMap contributors, and the ' + + 'GIS User Community', + id: MapBaseLayer.STREET, + } + ), + [MapBaseLayer.TOPO]: L.tileLayer( + `${ARCGIS_URL_START}World_Topo_Map${ARCGIS_URL_END}`, + { + ...OPTIONS, + attribution: + 'Esri, HERE, Garmin, USGS, Intermap, INCREMENT P, NRCan, ' + + 'Esri Japan, METI, Mapwithyou, NOSTRA, © OpenStreetMap ' + + 'contributors, and the GIS User Community', + id: MapBaseLayer.TOPO, + } + ), +}; + +function transformCoordinate( + coordinates: number[], + transform: LocationTransform +): number[] { + const longitude = coordinates[0]; + const latitude = coordinates[1]; + + const location = transform({ + latitude, + longitude, + }); + + return [location.longitude, location.latitude]; +} diff --git a/libs/nshmp-haz/index.ts b/libs/nshmp-haz/index.ts new file mode 100644 index 0000000..0537828 --- /dev/null +++ b/libs/nshmp-haz/index.ts @@ -0,0 +1,2 @@ +/* Export nshmp package */ +export * from './www'; diff --git a/libs/nshmp-haz/www/constraint.model.ts b/libs/nshmp-haz/www/constraint.model.ts new file mode 100644 index 0000000..be8a4ca --- /dev/null +++ b/libs/nshmp-haz/www/constraint.model.ts @@ -0,0 +1,5 @@ +export interface Constraint { + id: string; + min: object; + max: object; +} diff --git a/libs/nshmp-haz/www/disagg-service/disagg-response.model.ts b/libs/nshmp-haz/www/disagg-service/disagg-response.model.ts new file mode 100644 index 0000000..7f548e9 --- /dev/null +++ b/libs/nshmp-haz/www/disagg-service/disagg-response.model.ts @@ -0,0 +1,89 @@ +import {Imt} from '../../../nshmp-lib/gmm'; +import {Response} from '../../../nshmp-ws-utils'; +import {Parameter, Server} from '../../../nshmp-ws-utils/metadata'; +import {HazardRequestData} from '../hazard-service/hazard-response.model'; + +export type DisaggResponse = Response<DisaggRequestData, DisaggResponseData>; + +export enum DataType { + GMM = 'GMM', + SOURCE = 'SOURCE', + DISAGG_DATA = 'DISAGG_DATA', +} + +export interface DisaggRequestData extends HazardRequestData { + imts: Imt[]; + returnPeriod: number; + dataTypes: DataType[]; +} + +export interface DisaggResponseMetadata { + rlabel: string; + mlabel: string; + εlabel: string; + εbins: EBin[]; + server: Server; +} + +export interface EBin { + id: number; + min: number; + max: number; +} + +export interface DisaggResponseData { + metadata: DisaggResponseMetadata; + disaggs: DisaggResponseDataValues[]; +} + +export interface DisaggResponseDataValues { + imt: Parameter; + data: DisaggComponentData[]; +} + +export interface DisaggComponentData { + component: string; + data: DisaggData[]; + summary: DisaggSummary[]; + sources: DisaggSource[]; +} + +export interface DisaggData { + r: number; + m: number; + rBar: number; + mBar: number; + εBar: number; + εdata: EData[]; +} + +export interface EData { + εbin: number; + value: number; +} + +export interface DisaggSummary { + name: string; + display: boolean; + data: DisaggSummaryData[]; +} + +export interface DisaggSummaryData { + name: string; + value: number; + units: string; +} + +export interface DisaggSource { + name: string; + source: string; + type: string; + contribution: number; + id: number; + r: number; + m: number; + ε: number; + azimuth: number; + longitude: number; + latitude: number; +} diff --git a/libs/nshmp-haz/www/disagg-service/disagg-usage.model.ts b/libs/nshmp-haz/www/disagg-service/disagg-usage.model.ts new file mode 100644 index 0000000..8e95caa --- /dev/null +++ b/libs/nshmp-haz/www/disagg-service/disagg-usage.model.ts @@ -0,0 +1,15 @@ +import {Response} from '../../../nshmp-ws-utils'; +import {DoubleParameter} from '../../../nshmp-ws-utils/metadata'; +import {HazardRequestMetadata} from '../hazard-service'; + +export type DisaggUsage = Response<string, DisaggRequestMetadata>; + +export interface DisaggRequestMetadata extends HazardRequestMetadata { + iml: ImlMetadata; + returnPeriod: DoubleParameter; +} + +export interface ImlMetadata { + name: string; + range: Record<string, DoubleParameter>; +} diff --git a/libs/nshmp-haz/www/disagg-service/index.ts b/libs/nshmp-haz/www/disagg-service/index.ts new file mode 100644 index 0000000..01ddf85 --- /dev/null +++ b/libs/nshmp-haz/www/disagg-service/index.ts @@ -0,0 +1,2 @@ +export * from './disagg-response.model'; +export * from './disagg-usage.model'; diff --git a/libs/nshmp-haz/www/hazard-service/hazard-response.model.ts b/libs/nshmp-haz/www/hazard-service/hazard-response.model.ts new file mode 100644 index 0000000..e999031 --- /dev/null +++ b/libs/nshmp-haz/www/hazard-service/hazard-response.model.ts @@ -0,0 +1,68 @@ +import {XySequence} from '../../../nshmp-lib/data'; +import {Response} from '../../../nshmp-ws-utils'; +import {Parameter, Server} from '../../../nshmp-ws-utils/metadata'; + +/** + * The hazard calculation response. + */ +export type HazardCalcResponse = Response< + HazardRequestData, + HazardResponseData +>; + +/* + * The hazard service request data. + * + * Ported from: https://code.usgs.gov/ghsc/nshmp/nshmp-haz-v2 + * /-/blob/master/src/main/java/gov/usgs/earthquake/nshmp/www/services/HazardService.java + */ +export interface HazardRequestData { + latitude: number; + longitude: number; + vs30: number; +} + +/* + * The hazard service calculation response data. + * + * Ported from: https://code.usgs.gov/ghsc/nshmp/nshmp-haz-v2 + * /-/blob/master/src/main/java/gov/usgs/earthquake/nshmp/www/services/HazardService.java + */ +export interface HazardResponseData { + metadata: HazardResponseMetadata; + hazardCurves: HazardResponse[]; +} + +/* + * The hazard service calculation response. + * + * Ported from: https://code.usgs.gov/ghsc/nshmp/nshmp-haz-v2 + * /-/blob/master/src/main/java/gov/usgs/earthquake/nshmp/www/services/HazardService.java + */ +export interface HazardResponse { + imt: Parameter; + data: HazardCurve[]; +} + +/* + * The hazard service calculation response metadata. + * + * Ported from: https://code.usgs.gov/ghsc/nshmp/nshmp-haz-v2 + * /-/blob/master/src/main/java/gov/usgs/earthquake/nshmp/www/services/HazardService.java + */ +export interface HazardResponseMetadata { + xlabel: string; + ylabel: string; + server: Server; +} + +/* + * The hazard service hazard curve. + * + * Ported from: https://code.usgs.gov/ghsc/nshmp/nshmp-haz-v2 + * /-/blob/master/src/main/java/gov/usgs/earthquake/nshmp/www/services/HazardService.java + */ +export interface HazardCurve { + component: string; + values: XySequence; +} diff --git a/libs/nshmp-haz/www/hazard-service/hazard-usage.model.ts b/libs/nshmp-haz/www/hazard-service/hazard-usage.model.ts new file mode 100644 index 0000000..07c2376 --- /dev/null +++ b/libs/nshmp-haz/www/hazard-service/hazard-usage.model.ts @@ -0,0 +1,24 @@ +import {Response} from '../../../nshmp-ws-utils'; +import {DoubleParameter} from '../../../nshmp-ws-utils/metadata'; +import {SourceModel} from '../source-model.model'; + +/** + * The hazard service usage response. + */ +export type HazardUsageResponse = Response<string, HazardRequestMetadata>; + +/** + * Base source model metadata. + */ +export interface HazardModelMetadata { + model: SourceModel; +} + +/** + * The hazard service usage request metadata. + */ +export interface HazardRequestMetadata extends HazardModelMetadata { + latitude: DoubleParameter; + longitude: DoubleParameter; + vs30: DoubleParameter; +} diff --git a/libs/nshmp-haz/www/hazard-service/index.ts b/libs/nshmp-haz/www/hazard-service/index.ts new file mode 100644 index 0000000..a60a10c --- /dev/null +++ b/libs/nshmp-haz/www/hazard-service/index.ts @@ -0,0 +1,2 @@ +export * from './hazard-response.model'; +export * from './hazard-usage.model'; diff --git a/libs/nshmp-haz/www/index.ts b/libs/nshmp-haz/www/index.ts new file mode 100644 index 0000000..79a5596 --- /dev/null +++ b/libs/nshmp-haz/www/index.ts @@ -0,0 +1,7 @@ +/* Export www packages */ +export * from './constraint.model'; +export * as disaggService from './disagg-service'; +export * as hazardService from './hazard-service'; +export * as sourceLogicTreesService from './source-logic-trees-service'; +export * from './source-model.model'; +export * from './xy-data-group.model'; diff --git a/libs/nshmp-haz/www/source-logic-trees-service/index.ts b/libs/nshmp-haz/www/source-logic-trees-service/index.ts new file mode 100644 index 0000000..1a70c3c --- /dev/null +++ b/libs/nshmp-haz/www/source-logic-trees-service/index.ts @@ -0,0 +1,2 @@ +export * from './source-logic-trees-response'; +export * from './source-logic-trees-usage'; diff --git a/libs/nshmp-haz/www/source-logic-trees-service/source-logic-trees-response.ts b/libs/nshmp-haz/www/source-logic-trees-service/source-logic-trees-response.ts new file mode 100644 index 0000000..1759eb7 --- /dev/null +++ b/libs/nshmp-haz/www/source-logic-trees-service/source-logic-trees-response.ts @@ -0,0 +1,11 @@ +import {Tree} from '../../../nshmp-lib/model'; +import {Response} from '../../../nshmp-ws-utils'; + +export type SourceLogicTreesResponse = Response< + SourceLogicTreesRequestData, + Tree +>; + +export interface SourceLogicTreesRequestData { + id: number; +} diff --git a/libs/nshmp-haz/www/source-logic-trees-service/source-logic-trees-usage.ts b/libs/nshmp-haz/www/source-logic-trees-service/source-logic-trees-usage.ts new file mode 100644 index 0000000..800e4d6 --- /dev/null +++ b/libs/nshmp-haz/www/source-logic-trees-service/source-logic-trees-usage.ts @@ -0,0 +1,9 @@ +import {SettingGroup} from '../../../nshmp-lib/model'; +import {Response} from '../../../nshmp-ws-utils'; +import {HazardModelMetadata} from '../hazard-service'; + +export type SourceLogicTreesUsage = Response<string, SourceLogicTreesMetadata>; + +export interface SourceLogicTreesMetadata extends HazardModelMetadata { + trees: SettingGroup[]; +} diff --git a/libs/nshmp-haz/www/source-model.model.ts b/libs/nshmp-haz/www/source-model.model.ts new file mode 100644 index 0000000..077ae33 --- /dev/null +++ b/libs/nshmp-haz/www/source-model.model.ts @@ -0,0 +1,15 @@ +import {Gmm} from '../../nshmp-lib/gmm'; +import {metadata} from '../../nshmp-ws-utils'; + +/** + * Source model. + */ +export interface SourceModel { + bounds: number[]; + gmms: Set<Gmm>; + imts: metadata.Parameter[]; + map: GeoJSON.FeatureCollection<GeoJSON.Polygon>; + name: string; + siteClasses: Record<string, number>; + sites: GeoJSON.FeatureCollection<GeoJSON.Point>; +} diff --git a/libs/nshmp-haz/www/xy-data-group.model.ts b/libs/nshmp-haz/www/xy-data-group.model.ts new file mode 100644 index 0000000..e2ec020 --- /dev/null +++ b/libs/nshmp-haz/www/xy-data-group.model.ts @@ -0,0 +1,14 @@ +import {XySequence} from '../../nshmp-lib/data'; + +export interface XyDataGroup<T> { + label: string; + xLabel: string; + yLabel: string; + data: T[]; +} + +export interface Series { + id: string; + label: string; + data: XySequence; +} diff --git a/libs/nshmp-lib/calc/exceedance-model.util.ts b/libs/nshmp-lib/calc/exceedance-model.util.ts new file mode 100644 index 0000000..d642c19 --- /dev/null +++ b/libs/nshmp-lib/calc/exceedance-model.util.ts @@ -0,0 +1,109 @@ +import {UncertaintyModel} from '../data'; +import {Maths} from './maths.util'; + +/** + * No truncation; model ignores truncation level n. + * + * Compute the probability of exceeding a value. + * @param model to compute exceedance + * @param value for which to compute the exceedance probability + */ +const truncationOff = (model: UncertaintyModel, value: number) => { + return boundedCcdFn(model, value, 0.0, 1.0); +}; + +/** + * No truncation; model ignores truncation level n. + * + * Compute the probability of exceeding a value. + * + * @param model to compute exceedance + * @param sequence for which to compute the exceedance probability + */ +const truncationOffSequence = (model: UncertaintyModel, sequence: number[]) => { + const yValues: number[] = []; + + for (const x of sequence) { + yValues.push(truncationOff(model, x)); + } + + return yValues; +}; + +/** + * Upper truncation only at μ + σ * n. + * + * Compute the probability of exceeding a value. + * + * @param model to compute exceedance + * @param value for which to compute the exceedance probability + */ +const truncationUpperOnly = (model: UncertaintyModel, value: number) => { + return boundedCcdFn(model, value, prob(model), 1.0); +}; + +/** + * Upper truncation only at μ + σ * n. + * + * Compute the probability of exceeding a value. + * + * @param model to compute exceedance + * @param sequence for which to compute the exceedance probability + */ +const truncationUpperOnlySequence = ( + model: UncertaintyModel, + sequence: number[] +) => { + const yValues = []; + + for (const x of sequence) { + yValues.push(truncationUpperOnly(model, x)); + } + + return yValues; +}; + +/** + * Bounded complementary cumulative distribution. Compute the probability that + * a value will be exceeded, subject to upper and lower probability limits. + * + * @param model to compute exceedance + */ +const boundedCcdFn = ( + model: UncertaintyModel, + value: number, + pHi: number, + pLo: number +) => { + const p = Maths.normalCcdf(model.μ, model.σ, value); + return probBoundsCheck((p - pHi) / (pLo - pHi)); +}; + +/** + * For truncated distributions, p may be out of range. For upper truncations, + * p may be less than pHi, yielding a negative value in boundedCcdFn(); for + * lower truncations, p may be greater than pLo, yielding a value > 1.0 in + * boundedCcdFn(). + */ +const probBoundsCheck = (p: number) => { + return p < 0.0 ? 0.0 : p > 1.0 ? 1.0 : p; +}; + +/** + * Compute ccd value at μ + nσ. + * + * @param model to compute exceedance + */ +const prob = (model: UncertaintyModel) => { + return Maths.normalCcdf(model.μ, model.σ, model.μ + model.n * model.σ); +}; + +/** + * Export functions + */ +export const ExceedanceModel = { + truncationOff, + truncationOffSequence, + truncationUpperOnly, + truncationUpperOnlySequence, +}; diff --git a/libs/nshmp-lib/calc/index.ts b/libs/nshmp-lib/calc/index.ts new file mode 100644 index 0000000..7d54174 --- /dev/null +++ b/libs/nshmp-lib/calc/index.ts @@ -0,0 +1,3 @@ +/* calc export */ +export {ExceedanceModel} from './exceedance-model.util'; +export {Maths} from './maths.util'; diff --git a/libs/nshmp-lib/calc/maths.util.ts b/libs/nshmp-lib/calc/maths.util.ts new file mode 100644 index 0000000..5a5a814 --- /dev/null +++ b/libs/nshmp-lib/calc/maths.util.ts @@ -0,0 +1,120 @@ +import * as d3 from 'd3-format'; + +import {XySequence} from '../data'; +import {Imt} from '../gmm'; +import {imtToPeriod} from '../gmm/imt.model'; + +/** + * Normal complementary cumulative distribution function. + * + * @param μ mean + * @param σ standard deviation + * @param x variate + */ +const normalCcdf = (μ: number, σ: number, x: number) => { + return (1.0 + erf((μ - x) / (σ * Math.sqrt(2)))) * 0.5; +}; + +/** + * Error function approximation of Abramowitz and Stegun, formula 7.1.26 in + * the <em>Handbook of Mathematical Functions with Formulas, Graphs, and + * Mathematical Tables</em>. Although the approximation is only valid for + * x ≥ 0, because erf(x) is an odd function, + * erf(x) = −erf(−x) and negative values are supported. + */ +const erf = (x: number) => { + return x < 0.0 ? -erfBase(-x) : erfBase(x); +}; + +/** + * Round a number to specific format + * + * @param value Value to round + * @param scale Format scale + */ +const round = (value: number, scale: number) => { + const format = d3.format(`.${scale}f`); + return Number(format(value)); +}; + +/** + * Calculate the response sepectrum for each IMT. + * + * @param hazards The hazard curves by imt + * @param returnPeriod The return period (in years) to calculate at + */ +const responseSpectrum = ( + hazards: Map<Imt, XySequence>, + returnPeriod: number +): XySequence => { + const xs: number[] = []; + const ys: number[] = []; + + for (const [imt, xySequence] of hazards) { + xs.push(imtToPeriod(imt)); + ys.push(calculateResponseSpectrum(xySequence, returnPeriod)); + } + + return { + xs, + ys, + }; +}; + +const calculateResponseSpectrum = ( + xySequence: XySequence, + returnPeriod: number +): number => { + returnPeriod = 1 / returnPeriod; + const xValues = xySequence.xs; + const yValues = xySequence.ys; + + const afeIndexBelowReturnPeriod = yValues.findIndex(y => { + return y < returnPeriod; + }); + + const x0 = xValues[afeIndexBelowReturnPeriod - 1]; + const x1 = xValues[afeIndexBelowReturnPeriod]; + const y0 = yValues[afeIndexBelowReturnPeriod - 1]; + const y1 = yValues[afeIndexBelowReturnPeriod]; + const x = returnPeriodInterpolation(x0, x1, y0, y1, returnPeriod); + return isNaN(x) ? x : round(x, 6); +}; + +const returnPeriodInterpolation = ( + x0: number, + x1: number, + y0: number, + y1: number, + returnPeriod: number +): number => { + return x0 + (Math.log10(returnPeriod / y0) * (x1 - x0)) / Math.log10(y1 / y0); +}; + +const erfBase = (x: number) => { + const P = 0.3275911; + const A1 = 0.254829592; + const A2 = -0.284496736; + const A3 = 1.421413741; + const A4 = -1.453152027; + const A5 = 1.061405429; + + const t = 1 / (1 + P * x); + const tsq = t * t; + + return ( + 1 - + (A1 * t + A2 * tsq + A3 * tsq * t + A4 * tsq * tsq + A5 * tsq * tsq * t) * + Math.exp(-x * x) + ); +}; + +/** + * Export functions + */ +export const Maths = { + normalCcdf, + erf, + round, + responseSpectrum, +}; diff --git a/libs/nshmp-lib/data/index.ts b/libs/nshmp-lib/data/index.ts new file mode 100644 index 0000000..cbb3b00 --- /dev/null +++ b/libs/nshmp-lib/data/index.ts @@ -0,0 +1,2 @@ +export * from './uncertainty-model.model'; +export * from './xy-sequence.model'; diff --git a/libs/nshmp-lib/data/uncertainty-model.model.ts b/libs/nshmp-lib/data/uncertainty-model.model.ts new file mode 100644 index 0000000..4390c8c --- /dev/null +++ b/libs/nshmp-lib/data/uncertainty-model.model.ts @@ -0,0 +1,13 @@ +/** + * Container for mean, standard deviation, and truncation level. + */ +export interface UncertaintyModel { + /** Mean */ + μ: number; + + /** Standard deviation */ + σ: number; + + /** Truncation level */ + n: number; +} diff --git a/libs/nshmp-lib/data/xy-sequence.model.ts b/libs/nshmp-lib/data/xy-sequence.model.ts new file mode 100644 index 0000000..f3030ad --- /dev/null +++ b/libs/nshmp-lib/data/xy-sequence.model.ts @@ -0,0 +1,4 @@ +export interface XySequence { + xs: number[]; + ys: number[]; +} diff --git a/libs/nshmp-lib/geo/basin.model.ts b/libs/nshmp-lib/geo/basin.model.ts new file mode 100644 index 0000000..279106c --- /dev/null +++ b/libs/nshmp-lib/geo/basin.model.ts @@ -0,0 +1,25 @@ +import {Region} from './region.model'; + +export enum Basin { + BAY_AREA = 'Bay Area', + LOS_ANGELES = 'Los Angeles', + PUGET_LOWLAND = 'Puget Lowland', + WASATCH_FRONT = 'Wasatch Front', +} + +export interface BasinRegion { + title: string; + basin: Basin; + model: string; + region: Region; +} + +export interface BasinValues { + z1p0: BasinValue; + z2p5: BasinValue; +} + +export interface BasinValue { + model: string; + value: number; +} diff --git a/libs/nshmp-lib/geo/index.ts b/libs/nshmp-lib/geo/index.ts new file mode 100644 index 0000000..fe5e905 --- /dev/null +++ b/libs/nshmp-lib/geo/index.ts @@ -0,0 +1,3 @@ +export * from './basin.model'; +export * from './region.model'; +export * from './site.model'; diff --git a/libs/nshmp-lib/geo/region.model.ts b/libs/nshmp-lib/geo/region.model.ts new file mode 100644 index 0000000..67a67a9 --- /dev/null +++ b/libs/nshmp-lib/geo/region.model.ts @@ -0,0 +1,7 @@ +import {Location} from './site.model'; + +export interface Region { + name: string; + border: Location[]; + interiors: Location[][]; +} diff --git a/libs/nshmp-lib/geo/site.model.ts b/libs/nshmp-lib/geo/site.model.ts new file mode 100644 index 0000000..7dc22cb --- /dev/null +++ b/libs/nshmp-lib/geo/site.model.ts @@ -0,0 +1,17 @@ +export interface Site { + location: Location; + vs30: number; + vsInferred: boolean; + z1p0: number; + z2p5: number; +} + +export interface Location { + latitude: number; + longitude: number; +} + +export interface Bounds { + min: Location; + max: Location; +} diff --git a/libs/nshmp-lib/gmm/gmm-input.model.ts b/libs/nshmp-lib/gmm/gmm-input.model.ts new file mode 100644 index 0000000..8a8f2a6 --- /dev/null +++ b/libs/nshmp-lib/gmm/gmm-input.model.ts @@ -0,0 +1,15 @@ +export interface GmmInput { + Mw: number; + rJB: number; + rRup: number; + rX: number; + dip: number; + width: number; + zTor: number; + zHyp: number; + rake: number; + vs30: number; + vsInf: boolean; + z1p0: number; + z2p5: number; +} diff --git a/libs/nshmp-lib/gmm/gmm.model.ts b/libs/nshmp-lib/gmm/gmm.model.ts new file mode 100644 index 0000000..91bb1fd --- /dev/null +++ b/libs/nshmp-lib/gmm/gmm.model.ts @@ -0,0 +1,190 @@ +export enum Gmm { + /* Active continent NGA-West1 WUS 2008 */ + + BA_08, + CB_08, + CY_08, + + /* Active continent NGA-West2 WUS 2014 */ + + ASK_14, + BSSA_14, + CB_14, + CY_14, + IDRISS_14, + + /* + * Active continent NGA-West2 WUS 2018. These have basin amplification-only + * effects implemented. + */ + + ASK_14_BASIN, + BSSA_14_BASIN, + CB_14_BASIN, + CY_14_BASIN, + + /* Active Continent AK 2007, HI 1998 */ + + AS_97, + BJF_97, + CAMPBELL_97, + CB_03, + MT_97, + SADIGH_97, + + /* Subduction Interface and Slab WUS 2008 2014 2018, AK 2007 */ + + AB_03_GLOBAL_INTERFACE, + AB_03_GLOBAL_SLAB, + AB_03_GLOBAL_SLAB_LOW_SAT, + AB_03_CASCADIA_INTERFACE, + AB_03_CASCADIA_SLAB, + AB_03_CASCADIA_SLAB_LOW_SAT, + AM_09_INTERFACE, + AM_09_INTERFACE_BASIN, + NGA_SUB_USGS_INTERFACE, + NGA_SUB_USGS_SLAB, + NGA_SUB_USGS_INTERFACE_NO_EPI, + NGA_SUB_USGS_SLAB_NO_EPI, + BCHYDRO_12_INTERFACE, + BCHYDRO_12_SLAB, + BCHYDRO_12_INTERFACE_BASIN, + BCHYDRO_12_SLAB_BASIN, + BCHYDRO_12_INTERFACE_BACKARC, + BCHYDRO_12_SLAB_BACKARC, + BCHYDRO_12_INTERFACE_BASIN_BACKARC, + BCHYDRO_12_SLAB_BASIN_BACKARC, + YOUNGS_97_INTERFACE, + YOUNGS_97_SLAB, + ZHAO_06_INTERFACE, + ZHAO_06_SLAB, + ZHAO_06_INTERFACE_BASIN, + ZHAO_06_SLAB_BASIN, + + /* Stable continent CEUS 2008 2014 */ + + AB_06_PRIME, + AB_06_140BAR, + AB_06_200BAR, + ATKINSON_08_PRIME, + CAMPBELL_03, + FRANKEL_96, + PEZESHK_11, + SILVA_02, + SOMERVILLE_01, + TP_05, + TORO_97_MW, + + /* Johnston mag converting flavors of CEUS 2008 */ + + AB_06_140BAR_J, + AB_06_200BAR_J, + CAMPBELL_03_J, + FRANKEL_96_J, + SILVA_02_J, + TP_05_J, + + /* Atkinson Boore mag converting flavors of CEUS 2008 */ + + AB_06_140BAR_AB, + AB_06_200BAR_AB, + CAMPBELL_03_AB, + FRANKEL_96_AB, + SILVA_02_AB, + TP_05_AB, + TORO_97_MB, + + /* Other */ + + ATKINSON_10, + ATKINSON_15, + GK_15, + WONG_15, + ZHAO_16_SHALLOW_CRUST, + ZHAO_16_UPPER_MANTLE, + ZHAO_16_INTERFACE, + ZHAO_16_SLAB, + MCVERRY_00_CRUSTAL, + MCVERRY_00_INTERFACE, + MCVERRY_00_SLAB, + MCVERRY_00_VOLCANIC, + + /* NGA-East for USGS */ + + NGA_EAST_USGS, + NGA_EAST_USGS_1, + NGA_EAST_USGS_2, + NGA_EAST_USGS_3, + NGA_EAST_USGS_4, + NGA_EAST_USGS_5, + NGA_EAST_USGS_6, + NGA_EAST_USGS_7, + NGA_EAST_USGS_8, + NGA_EAST_USGS_9, + NGA_EAST_USGS_10, + NGA_EAST_USGS_11, + NGA_EAST_USGS_12, + NGA_EAST_USGS_13, + NGA_EAST_USGS_14, + NGA_EAST_USGS_15, + NGA_EAST_USGS_16, + NGA_EAST_USGS_17, + + /* NGA-East USGS Seed Tree */ + + NGA_EAST_USGS_SEEDS, + + /* NGA-East Seed Models */ + + NGA_EAST_SEED_1CCSP, + NGA_EAST_SEED_1CVSP, + NGA_EAST_SEED_2CCSP, + NGA_EAST_SEED_2CVSP, + NGA_EAST_SEED_B_A04, + NGA_EAST_SEED_B_AB14, + NGA_EAST_SEED_B_AB95, + NGA_EAST_SEED_B_BCA10D, + NGA_EAST_SEED_B_BS11, + NGA_EAST_SEED_B_SGD02, + NGA_EAST_SEED_FRANKEL, + NGA_EAST_SEED_GRAIZER, + NGA_EAST_SEED_GRAIZER16, + NGA_EAST_SEED_GRAIZER17, + NGA_EAST_SEED_HA15, + NGA_EAST_SEED_PEER_EX, + NGA_EAST_SEED_PEER_GP, + NGA_EAST_SEED_PZCT15_M1SS, + NGA_EAST_SEED_PZCT15_M2ES, + NGA_EAST_SEED_SP15, + NGA_EAST_SEED_SP16, + NGA_EAST_SEED_YA15, + + /** + * 2014 CEUS weight-averaged GMM. This is the fault-variant that includes + * Somerville ,2011). + */ + COMBINED_CEUS_2014, + + /** + * 2018 CEUS weight-averaged GMM. + */ + COMBINED_CEUS_2018, + + /** + * 2018 WUS weight-averaged GMM. These are the basin-amplifying flavors of + * NGA-West2 and does not include Idriss. + */ + COMBINED_WUS_2014_41, + + /** + * 2018 WUS weight-averaged GMM. These are the basin-amplifying flavors of + * NGA-West2 and does not include Idriss. + */ + COMBINED_WUS_2014_42, + + /** + * 2018 WUS weight-averaged GMM. These are the basin-amplifying flavors of + * NGA-West2 and does not include Idriss. + */ + COMBINED_WUS_2018, +} diff --git a/libs/nshmp-lib/gmm/imt.model.ts b/libs/nshmp-lib/gmm/imt.model.ts new file mode 100644 index 0000000..c23e2e1 --- /dev/null +++ b/libs/nshmp-lib/gmm/imt.model.ts @@ -0,0 +1,119 @@ +export enum Imt { + PGA = 'PGA', + PGV = 'PGV', + PGD = 'PGD', + ASI = 'ASI', + SI = 'SI', + DSI = 'DSI', + CAV = 'CAV', + DS575 = 'DS575', + DS595 = 'DS595', + AI = 'AI', + SA0P01 = 'SA0P01', + SA0P02 = 'SA0P02', + SA0P025 = 'SA0P025', + SA0P03 = 'SA0P03', + SA0P04 = 'SA0P04', + SA0P05 = 'SA0P05', + SA0P06 = 'SA0P06', + SA0P07 = 'SA0P07', + SA0P075 = 'SA0P075', + SA0P08 = 'SA0P08', + SA0P09 = 'SA0P09', + SA0P1 = 'SA0P1', + SA0P12 = 'SA0P12', + SA0P14 = 'SA0P14', + SA0P15 = 'SA0P15', + SA0P16 = 'SA0P16', + SA0P17 = 'SA0P17', + SA0P18 = 'SA0P18', + SA0P2 = 'SA0P2', + SA0P25 = 'SA0P25', + SA0P3 = 'SA0P3', + SA0P35 = 'SA0P35', + SA0P4 = 'SA0P4', + SA0P45 = 'SA0P45', + SA0P5 = 'SA0P5', + SA0P6 = 'SA0P6', + SA0P7 = 'SA0P7', + SA0P75 = 'SA0P75', + SA0P8 = 'SA0P8', + SA0P9 = 'SA0P9', + SA1P0 = 'SA1P0', + SA1P25 = 'SA1P25', + SA1P5 = 'SA1P5', + SA2P0 = 'SA2P0', + SA2P5 = 'SA2P5', + SA3P0 = 'SA3P0', + SA3P5 = 'SA3P5', + SA4P0 = 'SA4P0', + SA4P5 = 'SA4P5', + SA5P0 = 'SA5P0', + SA6P0 = 'SA6P0', + SA7P5 = 'SA7P5', + SA10P0 = 'SA10P0', +} + +export const imtToPeriod = (imt: Imt): number => { + if (imt === Imt.PGA || imt === Imt.PGV) { + return 0.001; + } else if (imt.startsWith('SA')) { + return Number(imt.substring(2).replace('P', '.')); + } else { + throw new Error(`Cannot convert ${imt}`); + } +}; + +export const imtToString = (imt: Imt): string => { + switch (imt) { + case Imt.PGA: + return 'Peak Ground Acceleration'; + case Imt.PGV: + return 'Peak Ground Velocity'; + case Imt.PGD: + return 'Peak Ground Displacement'; + case Imt.AI: + return 'Arias Intensity'; + case Imt.ASI: + return 'Acceleration Spectrum Intensity'; + case Imt.DSI: + return 'Displacement Spectrum Intensity'; + case Imt.SI: + return 'Spectrum intensity'; + case Imt.CAV: + return 'Cumulative Absolute Velocity'; + case Imt.DS575: + return 'Significant Duration 5-75%'; + case Imt.DS595: + return 'Significant Duration 5-95%'; + default: + return `${imtToPeriod(imt)} Second Spectral Acceleration`; + } +}; + +export const imtToUnits = (imt: Imt): string => { + switch (imt) { + case Imt.PGA: + return 'g'; + case Imt.PGV: + return 'cm/s'; + case Imt.PGD: + return 'cm'; + case Imt.AI: + return 'm/s'; + case Imt.ASI: + return 'g⋅s'; + case Imt.DSI: + return 'cm⋅s'; + case Imt.SI: + return 'cm⋅s/s'; + case Imt.CAV: + return 'g⋅s'; + case Imt.DS575: + return 's'; + case Imt.DS595: + return 's'; + default: + return 'g'; + } +}; diff --git a/libs/nshmp-lib/gmm/index.ts b/libs/nshmp-lib/gmm/index.ts new file mode 100644 index 0000000..a9cb89d --- /dev/null +++ b/libs/nshmp-lib/gmm/index.ts @@ -0,0 +1,5 @@ +export * from './gmm.model'; +export * from './gmm-input.model'; +export * from './imt.model'; +export * from './nehrp-site-class.model'; +export * from './rate-type.model'; diff --git a/libs/nshmp-lib/gmm/nehrp-site-class.model.ts b/libs/nshmp-lib/gmm/nehrp-site-class.model.ts new file mode 100644 index 0000000..90c140c --- /dev/null +++ b/libs/nshmp-lib/gmm/nehrp-site-class.model.ts @@ -0,0 +1,35 @@ +/** + * NEHRP site class. + * + * Ported from: https://code.usgs.gov/ghsc/nshmp/nshmp-lib + * /-/blob/master/src/main/java/gov/usgs/earthquake/nshmp/gmm/NehrpSiteClass.java + */ +export enum NehrpSiteClass { + A = 'A', + AB = 'AB', + B = 'B', + BC = 'BC', + C = 'C', + CD = 'CD', + D = 'D', + DE = 'DE', + E = 'E', +} + +/** + * The NEHRP site class condition. + * + * Ported from: https://code.usgs.gov/ghsc/nshmp/nshmp-lib + * /-/blob/master/src/main/java/gov/usgs/earthquake/nshmp/gmm/NehrpSiteClass.java + */ +export enum NehrpCondition { + A = 'very hard rock', + AB = 'hard rock', + B = 'medium hard rock', + BC = 'soft rock', + C = 'very dense soil or hard clay', + CD = 'dense sand or very stiff clay', + D = 'medium dense sand or stiff clay', + DE = 'loose sand or medium stiff clay', + E = 'very loose sand or soft clay', +} diff --git a/libs/nshmp-lib/gmm/rate-type.model.ts b/libs/nshmp-lib/gmm/rate-type.model.ts new file mode 100644 index 0000000..e31b35e --- /dev/null +++ b/libs/nshmp-lib/gmm/rate-type.model.ts @@ -0,0 +1,5 @@ +export enum RateType { + RECURRENCE, + SLIP_RATE, + VERTICAL_SLIP_RATE, +} diff --git a/libs/nshmp-lib/index.ts b/libs/nshmp-lib/index.ts new file mode 100644 index 0000000..ea79905 --- /dev/null +++ b/libs/nshmp-lib/index.ts @@ -0,0 +1,5 @@ +export * as calc from './calc'; +export * as data from './data'; +export * as geo from './geo'; +export * as model from './model'; +export * as nshm from './nshm'; diff --git a/libs/nshmp-lib/model/index.ts b/libs/nshmp-lib/model/index.ts new file mode 100644 index 0000000..624e47b --- /dev/null +++ b/libs/nshmp-lib/model/index.ts @@ -0,0 +1,4 @@ +export * from './mfd'; +export * from './models'; +export * from './source-type'; +export * from './tectonic-setting'; diff --git a/libs/nshmp-lib/model/mfd.ts b/libs/nshmp-lib/model/mfd.ts new file mode 100644 index 0000000..31e91f7 --- /dev/null +++ b/libs/nshmp-lib/model/mfd.ts @@ -0,0 +1,36 @@ +import {XySequence} from '../data'; + +export enum MfdType { + GR = 'GR', + GR_MMAX_GR = 'GR_MMAX_GR', + GR_MMAX_SINGLE = 'GR_MMAX_SINGLE', + GR_TAPER = 'GR_TAPER', + INCR = 'INCR', + SINGLE = 'SINGLE', +} + +export interface GutenbergRichter extends MfdProperties { + a: number; + b: number; + Δm: number; + mMin: number; + mMax: number; +} + +export interface Mfd { + data: XySequence; + props: MfdProperties; +} + +export interface MfdProperties { + type: MfdType; +} + +export interface Single extends MfdProperties { + m: number; + rate: number; +} + +export interface TaperedGr extends GutenbergRichter { + mc: number; +} diff --git a/libs/nshmp-lib/model/models.ts b/libs/nshmp-lib/model/models.ts new file mode 100644 index 0000000..238af8e --- /dev/null +++ b/libs/nshmp-lib/model/models.ts @@ -0,0 +1,42 @@ +import {XySequence} from '../data'; +import {Mfd} from './mfd'; +import {SourceType} from './source-type'; +import {TectonicSettings} from './tectonic-setting'; + +export interface MfdBranch { + id: string; + mfd: Mfd; + weight: number; +} + +export interface SettingGroup { + data: SourceGroup[]; + setting: TectonicSettings; +} + +export interface SourceBranch { + branch: string; + mfds: MfdBranch[]; + name: string; + path: string; + weight: number; +} + +export interface SourceGroup { + data: TreeInfo[]; + type: SourceType; +} + +export interface Tree { + branches: SourceBranch[]; + id: number; + name: string; + setting: TectonicSettings; + totalMfd: XySequence; + type: SourceType; +} + +export interface TreeInfo { + id: number; + name: string; +} diff --git a/libs/nshmp-lib/model/source-type.ts b/libs/nshmp-lib/model/source-type.ts new file mode 100644 index 0000000..059b13b --- /dev/null +++ b/libs/nshmp-lib/model/source-type.ts @@ -0,0 +1,59 @@ +import {capitalCase} from 'change-case'; + +/** + * Identifier for different earthquake {@link Source} types. These are declared + * in a preferred order of iteration, with potentially longer running source + * types coming first. + * + * Ported from: https://code.usgs.gov/ghsc/nshmp/nshmp-lib + * /-/blob/master/src/main/java/gov/usgs/earthquake/nshmp/model/SourceType.java + */ +export enum SourceType { + /** Finite fault. */ + FAULT = 'FAULT', + + /** Fault cluster. */ + FAULT_CLUSTER = 'FAULT_CLUSTER', + + /** Fault system. */ + FAULT_SYSTEM = 'FAULT_SYSTEM', + + /** Gridded (background) seismicity. */ + GRID = 'GRID', + + /** Subduction interface. */ + INTERFACE = 'INTERFACE', + + /** Subduction intraslab. */ + INTRASLAB = 'INSTRASLAB', + + /** The combined source types, used in web services */ + TOTAL = 'TOTAL', + + /** Zone (a.k.a. Area). */ + ZONE = 'ZONE', +} + +/** + * Returns the capital case of the source type string. + * + * @param sourceType The source type + */ +export function sourceTypeToString(sourceType: SourceType): string { + return capitalCase(sourceType); +} + +/** + * Converts source type string into a source type. + * + * @param s The pascal case of the source type + */ +export function sourceTypeFromString(s: string): SourceType { + const sourceType = Object.values(SourceType).find(type => type === s); + + if (sourceType === undefined) { + throw new Error(`Source type [${s}] does not exists`); + } + + return sourceType; +} diff --git a/libs/nshmp-lib/model/tectonic-setting.ts b/libs/nshmp-lib/model/tectonic-setting.ts new file mode 100644 index 0000000..7741e2b --- /dev/null +++ b/libs/nshmp-lib/model/tectonic-setting.ts @@ -0,0 +1,19 @@ +import {capitalCase} from 'change-case'; + +export enum TectonicSettings { + /** Active, shallow crust. */ + ACTIVE_CRUST = 'ACTIVE_CRUST', + + /** Stable, shallow crust. */ + STABLE_CRUST = 'STABLE_CRUST', + + /** Subduction */ + SUBDUCTION = 'SUBDUCTION', + + /** Volcanic. */ + VOLCANIC = 'VOLCANIC', +} + +export function tectonicSettingsToString(setting: TectonicSettings): string { + return capitalCase(setting); +} diff --git a/libs/nshmp-lib/nshm/index.ts b/libs/nshmp-lib/nshm/index.ts new file mode 100644 index 0000000..1fe7851 --- /dev/null +++ b/libs/nshmp-lib/nshm/index.ts @@ -0,0 +1,2 @@ +export * from './nshm.model'; +export * from './nshm-region.model'; diff --git a/libs/nshmp-lib/nshm/nshm-region.model.ts b/libs/nshmp-lib/nshm/nshm-region.model.ts new file mode 100644 index 0000000..fa97606 --- /dev/null +++ b/libs/nshmp-lib/nshm/nshm-region.model.ts @@ -0,0 +1,26 @@ +/** + * NSHM regions. + */ +export enum NshmRegion { + ALASKA = 'ALASKA', + CONUS = 'CONUS', + HAWAII = 'HAWAII', +} + +/** + * Returns the short form of the region. + * + * @param region The NSHM region + */ +export function nshmRegionShort(region: NshmRegion): string { + switch (region) { + case NshmRegion.ALASKA: + return 'AK'; + case NshmRegion.CONUS: + return NshmRegion.CONUS; + case NshmRegion.HAWAII: + return 'HI'; + default: + throw new Error(`Region [${region}] not supported`); + } +} diff --git a/libs/nshmp-lib/nshm/nshm.model.ts b/libs/nshmp-lib/nshm/nshm.model.ts new file mode 100644 index 0000000..b041232 --- /dev/null +++ b/libs/nshmp-lib/nshm/nshm.model.ts @@ -0,0 +1,45 @@ +import {NshmRegion} from './nshm-region.model'; + +/** + * ID for NSHMs + */ +export enum NshmId { + ALASKA_2007 = 'ALASKA_2007', + ALASKA_2023 = 'ALASKA_2023', + AMSAM_2012 = 'AMSAM_2012', + CONUS_2018 = 'CONUS_2018', + CONUS_2023 = 'CONUS_2023', + GNMI_2012 = 'GNMI_2012', + HAWAII_2021 = 'HAWAII_2021', + PRVI_2003 = 'PRVI_2003', +} + +/** + * Returns the region associated with the NSHM. + * + * @param nshmId The NSHM id + */ +export function nshmRegion(nshmId: NshmId): NshmRegion { + const region = nshmId.split('_').shift(); + + if (region === undefined) { + throw new Error(`NSHM ${nshmId} not supported`); + } + + return region as NshmRegion; +} + +/** + * Returns the year associated with NSHM. + * + * @param nshmId The NSHM id + */ +export function nshmYear(nshmId: NshmId): number { + const year = nshmId.split('_').pop(); + + if (year === undefined) { + throw new Error(`NSHM ${nshmId} not supported`); + } + + return Number.parseInt(year); +} diff --git a/libs/nshmp-ws-static/index.ts b/libs/nshmp-ws-static/index.ts new file mode 100644 index 0000000..eefa09d --- /dev/null +++ b/libs/nshmp-ws-static/index.ts @@ -0,0 +1,2 @@ +export * from './static-hazard-response.model'; +export * from './static-hazard-usage.model'; diff --git a/libs/nshmp-ws-static/static-hazard-response.model.ts b/libs/nshmp-ws-static/static-hazard-response.model.ts new file mode 100644 index 0000000..a05c9a1 --- /dev/null +++ b/libs/nshmp-ws-static/static-hazard-response.model.ts @@ -0,0 +1,50 @@ +import {XySequence} from '../nshmp-lib/data'; +import {Response} from '../nshmp-ws-utils'; +import {Parameter} from '../nshmp-ws-utils/metadata'; + +export type StaticHazardResponse = Response< + StaticRequestData, + StaticResponseData<HazardResponseMetadata>[][] +>; + +export type StaticHazardResponseSiteClass = Response< + StaticRequestDataSiteClass, + StaticResponseData<HazardResponseMetadata>[] +>; + +export type StaticGroundMotionResponse = Response< + StaticRequestData, + StaticResponseData<GroundMotionResponseMetadata>[] +>; + +export type StaticGroundMotionResponseSiteClass = Response< + StaticRequestData, + StaticResponseData<GroundMotionResponseMetadata> +>; +export interface StaticRequestData { + latitude: number; + longitude: number; +} + +export interface StaticRequestDataSiteClass extends StaticRequestData { + siteClass: string; +} + +export interface StaticResponseData<T extends StaticResponseMetadata> { + metadata: T; + data: XySequence; +} + +export interface StaticResponseMetadata { + siteClass: string; + xLabel: string; + yLabel: string; +} + +export interface HazardResponseMetadata extends StaticResponseMetadata { + imt: Parameter; +} + +export interface GroundMotionResponseMetadata extends StaticResponseMetadata { + imtValues: Record<string, number>; +} diff --git a/libs/nshmp-ws-static/static-hazard-usage.model.ts b/libs/nshmp-ws-static/static-hazard-usage.model.ts new file mode 100644 index 0000000..43c24c2 --- /dev/null +++ b/libs/nshmp-ws-static/static-hazard-usage.model.ts @@ -0,0 +1,54 @@ +import {Response} from '../nshmp-ws-utils'; +import {DoubleParameter, Parameter} from '../nshmp-ws-utils/metadata'; + +export type StaticHazardUsage = Response<string, StaticHazardUsageResponse>; + +export interface StaticHazardUsageResponse { + description: string; + syntax: string[]; + models: HazardSourceModel; + vs30: DoubleParameter; +} + +export interface HazardSourceModel { + imts: Parameter[]; + latitude: DoubleParameter; + longitude: DoubleParameter; + map: GeoJSON.FeatureCollection<GeoJSON.Polygon>; + name: string; + netcdfMetadata: NetcdfMetadata; + siteClasses: Record<string, number>; + sites: GeoJSON.FeatureCollection<GeoJSON.Point>; +} + +export interface NetcdfMetadata { + netcdfFile: string; + scienceBaseMetadata: object; +} + +export interface ScienceBaseMetadata { + catalogId: string; + dataType: string; + description: string; + gridStep: number; + history: string; + label: string; + region: string; + scieneBaseInfo: ScienceBaseInfo[]; + year: number; +} + +export interface ScienceBaseInfo { + id: string; + file: string; + files: CatalogFileInfo[]; + scienceBaseVersion: string; + title: string; + url: string; +} + +export interface CatalogFileInfo { + file: string; + siteClass: string; + vs30: string; +} diff --git a/libs/nshmp-ws-utils/index.ts b/libs/nshmp-ws-utils/index.ts new file mode 100644 index 0000000..f36b209 --- /dev/null +++ b/libs/nshmp-ws-utils/index.ts @@ -0,0 +1,4 @@ +export * as metadata from './metadata'; +export * from './response.model'; +export * from './service-error.model'; +export * from './status.model'; diff --git a/libs/nshmp-ws-utils/metadata/double-parameter.model.ts b/libs/nshmp-ws-utils/metadata/double-parameter.model.ts new file mode 100644 index 0000000..32c53f6 --- /dev/null +++ b/libs/nshmp-ws-utils/metadata/double-parameter.model.ts @@ -0,0 +1,12 @@ +/** + * Double parameter metadata. + * + * Ported from: https://code.usgs.gov/ghsc/nshmp/nshmp-haz-v2 + * /-/blob/master/src/main/java/gov/usgs/earthquake/nshmp/www/meta/DoubleParameter.java + */ +export interface DoubleParameter { + name: string; + units: string; + min: number; + max: number; +} diff --git a/libs/nshmp-ws-utils/metadata/enum-parameter.ts b/libs/nshmp-ws-utils/metadata/enum-parameter.ts new file mode 100644 index 0000000..53f9a47 --- /dev/null +++ b/libs/nshmp-ws-utils/metadata/enum-parameter.ts @@ -0,0 +1,18 @@ +/** + * Enum parameter from nshmp usage. + */ +export interface EnumParameter<T> { + label: string; + type: string; + values: T[]; +} + +/** + * Enum parameter values from nshmp usage. + */ +export interface EnumParameterValues { + id: number; + value: string; + display: string; + displayorder: number; +} diff --git a/libs/nshmp-ws-utils/metadata/index.ts b/libs/nshmp-ws-utils/metadata/index.ts new file mode 100644 index 0000000..99f5dfe --- /dev/null +++ b/libs/nshmp-ws-utils/metadata/index.ts @@ -0,0 +1,5 @@ +export * from './double-parameter.model'; +export * from './enum-parameter'; +export * from './parameter.model'; +export * from './server.model'; +export * from './string-parameter.model'; diff --git a/libs/nshmp-ws-utils/metadata/parameter.model.ts b/libs/nshmp-ws-utils/metadata/parameter.model.ts new file mode 100644 index 0000000..1162afd --- /dev/null +++ b/libs/nshmp-ws-utils/metadata/parameter.model.ts @@ -0,0 +1,10 @@ +/** + * Simple parameter. + * + * Ported from: https://code.usgs.gov/ghsc/nshmp/nshmp-haz-v2 + * /-/blob/master/src/main/java/gov/usgs/earthquake/nshmp/www/meta/Parameter.java + */ +export interface Parameter { + display: string; + value: string; +} diff --git a/libs/nshmp-ws-utils/metadata/server.model.ts b/libs/nshmp-ws-utils/metadata/server.model.ts new file mode 100644 index 0000000..ee229f1 --- /dev/null +++ b/libs/nshmp-ws-utils/metadata/server.model.ts @@ -0,0 +1,11 @@ +/** + * Server information from responses. + * + * Ported from: https://code.usgs.gov/ghsc/nshmp/nshmp-haz-v2 + * /-/blob/master/src/main/java/gov/usgs/earthquake/nshmp/www/meta/Metadata.java + */ +export interface Server { + threads: number; + timer: string; + version: string; +} diff --git a/libs/nshmp-ws-utils/metadata/string-parameter.model.ts b/libs/nshmp-ws-utils/metadata/string-parameter.model.ts new file mode 100644 index 0000000..5f4a40b --- /dev/null +++ b/libs/nshmp-ws-utils/metadata/string-parameter.model.ts @@ -0,0 +1,9 @@ +export interface StringParameter<T> { + label: string; + values: T[]; +} + +export interface StringParameterValues { + id: string; + label: string; +} diff --git a/libs/nshmp-ws-utils/response.model.ts b/libs/nshmp-ws-utils/response.model.ts new file mode 100644 index 0000000..d588898 --- /dev/null +++ b/libs/nshmp-ws-utils/response.model.ts @@ -0,0 +1,30 @@ +import {Status} from './status.model'; + +/** + * Generic web service response used for usage, error, and results. + */ +export interface Response<T, V> { + name: string; + date: string; + status: Status; + url: string; + metadata: ResponseMetadata; + request: T; + response: V; +} + +export interface ResponseMetadata { + repositories: VersionInfo[]; +} + +export interface VersionInfo { + projectName: string; + url: string; + version: string; + branchName: string; + commitDistance: number; + gitHash: string; + gitHashFull: string; + isCleanTag: boolean; + lastTag: string; +} diff --git a/libs/nshmp-ws-utils/service-error.model.ts b/libs/nshmp-ws-utils/service-error.model.ts new file mode 100644 index 0000000..fb8c032 --- /dev/null +++ b/libs/nshmp-ws-utils/service-error.model.ts @@ -0,0 +1,3 @@ +import {Response} from './response.model'; + +export type ServivceError = Response<string, string>; diff --git a/libs/nshmp-ws-utils/status.model.ts b/libs/nshmp-ws-utils/status.model.ts new file mode 100644 index 0000000..4d52b03 --- /dev/null +++ b/libs/nshmp-ws-utils/status.model.ts @@ -0,0 +1,8 @@ +/** + * Service request status identifier. + */ +export enum Status { + ERROR = 'error', + SUCCESS = 'success', + USAGE = 'usage', +} diff --git a/libs/nshmp-ws/fault-sections-service/fault-sections-response.model.ts b/libs/nshmp-ws/fault-sections-service/fault-sections-response.model.ts new file mode 100644 index 0000000..dc96730 --- /dev/null +++ b/libs/nshmp-ws/fault-sections-service/fault-sections-response.model.ts @@ -0,0 +1,26 @@ +import {FeatureCollection} from 'geojson'; + +import {RateType} from '../../nshmp-lib/gmm'; +import {NshmId} from '../../nshmp-lib/nshm'; +import {Response} from '../../nshmp-ws-utils'; + +export type FaultSectionsResponse = Response< + FaultSectionRequestData, + FeatureCollection +>; + +export interface FaultSectionRequestData { + nshmFaultSection: NshmId; + raw: boolean; +} + +export interface FaultSectionProperties { + name: string; + state: string | string[]; + dip?: number; + lowerDepth?: number; + rake: number; + rate?: number; + rateType?: RateType; + upperDepth?: number; +} diff --git a/libs/nshmp-ws/fault-sections-service/fault-sections-usage.model.ts b/libs/nshmp-ws/fault-sections-service/fault-sections-usage.model.ts new file mode 100644 index 0000000..b55636e --- /dev/null +++ b/libs/nshmp-ws/fault-sections-service/fault-sections-usage.model.ts @@ -0,0 +1,16 @@ +import {NshmId} from '../../nshmp-lib/nshm'; +import {Response} from '../../nshmp-ws-utils'; +import {StringParameter} from '../../nshmp-ws-utils/metadata'; + +export type FaultSectionUsage = Response<string, FaultSectionMetadataResponse>; + +export interface FaultSectionMetadataResponse { + description: string; + syntax: string[]; + parameters: FaultSectionParameters; +} + +export interface FaultSectionParameters { + nshm: StringParameter<NshmId>; + raw: StringParameter<boolean>; +} diff --git a/libs/nshmp-ws/fault-sections-service/index.ts b/libs/nshmp-ws/fault-sections-service/index.ts new file mode 100644 index 0000000..380a265 --- /dev/null +++ b/libs/nshmp-ws/fault-sections-service/index.ts @@ -0,0 +1,2 @@ +export * from './fault-sections-response.model'; +export * from './fault-sections-usage.model'; diff --git a/libs/nshmp-ws/gmm-services/gmm-response.model.ts b/libs/nshmp-ws/gmm-services/gmm-response.model.ts new file mode 100644 index 0000000..00c0c79 --- /dev/null +++ b/libs/nshmp-ws/gmm-services/gmm-response.model.ts @@ -0,0 +1,44 @@ +import {Constraint, Series, XyDataGroup} from '../../nshmp-haz'; +import {Gmm, GmmInput, Imt} from '../../nshmp-lib/gmm'; +import {Response} from '../../nshmp-ws-utils'; + +export type GmmSpectraResponse = Response<GmmRequestData, GmmResponseData>; + +export type GmmDistanceResponse = Response< + GmmRequestDataDistance, + GmmResponseData +>; + +export type GmmMagnitudeResponse = Response< + GmmRequestDataMagnitude, + GmmResponseData +>; + +export interface GmmResponseData { + means: XyDataGroup<GmmSeries>; + sigmas: XyDataGroup<GmmSeries>; +} + +export interface GmmRequestData { + gmms: Gmm[]; + input: GmmInput; +} + +export interface GmmRequestDataDistance extends GmmRequestData { + imt: Imt; + rMin: number; + rMax: number; +} + +export interface GmmRequestDataMagnitude extends GmmRequestData { + imt: Imt; + mMin: number; + mMax: number; + distance: number; + step: number; +} + +export interface GmmSeries extends Series { + constraints: Constraint[]; + supportedImts: string[]; +} diff --git a/libs/nshmp-ws/gmm-services/gmm-usage.model.ts b/libs/nshmp-ws/gmm-services/gmm-usage.model.ts new file mode 100644 index 0000000..2399171 --- /dev/null +++ b/libs/nshmp-ws/gmm-services/gmm-usage.model.ts @@ -0,0 +1,145 @@ +import {Response} from '../../nshmp-ws-utils'; +import { + EnumParameter, + EnumParameterValues, +} from '../../nshmp-ws-utils/metadata'; + +/** + * Marker interface for gmm usage from nshmp-ws. + */ +export type GmmSpectraUsage = Response<string, GmmSpectraUsageResponse>; + +/** + * Marker interface for gmm/distance and gmm/hw-fw usage. + */ +export type GmmDistanceUsage = Response<string, GmmDistanceUsageResponse>; + +/** + * Marker interface for gmm/distance and gmm/hw-fw usage. + */ +export type GmmMagnitudeUsage = Response<string, GmmMagnitudeUsageResponse>; + +/** + * Gmm usage response in Response object. + */ +export interface GmmUsageResponse { + description: string; + syntax: string; + parameters: GmmUsageParameters; +} + +/** + * Gmm vs distance usage response in Response object. + */ +export interface GmmSpectraUsageResponse extends GmmUsageResponse { + parameters: GmmSpectraUsageParameters; +} + +/** + * Gmm vs distance usage response in Response object. + */ +export interface GmmDistanceUsageResponse extends GmmUsageResponse { + parameters: GmmDistanceUsageParameters; +} + +/** + * Gmm vs magnitude usage response in Response object. + */ +export interface GmmMagnitudeUsageResponse extends GmmUsageResponse { + parameters: GmmMagnitudeUsageParameters; +} + +/** + * gmm parameter. + */ +export interface GmmParameter { + label: string; + info: string; + values: GmmValue[]; +} + +/** + * gmm value. + */ +export interface GmmValue { + id: string; + label: string; + supportedImts: string[]; +} + +/** + * gmm group parameters. + */ +export interface GmmGroupParameter { + label: string; + info: string; + values: GmmGroupValue[]; +} + +/** + * gmm group values. + */ +export interface GmmGroupValue { + id: string; + label: string; + data: string[]; +} +/** + * gmm usage parameter. + */ +export interface GmmUsageParameter { + label: string; + info: string; + units?: string; + min?: number; + max?: number; + value: number | boolean; +} + +/** + * gmm usage parameters. + */ +export interface GmmUsageParameters { + Mw: GmmUsageParameter; + dip: GmmUsageParameter; + width: GmmUsageParameter; + zTor: GmmUsageParameter; + zHyp: GmmUsageParameter; + rake: GmmUsageParameter; + vs30: GmmUsageParameter; + vsInf: GmmUsageParameter; + z1p0: GmmUsageParameter; + z2p5: GmmUsageParameter; + zSed: GmmUsageParameter; + gmm: GmmParameter; + group: GmmGroupParameter; +} + +/** + * gmm/spectra usage parameters. + */ +export interface GmmSpectraUsageParameters extends GmmUsageParameters { + rJB: GmmUsageParameter; + rRup: GmmUsageParameter; + rX: GmmUsageParameter; +} + +/** + * gmm/distance usage parameters. + */ +export interface GmmDistanceUsageParameters extends GmmUsageParameters { + imt: EnumParameter<EnumParameterValues>; + rMin: GmmUsageParameter; + rMax: GmmUsageParameter; +} + +/** + * gmm/magnitude usage parameters. + */ +export interface GmmMagnitudeUsageParameters extends GmmUsageParameters { + imt: EnumParameter<EnumParameterValues>; + mMin: GmmUsageParameter; + mMax: GmmUsageParameter; + distance: GmmUsageParameter; + step: GmmUsageParameter; +} diff --git a/libs/nshmp-ws/gmm-services/index.ts b/libs/nshmp-ws/gmm-services/index.ts new file mode 100644 index 0000000..33d7b2f --- /dev/null +++ b/libs/nshmp-ws/gmm-services/index.ts @@ -0,0 +1,2 @@ +export * from './gmm-response.model'; +export * from './gmm-usage.model'; diff --git a/libs/nshmp-ws/index.ts b/libs/nshmp-ws/index.ts new file mode 100644 index 0000000..0dcc337 --- /dev/null +++ b/libs/nshmp-ws/index.ts @@ -0,0 +1,3 @@ +export * as faultSectionsService from './fault-sections-service'; +export * as gmmService from './gmm-services'; +export * as utilitiesService from './utilities-service'; diff --git a/libs/nshmp-ws/utilities-service/index.ts b/libs/nshmp-ws/utilities-service/index.ts new file mode 100644 index 0000000..904cf15 --- /dev/null +++ b/libs/nshmp-ws/utilities-service/index.ts @@ -0,0 +1,2 @@ +export * from './test-sites-response'; +export * from './test-sites-usage.model'; diff --git a/libs/nshmp-ws/utilities-service/test-sites-response.ts b/libs/nshmp-ws/utilities-service/test-sites-response.ts new file mode 100644 index 0000000..4c544e3 --- /dev/null +++ b/libs/nshmp-ws/utilities-service/test-sites-response.ts @@ -0,0 +1,7 @@ +import {NshmRegion} from '../../nshmp-lib/nshm'; + +export interface TestSitesProperties { + title: string; + regionId: NshmRegion; + regionTitle: string; +} diff --git a/libs/nshmp-ws/utilities-service/test-sites-usage.model.ts b/libs/nshmp-ws/utilities-service/test-sites-usage.model.ts new file mode 100644 index 0000000..461da0e --- /dev/null +++ b/libs/nshmp-ws/utilities-service/test-sites-usage.model.ts @@ -0,0 +1,15 @@ +import {NshmRegion} from '../../nshmp-lib/nshm'; +import {Response} from '../../nshmp-ws-utils'; +import {StringParameter} from '../../nshmp-ws-utils/metadata'; + +export type TestSitesUsage = Response<string, TestSitesMetadataResponse>; + +export interface TestSitesMetadataResponse { + description: string; + syntax: string[]; + parameters: TestSitesParameters; +} + +export interface TestSitesParameters { + region: StringParameter<NshmRegion>; +} diff --git a/libs/plotly/index.ts b/libs/plotly/index.ts new file mode 100644 index 0000000..cd96c0e --- /dev/null +++ b/libs/plotly/index.ts @@ -0,0 +1,6 @@ +/* Export Plotly package */ +export * from './plotly-config.model'; +export * from './plotly-layout.model'; +export * from './plotly-legend.model'; +export * from './plotly-plot.model'; +export * from './plotly-utils'; diff --git a/libs/plotly/plotly-config.model.ts b/libs/plotly/plotly-config.model.ts new file mode 100644 index 0000000..addbe7f --- /dev/null +++ b/libs/plotly/plotly-config.model.ts @@ -0,0 +1,18 @@ +import {Config} from 'plotly.js'; + +/** + * The plot config. + * + * See https://github.com/plotly/angular-plotly.js#basic-props for + * added properties to Plotly config. + */ +export interface PlotlyConfig extends Partial<Config> { + className?: string | string[]; + debug?: boolean; + revision?: number; + style?: {[key: string]: string}; + updateOnDataChange?: boolean; + updateOnLayoutChange?: boolean; + updateOnlyWithRevision?: boolean; + useResizeHandler?: boolean; +} diff --git a/libs/plotly/plotly-layout.model.ts b/libs/plotly/plotly-layout.model.ts new file mode 100644 index 0000000..4dcf6c0 --- /dev/null +++ b/libs/plotly/plotly-layout.model.ts @@ -0,0 +1,14 @@ +import {Layout} from 'plotly.js'; + +import {PlotlyLegend} from './plotly-legend.model'; + +export interface PlotlyLayout extends Partial<Layout> { + /** Aspect ratio of plot */ + aspectRatio?: string; + + /** Aspect ratio for mobile size */ + aspectRatioMobile?: string; + + /** Plotly legend */ + legend?: Partial<PlotlyLegend>; +} diff --git a/libs/plotly/plotly-legend.model.ts b/libs/plotly/plotly-legend.model.ts new file mode 100644 index 0000000..77dcfe8 --- /dev/null +++ b/libs/plotly/plotly-legend.model.ts @@ -0,0 +1,8 @@ +import {Legend} from 'plotly.js'; + +export type LegendClick = 'toggle' | 'toggleothers' | false; + +export interface PlotlyLegend extends Partial<Legend> { + itemclick: LegendClick; + itemdoubleclick: LegendClick; +} diff --git a/libs/plotly/plotly-plot.model.ts b/libs/plotly/plotly-plot.model.ts new file mode 100644 index 0000000..a721434 --- /dev/null +++ b/libs/plotly/plotly-plot.model.ts @@ -0,0 +1,15 @@ +import {PlotData} from 'plotly.js'; + +import {PlotlyConfig} from './plotly-config.model'; +import {PlotlyLayout} from './plotly-layout.model'; + +/** + * A Plotly plot. + */ +export interface PlotlyPlot { + data: Partial<PlotData>[]; + id: string; + + config?: Partial<PlotlyConfig>; + layout?: Partial<PlotlyLayout>; +} diff --git a/libs/plotly/plotly-utils.ts b/libs/plotly/plotly-utils.ts new file mode 100644 index 0000000..e0d53e2 --- /dev/null +++ b/libs/plotly/plotly-utils.ts @@ -0,0 +1,20 @@ +/** + * Calculate the height based on element width and aspect ratio. + * + * @param el The svg element + * @param aspectRatio The aspect ratio in form `number:number` + */ +export function heightFromAspectRatio( + el: SVGElement, + aspectRatio: string +): number { + const width = Number.parseFloat(el.getAttribute('width') ?? '0'); + + if (!/[\d]+:[\d]+/.test(aspectRatio)) { + throw new Error( + `Aspect ratio [${aspectRatio}] is not in form number:number` + ); + } + + return width / eval(aspectRatio.split(':').join('/')); +} -- GitLab From 90a1167f735d55d8c4bcb7b2104558131649ed5b Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Thu, 3 Nov 2022 09:27:14 -0600 Subject: [PATCH 03/12] refactor --- src/aws/index.ts | 1 - src/aws/models/index.ts | 1 - .../models/run-nshmp-haz/dynamo-db-item.ts | 35 --- src/aws/models/run-nshmp-haz/index.ts | 4 - .../models/run-nshmp-haz/job-status.model.ts | 8 - .../run-nshmp-haz/run-nshmp-haz-config.ts | 93 -------- .../run-nshmp-haz/run-nshmp-haz-response.ts | 11 - src/index.ts | 8 - src/leaflet/index.ts | 4 - src/leaflet/models/index.ts | 2 - src/leaflet/models/map-baselayer.model.ts | 66 ------ src/leaflet/utils/map.utils.ts | 214 ------------------ src/nshmp-haz/index.ts | 2 - src/nshmp-haz/models/www/constraint.model.ts | 5 - .../disagg-service/disagg-response.model.ts | 91 -------- .../www/disagg-service/disagg-usage.model.ts | 15 -- .../models/www/disagg-service/index.ts | 2 - .../hazard-service/hazard-response.model.ts | 67 ------ .../www/hazard-service/hazard-usage.model.ts | 26 --- .../models/www/hazard-service/index.ts | 2 - src/nshmp-haz/models/www/index.ts | 7 - .../www/source-logic-trees-service/index.ts | 2 - .../source-logic-trees-response.ts | 11 - .../source-logic-trees-usage.ts | 12 - .../models/www/source-model.model.ts | 15 -- .../models/www/xy-data-group.model.ts | 14 -- src/nshmp-lib/calc/exceedance-model.util.ts | 109 --------- src/nshmp-lib/calc/index.ts | 3 - src/nshmp-lib/calc/maths.util.ts | 120 ---------- src/nshmp-lib/data/index.ts | 2 - src/nshmp-lib/data/uncertainty-model.model.ts | 13 -- src/nshmp-lib/data/xy-sequence.model.ts | 4 - src/nshmp-lib/geo/basin.model.ts | 25 -- src/nshmp-lib/geo/index.ts | 3 - src/nshmp-lib/geo/region.model.ts | 7 - src/nshmp-lib/geo/site.model.ts | 17 -- src/nshmp-lib/gmm/gmm-input.model.ts | 15 -- src/nshmp-lib/gmm/gmm.model.ts | 190 ---------------- src/nshmp-lib/gmm/imt.model.ts | 119 ---------- src/nshmp-lib/gmm/index.ts | 5 - src/nshmp-lib/gmm/nehrp-site-class.model.ts | 35 --- src/nshmp-lib/gmm/rate-type.model.ts | 5 - src/nshmp-lib/index.ts | 5 - src/nshmp-lib/model/index.ts | 4 - src/nshmp-lib/model/mfd.ts | 36 --- src/nshmp-lib/model/models.ts | 42 ---- src/nshmp-lib/model/source-type.ts | 59 ----- src/nshmp-lib/model/tectonic-setting.ts | 19 -- src/nshmp-lib/nshm/index.ts | 2 - src/nshmp-lib/nshm/nshm-region.model.ts | 26 --- src/nshmp-lib/nshm/nshm.model.ts | 45 ---- src/nshmp-ws-static/index.ts | 1 - src/nshmp-ws-static/models/index.ts | 2 - .../models/static-hazard-response.model.ts | 49 ---- .../models/static-hazard-usage.model.ts | 57 ----- src/nshmp-ws-utils/index.ts | 1 - src/nshmp-ws-utils/models/index.ts | 4 - .../models/metadata/double-parameter.model.ts | 12 - .../models/metadata/enum-parameter.ts | 18 -- src/nshmp-ws-utils/models/metadata/index.ts | 5 - .../models/metadata/parameter.model.ts | 10 - .../models/metadata/server.model.ts | 11 - .../models/metadata/string-parameter.model.ts | 9 - src/nshmp-ws-utils/models/response.model.ts | 30 --- .../models/service-error.model.ts | 3 - src/nshmp-ws-utils/models/status.model.ts | 8 - src/nshmp-ws/index.ts | 1 - .../fault-sections-response.model.ts | 26 --- .../fault-sections-usage.model.ts | 16 -- .../models/fault-sections-service/index.ts | 2 - .../models/gmm-services/gmm-response.model.ts | 47 ---- .../models/gmm-services/gmm-usage.model.ts | 150 ------------ src/nshmp-ws/models/gmm-services/index.ts | 2 - src/nshmp-ws/models/index.ts | 3 - .../models/utilities-service/index.ts | 2 - .../utilities-service/test-sites-response.ts | 7 - .../test-sites-usage.model.ts | 15 -- src/plotly/index.ts | 6 - src/plotly/models/plotly-config.model.ts | 18 -- src/plotly/models/plotly-layout.model.ts | 14 -- src/plotly/models/plotly-legend.model.ts | 8 - src/plotly/models/plotly-plot.model.ts | 15 -- src/plotly/utils/plotly-utils.ts | 20 -- 83 files changed, 2200 deletions(-) delete mode 100644 src/aws/index.ts delete mode 100644 src/aws/models/index.ts delete mode 100644 src/aws/models/run-nshmp-haz/dynamo-db-item.ts delete mode 100644 src/aws/models/run-nshmp-haz/index.ts delete mode 100644 src/aws/models/run-nshmp-haz/job-status.model.ts delete mode 100644 src/aws/models/run-nshmp-haz/run-nshmp-haz-config.ts delete mode 100644 src/aws/models/run-nshmp-haz/run-nshmp-haz-response.ts delete mode 100644 src/index.ts delete mode 100644 src/leaflet/index.ts delete mode 100644 src/leaflet/models/index.ts delete mode 100644 src/leaflet/models/map-baselayer.model.ts delete mode 100644 src/leaflet/utils/map.utils.ts delete mode 100644 src/nshmp-haz/index.ts delete mode 100644 src/nshmp-haz/models/www/constraint.model.ts delete mode 100644 src/nshmp-haz/models/www/disagg-service/disagg-response.model.ts delete mode 100644 src/nshmp-haz/models/www/disagg-service/disagg-usage.model.ts delete mode 100644 src/nshmp-haz/models/www/disagg-service/index.ts delete mode 100644 src/nshmp-haz/models/www/hazard-service/hazard-response.model.ts delete mode 100644 src/nshmp-haz/models/www/hazard-service/hazard-usage.model.ts delete mode 100644 src/nshmp-haz/models/www/hazard-service/index.ts delete mode 100644 src/nshmp-haz/models/www/index.ts delete mode 100644 src/nshmp-haz/models/www/source-logic-trees-service/index.ts delete mode 100644 src/nshmp-haz/models/www/source-logic-trees-service/source-logic-trees-response.ts delete mode 100644 src/nshmp-haz/models/www/source-logic-trees-service/source-logic-trees-usage.ts delete mode 100644 src/nshmp-haz/models/www/source-model.model.ts delete mode 100644 src/nshmp-haz/models/www/xy-data-group.model.ts delete mode 100644 src/nshmp-lib/calc/exceedance-model.util.ts delete mode 100644 src/nshmp-lib/calc/index.ts delete mode 100644 src/nshmp-lib/calc/maths.util.ts delete mode 100644 src/nshmp-lib/data/index.ts delete mode 100644 src/nshmp-lib/data/uncertainty-model.model.ts delete mode 100644 src/nshmp-lib/data/xy-sequence.model.ts delete mode 100644 src/nshmp-lib/geo/basin.model.ts delete mode 100644 src/nshmp-lib/geo/index.ts delete mode 100644 src/nshmp-lib/geo/region.model.ts delete mode 100644 src/nshmp-lib/geo/site.model.ts delete mode 100644 src/nshmp-lib/gmm/gmm-input.model.ts delete mode 100644 src/nshmp-lib/gmm/gmm.model.ts delete mode 100644 src/nshmp-lib/gmm/imt.model.ts delete mode 100644 src/nshmp-lib/gmm/index.ts delete mode 100644 src/nshmp-lib/gmm/nehrp-site-class.model.ts delete mode 100644 src/nshmp-lib/gmm/rate-type.model.ts delete mode 100644 src/nshmp-lib/index.ts delete mode 100644 src/nshmp-lib/model/index.ts delete mode 100644 src/nshmp-lib/model/mfd.ts delete mode 100644 src/nshmp-lib/model/models.ts delete mode 100644 src/nshmp-lib/model/source-type.ts delete mode 100644 src/nshmp-lib/model/tectonic-setting.ts delete mode 100644 src/nshmp-lib/nshm/index.ts delete mode 100644 src/nshmp-lib/nshm/nshm-region.model.ts delete mode 100644 src/nshmp-lib/nshm/nshm.model.ts delete mode 100644 src/nshmp-ws-static/index.ts delete mode 100644 src/nshmp-ws-static/models/index.ts delete mode 100644 src/nshmp-ws-static/models/static-hazard-response.model.ts delete mode 100644 src/nshmp-ws-static/models/static-hazard-usage.model.ts delete mode 100644 src/nshmp-ws-utils/index.ts delete mode 100644 src/nshmp-ws-utils/models/index.ts delete mode 100644 src/nshmp-ws-utils/models/metadata/double-parameter.model.ts delete mode 100644 src/nshmp-ws-utils/models/metadata/enum-parameter.ts delete mode 100644 src/nshmp-ws-utils/models/metadata/index.ts delete mode 100644 src/nshmp-ws-utils/models/metadata/parameter.model.ts delete mode 100644 src/nshmp-ws-utils/models/metadata/server.model.ts delete mode 100644 src/nshmp-ws-utils/models/metadata/string-parameter.model.ts delete mode 100644 src/nshmp-ws-utils/models/response.model.ts delete mode 100644 src/nshmp-ws-utils/models/service-error.model.ts delete mode 100644 src/nshmp-ws-utils/models/status.model.ts delete mode 100644 src/nshmp-ws/index.ts delete mode 100644 src/nshmp-ws/models/fault-sections-service/fault-sections-response.model.ts delete mode 100644 src/nshmp-ws/models/fault-sections-service/fault-sections-usage.model.ts delete mode 100644 src/nshmp-ws/models/fault-sections-service/index.ts delete mode 100644 src/nshmp-ws/models/gmm-services/gmm-response.model.ts delete mode 100644 src/nshmp-ws/models/gmm-services/gmm-usage.model.ts delete mode 100644 src/nshmp-ws/models/gmm-services/index.ts delete mode 100644 src/nshmp-ws/models/index.ts delete mode 100644 src/nshmp-ws/models/utilities-service/index.ts delete mode 100644 src/nshmp-ws/models/utilities-service/test-sites-response.ts delete mode 100644 src/nshmp-ws/models/utilities-service/test-sites-usage.model.ts delete mode 100644 src/plotly/index.ts delete mode 100644 src/plotly/models/plotly-config.model.ts delete mode 100644 src/plotly/models/plotly-layout.model.ts delete mode 100644 src/plotly/models/plotly-legend.model.ts delete mode 100644 src/plotly/models/plotly-plot.model.ts delete mode 100644 src/plotly/utils/plotly-utils.ts diff --git a/src/aws/index.ts b/src/aws/index.ts deleted file mode 100644 index e9644da..0000000 --- a/src/aws/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './models'; diff --git a/src/aws/models/index.ts b/src/aws/models/index.ts deleted file mode 100644 index 476e027..0000000 --- a/src/aws/models/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * as runNshmpHaz from './run-nshmp-haz'; diff --git a/src/aws/models/run-nshmp-haz/dynamo-db-item.ts b/src/aws/models/run-nshmp-haz/dynamo-db-item.ts deleted file mode 100644 index 122b778..0000000 --- a/src/aws/models/run-nshmp-haz/dynamo-db-item.ts +++ /dev/null @@ -1,35 +0,0 @@ -import {JobStatus} from './job-status.model'; -import {RunNshmpHazHttpPostConfig} from './run-nshmp-haz-config'; - -/** - * Dynamo DB item to add to table - */ -export interface DynamoDBItem { - email: string; - jobId: string; - - calc?: DynamoDBItemCalc; - inputs?: RunNshmpHazHttpPostConfig; - job?: DynamoDBItemJob; - results?: DynamoDBItemResults; -} - -export interface DynamoDBItemCalc { - completedOn?: string; - cores?: string; - createdOn?: string; - memory?: string; - totalTime?: string; -} - -export interface DynamoDBItemJob { - environment?: string; - errorMessage?: string; - instanceId?: string; - jobStatus?: JobStatus; -} - -export interface DynamoDBItemResults { - viewLogs?: string; - zipFile?: string; -} diff --git a/src/aws/models/run-nshmp-haz/index.ts b/src/aws/models/run-nshmp-haz/index.ts deleted file mode 100644 index 766403a..0000000 --- a/src/aws/models/run-nshmp-haz/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from './dynamo-db-item'; -export * from './job-status.model'; -export * from './run-nshmp-haz-config'; -export * from './run-nshmp-haz-response'; diff --git a/src/aws/models/run-nshmp-haz/job-status.model.ts b/src/aws/models/run-nshmp-haz/job-status.model.ts deleted file mode 100644 index 53c621c..0000000 --- a/src/aws/models/run-nshmp-haz/job-status.model.ts +++ /dev/null @@ -1,8 +0,0 @@ -/** Job status */ -export enum JobStatus { - COMPLETED = 'Completed', - CREATED = 'Created', - FAILED = 'Failed', - RUNNING = 'Running', - TERMINATED = 'Terminated', -} diff --git a/src/aws/models/run-nshmp-haz/run-nshmp-haz-config.ts b/src/aws/models/run-nshmp-haz/run-nshmp-haz-config.ts deleted file mode 100644 index 9a547d8..0000000 --- a/src/aws/models/run-nshmp-haz/run-nshmp-haz-config.ts +++ /dev/null @@ -1,93 +0,0 @@ -/** - * nshmp-haz calc config - */ -export interface CalcConfig { - deagg?: unknown; - hazard?: unknown; - output?: CalcConfigOutput; - performance?: unknown; - rate?: unknown; - site?: unknown; -} - -/** nshmp-haz calc config output section */ -export interface CalcConfigOutput { - directory: string; -} - -/** AWS cloud config */ -export interface CloudConfig { - /** EC2 instance type */ - instanceType: string; - - /** Whether to debug; sets "set -x" in user data script for EC2 */ - debug?: boolean; -} - -/** NSHMP config */ -export interface NshmpConfig { - /** - * Java class name of class to run. - * - * Example: HazardCalc - */ - className: string; - - /** Email to get notifications */ - email: string; - - /** - * The URL to the git repository of the model to use. - */ - modelGitUrl: string; - - /** The SHA (branch, tag, etc) of the model to use */ - modelSha?: string; - - /** - * URL to nshmp-lib. - * - * Defaults to using version defined in nshmp-haz Gradle file. - */ - nshmpLibGitUrl?: string; - - /** The SHA of nshmp-lib */ - nshmpLibSha?: string; - - /** URL to site file. */ - siteFileUrl: string; - - /** Intensity measure level for deagg-epsilon */ - iml?: number; - - /** Path inside model tarball for hazard code to run */ - modelPath?: string; - - /** Return period for deagg */ - returnPeriod?: number; - - /** - * The URL to the repository of the hazard to use. - */ - sourceCodeGitUrl?: string; - - /** The SHA (branch, tag, etc) of the source code to use*/ - sourceCodeSha?: string; -} - -/** State machine input */ -export interface NshmpHazJobConfig extends RunNshmpHazHttpPostConfig { - jobId: string; -} - -/** HTTP POST config for running nshmp-haz on AWS */ -export interface RunNshmpHazHttpPostConfig { - /** AWS cloud config */ - cloudConfig: CloudConfig; - - /** NSHMP config to run nshmp-haz */ - nshmpConfig: NshmpConfig; - - /** The nshmp-haz calc config */ - calcConfig?: CalcConfig; -} diff --git a/src/aws/models/run-nshmp-haz/run-nshmp-haz-response.ts b/src/aws/models/run-nshmp-haz/run-nshmp-haz-response.ts deleted file mode 100644 index b6a5b8e..0000000 --- a/src/aws/models/run-nshmp-haz/run-nshmp-haz-response.ts +++ /dev/null @@ -1,11 +0,0 @@ -import * as nshmpWsUtils from '../../../nshmp-ws-utils'; -import {RunNshmpHazHttpPostConfig} from './run-nshmp-haz-config'; - -export type RunNshmpHazResponse = nshmpWsUtils.Response< - RunNshmpHazHttpPostConfig, - RunNshmpHazResponseData ->; - -export interface RunNshmpHazResponseData { - jobId: string; -} diff --git a/src/index.ts b/src/index.ts deleted file mode 100644 index 0fbb98f..0000000 --- a/src/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -export * as nshmpAws from './aws'; -export * as nshmpLeaflet from './leaflet'; -export * as nshmpHaz from './nshmp-haz'; -export * as nshmpLib from './nshmp-lib'; -export * as nshmpWs from './nshmp-ws'; -export * as nshmpWsStatic from './nshmp-ws-static'; -export * as nshmpWsUtils from './nshmp-ws-utils'; -export * as nshmpPlotly from './plotly'; diff --git a/src/leaflet/index.ts b/src/leaflet/index.ts deleted file mode 100644 index b28c177..0000000 --- a/src/leaflet/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Export Leaflet package */ - -export * from './models'; -export * from './utils/map.utils'; diff --git a/src/leaflet/models/index.ts b/src/leaflet/models/index.ts deleted file mode 100644 index 0a1a5ba..0000000 --- a/src/leaflet/models/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -/* Export nshmp package */ -export * from './map-baselayer.model'; diff --git a/src/leaflet/models/map-baselayer.model.ts b/src/leaflet/models/map-baselayer.model.ts deleted file mode 100644 index 734d77e..0000000 --- a/src/leaflet/models/map-baselayer.model.ts +++ /dev/null @@ -1,66 +0,0 @@ -/** - * Base layers for mapping. - * - * These base layers map to concrete styles in lib/state/map/map.utils. - */ -export enum MapBaseLayer { - /** - * Esri light grey base. - * @see https://doc.arcgis.com/en/data-appliance/2022/maps/world-light-gray-base.htm - */ - GREYSCALE = 'Greyscale', - - /** - * Esri dark grey base. - * @see https://doc.arcgis.com/en/data-appliance/2022/maps/world-dark-gray-base.htm - */ - GREYSCALE_DARK = 'Greyscale Dark', - - /** - * Esri hillshade. - * @see https://doc.arcgis.com/en/data-appliance/2022/maps/world-hillshade.htm - */ - HILLSHADE = 'Hillshade', - - /** - * Esri dark hillshade. - * @see https://doc.arcgis.com/en/data-appliance/2022/maps/world-hillshade-dark.htm - */ - HILLSHADE_DARK = 'Hillshade Dark', - - /** - * Esri National Geographic world map. - * @see https://doc.arcgis.com/en/data-appliance/2022/maps/national-geographic-world-map.htm - */ - NAT_GEO = 'Natational Geographic', - - /** - * Esri ocean map. - * @see https://doc.arcgis.com/en/data-appliance/2022/maps/world-ocean-base.htm - */ - OCEAN = 'Ocean', - - /** - * Esri physical map - * @see https://doc.arcgis.com/en/data-appliance/2022/maps/world-physical-map.htm - */ - PHYSICAL = 'Physical', - - /** - * Esri satellite map. - * @see https://doc.arcgis.com/en/data-appliance/2022/maps/world-imagery.htm - */ - SATELLITE = 'Satellite', - - /** - * Esir street map. - * @see https://doc.arcgis.com/en/data-appliance/2022/maps/world-street-map.htm - */ - STREET = 'Street', - - /** - * Esri topographic map. - * @see https://doc.arcgis.com/en/data-appliance/2022/maps/world-topographic-map.htm - */ - TOPO = 'Topographic', -} diff --git a/src/leaflet/utils/map.utils.ts b/src/leaflet/utils/map.utils.ts deleted file mode 100644 index 1cfa0d4..0000000 --- a/src/leaflet/utils/map.utils.ts +++ /dev/null @@ -1,214 +0,0 @@ -import * as L from 'leaflet'; - -import {Location} from '../../nshmp-lib'; -import {MapBaseLayer} from '../models'; - -/** Location transform */ -export type LocationTransform = (location: Location) => Location; - -/** - * Esri raster base layers for Leaflet. - * - * https://doc.arcgis.com/en/data-appliance/2022/maps/directory-maps-data.htm - */ -export function baseLayers(): Record<MapBaseLayer, L.TileLayer> { - return BASE_LAYERS; -} - -/** - * Returns a specific Esri raster base layer. - */ -export function baseLayer(baseLayer: MapBaseLayer): L.TileLayer { - return BASE_LAYERS[baseLayer]; -} - -/** - * Transform coordinates in a Feature Collection. - * - * @param featureCollection The feature collection - * @param transform The transform function to use - */ -export function transformCoordinates( - featureCollection: GeoJSON.FeatureCollection, - transform: LocationTransform = loc => loc -): GeoJSON.FeatureCollection { - for (const feature of featureCollection.features) { - const geometry = feature.geometry; - - switch (geometry.type) { - case 'LineString': { - geometry.coordinates = geometry.coordinates.map(coord => - transformCoordinate(coord, transform) - ); - break; - } - case 'MultiLineString': { - geometry.coordinates = geometry.coordinates.map(position => - position.map(coord => transformCoordinate(coord, transform)) - ); - break; - } - case 'MultiPoint': { - geometry.coordinates = geometry.coordinates.map(coord => - transformCoordinate(coord, transform) - ); - break; - } - case 'MultiPolygon': { - geometry.coordinates = geometry.coordinates.map(positions => - positions.map(position => - position.map(coord => transformCoordinate(coord, transform)) - ) - ); - break; - } - case 'Point': { - geometry.coordinates = transformCoordinate( - geometry.coordinates, - transform - ); - break; - } - case 'Polygon': { - geometry.coordinates = geometry.coordinates.map(position => - position.map(coord => transformCoordinate(coord, transform)) - ); - break; - } - } - } - - return featureCollection; -} - -const ARCGIS_URL_START = - 'https://services.arcgisonline.com/arcgis/rest/services/'; -const ARCGIS_URL_END = '/MapServer/tile/{z}/{y}/{x}'; -const OPTIONS: L.MapOptions = { - maxZoom: 16, -}; - -const BASE_LAYERS: Record<MapBaseLayer, L.TileLayer> = { - /* Esri light gray */ - [MapBaseLayer.GREYSCALE]: L.tileLayer( - `${ARCGIS_URL_START}Canvas/World_Light_Gray_Base${ARCGIS_URL_END}`, - { - ...OPTIONS, - attribution: - 'Esri, HERE, Garmin, © OpenStreetMap contributors, and the GIS user community', - id: MapBaseLayer.GREYSCALE, - } - ), - /* Esri dark gray */ - [MapBaseLayer.GREYSCALE_DARK]: L.tileLayer( - `${ARCGIS_URL_START}Canvas/World_Dark_Gray_Base${ARCGIS_URL_END}`, - { - ...OPTIONS, - attribution: - 'Esri, HERE, Garmin, © OpenStreetMap contributors, and the GIS user community', - id: MapBaseLayer.GREYSCALE_DARK, - } - ), - /* Esri world hillshade */ - [MapBaseLayer.HILLSHADE]: L.tileLayer( - `${ARCGIS_URL_START}Elevation/World_Hillshade${ARCGIS_URL_END}`, - { - ...OPTIONS, - attribution: - 'Esri, USGS, NGA, NASA, CGIAR, N Robinson, NCEAS, NLS, OS, NMA, ' + - 'Geodatastyrelsen, Rijkswaterstaat, GSA, Geoland, FEMA, Intermap, ' + - 'and the GIS user community', - id: MapBaseLayer.HILLSHADE, - } - ), - /* Esri world hillshade */ - [MapBaseLayer.HILLSHADE_DARK]: L.tileLayer( - `${ARCGIS_URL_START}Elevation/World_Hillshade_Dark${ARCGIS_URL_END}`, - { - ...OPTIONS, - attribution: - 'Esri, USGS, NGA, NASA, CGIAR, N Robinson, NCEAS, NLS, OS, NMA, ' + - 'Geodatastyrelsen, Rijkswaterstaat, GSA, Geoland, FEMA, Intermap, ' + - 'and the GIS user community', - id: MapBaseLayer.HILLSHADE_DARK, - } - ), - /* Esri National Geographics world map */ - [MapBaseLayer.NAT_GEO]: L.tileLayer( - `${ARCGIS_URL_START}NatGeo_World_Map${ARCGIS_URL_END}`, - { - ...OPTIONS, - attribution: - 'National Geographic, Esri, Garmin, HERE, UNEP-WCMC, USGS, ' + - 'NASA, ESA, METI, NRCan, GEBCO, NOAA, INCREMENT P', - id: MapBaseLayer.NAT_GEO, - } - ), - /* Esri world ocean */ - [MapBaseLayer.OCEAN]: L.tileLayer( - `${ARCGIS_URL_START}Ocean/World_Ocean_Base${ARCGIS_URL_END}`, - { - ...OPTIONS, - attribution: 'Esri, Garmin, GEBCO, NOAA NGDC, and other contributors', - id: MapBaseLayer.OCEAN, - maxZoom: 10, - } - ), - /* Esri world physical map */ - [MapBaseLayer.PHYSICAL]: L.tileLayer( - `${ARCGIS_URL_START}World_Physical_Map${ARCGIS_URL_END}`, - { - ...OPTIONS, - attribution: 'U.S. National Park Service', - id: MapBaseLayer.PHYSICAL, - maxZoom: 8, - } - ), - [MapBaseLayer.SATELLITE]: L.tileLayer( - `${ARCGIS_URL_START}World_Imagery${ARCGIS_URL_END}`, - { - ...OPTIONS, - attribution: - 'Esri, Maxar, Earthstar Geographics, and the GIS User Community', - id: MapBaseLayer.SATELLITE, - } - ), - [MapBaseLayer.STREET]: L.tileLayer( - `${ARCGIS_URL_START}World_Street_Map${ARCGIS_URL_END}`, - { - ...OPTIONS, - attribution: - 'Esri, HERE, Garmin, USGS, Intermap, INCREMENT P, ' + - 'NRCan, Esri Japan, METI, Esri China (Hong Kong), Esri Korea, ' + - 'Esri (Thailand), NGCC, © OpenStreetMap contributors, and the ' + - 'GIS User Community', - id: MapBaseLayer.STREET, - } - ), - [MapBaseLayer.TOPO]: L.tileLayer( - `${ARCGIS_URL_START}World_Topo_Map${ARCGIS_URL_END}`, - { - ...OPTIONS, - attribution: - 'Esri, HERE, Garmin, USGS, Intermap, INCREMENT P, NRCan, ' + - 'Esri Japan, METI, Mapwithyou, NOSTRA, © OpenStreetMap ' + - 'contributors, and the GIS User Community', - id: MapBaseLayer.TOPO, - } - ), -}; - -function transformCoordinate( - coordinates: number[], - transform: LocationTransform -): number[] { - const longitude = coordinates[0]; - const latitude = coordinates[1]; - - const location = transform({ - latitude, - longitude, - }); - - return [location.longitude, location.latitude]; -} diff --git a/src/nshmp-haz/index.ts b/src/nshmp-haz/index.ts deleted file mode 100644 index b4404b0..0000000 --- a/src/nshmp-haz/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -/* Export nshmp package */ -export * from './models/www'; diff --git a/src/nshmp-haz/models/www/constraint.model.ts b/src/nshmp-haz/models/www/constraint.model.ts deleted file mode 100644 index be8a4ca..0000000 --- a/src/nshmp-haz/models/www/constraint.model.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface Constraint { - id: string; - min: object; - max: object; -} diff --git a/src/nshmp-haz/models/www/disagg-service/disagg-response.model.ts b/src/nshmp-haz/models/www/disagg-service/disagg-response.model.ts deleted file mode 100644 index 3c97b46..0000000 --- a/src/nshmp-haz/models/www/disagg-service/disagg-response.model.ts +++ /dev/null @@ -1,91 +0,0 @@ -import {Imt} from '../../../../nshmp-lib'; -import * as nshmpWsUtils from '../../../../nshmp-ws-utils'; -import {HazardRequestData} from '../hazard-service/hazard-response.model'; - -export type DisaggResponse = nshmpWsUtils.Response< - DisaggRequestData, - DisaggResponseData ->; - -export enum DataType { - GMM = 'GMM', - SOURCE = 'SOURCE', - DISAGG_DATA = 'DISAGG_DATA', -} - -export interface DisaggRequestData extends HazardRequestData { - imts: Imt[]; - returnPeriod: number; - dataTypes: DataType[]; -} - -export interface DisaggResponseMetadata { - rlabel: string; - mlabel: string; - εlabel: string; - εbins: EBin[]; - server: nshmpWsUtils.metadata.Server; -} - -export interface EBin { - id: number; - min: number; - max: number; -} - -export interface DisaggResponseData { - metadata: DisaggResponseMetadata; - disaggs: DisaggResponseDataValues[]; -} - -export interface DisaggResponseDataValues { - imt: nshmpWsUtils.metadata.Parameter; - data: DisaggComponentData[]; -} - -export interface DisaggComponentData { - component: string; - data: DisaggData[]; - summary: DisaggSummary[]; - sources: DisaggSource[]; -} - -export interface DisaggData { - r: number; - m: number; - rBar: number; - mBar: number; - εBar: number; - εdata: EData[]; -} - -export interface EData { - εbin: number; - value: number; -} - -export interface DisaggSummary { - name: string; - display: boolean; - data: DisaggSummaryData[]; -} - -export interface DisaggSummaryData { - name: string; - value: number; - units: string; -} - -export interface DisaggSource { - name: string; - source: string; - type: string; - contribution: number; - id: number; - r: number; - m: number; - ε: number; - azimuth: number; - longitude: number; - latitude: number; -} diff --git a/src/nshmp-haz/models/www/disagg-service/disagg-usage.model.ts b/src/nshmp-haz/models/www/disagg-service/disagg-usage.model.ts deleted file mode 100644 index dd4085b..0000000 --- a/src/nshmp-haz/models/www/disagg-service/disagg-usage.model.ts +++ /dev/null @@ -1,15 +0,0 @@ -import {Response} from '../../../../nshmp-ws-utils'; -import {DoubleParameter} from '../../../../nshmp-ws-utils/models/metadata'; -import {HazardRequestMetadata} from '../hazard-service'; - -export type DisaggUsage = Response<string, DisaggRequestMetadata>; - -export interface DisaggRequestMetadata extends HazardRequestMetadata { - iml: ImlMetadata; - returnPeriod: DoubleParameter; -} - -export interface ImlMetadata { - name: string; - range: Record<string, DoubleParameter>; -} diff --git a/src/nshmp-haz/models/www/disagg-service/index.ts b/src/nshmp-haz/models/www/disagg-service/index.ts deleted file mode 100644 index 01ddf85..0000000 --- a/src/nshmp-haz/models/www/disagg-service/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './disagg-response.model'; -export * from './disagg-usage.model'; diff --git a/src/nshmp-haz/models/www/hazard-service/hazard-response.model.ts b/src/nshmp-haz/models/www/hazard-service/hazard-response.model.ts deleted file mode 100644 index 1db487d..0000000 --- a/src/nshmp-haz/models/www/hazard-service/hazard-response.model.ts +++ /dev/null @@ -1,67 +0,0 @@ -import {XySequence} from '../../../../nshmp-lib/models/data'; -import * as nshmpWsUtils from '../../../../nshmp-ws-utils'; - -/** - * The hazard calculation response. - */ -export type HazardCalcResponse = nshmpWsUtils.Response< - HazardRequestData, - HazardResponseData ->; - -/* - * The hazard service request data. - * - * Ported from: https://code.usgs.gov/ghsc/nshmp/nshmp-haz-v2 - * /-/blob/master/src/main/java/gov/usgs/earthquake/nshmp/www/services/HazardService.java - */ -export interface HazardRequestData { - latitude: number; - longitude: number; - vs30: number; -} - -/* - * The hazard service calculation response data. - * - * Ported from: https://code.usgs.gov/ghsc/nshmp/nshmp-haz-v2 - * /-/blob/master/src/main/java/gov/usgs/earthquake/nshmp/www/services/HazardService.java - */ -export interface HazardResponseData { - metadata: HazardResponseMetadata; - hazardCurves: HazardResponse[]; -} - -/* - * The hazard service calculation response. - * - * Ported from: https://code.usgs.gov/ghsc/nshmp/nshmp-haz-v2 - * /-/blob/master/src/main/java/gov/usgs/earthquake/nshmp/www/services/HazardService.java - */ -export interface HazardResponse { - imt: nshmpWsUtils.metadata.Parameter; - data: HazardCurve[]; -} - -/* - * The hazard service calculation response metadata. - * - * Ported from: https://code.usgs.gov/ghsc/nshmp/nshmp-haz-v2 - * /-/blob/master/src/main/java/gov/usgs/earthquake/nshmp/www/services/HazardService.java - */ -export interface HazardResponseMetadata { - xlabel: string; - ylabel: string; - server: nshmpWsUtils.metadata.Server; -} - -/* - * The hazard service hazard curve. - * - * Ported from: https://code.usgs.gov/ghsc/nshmp/nshmp-haz-v2 - * /-/blob/master/src/main/java/gov/usgs/earthquake/nshmp/www/services/HazardService.java - */ -export interface HazardCurve { - component: string; - values: XySequence; -} diff --git a/src/nshmp-haz/models/www/hazard-service/hazard-usage.model.ts b/src/nshmp-haz/models/www/hazard-service/hazard-usage.model.ts deleted file mode 100644 index e272e94..0000000 --- a/src/nshmp-haz/models/www/hazard-service/hazard-usage.model.ts +++ /dev/null @@ -1,26 +0,0 @@ -import * as nshmpWsUtils from '../../../../nshmp-ws-utils'; -import {SourceModel} from '../source-model.model'; - -/** - * The hazard service usage response. - */ -export type HazardUsageResponse = nshmpWsUtils.Response< - string, - HazardRequestMetadata ->; - -/** - * Base source model metadata. - */ -export interface HazardModelMetadata { - model: SourceModel; -} - -/** - * The hazard service usage request metadata. - */ -export interface HazardRequestMetadata extends HazardModelMetadata { - latitude: nshmpWsUtils.metadata.DoubleParameter; - longitude: nshmpWsUtils.metadata.DoubleParameter; - vs30: nshmpWsUtils.metadata.DoubleParameter; -} diff --git a/src/nshmp-haz/models/www/hazard-service/index.ts b/src/nshmp-haz/models/www/hazard-service/index.ts deleted file mode 100644 index a60a10c..0000000 --- a/src/nshmp-haz/models/www/hazard-service/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './hazard-response.model'; -export * from './hazard-usage.model'; diff --git a/src/nshmp-haz/models/www/index.ts b/src/nshmp-haz/models/www/index.ts deleted file mode 100644 index 79a5596..0000000 --- a/src/nshmp-haz/models/www/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -/* Export www packages */ -export * from './constraint.model'; -export * as disaggService from './disagg-service'; -export * as hazardService from './hazard-service'; -export * as sourceLogicTreesService from './source-logic-trees-service'; -export * from './source-model.model'; -export * from './xy-data-group.model'; diff --git a/src/nshmp-haz/models/www/source-logic-trees-service/index.ts b/src/nshmp-haz/models/www/source-logic-trees-service/index.ts deleted file mode 100644 index 1a70c3c..0000000 --- a/src/nshmp-haz/models/www/source-logic-trees-service/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './source-logic-trees-response'; -export * from './source-logic-trees-usage'; diff --git a/src/nshmp-haz/models/www/source-logic-trees-service/source-logic-trees-response.ts b/src/nshmp-haz/models/www/source-logic-trees-service/source-logic-trees-response.ts deleted file mode 100644 index 839f2e4..0000000 --- a/src/nshmp-haz/models/www/source-logic-trees-service/source-logic-trees-response.ts +++ /dev/null @@ -1,11 +0,0 @@ -import {Tree} from '../../../../nshmp-lib/models/model/models'; -import * as nshmpWsUtils from '../../../../nshmp-ws-utils'; - -export type SourceLogicTreesResponse = nshmpWsUtils.Response< - SourceLogicTreesRequestData, - Tree ->; - -export interface SourceLogicTreesRequestData { - id: number; -} diff --git a/src/nshmp-haz/models/www/source-logic-trees-service/source-logic-trees-usage.ts b/src/nshmp-haz/models/www/source-logic-trees-service/source-logic-trees-usage.ts deleted file mode 100644 index 00f17e5..0000000 --- a/src/nshmp-haz/models/www/source-logic-trees-service/source-logic-trees-usage.ts +++ /dev/null @@ -1,12 +0,0 @@ -import {SettingGroup} from '../../../../nshmp-lib/models/model/models'; -import * as nshmpWsUtils from '../../../../nshmp-ws-utils'; -import {HazardModelMetadata} from '../hazard-service'; - -export type SourceLogicTreesUsage = nshmpWsUtils.Response< - string, - SourceLogicTreesMetadata ->; - -export interface SourceLogicTreesMetadata extends HazardModelMetadata { - trees: SettingGroup[]; -} diff --git a/src/nshmp-haz/models/www/source-model.model.ts b/src/nshmp-haz/models/www/source-model.model.ts deleted file mode 100644 index faa984b..0000000 --- a/src/nshmp-haz/models/www/source-model.model.ts +++ /dev/null @@ -1,15 +0,0 @@ -import {Gmm} from '../../../nshmp-lib/models/gmm'; -import {metadata} from '../../../nshmp-ws-utils'; - -/** - * Source model. - */ -export interface SourceModel { - bounds: number[]; - gmms: Set<Gmm>; - imts: metadata.Parameter[]; - map: GeoJSON.FeatureCollection<GeoJSON.Polygon>; - name: string; - siteClasses: Record<string, number>; - sites: GeoJSON.FeatureCollection<GeoJSON.Point>; -} diff --git a/src/nshmp-haz/models/www/xy-data-group.model.ts b/src/nshmp-haz/models/www/xy-data-group.model.ts deleted file mode 100644 index e57af87..0000000 --- a/src/nshmp-haz/models/www/xy-data-group.model.ts +++ /dev/null @@ -1,14 +0,0 @@ -import {XySequence} from '../../../nshmp-lib/models/data'; - -export interface XyDataGroup<T> { - label: string; - xLabel: string; - yLabel: string; - data: T[]; -} - -export interface Series { - id: string; - label: string; - data: XySequence; -} diff --git a/src/nshmp-lib/calc/exceedance-model.util.ts b/src/nshmp-lib/calc/exceedance-model.util.ts deleted file mode 100644 index d642c19..0000000 --- a/src/nshmp-lib/calc/exceedance-model.util.ts +++ /dev/null @@ -1,109 +0,0 @@ -import {UncertaintyModel} from '../data'; -import {Maths} from './maths.util'; - -/** - * No truncation; model ignores truncation level n. - * - * Compute the probability of exceeding a value. - * @param model to compute exceedance - * @param value for which to compute the exceedance probability - */ -const truncationOff = (model: UncertaintyModel, value: number) => { - return boundedCcdFn(model, value, 0.0, 1.0); -}; - -/** - * No truncation; model ignores truncation level n. - * - * Compute the probability of exceeding a value. - * - * @param model to compute exceedance - * @param sequence for which to compute the exceedance probability - */ -const truncationOffSequence = (model: UncertaintyModel, sequence: number[]) => { - const yValues: number[] = []; - - for (const x of sequence) { - yValues.push(truncationOff(model, x)); - } - - return yValues; -}; - -/** - * Upper truncation only at μ + σ * n. - * - * Compute the probability of exceeding a value. - * - * @param model to compute exceedance - * @param value for which to compute the exceedance probability - */ -const truncationUpperOnly = (model: UncertaintyModel, value: number) => { - return boundedCcdFn(model, value, prob(model), 1.0); -}; - -/** - * Upper truncation only at μ + σ * n. - * - * Compute the probability of exceeding a value. - * - * @param model to compute exceedance - * @param sequence for which to compute the exceedance probability - */ -const truncationUpperOnlySequence = ( - model: UncertaintyModel, - sequence: number[] -) => { - const yValues = []; - - for (const x of sequence) { - yValues.push(truncationUpperOnly(model, x)); - } - - return yValues; -}; - -/** - * Bounded complementary cumulative distribution. Compute the probability that - * a value will be exceeded, subject to upper and lower probability limits. - * - * @param model to compute exceedance - */ -const boundedCcdFn = ( - model: UncertaintyModel, - value: number, - pHi: number, - pLo: number -) => { - const p = Maths.normalCcdf(model.μ, model.σ, value); - return probBoundsCheck((p - pHi) / (pLo - pHi)); -}; - -/** - * For truncated distributions, p may be out of range. For upper truncations, - * p may be less than pHi, yielding a negative value in boundedCcdFn(); for - * lower truncations, p may be greater than pLo, yielding a value > 1.0 in - * boundedCcdFn(). - */ -const probBoundsCheck = (p: number) => { - return p < 0.0 ? 0.0 : p > 1.0 ? 1.0 : p; -}; - -/** - * Compute ccd value at μ + nσ. - * - * @param model to compute exceedance - */ -const prob = (model: UncertaintyModel) => { - return Maths.normalCcdf(model.μ, model.σ, model.μ + model.n * model.σ); -}; - -/** - * Export functions - */ -export const ExceedanceModel = { - truncationOff, - truncationOffSequence, - truncationUpperOnly, - truncationUpperOnlySequence, -}; diff --git a/src/nshmp-lib/calc/index.ts b/src/nshmp-lib/calc/index.ts deleted file mode 100644 index 7d54174..0000000 --- a/src/nshmp-lib/calc/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -/* calc export */ -export {ExceedanceModel} from './exceedance-model.util'; -export {Maths} from './maths.util'; diff --git a/src/nshmp-lib/calc/maths.util.ts b/src/nshmp-lib/calc/maths.util.ts deleted file mode 100644 index 5a5a814..0000000 --- a/src/nshmp-lib/calc/maths.util.ts +++ /dev/null @@ -1,120 +0,0 @@ -import * as d3 from 'd3-format'; - -import {XySequence} from '../data'; -import {Imt} from '../gmm'; -import {imtToPeriod} from '../gmm/imt.model'; - -/** - * Normal complementary cumulative distribution function. - * - * @param μ mean - * @param σ standard deviation - * @param x variate - */ -const normalCcdf = (μ: number, σ: number, x: number) => { - return (1.0 + erf((μ - x) / (σ * Math.sqrt(2)))) * 0.5; -}; - -/** - * Error function approximation of Abramowitz and Stegun, formula 7.1.26 in - * the <em>Handbook of Mathematical Functions with Formulas, Graphs, and - * Mathematical Tables</em>. Although the approximation is only valid for - * x ≥ 0, because erf(x) is an odd function, - * erf(x) = −erf(−x) and negative values are supported. - */ -const erf = (x: number) => { - return x < 0.0 ? -erfBase(-x) : erfBase(x); -}; - -/** - * Round a number to specific format - * - * @param value Value to round - * @param scale Format scale - */ -const round = (value: number, scale: number) => { - const format = d3.format(`.${scale}f`); - return Number(format(value)); -}; - -/** - * Calculate the response sepectrum for each IMT. - * - * @param hazards The hazard curves by imt - * @param returnPeriod The return period (in years) to calculate at - */ -const responseSpectrum = ( - hazards: Map<Imt, XySequence>, - returnPeriod: number -): XySequence => { - const xs: number[] = []; - const ys: number[] = []; - - for (const [imt, xySequence] of hazards) { - xs.push(imtToPeriod(imt)); - ys.push(calculateResponseSpectrum(xySequence, returnPeriod)); - } - - return { - xs, - ys, - }; -}; - -const calculateResponseSpectrum = ( - xySequence: XySequence, - returnPeriod: number -): number => { - returnPeriod = 1 / returnPeriod; - const xValues = xySequence.xs; - const yValues = xySequence.ys; - - const afeIndexBelowReturnPeriod = yValues.findIndex(y => { - return y < returnPeriod; - }); - - const x0 = xValues[afeIndexBelowReturnPeriod - 1]; - const x1 = xValues[afeIndexBelowReturnPeriod]; - const y0 = yValues[afeIndexBelowReturnPeriod - 1]; - const y1 = yValues[afeIndexBelowReturnPeriod]; - const x = returnPeriodInterpolation(x0, x1, y0, y1, returnPeriod); - return isNaN(x) ? x : round(x, 6); -}; - -const returnPeriodInterpolation = ( - x0: number, - x1: number, - y0: number, - y1: number, - returnPeriod: number -): number => { - return x0 + (Math.log10(returnPeriod / y0) * (x1 - x0)) / Math.log10(y1 / y0); -}; - -const erfBase = (x: number) => { - const P = 0.3275911; - const A1 = 0.254829592; - const A2 = -0.284496736; - const A3 = 1.421413741; - const A4 = -1.453152027; - const A5 = 1.061405429; - - const t = 1 / (1 + P * x); - const tsq = t * t; - - return ( - 1 - - (A1 * t + A2 * tsq + A3 * tsq * t + A4 * tsq * tsq + A5 * tsq * tsq * t) * - Math.exp(-x * x) - ); -}; - -/** - * Export functions - */ -export const Maths = { - normalCcdf, - erf, - round, - responseSpectrum, -}; diff --git a/src/nshmp-lib/data/index.ts b/src/nshmp-lib/data/index.ts deleted file mode 100644 index cbb3b00..0000000 --- a/src/nshmp-lib/data/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './uncertainty-model.model'; -export * from './xy-sequence.model'; diff --git a/src/nshmp-lib/data/uncertainty-model.model.ts b/src/nshmp-lib/data/uncertainty-model.model.ts deleted file mode 100644 index 4390c8c..0000000 --- a/src/nshmp-lib/data/uncertainty-model.model.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Container for mean, standard deviation, and truncation level. - */ -export interface UncertaintyModel { - /** Mean */ - μ: number; - - /** Standard deviation */ - σ: number; - - /** Truncation level */ - n: number; -} diff --git a/src/nshmp-lib/data/xy-sequence.model.ts b/src/nshmp-lib/data/xy-sequence.model.ts deleted file mode 100644 index f3030ad..0000000 --- a/src/nshmp-lib/data/xy-sequence.model.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface XySequence { - xs: number[]; - ys: number[]; -} diff --git a/src/nshmp-lib/geo/basin.model.ts b/src/nshmp-lib/geo/basin.model.ts deleted file mode 100644 index 279106c..0000000 --- a/src/nshmp-lib/geo/basin.model.ts +++ /dev/null @@ -1,25 +0,0 @@ -import {Region} from './region.model'; - -export enum Basin { - BAY_AREA = 'Bay Area', - LOS_ANGELES = 'Los Angeles', - PUGET_LOWLAND = 'Puget Lowland', - WASATCH_FRONT = 'Wasatch Front', -} - -export interface BasinRegion { - title: string; - basin: Basin; - model: string; - region: Region; -} - -export interface BasinValues { - z1p0: BasinValue; - z2p5: BasinValue; -} - -export interface BasinValue { - model: string; - value: number; -} diff --git a/src/nshmp-lib/geo/index.ts b/src/nshmp-lib/geo/index.ts deleted file mode 100644 index fe5e905..0000000 --- a/src/nshmp-lib/geo/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './basin.model'; -export * from './region.model'; -export * from './site.model'; diff --git a/src/nshmp-lib/geo/region.model.ts b/src/nshmp-lib/geo/region.model.ts deleted file mode 100644 index 67a67a9..0000000 --- a/src/nshmp-lib/geo/region.model.ts +++ /dev/null @@ -1,7 +0,0 @@ -import {Location} from './site.model'; - -export interface Region { - name: string; - border: Location[]; - interiors: Location[][]; -} diff --git a/src/nshmp-lib/geo/site.model.ts b/src/nshmp-lib/geo/site.model.ts deleted file mode 100644 index 7dc22cb..0000000 --- a/src/nshmp-lib/geo/site.model.ts +++ /dev/null @@ -1,17 +0,0 @@ -export interface Site { - location: Location; - vs30: number; - vsInferred: boolean; - z1p0: number; - z2p5: number; -} - -export interface Location { - latitude: number; - longitude: number; -} - -export interface Bounds { - min: Location; - max: Location; -} diff --git a/src/nshmp-lib/gmm/gmm-input.model.ts b/src/nshmp-lib/gmm/gmm-input.model.ts deleted file mode 100644 index 8a8f2a6..0000000 --- a/src/nshmp-lib/gmm/gmm-input.model.ts +++ /dev/null @@ -1,15 +0,0 @@ -export interface GmmInput { - Mw: number; - rJB: number; - rRup: number; - rX: number; - dip: number; - width: number; - zTor: number; - zHyp: number; - rake: number; - vs30: number; - vsInf: boolean; - z1p0: number; - z2p5: number; -} diff --git a/src/nshmp-lib/gmm/gmm.model.ts b/src/nshmp-lib/gmm/gmm.model.ts deleted file mode 100644 index 91bb1fd..0000000 --- a/src/nshmp-lib/gmm/gmm.model.ts +++ /dev/null @@ -1,190 +0,0 @@ -export enum Gmm { - /* Active continent NGA-West1 WUS 2008 */ - - BA_08, - CB_08, - CY_08, - - /* Active continent NGA-West2 WUS 2014 */ - - ASK_14, - BSSA_14, - CB_14, - CY_14, - IDRISS_14, - - /* - * Active continent NGA-West2 WUS 2018. These have basin amplification-only - * effects implemented. - */ - - ASK_14_BASIN, - BSSA_14_BASIN, - CB_14_BASIN, - CY_14_BASIN, - - /* Active Continent AK 2007, HI 1998 */ - - AS_97, - BJF_97, - CAMPBELL_97, - CB_03, - MT_97, - SADIGH_97, - - /* Subduction Interface and Slab WUS 2008 2014 2018, AK 2007 */ - - AB_03_GLOBAL_INTERFACE, - AB_03_GLOBAL_SLAB, - AB_03_GLOBAL_SLAB_LOW_SAT, - AB_03_CASCADIA_INTERFACE, - AB_03_CASCADIA_SLAB, - AB_03_CASCADIA_SLAB_LOW_SAT, - AM_09_INTERFACE, - AM_09_INTERFACE_BASIN, - NGA_SUB_USGS_INTERFACE, - NGA_SUB_USGS_SLAB, - NGA_SUB_USGS_INTERFACE_NO_EPI, - NGA_SUB_USGS_SLAB_NO_EPI, - BCHYDRO_12_INTERFACE, - BCHYDRO_12_SLAB, - BCHYDRO_12_INTERFACE_BASIN, - BCHYDRO_12_SLAB_BASIN, - BCHYDRO_12_INTERFACE_BACKARC, - BCHYDRO_12_SLAB_BACKARC, - BCHYDRO_12_INTERFACE_BASIN_BACKARC, - BCHYDRO_12_SLAB_BASIN_BACKARC, - YOUNGS_97_INTERFACE, - YOUNGS_97_SLAB, - ZHAO_06_INTERFACE, - ZHAO_06_SLAB, - ZHAO_06_INTERFACE_BASIN, - ZHAO_06_SLAB_BASIN, - - /* Stable continent CEUS 2008 2014 */ - - AB_06_PRIME, - AB_06_140BAR, - AB_06_200BAR, - ATKINSON_08_PRIME, - CAMPBELL_03, - FRANKEL_96, - PEZESHK_11, - SILVA_02, - SOMERVILLE_01, - TP_05, - TORO_97_MW, - - /* Johnston mag converting flavors of CEUS 2008 */ - - AB_06_140BAR_J, - AB_06_200BAR_J, - CAMPBELL_03_J, - FRANKEL_96_J, - SILVA_02_J, - TP_05_J, - - /* Atkinson Boore mag converting flavors of CEUS 2008 */ - - AB_06_140BAR_AB, - AB_06_200BAR_AB, - CAMPBELL_03_AB, - FRANKEL_96_AB, - SILVA_02_AB, - TP_05_AB, - TORO_97_MB, - - /* Other */ - - ATKINSON_10, - ATKINSON_15, - GK_15, - WONG_15, - ZHAO_16_SHALLOW_CRUST, - ZHAO_16_UPPER_MANTLE, - ZHAO_16_INTERFACE, - ZHAO_16_SLAB, - MCVERRY_00_CRUSTAL, - MCVERRY_00_INTERFACE, - MCVERRY_00_SLAB, - MCVERRY_00_VOLCANIC, - - /* NGA-East for USGS */ - - NGA_EAST_USGS, - NGA_EAST_USGS_1, - NGA_EAST_USGS_2, - NGA_EAST_USGS_3, - NGA_EAST_USGS_4, - NGA_EAST_USGS_5, - NGA_EAST_USGS_6, - NGA_EAST_USGS_7, - NGA_EAST_USGS_8, - NGA_EAST_USGS_9, - NGA_EAST_USGS_10, - NGA_EAST_USGS_11, - NGA_EAST_USGS_12, - NGA_EAST_USGS_13, - NGA_EAST_USGS_14, - NGA_EAST_USGS_15, - NGA_EAST_USGS_16, - NGA_EAST_USGS_17, - - /* NGA-East USGS Seed Tree */ - - NGA_EAST_USGS_SEEDS, - - /* NGA-East Seed Models */ - - NGA_EAST_SEED_1CCSP, - NGA_EAST_SEED_1CVSP, - NGA_EAST_SEED_2CCSP, - NGA_EAST_SEED_2CVSP, - NGA_EAST_SEED_B_A04, - NGA_EAST_SEED_B_AB14, - NGA_EAST_SEED_B_AB95, - NGA_EAST_SEED_B_BCA10D, - NGA_EAST_SEED_B_BS11, - NGA_EAST_SEED_B_SGD02, - NGA_EAST_SEED_FRANKEL, - NGA_EAST_SEED_GRAIZER, - NGA_EAST_SEED_GRAIZER16, - NGA_EAST_SEED_GRAIZER17, - NGA_EAST_SEED_HA15, - NGA_EAST_SEED_PEER_EX, - NGA_EAST_SEED_PEER_GP, - NGA_EAST_SEED_PZCT15_M1SS, - NGA_EAST_SEED_PZCT15_M2ES, - NGA_EAST_SEED_SP15, - NGA_EAST_SEED_SP16, - NGA_EAST_SEED_YA15, - - /** - * 2014 CEUS weight-averaged GMM. This is the fault-variant that includes - * Somerville ,2011). - */ - COMBINED_CEUS_2014, - - /** - * 2018 CEUS weight-averaged GMM. - */ - COMBINED_CEUS_2018, - - /** - * 2018 WUS weight-averaged GMM. These are the basin-amplifying flavors of - * NGA-West2 and does not include Idriss. - */ - COMBINED_WUS_2014_41, - - /** - * 2018 WUS weight-averaged GMM. These are the basin-amplifying flavors of - * NGA-West2 and does not include Idriss. - */ - COMBINED_WUS_2014_42, - - /** - * 2018 WUS weight-averaged GMM. These are the basin-amplifying flavors of - * NGA-West2 and does not include Idriss. - */ - COMBINED_WUS_2018, -} diff --git a/src/nshmp-lib/gmm/imt.model.ts b/src/nshmp-lib/gmm/imt.model.ts deleted file mode 100644 index c23e2e1..0000000 --- a/src/nshmp-lib/gmm/imt.model.ts +++ /dev/null @@ -1,119 +0,0 @@ -export enum Imt { - PGA = 'PGA', - PGV = 'PGV', - PGD = 'PGD', - ASI = 'ASI', - SI = 'SI', - DSI = 'DSI', - CAV = 'CAV', - DS575 = 'DS575', - DS595 = 'DS595', - AI = 'AI', - SA0P01 = 'SA0P01', - SA0P02 = 'SA0P02', - SA0P025 = 'SA0P025', - SA0P03 = 'SA0P03', - SA0P04 = 'SA0P04', - SA0P05 = 'SA0P05', - SA0P06 = 'SA0P06', - SA0P07 = 'SA0P07', - SA0P075 = 'SA0P075', - SA0P08 = 'SA0P08', - SA0P09 = 'SA0P09', - SA0P1 = 'SA0P1', - SA0P12 = 'SA0P12', - SA0P14 = 'SA0P14', - SA0P15 = 'SA0P15', - SA0P16 = 'SA0P16', - SA0P17 = 'SA0P17', - SA0P18 = 'SA0P18', - SA0P2 = 'SA0P2', - SA0P25 = 'SA0P25', - SA0P3 = 'SA0P3', - SA0P35 = 'SA0P35', - SA0P4 = 'SA0P4', - SA0P45 = 'SA0P45', - SA0P5 = 'SA0P5', - SA0P6 = 'SA0P6', - SA0P7 = 'SA0P7', - SA0P75 = 'SA0P75', - SA0P8 = 'SA0P8', - SA0P9 = 'SA0P9', - SA1P0 = 'SA1P0', - SA1P25 = 'SA1P25', - SA1P5 = 'SA1P5', - SA2P0 = 'SA2P0', - SA2P5 = 'SA2P5', - SA3P0 = 'SA3P0', - SA3P5 = 'SA3P5', - SA4P0 = 'SA4P0', - SA4P5 = 'SA4P5', - SA5P0 = 'SA5P0', - SA6P0 = 'SA6P0', - SA7P5 = 'SA7P5', - SA10P0 = 'SA10P0', -} - -export const imtToPeriod = (imt: Imt): number => { - if (imt === Imt.PGA || imt === Imt.PGV) { - return 0.001; - } else if (imt.startsWith('SA')) { - return Number(imt.substring(2).replace('P', '.')); - } else { - throw new Error(`Cannot convert ${imt}`); - } -}; - -export const imtToString = (imt: Imt): string => { - switch (imt) { - case Imt.PGA: - return 'Peak Ground Acceleration'; - case Imt.PGV: - return 'Peak Ground Velocity'; - case Imt.PGD: - return 'Peak Ground Displacement'; - case Imt.AI: - return 'Arias Intensity'; - case Imt.ASI: - return 'Acceleration Spectrum Intensity'; - case Imt.DSI: - return 'Displacement Spectrum Intensity'; - case Imt.SI: - return 'Spectrum intensity'; - case Imt.CAV: - return 'Cumulative Absolute Velocity'; - case Imt.DS575: - return 'Significant Duration 5-75%'; - case Imt.DS595: - return 'Significant Duration 5-95%'; - default: - return `${imtToPeriod(imt)} Second Spectral Acceleration`; - } -}; - -export const imtToUnits = (imt: Imt): string => { - switch (imt) { - case Imt.PGA: - return 'g'; - case Imt.PGV: - return 'cm/s'; - case Imt.PGD: - return 'cm'; - case Imt.AI: - return 'm/s'; - case Imt.ASI: - return 'g⋅s'; - case Imt.DSI: - return 'cm⋅s'; - case Imt.SI: - return 'cm⋅s/s'; - case Imt.CAV: - return 'g⋅s'; - case Imt.DS575: - return 's'; - case Imt.DS595: - return 's'; - default: - return 'g'; - } -}; diff --git a/src/nshmp-lib/gmm/index.ts b/src/nshmp-lib/gmm/index.ts deleted file mode 100644 index a9cb89d..0000000 --- a/src/nshmp-lib/gmm/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from './gmm.model'; -export * from './gmm-input.model'; -export * from './imt.model'; -export * from './nehrp-site-class.model'; -export * from './rate-type.model'; diff --git a/src/nshmp-lib/gmm/nehrp-site-class.model.ts b/src/nshmp-lib/gmm/nehrp-site-class.model.ts deleted file mode 100644 index 90c140c..0000000 --- a/src/nshmp-lib/gmm/nehrp-site-class.model.ts +++ /dev/null @@ -1,35 +0,0 @@ -/** - * NEHRP site class. - * - * Ported from: https://code.usgs.gov/ghsc/nshmp/nshmp-lib - * /-/blob/master/src/main/java/gov/usgs/earthquake/nshmp/gmm/NehrpSiteClass.java - */ -export enum NehrpSiteClass { - A = 'A', - AB = 'AB', - B = 'B', - BC = 'BC', - C = 'C', - CD = 'CD', - D = 'D', - DE = 'DE', - E = 'E', -} - -/** - * The NEHRP site class condition. - * - * Ported from: https://code.usgs.gov/ghsc/nshmp/nshmp-lib - * /-/blob/master/src/main/java/gov/usgs/earthquake/nshmp/gmm/NehrpSiteClass.java - */ -export enum NehrpCondition { - A = 'very hard rock', - AB = 'hard rock', - B = 'medium hard rock', - BC = 'soft rock', - C = 'very dense soil or hard clay', - CD = 'dense sand or very stiff clay', - D = 'medium dense sand or stiff clay', - DE = 'loose sand or medium stiff clay', - E = 'very loose sand or soft clay', -} diff --git a/src/nshmp-lib/gmm/rate-type.model.ts b/src/nshmp-lib/gmm/rate-type.model.ts deleted file mode 100644 index e31b35e..0000000 --- a/src/nshmp-lib/gmm/rate-type.model.ts +++ /dev/null @@ -1,5 +0,0 @@ -export enum RateType { - RECURRENCE, - SLIP_RATE, - VERTICAL_SLIP_RATE, -} diff --git a/src/nshmp-lib/index.ts b/src/nshmp-lib/index.ts deleted file mode 100644 index ea79905..0000000 --- a/src/nshmp-lib/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * as calc from './calc'; -export * as data from './data'; -export * as geo from './geo'; -export * as model from './model'; -export * as nshm from './nshm'; diff --git a/src/nshmp-lib/model/index.ts b/src/nshmp-lib/model/index.ts deleted file mode 100644 index 624e47b..0000000 --- a/src/nshmp-lib/model/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from './mfd'; -export * from './models'; -export * from './source-type'; -export * from './tectonic-setting'; diff --git a/src/nshmp-lib/model/mfd.ts b/src/nshmp-lib/model/mfd.ts deleted file mode 100644 index 31e91f7..0000000 --- a/src/nshmp-lib/model/mfd.ts +++ /dev/null @@ -1,36 +0,0 @@ -import {XySequence} from '../data'; - -export enum MfdType { - GR = 'GR', - GR_MMAX_GR = 'GR_MMAX_GR', - GR_MMAX_SINGLE = 'GR_MMAX_SINGLE', - GR_TAPER = 'GR_TAPER', - INCR = 'INCR', - SINGLE = 'SINGLE', -} - -export interface GutenbergRichter extends MfdProperties { - a: number; - b: number; - Δm: number; - mMin: number; - mMax: number; -} - -export interface Mfd { - data: XySequence; - props: MfdProperties; -} - -export interface MfdProperties { - type: MfdType; -} - -export interface Single extends MfdProperties { - m: number; - rate: number; -} - -export interface TaperedGr extends GutenbergRichter { - mc: number; -} diff --git a/src/nshmp-lib/model/models.ts b/src/nshmp-lib/model/models.ts deleted file mode 100644 index 238af8e..0000000 --- a/src/nshmp-lib/model/models.ts +++ /dev/null @@ -1,42 +0,0 @@ -import {XySequence} from '../data'; -import {Mfd} from './mfd'; -import {SourceType} from './source-type'; -import {TectonicSettings} from './tectonic-setting'; - -export interface MfdBranch { - id: string; - mfd: Mfd; - weight: number; -} - -export interface SettingGroup { - data: SourceGroup[]; - setting: TectonicSettings; -} - -export interface SourceBranch { - branch: string; - mfds: MfdBranch[]; - name: string; - path: string; - weight: number; -} - -export interface SourceGroup { - data: TreeInfo[]; - type: SourceType; -} - -export interface Tree { - branches: SourceBranch[]; - id: number; - name: string; - setting: TectonicSettings; - totalMfd: XySequence; - type: SourceType; -} - -export interface TreeInfo { - id: number; - name: string; -} diff --git a/src/nshmp-lib/model/source-type.ts b/src/nshmp-lib/model/source-type.ts deleted file mode 100644 index 059b13b..0000000 --- a/src/nshmp-lib/model/source-type.ts +++ /dev/null @@ -1,59 +0,0 @@ -import {capitalCase} from 'change-case'; - -/** - * Identifier for different earthquake {@link Source} types. These are declared - * in a preferred order of iteration, with potentially longer running source - * types coming first. - * - * Ported from: https://code.usgs.gov/ghsc/nshmp/nshmp-lib - * /-/blob/master/src/main/java/gov/usgs/earthquake/nshmp/model/SourceType.java - */ -export enum SourceType { - /** Finite fault. */ - FAULT = 'FAULT', - - /** Fault cluster. */ - FAULT_CLUSTER = 'FAULT_CLUSTER', - - /** Fault system. */ - FAULT_SYSTEM = 'FAULT_SYSTEM', - - /** Gridded (background) seismicity. */ - GRID = 'GRID', - - /** Subduction interface. */ - INTERFACE = 'INTERFACE', - - /** Subduction intraslab. */ - INTRASLAB = 'INSTRASLAB', - - /** The combined source types, used in web services */ - TOTAL = 'TOTAL', - - /** Zone (a.k.a. Area). */ - ZONE = 'ZONE', -} - -/** - * Returns the capital case of the source type string. - * - * @param sourceType The source type - */ -export function sourceTypeToString(sourceType: SourceType): string { - return capitalCase(sourceType); -} - -/** - * Converts source type string into a source type. - * - * @param s The pascal case of the source type - */ -export function sourceTypeFromString(s: string): SourceType { - const sourceType = Object.values(SourceType).find(type => type === s); - - if (sourceType === undefined) { - throw new Error(`Source type [${s}] does not exists`); - } - - return sourceType; -} diff --git a/src/nshmp-lib/model/tectonic-setting.ts b/src/nshmp-lib/model/tectonic-setting.ts deleted file mode 100644 index 7741e2b..0000000 --- a/src/nshmp-lib/model/tectonic-setting.ts +++ /dev/null @@ -1,19 +0,0 @@ -import {capitalCase} from 'change-case'; - -export enum TectonicSettings { - /** Active, shallow crust. */ - ACTIVE_CRUST = 'ACTIVE_CRUST', - - /** Stable, shallow crust. */ - STABLE_CRUST = 'STABLE_CRUST', - - /** Subduction */ - SUBDUCTION = 'SUBDUCTION', - - /** Volcanic. */ - VOLCANIC = 'VOLCANIC', -} - -export function tectonicSettingsToString(setting: TectonicSettings): string { - return capitalCase(setting); -} diff --git a/src/nshmp-lib/nshm/index.ts b/src/nshmp-lib/nshm/index.ts deleted file mode 100644 index 1fe7851..0000000 --- a/src/nshmp-lib/nshm/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './nshm.model'; -export * from './nshm-region.model'; diff --git a/src/nshmp-lib/nshm/nshm-region.model.ts b/src/nshmp-lib/nshm/nshm-region.model.ts deleted file mode 100644 index fa97606..0000000 --- a/src/nshmp-lib/nshm/nshm-region.model.ts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * NSHM regions. - */ -export enum NshmRegion { - ALASKA = 'ALASKA', - CONUS = 'CONUS', - HAWAII = 'HAWAII', -} - -/** - * Returns the short form of the region. - * - * @param region The NSHM region - */ -export function nshmRegionShort(region: NshmRegion): string { - switch (region) { - case NshmRegion.ALASKA: - return 'AK'; - case NshmRegion.CONUS: - return NshmRegion.CONUS; - case NshmRegion.HAWAII: - return 'HI'; - default: - throw new Error(`Region [${region}] not supported`); - } -} diff --git a/src/nshmp-lib/nshm/nshm.model.ts b/src/nshmp-lib/nshm/nshm.model.ts deleted file mode 100644 index b041232..0000000 --- a/src/nshmp-lib/nshm/nshm.model.ts +++ /dev/null @@ -1,45 +0,0 @@ -import {NshmRegion} from './nshm-region.model'; - -/** - * ID for NSHMs - */ -export enum NshmId { - ALASKA_2007 = 'ALASKA_2007', - ALASKA_2023 = 'ALASKA_2023', - AMSAM_2012 = 'AMSAM_2012', - CONUS_2018 = 'CONUS_2018', - CONUS_2023 = 'CONUS_2023', - GNMI_2012 = 'GNMI_2012', - HAWAII_2021 = 'HAWAII_2021', - PRVI_2003 = 'PRVI_2003', -} - -/** - * Returns the region associated with the NSHM. - * - * @param nshmId The NSHM id - */ -export function nshmRegion(nshmId: NshmId): NshmRegion { - const region = nshmId.split('_').shift(); - - if (region === undefined) { - throw new Error(`NSHM ${nshmId} not supported`); - } - - return region as NshmRegion; -} - -/** - * Returns the year associated with NSHM. - * - * @param nshmId The NSHM id - */ -export function nshmYear(nshmId: NshmId): number { - const year = nshmId.split('_').pop(); - - if (year === undefined) { - throw new Error(`NSHM ${nshmId} not supported`); - } - - return Number.parseInt(year); -} diff --git a/src/nshmp-ws-static/index.ts b/src/nshmp-ws-static/index.ts deleted file mode 100644 index e9644da..0000000 --- a/src/nshmp-ws-static/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './models'; diff --git a/src/nshmp-ws-static/models/index.ts b/src/nshmp-ws-static/models/index.ts deleted file mode 100644 index eefa09d..0000000 --- a/src/nshmp-ws-static/models/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './static-hazard-response.model'; -export * from './static-hazard-usage.model'; diff --git a/src/nshmp-ws-static/models/static-hazard-response.model.ts b/src/nshmp-ws-static/models/static-hazard-response.model.ts deleted file mode 100644 index 23b27b7..0000000 --- a/src/nshmp-ws-static/models/static-hazard-response.model.ts +++ /dev/null @@ -1,49 +0,0 @@ -import {XySequence} from '../../nshmp-lib'; -import * as nshmpWsUtils from '../../nshmp-ws-utils'; - -export type StaticHazardResponse = nshmpWsUtils.Response< - StaticRequestData, - StaticResponseData<HazardResponseMetadata>[][] ->; - -export type StaticHazardResponseSiteClass = nshmpWsUtils.Response< - StaticRequestDataSiteClass, - StaticResponseData<HazardResponseMetadata>[] ->; - -export type StaticGroundMotionResponse = nshmpWsUtils.Response< - StaticRequestData, - StaticResponseData<GroundMotionResponseMetadata>[] ->; - -export type StaticGroundMotionResponseSiteClass = nshmpWsUtils.Response< - StaticRequestData, - StaticResponseData<GroundMotionResponseMetadata> ->; -export interface StaticRequestData { - latitude: number; - longitude: number; -} - -export interface StaticRequestDataSiteClass extends StaticRequestData { - siteClass: string; -} - -export interface StaticResponseData<T extends StaticResponseMetadata> { - metadata: T; - data: XySequence; -} - -export interface StaticResponseMetadata { - siteClass: string; - xLabel: string; - yLabel: string; -} - -export interface HazardResponseMetadata extends StaticResponseMetadata { - imt: nshmpWsUtils.metadata.Parameter; -} - -export interface GroundMotionResponseMetadata extends StaticResponseMetadata { - imtValues: Record<string, number>; -} diff --git a/src/nshmp-ws-static/models/static-hazard-usage.model.ts b/src/nshmp-ws-static/models/static-hazard-usage.model.ts deleted file mode 100644 index 89c71af..0000000 --- a/src/nshmp-ws-static/models/static-hazard-usage.model.ts +++ /dev/null @@ -1,57 +0,0 @@ -import * as nshmpWsUtils from '../../nshmp-ws-utils'; -import {DoubleParameter, Parameter} from '../../nshmp-ws-utils/models/metadata'; - -export type StaticHazardUsage = nshmpWsUtils.Response< - string, - StaticHazardUsageResponse ->; - -export interface StaticHazardUsageResponse { - description: string; - syntax: string[]; - models: HazardSourceModel; - vs30: DoubleParameter; -} - -export interface HazardSourceModel { - imts: Parameter[]; - latitude: DoubleParameter; - longitude: DoubleParameter; - map: GeoJSON.FeatureCollection<GeoJSON.Polygon>; - name: string; - netcdfMetadata: NetcdfMetadata; - siteClasses: Record<string, number>; - sites: GeoJSON.FeatureCollection<GeoJSON.Point>; -} - -export interface NetcdfMetadata { - netcdfFile: string; - scienceBaseMetadata: object; -} - -export interface ScienceBaseMetadata { - catalogId: string; - dataType: string; - description: string; - gridStep: number; - history: string; - label: string; - region: string; - scieneBaseInfo: ScienceBaseInfo[]; - year: number; -} - -export interface ScienceBaseInfo { - id: string; - file: string; - files: CatalogFileInfo[]; - scienceBaseVersion: string; - title: string; - url: string; -} - -export interface CatalogFileInfo { - file: string; - siteClass: string; - vs30: string; -} diff --git a/src/nshmp-ws-utils/index.ts b/src/nshmp-ws-utils/index.ts deleted file mode 100644 index e9644da..0000000 --- a/src/nshmp-ws-utils/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './models'; diff --git a/src/nshmp-ws-utils/models/index.ts b/src/nshmp-ws-utils/models/index.ts deleted file mode 100644 index f36b209..0000000 --- a/src/nshmp-ws-utils/models/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * as metadata from './metadata'; -export * from './response.model'; -export * from './service-error.model'; -export * from './status.model'; diff --git a/src/nshmp-ws-utils/models/metadata/double-parameter.model.ts b/src/nshmp-ws-utils/models/metadata/double-parameter.model.ts deleted file mode 100644 index 32c53f6..0000000 --- a/src/nshmp-ws-utils/models/metadata/double-parameter.model.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Double parameter metadata. - * - * Ported from: https://code.usgs.gov/ghsc/nshmp/nshmp-haz-v2 - * /-/blob/master/src/main/java/gov/usgs/earthquake/nshmp/www/meta/DoubleParameter.java - */ -export interface DoubleParameter { - name: string; - units: string; - min: number; - max: number; -} diff --git a/src/nshmp-ws-utils/models/metadata/enum-parameter.ts b/src/nshmp-ws-utils/models/metadata/enum-parameter.ts deleted file mode 100644 index 53f9a47..0000000 --- a/src/nshmp-ws-utils/models/metadata/enum-parameter.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Enum parameter from nshmp usage. - */ -export interface EnumParameter<T> { - label: string; - type: string; - values: T[]; -} - -/** - * Enum parameter values from nshmp usage. - */ -export interface EnumParameterValues { - id: number; - value: string; - display: string; - displayorder: number; -} diff --git a/src/nshmp-ws-utils/models/metadata/index.ts b/src/nshmp-ws-utils/models/metadata/index.ts deleted file mode 100644 index 99f5dfe..0000000 --- a/src/nshmp-ws-utils/models/metadata/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from './double-parameter.model'; -export * from './enum-parameter'; -export * from './parameter.model'; -export * from './server.model'; -export * from './string-parameter.model'; diff --git a/src/nshmp-ws-utils/models/metadata/parameter.model.ts b/src/nshmp-ws-utils/models/metadata/parameter.model.ts deleted file mode 100644 index 1162afd..0000000 --- a/src/nshmp-ws-utils/models/metadata/parameter.model.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Simple parameter. - * - * Ported from: https://code.usgs.gov/ghsc/nshmp/nshmp-haz-v2 - * /-/blob/master/src/main/java/gov/usgs/earthquake/nshmp/www/meta/Parameter.java - */ -export interface Parameter { - display: string; - value: string; -} diff --git a/src/nshmp-ws-utils/models/metadata/server.model.ts b/src/nshmp-ws-utils/models/metadata/server.model.ts deleted file mode 100644 index ee229f1..0000000 --- a/src/nshmp-ws-utils/models/metadata/server.model.ts +++ /dev/null @@ -1,11 +0,0 @@ -/** - * Server information from responses. - * - * Ported from: https://code.usgs.gov/ghsc/nshmp/nshmp-haz-v2 - * /-/blob/master/src/main/java/gov/usgs/earthquake/nshmp/www/meta/Metadata.java - */ -export interface Server { - threads: number; - timer: string; - version: string; -} diff --git a/src/nshmp-ws-utils/models/metadata/string-parameter.model.ts b/src/nshmp-ws-utils/models/metadata/string-parameter.model.ts deleted file mode 100644 index 5f4a40b..0000000 --- a/src/nshmp-ws-utils/models/metadata/string-parameter.model.ts +++ /dev/null @@ -1,9 +0,0 @@ -export interface StringParameter<T> { - label: string; - values: T[]; -} - -export interface StringParameterValues { - id: string; - label: string; -} diff --git a/src/nshmp-ws-utils/models/response.model.ts b/src/nshmp-ws-utils/models/response.model.ts deleted file mode 100644 index d588898..0000000 --- a/src/nshmp-ws-utils/models/response.model.ts +++ /dev/null @@ -1,30 +0,0 @@ -import {Status} from './status.model'; - -/** - * Generic web service response used for usage, error, and results. - */ -export interface Response<T, V> { - name: string; - date: string; - status: Status; - url: string; - metadata: ResponseMetadata; - request: T; - response: V; -} - -export interface ResponseMetadata { - repositories: VersionInfo[]; -} - -export interface VersionInfo { - projectName: string; - url: string; - version: string; - branchName: string; - commitDistance: number; - gitHash: string; - gitHashFull: string; - isCleanTag: boolean; - lastTag: string; -} diff --git a/src/nshmp-ws-utils/models/service-error.model.ts b/src/nshmp-ws-utils/models/service-error.model.ts deleted file mode 100644 index fb8c032..0000000 --- a/src/nshmp-ws-utils/models/service-error.model.ts +++ /dev/null @@ -1,3 +0,0 @@ -import {Response} from './response.model'; - -export type ServivceError = Response<string, string>; diff --git a/src/nshmp-ws-utils/models/status.model.ts b/src/nshmp-ws-utils/models/status.model.ts deleted file mode 100644 index 4d52b03..0000000 --- a/src/nshmp-ws-utils/models/status.model.ts +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Service request status identifier. - */ -export enum Status { - ERROR = 'error', - SUCCESS = 'success', - USAGE = 'usage', -} diff --git a/src/nshmp-ws/index.ts b/src/nshmp-ws/index.ts deleted file mode 100644 index e9644da..0000000 --- a/src/nshmp-ws/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './models'; diff --git a/src/nshmp-ws/models/fault-sections-service/fault-sections-response.model.ts b/src/nshmp-ws/models/fault-sections-service/fault-sections-response.model.ts deleted file mode 100644 index 5807b65..0000000 --- a/src/nshmp-ws/models/fault-sections-service/fault-sections-response.model.ts +++ /dev/null @@ -1,26 +0,0 @@ -import {FeatureCollection} from 'geojson'; - -import {NshmId} from '../../../nshmp-lib'; -import {RateType} from '../../../nshmp-lib/models/gmm'; -import * as nshmpWsUtils from '../../../nshmp-ws-utils'; - -export type FaultSectionsResponse = nshmpWsUtils.Response< - FaultSectionRequestData, - FeatureCollection ->; - -export interface FaultSectionRequestData { - nshmFaultSection: NshmId; - raw: boolean; -} - -export interface FaultSectionProperties { - name: string; - state: string | string[]; - dip?: number; - lowerDepth?: number; - rake: number; - rate?: number; - rateType?: RateType; - upperDepth?: number; -} diff --git a/src/nshmp-ws/models/fault-sections-service/fault-sections-usage.model.ts b/src/nshmp-ws/models/fault-sections-service/fault-sections-usage.model.ts deleted file mode 100644 index 62ae374..0000000 --- a/src/nshmp-ws/models/fault-sections-service/fault-sections-usage.model.ts +++ /dev/null @@ -1,16 +0,0 @@ -import {NshmId} from '../../../nshmp-lib/models/nshm.model'; -import {Response} from '../../../nshmp-ws-utils'; -import {StringParameter} from '../../../nshmp-ws-utils/models/metadata'; - -export type FaultSectionUsage = Response<string, FaultSectionMetadataResponse>; - -export interface FaultSectionMetadataResponse { - description: string; - syntax: string[]; - parameters: FaultSectionParameters; -} - -export interface FaultSectionParameters { - nshm: StringParameter<NshmId>; - raw: StringParameter<boolean>; -} diff --git a/src/nshmp-ws/models/fault-sections-service/index.ts b/src/nshmp-ws/models/fault-sections-service/index.ts deleted file mode 100644 index 380a265..0000000 --- a/src/nshmp-ws/models/fault-sections-service/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './fault-sections-response.model'; -export * from './fault-sections-usage.model'; diff --git a/src/nshmp-ws/models/gmm-services/gmm-response.model.ts b/src/nshmp-ws/models/gmm-services/gmm-response.model.ts deleted file mode 100644 index 4e9b978..0000000 --- a/src/nshmp-ws/models/gmm-services/gmm-response.model.ts +++ /dev/null @@ -1,47 +0,0 @@ -import {Constraint, Series, XyDataGroup} from '../../../nshmp-haz'; -import {Gmm, GmmInput, Imt} from '../../../nshmp-lib/models/gmm'; -import * as nshmpWsUtils from '../../../nshmp-ws-utils'; - -export type GmmSpectraResponse = nshmpWsUtils.Response< - GmmRequestData, - GmmResponseData ->; - -export type GmmDistanceResponse = nshmpWsUtils.Response< - GmmRequestDataDistance, - GmmResponseData ->; - -export type GmmMagnitudeResponse = nshmpWsUtils.Response< - GmmRequestDataMagnitude, - GmmResponseData ->; - -export interface GmmResponseData { - means: XyDataGroup<GmmSeries>; - sigmas: XyDataGroup<GmmSeries>; -} - -export interface GmmRequestData { - gmms: Gmm[]; - input: GmmInput; -} - -export interface GmmRequestDataDistance extends GmmRequestData { - imt: Imt; - rMin: number; - rMax: number; -} - -export interface GmmRequestDataMagnitude extends GmmRequestData { - imt: Imt; - mMin: number; - mMax: number; - distance: number; - step: number; -} - -export interface GmmSeries extends Series { - constraints: Constraint[]; - supportedImts: string[]; -} diff --git a/src/nshmp-ws/models/gmm-services/gmm-usage.model.ts b/src/nshmp-ws/models/gmm-services/gmm-usage.model.ts deleted file mode 100644 index ca50b0e..0000000 --- a/src/nshmp-ws/models/gmm-services/gmm-usage.model.ts +++ /dev/null @@ -1,150 +0,0 @@ -import * as nshmpWsUtils from '../../../nshmp-ws-utils'; - -/** - * Marker interface for gmm usage from nshmp-ws. - */ -export type GmmSpectraUsage = nshmpWsUtils.Response< - string, - GmmSpectraUsageResponse ->; - -/** - * Marker interface for gmm/distance and gmm/hw-fw usage. - */ -export type GmmDistanceUsage = nshmpWsUtils.Response< - string, - GmmDistanceUsageResponse ->; - -/** - * Marker interface for gmm/distance and gmm/hw-fw usage. - */ -export type GmmMagnitudeUsage = nshmpWsUtils.Response< - string, - GmmMagnitudeUsageResponse ->; - -/** - * Gmm usage response in Response object. - */ -export interface GmmUsageResponse { - description: string; - syntax: string; - parameters: GmmUsageParameters; -} - -/** - * Gmm vs distance usage response in Response object. - */ -export interface GmmSpectraUsageResponse extends GmmUsageResponse { - parameters: GmmSpectraUsageParameters; -} - -/** - * Gmm vs distance usage response in Response object. - */ -export interface GmmDistanceUsageResponse extends GmmUsageResponse { - parameters: GmmDistanceUsageParameters; -} - -/** - * Gmm vs magnitude usage response in Response object. - */ -export interface GmmMagnitudeUsageResponse extends GmmUsageResponse { - parameters: GmmMagnitudeUsageParameters; -} - -/** - * gmm parameter. - */ -export interface GmmParameter { - label: string; - info: string; - values: GmmValue[]; -} - -/** - * gmm value. - */ -export interface GmmValue { - id: string; - label: string; - supportedImts: string[]; -} - -/** - * gmm group parameters. - */ -export interface GmmGroupParameter { - label: string; - info: string; - values: GmmGroupValue[]; -} - -/** - * gmm group values. - */ -export interface GmmGroupValue { - id: string; - label: string; - data: string[]; -} -/** - * gmm usage parameter. - */ -export interface GmmUsageParameter { - label: string; - info: string; - units?: string; - min?: number; - max?: number; - value: number | boolean; -} - -/** - * gmm usage parameters. - */ -export interface GmmUsageParameters { - Mw: GmmUsageParameter; - dip: GmmUsageParameter; - width: GmmUsageParameter; - zTor: GmmUsageParameter; - zHyp: GmmUsageParameter; - rake: GmmUsageParameter; - vs30: GmmUsageParameter; - vsInf: GmmUsageParameter; - z1p0: GmmUsageParameter; - z2p5: GmmUsageParameter; - zSed: GmmUsageParameter; - gmm: GmmParameter; - group: GmmGroupParameter; -} - -/** - * gmm/spectra usage parameters. - */ -export interface GmmSpectraUsageParameters extends GmmUsageParameters { - rJB: GmmUsageParameter; - rRup: GmmUsageParameter; - rX: GmmUsageParameter; -} - -/** - * gmm/distance usage parameters. - */ -export interface GmmDistanceUsageParameters extends GmmUsageParameters { - imt: nshmpWsUtils.metadata.EnumParameter<nshmpWsUtils.metadata.EnumParameterValues>; - rMin: GmmUsageParameter; - rMax: GmmUsageParameter; -} - -/** - * gmm/magnitude usage parameters. - */ -export interface GmmMagnitudeUsageParameters extends GmmUsageParameters { - imt: nshmpWsUtils.metadata.EnumParameter<nshmpWsUtils.metadata.EnumParameterValues>; - mMin: GmmUsageParameter; - mMax: GmmUsageParameter; - distance: GmmUsageParameter; - step: GmmUsageParameter; -} diff --git a/src/nshmp-ws/models/gmm-services/index.ts b/src/nshmp-ws/models/gmm-services/index.ts deleted file mode 100644 index 33d7b2f..0000000 --- a/src/nshmp-ws/models/gmm-services/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './gmm-response.model'; -export * from './gmm-usage.model'; diff --git a/src/nshmp-ws/models/index.ts b/src/nshmp-ws/models/index.ts deleted file mode 100644 index c406362..0000000 --- a/src/nshmp-ws/models/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * as faultSectionsService from './fault-sections-service'; -export * as gmmServices from './gmm-services'; -export * as utilitiesService from './utilities-service'; diff --git a/src/nshmp-ws/models/utilities-service/index.ts b/src/nshmp-ws/models/utilities-service/index.ts deleted file mode 100644 index 904cf15..0000000 --- a/src/nshmp-ws/models/utilities-service/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './test-sites-response'; -export * from './test-sites-usage.model'; diff --git a/src/nshmp-ws/models/utilities-service/test-sites-response.ts b/src/nshmp-ws/models/utilities-service/test-sites-response.ts deleted file mode 100644 index c4b79db..0000000 --- a/src/nshmp-ws/models/utilities-service/test-sites-response.ts +++ /dev/null @@ -1,7 +0,0 @@ -import {NshmRegion} from '../../../nshmp-lib/models/nshm-region.model'; - -export interface TestSitesProperties { - title: string; - regionId: NshmRegion; - regionTitle: string; -} diff --git a/src/nshmp-ws/models/utilities-service/test-sites-usage.model.ts b/src/nshmp-ws/models/utilities-service/test-sites-usage.model.ts deleted file mode 100644 index 8579bfa..0000000 --- a/src/nshmp-ws/models/utilities-service/test-sites-usage.model.ts +++ /dev/null @@ -1,15 +0,0 @@ -import {NshmRegion} from '../../../nshmp-lib/models/nshm-region.model'; -import {Response} from '../../../nshmp-ws-utils'; -import {StringParameter} from '../../../nshmp-ws-utils/models/metadata'; - -export type TestSitesUsage = Response<string, TestSitesMetadataResponse>; - -export interface TestSitesMetadataResponse { - description: string; - syntax: string[]; - parameters: TestSitesParameters; -} - -export interface TestSitesParameters { - region: StringParameter<NshmRegion>; -} diff --git a/src/plotly/index.ts b/src/plotly/index.ts deleted file mode 100644 index 621f4f1..0000000 --- a/src/plotly/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -/* Export Plotly package */ -export * from './models/plotly-config.model'; -export * from './models/plotly-layout.model'; -export * from './models/plotly-legend.model'; -export * from './models/plotly-plot.model'; -export * from './utils/plotly-utils'; diff --git a/src/plotly/models/plotly-config.model.ts b/src/plotly/models/plotly-config.model.ts deleted file mode 100644 index addbe7f..0000000 --- a/src/plotly/models/plotly-config.model.ts +++ /dev/null @@ -1,18 +0,0 @@ -import {Config} from 'plotly.js'; - -/** - * The plot config. - * - * See https://github.com/plotly/angular-plotly.js#basic-props for - * added properties to Plotly config. - */ -export interface PlotlyConfig extends Partial<Config> { - className?: string | string[]; - debug?: boolean; - revision?: number; - style?: {[key: string]: string}; - updateOnDataChange?: boolean; - updateOnLayoutChange?: boolean; - updateOnlyWithRevision?: boolean; - useResizeHandler?: boolean; -} diff --git a/src/plotly/models/plotly-layout.model.ts b/src/plotly/models/plotly-layout.model.ts deleted file mode 100644 index 4dcf6c0..0000000 --- a/src/plotly/models/plotly-layout.model.ts +++ /dev/null @@ -1,14 +0,0 @@ -import {Layout} from 'plotly.js'; - -import {PlotlyLegend} from './plotly-legend.model'; - -export interface PlotlyLayout extends Partial<Layout> { - /** Aspect ratio of plot */ - aspectRatio?: string; - - /** Aspect ratio for mobile size */ - aspectRatioMobile?: string; - - /** Plotly legend */ - legend?: Partial<PlotlyLegend>; -} diff --git a/src/plotly/models/plotly-legend.model.ts b/src/plotly/models/plotly-legend.model.ts deleted file mode 100644 index 77dcfe8..0000000 --- a/src/plotly/models/plotly-legend.model.ts +++ /dev/null @@ -1,8 +0,0 @@ -import {Legend} from 'plotly.js'; - -export type LegendClick = 'toggle' | 'toggleothers' | false; - -export interface PlotlyLegend extends Partial<Legend> { - itemclick: LegendClick; - itemdoubleclick: LegendClick; -} diff --git a/src/plotly/models/plotly-plot.model.ts b/src/plotly/models/plotly-plot.model.ts deleted file mode 100644 index a721434..0000000 --- a/src/plotly/models/plotly-plot.model.ts +++ /dev/null @@ -1,15 +0,0 @@ -import {PlotData} from 'plotly.js'; - -import {PlotlyConfig} from './plotly-config.model'; -import {PlotlyLayout} from './plotly-layout.model'; - -/** - * A Plotly plot. - */ -export interface PlotlyPlot { - data: Partial<PlotData>[]; - id: string; - - config?: Partial<PlotlyConfig>; - layout?: Partial<PlotlyLayout>; -} diff --git a/src/plotly/utils/plotly-utils.ts b/src/plotly/utils/plotly-utils.ts deleted file mode 100644 index e0d53e2..0000000 --- a/src/plotly/utils/plotly-utils.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Calculate the height based on element width and aspect ratio. - * - * @param el The svg element - * @param aspectRatio The aspect ratio in form `number:number` - */ -export function heightFromAspectRatio( - el: SVGElement, - aspectRatio: string -): number { - const width = Number.parseFloat(el.getAttribute('width') ?? '0'); - - if (!/[\d]+:[\d]+/.test(aspectRatio)) { - throw new Error( - `Aspect ratio [${aspectRatio}] is not in form number:number` - ); - } - - return width / eval(aspectRatio.split(':').join('/')); -} -- GitLab From fbeae3c03c8d3a63360868a39776292a4f24cf47 Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Thu, 3 Nov 2022 09:27:38 -0600 Subject: [PATCH 04/12] ignore types and javsacript --- .gitignore | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 463640d..b8c6c84 100644 --- a/.gitignore +++ b/.gitignore @@ -3,9 +3,9 @@ # compiled output /dist /tmp -/out-tsc -# Only exists if Bazel was run -/bazel-out +*.d.ts +*.js +*js.map # dependencies /node_modules -- GitLab From cd9e30d8697867e3ef7ff8a32b579acc53e0ba67 Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Thu, 3 Nov 2022 09:28:50 -0600 Subject: [PATCH 05/12] ignore output --- .gitignore | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index b8c6c84..00527a7 100644 --- a/.gitignore +++ b/.gitignore @@ -3,9 +3,9 @@ # compiled output /dist /tmp -*.d.ts -*.js -*js.map +libs/**/*.d.ts +libs/**/*.js +libs/**/*js.map # dependencies /node_modules -- GitLab From 13a1792bfdc81967e8079f6672a1f091163394b7 Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Thu, 3 Nov 2022 09:29:00 -0600 Subject: [PATCH 06/12] allow libs driectory --- .npmignore | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.npmignore b/.npmignore index a63b6ca..27259e3 100644 --- a/.npmignore +++ b/.npmignore @@ -5,7 +5,7 @@ !DISCLAIMER.md !LICENSE.md !README.md +!code.json -!dist/** +!libs/** !package.json -!scripts/** -- GitLab From a14ce1190a185959d37f1fe3138a335db948155a Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Thu, 3 Nov 2022 09:29:13 -0600 Subject: [PATCH 07/12] change path to libs --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 277b28e..3793c32 100644 --- a/package.json +++ b/package.json @@ -2,8 +2,8 @@ "name": "@ghsc/nshmp-web-utils", "version": "0.1.0", "description": "nshmp web utilities", - "types": "dist/src/index.d.ts", - "main": "dist/src/index.js", + "types": "libs/index.d.ts", + "main": "libs/index.js", "author": { "name": "Brandon Clayton", "email": "bclayton@usgs.gov" -- GitLab From eb5316322c38dc77f4134dc7008925e2ae051afc Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Thu, 3 Nov 2022 09:29:21 -0600 Subject: [PATCH 08/12] change paths --- tsconfig.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tsconfig.json b/tsconfig.json index b49355e..9993f29 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,11 +2,11 @@ "extends": "./node_modules/gts/tsconfig-google.json", "compilerOptions": { "rootDir": ".", - "outDir": "./dist/", + "outDir": ".", "emitDecoratorMetadata": true, "experimentalDecorators": true, "lib": ["es2018", "DOM"] }, "exclude": ["node_modules", "tmp", "dist"], - "include": ["src"] + "include": ["libs"] } -- GitLab From 49e0caeed440b8ac44f850a72443286fbbf1a06a Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Thu, 3 Nov 2022 09:45:35 -0600 Subject: [PATCH 09/12] add nshm service --- libs/nshmp-haz/www/index.ts | 1 + libs/nshmp-haz/www/nshm-service/index.ts | 1 + libs/nshmp-haz/www/nshm-service/nshm-usage.model.ts | 11 +++++++++++ 3 files changed, 13 insertions(+) create mode 100644 libs/nshmp-haz/www/nshm-service/index.ts create mode 100644 libs/nshmp-haz/www/nshm-service/nshm-usage.model.ts diff --git a/libs/nshmp-haz/www/index.ts b/libs/nshmp-haz/www/index.ts index 79a5596..433f135 100644 --- a/libs/nshmp-haz/www/index.ts +++ b/libs/nshmp-haz/www/index.ts @@ -2,6 +2,7 @@ export * from './constraint.model'; export * as disaggService from './disagg-service'; export * as hazardService from './hazard-service'; +export * as nshmService from './nshm-service'; export * as sourceLogicTreesService from './source-logic-trees-service'; export * from './source-model.model'; export * from './xy-data-group.model'; diff --git a/libs/nshmp-haz/www/nshm-service/index.ts b/libs/nshmp-haz/www/nshm-service/index.ts new file mode 100644 index 0000000..b1c316a --- /dev/null +++ b/libs/nshmp-haz/www/nshm-service/index.ts @@ -0,0 +1 @@ +export * from './nshm-usage.model'; diff --git a/libs/nshmp-haz/www/nshm-service/nshm-usage.model.ts b/libs/nshmp-haz/www/nshm-service/nshm-usage.model.ts new file mode 100644 index 0000000..4677738 --- /dev/null +++ b/libs/nshmp-haz/www/nshm-service/nshm-usage.model.ts @@ -0,0 +1,11 @@ +import {NshmId} from '../../../nshmp-lib/nshm'; +import {Response} from '../../../nshmp-ws-utils'; + +export type NshmUsage = Response<string, NshmMetadata[]>; + +export interface NshmMetadata { + model: NshmId; + project: string; + tag: string; + url: string; +} -- GitLab From de3654d99a01767a3cfafdb46b2245846b3f9524 Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Thu, 3 Nov 2022 09:57:47 -0600 Subject: [PATCH 10/12] dont include ts files --- .npmignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.npmignore b/.npmignore index 27259e3..c1e0b52 100644 --- a/.npmignore +++ b/.npmignore @@ -7,5 +7,6 @@ !README.md !code.json -!libs/** +!libs/**/*.d.ts +!libs/**/*.js* !package.json -- GitLab From 27640bcdd133f04ec6de3f6c99024798b28f89c0 Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Thu, 3 Nov 2022 10:19:59 -0600 Subject: [PATCH 11/12] add needs --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d555b15..1060d3f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -93,6 +93,7 @@ Publish npm: needs: - Audit - Build + - Build Node Image - Init - Lint script: -- GitLab From b9ed3c423131c2fb13859b79dc57e2d0d4370b44 Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Thu, 3 Nov 2022 10:23:40 -0600 Subject: [PATCH 12/12] update deps --- package-lock.json | 42 +++++++++++++++++++++--------------------- package.json | 6 +++--- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/package-lock.json b/package-lock.json index ebc34ff..8ec5bd1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,16 +10,16 @@ "license": "CC0-1.0", "dependencies": { "@types/d3-format": "^3.0.1", - "@types/leaflet": "^1.8.0", + "@types/leaflet": "^1.9.0", "@types/plotly.js": "^1.54.22", "change-case": "^4.1.2", "d3-format": "^3.1.0", "geojson": "^0.5.0", "leaflet": "^1.9.2", - "plotly.js": "^2.14.0" + "plotly.js": "^2.16.1" }, "devDependencies": { - "@types/node": "^18.8.2", + "@types/node": "^18.11.9", "eslint-plugin-simple-import-sort": "^8.0.0", "gts": "^3.1.1", "husky": "^8.0.1", @@ -480,9 +480,9 @@ "dev": true }, "node_modules/@types/leaflet": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.8.0.tgz", - "integrity": "sha512-+sXFmiJTFdhaXXIGFlV5re9AdqtAODoXbGAvxx02e5SHXL3ir7ClP5J7pahO8VmzKY3dth4RUS1nf2BTT+DW1A==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.9.0.tgz", + "integrity": "sha512-7LeOSj7EloC5UcyOMo+1kc3S1UT3MjJxwqsMT1d2PTyvQz53w0Y0oSSk9nwZnOZubCmBvpSNGceucxiq+ZPEUw==", "dependencies": { "@types/geojson": "*" } @@ -500,9 +500,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "18.8.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.8.2.tgz", - "integrity": "sha512-cRMwIgdDN43GO4xMWAfJAecYn8wV4JbsOGHNfNUIDiuYkUYAR5ec4Rj7IO2SAhFPEfpPtLtUTbbny/TCT7aDwA==", + "version": "18.11.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", + "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", "dev": true }, "node_modules/@types/normalize-package-data": { @@ -3900,9 +3900,9 @@ } }, "node_modules/plotly.js": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-2.14.0.tgz", - "integrity": "sha512-bv3Re8FmgVJOyIFidAc24mbKLZQ/y/xEFWoFhJMAIpl9pPrB9I6OjAv/gYCKEraWj4VTK5nAPAOGnjcDjodf2g==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-2.16.1.tgz", + "integrity": "sha512-83BJWgbXSjeEl31+zq66ZzU/QWfd/CItzGm5mtYeWHWHyoOcCzHDW4I+QgkicGq0ntLZ2PfEb0fjM0qMzGGXVw==", "dependencies": { "@plotly/d3": "3.8.0", "@plotly/d3-sankey": "0.7.2", @@ -5937,9 +5937,9 @@ "dev": true }, "@types/leaflet": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.8.0.tgz", - "integrity": "sha512-+sXFmiJTFdhaXXIGFlV5re9AdqtAODoXbGAvxx02e5SHXL3ir7ClP5J7pahO8VmzKY3dth4RUS1nf2BTT+DW1A==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.9.0.tgz", + "integrity": "sha512-7LeOSj7EloC5UcyOMo+1kc3S1UT3MjJxwqsMT1d2PTyvQz53w0Y0oSSk9nwZnOZubCmBvpSNGceucxiq+ZPEUw==", "requires": { "@types/geojson": "*" } @@ -5957,9 +5957,9 @@ "dev": true }, "@types/node": { - "version": "18.8.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.8.2.tgz", - "integrity": "sha512-cRMwIgdDN43GO4xMWAfJAecYn8wV4JbsOGHNfNUIDiuYkUYAR5ec4Rj7IO2SAhFPEfpPtLtUTbbny/TCT7aDwA==", + "version": "18.11.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", + "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", "dev": true }, "@types/normalize-package-data": { @@ -8678,9 +8678,9 @@ "dev": true }, "plotly.js": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-2.14.0.tgz", - "integrity": "sha512-bv3Re8FmgVJOyIFidAc24mbKLZQ/y/xEFWoFhJMAIpl9pPrB9I6OjAv/gYCKEraWj4VTK5nAPAOGnjcDjodf2g==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-2.16.1.tgz", + "integrity": "sha512-83BJWgbXSjeEl31+zq66ZzU/QWfd/CItzGm5mtYeWHWHyoOcCzHDW4I+QgkicGq0ntLZ2PfEb0fjM0qMzGGXVw==", "requires": { "@plotly/d3": "3.8.0", "@plotly/d3-sankey": "0.7.2", diff --git a/package.json b/package.json index 3793c32..40fc8a9 100644 --- a/package.json +++ b/package.json @@ -20,16 +20,16 @@ }, "dependencies": { "@types/d3-format": "^3.0.1", - "@types/leaflet": "^1.8.0", + "@types/leaflet": "^1.9.0", "@types/plotly.js": "^1.54.22", "change-case": "^4.1.2", "d3-format": "^3.1.0", "geojson": "^0.5.0", "leaflet": "^1.9.2", - "plotly.js": "^2.14.0" + "plotly.js": "^2.16.1" }, "devDependencies": { - "@types/node": "^18.8.2", + "@types/node": "^18.11.9", "eslint-plugin-simple-import-sort": "^8.0.0", "gts": "^3.1.1", "husky": "^8.0.1", -- GitLab