Skip to content

Commit c7733f3

Browse files
committed
Change components to vertical, inline, crossline. Adjust tests
1 parent 5c0ce75 commit c7733f3

12 files changed

Lines changed: 240 additions & 104 deletions

File tree

simpeg_drivers/components/data.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -309,9 +309,7 @@ def get_normalizations(self):
309309
"tdem" in self.params.inversion_type
310310
and "dB/dt" in self.params.data_units
311311
):
312-
if comp in ["x", "y", "z"]:
313-
normalizations[chan][comp] = -1
314-
normalizations[chan][comp] *= np.ones(self.mask.sum())
312+
normalizations[chan][comp] = np.full(self.mask.sum(), -1)
315313

316314
return normalizations
317315

simpeg_drivers/components/factories/receiver_factory.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,13 @@
3030
from simpeg_drivers.utils.regularization import direction_and_dip, get_cell_normals
3131

3232

33+
ORIENTATION_MAP = {
34+
"vertical": "z",
35+
"inline": "y",
36+
"crossline": "x",
37+
}
38+
39+
3340
class ReceiversFactory(SimPEGFactory):
3441
"""Build SimPEG receivers objects based on factory type."""
3542

@@ -150,14 +157,16 @@ def assemble_keyword_arguments(
150157

151158
if self.factory_type in ["fdem", "fdem 1d", "magnetotellurics", "tipper"]:
152159
comp = component.split("_")[0]
153-
kwargs["orientation"] = comp[0] if "fdem" in self.factory_type else comp[1:]
160+
kwargs["orientation"] = (
161+
ORIENTATION_MAP[comp] if "fdem" in self.factory_type else comp[1:]
162+
)
154163
kwargs["component"] = component.split("_")[1]
155164

156165
if self.factory_type in ["tipper"]:
157166
kwargs["orientation"] = kwargs["orientation"][::-1]
158167

159168
if "tdem" in self.factory_type:
160-
kwargs["orientation"] = component
169+
kwargs["orientation"] = ORIENTATION_MAP[component]
161170

162171
if self.factory_type == "fdem 1d":
163172
kwargs["data_type"] = "ppm"

simpeg_drivers/electromagnetics/frequency_domain/options.py

Lines changed: 105 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
LargeLoopGroundFEMReceivers,
2323
MovingLoopGroundFEMReceivers,
2424
)
25-
from pydantic import field_validator
25+
from pydantic import AliasChoices, Field, field_validator
2626

