Generally useful information
Steve's # x65299
Normalization scan instructions (pdf)
- MGH_2012.03.21_Annulus7200
- MGH_Annulus_5.2.2012_Normalization
- MGH_2012.05.02_Annulus
- MGH_2012.22.06_NormalizationSpiral
- MGH_2012.09.12_Annulus_560uCi_7200s
- MGH_2012.10.11_Annulus_7200s_F16A
- MGH_2012.11.21_Annulus_620uCi_F16D
- MGH_2013.03.15_Spiral_508uCi
- MGH_2013.04.16_Annulus_orig_Modules
- MGH_2013.04.17_Annulus_new_Modules
- MGH_2013.04.30_Annulus
- MGH_2013.05.03_Phantom_ThinAnnulus
- MGH_2013.08.22_Annulus (Thick)
- MGH_2013.08.22_ThinAnn
- MGH_2013.11.25_ThinAnnulus500uCi
- MGH_2014.03.21_Normalization500uCi
- MGH_2015.01.29_Normalization_484uCi
- Possibly use this for previous scans
- Modules updated just after this
- MGH_2015.02.09_Normalization
- Taken after module update
- MGH_2015.03.17_Normalization
- Taken after module 5 swap on 2015.03.14
- NOTE: On 2015.03.28 original module was swapped back in, use 2015.02.09 norm for scans after this date
-
MGH_2015.05.29_Normalization -- SN001_201505291457_201505291657
- Taken after installation of V36 software
-
MGH_2015.09.21_Normalization
- Quarterly update
- MGH_2015.11.03_Normalization
-
MGH_2016.02.18_Normalization_TestMode
- Settings in "test mode" to match those of MGH_2016.01.26_Alt002JC_scan2 (data recovery attempt)
-
MGH_2016.03.09_Normalization
- Quarterly update
-
MGH_2016.05.27_Normalization
-
Module pos 7 swapped with spare on 2016.05.25 (evening) because of bad block
Use from 2016.05.26 until 2016.06.14
-
Module pos 7 swapped with spare on 2016.05.25 (evening) because of bad block
-
MGH_2016.06.03_Normalization
-
Same state as 2016.05.27, redone because 2016.05.27 was not saved
Use until 2016.06.14
-
Same state as 2016.05.27, redone because 2016.05.27 was not saved
-
MGH_2016.06.17_Normalization_postModReturn
- Original module pos 7 returned on 2016.06.14 after solder repair.
-
MGH_2016.08.09_Normalization_0.8mCi
MGH_2016.08.09_Normalization_1.9mCi-
Higher rate normalizations to go with higher rate scans
Applicable from 2016.06.15
-
Higher rate normalizations to go with higher rate scans
-
MGH_2017.01.12_Normalization
- "Quarterly" normalization, can be used with scans preceeding it (no hardware update)
-
MGH_2017.05.31_Normalization_1.33mCi
MGH_2017.05.31_Normalization_0.5mCi- "Quarterly" normalization, can be used with scans preceeding it (no hardware update). Also did higher rate norm for higher rate scans
-
MGH_2017.09.18_Normalization
- Quarterly update
-
MGH_2018.02.02_Normalization
- "Quarterly" normalization, can be used with scans preceeding it (no hardware update)
-
MGH_2018.07.11_Normalization
- "Quarterly" normalization, can be used with scans preceeding it (no hardware update)
Acquiring a normalization data set
- Fill the Normalization Phantom with F-18
- Calculate the activity to be injected into the phantom such that it will have 500 uCi of F18 at the start of the scan.
- Record the activity injected into the phantom along with the time it was measured.
- Leave a small air bubble in the tank.
- Roll the tank on the floor for 2-3 minutes to ensure an even mixture.
- Add more water to the tank to remove the air bubble
- Place the phantom in the NeuroPET/CT bore liner
- Use the foam inserts to axially center the phantom
- The front edge of the phantom should stick out from the laser line by 57.5 mm (see diagram)
- Register a new patient
- Patient Last Name: Normalization
- Leave rest blank
- Protocol
- Select the Normalization protocol
- Scan Duration: 7200 seconds
- Options: Option 3
- All other values are ignored.
- Dose Info
Isotope: Fluorine-18
RadioPharm: Fluorodeoxyglucose F-18
Assay Dose: _____ Time: __:__:__
Remaining Dose: _____ Time: __:__:__
- Begin scan and allow the acquisition to complete
- Allow the normalization reconstruction to complete
- Connecting the normalization (must be connected manually)
- From the Workstation open a Linux terminal window to the scanner
cd /data/Calibration
ls –ltr
- You should see 1 new folder:
SN001_<acquisition_datetime>_<recon_date_time>
- Remove the current normalization links
rm CurrentMaps
- Note: Do not use the –rf option on the rm
- Note: Do not include a / at the end of the link name
- Create links to the new normalization folder
ln –s SN001_<acquisition_datetime>_<recon_date_time> CurrentMaps
ls –ltr
- Confirm the normalization links are pointing to the correct folders.
For both the full calibration or the cal check, a Ge-68 tank should be placed in the center of the bore. Use the back lasers to align in x-y plane. For the z-axis, align the handle of the tank such that the front, rotating laser hits the bars (the tank will be further into the bore than for a normal scan).
If putting the tank directly in the bore, support with half-annulus of foam,
and do not place as far into scanner: laser should hit between the edge and the tick mark, as shown in the second photo.
Note: this is no longer recommended due to the weight it places on the bore liner
In the top GUI menubar, select Calibration→PET. A window will appear. Fill in the information using Ge-68 as the isotope and radiopharmaceutical. Preferably, enter the dose on the tank (use the form on the calculations page), but it is also okay to enter 0 for the dose and remaining dose. No need to enter a date/time, it will just use calibration start time. Start Daily QC or Start Full Calibration as desired. The daily QC (“cal check”) takes about 10-15 minutes, full calibration takes about 45 minutes. After the calibration has already started, a second "Start PET protocol" window will pop up. Just ignore it and don't push either button. Daily QC should be done any day there will be scanning, full calibration should be done weekly or biweekly. The status will start at "400" and go until "411". When it is done it will be "1000". To check that the cal check finished successfully: Use putty to ssh to proto02 and enter the following commands:
cd /data/Calibration/ ls –ltrYou should see
CalCheck_SN001_[date]_[time]_Success
. If it says “InProgress” wait for the test to finish.
If it says “Failed”, or stays at "InProgress" for too long, contact PDSi for service, or try restarting scanner and calibrating again.
You can also check in the “Reports” directory for details:
cd /data/Calibration/Reports less Cal_Report_SN001_[date]_[time].txtAll tests should show
PASS
Short Version
- Position scanner as desired, with -5cm and +22cm of clearance and zero
- Patient Registration tab → Manual → Enter Name (and other relevant info) → Register
- Acquisition tab → Protocol → Click "head" dot → Select desired protocol
- Edit protocol if necessary
- Enter dose, or 0 if dose is unknown, and click Begin
- If CT-first
- Pop says to move scanner 5mm. Don't, just start
- CT scan must be started from scanner touch screen
- If PET-only
- Click continue to put into PET mode -- scanner will move into position
- Click start to begin listmode acquisition
- Let scan reconstruct, or click Cancel Scan, Cancel Exam, Finalize
- Wait until "Recon State" says "3 Prebinner" before canceling
- Ignore "Last PET scan failed" message, it's not real
- Copy scan to proto08 (recon computer)
-
rsync -varP /data/master/[patientID] proto08:/data/master/
-
See bottom for troubleshooting steps.
*** For scans longer than 1 hour, follow these instructions after starting the scan ***
"Full" version
Setting up and starting a scan.
- Before starting any scans, make sure CT Daily Cal is "New" (shown on touch screen). If it is "Fresh" or "Old", run the CT air calibration:
- Nothing should be in the bore
- The scanner position should be at ZERO for this step
- Move the scanner to the left or right using the touch screen arrows as needed and press "Zero Ref."
- Any subsequent PET-only scans will use the most recent CT position number as the starting point, so it is best to be at 0
- On the touch screen, press "Select Cal", then "Daily cal" and "Accept Protocol". Press "Start Daily Cal". The CT will start in 10 seconds and run for about 5-6 minutes, and should end up in the "New" state
- Position the scanner in the desired location, but note that the scanner will move 5mm towards the subject for the PET scan, and will move 22 cm away during the CT scan, so leave enough clearance.
- Press "Zero Ref"
- Use the "Laser On" touch screen button to show the location of the first PET crystals
- Use the physical laser button (next to the transport switch) to turn on the left/right and up/down lasers for positioning
- Turn on Workstation laptop and open GUI (normally it is up and running already)
- On the Workstation laptop, select the "Patient Registration" tab. Choose "Manual" entry
- Right now, all scans are to be entered as separate patients
- Double click on the topmost field and enter descriptive information for First and/or Last name, and any other information to be saved to the DICOM/protocol file (fields are not required)
- Click "Register"
- On the "Acquisition" tab, select "Protocol", then click on the circle in the head (all protocol are store in the head)
- Select the desired protocol, or one which closest fits your needs
- Edit the protocol as desired -- it is not currently possible to do PET then CT in one patient/protocol. Options are
- PET only
- CT - PET (this PET can be short, if only CT is desired)
- Enter the dose -- you cannot start the scan until the dose is entered. If the injection will take place at the start of the scan, just enter zero
- Once the protocol is ready, click "Begin"
- If doing CT scan first:
- After selecting begin, instructions say to move to 5mm. Don't do this. Just choose to start the CT
- Wait for green dot, means that CT is ready
- Push start button on scanner touch screen after making sure room is clear of people
- Scan will start in 10 seconds
- Scanner will step backwards in 10mm increments, will take 48-120 seconds, depending on resolution chosen (2, 4, or 6 sec/step)
- CT images will be displayed just after each slice is acquired
- Once CT is done, will prompt to start PET, first button, "continue" will put scanner into PET mode, but not yet start the acquisition
- CT gantry must first home (can take up to 1 minute), black bore liner retracts, scanner moves from +200mm to -45mm
- Second button will start listmode acquisition
- If doing a simultaneous start PET/inject tracer, then this is the button that gets pressed during injection
- If doing a PET-only scan:
- On the next pop up, clicking "Continue" will start setting up the scanner for PET.
- The black bore liner will move in and the scanner will move to position -45mm
- The scanner is now ready to acquire PET data, as soon as you press "Start"
- If doing a simultaneous start PET/inject tracer, then this is the button that gets pressed during injection
- Rate plots show singles, prompts, randoms, and deadtime
- It can be useful to right-click on these and save screenshots for later reference
- On the next pop up, clicking "Continue" will start setting up the scanner for PET.
- Rate plots show singles, prompts, randoms, and deadtime
- It can be useful to right-click on these and save screenshots for later reference
- After the PET scan is done, it will automatically start reconstructing
- If there are no more scans planned, let this continue
- If there are scans within the next 1.5 hours, cancel scan, cancel exam, finalize
- Wait until "Recon State" says "3 Prebinner" before canceling
- An error message "Last PET scan failed" will likely pop up any time you do this. It is normal.
- Copy scan to proto08 (recon computer) using putty terminal logged onto "proto02"
-
rsync -varP /data/master/[patientID] proto08:/data/master/
-
Quirks and troubleshooting:
Less than 3.3 mCi in FOV, or coincidence logic can't keep up with data acquisition.
PET-only scans:
- Use the starting position from the most recent CT scan or CT calibration. Make sure those were at zero.
- Will not show up in the database, so they can't be reconstructed from the GUI
- If using a separate CT scan for attenuation, it will need to be copied to the CT_Dicom file of the PET directory
CT-only scans:
- Not recommended
- The CT images will not be copied from the CT computer and will have the wrong names for use in attenuation
- For any scan where only a CT is needed, add a short (but at least 20 second) PET scan to the protocol
- The CT files will be copied to the PET directory that is created during the PET, which is easily accessible
Force stop: To stop motion or CT, press and turn emergency stop.
Fault state (red): Can often be cleared by raising onto wheels and lowering back to treads. Can also be cleared with e-stop (press and turn).
If other recovery options have failed, follow the procedure in the manual (or click link below) for "Getting Out of a Bad State -- Basic Restart"
If the system is in a mysterious and unpleasant state, attempt a kinder, gentler shut down from the workstation as follows.
Shut down the CereTom CT scanner.
Use ALT-TAB to cycle through windows until you find the Windows Desktop. From the Start Menu, chose Remote Desktop Connection to 192.1.1.100 (user CERETOM, password) and scroll down to see the scanner.exe process running. Close all of the program windows to kill the process.
Shutdown and restart the NeuroPET II system.
Use ALT-TAB to cycle through windows until you find a Putty terminal. Run a series of initialization, shutdown and restart scripts by typing the following:
pdsi_setup <enter> SystemShutdown.sh <enter> SystemStartup <enter>
Restart the CereTom CT scanner.
Return via ALT-TAB to the Windows Desktop window (where you killed scanner.exe) and restart the scanner by double-clicking on the scanner.exe desktop icon.
If all goes well, you should see the Blue Dot of Happiness (indicating IDLE status) restored on the touchscreen, and the message “ready for protocol” appearing in the field labeled scanner.exe PET Scan State.
Restart the workstation GUI.
The GUI is still running on the workstation. From the pull-down File menu at the top left of the GUI home window, choose Restart Application.
If the scanner seems okay but GUI is still acting weird, go into task manager and make sure there is only one GUI process running. If there is more than one, stop them all and open GUI again from link on desktop
IN DEVELOPMENT
Using the reconstruction GUI on proto08
Log into proto08 as usual.
Open a VNCviewer window vncviewer :1 &
.
If GUI is not yet running, open terminal window, setup environment using pdsi_setup
.
Open GUI using npctOfflineGui
.
Each tab of the GUI is explained below:
Patient browser
Search looks for patient name as entered in GUI
Scan must have normalization associated with it -- date of scan must be within the date range of one of the normalizations in the Normalization tab.
List of running and queue jobs.
Priority of jobs can be increased/decreased
*** deleting a job deletes the entire series ***
"Dataset" is actual scan data (list mode and such)
"Fileset" is the final normalization files used during reconstruction of a scan
Normalization dataset can be added and reconstructed to generate normalization fileset, or an existing filest can be loaded (with correct reconstruction software version)
"Update dataset" can be used to modify the time range for that normalization data to be used. To include multiple time ranges, add the
same dataset but with a new name.
ssh [email protected] pdsi_setup
You can also just use pdsi_setup /PDSI/base/pet/[otherversion]
if you want to set up the reconstruction using a different software version.
Check that there is not another reconstruction already in progress:
ps -fu daq
If ImagingChain2
is running, wait until it is done, or if it is okay to stop it, run ImagingChainStop.sh
All scans are stored in /data/master
. Go to the desired scan:
cd /data/master/[patient]/[study]/[series]
In the [series].prot
file make sure the line global.parameters.id.patient=
has the correct patient name (scans on proto08 are generally renamed to something more informative).
Version 38 +: In the [series].prot
file make sure the line global.parameters.id.patientdir=
has the correct patient name.
Create a new series, so as not to overwrite existing reconstructions:
ManageSeries -new [patient]/[study]/[series]:[newSeriesName]:[newNonAcSeriesName]
Creating a new series in V38+ has different syntax:
ManageSeries -newdir [patientdir]/[studydir]/[seriesdir]:[newSeriesDirName]
The series will appear under the [study]
directory.
From within the new series directory, check that the protocol is set up correctly.
Some lines that possibly need to be changed are the scale and shift parameters (sometimes they default to (null)
and certain versions of the reconstruction don't work unless the numbers are specified).
Optimal scale and shift parameters (the default are probably okay now):
ac.parameter.mumapScaleXY.float=1 ac.parameter.mumapScaleZ.float=1.04 ac.parameter.mumapShiftX.float=1 ac.parameter.mumapShiftY.float=0 ac.parameter.mumapShiftZ.float=-2.3 recon.parameter.ScaleXY.float=1.013 recon.parameter.ScaleZ.float=0.98 recon.parameter.ShiftX.float=1 #was 0 recon.parameter.ShiftY.float=0 #was -1 recon.parameter.ShiftZ.float=-2
Other places to update the protocol file (newer scans will have most of these already set up):
... InterFilterKernelSize=1.250000 InterFilterType=1 ... PixelSize=1 # 0=2 mm (128x128), 1=1 mm (256z256), 2=4 mm (64x64) ... PostFilterKernelSize=1.850000 #can set to zeros if do not want final smoothing PostFilterType=1 ... RecipeName=MLEM_256_1.recipe # Recipes are in /PDSI/base/pet/Current64/build/Recipe #Name should match PixelSize (e.g., PixelSize=0 &rarrow; MLEM_128_2.recipe) #Name should match ThreeDIterationType (e.g, ThreeDIterationType=2 (FBP) &rarrow; FBP_128_2.recipe) ... ReconACType=2 # 0=No recon, 1=non-AC only, 2=AC only, 3=AC and non-AC ... ScanType=STATIC # can also be DYNAMIC, and the Frames.txt files is used for setting the time frames ... ThreeDIterationType=1 # 0 for OSEM (in development), 1 for MLEM, 2 for FBP ... recon.parameter.NIter.int=100
Make sure that /data/Calibration/CurrentMaps
soft link points to a normalization that matches the scan. Directories are labeled with datetime that normalization was acquired, and date_time it was processed. The mcf*.txt files indicate parameters used in the creation. The energy and timing cuts must be set in the recipe to match one of the normalizations in CurrentMaps, e.g. Norm_256x215.17x116.9_92x51x256x256_400-650_10.mat is the normalization for reconstructions using 256x256 grid, ECutLow = 400, ECutHigh = 650 and TimingCut = 10.
To change the link to a different normalization:
rm /data/Calibration/CurrentMaps # Note: no trailing "/" ! ; ln -s /data/Calibration/[desired_norm_dir] /data/Calibration/CurrentMaps
If the reconstruction should be dynamic, edit the Frames.txt
file to use the desired time frames.
Note that each frame has a start time and duration (not start and end times). Also, frames cannot overlap, but there can be gap between frames.
Edit the protocol file to indicate that it should de dynamic,
ScanType=DYNAMIC
,
otherwise the Frames.txt file will be ignored!
Once the protocol file is setup as desired, start the reconstruction chain, and check that it is working:
nohup ImagingChain2 [series].prot &> output[date].txt & ; less output[date].txt
Each frames takes about 30 minutes to complete.
To stop a reconstruction that is running:
ImagingChainStop.sh
Check that all associated Matlab processes have also stopped:
ps -fu daq
If any processes remain, kill them!
Debugging:
If the reconstruction stops prematurely, check the log file (output[date].txt
) for error messages. Make sure that the recipe selected in the protocol file, RecipeName=[Name]
, has parameters
bin.parameter.TimingCut.float=10 bin.parameter.ECutLow.float=400 bin.parameter.ECutHigh.float=650
that match those of the calibration that is linked to under /data/Calibration
. (Recipes are in /PDSI/base/pet/Current64/build/Recipe/
.)
The calibration file that is used will be CurrentMaps
for newer recon software or CurrentXMap, CurrentEMap, CurrentNorm
for older reconstructions (soft linked to the actual directories).
The recipes in /PDSI/base/pet/Current64/build/Recipe/
can be edited,
although it is best to create a copy of the recipe with a descriptive name and edit that.
Just make sure to update the .prot
file with the correct recipe under RecipeName
.
For instance, to turn off scatter correction, change
global.control.scatterVersion.int=11to
global.control.scatterVersion.int=0If the reconstruction finishes binning and then fails (e.g. tries to do AC, but finds no CT scan), you can restart from after the binning (and save a lot of time) by changing
global.control.binnerVersion.int=4to
global.control.binnerVersion.int=0
Place Ge-68 tank in scanner, centered as best as possible. The front laser should hit about 1 cm below the start of the Ge tank.
Scan the tank using the Ge tank, 15 minute protocol. This includes both standard CT and 15 minutes of PET.
Let the scan reconstruct with the default recipe (should be MLEM_256_1.recipe)
Run the uniformity script:
pdsi_setup /PDSI/base/pet/Current64/; cd /PDSI/base/pet/Current64/PerformanceMeasurement/uniformity
Create a config file for the Ge tank scan, and edit for correct patient, study, series
cp [olderfile].cfg sn001GeTank[scandate].cfg emacs sn001GeTank[scandate].cfg #edit the patient, study, and series name matlab -nodesktop -nodisplay -nosplash -r "pmUnifRun('sn001GeTank[scandate].cfg'); exit"
A file named unifReport.pdf
will be created, along with the same file date/time stamped
Plot the singles, delayed, and victims rates of a given scan
Move to grogg
directory on proto08 or proto02, then run matlab plotting code:
cd ~/grogg matlab -nodesktop -nodisplay -nosplash -r "plotSinglesVsTime('','',''); exit"
Inside the single quotes, put the subject, study, and series names.
The code will generate pdf files of the plots in the same directory where the code was run.
The file names are based on the patient directory name.
An epoch is 6 seconds.
This is no longer required (2016.06.01)
to be done after every NeuroPET/CT reboot ***
Below are instructions on how to disable the gating packets for each module on the scanner after a reboot.
*** This is to prevent a dead time issue – i.e. it is very important ***
-
From the scanner’s Main Computer (proto02) open a telnet session to one module at a time using port 2024
- The modules are named module01 to module07.
- It should not ask for a user name or password
- Example:
telnet module03 2024
- Issue a “
SET_MONGOOSE FALSE
” command.- All caps
- The telnet session is not happy with back spaces so type slowly.
- If you type incorrectly is it best to close the telnet session with Control-D and open a new one.
- For some odd reason you have to enter 2 blank spaces before the command. So the command you type is actually “
SET_MONGOOSE FALSE
” - e. When you enter the command it will echo the command you entered (minus the two extra chars). If the echoed command is all you get then it was successful.
- If you spell it wrong or forget to add the two spaces it will tell you the command is unrecognized.
- After you successfully enter the
SET_MONGOOSE
command use control-D to exit the telnet session - Release for module01 to module07.
- Make sure you get all 7 modules.
Example session:
telnet module01 2024 Trying 10.10.1.2... Connected to module01. Escape character is '^]'. SET_MONGOOSE FALSE SET_MONGOOSE=FALSE <control-D> Connection closed by foreign host.
Log files
On CT computer -- C:/NeuroLogica/CereTom/bin/
On PET computer -- /PDSI/local/Logs/