Warsztaty z Metod Terapeutycznych: Różnice pomiędzy wersjami

Z Brain-wiki
Linia 61: Linia 61:
 
/gate/pudlo/cubicArray/setRepeatNumberY 3
 
/gate/pudlo/cubicArray/setRepeatNumberY 3
 
/gate/pudlo/cubicArray/setRepeatNumberZ 3
 
/gate/pudlo/cubicArray/setRepeatNumberZ 3
/gate/hole/cubicArray/setRepeatVector 1.1 1.1 1.1 cm
+
/gate/pudlo/cubicArray/setRepeatVector 1.1 1.1 1.1 cm
  
 
# przydatne często, gdy wprowadziło się nowe definicje geometrii, które nie zostały jeszcze zwizualizowane
 
# przydatne często, gdy wprowadziło się nowe definicje geometrii, które nie zostały jeszcze zwizualizowane

Wersja z 11:51, 12 paź 2016

Warsztaty z Metod Terapeutycznych Rok akademicki 2016/17

Instalowanie i uruchamianie vGate 7.2

  1. Wejdź do katalogu "Warsztaty z metod terapeutycznych" na pulpicie. Rozpakuj plik "vGATE72.vdi.7z" (jeśli nie jest już rozpakowany).
  2. Uruchom "Oracle VM VirualBox".
    • Dodaj nową wirtualną maszynę (przycisk "Nowa"). Nadaj jej nazwę vgate7. Wybierz typ systemu operacyjnego Linux, wersja Ubuntu (32-bit).
    • W kolejnym oknie wybierz rozmiar pamięci przydzielonej dla wirtualnej maszyny 1024 MB.
    • W kolejnym oknie wybierz "Użyj istniejącego pliku dysku twardego" i wskaż ścieżkę do rozpakowanego pliku "vGATE72.vdi".
  3. Uruchamianie wirtualnej maszyny
    • Wybierz dodaną ostatnio maszynę (jeśli jest więcej niż jedna) i naciśnij "Uruchom"
    • Gdy uruchomi się linux, należy wpisać hasło "virtual"
  4. Uruchamianie programu "Gate"
    • Uruchom terminal.
    • Za pomocą komend "cd nazwa_katalogu" wejdź do katalogu, w którym znajdują się Twoje skrypty. Jeśli takiego nie masz, to stwórz go w katalogu ~/Progs/Gate/gate_v7.2/
  5. Przydatne linki
    • Strona Virtual Gate [1]
    • Wiki na temat vgate 7.2 [2]
    • Fizyka w vgate 7.2 [3]

Zadanie 1

Zdefiniuj geometrię kolimatora: płaskiego pudła ołowianego, w którym zostało wywiercone 25 okrągłych otworów z powietrza w geometrii sześciokątnej. (za 2 punkty)


Skrypty wywołuje się komendą

/control/execute nazwa_skryptu.mac

Poniżej skrypt, który definiuje właściwości świata i umieszcza w nim kostkę Rubika (3x3 pudełka utworzone z powietrza). (Na stronie [4] można znaleźć przykłady i więcej opisów jak budować geometrię)

# na początku trzeba wczytać bazę danych dostępnych materiałów
/gate/geometry/setMaterialDatabase ../GateMaterials.db

# Aby oglądać tworzoną geometrię na etapie jej definiowania;
# podczas dłuższych obliczeń należałoby z tego zrezygnować.
/vis/enable
/control/execute vis.mac

# wymiary świata
/gate/world/geometry/setXLength 100. cm
/gate/world/geometry/setYLength 100. cm
/gate/world/geometry/setZLength 50. cm

# definicja wymiarów, położenia, materiałów z których wykonano pudło
/gate/world/daughters/name pudlo
/gate/world/daughters/insert box
/gate/pudlo/geometry/setXLength 1. cm
/gate/pudlo/geometry/setYLength 1. cm
/gate/pudlo/geometry/setZLength 1. cm
/gate/pudlo/placement/setTranslation 20. 0. 0. cm
/gate/pudlo/setMaterial Air
/gate/pudlo/vis/forceWireframe
# powtórzenie pudła po 3 razy w każdą stronę poprzez dodanie do niego powtarzacza cubicArray
/gate/pudlo/repeaters/insert cubicArray
/gate/pudlo/cubicArray/setRepeatNumberX 3
/gate/pudlo/cubicArray/setRepeatNumberY 3
/gate/pudlo/cubicArray/setRepeatNumberZ 3
/gate/pudlo/cubicArray/setRepeatVector 1.1 1.1 1.1 cm

# przydatne często, gdy wprowadziło się nowe definicje geometrii, które nie zostały jeszcze zwizualizowane
/gate/geometry/rebuild

