Source code for gempy_engine.core.data.geophysics_input
import warnings
from dataclasses import dataclass
from typing import Annotated, Optional
import numpy as np
from .encoders.converters import numpy_array_short_validator
@dataclass
class GravityInput:
tz: Annotated[np.ndarray, numpy_array_short_validator]
densities: Annotated[np.ndarray, numpy_array_short_validator]
@dataclass
class MagneticsInput:
mag_kernel: np.ndarray
susceptibilities: np.ndarray
igrf_params: dict
[docs]
@dataclass
class GeophysicsInput:
gravity_input: Optional[GravityInput] = None
magnetics_input: Optional[MagneticsInput] = None
[docs]
def __init__(self, gravity_input: Optional[GravityInput] = None,
magnetics_input: Optional[MagneticsInput] = None,
tz: Optional[Annotated[np.ndarray, numpy_array_short_validator]] = None,
densities: Optional[Annotated[np.ndarray, numpy_array_short_validator]] = None):
if gravity_input is not None:
self.gravity_input = gravity_input
else:
warnings.warn("Using deprecated GeophysicsInput constructor. Use GravityInput instead.", DeprecationWarning)
self.gravity_input = GravityInput(tz=tz, densities=densities)
if magnetics_input is not None:
self.magnetics_input = magnetics_input
@property
def tz(self) -> Optional[Annotated[np.ndarray, numpy_array_short_validator]]:
if self.gravity_input is not None:
return self.gravity_input.tz
return None
@tz.setter
def tz(self, value: Optional[Annotated[np.ndarray, numpy_array_short_validator]]):
if value is not None:
if self.gravity_input is None:
self.gravity_input = GravityInput(tz=value, densities=None)
else:
self.gravity_input.tz = value
@property
def densities(self) -> Optional[Annotated[np.ndarray, numpy_array_short_validator]]:
if self.gravity_input is not None:
return self.gravity_input.densities
return None
@densities.setter
def densities(self, value: Optional[Annotated[np.ndarray, numpy_array_short_validator]]):
if value is not None:
if self.gravity_input is None:
self.gravity_input = GravityInput(tz=None, densities=value)
else:
self.gravity_input.densities = value