{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "\n", "import dicom" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(0008, 0005) Specific Character Set CS: 'ISO_IR 100'\n", "(0008, 0012) Instance Creation Date DA: '20151127'\n", "(0008, 0013) Instance Creation Time TM: '143229'\n", "(0008, 0014) Instance Creator UID UI: 2.16.840.1.114337\n", "(0008, 0016) SOP Class UID UI: RT Plan Storage\n", "(0008, 0018) SOP Instance UID UI: 2.16.840.1.114337.1.1.1448595149.0\n", "(0008, 0020) Study Date DA: ''\n", "(0008, 0030) Study Time TM: ''\n", "(0008, 0050) Accession Number SH: '1'\n", "(0008, 0060) Modality CS: 'RTPLAN'\n", "(0008, 0070) Manufacturer LO: 'CMS, Inc.'\n", "(0008, 0090) Referring Physician's Name PN: ''\n", "(0008, 1070) Operators' Name PN: ''\n", "(0008, 1090) Manufacturer's Model Name LO: 'Monaco'\n", "(0010, 0010) Patient's Name PN: 'Phantom,Monaco'\n", "(0010, 0020) Patient ID LO: 'MrSTAR'\n", "(0010, 0030) Patient's Birth Date DA: '19691231'\n", "(0010, 0040) Patient's Sex CS: 'O'\n", "(0010, 1000) Other Patient IDs LO: 'MonacoPhantom'\n", "(0010, 1001) Other Patient Names PN: 'Phantom,Monaco'\n", "(0020, 000d) Study Instance UID UI: 2.16.840.1.114337.208007652905.23470.1285961861.0\n", "(0020, 000e) Series Instance UID UI: 2.16.840.1.114337.1448595149\n", "(0020, 0010) Study ID SH: 'MonacoPhantom'\n", "(0020, 0011) Series Number IS: '1'\n", "(0020, 0013) Instance Number IS: '1'\n", "(300a, 0002) RT Plan Label SH: 'AMrSTAR'\n", "(300a, 0003) RT Plan Name LO: 'MrSTAR'\n", "(300a, 0004) RT Plan Description ST: ''\n", "(300a, 0006) RT Plan Date DA: '20151127'\n", "(300a, 0007) RT Plan Time TM: '143058.000000'\n", "(300a, 000c) RT Plan Geometry CS: 'PATIENT'\n", "(300a, 000e) Prescription Description ST: 'Plan: RxA'\n", "(300a, 0010) Dose Reference Sequence 2 item(s) ---- \n", " (300a, 0012) Dose Reference Number IS: '1'\n", " (300a, 0014) Dose Reference Structure Type CS: 'SITE'\n", " (300a, 0020) Dose Reference Type CS: 'TARGET'\n", " (300a, 0026) Target Prescription Dose DS: '2.00'\n", " ---------\n", " (300a, 0012) Dose Reference Number IS: '2'\n", " (300a, 0014) Dose Reference Structure Type CS: 'COORDINATES'\n", " (300a, 0018) Dose Reference Point Coordinates DS: ['-0.5', '-121.4', '0.0']\n", " (300a, 0020) Dose Reference Type CS: 'TARGET'\n", " ---------\n", "(300a, 0070) Fraction Group Sequence 1 item(s) ---- \n", " (300a, 0071) Fraction Group Number IS: '1'\n", " (300a, 0078) Number of Fractions Planned IS: '1'\n", " (300a, 0080) Number of Beams IS: '1'\n", " (300a, 00a0) Number of Brachy Application Setups IS: '0'\n", " (300c, 0004) Referenced Beam Sequence 1 item(s) ---- \n", " (300a, 0082) Beam Dose Specification Point DS: ['-0.5', '-121.4', '0.0']\n", " (300a, 0084) Beam Dose DS: '0.000'\n", " (300a, 0086) Beam Meterset DS: '1000.000000'\n", " (300c, 0006) Referenced Beam Number IS: '1'\n", " ---------\n", " (300c, 0050) Referenced Dose Reference Sequence 1 item(s) ---- \n", " (300c, 0051) Referenced Dose Reference Number IS: '1'\n", " ---------\n", " ---------\n", "(300a, 00b0) Beam Sequence 1 item(s) ---- \n", " (0008, 1040) Institutional Department Name LO: '1~QA Clinic'\n", " (300a, 00b2) Treatment Machine Name SH: 'Boo'\n", " (300a, 00b3) Primary Dosimeter Unit CS: 'MU'\n", " (300a, 00b4) Source-Axis Distance DS: '1000.0'\n", " (300a, 00b6) Beam Limiting Device Sequence 2 item(s) ---- \n", " (300a, 00b8) RT Beam Limiting Device Type CS: 'ASYMX'\n", " (300a, 00bc) Number of Leaf/Jaw Pairs IS: '1'\n", " ---------\n", " (300a, 00b8) RT Beam Limiting Device Type CS: 'ASYMY'\n", " (300a, 00bc) Number of Leaf/Jaw Pairs IS: '1'\n", " ---------\n", " (300a, 00c0) Beam Number IS: '1'\n", " (300a, 00c2) Beam Name LO: 'AP'\n", " (300a, 00c3) Beam Description ST: 'AP'\n", " (300a, 00c4) Beam Type CS: 'STATIC'\n", " (300a, 00c6) Radiation Type CS: 'ELECTRON'\n", " (300a, 00ce) Treatment Delivery Type CS: 'TREATMENT'\n", " (300a, 00d0) Number of Wedges IS: '0'\n", " (300a, 00e0) Number of Compensators IS: '0'\n", " (300a, 00ed) Number of Boli IS: '0'\n", " (300a, 00f0) Number of Blocks IS: '1'\n", " (300a, 00f2) Total Block Tray Factor DS: ''\n", " (300a, 00f4) Block Sequence 1 item(s) ---- \n", " (300a, 00e1) Material ID SH: 'Cerrobend'\n", " (300a, 00f5) Block Tray ID SH: ''\n", " (300a, 00f6) Source to Block Tray Distance DS: '947.9'\n", " (300a, 00f8) Block Type CS: 'APERTURE'\n", " (300a, 00fa) Block Divergence CS: 'PRESENT'\n", " (300a, 00fb) Block Mounting Position CS: 'SOURCE_SIDE'\n", " (300a, 00fc) Block Number IS: '1'\n", " (300a, 00fe) Block Name LO: 'Block'\n", " (300a, 0100) Block Thickness DS: '15.0'\n", " (300a, 0104) Block Number of Points IS: '9'\n", " (300a, 0106) Block Data DS: ['21.7', '45.4', '17.6', '11.1', '39.3', '-26.7', '-2.3', '-10.1', '-39.6', '-24.7', '-29.0', '8.1', '-43.4', '41.6', '-9.3', '30.0', '21.7', '45.4']\n", " ---------\n", " (300a, 0107) Applicator Sequence 1 item(s) ---- \n", " (300a, 0108) Applicator ID SH: '10X10'\n", " (300a, 0109) Applicator Type CS: 'ELECTRON_SQUARE'\n", " (300a, 010a) Applicator Description LO: '10X10'\n", " ---------\n", " (300a, 010e) Final Cumulative Meterset Weight DS: '1.0'\n", " (300a, 0110) Number of Control Points IS: '2'\n", " (300a, 0111) Control Point Sequence 2 item(s) ---- \n", " (300a, 0112) Control Point Index IS: '0'\n", " (300a, 0114) Nominal Beam Energy DS: '12.0'\n", " (300a, 0115) Dose Rate Set DS: '0'\n", " (300a, 011a) Beam Limiting Device Position Sequence 2 item(s) ---- \n", " (300a, 00b8) RT Beam Limiting Device Type CS: 'ASYMX'\n", " (300a, 011c) Leaf/Jaw Positions DS: ['-96.0', '96.0']\n", " ---------\n", " (300a, 00b8) RT Beam Limiting Device Type CS: 'ASYMY'\n", " (300a, 011c) Leaf/Jaw Positions DS: ['-89.0', '89.0']\n", " ---------\n", " (300a, 011e) Gantry Angle DS: '0.0'\n", " (300a, 011f) Gantry Rotation Direction CS: 'NONE'\n", " (300a, 0120) Beam Limiting Device Angle DS: '0.0'\n", " (300a, 0121) Beam Limiting Device Rotation Direc CS: 'NONE'\n", " (300a, 0122) Patient Support Angle DS: '0.0'\n", " (300a, 0123) Patient Support Rotation Direction CS: 'NONE'\n", " (300a, 0125) Table Top Eccentric Angle DS: '0.0'\n", " (300a, 0126) Table Top Eccentric Rotation Direct CS: 'NONE'\n", " (300a, 0128) Table Top Vertical Position DS: ''\n", " (300a, 0129) Table Top Longitudinal Position DS: ''\n", " (300a, 012a) Table Top Lateral Position DS: ''\n", " (300a, 012c) Isocenter Position DS: ['-0.5', '-121.4', '0.0']\n", " (300a, 012e) Surface Entry Point DS: ['-0.5', '-120.4', '0.0']\n", " (300a, 0130) Source to Surface Distance DS: '1001.0'\n", " (300a, 0134) Cumulative Meterset Weight DS: '0'\n", " (300c, 0050) Referenced Dose Reference Sequence 2 item(s) ---- \n", " (300a, 010c) Cumulative Dose Reference Coefficie DS: ''\n", " (300c, 0051) Referenced Dose Reference Number IS: '1'\n", " ---------\n", " (300a, 010c) Cumulative Dose Reference Coefficie DS: ''\n", " (300c, 0051) Referenced Dose Reference Number IS: '2'\n", " ---------\n", " ---------\n", " (300a, 0112) Control Point Index IS: '1'\n", " (300a, 0115) Dose Rate Set DS: '0'\n", " (300a, 011e) Gantry Angle DS: '0.0'\n", " (300a, 0134) Cumulative Meterset Weight DS: '1'\n", " (300c, 0050) Referenced Dose Reference Sequence 2 item(s) ---- \n", " (300a, 010c) Cumulative Dose Reference Coefficie DS: ''\n", " (300c, 0051) Referenced Dose Reference Number IS: '1'\n", " ---------\n", " (300a, 010c) Cumulative Dose Reference Coefficie DS: ''\n", " (300c, 0051) Referenced Dose Reference Number IS: '2'\n", " ---------\n", " ---------\n", " (300c, 006a) Referenced Patient Setup Number IS: '1'\n", " ---------\n", "(300a, 0180) Patient Setup Sequence 1 item(s) ---- \n", " (0018, 5100) Patient Position CS: 'HFS'\n", " (300a, 0182) Patient Setup Number IS: '1'\n", " (300a, 01b0) Setup Technique CS: 'ISOCENTRIC'\n", " ---------\n", "(300c, 0060) Referenced Structure Set Sequence 1 item(s) ---- \n", " (0008, 1150) Referenced SOP Class UID UI: RT Structure Set Storage\n", " (0008, 1155) Referenced SOP Instance UID UI: 1.2.840.10008.5.1.4.1.1.481.3.1448595145\n", " ---------\n", "(300e, 0002) Approval Status CS: 'UNAPPROVED'" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dcm = dicom.read_file(\"star.dcm\", force=True)\n", "dcm" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "['21.7', '45.4', '17.6', '11.1', '39.3', '-26.7', '-2.3', '-10.1', '-39.6', '-24.7', '-29.0', '8.1', '-43.4', '41.6', '-9.3', '30.0', '21.7', '45.4']" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "block_data = dcm.BeamSequence[0].BlockSequence[0].BlockData\n", "block_data" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "12.0" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "energy = float(dcm.BeamSequence[0].ControlPointSequence[0].NominalBeamEnergy)\n", "energy" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "100.1" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ssd = float(dcm.BeamSequence[0].ControlPointSequence[0].SourceToSurfaceDistance) / 10\n", "ssd" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "'10X10'" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "applicator = dcm.BeamSequence[0].ApplicatorSequence[0].ApplicatorID\n", "applicator" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(-50.0, 40.0, -30.0, 50.0)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = np.array(block_data[0::2]).astype(float)\n", "y = np.array(block_data[1::2]).astype(float)\n", "\n", "plt.plot(x, y)\n", "plt.axis(\"equal\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.4.3" } }, "nbformat": 4, "nbformat_minor": 0 }