Odwołuje się przy tym do skryptu vis.mac

#	V I S U A L I S A T I O N

/vis/open OGLSX   # biblioteka graficzna
/vis/viewer/set/viewpointThetaPhi 60 60   # punkt obserwacji
/vis/viewer/zoom 1.5   # powiększenie
/vis/drawVolume
/vis/viewer/flush
/tracking/verbose 0   # poziom gadatliwości, czyli ile informacji wyświetlać w terminalu podczas obliczeń
/tracking/storeTrajectory 1   # ile trajektorii zapamiętywać
/vis/scene/add/trajectories 
/vis/scene/endOfEventAction accumulate

Aby włożyć do pudła cylindryczny otwór

/gate/pudlo/daughters/name dziura 		# utworzenie otworu
/gate/pudlo/daughters/insert cylinder
/gate/dziura/geometry/setHeight 1. cm
/gate/dziura/geometry/setRmax .15 cm
/gate/dziura/geometry/setRmin 0. cm
/gate/dziura/placement/setRotationAxis 0 1 0 	# cylinder można obrócić
/gate/dziura/placement/setRotationAngle 90 deg
/gate/dziura/setMaterial Air

Oczywiście w kolimatorze to nie pudło, a otwór powinien zostac odpowiednią ilość razy powtórzony.

Zadanie 2

Napromieniuj dwoma punktowymi źródełkami Technetu 99 fantom wodny poprzez kolimator i bez kolimatora. Odczytaj wyniki używając programu ImageJ. (za 2 punkty)

Ustawienie symulowanych zjawisk fizycznych może być dokonane w osobnym pliku (np. fizyka.mac) Propozycję jego zawartości można znaleźć na stronie [5] Na tej samej stronie widnieje propozycja ustawienia odcięć w ciele pacjenta ("cuts", czyli cząstek o jakim średnim zasięgu już nie śledzimy).

Do zdefiniowanego wcześniej fantomu można dołączyć "aktora", czyli zdolność interakcji z symulacją - w tym wypadku zapisania zdeponowanej energii w fantomie. Fantom możemy potraktować jako macierz 100x100 elementów.

#=====================================================
# MATRIX FOR DOSE MAP OUTPUT
#=====================================================

/gate/actor/addActor                               DoseActor  doseDistribution
/gate/actor/doseDistribution/save                  output/plik_wynikowy.hdr
/gate/actor/doseDistribution/attachTo    	   moj_fantom
/gate/actor/doseDistribution/stepHitType           random
/gate/actor/doseDistribution/setPosition           0 0 0 cm
# fantom podzielony na macierz, nie interesuje nas pomiar wgłąb (gdyby interesował, należałoby podać też trzecią rozdzielczość)
/gate/actor/doseDistribution/setResolution         100 100 1  
/gate/actor/doseDistribution/saveEveryNSeconds     60
/gate/actor/doseDistribution/enableEdep            true	# będziemy mierzyć zdeponowaną energię
/gate/actor/doseDistribution/enableUncertaintyEdep false # innych możliwych wielkości (niepewności, dawki, ilości zliczeń) na razie nie będziemy mierzyć
/gate/actor/doseDistribution/enableDose            false
/gate/actor/doseDistribution/enableUncertaintyDose false
/gate/actor/doseDistribution/enableNumberOfHits    false

/gate/actor/addActor               SimulationStatisticActor stat
/gate/actor/stat/save              output/stat-wynik.txt
/gate/actor/stat/saveEveryNSeconds 60

Po zdefiniowaniu geometrii, zjawisk fizycznych oraz aktora, a przed zdefiniowaniem źródeł i uruchomieniem symulacji należy dokonać inicjalizacji

#=====================================================
# INITIALISATION
#=====================================================

/gate/run/initialize

Teraz zdefiniujemy pojedyncze źródełko.

# D E F I N E  T H E  S O U R C E
#####
/gate/source/addSource zrodlo
/gate/source/zrodlo/gps/type Volume
/gate/source/zrodlo/gps/shape Cylinder
/gate/source/zrodlo/gps/radius 2. cm
/gate/source/zrodlo/gps/halfz 14.5 cm
/gate/source/zrodlo/gps/centre 0. 0. 0. cm
/gate/source/zrodlo/gps/particle gamma
/gate/source/zrodlo/gps/energy 140. keV
/gate/source/zrodlo/setActivity 30000. Bq
/gate/source/zrodlo/gps/angtype iso

# W niektórych wypadkach może być wygodnie podłączyć do zdefiniowanego wcześniej obiektu, np.
/gate/source/zrodlo/attachTo kolorowa_pastylka