Source code for openlifu.bf.apod_methods.apodmethod
from __future__ import annotations
from abc import ABC, abstractmethod
from dataclasses import dataclass
from typing import Any
import numpy as np
import xarray as xa
from openlifu.bf import apod_methods
from openlifu.geo import Point
from openlifu.xdc import Transducer
[docs]
@dataclass
class ApodizationMethod(ABC):
@abstractmethod
def calc_apodization(self, arr: Transducer, target: Point, params: xa.Dataset, transform:np.ndarray | None=None) -> Any:
pass
def to_dict(self):
d = self.__dict__.copy()
d['class'] = self.__class__.__name__
return d
@staticmethod
def from_dict(d):
d = d.copy()
short_classname = d.pop("class")
module_dict = apod_methods.__dict__
class_constructor = module_dict[short_classname]
return class_constructor(**d)