Data structure for IMRTP - cerr/CERR GitHub Wiki

IMRTP - Data Structure

  • Statement and Dosimetry

Data related to the statement and dosimetry of the IMRT problem are stored within the Matlab cell-array data object ‘planC’, which contains all the patient data. Dosimtery information for multiple plans can be stored under the "IM" structure array. For example, the dosimetry information belonging to the 1st plan (dosimetryNum = 1) can be accessed as follows:

>> global planC
>> indexS = planC{end};
>> dosimetryNum = 1;
>> planC{indexS.IM}(dosimetryNum).IMDosimetry
ans =            beams: [1x9 struct]
          goals: [1x11 struct]
         params: [1x1 struct]
           name: 'IM doseSet'
        isFresh: 1
   assocScanUID: 'CT.1172008.81540.267837.5851'
      solutions: [1724x1 double]

  • Beam information

"beam" is a structure-array hung off IMDosimetry field. It stores beam information for various beams. For example, the 1st beam can be accessed as follows:

>> dosimetryNum = 1;
>> beamNum = 1;
>> planC{indexS.IM}(dosimetryNum).IMDosimetry.beams(beamNum)
ans = 
             beamNum: 1
        beamModality: 'photons'
          beamEnergy: 6
           isocenter: [1x1 struct]
         isodistance: 100
            arcAngle: 0
          couchAngle: 0
     collimatorAngle: 0
         gantryAngle: 0      beamDescription: 'IMRTP test'
      beamletDelta_x: 1
      beamletDelta_y: 1
      dateOfCreation: '16-Sep-2005'
            beamType: 'IM'
                zRel: 0
                xRel: 0
                yRel: 100
              CTUsed: []
             PBMaskM: []
      RTOGPBVectorsM: [201x3 double]
   RTOGPBVectorsM_MC: [201x3 double]
              colPBV: [201x1 double]
              rowPBV: [201x1 double]
           sigma_100: []
             xPBPosV: [1x201 double]
             yPBPosV: [1x201 double]
            CTTraceS: [1x201 struct]
                   x: 19.4744
                   y: 78.7389
                   z: 84.5927
            beamlets: [11x201 struct]

  • Beamlet information

Beamlet data generated for a beam is hung off the "beam" field. It is a structure array of dimension (N x NumBeamlets), where N is equal to the number of structures for which dose calculation is desired and NumBeamlets is equal to the number of beamlets generated for that beam. For example, the 5th beamlet for 1st beam and 2nd structure can be accessed as below. Dose is computed on a rectangular grid, downsampled by a linear factor of 2 (‘sampleRate: 2’). Influence matrix values are stored under the ‘.influence’ field, as scaled uint8 values (very small scatter dose values, when kept, are scaled separately). '.indexV' stores the indices of uniformized structure and correspond to where '.influence' is calculated. 'strUID' stores the unique identifier of the structure for which the beamlets are computed. This is done to safeguard the association of beamlet with structure since structure indices can easily get modified by the user.

>> dosimetryNum = 1;
>> beamNum = 1;
>> planC{indexS.IM}(dosimetryNum).IMDosimetry.beams(beamNum).beamlets(2,5)
ans = 
     structureName: 'CTV 7200_3mm'
            format: 'uint8'
         influence: [131x1 uint8]
           beamNum: 1
        fullLength: 6510
            indexV: [131x1 uint32]
   maxInfluenceVal: 4.3419e-004
     lowDosePoints: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
        sampleRate: 2
            strUID: 'RS.1172008.81540.267594.6634'