openlifu.plan.solution_analysis.SolutionAnalysis

class openlifu.plan.solution_analysis.SolutionAnalysis(mainlobe_pnp_MPa: "Annotated[list[float], OpenLIFUFieldData('Mainlobe PNP', 'Peak negative pressure in the mainlobe, in MPa')]" = <factory>, mainlobe_isppa_Wcm2: "Annotated[list[float], OpenLIFUFieldData('Mainlobe ISPPA', 'Spatial peak pulse average intensity in the mainlobe, in W/cm²')]" = <factory>, mainlobe_ispta_mWcm2: "Annotated[list[float], OpenLIFUFieldData('Mainlobe ISPTA', 'Spatial peak time average intensity in the mainlobe, in mW/cm²')]" = <factory>, target_position_lat_mm: "Annotated[list[float], OpenLIFUFieldData('Target position lateral (mm)', 'Lateral position of the target, in mm')]" = <factory>, target_position_ele_mm: "Annotated[list[float], OpenLIFUFieldData('Target position elevation (mm)', 'Elevation position of the target, in mm')]" = <factory>, target_position_ax_mm: "Annotated[list[float], OpenLIFUFieldData('Target position axial (mm)', 'Axial position of the target, in mm')]" = <factory>, focal_centroid_lat_mm: "Annotated[list[float], OpenLIFUFieldData('Focal centroid lateral (mm)', 'Lateral centroid of the focus, in mm')]" = <factory>, focal_centroid_ele_mm: "Annotated[list[float], OpenLIFUFieldData('Focal centroid elevation (mm)', 'Elevation centroid of the focus, in mm')]" = <factory>, focal_centroid_ax_mm: "Annotated[list[float], OpenLIFUFieldData('Focal centroid axial (mm)', 'Axial centroid of the focus, in mm')]" = <factory>, beamwidth_lat_3dB_mm: "Annotated[list[float], OpenLIFUFieldData('3dB lateral beamwidth', 'Lateral beamwidth at -3 dB, in mm')]" = <factory>, beamwidth_ele_3dB_mm: "Annotated[list[float], OpenLIFUFieldData('3dB elevation beamwidth', 'Elevation beamwidth at -3 dB, in mm')]" = <factory>, beamwidth_ax_3dB_mm: "Annotated[list[float], OpenLIFUFieldData('3dB axial beamwidth', 'Axial beamwidth at -3 dB, in mm')]" = <factory>, beamwidth_lat_6dB_mm: "Annotated[list[float], OpenLIFUFieldData('6dB lateral beamwidth', 'Lateral beamwidth at -6 dB, in mm')]" = <factory>, beamwidth_ele_6dB_mm: "Annotated[list[float], OpenLIFUFieldData('6dB elevation beamwidth', 'Elevation beamwidth at -6 dB, in mm')]" = <factory>, beamwidth_ax_6dB_mm: "Annotated[list[float], OpenLIFUFieldData('6dB axial beamwidth', 'Axial beamwidth at -6 dB, in mm')]" = <factory>, sidelobe_pnp_MPa: "Annotated[list[float], OpenLIFUFieldData('Sidelobe PNP', 'Peak negative pressure in the sidelobes, in MPa')]" = <factory>, sidelobe_isppa_Wcm2: "Annotated[list[float], OpenLIFUFieldData('Sidelobe ISPPA', 'Spatial peak pulse average intensity in the sidelobes, in W/cm²')]" = <factory>, sidelobe_to_mainlobe_pressure_ratio: "Annotated[list[float], OpenLIFUFieldData('Sidelobe/Mainlobe Pressure Ratio', 'Ratio of sidelobe peak negative pressure to mainlobe peak negative pressure')]" = <factory>, sidelobe_to_mainlobe_intensity_ratio: "Annotated[list[float], OpenLIFUFieldData('Sidelobe/Mainlobe Intensity Ratio', 'Ratio of sidelobe spatial peak pulse average intensity to mainlobe spatial peak pulse average intensity')]" = <factory>, global_pnp_MPa: "Annotated[list[float], OpenLIFUFieldData('Global PNP', 'Maximum peak negative pressure in the entire field, in MPa')]" = <factory>, global_isppa_Wcm2: "Annotated[list[float], OpenLIFUFieldData('Global ISPPA', 'Maximum spatial peak pulse average intensity in the entire field, in W/cm²')]" = <factory>, global_ispta_mWcm2: "Annotated[float | None, OpenLIFUFieldData('Global ISPTA (mW/cm²)', 'Global Intensity at Spatial-Peak, Time-Average (I_SPTA) (mW/cm²)')]" = None, MI: "Annotated[float | None, OpenLIFUFieldData('Mechanical index (MI)', 'Mechanical index (MI)')]" = None, TIC: "Annotated[float | None, OpenLIFUFieldData('Thermal index (TIC)', 'Thermal index in cranium (TIC)')]" = None, voltage_V: "Annotated[float | None, OpenLIFUFieldData('Voltage (V)', 'Voltage applied to the transducer (V)')]" = None, p0_MPa: "Annotated[list[float], OpenLIFUFieldData('Emitted pressure (MPa)', 'Initial pressure values in the field, in MPa')]" = <factory>, focal_gain: "Annotated[list[float], OpenLIFUFieldData('Focal gain', 'Ratio of mainlobe peak pressure to emitted pressure')]" = <factory>, power_W: "Annotated[float | None, OpenLIFUFieldData('Emitted Power (W)', 'Emitted power from the transducer face (W)')]" = None, duty_cycle_pulse_train_pct: "Annotated[float | None, OpenLIFUFieldData('Duty cycle pulse train', 'Duty cycle within a pulse train (0-1)')]" = None, duty_cycle_sequence_pct: "Annotated[float | None, OpenLIFUFieldData('Duty cycle sequence', 'Duty cycle of the overall sequence (0-1)')]" = None, sequence_duration_s: "Annotated[float | None, OpenLIFUFieldData('Sequence duration (s)', 'Total duration of the sequence (s)')]" = None, estimated_tx_temperature_rise_C: "Annotated[float | None, OpenLIFUFieldData('Estimated TX temperature rise (°C)', 'Estimated temperature rise (assume 30°C baseline)')]" = None, param_constraints: "Annotated[Dict[str, ParameterConstraint], OpenLIFUFieldData('Parameter constraints', None)]" = <factory>)[source]

