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 pandas as pd
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)
[docs] @abstractmethod def to_table(self) -> pd.DataFrame: """ Get a table of the apodization method parameters :returns: Pandas DataFrame of the apodization method parameters """ pass