Skip to content

Commit 019b4d7

Browse files
committed
added GMCM support
1 parent 4202035 commit 019b4d7

File tree

5 files changed

+87
-12
lines changed

5 files changed

+87
-12
lines changed

nshm/admin.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,19 @@
44
SeismicHazardModel,
55
SourceLogicTree,
66
SourceLogicTreeComponent,
7-
SourceLogicTreeWeightedComponent
7+
SourceLogicTreeWeightedComponent,
8+
GMCMLogicTree
89
)
910

1011
class SeismicHazardModelAdmin(admin.ModelAdmin):
11-
fields = ["version", "notes", "source_logic_tree" ]
12+
fields = ["version", "notes", "source_logic_tree", "gmcm_logic_tree" ]
1213

1314
class SourceLogicTreeAdmin(admin.ModelAdmin):
1415
fields = ["version", "notes"]
1516

17+
class GMCMLogicTreeAdmin(admin.ModelAdmin):
18+
fields = ["version", "notes"]
19+
1620
class SourceLogicTreeComponentAdmin(admin.ModelAdmin):
1721
fields = ["tag", "notes", "inversion_toshi_id", "background_toshi_id", "tectonic_region", "group" ]
1822

@@ -21,5 +25,6 @@ class SourceLogicTreeWeightedComponentAdmin(admin.ModelAdmin):
2125

2226
admin.site.register(SeismicHazardModel, SeismicHazardModelAdmin)
2327
admin.site.register(SourceLogicTree, SourceLogicTreeAdmin)
28+
admin.site.register(GMCMLogicTree, GMCMLogicTreeAdmin)
2429
admin.site.register(SourceLogicTreeComponent, SourceLogicTreeComponentAdmin)
2530
admin.site.register(SourceLogicTreeWeightedComponent, SourceLogicTreeWeightedComponentAdmin)
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Generated by Django 4.2.4 on 2023-08-25 03:43
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('nshm', '0008_alter_seismichazardmodel_notes_and_more'),
11+
]
12+
13+
operations = [
14+
migrations.CreateModel(
15+
name='GMCM_LogicTree',
16+
fields=[
17+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
18+
('version', models.CharField(max_length=30)),
19+
('notes', models.TextField(blank=True, null=True)),
20+
],
21+
),
22+
migrations.AddField(
23+
model_name='seismichazardmodel',
24+
name='gmcm_logic_tree',
25+
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='seismic_hazard_models', to='nshm.gmcm_logictree'),
26+
),
27+
]
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Generated by Django 4.2.4 on 2023-08-25 03:54
2+
3+
from django.db import migrations
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('nshm', '0009_gmcm_logictree_seismichazardmodel_gmcm_logic_tree'),
10+
]
11+
12+
operations = [
13+
migrations.RenameModel(
14+
old_name='GMCM_LogicTree',
15+
new_name='GMCMLogicTree',
16+
),
17+
]

nshm/models.py

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,6 @@ class SourceLogicTree(models.Model):
1313
def __str__(self):
1414
return self.version
1515

16-
class SeismicHazardModel(models.Model):
17-
version = models.CharField(max_length=30)
18-
notes = models.TextField(null=True, blank=True)
19-
source_logic_tree = models.ForeignKey(
20-
SourceLogicTree, related_name='seismic_hazard_models',null=True, blank=True, on_delete=models.SET_NULL)
21-
22-
def __str__(self):
23-
return self.version
24-
2516

2617
class SourceLogicTreeComponent(models.Model):
2718
tag = models.CharField(max_length=50)
@@ -34,11 +25,33 @@ class SourceLogicTreeComponent(models.Model):
3425
def __str__(self):
3526
return f"{self.tag} {self.tectonic_region}"
3627

28+
3729
class SourceLogicTreeWeightedComponent(models.Model):
3830
weight = models.FloatField()
3931
source_logic_tree = models.ForeignKey(
4032
SourceLogicTree, related_name='slt_weighted_components', null=False, on_delete=models.CASCADE)
4133
source_logic_tree_component = models.ForeignKey(SourceLogicTreeComponent, related_name='slt_weighted_components', null=True, on_delete=models.SET_NULL)
4234

4335
def __str__(self):
44-
return f"{self.source_logic_tree_component.tag} {self.weight}"
36+
return f"{self.source_logic_tree_component.tag} {self.weight}"
37+
38+
39+
class GMCMLogicTree(models.Model):
40+
version = models.CharField(max_length=30)
41+
notes = models.TextField(null=True, blank=True)
42+
43+
def __str__(self):
44+
return self.version
45+
46+
class SeismicHazardModel(models.Model):
47+
version = models.CharField(max_length=30)
48+
notes = models.TextField(null=True, blank=True)
49+
source_logic_tree = models.ForeignKey(
50+
SourceLogicTree, related_name='seismic_hazard_models',null=True, blank=True, on_delete=models.SET_NULL)
51+
52+
gmcm_logic_tree = models.ForeignKey(
53+
GMCMLogicTree, related_name='seismic_hazard_models',null=True, blank=True, on_delete=models.SET_NULL)
54+
55+
def __str__(self):
56+
return self.version
57+

nshm/schema.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,16 @@ class Meta:
3737
model = models.SourceLogicTreeWeightedComponent
3838
interfaces = (relay.Node, )
3939

40+
class GMCM_LogicTree(DjangoObjectType):
41+
"""Ground Motion Characteristic Model (GMCM) Logic Tree
42+
43+
A list of GMMs by tectonic region, with weights. Tectonic region weights must sum to 1.
44+
"""
45+
class Meta:
46+
model = models.GMCMLogicTree
47+
filter_fields = ['version', 'notes']
48+
interfaces = (relay.Node, )
49+
4050
class Query(ObjectType):
4151
seismic_hazard_model = relay.Node.Field(SeismicHazardModel)
4252
all_seismic_hazard_models = DjangoFilterConnectionField(SeismicHazardModel)
@@ -47,4 +57,7 @@ class Query(ObjectType):
4757
source_logic_tree_component = relay.Node.Field(SourceLogicTreeComponent)
4858
all_source_logic_tree_components = DjangoFilterConnectionField(SourceLogicTreeComponent)
4959

60+
gmcm_logic_tree = relay.Node.Field(GMCM_LogicTree)
61+
all_gmcm_logic_trees = DjangoFilterConnectionField(GMCM_LogicTree)
62+
5063
# source_logic_tree_weighted_component = relay.Node.Field(SourceLogicTreeWeightedComponent)

0 commit comments

Comments
 (0)