Source code for pyRadPlan.dose._calc_dose

from typing import Union

import numpy as np

from pyRadPlan.stf import validate_stf, SteeringInformation
from pyRadPlan.ct import validate_ct, CT
from pyRadPlan.cst import validate_cst, StructureSet
from pyRadPlan.plan import validate_pln, Plan
from pyRadPlan.dij import Dij

from .engines import get_engine


[docs] def calc_dose_influence( ct: Union[CT, dict], cst: Union[StructureSet, dict], stf: Union[SteeringInformation, dict], pln: Union[Plan, dict], ) -> Dij: """ Calculate the dose influence matrix. Parameters ---------- ct : CT A CT object. cst : CST A CST object. stf : STF A STF object. Returns ------- Dij A Dij object. """ ct = validate_ct(ct) cst = validate_cst(cst, ct=ct) stf = validate_stf(stf) pln = validate_pln(pln) engine = get_engine(pln) dij = engine.calc_dose_influence(ct, cst, stf) return dij
[docs] def calc_dose_forward( ct: Union[CT, dict], cst: Union[StructureSet, dict], stf: Union[SteeringInformation, dict], pln: Union[Plan, dict], weights: np.ndarray = None, ) -> Dij: """ Calculate the dose forward matrix. Parameters ---------- ct : CT A CT object. cst : CST A CST object. stf : STF A STF object. weights : np.ndarray The weights for the beamlets. Returns ------- PlanResult A PlanResult object. """ ct = validate_ct(ct) cst = validate_cst(cst, ct=ct) stf = validate_stf(stf) pln = validate_pln(pln) engine = get_engine(pln) dij = engine.calc_dose_forward(ct, cst, stf, weights) return dij