2727
from simpeg_drivers import assets_path
2828
from simpeg_drivers.options import (
@@ -86,12 +86,12 @@ class FDEMForwardOptions(BaseForwardOptions, BaseFDEMOptions):
8686
Frequency Domain Electromagnetic Forward options.
8787
8888
:param receivers_orientation: Orientation of the receivers provided as a group.
89-
:param z_real_channel_bool: Vertical (real) component of impedance channel boolean.
90-
:param z_imag_channel_bool: Vertical (imaginary) component of impedance channel boolean.
91-
:param y_real_channel_bool: In-line (real) component of impedance channel boolean.
92-
:param y_imag_channel_bool: In-line (imaginary) component of impedance channel boolean.
93-
:param x_real_channel_bool: Cross-line (real) component of impedance channel boolean.
94-
:param x_imag_channel_bool: Cross-line (imaginary) component of impedance channel
89+
:param vertical_real_channel_bool: Vertical (real) component of impedance channel boolean.
90+
:param vertical_imag_channel_bool: Vertical (imaginary) component of impedance channel boolean.
91+
:param inline_real_channel_bool: In-line (real) component of impedance channel boolean.
92+
:param inline_imag_channel_bool: In-line (imaginary) component of impedance channel boolean.
93+
:param crossline_real_channel_bool: Cross-line (real) component of impedance channel boolean.
94+
:param crossline_imag_channel_bool: Cross-line (imaginary) component of impedance channel
9595
:param models: ConductivityModelOptions parameter.
9696
"""
9797

@@ -108,31 +108,61 @@ class FDEMForwardOptions(BaseForwardOptions, BaseFDEMOptions):
108108
| AirborneFEMReceivers
109109
)
110110
receivers_orientation: PropertyGroup | None = None
111-
z_real_channel_bool: bool = False
112-
z_imag_channel_bool: bool = False
113-
y_real_channel_bool: bool = False
114-
y_imag_channel_bool: bool = False
115-
x_real_channel_bool: bool = False
116-
x_imag_channel_bool: bool = False
111+
vertical_real_channel_bool: bool = Field(
112+
False,
113+
validation_alias=AliasChoices(
114+
"z_real_channel_bool", "vertical_real_channel_bool"
115+
),
116+
)
117+
vertical_imag_channel_bool: bool = Field(
118+
False,
119+
validation_alias=AliasChoices(
120+
"z_imag_channel_bool", "vertical_imag_channel_bool"
121+
),
122+
)
123+
inline_real_channel_bool: bool = Field(
124+
False,
125+
validation_alias=AliasChoices(
126+
"y_real_channel_bool", "inline_real_channel_bool"
127+
),
128+
)
129+
inline_imag_channel_bool: bool = Field(
130+
False,
131+
validation_alias=AliasChoices(
132+
"y_imag_channel_bool", "inline_imag_channel_bool"
133+
),
134+
)
135+
crossline_real_channel_bool: bool = Field(
136+
False,
137+
validation_alias=AliasChoices(
138+
"x_real_channel_bool", "crossline_real_channel_bool"
139+
),
140+
)
141+
crossline_imag_channel_bool: bool = Field(
142+
False,
143+
validation_alias=AliasChoices(
144+
"x_imag_channel_bool", "crossline_imag_channel_bool"
145+
),
146+
)
117147
models: ConductivityModelOptions
118148

119149

120150
class FDEMInversionOptions(BaseFDEMOptions, BaseInversionOptions):
121151
"""
122152
Frequency Domain Electromagnetic Inversion options.
123153
124-
:param z_real_channel: Vertical (real) impedance channel.
125-
:param z_real_uncertainty: Vertical (real) impedance uncertainty channel.
126-
:param z_imag_channel: Vertical (imaginary) impedance channel.
127-
:param z_imag_uncertainty: Vertical (imaginary) impedance uncertainty channel.
128-
:param y_real_channel: In-line (real) impedance channel.
129-
:param y_real_uncertainty: In-line (real) impedance uncertainty channel.
130-
:param y_imag_channel: In-line (imaginary) impedance channel.
131-
:param y_imag_uncertainty: In-line (imaginary) impedance uncertainty channel
132-
:param x_real_channel: Cross-line (real) impedance channel.
133-
:param x_real_uncertainty: Cross-line (real) impedance uncertainty channel.
134-
:param x_imag_channel: Cross-line (imaginary) impedance channel.
135-
:param x_imag_uncertainty: Cross-line (imaginary) impedance uncertainty channel
154+
:param vertical_real_channel: Vertical (real) impedance channel.
155+
:param vertical_real_uncertainty: Vertical (real) impedance uncertainty channel.
156+
:param vertical_imag_channel: Vertical (imaginary) impedance channel.
157+
:param vertical_imag_uncertainty: Vertical (imaginary) impedance uncertainty channel.
158+
:param inline_real_channel: In-line (real) impedance channel.
159+
:param inline_real_uncertainty: In-line (real) impedance uncertainty channel.
160+
:param inline_imag_channel: In-line (imaginary) impedance channel.
161+
:param inline_imag_uncertainty: In-line (imaginary) impedance uncertainty channel
162+
:param crossline_real_channel: Cross-line (real) impedance channel.
163+
:param crossline_real_uncertainty: Cross-line (real) impedance uncertainty channel.
164+
:param crossline_imag_channel: Cross-line (imaginary) impedance channel.
165+
:param crossline_imag_uncertainty: Cross-line (imaginary) impedance uncertainty channel
136166
:param models: ConductivityModelOptions parameter.
137167
"""
138168

@@ -149,18 +179,56 @@ class FDEMInversionOptions(BaseFDEMOptions, BaseInversionOptions):
149179
| AirborneFEMReceivers
150180
)
151181
receivers_orientation: PropertyGroup | None = None
152-
z_real_channel: PropertyGroup | None = None
153-
z_real_uncertainty: PropertyGroup | None = None
154-
z_imag_channel: PropertyGroup | None = None
155-
z_imag_uncertainty: PropertyGroup | None = None
156-
y_real_channel: PropertyGroup | None = None
157-
y_real_uncertainty: PropertyGroup | None = None
158-
y_imag_channel: PropertyGroup | None = None
159-
y_imag_uncertainty: PropertyGroup | None = None
160-
x_real_channel: PropertyGroup | None = None
161-
x_real_uncertainty: PropertyGroup | None = None
162-
x_imag_channel: PropertyGroup | None = None
163-
x_imag_uncertainty: PropertyGroup | None = None
182+
vertical_real_channel: PropertyGroup | None = Field(
183+
None, validation_alias=AliasChoices("z_real_channel", "vertical_real_channel")
184+
)
185+
vertical_real_uncertainty: PropertyGroup | None = Field(
186+
None,
187+
validation_alias=AliasChoices(
188+
"z_real_uncertainty", "vertical_real_uncertainty"
189+
),
190+
)
191+
vertical_imag_channel: PropertyGroup | None = Field(
192+
None, validation_alias=AliasChoices("z_imag_channel", "vertical_imag_channel")
193+
)
194+
vertical_imag_uncertainty: PropertyGroup | None = Field(
195+
None,
196+
validation_alias=AliasChoices(
197+
"z_imag_uncertainty", "vertical_imag_uncertainty"
198+
),
199+
)
200+
inline_real_channel: PropertyGroup | None = Field(
201+
None, validation_alias=AliasChoices("y_real_channel", "inline_real_channel")
202+
)
203+
inline_real_uncertainty: PropertyGroup | None = Field(
204+
None,
205+
validation_alias=AliasChoices("y_real_uncertainty", "inline_real_uncertainty"),
206+
)
207+
inline_imag_channel: PropertyGroup | None = Field(
208+
None, validation_alias=AliasChoices("y_imag_channel", "inline_imag_channel")
209+
)
210+
inline_imag_uncertainty: PropertyGroup | None = Field(
211+
None,
212+
validation_alias=AliasChoices("y_imag_uncertainty", "inline_imag_uncertainty"),
213+
)
214+
crossline_real_channel: PropertyGroup | None = Field(
215+
None, validation_alias=AliasChoices("x_real_channel", "crossline_real_channel")
216+
)
217+
crossline_real_uncertainty: PropertyGroup | None = Field(
218+
None,
219+
validation_alias=AliasChoices(
220+
"x_real_uncertainty", "crossline_real_uncertainty"
221+
),
222+
)
223+
crossline_imag_channel: PropertyGroup | None = Field(
224+
None, validation_alias=AliasChoices("x_imag_channel", "crossline_imag_channel")
225+
)
226+
crossline_imag_uncertainty: PropertyGroup | None = Field(
227+
None,
228+
validation_alias=AliasChoices(
229+
"x_imag_uncertainty", "crossline_imag_uncertainty"
230+
),
231+
)
164232

165233
models: ConductivityModelOptions
166234

simpeg_drivers/electromagnetics/frequency_domain_1d/options.py

Lines changed: 37 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
from geoh5py.groups import PropertyGroup
1818
from geoh5py.objects import AirborneFEMReceivers
19+
from pydantic import AliasChoices, Field
1920

2021
from simpeg_drivers import assets_path
2122
from simpeg_drivers.electromagnetics.base_1d_options import Base1DOptions
@@ -32,8 +33,8 @@ class FDEM1DForwardOptions(BaseForwardOptions, BaseFDEMOptions, Base1DOptions):
3233
"""
3334
Frequency Domain Electromagnetic forward options.
3435
35-
:param z_real_channel_bool: Z-component data channel boolean.
36-
:param z_imag_channel_bool: Imaginary Z-component data channel boolean.
36+
:param vertical_real_channel_bool: Z-component data channel boolean.
37+
:param vertical_imag_channel_bool: Imaginary Z-component data channel boolean.
3738
:param drape_model: Drape model options.
3839
"""
3940

@@ -44,19 +45,29 @@ class FDEM1DForwardOptions(BaseForwardOptions, BaseFDEMOptions, Base1DOptions):
4445
physical_property: str = "conductivity"
4546
inversion_type: str = "fdem 1d"
4647
data_object: AirborneFEMReceivers
47-
z_real_channel_bool: bool
48-
z_imag_channel_bool: bool
48+
vertical_real_channel_bool: bool = Field(
49+
False,
50+
validation_alias=AliasChoices(
51+
"z_real_channel_bool", "vertical_real_channel_bool"
52+
),
53+
)
54+
vertical_imag_channel_bool: bool = Field(
55+
False,
56+
validation_alias=AliasChoices(
57+
"z_imag_channel_bool", "vertical_imag_channel_bool"
58+
),
59+
)
4960
models: ConductivityModelOptions
5061

5162

5263
class FDEM1DInversionOptions(BaseFDEMOptions, BaseInversionOptions, Base1DOptions):
5364
"""
5465
Frequency Domain Electromagnetic Inversion options.
5566
56-
:param z_real_channel: Real Z-component data channel.
57-
:param z_real_uncertainty: Real Z-component data channel uncertainty.
58-
:param z_imag_channel: Imaginary Z-component data channel.
59-
:param z_imag_uncertainty: Imaginary Z-component data channel uncertainty.
67+
:param vertical_real_channel: Real Z-component data channel.
68+
:param vertical_real_uncertainty: Real Z-component data channel uncertainty.
69+
:param vertical_imag_channel: Imaginary Z-component data channel.
70+
:param vertical_imag_uncertainty: Imaginary Z-component data channel uncertainty.
6071
:param drape_model: Drape model options.
6172
"""
6273

@@ -71,8 +82,22 @@ class FDEM1DInversionOptions(BaseFDEMOptions, BaseInversionOptions, Base1DOption
7182
directives: DirectiveOptions = DirectiveOptions(
7283
sens_wts_threshold=100.0,
7384
)
74-
z_real_channel: PropertyGroup | None = None
75-
z_real_uncertainty: PropertyGroup | None = None
76-
z_imag_channel: PropertyGroup | None = None
77-
z_imag_uncertainty: PropertyGroup | None = None
85+
vertical_real_channel: PropertyGroup | None = Field(
86+
None, validation_alias=AliasChoices("z_real_channel", "vertical_real_channel")
87+
)
88+
vertical_real_uncertainty: PropertyGroup | None = Field(
89+
None,
90+
validation_alias=AliasChoices(
91+
"z_real_uncertainty", "vertical_real_uncertainty"
92+
),
93+
)
94+
vertical_imag_channel: PropertyGroup | None = Field(
95+
None, validation_alias=AliasChoices("z_imag_channel", "vertical_imag_channel")
96+
)
97+
vertical_imag_uncertainty: PropertyGroup | None = Field(
98+
None,
99+
validation_alias=AliasChoices(
100+
"z_imag_uncertainty", "vertical_imag_uncertainty"
101+
),
102+
)
78103
models: ConductivityModelOptions

simpeg_drivers/electromagnetics/time_domain/options.py

Lines changed: 37 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
LargeLoopGroundTEMReceivers,
2222
MovingLoopGroundTEMReceivers,
2323
)
24+
from pydantic import AliasChoices, Field
2425

2526
from simpeg_drivers import assets_path
2627
from simpeg_drivers.options import (
@@ -76,9 +77,9 @@ class TDEMForwardOptions(BaseTDEMOptions, BaseForwardOptions):
7677
"""
7778
Time Domain Electromagnetic forward options.
7879
79-
:param z_channel_bool: Vertical data channel boolean.
80-
:param y_channel_bool: In-line data channel boolean.
81-
:param x_channel_bool: Cross-line data channel boolean.
80+
:param vertical_channel_bool: Vertical data channel boolean.
81+
:param inline_channel_bool: In-line data channel boolean.
82+
:param crossline_channel_bool: Cross-line data channel boolean.
8283
"""
8384

8485
name: ClassVar[str] = "Time Domain Electromagnetics Forward"
@@ -95,22 +96,28 @@ class TDEMForwardOptions(BaseTDEMOptions, BaseForwardOptions):
9596
| AirborneTEMReceivers
9697
)
9798
receivers_orientation: PropertyGroup | None = None
98-
z_channel_bool: bool | None = None
99-
x_channel_bool: bool | None = None
100-
y_channel_bool: bool | None = None
99+
vertical_channel_bool: bool = Field(
100+
False, validation_alias=AliasChoices("z_channel_bool", "vertical_channel_bool")
101+
)
102+
inline_channel_bool: bool = Field(
103+
False, validation_alias=AliasChoices("y_channel_bool", "inline_channel_bool")
104+
)
105+
crossline_channel_bool: bool = Field(
106+
False, validation_alias=AliasChoices("x_channel_bool", "crossline_channel_bool")
107+
)
101108
models: ConductivityModelOptions
102109

103110

104111
class TDEMInversionOptions(BaseTDEMOptions, BaseInversionOptions):
105112
"""
106113
Time Domain Electromagnetic Inversion options.
107114
108-
:param z_channel: Z-component data channel.
109-
:param z_uncertainty: Z-component data channel uncertainty.
110-
:param y_channel: In-line data channel.
111-
:param y_uncertainty: In-line data channel uncertainty.
112-
:param x_channel: Cross-line data channel.
113-
:param x_uncertainty: Cross-line data channel uncertainty.
115+
:param vertical_channel: Vertical component data channel.
116+
:param vertical_uncertainty: Vertical component data channel uncertainty.
117+
:param inline_channel: In-line data channel.
118+
:param inline_uncertainty: In-line data channel uncertainty.
119+
:param crossline_channel: Cross-line data channel.
120+
:param crossline_uncertainty: Cross-line data channel uncertainty.
114121
"""
115122

116123
name: ClassVar[str] = "Time Domain Electromagnetics Inversion"
@@ -126,11 +133,23 @@ class TDEMInversionOptions(BaseTDEMOptions, BaseInversionOptions):
126133
| AirborneTEMReceivers
127134
)
128135
receivers_orientation: PropertyGroup | None = None
129-
z_channel: PropertyGroup | None = None
130-
z_uncertainty: PropertyGroup | None = None
131-
y_channel: PropertyGroup | None = None
132-
y_uncertainty: PropertyGroup | None = None
133-
x_channel: PropertyGroup | None = None
134-
x_uncertainty: PropertyGroup | None = None
136+
vertical_channel: PropertyGroup | None = Field(
137+
None, validation_alias=AliasChoices("z_channel", "vertical_channel")
138+
)
139+
vertical_uncertainty: PropertyGroup | None = Field(
140+
None, validation_alias=AliasChoices("z_uncertainty", "vertical_uncertainty")
141+
)
142+
inline_channel: PropertyGroup | None = Field(
143+
None, validation_alias=AliasChoices("y_channel", "crossline_channel")
144+
)
145+
inline_uncertainty: PropertyGroup | None = Field(
146+
None, validation_alias=AliasChoices("y_uncertainty", "crossline_uncertainty")
147+
)
148+
crossline_channel: PropertyGroup | None = Field(
149+
None, validation_alias=AliasChoices("x_channel", "inline_channel")
150+
)
151+
crossline_uncertainty: PropertyGroup | None = Field(
152+
None, validation_alias=AliasChoices("x_uncertainty", "inline_uncertainty")
153+
)
135154

136155
models: ConductivityModelOptions

0 commit comments

Comments
 (0)