forked from raysearchlabs/dicomutils
-
Notifications
You must be signed in to change notification settings - Fork 0
/
studybuilderexample.py
46 lines (37 loc) · 1.62 KB
/
studybuilderexample.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import dicom
import builders
reload(builders)
import modules
reload(modules)
from builders import StudyBuilder
import os
tmpdir = os.path.join(os.getenv("TEMP"), "studybuilder")
if not os.path.exists(tmpdir):
os.mkdir(tmpdir)
sb = StudyBuilder(patient_position="HFS", patient_id="123", patients_name="Kalle^Kula", patients_birthdate = "20121212")
ct = sb.build_ct(num_voxels = [48,64,48], voxel_size = [4,3,4], rescale_slope = 1, rescale_intercept = -1024)
ct.clear(real_value = 0)
print ct.pixel_array.max(),ct.pixel_array.min()
ct.add_sphere(radius = 25, center = [0,0,0], real_value = -1000, mode = 'set')
print ct.pixel_array.max(),ct.pixel_array.min()
ct.add_box(size = [25,50,25], center = [0,0,0], stored_value = 300, mode = 'add')
print ct.pixel_array.max(),ct.pixel_array.min()
assert sb.seriesbuilders['CT'] == [ct]
rtstruct = sb.build_structure_set()
rtstruct.add_external_box()
rtstruct.add_sphere(radius = 25, center = [0,0,0], name='Sph-PTV', interpreted_type='PTV')
rtstruct.add_box(size = [25,50,25], center = [0,0,0], name='Box-Organ', interpreted_type='CAVITY')
rtplan = sb.build_static_plan()
b1 = rtplan.build_beam(gantry_angle = 0, meterset = 100)
b1.conform_to_circle(25, [0,0])
b2 = rtplan.build_beam(gantry_angle = 120, meterset = 91)
b2.conform_to_rectangle(25, 50, [0,0])
b3 = rtplan.build_beam(gantry_angle = 240, meterset = 71)
b3.conform_to_rectangle(50, 25, [50,-50])
assert rtplan.beam_builders == [b1,b2,b3]
rtplan.build()
rtdose = sb.build_dose()
for beam in rtplan.beam_builders:
rtdose.add_lightfield(beam.rtbeam, beam.meterset)
sb.write(tmpdir)
print tmpdir