def __init__(self, filename=None): self.debug_p = False self.phantfilename = filename # all measurements are in cm self.height = 5. self.radius = 10. self.width = 2. * self.radius self.depth = 30. # voxel size self.dx = 0.05 self.dy = 0.05 self.dz = 0.25 # compute dimensions of phantom, i.e. number of # voxels in each direction self.dimensions = (int(self.width / self.dx), \ int((self.height + self.radius) / self.dy), \ int(self.depth / self.dz)) # print self.dimensions # make a blank phantom self.phantom = EGSPhant.EGSPhant(None, self.dimensions[0], self.dimensions[1], self.dimensions[2]) self.phantom.phantfilename = self.phantfilename # phantom is just air and water self.phantom.nmaterials = 2 self.phantom.materials = ('AIR700ICRU', 'H2O700ICRU') self.phantom.estepe = ones(self.phantom.nmaterials, type=Float32) # set the voxel edges self.phantom.xedges = zeros(self.phantom.dimensions[0] + 1, type=Float32) self.phantom.yedges = zeros(self.phantom.dimensions[1] + 1, type=Float32) self.phantom.zedges = zeros(self.phantom.dimensions[2] + 1, type=Float32) for i in range(self.phantom.dimensions[0] + 1): self.phantom.xedges[i] = -10. + i * self.dx for i in range(self.phantom.dimensions[1] + 1): self.phantom.yedges[i] = -10. + i * self.dy for i in range(self.phantom.dimensions[2] + 1): self.phantom.zedges[i] = -15. + i * self.dz self.phantom.edges_to_centers()
#!/usr/bin/env python2.4 import sys from egsnrc import EGSPhant if len(sys.argv) == 1: print "Need one argument, name of phantom file to fix" else: try: phant = EGSPhant(sys.argv[1]) except IOError: raise suffix = '.egsphant' phant.fix_density() basename = sys.argv[1].split(suffix)[0] newname = basename + '_fixed' + suffix phant.save(newname)