1# =====================================================
2# Imports
3# =====================================================
4from typing import Annotated
5
6from pydantic import Field
7
8from mt_metadata.base import MetadataBase
9
10
11# =====================================================
12class BirrpParameters(MetadataBase):
13 outputs: Annotated[
14 int,
15 Field(
16 default=None,
17 description="Number of output channels",
18 alias=None,
19 json_schema_extra={
20 "units": None,
21 "required": True,
22 "examples": ["2"],
23 },
24 ),
25 ]
26
27 inputs: Annotated[
28 int,
29 Field(
30 default=None,
31 description="Number of input channels",
32 alias=None,
33 json_schema_extra={
34 "units": None,
35 "required": True,
36 "examples": ["2"],
37 },
38 ),
39 ]
40
41 references: Annotated[
42 int,
43 Field(
44 default=None,
45 description="Number of reference channels",
46 alias=None,
47 json_schema_extra={
48 "units": None,
49 "required": True,
50 "examples": ["2"],
51 },
52 ),
53 ]
54
55 tbw: Annotated[
56 float,
57 Field(
58 default=0.0,
59 description="total bandwidth of window",
60 alias=None,
61 json_schema_extra={
62 "units": None,
63 "required": True,
64 "examples": ["2.0"],
65 },
66 ),
67 ]
68
69 deltat: Annotated[
70 float,
71 Field(
72 default=0.0,
73 description="sampling spacing, if negative sample rate.",
74 alias=None,
75 json_schema_extra={
76 "units": None,
77 "required": True,
78 "examples": ["1.0"],
79 },
80 ),
81 ]
82
83 nfft: Annotated[
84 float,
85 Field(
86 default=0.0,
87 description="length of time window.",
88 alias=None,
89 json_schema_extra={
90 "units": None,
91 "required": True,
92 "examples": ["8192"],
93 },
94 ),
95 ]
96
97 nsctinc: Annotated[
98 float,
99 Field(
100 default=0.0,
101 description="number by which the segment length is divided by to get next window.",
102 alias=None,
103 json_schema_extra={
104 "units": None,
105 "required": True,
106 "examples": ["2.0"],
107 },
108 ),
109 ]
110
111 nsctmax: Annotated[
112 float,
113 Field(
114 default=0.0,
115 description="maximum number of sections",
116 alias=None,
117 json_schema_extra={
118 "units": None,
119 "required": True,
120 "examples": ["2.0"],
121 },
122 ),
123 ]
124
125 nf1: Annotated[
126 int,
127 Field(
128 default=None,
129 description="index of first frequency",
130 alias=None,
131 json_schema_extra={
132 "units": None,
133 "required": True,
134 "examples": ["4"],
135 },
136 ),
137 ]
138
139 nfinc: Annotated[
140 int,
141 Field(
142 default=None,
143 description="increment value of next frequency",
144 alias=None,
145 json_schema_extra={
146 "units": None,
147 "required": True,
148 "examples": ["2"],
149 },
150 ),
151 ]
152
153 nfsect: Annotated[
154 int,
155 Field(
156 default=None,
157 description="total number of frequencies to process.",
158 alias=None,
159 json_schema_extra={
160 "units": None,
161 "required": True,
162 "examples": ["4"],
163 },
164 ),
165 ]
166
167 uin: Annotated[
168 float,
169 Field(
170 default=0.0,
171 description="small leverage point minimum",
172 alias=None,
173 json_schema_extra={
174 "units": None,
175 "required": True,
176 "examples": ["0.00"],
177 },
178 ),
179 ]
180
181 ainlin: Annotated[
182 float,
183 Field(
184 default=0.0,
185 description="bounded influence value",
186 alias=None,
187 json_schema_extra={
188 "units": None,
189 "required": True,
190 "examples": ["-999"],
191 },
192 ),
193 ]
194
195 ainuin: Annotated[
196 float,
197 Field(
198 default=0.0,
199 description="large leverage point minimu",
200 alias=None,
201 json_schema_extra={
202 "units": None,
203 "required": True,
204 "examples": ["0.99"],
205 },
206 ),
207 ]
208
209 c2threshe: Annotated[
210 float,
211 Field(
212 default=0.0,
213 description="coherencey threshold for electric channels",
214 alias=None,
215 json_schema_extra={
216 "units": None,
217 "required": True,
218 "examples": ["0.35"],
219 },
220 ),
221 ]
222
223 nz: Annotated[
224 int,
225 Field(
226 default=None,
227 description="Use threshold for hz channels",
228 alias=None,
229 json_schema_extra={
230 "units": None,
231 "required": True,
232 "examples": ["0"],
233 },
234 ),
235 ]
236
237 c2threshe1: Annotated[
238 float,
239 Field(
240 default=0.0,
241 description="coherencey threshold for hz channels",
242 alias=None,
243 json_schema_extra={
244 "units": None,
245 "required": True,
246 "examples": ["0.35"],
247 },
248 ),
249 ]
250
251 npcs: Annotated[
252 int,
253 Field(
254 default=None,
255 description="number of data segments used",
256 alias=None,
257 json_schema_extra={
258 "units": None,
259 "required": True,
260 "examples": ["2"],
261 },
262 ),
263 ]
264
265 nar: Annotated[
266 int,
267 Field(
268 default=None,
269 description="order of auto-regressive prewhitening filter.",
270 alias=None,
271 json_schema_extra={
272 "units": None,
273 "required": True,
274 "examples": ["5"],
275 },
276 ),
277 ]
278
279 imode: Annotated[
280 int,
281 Field(
282 default=None,
283 description="input data file mode",
284 alias=None,
285 json_schema_extra={
286 "units": None,
287 "required": True,
288 "examples": ["0"],
289 },
290 ),
291 ]
292
293 jmode: Annotated[
294 int,
295 Field(
296 default=None,
297 description="input time mode",
298 alias=None,
299 json_schema_extra={
300 "units": None,
301 "required": True,
302 "examples": ["0"],
303 },
304 ),
305 ]
306
307 ncomp: Annotated[
308 int,
309 Field(
310 default=None,
311 description="number of components",
312 alias=None,
313 json_schema_extra={
314 "units": None,
315 "required": True,
316 "examples": ["5"],
317 },
318 ),
319 ]