Bases: DictMixin

MI: Annotated[float | None, OpenLIFUFieldData(name='Mechanical index (MI)', description='Mechanical index (MI)')] = None

Mechanical index (MI)

TIC: Annotated[float | None, OpenLIFUFieldData(name='Thermal index (TIC)', description='Thermal index in cranium (TIC)')] = None

Thermal index in cranium (TIC)

beamwidth_ax_3dB_mm: Annotated[list[float], OpenLIFUFieldData(name='3dB axial beamwidth', description='Axial beamwidth at -3 dB, in mm')]

Axial beamwidth at -3 dB, in mm

beamwidth_ax_6dB_mm: Annotated[list[float], OpenLIFUFieldData(name='6dB axial beamwidth', description='Axial beamwidth at -6 dB, in mm')]

Axial beamwidth at -6 dB, in mm

beamwidth_ele_3dB_mm: Annotated[list[float], OpenLIFUFieldData(name='3dB elevation beamwidth', description='Elevation beamwidth at -3 dB, in mm')]

Elevation beamwidth at -3 dB, in mm

beamwidth_ele_6dB_mm: Annotated[list[float], OpenLIFUFieldData(name='6dB elevation beamwidth', description='Elevation beamwidth at -6 dB, in mm')]

Elevation beamwidth at -6 dB, in mm

beamwidth_lat_3dB_mm: Annotated[list[float], OpenLIFUFieldData(name='3dB lateral beamwidth', description='Lateral beamwidth at -3 dB, in mm')]

Lateral beamwidth at -3 dB, in mm

beamwidth_lat_6dB_mm: Annotated[list[float], OpenLIFUFieldData(name='6dB lateral beamwidth', description='Lateral beamwidth at -6 dB, in mm')]

Lateral beamwidth at -6 dB, in mm

duty_cycle_pulse_train_pct: Annotated[float | None, OpenLIFUFieldData(name='Duty cycle pulse train', description='Duty cycle within a pulse train (0-1)')] = None

Duty cycle within a pulse train (0-1)

duty_cycle_sequence_pct: Annotated[float | None, OpenLIFUFieldData(name='Duty cycle sequence', description='Duty cycle of the overall sequence (0-1)')] = None

Duty cycle of the overall sequence (0-1)

estimated_tx_temperature_rise_C: Annotated[float | None, OpenLIFUFieldData(name='Estimated TX temperature rise (°C)', description='Estimated temperature rise (assume 30°C baseline)')] = None

Estimated temperature rise in Celsius (assume 30°C baseline)

focal_centroid_ax_mm: Annotated[list[float], OpenLIFUFieldData(name='Focal centroid axial (mm)', description='Axial centroid of the focus, in mm')]

Axial centroid of the focus, in mm

focal_centroid_ele_mm: Annotated[list[float], OpenLIFUFieldData(name='Focal centroid elevation (mm)', description='Elevation centroid of the focus, in mm')]

Elevation centroid of the focus, in mm

focal_centroid_lat_mm: Annotated[list[float], OpenLIFUFieldData(name='Focal centroid lateral (mm)', description='Lateral centroid of the focus, in mm')]

Lateral centroid of the focus, in mm

focal_gain: Annotated[list[float], OpenLIFUFieldData(name='Focal gain', description='Ratio of mainlobe peak pressure to emitted pressure')]

