dose optimization #741
-
I would like to ask about dose Optimization. If the data we want to use includes RT-Dose, is it possible to only perform optimizations based on that dose? |
Beta Was this translation helpful? Give feedback.
Replies: 13 comments 4 replies
-
Hi Natuki, |
Beta Was this translation helpful? Give feedback.
-
Thank you for your reply.
I would like to optimize the BED based on the overall dose that was
pre-planned, like in this paper.
“Voxel based BED and EQD2 Evaluation of the Radiotherapy Treatment Plan”
However, even if I store the CT, RT-Struct and RT-Dose of the DICOM data I
have now, a new plan will be created. I am writing code based on matRad.m.
I am still new to MATRAB itself. I am still new to MATRAB itself and
ignorant, so any advice would be appreciated.
2024年7月8日(月) 20:27 remocristoforetti ***@***.***>:
… Hi Natuki,
could you please specify better your request?
—
Reply to this email directly, view it on GitHub
<#741 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/BJIIKGQKBVOGO6QY4QVVQVLZLJZS7AVCNFSM6AAAAABKE22SKGVHI2DSMVQWIX3LMV43SRDJONRXK43TNFXW4Q3PNVWWK3TUHM4TSOBWGQYDG>
.
You are receiving this because you modified the open/close state.Message
ID: ***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
As for progress, I am attempting to import Dose and Plan, but I am getting
errors in one of them. If I am able to successfully import, I would like to
compare it to the original physical doses, but is it possible to convert
the doses without having to re-plan?
2024年8月6日(火) 17:42 Niklas Wahl ***@***.***>:
… Regarding BED optimization, this is now on the dev branch:
https://github.com/e0404/matRad/tree/dev
I don't understand the problem with the "new plan", though.
—
Reply to this email directly, view it on GitHub
<#741 (reply in thread)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/BJIIKGUGYNNOBUFXFCSAAZDZQCEAPAVCNFSM6AAAAABKE22SKGVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTAMRVGEZTCNI>
.
You are receiving this because you modified the open/close state.Message
ID: ***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
Head-Neck Cetuximab | Head-Neck Cetuximab
I am planning to use this dataset
2024年8月6日(火) 17:56 Niklas Wahl ***@***.***>:
… It would be best if you could point me to the dataset in the TCIA, then I
could try importing myself.
When you import the RTDose you will have it available in matRad. However,
recalculation of the RTPlan is difficult, because you need the correct
machine data of that. I don't know which machine was used for these plans.
—
Reply to this email directly, view it on GitHub
<#741 (reply in thread)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/BJIIKGV4KAHBWN5V5LOGUCDZQCFVXAVCNFSM6AAAAABKE22SKGVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTAMRVGE2DMOI>
.
You are receiving this because you modified the open/close state.Message
ID: ***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
If I can import RT-Dose, can I convert BED based on RT-Dose without Plan? I
thought I could not.
2024年8月6日(火) 18:17 足立夏基 ***@***.***>:
… Head-Neck Cetuximab | Head-Neck Cetuximab
I am planning to use this dataset
2024年8月6日(火) 17:56 Niklas Wahl ***@***.***>:
> It would be best if you could point me to the dataset in the TCIA, then I
> could try importing myself.
>
> When you import the RTDose you will have it available in matRad. However,
> recalculation of the RTPlan is difficult, because you need the correct
> machine data of that. I don't know which machine was used for these plans.
>
> —
> Reply to this email directly, view it on GitHub
> <#741 (reply in thread)>,
> or unsubscribe
> <https://github.com/notifications/unsubscribe-auth/BJIIKGV4KAHBWN5V5LOGUCDZQCFVXAVCNFSM6AAAAABKE22SKGVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTAMRVGE2DMOI>
> .
> You are receiving this because you modified the open/close state.Message
> ID: ***@***.***>
>
|
Beta Was this translation helpful? Give feedback.
-
Hi @NatukiAdachi, Could you clarify what you want to do? Do you already have a RTDose (dose estimiation) file that you generated through some other means, and then want to use matRad to optimize a new plan based on the dose estimation? |
Beta Was this translation helpful? Give feedback.
-
What I would like to do is import the physical dose produced by another
treatment planning device into matRad and convert that dose to BED.
2024年8月22日(木) 2:10 edwardwang1 ***@***.***>:
… Hi @NatukiAdachi <https://github.com/NatukiAdachi>,
Could you clarify what you want to do? Do you already have a RTDose (dose
estimiation) file that you generated through some other means, and then
want to use matRad to optimize a new plan based on the dose estimation?
—
Reply to this email directly, view it on GitHub
<#741 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/BJIIKGTOXAECFQGVRNJQ6RDZSTC2FAVCNFSM6AAAAABKE22SKGVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTANBRGA3TENI>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
Ah ok I don't have any first-hand experience with this, but I think it should be doable. Once you load in your physical dose, you should have a |
Beta Was this translation helpful? Give feedback.
-
Thank you.
But this way, would the same alpha/beta be applied to both Target and OAR?
If I want to change the alpha/beta freely like the BED optimization tool
now available on GITHUB, do I need to be more creative?
2024年8月22日(木) 8:43 edwardwang1 ***@***.***>:
… Ah ok I don't have any first-hand experience with this, but I think it
should be doable.
Once you load in your physical dose, you should have a resultGUI object.
You can access the 3D dose matrix using resultGUI.physicalDose, and then
you should be able to use element-wise matrix operations to convert that to
BED.
—
Reply to this email directly, view it on GitHub
<#741 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/BJIIKGU4J6BH6BI2ORJBPSTZSUQ3JAVCNFSM6AAAAABKE22SKGVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTANBRGM2DAOI>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
I am sure Struct info is stored in cst.
So I think that by tying ResultGUI to cst, I can assign alpha/beta
according to Struct. how do I tie it?
2024年8月22日(木) 13:46 足立夏基 ***@***.***>:
… Thank you.
But this way, would the same alpha/beta be applied to both Target and OAR?
If I want to change the alpha/beta freely like the BED optimization tool
now available on GITHUB, do I need to be more creative?
2024年8月22日(木) 8:43 edwardwang1 ***@***.***>:
> Ah ok I don't have any first-hand experience with this, but I think it
> should be doable.
>
> Once you load in your physical dose, you should have a resultGUI object.
> You can access the 3D dose matrix using resultGUI.physicalDose, and then
> you should be able to use element-wise matrix operations to convert that to
> BED.
>
> —
> Reply to this email directly, view it on GitHub
> <#741 (comment)>,
> or unsubscribe
> <https://github.com/notifications/unsubscribe-auth/BJIIKGU4J6BH6BI2ORJBPSTZSUQ3JAVCNFSM6AAAAABKE22SKGVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTANBRGM2DAOI>
> .
> You are receiving this because you were mentioned.Message ID:
> ***@***.***>
>
|
Beta Was this translation helpful? Give feedback.
-
For each contour, there are stored index lists (i.e., which voxels they belong to, in the %ct scenario (in case of 4D cts)
ctScen = 1;
%resulting survival cube
survival = zeros(size(resultGUI.physicalDose));
%take care of volume overlap according to what is written in cst(:,5).Priority
cstOverlap = matRad_setOverlapPriorities(cst);
%Loop over all
for i = 1:size(cstOverlap,1)
%Get alpha and beta from cstOverlap
alpha = cstOverlap{i,5}.alphaX;
beta = cstOverlap{i,5}.betaX;
%Voxel indices of structure
volIx = cstOverlap{i,4}{ctScen};
%dose in volume
volDose = resultGUI.physicalDose(volIx);
%survival in volume voxels
volSurvival = exp(-alpha*volDose - beta*volDose.^2);
%Write survival in volume to cube
survival(volIx) = volSurvival;
end
%add to resultGUI to make available in GUI
resultGUI.survival = survival; |
Beta Was this translation helpful? Give feedback.
-
Thank you.
I am going to use the photon dataset.
I have tried BED conversion
%データのロード
load 2-1.mat
%ct scenario (in case of 4D cts)
ctScen = 1;
%resulting survival cube
BED = zeros(size(resultGUI.physicalDose));
%take care of volume overlap according to what is written in
cst(:,5).Priority
cstOverlap = matRad_setOverlapPriorities(cst);
%Loop over all
for i = 1:size(cstOverlap,1)
%Get alpha and beta from cstOverlap
alpha = cstOverlap{i,5}.alphaX;
beta = cstOverlap{i,5}.betaX;
% Get number of fractions
numOfFractions = 1;
% cstの行数を取得してnumCstEntriesに設定する
numCstEntries = size(cst, 1);
% cstをループで回して、条件に一致する場合にPriorityとalphaXを変更
for i = 1:numCstEntries
if strcmp(cst{i, 3}, 'TARGET')
cst{i, 5}.Priority = 1; % Targetに対するPriorityの設定 1or2
cst{i, 5}.alphaX = 0.5; % Targetに対するalphaXの設定 変えない
elseif strcmp(cst{i, 3}, 'OAR')
cst{i, 5}.Priority = 2; % OARに対するPriorityの設定 1or2
cst{i, 5}.alphaX = 0.1; % OARに対するalphaXの設定 0.1or0.25
end
end
%Voxel indices of structure
volIx = cstOverlap{i,4}{ctScen};
%dose in volume
volDose = resultGUI.physicalDose(volIx);
%survival in volume voxels
volBED = numOfFractions .* volDose .* (1 + volDose./(alpha/beta));
%Write survival in volume to cube
BED(volIx) = volBED;
end
%add to resultGUI to make available in GUI
resultGUI.BED = BED;
matRadGUI
Then I got the following error .
次を使用中のエラー: caxis (行 33)
The range must be a two-element vector of increasing numbers.
エラー: matRad_plotColorbar (行 38)
caxis(window);
エラー: matRadGUI>UpdatePlot (行 1088)
handles.cBarHandel =
matRad_plotColorbar(handles.axesFig,doseMap,handles.dispWindow{selectIx,1},'fontsize',defaultFontSize);
エラー: matRadGUI>popupDisplayOption_Callback (行 1826)
UpdatePlot(handles);
エラー: gui_mainfcn (行 95)
feval(varargin{:});
エラー: matRadGUI (行 88)
gui_mainfcn(gui_State, varargin{:});
エラー:
matlab.graphics.internal.figfile.FigFile/read>@(hObject,eventdata)matRadGUI('popupDisplayOption_Callback',hObject,eventdata,guidata(hObject))
Is there a solution?
It worked fine if I did not change anything in cst.
2024年8月22日(木) 17:08 Niklas Wahl ***@***.***>:
… Using the physical dose makes, in my opinion, sense for photons only.
If you work with particles, especially heavier than protons, you should
probably use the RBE-weighted doses (or use alpha & beta distributions
instead of fixed values per dose).
—
Reply to this email directly, view it on GitHub
<#741 (reply in thread)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/BJIIKGQLWPJJIFK6ZFWG2Z3ZSWL6JAVCNFSM6AAAAABKE22SKGVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTANBRGYZTGOA>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
Thank you.
Solved it successfully, I will try the latest dev branch as well.
2024年8月22日(木) 19:48 Niklas Wahl ***@***.***>:
… The part below should be directly run after loading:
% cstをループで回して、条件に一致する場合にPriorityとalphaXを変更for i = 1:numCstEntries
if strcmp(cst{i, 3}, 'TARGET')
cst{i, 5}.Priority = 1; % Targetに対するPriorityの設定 1or2
cst{i, 5}.alphaX = 0.5; % Targetに対するalphaXの設定 変えない
elseif strcmp(cst{i, 3}, 'OAR')
cst{i, 5}.Priority = 2; % OARに対するPriorityの設定 1or2
cst{i, 5}.alphaX = 0.1; % OARに対するalphaXの設定 0.1or0.25
endend
Otherwise the changes are not applied before extracting the information
and applying the overlap.
Also try to update to the latest dev branch (now contains all changes to
dev_varRBErobOpt), a few days ago we fixed a bug related to display.
You can also try to manually plot slices from the BED to check if the
conersion worked:
figure;
imagesc(resultGUI.BED(:,:,sliceNum));colorbar;
—
Reply to this email directly, view it on GitHub
<#741 (reply in thread)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/BJIIKGUCJBERZYQZN5TOMLLZSW6WNAVCNFSM6AAAAABKE22SKGVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTANBRG44DCMQ>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Beta Was this translation helpful? Give feedback.
The part below should be directly run after loading:
Otherwise the changes are not applied before extracting the information and applying the overlap.
Also try to update to the latest dev branch (now contains all changes to dev_varRBErobOpt), a few days ago we fixed a bug related to display.
You can also try to manually plot sli…