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)