openlifu.xdc.transducer.TransformedTransducer

class openlifu.xdc.transducer.TransformedTransducer(id: "Annotated[str, OpenLIFUFieldData('Transducer ID', 'Unique identifier for transducer')]" = 'transducer', name: "Annotated[str, OpenLIFUFieldData('Transducer name', 'Human readable name for transducer')]" = '', elements: "Annotated[List[Element], OpenLIFUFieldData('Elements', 'Collection of transducer Elements')]" = <factory>, frequency: "Annotated[float, OpenLIFUFieldData('Frequency (Hz)', 'Nominal array frequency (Hz)')]" = 400600.0, units: "Annotated[str, OpenLIFUFieldData('Units', 'Native units of transducer local coordinate space')]" = 'm', attrs: "Annotated[Dict[str, Any], OpenLIFUFieldData('Attributes', 'Additional transducer attributes')]" = <factory>, registration_surface_filename: "Annotated[str | None, OpenLIFUFieldData('Registration surface filename', 'Relative path to an open surface of the transducer to be used for registration')]" = None, transducer_body_filename: "Annotated[str | None, OpenLIFUFieldData('Transducer body filename', 'Relative path to the closed surface mesh for visualizing the transducer body')]" = None, standoff_transform: 'Annotated[np.ndarray, OpenLIFUFieldData(\'Standoff transform\', \'Affine transform representing the way in which the standoff for this transducer displaces the transducer.\\n\\nA "standoff transform" applies a displacement in transducer space that moves a transducer to where it would\\nbe situated with the standoff in place. The idea is that if you start with a transform that places a transducer\\ndirectly against skin, then pre-composing that transform by a "standoff transform" serves to nudge the transducer\\nsuch that there is space for the standoff to be between it and the skin.\\n\\nSee also `openlifu.geo.create_standoff_transform`.\\n\\nThe units of this transform are assumed to be the native units of the transducer, the `Transducer.units` field.\')]' = <factory>, sensitivity: "Annotated[float | None, OpenLIFUFieldData('Sensitivity', 'Sensitivity of the element (Pa/V)')]" = None, crosstalk_frac: "Annotated[float, OpenLIFUFieldData('Crosstalk fraction', 'Fraction of the signal that leaks into other elements due to crosstalk')]" = 0.0, crosstalk_dist: "Annotated[float, OpenLIFUFieldData('Crosstalk distance', 'Distance within which elements experience crosstalk')]" = 0.0, impulse_response: "Annotated[np.ndarray | None, OpenLIFUFieldData('Impulse response', 'Impulse response of the element')]" = None, impulse_dt: "Annotated[float | None, OpenLIFUFieldData('Impulse response timestep', 'Impulse response timestep')]" = None, module_invert: "Annotated[List[bool], OpenLIFUFieldData('Invert polarity', 'Whether to invert the polarity of the transducer output, per module')]" = <factory>, transform: 'np.ndarray' = <factory>)[source]

Bases: Transducer