Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
N
nshmp-lib
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
ghsc
National Seismic Hazard Model Project
nshmp-lib
Merge requests
!446
Add www Package
Code
Review changes
Check out branch
Download
Patches
Plain diff
Merged
Add www Package
ghsc/users/bclayton/nshmp/nshmp-lib:www
into
main
Overview
0
Commits
3
Pipelines
0
Changes
10
Merged
Clayton, Brandon Scott
requested to merge
ghsc/users/bclayton/nshmp/nshmp-lib:www
into
main
3 weeks ago
Overview
0
Commits
3
Pipelines
0
Changes
10
Expand
Add www package with utils from nshmp-utils-java.
0
0
Merge request reports
Compare
main
main (base)
and
latest version
latest version
734cfdfd
3 commits,
3 weeks ago
10 files
+
446
−
218
Inline
Compare changes
Side-by-side
Inline
Show whitespace changes
Show one file at a time
Files
10
Search (e.g. *.vue) (Ctrl+P)
src/main/java/gov/usgs/earthquake/nshmp/calc/GroundMotionToCurveLambda.java deleted
100644 → 0
+
0
−
216
Options
package
gov.usgs.earthquake.nshmp.calc
;
import
static
com
.
google
.
common
.
base
.
Preconditions
.
checkNotNull
;
import
java.io.BufferedReader
;
import
java.io.BufferedWriter
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.InputStreamReader
;
import
java.io.OutputStream
;
import
java.io.OutputStreamWriter
;
import
java.io.PrintWriter
;
import
com.amazonaws.services.lambda.runtime.Context
;
import
com.amazonaws.services.lambda.runtime.RequestStreamHandler
;
import
com.google.common.base.Charsets
;
import
com.google.gson.Gson
;
import
com.google.gson.GsonBuilder
;
import
gov.usgs.earthquake.nshmp.data.MutableXySequence
;
import
gov.usgs.earthquake.nshmp.data.XySequence
;
import
gov.usgs.earthquake.nshmp.gmm.Gmm
;
import
gov.usgs.earthquake.nshmp.gmm.GroundMotion
;
import
gov.usgs.earthquake.nshmp.gmm.Imt
;
import
gov.usgs.earthquake.nshmp.tree.LogicTree
;
/**
* AWS Lambda function to perform ground motion to curve transformation.
*
* @see Transforms.GroundMotionsToCurves
*
* @author U.S. Geological Survey
*/
public
class
GroundMotionToCurveLambda
implements
RequestStreamHandler
{
private
static
final
Gson
GSON
=
new
GsonBuilder
().
setPrettyPrinting
().
create
();
/**
* Lambda handler to convert GroundMotion to HazardCurve.
*
* @see Transforms.GroundMotionsToCurves#apply
*
* @param inputStream The Lambda input stream
* @param outputStream The Lambda output stream
* @param context The Lambda context
* @throws IOException
*/
@Override
public
void
handleRequest
(
InputStream
inputStream
,
OutputStream
outputStream
,
Context
context
)
throws
IOException
{
var
logger
=
context
.
getLogger
();
var
reader
=
new
BufferedReader
(
new
InputStreamReader
(
inputStream
,
Charsets
.
UTF_8
));
var
writer
=
new
PrintWriter
(
new
BufferedWriter
(
new
OutputStreamWriter
(
outputStream
,
Charsets
.
UTF_8
)));
var
event
=
GSON
.
fromJson
(
reader
,
GmmCurve
.
class
);
logger
.
log
(
"Event: "
+
GSON
.
toJson
(
event
));
event
.
exceedanceModel
.
treeExceedanceCombined
(
event
.
logicTree
,
event
.
truncationLevel
,
event
.
σScale
,
event
.
imt
,
event
.
utilCurve
);
event
.
utilCurve
.
multiply
(
event
.
rate
);
var
hazardCurve
=
new
HazardCurve
(
event
.
imt
,
event
.
gmm
,
event
.
utilCurve
);
logger
.
log
(
"GMM Curve: "
+
GSON
.
toJson
(
hazardCurve
));
writer
.
write
(
GSON
.
toJson
(
hazardCurve
,
HazardCurve
.
class
));
reader
.
close
();
writer
.
close
();
}
/**
* Wrapper class for Lambda input.
*/
static
class
GmmCurve
{
private
final
ExceedanceModel
exceedanceModel
;
private
final
Gmm
gmm
;
private
final
Imt
imt
;
private
final
LogicTree
<
GroundMotion
>
logicTree
;
private
final
double
rate
;
private
final
double
truncationLevel
;
private
final
MutableXySequence
utilCurve
;
private
final
double
σScale
;
private
GmmCurve
(
Builder
builder
)
{
exceedanceModel
=
builder
.
exceedanceModel
;
gmm
=
builder
.
gmm
;
imt
=
builder
.
imt
;
logicTree
=
builder
.
logicTree
;
rate
=
builder
.
rate
;
truncationLevel
=
builder
.
truncationLevel
;
utilCurve
=
builder
.
utilCurve
;
σScale
=
builder
.
σScale
;
}
/**
* Returns a new GmmCurve builder.
*/
Builder
builder
()
{
return
new
Builder
();
}
/**
* Build a GmmCurve for Lambda handler.
*
* @see GroundMotionToCurveLambda#groundMotionsToCurvesHandler
*/
static
class
Builder
{
private
ExceedanceModel
exceedanceModel
;
private
Gmm
gmm
;
private
Imt
imt
;
private
LogicTree
<
GroundMotion
>
logicTree
;
private
double
rate
;
private
double
truncationLevel
;
private
MutableXySequence
utilCurve
;
private
double
σScale
;
private
Builder
()
{}
Builder
exceedanceModel
(
ExceedanceModel
exceedanceModel
)
{
this
.
exceedanceModel
=
exceedanceModel
;
return
this
;
}
Builder
gmm
(
Gmm
gmm
)
{
this
.
gmm
=
gmm
;
return
this
;
}
Builder
imt
(
Imt
imt
)
{
this
.
imt
=
imt
;
return
this
;
}
Builder
logicTree
(
LogicTree
<
GroundMotion
>
logicTree
)
{
this
.
logicTree
=
logicTree
;
return
this
;
}
Builder
rate
(
double
rate
)
{
this
.
rate
=
rate
;
return
this
;
}
Builder
truncationLevel
(
double
truncationLevel
)
{
this
.
truncationLevel
=
truncationLevel
;
return
this
;
}
Builder
utilCurve
(
MutableXySequence
utilCurve
)
{
this
.
utilCurve
=
utilCurve
;
return
this
;
}
Builder
σScale
(
double
σScale
)
{
this
.
σScale
=
σScale
;
return
this
;
}
GmmCurve
build
()
{
checkNotNull
(
exceedanceModel
);
checkNotNull
(
gmm
);
checkNotNull
(
imt
);
checkNotNull
(
logicTree
);
checkNotNull
(
rate
);
checkNotNull
(
truncationLevel
);
checkNotNull
(
utilCurve
);
checkNotNull
(
σScale
);
return
new
GmmCurve
(
this
);
}
}
}
/**
* Single hazard curve returned from the Lambda function.
*
* @see GroundMotionToCurveLambda#groundMotionsToCurvesHandler
*/
static
class
HazardCurve
{
private
final
Imt
imt
;
private
final
Gmm
gmm
;
private
final
XySequence
curve
;
private
HazardCurve
(
Imt
imt
,
Gmm
gmm
,
XySequence
curve
)
{
this
.
imt
=
imt
;
this
.
gmm
=
gmm
;
this
.
curve
=
curve
;
}
/**
* Returns the Imt associated with the hazard curve.
*/
Imt
imt
()
{
return
imt
;
}
/**
* Returns the Gmm associated with the hazard curve.
*/
Gmm
gmm
()
{
return
gmm
;
}
/**
* Returns the curve for a specific Imt and Gmm.
*/
XySequence
curve
()
{
return
curve
;
}
}
}
Loading