Source code for mt_metadata.transfer_functions.io.edi.metadata.hmeasurement

# -*- coding: utf-8 -*-
"""
Created on Sat Dec  4 16:21:06 2021

@author: jpeacock
"""

# =============================================================================
# Imports
# =============================================================================
from mt_metadata.base.helpers import write_lines
from mt_metadata.base import get_schema, Base
from .standards import SCHEMA_FN_PATHS

# =============================================================================
attr_dict = get_schema("hmeasurement", SCHEMA_FN_PATHS)

# ==============================================================================
# magnetic measurements
# ==============================================================================
[docs]class HMeasurement(Base): __doc__ = write_lines(attr_dict) def __init__(self, **kwargs): self._fmt_dict = { "id": "<", "chtype": "<", "x": "<.2f", "y": "<.2f", "z": "<.2f", "azm": "<.2f", "dip": "<.2f", "acqchan": "<", } super().__init__(attr_dict=attr_dict, **kwargs) def __str__(self): return "\n".join( [f"{k} = {v}" for k, v in self.to_dict(single=True).items()] ) def __repr__(self): return self.__str__() @property def channel_number(self): if self.acqchan != None: if not isinstance(self.acqchan, (int, float)): try: return [ int("".join(i for i in self.acqchan if i.isdigit())) ][0] except (IndexError, ValueError): return 0 return self.acqchan return 0
[docs] def write_meas_line(self): """ write string :return: DESCRIPTION :rtype: TYPE """ line = [">hmeas".upper()] for mkey, mfmt in self._fmt_dict.items(): try: line.append(f"{mkey.upper()}={getattr(self, mkey):{mfmt}}") except (ValueError, TypeError): line.append(f"{mkey.upper()}={0.0:{mfmt}}") return f"{' '.join(line)}\n"