mt-metadata 0.3.3__py2.py3-none-any.whl → 0.3.5__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mt-metadata might be problematic. Click here for more details.
- mt_metadata/__init__.py +12 -10
- mt_metadata/base/metadata.py +24 -13
- mt_metadata/data/transfer_functions/tf_zmm.zmm +1 -1
- mt_metadata/timeseries/channel.py +8 -3
- mt_metadata/timeseries/filters/__init__.py +2 -2
- mt_metadata/timeseries/filters/{channel_response_filter.py → channel_response.py} +62 -29
- mt_metadata/timeseries/filters/coefficient_filter.py +1 -3
- mt_metadata/timeseries/filters/filter_base.py +70 -37
- mt_metadata/timeseries/filters/filtered.py +32 -22
- mt_metadata/timeseries/filters/fir_filter.py +10 -11
- mt_metadata/timeseries/filters/frequency_response_table_filter.py +9 -8
- mt_metadata/timeseries/filters/helper_functions.py +112 -3
- mt_metadata/timeseries/filters/pole_zero_filter.py +9 -8
- mt_metadata/timeseries/filters/standards/filter_base.json +2 -2
- mt_metadata/timeseries/filters/time_delay_filter.py +9 -8
- mt_metadata/timeseries/stationxml/fdsn_tools.py +8 -7
- mt_metadata/timeseries/stationxml/xml_channel_mt_channel.py +1 -1
- mt_metadata/timeseries/stationxml/xml_inventory_mt_experiment.py +4 -1
- mt_metadata/timeseries/tools/from_many_mt_files.py +15 -3
- mt_metadata/transfer_functions/__init__.py +1 -1
- mt_metadata/transfer_functions/core.py +89 -49
- mt_metadata/transfer_functions/io/edi/edi.py +9 -5
- mt_metadata/transfer_functions/io/edi/metadata/define_measurement.py +7 -3
- mt_metadata/transfer_functions/io/emtfxml/emtfxml.py +1 -4
- mt_metadata/transfer_functions/io/jfiles/jfile.py +2 -1
- mt_metadata/transfer_functions/io/zfiles/zmm.py +108 -62
- mt_metadata/transfer_functions/io/zonge/zonge.py +2 -2
- mt_metadata/transfer_functions/processing/aurora/band.py +16 -0
- mt_metadata/transfer_functions/processing/aurora/channel_nomenclature.py +34 -31
- mt_metadata/transfer_functions/processing/aurora/processing.py +12 -5
- mt_metadata/transfer_functions/processing/aurora/stations.py +11 -2
- mt_metadata/transfer_functions/processing/fourier_coefficients/decimation.py +1 -1
- mt_metadata/transfer_functions/processing/fourier_coefficients/standards/decimation.json +1 -1
- mt_metadata/transfer_functions/processing/fourier_coefficients/standards/fc_channel.json +23 -1
- mt_metadata/transfer_functions/tf/transfer_function.py +93 -1
- {mt_metadata-0.3.3.dist-info → mt_metadata-0.3.5.dist-info}/METADATA +379 -379
- {mt_metadata-0.3.3.dist-info → mt_metadata-0.3.5.dist-info}/RECORD +41 -41
- {mt_metadata-0.3.3.dist-info → mt_metadata-0.3.5.dist-info}/WHEEL +1 -1
- {mt_metadata-0.3.3.dist-info → mt_metadata-0.3.5.dist-info}/AUTHORS.rst +0 -0
- {mt_metadata-0.3.3.dist-info → mt_metadata-0.3.5.dist-info}/LICENSE +0 -0
- {mt_metadata-0.3.3.dist-info → mt_metadata-0.3.5.dist-info}/top_level.txt +0 -0
|
@@ -19,23 +19,26 @@ from mt_metadata.timeseries.standards import (
|
|
|
19
19
|
)
|
|
20
20
|
from mt_metadata.utils.mttime import MTime
|
|
21
21
|
from . import Person, Software, DataQuality
|
|
22
|
+
from mt_metadata.transfer_functions.processing import aurora
|
|
22
23
|
|
|
23
24
|
# =============================================================================
|
|
24
25
|
attr_dict = get_schema("transfer_function", SCHEMA_FN_PATHS)
|
|
25
26
|
attr_dict.add_dict(get_schema("person", TS_SCHEMA_FN_PATHS), "processed_by")
|
|
26
27
|
attr_dict.add_dict(get_schema("software", TS_SCHEMA_FN_PATHS), "software")
|
|
27
28
|
attr_dict.add_dict(DataQuality()._attr_dict, "data_quality")
|
|
29
|
+
|
|
30
|
+
|
|
28
31
|
# =============================================================================
|
|
29
32
|
class TransferFunction(Base):
|
|
30
33
|
__doc__ = write_lines(attr_dict)
|
|
31
34
|
|
|
32
35
|
def __init__(self, **kwargs):
|
|
33
|
-
|
|
34
36
|
self.processed_by = Person()
|
|
35
37
|
self.software = Software()
|
|
36
38
|
self._processed_date = MTime()
|
|
37
39
|
self.data_quality = DataQuality()
|
|
38
40
|
self.processing_parameters = []
|
|
41
|
+
self.processing_config = None
|
|
39
42
|
|
|
40
43
|
super().__init__(attr_dict=attr_dict)
|
|
41
44
|
|
|
@@ -49,3 +52,92 @@ class TransferFunction(Base):
|
|
|
49
52
|
@processed_date.setter
|
|
50
53
|
def processed_date(self, value):
|
|
51
54
|
self._processed_date.parse(value)
|
|
55
|
+
|
|
56
|
+
@property
|
|
57
|
+
def processing_config(self):
|
|
58
|
+
"""
|
|
59
|
+
|
|
60
|
+
:return: processing configuration
|
|
61
|
+
|
|
62
|
+
"""
|
|
63
|
+
if self._processing_config is None:
|
|
64
|
+
if len(self.processing_parameters) > 0:
|
|
65
|
+
processing_dict = {}
|
|
66
|
+
for item in self.processing_parameters:
|
|
67
|
+
if item.startswith("aurora"):
|
|
68
|
+
default_key = "aurora"
|
|
69
|
+
key, value = item.split("=")
|
|
70
|
+
key = key.replace(f"{default_key}.", "")
|
|
71
|
+
processing_dict[key] = value
|
|
72
|
+
self._processing_config = aurora.Processing()
|
|
73
|
+
self._processing_config.from_dict(
|
|
74
|
+
{"processing": processing_dict}
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
return self._processing_config
|
|
78
|
+
|
|
79
|
+
def _dict_to_params(self, object_dict, base_key):
|
|
80
|
+
"""
|
|
81
|
+
dictionary to parameters
|
|
82
|
+
|
|
83
|
+
key_base.key = value
|
|
84
|
+
|
|
85
|
+
:param object_dict: DESCRIPTION
|
|
86
|
+
:type object_dict: TYPE
|
|
87
|
+
:param key_base: DESCRIPTION
|
|
88
|
+
:type key_base: TYPE
|
|
89
|
+
:return: DESCRIPTION
|
|
90
|
+
:rtype: TYPE
|
|
91
|
+
|
|
92
|
+
"""
|
|
93
|
+
|
|
94
|
+
for key, value in object_dict.items():
|
|
95
|
+
if isinstance(value, list):
|
|
96
|
+
if len(value) > 0:
|
|
97
|
+
if isinstance(value[0], dict):
|
|
98
|
+
for item in value:
|
|
99
|
+
if len(item.keys()) == 1:
|
|
100
|
+
item_key = list(item.keys())[0]
|
|
101
|
+
self._dict_to_params(
|
|
102
|
+
item[item_key],
|
|
103
|
+
f"{base_key}.{key}.{item_key}",
|
|
104
|
+
)
|
|
105
|
+
else:
|
|
106
|
+
self._dict_to_params(item, f"{base_key}.{key}")
|
|
107
|
+
else:
|
|
108
|
+
self.processing_parameters.append(
|
|
109
|
+
f"{base_key}.{key}={value}"
|
|
110
|
+
)
|
|
111
|
+
else:
|
|
112
|
+
self.processing_parameters.append(
|
|
113
|
+
f"{base_key}.{key}={value}"
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
elif isinstance(value, dict):
|
|
117
|
+
self._dict_to_params(value, f"{base_key}.{key}")
|
|
118
|
+
else:
|
|
119
|
+
self.processing_parameters.append(f"{base_key}.{key}={value}")
|
|
120
|
+
|
|
121
|
+
@processing_config.setter
|
|
122
|
+
def processing_config(self, processing_config):
|
|
123
|
+
"""
|
|
124
|
+
set processing config, if a Base object, processing parameters are
|
|
125
|
+
filled.
|
|
126
|
+
|
|
127
|
+
To add more processing schemes need to create a Processing object for
|
|
128
|
+
that specific program and then add in
|
|
129
|
+
|
|
130
|
+
:param processing_config: DESCRIPTION
|
|
131
|
+
:type processing_config: TYPE
|
|
132
|
+
:return: DESCRIPTION
|
|
133
|
+
:rtype: TYPE
|
|
134
|
+
|
|
135
|
+
"""
|
|
136
|
+
if processing_config is not None:
|
|
137
|
+
if isinstance(processing_config, aurora.Processing):
|
|
138
|
+
default_key = "aurora"
|
|
139
|
+
processing_dict = processing_config.to_dict(single=True)
|
|
140
|
+
self._dict_to_params(processing_dict, default_key)
|
|
141
|
+
self._processing_config = processing_config
|
|
142
|
+
else:
|
|
143
|
+
self._processing_config = None
|