Ratio of mainlobe peak pressure to emitted pressure

classmethod from_dict(parameter_dict: Dict[str, Any]) SolutionAnalysis[source]

Create an object from a dictionary

Parameters:

parameter_dict – dictionary of parameters to define the object

Returns: new object

static from_json(json_string: str) SolutionAnalysis[source]

Load a SolutionAnalysis from a json string

global_isppa_Wcm2: Annotated[list[float], OpenLIFUFieldData(name='Global ISPPA', description='Maximum spatial peak pulse average intensity in the entire field, in W/cm²')]

Maximum spatial peak pulse average intensity in the entire field, in W/cm²

global_ispta_mWcm2: Annotated[float | None, OpenLIFUFieldData(name='Global ISPTA (mW/cm²)', description='Global Intensity at Spatial-Peak, Time-Average (I_SPTA) (mW/cm²)')] = None

Global Intensity at Spatial-Peak, Time-Average (I_SPTA) (mW/cm²)

global_pnp_MPa: Annotated[list[float], OpenLIFUFieldData(name='Global PNP', description='Maximum peak negative pressure in the entire field, in MPa')]

Maximum peak negative pressure in the entire field, in MPa

mainlobe_isppa_Wcm2: Annotated[list[float], OpenLIFUFieldData(name='Mainlobe ISPPA', description='Spatial peak pulse average intensity in the mainlobe, in W/cm²')]

Spatial peak pulse average intensity in the mainlobe, in W/cm²

mainlobe_ispta_mWcm2: Annotated[list[float], OpenLIFUFieldData(name='Mainlobe ISPTA', description='Spatial peak time average intensity in the mainlobe, in mW/cm²')]

Spatial peak time average intensity in the mainlobe, in mW/cm²

mainlobe_pnp_MPa: Annotated[list[float], OpenLIFUFieldData(name='Mainlobe PNP', description='Peak negative pressure in the mainlobe, in MPa')]

Peak negative pressure in the mainlobe, in MPa

p0_MPa: Annotated[list[float], OpenLIFUFieldData(name='Emitted pressure (MPa)', description='Initial pressure values in the field, in MPa')]

Initial pressure values in the field (MPa)

param_constraints: Annotated[Dict[str, ParameterConstraint], OpenLIFUFieldData(name='Parameter constraints', description=None)]

Add description

Type:

TODO

power_W: Annotated[float | None, OpenLIFUFieldData(name='Emitted Power (W)', description='Emitted power from the transducer face (W)')] = None

Emitted power from the transducer face (W)

sequence_duration_s: Annotated[float | None, OpenLIFUFieldData(name='Sequence duration (s)', description='Total duration of the sequence (s)')] = None

Total duration of the sequence (s)

sidelobe_isppa_Wcm2: Annotated[list[float], OpenLIFUFieldData(name='Sidelobe ISPPA', description='Spatial peak pulse average intensity in the sidelobes, in W/cm²')]

Spatial peak pulse average intensity in the sidelobes, in W/cm²

sidelobe_pnp_MPa: Annotated[list[float], OpenLIFUFieldData(name='Sidelobe PNP', description='Peak negative pressure in the sidelobes, in MPa')]

Peak negative pressure in the sidelobes, in MPa

sidelobe_to_mainlobe_intensity_ratio: Annotated[list[float], OpenLIFUFieldData(name='Sidelobe/Mainlobe Intensity Ratio', description='Ratio of sidelobe spatial peak pulse average intensity to mainlobe spatial peak pulse average intensity')]

Ratio of sidelobe spatial peak pulse average intensity to mainlobe spatial peak pulse average intensity

sidelobe_to_mainlobe_pressure_ratio: Annotated[list[float], OpenLIFUFieldData(name='Sidelobe/Mainlobe Pressure Ratio', description='Ratio of sidelobe peak negative pressure to mainlobe peak negative pressure')]

Ratio of sidelobe peak negative pressure to mainlobe peak negative pressure

target_position_ax_mm: Annotated[list[float], OpenLIFUFieldData(name='Target position axial (mm)', description='Axial position of the target, in mm')]

Axial position of the target, in mm

target_position_ele_mm: Annotated[list[float], OpenLIFUFieldData(name='Target position elevation (mm)', description='Elevation position of the target, in mm')]

Elevation position of the target, in mm

target_position_lat_mm: Annotated[list[float], OpenLIFUFieldData(name='Target position lateral (mm)', description='Lateral position of the target, in mm')]

Lateral position of the target, in mm

to_json(compact: bool) str[source]

Serialize a SolutionAnalysis to a json string

Parameters:

compact – if enabled then the string is compact (not pretty). Disable for pretty.

Returns: A json string representing the complete SolutionAnalysis object.

voltage_V: Annotated[float | None, OpenLIFUFieldData(name='Voltage (V)', description='Voltage applied to the transducer (V)')] = None

Voltage applied to the transducer (V)