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.

Files changed (41) hide show
  1. mt_metadata/__init__.py +12 -10
  2. mt_metadata/base/metadata.py +24 -13
  3. mt_metadata/data/transfer_functions/tf_zmm.zmm +1 -1
  4. mt_metadata/timeseries/channel.py +8 -3
  5. mt_metadata/timeseries/filters/__init__.py +2 -2
  6. mt_metadata/timeseries/filters/{channel_response_filter.py → channel_response.py} +62 -29
  7. mt_metadata/timeseries/filters/coefficient_filter.py +1 -3
  8. mt_metadata/timeseries/filters/filter_base.py +70 -37
  9. mt_metadata/timeseries/filters/filtered.py +32 -22
  10. mt_metadata/timeseries/filters/fir_filter.py +10 -11
  11. mt_metadata/timeseries/filters/frequency_response_table_filter.py +9 -8
  12. mt_metadata/timeseries/filters/helper_functions.py +112 -3
  13. mt_metadata/timeseries/filters/pole_zero_filter.py +9 -8
  14. mt_metadata/timeseries/filters/standards/filter_base.json +2 -2
  15. mt_metadata/timeseries/filters/time_delay_filter.py +9 -8
  16. mt_metadata/timeseries/stationxml/fdsn_tools.py +8 -7
  17. mt_metadata/timeseries/stationxml/xml_channel_mt_channel.py +1 -1
  18. mt_metadata/timeseries/stationxml/xml_inventory_mt_experiment.py +4 -1
  19. mt_metadata/timeseries/tools/from_many_mt_files.py +15 -3
  20. mt_metadata/transfer_functions/__init__.py +1 -1
  21. mt_metadata/transfer_functions/core.py +89 -49
  22. mt_metadata/transfer_functions/io/edi/edi.py +9 -5
  23. mt_metadata/transfer_functions/io/edi/metadata/define_measurement.py +7 -3
  24. mt_metadata/transfer_functions/io/emtfxml/emtfxml.py +1 -4
  25. mt_metadata/transfer_functions/io/jfiles/jfile.py +2 -1
  26. mt_metadata/transfer_functions/io/zfiles/zmm.py +108 -62
  27. mt_metadata/transfer_functions/io/zonge/zonge.py +2 -2
  28. mt_metadata/transfer_functions/processing/aurora/band.py +16 -0
  29. mt_metadata/transfer_functions/processing/aurora/channel_nomenclature.py +34 -31
  30. mt_metadata/transfer_functions/processing/aurora/processing.py +12 -5
  31. mt_metadata/transfer_functions/processing/aurora/stations.py +11 -2
  32. mt_metadata/transfer_functions/processing/fourier_coefficients/decimation.py +1 -1
  33. mt_metadata/transfer_functions/processing/fourier_coefficients/standards/decimation.json +1 -1
  34. mt_metadata/transfer_functions/processing/fourier_coefficients/standards/fc_channel.json +23 -1
  35. mt_metadata/transfer_functions/tf/transfer_function.py +93 -1
  36. {mt_metadata-0.3.3.dist-info → mt_metadata-0.3.5.dist-info}/METADATA +379 -379
  37. {mt_metadata-0.3.3.dist-info → mt_metadata-0.3.5.dist-info}/RECORD +41 -41
  38. {mt_metadata-0.3.3.dist-info → mt_metadata-0.3.5.dist-info}/WHEEL +1 -1
  39. {mt_metadata-0.3.3.dist-info → mt_metadata-0.3.5.dist-info}/AUTHORS.rst +0 -0
  40. {mt_metadata-0.3.3.dist-info → mt_metadata-0.3.5.dist-info}/LICENSE +0 -0
  41. {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