SimSET: Creando el área de trabajo

11 April, 2017 | SimSET | Eduardo Marquez

Lo primero que se hace para realizar una simulación es configurar los parámetros del Generador de historia del positron (PHG, por su siglas en ingles, el cual explicare a detalle después, por ahora entiéndase que crea el “área de trabajo”), el PHG utiliza el sistema cartesiano, con origen (0,0,0), y puede compuesto por uno o mas slices (rebanadas), todos los slices de mismo tamaño vertical y horizontal, solo variando en la posición del eje Z. La siguiente figura, muestra un un área con tres slices, en el cual el slice central tiene mayor resolución que los slices de los extremos.

Ten en cuenta que todos los slices están pegados, la imagen solo es una referencia de como se forma el objeto.

La unidad utilizada por SimSET es el centímetro y cuando se especifican los slices en los parámetros del PHG deben comenzar siempre con las posiciones negativas. Para especificarlas se utilizan solo dos parámetros, mínimo y máximo. Ademas se especifica el numero de “voxels” verticales y horizontales.

NOTA: A pesar de que los objetos se pueden diseñar de manera rectangular, el PGH tratará a los objetos como un cilindro, el cilindro que mejor llene la cuadricula diseñada, y se define en

TARGET CYLINDER INFORMATION

El siguiente ejemplo, consta del área de trabajo dividida en 12 slices, cada uno con 128 voxels:

 
#########################################################################
 # Se explicara con mayor detalle estas líneas un poco mas tarde,
 # por ahora solo las utilizaremos.

# RUNTIME OPTIONS
 INT num_to_simulate = 100000000
 REAL length_of_scan = 60.0
 BOOL simulate_SPECT = true
 BOOL simulate_PET_coincidences_only = false
 BOOL simulate_PET_coincidences_plus_singles = false
 REAL photon_energy = 140.5
 REAL minimum_energy = 110.0
 BOOL model_coherent_scatter_in_obj = true
 BOOL model_coherent_scatter_in_tomo = true
 BOOL adjust_for_collinearity = false
 BOOL adjust_for_positron_range = false
 # ENUM isotope = c11
 INT random_seed = 0

# IMPORTANCE SAMPLING OPTIONS
 BOOL simulate_stratification = false
 BOOL simulate_forced_detection = false
 BOOL forced_non_absorbtion = true
 REAL weight_window_ratio = 1.0

# OBJECT GEOMETRY VALUES
 BOOL point_source_voxels = false
 BOOL line_source_voxels = false

#########################################################################
 # A partir de aquí se definen los slices del área de trabajo.

NUM_ELEMENTS_IN_LIST object = 13  # Siempre el numero de slices + 1 
 INT num_slices = 12              # Numero de slices 
 ################################## Por cada SLICE se declara:
 NUM_ELEMENTS_IN_LIST slice = 9   # 9 o 11** (Se explicara en la cración del objeto)
 INT slice_number = 0             # Número de slice
 REAL zMin = -24                  # Posición inicial en el eje Z
 REAL zMax = -20                  # Posición final en el eje Z             
 REAL xMin = -32.00               # Posición inicial en el eje X
 REAL xMax = 32.00                # Posición inicial en el eje X
 REAL yMin = -32.00               # Posición inicial en el eje Y
 REAL yMax = 32.00                # Posición inicial en el eje Y
 INT num_X_bins = 128             # Número de voxels en X
 INT num_Y_bins = 128             # Número de voxels en Y
