Class TradeoffExplorationContext
Context for performing multi-criteria optimization (MCO) to explore different trade-offs.
Inheritance
Inherited Members
Namespace: VMS.TPS.Common.Model.API
Assembly: VMS.TPS.Common.Model.API.dll
Syntax
public class TradeoffExplorationContext
Remarks
To be able to get the TradeoffExplorationContext class from ExternalPlanSetup, the plan needs to have the optimization objectives set.
Examples
The basic workflow is the following:
Properties
CanCreatePlanCollection
True if a plan collection can be created.
Declaration
public bool CanCreatePlanCollection { get; }
Property Value
Type | Description |
---|---|
System.Boolean |
CanLoadSavedPlanCollection
True if a previously saved plan collection can be loaded.
Declaration
public bool CanLoadSavedPlanCollection { get; }
Property Value
Type | Description |
---|---|
System.Boolean |
CanUseHybridOptimizationInPlanGeneration
True if VMAT-IMRT hybrid optimization can be used in CreatePlanCollection(Boolean, TradeoffPlanGenerationIntermediateDoseMode, Boolean).
Declaration
public bool CanUseHybridOptimizationInPlanGeneration { get; }
Property Value
Type | Description |
---|---|
System.Boolean |
CanUsePlanDoseAsIntermediateDose
True if plan dose can be used as intermediate dose in CreatePlanCollection(Boolean, TradeoffPlanGenerationIntermediateDoseMode, Boolean).
Declaration
public bool CanUsePlanDoseAsIntermediateDose { get; }
Property Value
Type | Description |
---|---|
System.Boolean |
CurrentDose
Dose at the current location on the Pareto surface (the current trade-offs). Returns null if no valid dose exists.
Declaration
public Dose CurrentDose { get; }
Property Value
Type | Description |
---|---|
Dose |
HasPlanCollection
True if the trade-off exploration context has a plan collection, so that the trade-offs can be explored using the CreatePlanCollection(Boolean, TradeoffPlanGenerationIntermediateDoseMode, Boolean) method. This property is set to true when a plan collection is loaded successfully using LoadSavedPlanCollection() or created using CreatePlanCollection(Boolean, TradeoffPlanGenerationIntermediateDoseMode, Boolean).
Declaration
public bool HasPlanCollection { get; }
Property Value
Type | Description |
---|---|
System.Boolean |
TargetStructures
Target structures in trade-off exploration. These structures cannot be selected for trade-off exploration at the structure level. Homogeneity indices only apply to the target structures.
Declaration
public IReadOnlyList<Structure> TargetStructures { get; }
Property Value
Type | Description |
---|---|
System.Collections.Generic.IReadOnlyList<Structure> | IReadOnlyList<Structure> |
TradeoffObjectiveCandidates
Available optimization objectives that can be selected for trade-off exploration in multi-criteria optimization.
Declaration
public IReadOnlyList<OptimizationObjective> TradeoffObjectiveCandidates { get; }
Property Value
Type | Description |
---|---|
System.Collections.Generic.IReadOnlyList<OptimizationObjective> | IReadOnlyList<OptimizationObjective> |
TradeoffObjectives
Trade-off objectives. If HasPlanCollection is false, System.Double.NaN is returned as the cost.
Declaration
public IReadOnlyCollection<TradeoffObjective> TradeoffObjectives { get; }
Property Value
Type | Description |
---|---|
System.Collections.Generic.IReadOnlyCollection<TradeoffObjective> | IReadOnlyList<TradeoffObjective> |
TradeoffStructureCandidates
Available structures that can be selected for trade-off exploration in multi-criteria optimization. Only organs at risk can be used for trade-off exploration at the structure level.
Declaration
public IReadOnlyList<Structure> TradeoffStructureCandidates { get; }
Property Value
Type | Description |
---|---|
System.Collections.Generic.IReadOnlyList<Structure> | IReadOnlyList<Structure> |
Methods
AddTargetHomogeneityObjective(Structure)
[Availability of this method depends on your Eclipse Scripting API license] Creates a homogeneity objective for a given target structure to be used as a trade-off objective. Only target structures with an upper dose objective with larger than zero priority may have a homogeneity objective. Adding a new trade-off objective sets HasPlanCollection to false, as it invalidates the current plan collection.
Declaration
public bool AddTargetHomogeneityObjective(Structure targetStructure)
Parameters
Type | Name | Description |
---|---|---|
Structure | targetStructure | Structure for which the homogeneity objective is created. |
Returns
Type | Description |
---|---|
System.Boolean | True if the structure was a target and the objective was successfully created. |
AddTradeoffObjective(OptimizationObjective)
[Availability of this method depends on your Eclipse Scripting API license] Creates a trade-off objective from an individual optimization objective. Adding a new trade-off objective sets HasPlanCollection to false, as it invalidates the current plan collection.
Declaration
public bool AddTradeoffObjective(OptimizationObjective objective)
Parameters
Type | Name | Description |
---|---|---|
OptimizationObjective | objective | Objective to be added as a trade-off objective. |
Returns
Type | Description |
---|---|
System.Boolean | True if the objective was successfully added. |
AddTradeoffObjective(Structure)
[Availability of this method depends on your Eclipse Scripting API license] Creates a trade-off objective from all objectives associated with the given structure. Targets cannot be used in trade-off exploration at the structure level. Structures that do not have objectives or are not included in the plan cannot be added as trade-off objectives. Adding a new trade-off objective sets HasPlanCollection to false, as it invalidates the current plan collection.
Declaration
public bool AddTradeoffObjective(Structure structure)
Parameters
Type | Name | Description |
---|---|---|
Structure | structure | Structure to be added as a trade-off objective. |
Returns
Type | Description |
---|---|
System.Boolean | True if the structure was successfully added as a trade-off objective. |
ApplyTradeoffExplorationResult()
[Availability of this method depends on your Eclipse Scripting API license] Saves the trade-off exploration result. Also applies the trade-off exploration result to the plan setup for IMRT plans. For VMAT plans, to apply the results to the plan setup, an additional call to the CreateDeliverableVmatPlan(Boolean) method is needed.
Declaration
public void ApplyTradeoffExplorationResult()
CreateDeliverableVmatPlan(Boolean)
[Availability of this method depends on your Eclipse Scripting API license] Applies the trade-off exploration result to the plan setup for VMAT plans.
Declaration
public bool CreateDeliverableVmatPlan(bool useIntermediateDose)
Parameters
Type | Name | Description |
---|---|---|
System.Boolean | useIntermediateDose | True if intermediate dose is used when creating the VMAT plan. |
Returns
Type | Description |
---|---|
System.Boolean | True if a deliverable VMAT plan was successfully created. |
CreatePlanCollection(Boolean, TradeoffPlanGenerationIntermediateDoseMode, Boolean)
[Availability of this method depends on your Eclipse Scripting API license] Creates a plan collection for trade-off exploration and sets HasPlanCollection to true. Note: This operation is a long-running task because it involves optimizing a set of Pareto plans.
Declaration
public bool CreatePlanCollection(bool continueOptimization, TradeoffPlanGenerationIntermediateDoseMode intermediateDoseMode, bool useHybridOptimizationForVmat = false)
Parameters
Type | Name | Description |
---|---|---|
System.Boolean | continueOptimization | True if the starting point for the trade-off exploration should be created by continuing optimization for the existing plan. Otherwise, the starting point is created by starting optimization from the beginning. |
TradeoffPlanGenerationIntermediateDoseMode | intermediateDoseMode | Specifies which intermediate dose mode is used for plan generation. |
System.Boolean | useHybridOptimizationForVmat | True if VMAT-IMRT hybrid optimization should be used in VMAT plan generation. Otherwise native VMAT optimization is used. |
Returns
Type | Description |
---|---|
System.Boolean | True if plan collection was successfully created. |
GetObjectiveCost(TradeoffObjective)
Gets the current relative cost of a trade-off objective. The costs are normalized to the range [0,1]. If HasPlanCollection is false, System.Double.NaN is returned as the cost.
Declaration
public double GetObjectiveCost(TradeoffObjective objective)
Parameters
Type | Name | Description |
---|---|---|
TradeoffObjective | objective | Trade-off objective for which to get the cost. |
Returns
Type | Description |
---|---|
System.Double | Current relative cost [0,1] of the given trade-off objective. |
GetObjectiveLowerLimit(TradeoffObjective)
Gets the lower limit value for a trade-off objective. It is not possible to set the cost value of the objective below this value. The range of the objective may be limited because one or more objective has a restrictor (SetObjectiveUpperRestrictor(TradeoffObjective, Double)) set. If HasPlanCollection is false, System.Double.NaN is returned as the cost.
Declaration
public double GetObjectiveLowerLimit(TradeoffObjective objective)
Parameters
Type | Name | Description |
---|---|---|
TradeoffObjective | objective | Trade-off objective for which to get the lower limit. |
Returns
Type | Description |
---|---|
System.Double | Lower limit [0,1] of the given trade-off objective |
GetObjectiveUpperLimit(TradeoffObjective)
Gets the upper limit value for a trade-off objective. It is not possible to set the cost value of the objective above this value. The range of the objective may be limited because one or more objective has a restrictor (SetObjectiveUpperRestrictor(TradeoffObjective, Double)) set. If HasPlanCollection is false, System.Double.NaN is returned as the cost.
Declaration
public double GetObjectiveUpperLimit(TradeoffObjective objective)
Parameters
Type | Name | Description |
---|---|---|
TradeoffObjective | objective | Trade-off objective for which to get the upper limit. |
Returns
Type | Description |
---|---|
System.Double | Upper limit [0,1] of the given trade-off objective. |
GetObjectiveUpperRestrictor(TradeoffObjective)
Gets the current upper limit of a trade-off objective. The limits are normalized to the range [0,1]. If HasPlanCollection is false, System.Double.NaN is returned as the cost.
Declaration
public double GetObjectiveUpperRestrictor(TradeoffObjective objective)
Parameters
Type | Name | Description |
---|---|---|
TradeoffObjective | objective | Trade-off objective to get the upper limit. |
Returns
Type | Description |
---|---|
System.Double | Current upper limit [0,1] of the given trade-off objective. |
GetStructureDvh(Structure)
Calculates a DVH for a given structure based on the dose at the current location on the Pareto surface (current trade-offs). If HasPlanCollection is false, the call to GetStructureDvh(Structure) returns null.
Declaration
public DVHData GetStructureDvh(Structure structure)
Parameters
Type | Name | Description |
---|---|---|
Structure | structure | Structure for which the DVH is calculated. |
Returns
Type | Description |
---|---|
DVHData | DVHData if the current location on the Pareto surface is valid. Otherwise, null. |
LoadSavedPlanCollection()
Loads a previously saved plan collection and sets HasPlanCollection to true.
Declaration
public bool LoadSavedPlanCollection()
Returns
Type | Description |
---|---|
System.Boolean | True if the plan collection was successfully loaded from the database. |
RemoveAllTradeoffObjectives()
[Availability of this method depends on your Eclipse Scripting API license] Removes all the trade-off objectives of the current plan collection. Removing all trade-off objectives invalidates the current plan collection and sets HasPlanCollection to false.
Declaration
public void RemoveAllTradeoffObjectives()
RemovePlanCollection()
[Availability of this method depends on your Eclipse Scripting API license] Removes the plan collection from the plan setup and database. Removing the plan collection sets HasPlanCollection to false.
Declaration
public void RemovePlanCollection()
RemoveTargetHomogeneityObjective(Structure)
[Availability of this method depends on your Eclipse Scripting API license] Removes the homogeneity trade-off objective of the given target structure. Removing the trade-off objective invalidates the current plan collection and sets HasPlanCollection to false.
Declaration
public bool RemoveTargetHomogeneityObjective(Structure targetStructure)
Parameters
Type | Name | Description |
---|---|---|
Structure | targetStructure | Target structure for which the homogeneity objective is removed. |
Returns
Type | Description |
---|---|
System.Boolean | True if the objective was successfully removed. |
RemoveTradeoffObjective(Structure)
[Availability of this method depends on your Eclipse Scripting API license] Removes the trade-off objective of the given structure. Removing the trade-off objective invalidates the current plan collection and sets HasPlanCollection to false.
Declaration
public bool RemoveTradeoffObjective(Structure structure)
Parameters
Type | Name | Description |
---|---|---|
Structure | structure | Structure for which the trade-off objective is removed. |
Returns
Type | Description |
---|---|
System.Boolean | True if the trade-off objective for the structure was successfully removed. |
RemoveTradeoffObjective(TradeoffObjective)
[Availability of this method depends on your Eclipse Scripting API license] Removes the given trade-off objective. Removing the trade-off objective invalidates the current plan collection and sets HasPlanCollection to false.
Declaration
public bool RemoveTradeoffObjective(TradeoffObjective tradeoffObjective)
Parameters
Type | Name | Description |
---|---|---|
TradeoffObjective | tradeoffObjective | Trade-off objective to be removed. |
Returns
Type | Description |
---|---|
System.Boolean | True if the objective was successfully removed. |
ResetToBalancedPlan()
[Availability of this method depends on your Eclipse Scripting API license] Resets the costs of a trade-off objective to correspond to the balanced plan. If HasPlanCollection is false, the call to ResetToBalancedPlan() is ignored.
Declaration
public void ResetToBalancedPlan()
SetObjectiveCost(TradeoffObjective, Double)
[Availability of this method depends on your Eclipse Scripting API license] A single trade-off objective specifies a one dimensional subspace of the Pareto surface. By adjusting the relative cost of the objective, it is possible to move in this one dimensional subspace. The difference between the current relative cost and the new relative cost specifies the direction of the movement. If the difference is negative, the movement is towards the extreme case where the given trade-off objective is emphasized at the cost of all other objectives. If the difference is positive, the movement is away from the extreme case. If HasPlanCollection is false, the call to SetObjectiveCost(TradeoffObjective, Double) is ignored.
Declaration
public void SetObjectiveCost(TradeoffObjective tradeoffObjective, double cost)
Parameters
Type | Name | Description |
---|---|---|
TradeoffObjective | tradeoffObjective | Trade-off objective that specifies the one dimensional subspace. |
System.Double | cost | The relative cost is defined as an interval [0,1]. A smaller value gives more emphasis to the given trade-off objective. |
SetObjectiveUpperRestrictor(TradeoffObjective, Double)
Sets an upper limit for a trade-off objective. The limits are normalized to the range [0,1]. If HasPlanCollection is false, the call to SetObjectiveUpperRestrictor(TradeoffObjective, Double) is ignored.
Declaration
public void SetObjectiveUpperRestrictor(TradeoffObjective tradeoffObjective, double restrictorValue)
Parameters
Type | Name | Description |
---|---|---|
TradeoffObjective | tradeoffObjective | Optimization objective selected for trade-off exploration. This trade-off objective specifies the one dimensional subspace of the Pareto surface. |
System.Double | restrictorValue | New upper limit [0,1] of the given trade-off objective. |