Ground motion record selection¶
This example walks through a conditional GCIM-based record selection using a logic-tree ground motion model (GMM) ensemble.
Input file¶
Download: input1.json
The selection is driven by a JSON input file. The one used here specifies two GMMs for SA (weighted 40 %/60 %), one GMM for Ds595, two rupture scenarios, a conditioning IM of SA(1.0 s) = 0.7 g, and a target of 40 records with a maximum scaling factor of 3.
{
"gmms": [
{
"SA": {
"names": ["AristeidouEtAl2024", "BooreEtAl2020"],
"weights": [0.4, 0.6]
}
},
{
"Ds595": {
"names": ["AbrahamsonSilva1996"],
"weights": [1]
}
}
],
"site-parameters": {
"vs30": 500,
"z2pt5": 2,
"soil": 0,
"mechanism": "normal fault"
},
"ruptures": [
{
"mag": 6.3, "rjb": 10, "weight": 0.6,
"rrup": 12, "d_hyp": 10, "rx": 120, "ztor": 0
},
{
"mag": 6.0, "rjb": 20, "weight": 0.4,
"rrup": 20, "d_hyp": 5, "rx": 120, "ztor": 0
}
],
"imi": [
"SA(0.05s)", "SA(0.075s)", "SA(0.1s)", "SA(0.15s)", "SA(0.2s)",
"SA(0.25s)", "SA(0.3s)", "SA(0.4s)", "SA(0.5s)", "SA(0.75s)",
"SA(1.0s)", "SA(1.3s)", "SA(1.5s)", "SA(2.0s)", "Ds595"
],
"im-star": {
"type": "SA(1.)",
"value": 0.7,
"gmms": {
"names": ["BooreEtAl2020", "AristeidouEtAl2024"],
"weights": [0.4, 0.6]
}
},
"num-components": 1,
"nreplicate": 1,
"num_records": 40,
"context_limits": {},
"seed": 0,
"ks_alpha": 0.05,
"im_weights": [],
"max_scaling_factor": 3
}
Running the selection¶
Save the JSON above as input.json, then:
from djura.record_selection import GCIM
# Pass the path to your input file and enable conditional selection.
# The NGA-West2 dataset is downloaded and cached automatically on first use.
gcim = GCIM("input.json", conditional=True)
# Step 1: build the GCIM distributions for all IMs in "imi".
gcim.create()
# Step 2: select records from the NGA-West2 database.
gcim.select()
After select() completes, the chosen record IDs, scaling factors,
and goodness-of-fit statistics are available on the gcim object.
Discovering supported options¶
GCIM exposes several helper methods that return the parameters and
models available in the current installation:
from djura.record_selection import GCIM
gcim = GCIM()
# Rupture, site, and distance parameters accepted by the GMMs
print(gcim.get_supported_rupture_parameters())
print(gcim.get_supported_sites_parameters())
print(gcim.get_supported_distances_parameters())
# NGA-West2 metadata column names
print(gcim.get_metadata_parameters())
# Correlation models and IM component conventions
print(gcim.available_correlation_models())
print(gcim.get_supported_im_component_types())
# All ground motion models bundled with djura
print(gcim.get_available_gsims())