################################## Se repite por cada Slice, (SOLO CAMBIA Z)
 NUM_ELEMENTS_IN_LIST slice = 9
 INT slice_number = 1
 REAL zMin = -20
 REAL zMax = -16
 REAL xMin = -32.00
 REAL xMax = 32.00
 REAL yMin = -32.00
 REAL yMax = 32.00
 INT num_X_bins = 128
 INT num_Y_bins = 128
 NUM_ELEMENTS_IN_LIST slice = 9
 INT slice_number = 2
 REAL zMin = -16
 REAL zMax = -12
 REAL xMin = -32.00
 REAL xMax = 32.00
 REAL yMin = -32.00
 REAL yMax = 32.00
 INT num_X_bins = 128
 INT num_Y_bins = 128
 NUM_ELEMENTS_IN_LIST slice = 9
 INT slice_number = 3
 REAL zMin = -12
 REAL zMax = -8
 REAL xMin = -32.00
 REAL xMax = 32.00
 REAL yMin = -32.00
 REAL yMax = 32.00
 INT num_X_bins = 128
 INT num_Y_bins = 128
 NUM_ELEMENTS_IN_LIST slice = 9
 INT slice_number = 4
 REAL zMin = -8
 REAL zMax = -4
 REAL xMin = -32.00
 REAL xMax = 32.00
 REAL yMin = -32.00
 REAL yMax = 32.00
 INT num_X_bins = 128
 INT num_Y_bins = 128
 NUM_ELEMENTS_IN_LIST slice = 9
 INT slice_number = 5
 REAL zMin = -4
 REAL zMax = 0
 REAL xMin = -32.00
 REAL xMax = 32.00
 REAL yMin = -32.00
 REAL yMax = 32.00
 INT num_X_bins = 128
 INT num_Y_bins = 128
 NUM_ELEMENTS_IN_LIST slice = 9
 INT slice_number = 6
 REAL zMin = 0
 REAL zMax = 4
 REAL xMin = -32.00
 REAL xMax = 32.00
 REAL yMin = -32.00
 REAL yMax = 32.00
 INT num_X_bins = 128
 INT num_Y_bins = 128
 NUM_ELEMENTS_IN_LIST slice = 9
 INT slice_number = 7
 REAL zMin = 4
 REAL zMax = 8
 REAL xMin = -32.00
 REAL xMax = 32.00
 REAL yMin = -32.00
 REAL yMax = 32.00
 INT num_X_bins = 128
 INT num_Y_bins = 128
 NUM_ELEMENTS_IN_LIST slice = 9
 INT slice_number = 8
 REAL zMin = 8
 REAL zMax = 12
 REAL xMin = -32.00
 REAL xMax = 32.00
 REAL yMin = -32.00
 REAL yMax = 32.00
 INT num_X_bins = 128
 INT num_Y_bins = 128
 NUM_ELEMENTS_IN_LIST slice = 9
 INT slice_number = 9
 REAL zMin = 12
 REAL zMax = 16
 REAL xMin = -32.00
 REAL xMax = 32.00
 REAL yMin = -32.00
 REAL yMax = 32.00
 INT num_X_bins = 128
 INT num_Y_bins = 128
 NUM_ELEMENTS_IN_LIST slice = 9
 INT slice_number = 10
 REAL zMin = 16
 REAL zMax = 20
 REAL xMin = -32.00
 REAL xMax = 32.00
 REAL yMin = -32.00
 REAL yMax = 32.00
 INT num_X_bins = 128
 INT num_Y_bins = 128
 NUM_ELEMENTS_IN_LIST slice = 9
 INT slice_number = 11
 REAL zMin = 20
 REAL zMax = 24
 REAL xMin = -32.00
 REAL xMax = 32.00
 REAL yMin = -32.00
 REAL yMax = 32.00
 INT num_X_bins = 128
 INT num_Y_bins = 128

#########################################################################
# Se define el la información del cilindro
 NUM_ELEMENTS_IN_LIST target_cylinder = 3
 REAL target_zMin = -4.0
 REAL target_zMax = 4.0
 REAL radius = 36.00
 REAL acceptance_angle = 5.0

#########################################################################
 # A partir de aquí se definen los directorios: solo modificaremos 
 # ACTIVITY INDEX FILE y ATTENUATION INDEX FILE, por los archivos
 # que definirán el objeto.

# COHERENT ANGULAR DISTRIBUTION FILES 
 STR coherent_scatter_table = "@simset/phg.data/phg_ad_files"

# ISOTOPE DATA
 #STR isotope_data_file = "@simset/phg.data/isotope_positron_energy_data"

# ACTIVITY INDEX FILE
 STR activity_indexes = "@simset/Example/objeto.act_index"

# ACTIVITY TABLE FILE
 STR activity_table = "@simset/phg.data/phg_act_table"

# ACTIVITY INDEX TO TABLE TRANSLATION FILE
 STR activity_index_trans = "@simset/phg.data/phg_act_index_trans"

# ACTIVITY IMAGE OUTPUT FILE
 STR activity_image = "@simset/Example/objeto.actimg"

# ATTENUATION INDEX FILE
 STR attenuation_indexes = "@simset/Example/objeto.att_index"

# ATTENUATION TABLE FILE
 STR attenuation_table = "@simset/phg.data/phg_att_table"

# ATTENUATION INDEX TO TABLE TRANSLATION FILE
 STR attenuation_index_trans = "@simset/phg.data/phg_att_index_trans"

# ATTENUATION IMAGE OUTPUT FILE
 STR attenuation_image = "@simset/Example/objeto.attimg"

# PRODUCTIVITY INPUT TABLE FILE
 STR productivity_input_table = ""

# PRODUCTIVITY TABLE FILE
 STR productivity_output_table = ""

# COLLIMATOR PARAMETER FILE
 STR collimator_params_file = ""

# DETECTOR PARAMETER FILE
 STR detector_params_file = ""

# BINNING PARAMATER FILE
 STR bin_params_file = "@simset/Example/object.bin_params"

# HISTORY FILE
 STR history_file = ""

# HISTORY PARAMETERS FILE
 STR history_params_file = ""

# STATISTICS FILE (for debugging purposes only)
 STR statistics_file = ""

NOTA0: En mi caso dentro de la carpeta 2.9.2, cree una carpeta llamada Example, donde estoy colocando estos archivos. Tengan mucho cuidado con los path (directorios.

NOTA1: Como menciona el código y con el fin de no cometer errores (es normal), solo cambiaremos los archivos object.act_index y object.att_index según se necesite, sin renombralos.

NOTA2: Básicamente en este archivo solo definiremos (por ahora) los slices, los voxels y el cilindro objetivo, con medidas que abarquen todo el espacio.

© Copyright © All rights reserved