Scanco User Instructions: Difference between revisions

From bone.wiki
Jump to navigation Jump to search
Line 2,210: Line 2,210:
[[Image:Redirect.jpg|15px]] [[#top| ''Return to Contents'']]
[[Image:Redirect.jpg|15px]] [[#top| ''Return to Contents'']]


===Full Tap===
===Initialize a New Tape===
Put a new tape into the tape drive, then press "Initialize", this will format (erase) everything on the tape.  When prompted for a label for the tape, follow the [[Scanco_User_Instructions#Tape_Label_Convention|'''Tape Label Convention''']].  The tape can now be mounted for use.<br>


===Initializing a New Tape===
[[File:Uct_backup_pic02.jpg|400px]]
 
 
===Full Tape===
A tape automatically ejects during a backup procedure if it becomes full.  Remove the tape and write protect it (orange indicator will be displayed).  Exit the disk-utility program.  Start a new instance of the program.  [[Scanco_User_Instructions#Initialize_a_New_Tape|'''Initialize a New Tape''']].  Backup any remaining files.
 
[[File:Uct_backup_pic03.jpg]]
 
 
[[Image:Redirect.jpg|15px]] [[#top| ''Return to Contents'']]


==Raw Data Backup==
==Raw Data Backup==
*Ideally 1-2 days after scanning, not more than a week.
*Ideally 1-2 week after scanning.
*RSQ files are backed up onto RAW tapes (see [[Scanco_User_Instructions#Tape_Label_Convention|'''Tape Label Convention''']]).  Put the most recent RAW tape into the tape drive, then press "Mount".
*Show "Current (with RAW)", use the file filter (Measurement:    ) to search for your files (e.g., CAMOS) and press enter or press "Update List". 
*Select all the files to backup by highlighting them using the left mouse button and ctrl to select individual files or shift to select a range. 
*Highlight RAW, choose "Move To" and "Tape".  Press "Start...". 
*When the backup is complete press "Dismount" to eject the tape.
*If the tape auto-ejected without pressing "Dismount" then the tape is full (see [[Scanco_User_Instructions#Full_Tape|'''Full Tape''']]).
*If you select multiple files, be sure they all need to be backed up, otherwise you will get an error.
:[[File:Uct_backup_pic04.jpg|500px]]
 
 
[[Image:Redirect.jpg|15px]] [[#top| ''Return to Contents'']]


==Image Data Backup==  
==Image Data Backup==  
*Ideally 1-2 months after scanning, after contouring and onsite analysis.
*Ideally 1-2 months after scanning, after contouring, onsite analysis and copied image data to project disk.


#'''Delete ISQ After Evaluation'''
#*ISQ files are normally deleted after completing your evaluation since they are very large files and can be reconstructed from the RSQ file.
#*Show "Current (on Disk)", type the beginning of your sample name (e.g., CAMOS) in the file filter and press enter or press "Update List".
#*Select all the files for which you have completed the evaluation (there will be a + sign next to any scan that has been evaluated).  #*Highlight IMA, choose "Move To" and "Trash". 
#*[[File:Important.JPG|20px]] After you choose the trash symbol, you will now be given the option to select specific file types, choose "Select" and "ISQ".  Press "Start...".
#*Only choose one file type to delete at a time. The wildcard (*) indicate all files other than "ISQ" and "AIM" files.
#:[[File:Uct_backup_pic05.jpg|500px]]
#:<br>
#'''Backup IMAGE Data'''
#*AIM, GOBJ and other evaluation files are backed up onto IMA tapes (see [[Scanco_User_Instructions#Tape_Label_Convention|'''Tape Label Convention''']]). 
#*Put the most recent IMA tape into the tape drive, then press "Mount".
#*Show "Current (on Disk)", type in the beginning of your sample names (e.g., CAMOS) in the file filter and press enter or press "Update List".
#*Select all the files to backup by highlighting them using the left mouse button and ctrl to select individual files or shift to select a range. 
#*Highlight IMA, choose "Move To" and "Tape".  Press "Start...". 
#*When the backup is complete press "Dismount" to eject the tape. 
#*If the tape auto-ejected without pressing "Dismount" then the tape is full (see [[Scanco_User_Instructions#Full_Tape|'''Full Tape''']]).
#:[[File:Uct_backup_pic06.jpg|500px]]





Revision as of 13:01, 11 December 2020

The micro-CT scanners in the lab are manufactured by Scanco Medical and most analyses are performed using their custom software. The micro-CT workstations run OpenVMS as its operating system and it is useful to learn some basic commands.

OpenVMS Basics

OpenVMS

OpenVMS (informally known as VMS) is a high-end computer server operating system with reliable, multitasking, real-time and batch processing. OpenVMS supports computer clustering via a LAN, enabling computers to share resources such as processors and disks to balance workload efficiently.


Session Manager

The session manager automatically starts after a user logs in locally. For remote sessions, the session manager can be started with the command $ vue .

Session

Here you will find an option to "End Session", which you should do when you are finished using a workstation. You can click "Work in Progress..." when you have to leave in the middle of a session without logging out but showing a work in progress screen to other users to prevent interference.

Views (directory shortcuts)

The session manager is a graphical user interface that can be used to navigate directories (left side of session manager) and open files (right side of session manager). There are shortcuts to key directories under "Views". Single-click on a directory to list its subdirectories and files. Double-click on a file to open it.

Commands and Utilities

Under commands you will find tools such as copy, delete, and rename; however, it is much more practical to do these sorts of operations from a DEC terminal.

Applications

Under applications you can launch various applications including:

  • DECterm: opens a DEC terminal
  • MICROCT: opens the micro-ct control panel (buttons for Scanco Medical programs)
  • Mozilla/Netscape: opens a web browser
  • XV: opens a screen capture program


Return to Contents

DEC Terminal and Digital Command Language (DCL)

This is a DEC terminal: Commands issued in a DEC terminal are DCL commands.

Copy and paste using the mouse in DEC terminal

In the DEC terminal, you can highlight text by holding down and moving the mouse. Highlighted text can be pasted into applications or in the terminal using the middle mouse button. You can also highlight files in the Session Manager and paste the filename (with its full path) using the middle mouse button.


Return to Contents

What is a symbol

DCL can store information such as strings or integers in "symbols". DCL can also manipulate these symbols to create other symbols. Symbols are primarily used to define short strings that replace long commands, perform certain calculations and replacements within DCL procedures, hold status information.

$ UR == "SET DEFAULT DISK4:[BONELAB.PROJECTS]"	!A short hand to change locations to the project disk.
$ UR :== SET DEFAULT DISK4:[BONELAB.PROJECTS]	!Another way to define the symbol without quotations.
$ x == 3	                                !Store the value 3 in the symbol x.
$ SHOW SYMBOL x                                 !Displays the value of the specified symbol, x.
$ DELETE/SYMBOL/GLOBAL x                        !Deletes the specified symbol, x.

Selected symbols on the Scanco system:

$ UD	                            !Changes to the data directory.
$ UR	                            !Changes to the projects directory.
$ DISKS	                            !Shows the current disk usage.
$ DEC                               !Opens a new DEC terminal.
$ EVE file.txt                      !Opens the file in the text editor.
$ AIX file.aim                      !Shows the processing log for an aim file. 
$ AIX -L file.aim                   !The "-L" is used to show the full processing log.
$ QUE	                            !Shows all entries in the queue.
$ GS file.ps or file.pdf            !Opens *.ps and *.pdf files in GhostScript.
$ CTHEADER file.isq or file.rsq     !Shows scan information for an *.isq or *.rsq file.


Return to Contents

What is a logical

Logical names are strings, like symbols, but can be passed into programs whereas symbols can usually only be interpreted by the command line interpreter. For example, if the logical name UD was defined to be DISK2:[XTREMECT2.DATA] then UD: could be used as a substitute when entering the path to search for files from within a program.

$ DEFINE UD DISK2:[XTREMECT2.DATA]   !Defines a logical ud to point to the data directory.
$ DEFINE uct_default_isq myfile.isq  !Defines the default isq file for Scanco Medical programs. The isq filename must contain the full path to the file to be evaluated, whereas the path can be left out if you just want to contour the scan.

Selected logicals on the micro-CT system:

COM            !Logical pointing to the commands directory IDISK1:[XTREMECT2.COMMANDS]
UD             !Logical pointing to the data directory DISK2:[XTREMECT2.DATA]
UD6            !Logical pointing to the data directory DISK6:[XTREMECT2.DATA]
UR             !Logical pointing to the projects directory DISK4:[BONELAB.PROJECTS]
UE             !Logical pointing to the evaluation script directory MICROCT_ROOT:[EVAL]
UU             !Logical pointing to the templates directory MICROCT_ROOT:[UIL]
UCT_RESULTS    !Logical pointing to the results directory MICROCT_USER:[RESULTS]


Return to Contents

Arithmetic operations

Addition + The plus sign (+) adds two numbers.
Subtraction - The minus sign (-) subtracts the second specified number from the first specified number.
Multiplication * The asterisk (*) multiplies two numbers.
Division / The slash (/) divides the first specified number by the second specified number. If a number does not divide evenly, the remainder is lost. No rounding takes place.


Return to Contents

Logical expressions

And .AND. The operator .AND. combines two logical values as follows

true .AND. true = true
true .AND. false = false
false .AND. true = false
false .AND. false = false

Or .OR. The operator .OR. combines two logical values as follows

true .OR. true = true
true .OR. false = true
false .OR. true = true
false .OR. false = false

Not .NOT. The operator .NOT. reverses the bit configuration of a logical value. A true value becomes false and a false value becomes true.


Return to Contents

Numeric comparisons

Equal to .EQ. Compares one number to another for equality.
Not equal .NE. Compares one number to another for inequality.
Greater than .GT. Compares one number to another for a greater value in the first number.
Greater than or equal to .GE. Compares one number to another for greater or equal value in the first number.
Less than or equal to .LE. Compares one number to another for a lesser or equal value in the first number.
Less than .LT. Compares one number to another for a lesser value in the first number.


Return to Contents

String comparisons

The operators for string comparisons are the same as for numeric comparisons with an added "S" for string.

Equal to .EQS. Compares one character string to another for equality.
Not equal .NES. Compares one character string to another for inequality.
Greater than .GTS. Compares one character string to another for a greater value in the first specified string.
Greater than or equal to .GES. Compares one character string to another for greater or equal value in the first specified string.
Less than or equal to .LES. Compares one character string to another for a lesser or equal value in the first specified string.
Less than .LTS. Compares one character string to another for a lesser value in the first specified string.


Return to Contents

DCL Programming Guide

The OpenVMS systems allow for scripts to be written in a language called DCL (DIGITAL Command Language). It was not designed to be more difficult than other scripting languages, but learning any new programming language comes with its learning curve.

  • DCL has 243 commands, but most programs can be written with a base set of about 20 commands. The goal of this section is to provide a convenient reference for these commonly-used commands.

It is recommended to open a text editor, enter the whole series of commands, and then run them as a whole program. The terminal on OpenVMS is technically a DCL interpreter, so these commands could be typed in sequence into a terminal with the same result. Typing code interactively is helpful when testing a small code snippet in more detail.

Your First DCL Script

Ever since Kernighan and Ritchie wrote the book "The C Programming Language", it has been custom to start with a program that prints the text "Hello, world" to the screen. Open a text editor (for example "EVE") and enter the text below.

$! My First DCL Script
$ mymessage = "Hello, world"
$ WRITE SYS$OUTPUT mymessage
$ EXIT

Now save the file as HELLO1.COM, and run it using

$ @HELLO1.COM

Several things are happening in the above program:

  • Comment !: The exclamation mark can appear anywhere on the line, and everything following the mark will be treated as a comment.
  • Variable: "mymessage" variable is populated with the string "Hello, world", which can be used in the rest of the script.
  • Command "WRITE" send text to various places, in this case to "SYS$OUTPUT", that is to the standard output (i.e. screen).
  • EXIT command tells the DCL interpreter that the script is done and we should exit.
  • Commands in DCL are NOT case sensitive, so the command "write sys$output mymessage" would produce the exact same result, but by convention we write commands in all uppercase.
  • Special Comment !! automatically prints the contents of the comment to the screen/logfile. It is useful when you want to know what part of the script you are in.

Basic Arithmetic

The DCL language supports several types of data in variables. In the "Hello, world" example above, we saw how to store a string in a variable. We could have stored an integer, that is a positive or negative whole number, in the variable, and done some basic math.

$ i = 1
$ WRITE SYS$OUTPUT i+1
$ j = 3
$ k = j * (i + 1)
$ WRITE SYS$OUTPUT k
$ WRITE SYS$OUTPUT (k / 4)
$ WRITE SYS$OUTPUT 2 + 2 * 2
$ EXIT
will return:

2
6
1
6

Two things are worth noting.

  • Because we are limited to integers, division of 6 / 4 needs to return an integer (1.5 is not an integer); the value is truncated, which means rounding is always done toward zero.
  • Order of operations is done in the "correct" order, and not left-to-right, so "2 + 2 * 2" is interpreted as "2 + (2 * 2)".

Conditional Statements

Sooner or later, you will want to run a program with some logic. The general syntax is:

IF [condition]
THEN
  [do something]
ELSE
  [do something else]
ENDIF
  • The "ELSE" component is optional.
  • If you need a very simple if..then with only one command, it can be written on one line without the "ENDIF":
IF [condition] THEN [do something]

Loops

Most programming languages have 3 kinds of loops:

  • Precondition Loops: Condition is tested at the beginning of the loop
  • Postcondition Loops: Condition is tested after the loop has executed at least once
  • Iterative Loops: A variable changes in a predetermined fashion each time the loop is called.

DCL has none of these. Instead, it has the concept of a "label" and the "GOTO" command. A loop in DCL would look like this:

$ i = 1
$loop1:
$   IF i .GE. 10 THEN GOTO exitloop1
$   WRITE SYS$OUTPUT i
$   i = i + 1
$   GOTO loop1
$exitloop1:
$ EXIT

This program will print the numbers from 1 to 10 in sequence.

Subroutines

Most programming languages allow to define a set of commands that can be called from various parts of the program.

  • In DCL, the subroutine can be defined anywhere in the file (unlike C or Python, where the definition must precede the call).
$ CALL mycustomsub Joe
$ CALL mycustomsub Mary
$ EXIT
$mycustomsub: SUBROUTINE
$ WRITE SYS$OUTPUT "Hello, ", P1, "!"
$ EXIT
$ ENDSUBROUTINE

The first line calls a subroutine named "mycustomsub", which jumps execution to the 4th line. The parameters after the name of the function get copied over to local variables named "P1", "P2", "P3" etc. (in this example, only one parameter, but the maximum is 8) that are available to the subroutine. Note that the command "WRITE" accepts several arguments separated by commas, which get printed on one line.

  • The subroutine should be terminated with the command "EXIT" followed by "ENDSUBROUTINE".
  • Note that the parameters get passed literally to the subroutine, that is the subroutine gets the text "Joe", and not the contents of a variable named "Joe".
  • To force symbol substitution, the parameter would need to be enclosed in single quotes.
$ Joe = "Joe Smith"
$ Mary = "Mary Jane"
$ CALL mycustomsub 'Joe'
$ CALL mycustomsub 'Mary'
$ EXIT
$mycustomsub: SUBROUTINE
$ WRITE SYS$OUTPUT "Hello, ", P1, "!"
$ EXIT
$ ENDSUBROUTINE

Reading from files

Sometimes you have a list of files (for example Micro-CT scans) that are to be processed in a certain way. The obvious way is to copy-paste the code several times, changing only the name of the file, but this is error-prone and inefficient.

  • A better way is to put the list of models into a text file, and then call a subroutine on each model file. For example:
$ CLOSE/NOLOG foo
$ OPEN/READ foo DISK3:[MICROCT.PROJECTS.OWOC.COM]MYLIST.TXT
$read_loop:
$   READ/END=done foo myline
$   CALL process_me 'myline'
$   GOTO read_loop
$done:
$ CLOSE/NOLOG foo
$ EXIT
$process_me: SUBROUTINE
$ scriptname = DISK3:[MICROCT.PROJECTS.OWOC.COM]MYSCRIPT.COM
$ SUBMIT/NOPRINT/QUE=SYS$FAST/PARAM='P1' 'scriptname'
$ EXIT
$ ENDSUBROUTINE
  • The first line closes the file handle, in case it was left open in a previous script.
  • The second opens the file "MYLIST.TXT" for reading, and assigns the open file a handle named "foo".
  • A loop reads the file line-by-line, calling a subroutine with the contents of each line.
  • When the end of the file is reached, the file is closed and the script exits.


Return to Contents

List of common commands

$ VUE	                            !Start the session manager. Press enter after to regain prompt.
$ DEC	                            !Open a new DEC terminal
$ UCT	                            !Open the micro-CT control panel.
$ UCT_SAMPLE	                    !Start µCT Samples.
$ UCT_MEASUREMENT	            !Start µCT Tomography.
$ UCT_EVALUATION	            !Start µCT Evaluation Program.
$ UCT_3D	                    !Start µCT Ray.
$ UCT_BACKUP	                    !Start µCT Disk-Utility.
$ CD UD	                            !Change location to the data directory.
$ CD UR	                            !Change location to the projects directory.
$ CD SYS$SCRATCH	            !Change location to the scratch directory.
$ CD UCT_RESULTS	            !Change location to the results directory.
$ DIR UE	                    !List files in the evaluation directory.
$ DIR UU	                    !List files in the templates directory.
$ DIR COM	                    !List files in the commands directory.
$ UCT_LIST	                    !Extract results from the database.
$ AIX -L	                    !View the header of an AIM file.
$ CTHEADER	                    !View the header of an RSQ or ISQ file.
$ EVE	                            !Start the text editor.
$ DISKS		                    !Show the current disk usage (all hard drives).
$ LOGOUT	                    !End a session. For remote sessions, logout from the main (initial) login terminal.

How to move to a different directory

Use the SET DEFAULT command. You can use an absolute directory path or a relative directory path.

$ SET DEFAULT disk:[dir.subdir]	      !Moves to specified path.
$ SET DEFAULT [.subdir]		      !Moves one level into subdirectory subdir.

Use the CD (i.e., change directory) command (this calls the script $ @SCOM:CD.COM).

$ CD subdir	                      !Moves into subdirectory subdir.
$ CD subdir1 subdir2	              !Moves into subdirectory subdir1, then into subdir2.
$ CD ..		                      !Moves up one level (i.e., out of one directory).


Return to Contents

How to list the files in a directory

Use the DIRECTORY command, which may be abbreviated to DIR.

$ DIR		                      !List everything in the current directory.
$ DIR disk:[dir.subdir]		      !Lists everything in the specified directory.
$ DIR disk:[dir.subdir...]	      !Lists everything in the specified directory and subdirectories. 
$ DIR/COL=1 *.aim	              !Lists all files with the extension .aim in a single column.
$ DIR /VERSIONS=1	              !Show only the newest version of each file in the directory.
$ DIR/SINCE=TODAY		      !Lists all files created today.
$ DIR [...*.aim]                      !The "..." indicates to do so recursively (i.e., counting all files in all subdirectories).
$ DIR/SIZE	                      !Lists each file and its size.
$ dir/size/grand_total [.subdir...]   !List the total size of all files in the SUBDIR directory. 
$ HELP DIR	                      !More information on the DIRECTORY command.


Return to Contents

How to copy files

Use the COPY or BACKUP command.

$ COPY file1.ext disk:[dir.subdir1]file2.ext          !Make a copy of file1.ext to another location and call it file2.ext
$ COPY *.aim;* disk:[dir.subdir1]	              !Copy all .aim files (including all versions) to another location keeping the same name.
$ HELP COPY		                              !More information on the COPY command.
$ BACKUP/VERIFY [.subdir1...]*.*;* [.subdir2...]      !Copy entire directory SUBDIR1, including all subdirectories and files, into SUBDIR2.
$ BACKUP/VERIFY [.subdir1...]*.*;* []subdir1.sav/SAVE !Copy entire directory SUBDIR1, including all subdirectories and files, into a save set. The save set could be transferred and unpacked on another OpenVMS machine.
$ HELP BACKUP		                              !More information on the BACKUP command.


Return to Contents

How to delete files

Use the DELETE command, which may be abbreviated to DEL.

$ DEL myfile.txt;	              !Delete the most recent version of myfile.txt.
$ DEL myfile.txt;*	              !Delete all versions of myfile.txt.
$ HELP DELETE		              !More information on the DELETE command.

Warning: Extreme caution!

$ DEL *.*;*	                      !Delete everything in the current directory! 


Return to Contents

How to create a directory

Use the CREATE/DIR command.

$ CREATE/DIR [.subdir]	              !Creates a subdirectory named subdir.dir in the current directory.
$ CREATE/DIR disk:[dir.subdir]	      !Creates the subdirectory subdir at the specified path.


Return to Contents

How to rename files and directories

Use the RENAME command.

$ SET FILE/PROTECTION=O:RWED olddir.dir         !Sets protections so you can rename the directory.
$ RENAME oldfile.ext newfile.ext                !Renames oldfile.ext to newfile.ext.


Return to Contents

How to check the queue

Use the SHOW QUEUE command, which may be abbreviated to SH QUE.

$ SHOW QUEUE	                      !Shows all the queues, there are many!
$ SH QUE *FAST	                      !Shows all queues whose names end with "fast", these are used for evaluations.
$ SH QUE *SLOW                        !Shows all queues whose names end with "slow", these are used for reconstructions.
$ SH QUE *FAST/ALL	              !By default you are only shown queue entries for the user you are logged in as. To show jobs for all users, use the /ALL qualifier.
$ SH QUE *FAST/BY=EXE/ALL	      !Show only jobs that are currently executing for all users.


Return to Contents

How to get queue information

Use the SHOW ENTRY command to obtain information about batch jobs in the queues.

$ SHOW ENTRY	                      !Shows all the batch jobs for your user, there may be lots!
$ SHOW ENTRY 251	              !Shows information for batch job number 251.
$ SHOW ENTRY 251/FULL                 !Shows detailed information for batch job number 251.
$ SHOW ENTRY/ALL                      !Shows all the batch jobs for all users.


Return to Contents

How to FTP files

Use the FTP command.

$ FTP 136.159.74.231	              !Connect to an FTP Server. Need to input user name and password.	
$ FTP microct@emily.ucalgary.ca       !Connect to an FTP Server. Need to input password.   
FTP> cd sys$scratch                   !Navigate to the directory containing the target files.
FTP> bin	                      !Set transfer mode to binary (.aim, .gobj, .isq, and most image file types).
FTP> ascii	                      !Set transfer mode to ascii (.txt, .log, .com, .ps, .pdf and all other files in general).
FTP> mput *.aim	                      !Put all files with the .aim extension on the FTP server (mput = multiple put).
FTP> mget *.aim	                      !Get all files with the .aim extension from the FTP server (mget = multiple get).
FTP> prompt                           !If you want all of the files without having to be prompted, use it before mput/mget.
FTP> quit	                      !Disconnect from the FTP Server.


Return to Contents

Micro-Computed Tomography (µCT) Basics

User Tutorial

For Scanco MicroCT Systems and Software:

For XtremeCT II and I:

For MicroCT35, VivaCT40 and VivaCT80:


Return to Contents

Micro-CT Image Basics

Computed tomography is a non-destructive x-ray imaging modality that enables three-dimensional (3D) virtual models of an object to be created, which can be subsequently visualized and analyzed. Micro-CT refers to CT in which the resolution lies in the micro-scale, which is achieved with a high-resolution x-ray detector and a field of view that is much smaller than conventional CT. Structural detail provided by CT depends on differences in x-ray attenuation properties. Components with very different x-ray attenuation properties, for example air, soft tissue, and bone, can be differentiated in a CT scans whereas different types of soft tissues, for example muscle and cartilage, do not have sufficient differences in attenuation to be distinguish.

Dark Field

Detector response with x-rays off. Enables corrections of non-uniformities of the detector. Acquired automatically by the scanning software before each scan.

Bright Field

Detector response with x-rays on but no sample. Enables corrections of non-uniformities of the x-ray beam. Acquired automatically by the scanning software before each scan.

Raw Projection

A raw x-ray projection of a mouse leg. The darker regions correspond with higher x-ray attenuation. The discontinuities result from overlaps where the detector was shifted to acquire the large region of interest (3x2 detector frames in this example). Projections are acquired at many incremental rotations around the sample.

Sinogram

The sinogram is a different representation of the projection data. The sinogram represents the attenuation values of one row of the detector at each rotational increment around the sample.

Attenuation Projection

Accounting for the inhomogeneities of the detector and beam, we can calculate the x-ray attenuation caused by the sample. Bright regions correspond with higher attenuation.

Reconstructed Image

From the attenuation projections, the original structure can be calculate using filtered back projection.


Return to Contents

Image Data Type

Binary Images

Binary images are images whose pixels contain only two possible intensity values (off-on, or black-white B&W). The off or black value is usually 0 and the on or white value is usually 1 (1-bit pixel) or 255 (8-bit pixel). This type of image is commonly used as a multiplier to mask regions within another image.

Grayscale Images

Grayscale images represent intensities. Pixels range from least intense (black) to most intense (white). Pixel values usually range from 0 to 255 or are scaled to this range when displayed.

Indexed Images

An indexed image uses direct mapping of pixel values to colormap values. Instead of intensities, a pixel value within an indexed image relates to a color value within a color lookup table. An indexed image consists of a data matrix and a colormap matrix. The data matrix can be of class uint8, uint16, or double. The colormap matrix is an m-by-3 array of class double containing floating-point values in the range [0,1]. Each row of map specifies the red, green, and blue components of a single color. Since indexed images reference color tables composed of up to 256 colors, the data values of these images are usually scaled to range from 0 to 255.

RGB Images

Within the three-dimensional array of an RGB image, two of the dimensions specify the location of a pixel within an image. The other dimension specifies the color of each pixel. The color dimension always has a size of 3 and is composed of the red, green, and blue color bands (channels) of the image.


Return to Contents

Pixel Values in Image Data

The image data type is determined by the pixel depth in bits per channel, or bit depth. Bit depth for each channel can be 8, 16, 32 or 64. The data may be signed, unsigned (u), floating-point (f), real or complex (c) for some arithmetic functions, where each channel value is represented by two numbers: real and imaginary part. All channels in an image must have the same data type.

Image Data Type Name Byte Value Range Comments
char 8-bit signed integer 1 -128 ~ 127 Scanco SEG.AIM, GOBJ
uchar 8-bit unsigned integer 1 0 ~ 255
int 16-bit signed integer 2 −32768 ~ 32767 Scanco grey-scaled images, ISQ, AIM
uint 16-bit unsigned integer 2 0 ~ 65535 Converted format of Scanco grey-scaled images
long 32-bit signed integer 4 −2^31 ~ 2^31 - 1
ulong 32-bit unsigned integer 4 0 ~ 2^32 - 1
float floating point 4 ±3.40282347 E+38 32-bit single-precision with 6~7 significant digits
long64 64-bit signed integer 8 −2^63 ~ 2^63 - 1
ulong64 64-bit unsigned integer 8 0 ~ 2^64 - 1
double double precision floating point 8 ±1.79769313486231570 E+308 64-bit double-precision with 15~16 significant digits
complex floating point complex 8 same as floating-point same as floating-point
dcomplex double precision complex 16 same as double-precision same as double-precision


Return to Contents

Scanco Medical Micro-CT Software

In the bottom left hand corner of the micro-CT workstation desktop is the micro-CT control panel, from which the micro-CT programs can be launched. The standard operating procedure for scanning a samples involves proceeding through the programs in the control panel from left to right:

$ UCT_SAMPLE         !Samples:      Registering a sample
$ UCT_MEASUREMENT    !Tomography:   Scanning
$ UCT_EVALUATION     !Evaluation:   Evaluating the scan
$ UCT_3D             !Ray:          Viewing the 3D scan
$ UCT_BACKUP         !Disk-Utility: Archiving the data

You must specify an operator in the control panel to use the scanning and evaluation programs.

  • XtremeCT

  • MicroCT35, VivaCT40 and VivaCT80


Return to Contents

µCT Samples

The µCT-Samples program is used to register new samples to be scanned and update sample names (e.g., to correct a sample name). To start the program type $ uct_sample in a DEC terminal, or use the sample button.

  1. Prepare Sample Names according to Sample Name Convention
  2. Register Sample Names
    • Create a new sample by clicking “New” and typing in your sample name where it says “Name.” “Save” the sample.
    • You are now given a sample number. Record the sample number on the log sheet.
  3. Create Additional Sample Names Using Copy and Paste
    • If you have many samples to register, you can copy and paste part of the sample name you just created. Highlight the part of the sample name you want to copy by holding down the left mouse button while dragging the mouse, then release the mouse button.
    • Paste the highlighted text into a DEC terminal by pressing the middle mouse button. Now highlight the text in the DEC term.
    • Go back to the µCT-sample window, click "New", and paste the information next to "Name" using the middle mouse button. Update the name as required and "Save."
  4. Add Additional Sample Details
    • When a patient comes in for their first scan, you need to update their sample with their date of birth, sex, and hand/foot dominance.
    • Use the "Find..." button to search for a sample that has already been registered. You can search by sample number or by project name (e.g., CAMOS).
    • Date of birth: DD/MMM/YYYY. Example: 14/JAN/1951
    • Remarks: include the sex and hand/foot dominance. Example: F-RHRF for female that is right hand dominant and right foot dominant


Return to Contents

µCT Tomography

The µCT-Tomography program is used to perform a scan. To start the program type $ uct_measurement in a DEC terminal on the scanner computer (remote access does not allow this functionality), or use the scanner button. If you use the button, you must specify an operator prior to using the program.


  1. Select Sample
    • When the µCT-Tomography program is first started, you will be prompted to enter the sample name or number of the specimen you are about to scan.
    • If you have not registered your sample, press "Cancel" to close the select sample box, then press "New..." in the measurement sample box to register a new sample (see µCT-Samples).
    • Once you have entered your sample information, the measurement sample box will show details for that sample, including the sample name and scan (measurement) history.
    • After your first scan you will need to press the "Other..." button to open the sample selection box and find your next sample.
  2. Select a Controlfile
    • The controlfile contains scan parameters such as the x-ray energy, current, and more (see Controlfiles).
    • Once the controlfile is setup, you need only to select it. If there are many controlfiles, you may want to search for yours using the file filter by entering part of the name or number in the white box and pressing enter; if you do this, you still must click on the controlfile so that it is highlighted in black as shown below.
  3. Precalibrate
    • Calibrations are done before loading your patient/animal and scanning for quality control and to reduce the time the patient/animal is under preparation/anaesthesia. Start the calibration by pressing the "Precalibrate" button.
    • Press "Start Calibration". The calibration will start with an "X-Ray Warmup", followed by "Measuring Dark" and "Measuring I0" and usually takes about 2-3 minutes to complete.
    • The precalibration is good for 15~20 min. The time remaining is shown on the "Precalibrate" button.
    • The precalibrate option cannot be used with batch measurements, and it's not available for MicroCT35 which is not intended for invivo/live scan.
  4. Load and Position the Patient/Sample
    • Instruct the patient to remove any jewelry in the scan areas (wrist/ankle/knee/elbow ect). With the patient seated, put the wrist/ankle/knee/elbow into the appropriate cast. Different pads with different sizes can be used to fit the patient.
    • For invivo/invitro samples, prepare your sample in terms of orientation, immobilization, hydration ect.
    • After the precalibration is complete, you can now open the bore cover and insert the patient's wrist/ankle/knee/elbow or sample into the scanner. Gently move the wrist/ankle/knee/elbow or sample into the scanner until you can snap in the cast at the gantry. Check that the cast is positioned correctly and the patient/sample is comfortable.
    • Close the bore cover.
  5. Scout-View
    • A scout-view is similar to a 2D x-ray image and allows the user to set where to start and stop the scan.
    • After loading your sample, press the "Scout-View..." button to bring up the scout-view window.
    • The start position (top of the scanner) and end position (bottom of the scanner) can be modified to zoom in on the region of interest.
    • The angle of the scout view can also be changed to see the object in a different orientation.
    • Once pressed the "Scout-View" button but the scout view is found not in an appropriate position, press "Cancel", modify the start position, end position, or angle and press "Scout-View" again.
    • Scout view image is displayed in the top right hand corner of the program and will start by showing the right half of the image, followed by the left half of the image.
  6. Set Reference Line and Launch a Scan
    • A reference line (solid green line) is placed to set the scan region (green block).
    • Press the "Reference-Line" button to show the reference line and default scan region over the scout view.
    • To change the number of slices to scan, move the reference line to the top of the scan region, then hold down the shift button while dragging the mouse to extend the scan region and press the left mouse button to set the reference line.
    • To centre the scan region between two reference lines, move the reference line to the top of the scan region, then hold down the alt key while dragging the mouse until the second green reference line is in place, then press the left mouse button to set while still holding down the alt key!
    • For a single scan, select "OK", "Scan" and "Start Measurement". Record measurement number on your log sheet.
    • For a batch scan which is only available on microCTs, select "Batch Measurement" and record the measurement number on your log sheet. You may now setup a new scan (select new sample and controlfile, perform scout, etc). When you have finished setting up all scans, press "Start Batch Scans." (See Perform Batch Scans for detailed instructions)
  7. Cancel or Reposition a Scan
    • If you need to interrupt a scan, press the cancel button and restart the scan or if you do not want to rescan then "unload" the scanner.
    • If you have not started a scan and need to reposition the patient, you also must "unload" the scanner.
  8. Remove Patient/Sample from Scanner
    • After the scanning is complete, open the bore cover and slide the patient's wrist/ankle/knee/elbow or sample out of the scanner. Release the cast by pushing down the cast release handle.


Return to Contents

µCT Evaluation Program

The µCT Evaluation Program is used to evaluate a scan. To start the program type $ uct_evaluation in a DEC terminal, or use the graph button. If you use the button, you must specify an operator prior to using the program.


  1. Find Your Sample
    Enter the first part of your sample name in the file filter box and press enter. The samples are shown in the left hand box. The measurement box on the right shows scans for the selected sample (highlighted in black). Select a measurement and press "OK."
  2. Draw Contours (If Applicable)
    • Contours, or GOBJ files, are drawn to define regions of interest. Depending on the analysis required, contours may be drawn to isolate the object from the sample tube or to separate bone compartments (e.g., cortical versus trabecular).
    • Contours must always be drawn COUNTER-CLOCKWISE!!!
    • Contouring tools reference sheet
    • For this sample, we are only interested in viewing the object in 3D and drew contours to isolate the bone and soft tissue from the sample tube.
  3. Evaluate
    • Scanco Medical provides several standard evaluation scripts. Open the 3D-Evaluation menu either using the "T..." button or from the top menu by going to "Tasks" and "Evaluation 3D...". If you set a default evaluation script in your scanning controlfile, it will be listed under "Task/Evaluation."
    • If you want to run a different evaluation press "Select...", highlight the evaluation script of interest, and press "OK".
    • When the 3D-Evaluation window is activated, a white box will appear on your reconstructed image. The white box is the region of interest that will be "cut out" of the full scan. If you have drawn contours, the white box will automatically be adjusted to fit the contours. Adjust the box if necessary by grabbing one of the white handles; use the left mouse button to move the box and the right mouse button to resize. The box can also be resized using the "VOI Start" and "Dimensions" in the 3D-Evaluation window.
    • For most evaluation scripts, you will be required to specify parameters for a Gaussian filter, to reduce noise, and a threshold, to isolate your object (e.g., bone) from the background. Check that the parameters used provide a good representation of your scanned sample by flipping back and forth between the segmented and grayscale image using the "Preview" and "Grayscale" buttons.
    • When you are satisfied with the segmentation parameters, press "Start Evaluation", which will submit the job to the queue.


Return to Contents

µCT Ray

The µCT Ray program is used to view scanned objects in 3D, create images, and create image sequences for animations. To start the program type $ uct_3d in a DEC terminal, or use the 3D object button.


  1. Select and Render Your Sample
    • Select: If you have used the default Scanco Medical scripts, then search for your files using the file filter to select a sample and measurement then press "OK".
    • Rendering: Use a single click of the left mouse button to start or to stop rendering the sample. You can also use the "Start" and "Stop" buttons at the bottom of the options on the left. You must stop rendering to change viewing options on the left.
    • Change the View: To adjust the view, move the "Rotation" and "Elevation" slider bars in the options on the left. Note, the slider bar is located above its label.
    • Change Colours (Object and Background): From the top menu choose "Options" then "Object/Display Properties...". A segmented image typically only has two values, 0 (black, background) and 127 (white, object). To change the colour of the object only, we need to set the value 127 to a specific colour. In this example, the slider bar value "1" corresponds with the value 127 and we will set both slider bars to "1" so that we are adjusting values "127 ... 127", in other words, only value "127".
    Under "Surface" click on the "white box" to open the "Color Mixing" window. Choose the new colour for the object (e.g., orange) and press "OK." Close the "Object Properties" window or move it to the side. Now re-render the object with a single click of the left mouse button.
    • Cutplane (left options) and Subdim (top menu): The cutplane and subdim functions allow you to show a cross-section of your object. The subdim function tends to work better than the cutplane but is limited to axes of the scan.
  2. Print an Image to File
    An image must be fully rendered in order to be saved. From the top menu choose "File" then "Print". Set the print format to "TIFF" and the directory to "Scratch/Temp" (or another location using the "Specify in Filename" option). Change the filename to something meaningful then press "OK."
  3. Auto-Print Images for an Animation
    • Creating an animation involves saving a sequence of rendered images, which can then be compiled into an animated GIF or other video format using various software packages (e.g., Photoshop, Quicktime Pro).
    • From the top menu choose "Options" and "Animation..." to open the Animation Settings window. Set the viewing parameters for the start of the animation, fully render the image, then press the "Get Settings A" button.
    • Set the parameters for the end of the animation, fully render the image, then press the "Get Settings B" button.
    • Set the number of frames you want, the higher the number frames, the smoother the animation will be, but also the larger the file size.
    • Now setup the auto-print feature. From the top menu choose "File", then "Print". Choose "TIFF" for the print format, and the "Scratch/Temp" for the directory (or use the "Specify in Filename"). Specify a filename prefix, to which numbers will be appended for the image sequence.
    • Activate the "Auto-Print" feature. Press "OK" then press the "Start Calculation" button on the Animation Settings window.
    • Do not interrupt the program while the frames are being rendered and saved. When the program is done rendering all the frames, transfer them to your computer to compile into an animation.


Return to Contents

µCT Disk-Utility

The µCT Disk-Utility Program is used to archive and restore scan data. To start the program type $ uct_backup in a DEC terminal, or use the disk button.



  • Archive and Backup procedure
  1. Backup RAW Data ideally 1-2 week after scanning.
  2. Backup IMAGE Data ideally 1-2 months after scanning, after contouring, onsite analysis and copied image data to project disk.


Return to Contents

XImage

The XImage program is used to view the raw data (RSQ file) and scout view. To start the program type $ run um:ximage in a DEC terminal.

When loading an RSQ, the default view (XY plane) is of the sinogram.

To view the attenuations, choose the XZ plane. The first slice in this orientation is the dark field, the second slice is the bright field , and slices three and onward are the attenuations.

To view the corrected projections, from the Evaluations menu, choose Projection Mode.


Return to Contents

Scanning

Sample Name Convention

  • At the Bone Imaging Laboratory, all sample naming must conform to the following format
PROJECT IDENTIFIER _ SAMPLE DETAILS
  • In CAPITAL LETTERS (filenames are case sensitive, so this makes it easy to remember how you input your sample name)
  • No special characters (spaces, /, %, etc.) as further evaluations will not work if spaces are present.
Examples: CAMOS_771, TESTS_0001, TESTS_0002, TESTS_0003

Register Samples for Scanning

  • Although samples can be registered immediately prior to a scan, it is much more efficient to register all your samples beforehand.
  • Refer to µCT Samples for instructional details.

Log Sheets

  • Log sheets are used to record important information about scans that are performed, such as sample and measurement numbers ect.
  • Log sheets are to remain in the lab. If you would like a copy of your log sheets, please make a photocopy or print two copies to record the scan information.
  • Use the PDF file to print blank log sheets. Use the Excel file to make your own custom log sheet.
  1. Bone Lab for General Patients
  2. MicroCT Lab for General Non-Patients


Return to Contents

Sample Holders and Patient Casts

Patient Casts for XtremeCTs

Sample Holders for microCTs

Ex Vivo Sample Holders

  • Ex vivo and inanimate samples are scanned in sample holder tubes. These tubes come in a variety of diameters. It is extremely important that the tube diameter corresponds to, or is smaller than, the field of view (FOV) set in your scanning control file.
  • Biological tissues should be hydrated and wrapped in plastic wrap to prevent drying of the sample. Your sample should then be secured in the sample holder using foam to prevent it from shifting around during scanning, which would lead to poor image quality.
Chemical Resistivity of Sample Holders
  • White tube sample holders are made of PMMA (poly-methyl-methacrylate).
  • Yellow tube samples holders are made of PEI (poly-ether-imide).
  • Use the yellow tubes if you will need to disinfect the sample holder after scanning.
Thermal and chemical compatibility of sample holders
Properties White Tubes (PMMA) Yellow Tubes (PEI)
Max. Temperature +85°C +170°C
Sterilization Steam Autoclave non resistant resistant (138°C for 20 Min. at 1 bar)
Water resistant resistant
Inorganic Acids limited resistance resistant
Inorganic Bases non resistant limited resistance
Aldehydes (Formaldehyde) limited resistance only in diluted form resistant
Alcohols limited resistance resistant
Bleach non resistant resistant
Mounting of Sample Holders
µCT35 setup
  • The spindle (metal bit) of the sample holder has a slot, which must be aligned in the scanner or adapter plate.
  • The sample holder sits vertically in the µCT35 while horizontally in the VivaCT80 and VivaCT40.
  • For the vivaCT40, attach the adapter plate for the tube sample holders to one of the animal bed. The tube sample holders are held horizontally in the vivaCT 40.
VivaCT40 setup


In Vivo Sample Fixtures and Anesthetic System


Return to Contents

Scan Parameters (Controlfiles)

Controlfiles are used to specify the parameters for the scans. Once your controlfile is setup, you should not modify it over the course of your project.


  • Control File Name: Specify a meaningful name so that others can reuse yours.

General Settings

  • Holder Type: Choose the used holder type for XtremeCT II from Standard Casts, Knee Cast and Elbow Cast. No option for XtremeCT I scanner. For microCTs, Choose the used sample holder type with the correct diameter.
  • Mode of operation: Default is continuous operation for all scanners. Gated operation mode is available for VivaCT80 and VivaCT40 scanners.
  • Evaluation Script: This sets the default evaluation script used for the analysis. You can manually select a different script from the evaluation program.

X-ray Settings

  • Tube Energy (KVp): Fixed energy for XtremeCTs while having 3 options for each of microCTs: Use the 70 KVp for most samples, use the 55 or 45 KVp for low density objects (e.g., soft tissue) or specimens with a diameter less than 20 mm. Lower energies provide better contrast while higher energies provide better signal to noise (SNR).
  • Tube Current (µA): Fixed current for XtremeCTs while having 2 options for each of energy settings of each microCTs: Use the higher current except when the voxel size is set for the best resolution of the scanner. The higher current will yield better SNR but a larger spot size.
XtremeCT II XtremeCT I vivaCT80,vivaCT40, µCT35
E (KVp) 68 60 70 55 45
I (µA) 1470 900 114, 57 145, 72 177, 88
Power (W) 100 54 8, 4 8, 4 8, 4
  • Filter: Fixed filter settings for all scanners except VivaCT 80 has 4 filter options.
XtremeCT II XtremeCT I vivaCT80 VivaCT40 µCT35
Filter Fixed 0.2 mm Cu + 1 mm Al

(Equivalent 6.7 mm Al)

Fixed 0.1 mm Cu + 0.6 mm Al Default 0.5 mm Al,

Air, 0.1 mm Al, 0.1 mm Cu

Fixed 0.5 mm Al Fixed 0.5 mm Al
  • Calibration: This sets the mu scaling factor, density and beam hardening correction used for the reconstruction. For standard patient scans use 200 mg HA/cm3. For ex vivo bone scans, use 1200 mg HA/cm3, for soft tissue use the plexi scaling, and for non-biological tissues use the aluminum scaling.


Return to Contents

Scout-View Settings

Normally you will want to enable this and here you can specify the default start and end position, and scout-view angle, which you may override for each scan.

CT Scan Settings

  • Resolution: This setting includes the reconstruction matrix size (2048x2048, 1536x1536, 1024x1024, or 512x512) and the number of projections per 180°. The lower the resolution setting, the better the SNR and larger the voxel size.
  • FOV / Diameter: This field of view must fully contain the sample holder for accurate density measurements. Fixed FOV for XtremeCTs while having 5 options for each of microCTs: If you choose a smaller FOV than the sample holder, the scan may be aborted to prevent damage to the scanner. For the best resolution, you should choose the smallest holder that contains your sample.
  • Voxel Size: The nominal isotropic voxel size is determined by the FOV and the reconstruction matrix.
XtremeCT II XtremeCT I vivaCT80 VivaCT40 µCT35
FOV (⌀ * L mm^2) 140 ⌀ * 200 L 126 ⌀ * 150 L 31.9 ~ 80 ⌀ * 145 L 21.5 ~ 38.9 ⌀ * 148 L 7.2 ~ 38 ⌀ * 140 L (75 L standard)
Image Matrix 4608*4608 ~ 512*512 3072*3072 ~ 512*512 4096*4096 ~ 512*512 2048*2048 ~ 512*512 2048*2048 ~ 512*512
Voxel Size (µm) Standard 60.7 (30.3 ~ 273.4) Standard 82.0 (41.0 ~ 246.0) 5 ~ 156 10.5 ~ 76 3.5 ~ 74
  • Number of Slices: You can specify a specific number of slices or image stacks to acquire (1x110 = 1 image stacks of 110 slices). The scan time increases with each image stack, therefore pay attention to the stack boundaries (e.g., 111 slices will take 2x longer to scan than 110 slices).
  • Rel Position of First Slice: This option enables you to offset the scan region from the reference line. This is useful for scanning a region a specific distance from the growth plate or centering the scan region around the reference line. If you disable the scout view, then the position is relative to the absolute 0 position of the scanner (top of the sample holder for the µCT35 and towards the back of the scanner for the vivaCT40).
  • Integration Time: The higher the integration time, the better the SNR and longer the scan time. Use 100 ms for patient scans and higher values for ex vivo scans of better image quality. To get the highest integration time, uncheck the "Continuous ROT" button. For standard microCT measurements, use ~400 ms for the µCT35 and ~200 ms for the vivaCT40. The maximum integration time is scanner-specific and limited to prevent saturation of its detector.
  • Average Data: This is often referred to as frame averaging and is used to improve a scan's SNR. Multiply the average data value by the integration time to calculate the effective integration time. Only use this if the integration time is maxed out.
  • Measurement Time: This is the estimated scan time without the time performing the scout view or warm-up of the scanner.
  • CTDIvol: Computed Tomography Dose Index (CTDI) is a standardized measure of radiation dose output of a CT scanner for scanner settings' comparison purposes only, and it represents the average absorbed dose along the longitudinal axis from a series of contiguous CT exposures. Volumetric CTDI is the ratio of the weighted-CTDI to the level of overlap between slices (pitch). CTDIvol has no consideration of real scan length and does not represent actual dose administered to the patient.
  • DLP: Dose Length Product DLP = CTDIvol * Scan Length in unit of mGy-cm.


Return to Contents

XtremeCT II Scan Settings

Resolution Choice Native Custom High Medium Standard
Image Matrix 4608 2304 1536 1024 512
Projection/180° 3000 900 750 500 250
Voxel Size (µm) FOV/Diameter 140 mm 30.3 60.7 91.1 136.7 273.4
Slices/Stack 338 168 112 74 37
Stack Thickness (mm) 10.24 10.20 10.20 10.12 10.12
Time/Stack (min, at 43 ms Integration Time) 8.1 2.0 2.0 1.4 0.7
Time Current Product (mAs) 238 71 59 40 20
CTDIvol (mGy) 37.4 11.2 9.3 6.4 3.2
DLP (mGycm) 38.3 11.4 9.5 6.4 3.2

XtremeCT I Scan Settings

Resolution Choice Custom High Medium Standard
Image Matrix 3072 1536 1024 512
Projection/180° 1000 750 500 250
Voxel Size (µm) FOV/Diameter 126 mm 41 82 123 246
Slices/Stack 221 110 73 36
Stack Thickness (mm) 9.06 9.02 8.98 8.86
Time/Stack (min, at 100 ms Integration Time) 3.7 2.8 1.9 1.0
Time Current Product (mAs) 114 86 57 29
CTDIvol (mGy) 7.3 5.5 3.6 1.9


Return to Contents

VivaCT80 Scan Settings

Resolution Choice Native High Medium Standard Custom
Image Matrix 3072 2048 1024 1024 512
Projection/180° 1500 1000 500 250 125
Voxel Size (µm) FOV/Diameter 31.9 mm 10.4 15.6 31.9 31.2 62.4
FOV/Diameter 35.9 mm 11.6 17.5 35 35 70.1
FOV/Diameter 39.9 mm 13 19.5 39 39 78
FOV/Diameter 49.8 mm 16.1 24.2 48.5 48.5 97.1
FOV/Diameter 63.9 mm 20.8 31.2 62.4 62.4 124.8
FOV/Diameter 79.9 mm 26 39 78 78 156
Slices/Stack 333 ~ 328 222 ~ 219 111 ~ 109 111 ~ 109 55 ~ 54
Time/Stack (min, at 200 ms Integration Time) 14.9 10.0 5.0 2.5 1.3
Time Current Product (mAs) 73 48 24 12 6

VivaCT40 Scan Settings

Resolution Choice High Medium Standard Custom
Image Matrix 2048 1024 1024 512
Projection/180° 1000 500 250 125
Voxel Size (µm) FOV/Diameter 21.5 mm 10.5 21 21 42
FOV/Diameter 25.6 mm 12.5 25 25 50
FOV/Diameter 30.7 mm 15 30 30 60
FOV/Diameter 35.8 mm 17.5 35 35 70
FOV/Diameter 38.9 mm 19 38 38 76
Slices/Stack 213 106 106 53
Time/Stack (min, at 200 ms Integration Time) 9.9 5.0 2.5 1.3
Time Current Product (mAs) 61 31 15 8

µCT35 Scan Settings

Resolution Choice High Medium Standard Custom
Image Matrix 2048 1024 1024 512
Projection/180° 1000 500 250 125
Voxel Size (µm) FOV/Diameter 7.2 mm 3.5 7 7 14
FOV/Diameter 12.3 mm 6 12 12 24
FOV/Diameter 20.5 mm 10 20 20 40
FOV/Diameter 30.7 mm 15 30 30 60
FOV/Diameter 37.9 mm 18.5 37 37 74
Slices/Stack 232 ~ 235 116 ~ 117 116 ~ 117 58
Time/Stack (min, at 400 ms Integration Time) 23.9 12.3 6.5 3.5
Time Current Product (mAs) 119 60 30 15


Return to Contents

Advanced Settings

  • Number of Det-lines (for Scout-View): Defines how many lines on the detector shall be used during the Scout-View. Using all available lines provides faster Scout-Views but some faint horizontal lines might be seen between the stacks. Limit the number of lines to a small number to obtain Scout-Views without these artifacts but the time of the Scout-View will increase.
  • Number of Det-lines (for CT-scan): Defines how many lines on the detector should be used. This number influences the number of slices within a stack. Limit the number of detection lines if you see residual cone beam artifacts.
  • FOV/Scan Diameter: Chose the diameter of the FOV. This action is cropping the area of the detector.
  • Software binning: factor of the pixels on the detector.
  • Hardware binning:
  • Samples: number of (possibly binned) pixels on the detector that are used for each slice (note: this number is given for the whole FOV).
  • Proj/180°: number of projections taken per 180° turn of the sample.

Reconstruction

  • After each image stack is acquired, it is automatically submitted to the queue (sys$slow) for reconstruction. The reconstruction for each image stack is split into four jobs to make efficient use of processors.
  • The reconstruction time depends on the resolution setting, with low resolution scans reconstructing faster than high resolution scans. Normally scans are reconstructed within a day or two.
  • It is possible to resubmit a scan for reconstruction; this may be necessary or desireable for several reasons:
  1. The sample did not reconstruct properly (e.g., due to a power failure)
  2. To reconstruct the object at an angle (e.g., so that the anterior surface of a bone is always in the same direction).
  3. A new beam hardening correction was applied to the sample
  4. The scaling was changed for the sample to change the brightness


Return to Contents

Perform a Scan

Perform a Single Scan

Perform Batch Scans

  • Batch scan mode is only available on microCT scanners.
  • Batch scans can be setup for different regions of interest (ROI) within a sample or for different samples contained within a sample holder.
  1. Setup the First Scan
    • Refer to µCT Tomography to use the "Other..." button to find your sample number, choose a controlfile, perform a scout view (a mouse's whole body in this example), use the reference line to setup the first scan region (mouse skull in this example).
    • To add a batch scan press the "Batch Measurement" button.
    • An information window is displayed with the scan measurement number. Record the measurement number on your log sheet then press "OK" to close the window. An entry is also added to the measurement history for the sample.
  2. Setup the Next Scan
    • Using the "Other..." button, find your next sample number, choose a new control file (if desired).
    • If the next region of interest or sample is not in view of the current scout view, adjust the parameters of the scout view and obtain a new one.
    • Use the reference line to set a new scan region (upper limbs in this example).
    • To add a batch scan press the "Batch Measurement" button.
    • As the first scan, a measurement number is assigned for this new scan. Record the measurement number on your log sheet.
    • Repeat this process until you have added all your scans.
  3. Start the Batch Scans
    There are two ways to start a batch scan:
    1. Click the "Start Batch Scans" button: the program will automatically close so that control of the scanner can be allotted to the queue.
    2. Exit the scanning program.
  4. Check the Queue
    • Batch jobs will be submitted to the SCEVA2_BATCH queue for µCT35 or SC5019_BATCH queue for vivaCT40.
    • Initially the jobs will show up as temporary (TMP) jobs:
    • After about 30 seconds, the sample number will show up in entrie names:
  5. Request an Email Notification
    • There is a script in the commands (com) directory that will put an entry into the batch queue to send an email. Run the script and input parameters (queue and email) as prompted.
  6. Cancel a Batch Scan
    • For errors made during batch scan setup, to cancel a scan in progress, or to cancel a pending scan.
    • If you cancel all the scans and the scanner door does not unlock automatically (µCT 35 only), then start the measurement program and the scanner will unload, unlocking the door.


Return to Contents

Image Artifacts

Rescan for

  • Motion Artifacts
  • Sample Out of the Field of View

Contact Scanco Medical for

  • Ring Artifacts (Bad Detector)
  • Ring artifacts are caused by a faulty detector pixel and show up in the reconstructed image as a full or partial white circle.
  • When noticed, please notify lab technicians who will contact Scanco Medical to perform a "Pixel Correction", which will correct this artifact for future scans and can be used to update previous scans.
  • You should not rescan the sample if there is a ring artifact.
  • Image with Ring Artifact
  • Same Image after with Detector Correction
  • Bad Centre Calibration Values
  • Defective Shutter Artifact


Return to Contents

Evaluation

Evaluate a Scan

  • To evaluate a scan, refer to µCT Evaluation Program for general instructions on how to open the evaluation program and draw a contour.


Open default ISQ

Can’t open the ISQ in uct_evalution??? Modify the database to define the default isq:

$ def uct_default_isq dk0:[microct.data.00004111.00009899]C0007655.isq
$ uct_evaluation

Click cancel when the program opens to load the isq.

Draw Contours

  • Contours, or GOBJ files, are drawn to define regions of interest. Depending on the analysis required, contours may be drawn to isolate the object from the sample tube or to separate bone compartments (e.g., cortical versus trabecular).
  • Contouring is the first step in the analysis process, which allows you to segment the desired bone from surrounding tissues.


Contouring Tools Reference Sheet


Return to Contents

Contour and Run the Standard Patient Evaluation

The following instructions are for contouring standard patient radius and tibias.

  1. Open the Evaluation Program and select your sample.
    • Refer to µCT Evaluation Program for general instructions on how to open the evaluation program and draw a contour.
  2. Zoom into the desired bone (Radius or Tibia)
    • Using the zoom menu from the top panel, zoom into the Radius or Tibia.
    • Usually 3x zoom is appropriate.
  3. Draw contours roughly around the bone.
    • Select the first contouring tool (top left button) and draw COUNTER-CLOCKWISE.
  4. Automatically generate contours for all slices in the scan.
    • Double click the image to bring up the contouring window.
    • Double click again and the program will attempt to snap the contour to the bone. Double click again if needed.
    • Select Forwards, and then Iterate Forwards to have the evaluation program automatically segment the bone.
  5. Modify any contours as needed.
    • Select the second contouring tool (2nd button from top) to fix any "wrong" contours.
    • Draw COUNTER-CLOCKWISE!!
    • If many contours cannot be automatically generated correctly i.e. cortical bone is porous and evaluation program misses a lot of bone, it may be better to use the Range/Morph function rather than fixing each individual slice.
    1. This is done by first clearing all the breakpoints (Clear all BP in contouring window). The boxes will now become red.
    2. Manually fix the slice that does not have the correct contour automatically drawn, skip a few slices and manually fix that slice as well. The slices that you have fixed will turn green, indicating that it is a breakpoint (BP).
    3. Now you can morph between the two breakpoints (BP, green boxes) you have just created. Select the BP with the higher slice number, select range (first column on left) from the contouring window, followed by morph (second column from left).
  6. Save Contour (.GOBJ): Make sure you save your work!
  7. Run the 3D Standard Evaluation for your specific project (and timepoint).
    • Select 3D evaluation under Tasks to bring up the window. You'll then need to Select... the evaluation specific for your project.
    • There are a variety of evaluations to choose from, you can search for your project's evaluation script by typing in the name of your project in the filter window.
  8. Check the queue to ensure that the evaluation is running properly.
    • Type $ show que in a terminal window will allow you to see all running processes.


Return to Contents

Correct Trabecular Contours and Run the Cortical Evaluation

Once the standard evaluation has been completed, an auto-segmentation process is completed to segment the cortical from the trabecular bone. However, the auto-segmentation is not always accurate, and hence the contour (TRAB.GOBJ) will need to be checked.

  1. Load TRAB.GOBJ by selecting File, then load GOBJ from the top panel.
    • You will now see a list of all GOBJ files pertaining to your sample. You'll need to load the TRAB.GOBJ.
    • When the TRAB.GOBJ has loaded, you will see that the loaded contour is between the cortical and trabecular bone.
  2. Correct contours as needed
    • Can manually adjust the slices or use the Range/Morph function.
    • Remember to draw COUNTER-CLOCKWISE!
  3. Run the 3D cortical evaluation for your specific project (and timepoint, if relevant).
    • Select 3D evaluation under Tasks to select the appropriate evaluation script.


Return to Contents

Evaluation Scripts

Scanco Standard Evaluation Scripts

The following are descriptions of some of the standard evaluation scripts provided by Scanco Medical.

  • 3D Segmentation of VOI, 1 solid object
Produces a 3D segmented (binary) object with values 0 (background, hidden) and 127 (solid). Input Gaussian filtering and threshold parameters. Draw contour to isolate the object of interest (optional).
  • 3D Seg. of 2 VOIs: solid dense in transparent low dens obj
Produces a 3D segmented object with values -1 (transparent), 0 (background, hidden), and 127 (solid). Input two sets of Gaussian filtering and threshold parameters (input the second set by pressing the red 2 button). The preview shows the solid object in white and the transparent object in red. Draw one contour to isolate the object of interest (optional). This script is useful for showing soft tissue and bone.
  • Bone Trab. Morphometry (3D Seg, 3D Calc, Print Sheet)
Produces a 3D segmented object with values 0 (background, hidden) and 127 (solid) from Gaussian filtering and threshold inputs. Draw contour to isolate the trabecular bone. Performs model-independent (direct) measurements on the trabecular region. Outputs: BV, TV, BV/TV, TbBMD, TbTMD, BS, SMI, DA, ConnD, TbTh, TbThSD, TbSp, TbSpSD, TbN, and Tb1/NSD.
  • BV/Density only Bone Eval. (3D Seg, BV and Dens Calc, Print)
Produces a 3D segmented object with values 0 (background, hidden) and 127 (solid) from Gaussian filtering and threshold inputs. Draw contour to isolate the region of interest. Outputs: BV, TV, BV/TV, BMD, and TMD.
  • Bone Midshaft Evaluation
Produces a 3D segmented object with values 0 (background, hidden) and 127 (solid) from Gaussian filtering and threshold inputs. Draw contour on the outer surface of the bone. Outputs: BV, TV, BV/TV, BMD, TMD, and moment of inertia parameters.
  • Bone Midshaft more than e.g. 50 slices Evaluation
Produces a 3D segmented object with values 0 (background, hidden) and 127 (solid) from Gaussian filtering and threshold inputs. Draw contour on the outer surface of the bone. If you wish to exclude the medullary area from the analysis, then draw a counterclockwise contour on the outer surface of the bone and a clockwise contour on the inner surface of the bone. Performs direct measurements in addition to the standard midshaft analysis. Outputs: BV, TV, BV/TV, BMD, TMD, moment of inertia parameters, Th, and Sp.
  • Convert to TIFF
Converts the grayscale data to TIFF slices for the region inside the white evaluation box. The converted files are output into the scan directory.
  • Convert to DICOM
Converts the grayscale data to DICOM slices for the region inside the white evaluation box. The converted files are output into the scan directory.
  • Reformat to Axial Cuts
Flips the dataset from the XY plane to the XZ or YZ planes (specify in the advanced options for the script). This is useful if you want to contour your sample in a different plane. The flipped sample is imported as a new measurement under the same sample number as the original data.


Return to Contents

Understanding Evaluation Scripts

Following are some example evaluation scripts full of comments to promote understanding:


Setup Customized Evaluation Scripts

To setup an evaluation script customized to your project, in the µCT Evaluation Program:

  • Choose "Scripts" then "Import from" then "TEMPLATES", pick a Scanco Standard Evaluation Scripts and Save.
  • Choose "Scripts" then "Modify". Choose the script that was just imported and click "OK", Change the name of the script.
  • Modify the default segmentation and other parameters for the script. When finished making changes press "Save" then "OK".


Return to Contents

Image Processing Language (IPL) scripting


The following documentations related to IPL scripting, as it applies to image analysis was compiled by Jan Owoc in July 2013 based on numerous sources including own experience.

Your First IPL Script

  • Prerequisite: you are familiar with navigating the VMS system.
  • "$" or "ipl>": the DCL and IPL prompts respectively, and you should only type the text after the prompt.
  • If you FTP the file to the OpenVMS system, ensure you use "binary" to transfer the file.

You can run these commands on almost any greyscale AIM file. Example file here: MJ7101.AIM

Interactive IPL

  • Command $ ipl starts IPL interactively, that is you see the result of each command as you run it.
  • While it is useful for testing, running large scripts interactively may interfere with others using the computer.


  • Reading an AIM file
Before you can run any analysis on the AIM file, you need to read it into IPL and assign it a file handle. This is done using the command
ipl> read in MJ7101.AIM
A fraction of a second later, the file should have been read into memory and assigned the internal name "in". If we want to do some basic density calculations on it, we can use the command
ipl> vox_ in 0
  • IPL, much like DCL, will automatically complete the command if it is given enough characters.
The "vox_" was expanded to the command "vox_scanco_param" (calculates voxel-counting parameters) and told you that the mean density of the cube is 114 mg HA/cm3 and a standard deviation of 283 mg HA/cm3.
The argument "in" is the internal name of the image.
The argument "0" is the region. The command vox_scanco_param supports several numbered regions if, for example, you wanted to separately compute the density for the trabecular region and the cortical region.


  • Segmenting an AIM file
Some parameters, like average density, are computed from the Greyscale Image. Other parameters, like the trabecular number, require an image that has been segmented to Binary Images, that is converted into "bone" and "not bone".
There are many ways to separate bone from non-bone, and parameters that work well for one dataset will not generally work for images of different samples, or acquired at different resolutions.
One of the simplest segmentation methods "seg_gauss" is to apply Gaussian smoothing to the sample, to eliminate the noise present in the image, followed by a semi-arbitrary threshold that preserves the trabecular structure.
ipl> seg_gauss in seg

  -sigma                     [1.000000] >  
  -support                   [2] > 
  -lower_in_perm_aut_al      [300.000000] > 
  -upper_in_perm_aut_al      [100000.000000] > 
  -value_in_range            [127] > 
  -unit                      [0] > 2 
seg_gauss expects 8 parameters, and we have provided only 2. It will now prompt us for the remaining 6 one-by-one.
Leave everything at the defaults (simply hit "Enter") except the unit, which we will change to "2".
For young human trabecular bone from the distal tibia scanned at 20 um in the uCT 35, but then downscaled to 80 um, the above parameters give a reasonable representation of the trabecular structure. With other bones at other resolution, you may need to change the sigma, the support, and the lower threshold.
The unit of "2" simply means that we are working in units of mg HA/cm3.
Now that the cube is segmented, we can run the same voxel-counting command as above and obtain more information.
ipl> vox_ seg 0
We now know that our combination of smoothing and threshold resulted in an object volume of 103 mm3 (i.e. volume of bone) and a bone volume ratio of 22.88%.


  • Writing out a file
we can write the segmented file out for future use. Accept the defaults for the remaining arguments.
ipl> write seg MJ7101_SEG.AIM
Now you can quit IPL and verify that the segmented file has been written out.
ipl> quit

Batch IPL

  • Command $ ipl_batch starts IPL inside a script that would be submitted to a queue.

While the following code is likely to work, it is not very readable:

$ IPL_BATCH
read in MJ7101.AIM
vox_ in
seg_gauss in seg 1 2 300 100000 127 2
vox_ seg
write seg MJ7101_SEG.AIM
..
$ EXIT
  • Instead, it is recommended that you copy and paste the "pretty" output of the command after you have run it once interactively.
  • Values that are likely to change should be variables, defined at the top of the script.
  • To substitute a variable from DCL into IPL, use a double-quote character before the variable name, as shown in the example below.

Copy and paste the below into a text editor.

$ modelname  :== MJ7101.AIM
$ threshold   == 300
$ outputfile :== MJ7101_SEG.AIM
$
$ IPL_BATCH

/read
  -name                      in
  -filename                  "modelname

/vox_scanco_param
  -input                     in

/seg_gauss
  -input                     in
  -output                    seg
  -sigma                     1.000000
  -support                   2
  -lower_in_perm_aut_al      "threshold
  -value_in_range            127
  -unit                      2

/vox_scanco_param
  -input                     seg

/write
  -name                      seg
  -filename                  "outputfile 

..
$ EXIT

Now, it is clear what the full names of the commands are, and what the parameters mean.

  • If a parameter isn't important and can be left at the default (for example the region number during vox_scanco_param), you can leave it out of the file.

Save the file as MYSCRIPT.COM and run it using @MYSCRIPT.COM.


  • Submitting to the queue
As mentioned in the introduction, running IPL interactively on larger models negatively impacts other users of the system. Copying the commands to a file and running it from the command line has the same effect.
  • The correct way to run larger scripts is to submit the job to the queue.
    SUBMIT/QUE=SYS$FAST MYSCRIPT.COM


Return to Contents

IPL Reference

This reference hopes to explain how to use every single command present in IPL.

Standard Read Write etc. Functions

  • /read: Reads a file into ipl and gives the file an internal name
  • /aim_read:
  • /read_versatile:
  • /write_v020: Writes an aim file to the directory in which ipl is open (or specified directory if in a script)
  • /write_new:
  • /write_part:
  • /copy: Copies an internal file (a file that is already in the ipl system) and allows the copy to be given a new name.
  • /delete: Deletes an internal file (a file that is already in the ipl system)
  • /rename: Changes the name of the file (input is the old name and output the new name)
  • /list:
  • /options:
  • /release_history:
  • /commands_write_log:

Return to Contents

Segmentation Functions

  • /gauss_lp: Applies a low pass gaussian filter with specified sigma and support values
  • /fft_laplace_hamming:
  • /median_filter: Applies a low pass median filter to reduce unwanted noise in an image
  • /seg_gauss: Segments aim files using the input sigma of gauss and the filter support for gauss. A threshold can also be applied using this function.
  • /threshold: Removes data outside of the specified range
  • /absolute_threshold:
  • /adaptive_threshold:
  • /adaptive_iter_threshold:
  • /matching_threshold:

Return to Contents

Gobj and Masking Functions

  • /gobj_maskaimpeel_ow: Cuts an aim file with a gobj so that only the portion of the aim within the gobj remains. Peel_iter value used to specify the number of pixels within the gobj the function will need to cut.
  • /gobj_to_aim: Reads a gobj file from the directory and makes an aim file (the aim file is in ipl, to output it to the directory use write).
  • /togobj_from_aim: Takes an aim file and writes a gobj file (the gobj is output to directory).
  • /gobj_circumf_area:
  • /gobj_join:
  • /gobj_join_consec:
  • /gobj_scale:
  • /gobj_isotrop:
  • /cortex_maskoff:
  • /peel3d:

Return to Contents

Voxel-Counting, Density and Triangulation Functions

  • /db_scanco_activate:
  • /db_clear_eval:
  • /db_calib_unit_fill:
  • /db_set_mean_accur:
  • /voxgobj_scanco_param: Inputs an aim file and a gobj and provides information (including total volume, object volume and the mean value of the points) on the region within the gobj.
  • /vox_scanco_param: Inputs an aim and provides information including total volume, object volume and the mean value of the points.
  • /tri_da_metric_db:
  • /tri_direc_distr:
  • /connectivity: Receives a component labelled aim object and calculates the connectivity of the labelled components.
  • /conn_nocl:
  • /conn_bgcl:
  • /fractal_dimension:

Return to Contents

Distance Transformation (Sphere Filling) Functions

  • /dt_object_param:
  • /dt_ow_object_param:
  • /dt_background_param:
  • /dt_mat_param:
  • /dt_cortex_obj_param:
  • /dt_value_output:
  • /dt_mat_output:

Return to Contents

Statistical Functions

  • /examine: Receives an AIM object and outputs specified information based on the item input.
  • /histo:
  • /moment2d_of_inertia:
  • /moment3d_of_inertia:
  • /zmeanmax:

Return to Contents

Voxelsize-Scaling Functions

  • /isotrop:
  • /scale_elsize:
  • /ipscale_elsize:
  • /noipscale_elsize:
  • /scale_ow_elsize_noip:

Return to Contents

Component Labeling Functions

  • /cl_ow_rank_extract: Receives AIM file and over writes it with an AIM containing the extracted and component labelled pieces based on their size. First_rank specifies the largest selected piece to be extracted and last_rank specifies the last selected piece.
  • /cl_rank_extract: Receives AIM file and outputs an AIM containing the extracted and component labelled pieces based on their size. First_rank specifies the largest selected piece to be extracted and last_rank specifies the last selected piece.
  • /cl26_rank_extract:
  • /cl_image:
  • /cl_extract:
  • /cl_slicewise_extractow:
  • /cl_nr_extract:

Return to Contents

Add, Concat, Cut etc. Functions

  • /add_aims: Adds the values of two AIM images in a 3D space.
  • /add_constant_ow:
  • /border_change:
  • /bounding_box_cut: Cuts extra space out of an aim file so that only the region with the data remains. A border can be added to the image using the border input.
  • /concat: Takes two aim files and combines them. The data from both aims or just the common region can be kept. To add the images add_not_overlay is set to true (for example if image 1 has a value of 41 and image 2 has a value of 82, the combined value will be 123).
  • /concat_adapt:
  • /divide_volumes:
  • /fill_min_max_ow:
  • /header_geo_set:
  • /header_log_set:
  • /header_calib_ov:
  • /invert_ow:
  • /mult_constant_ow:
  • /multiply_volumes:
  • /sqr_to_float:
  • /sqrt_to_float:
  • /offset_add:
  • /offset_set:
  • /clear_offset:
  • /fill_offset_mirror:
  • /fill_offset_duplicate:
  • /set_value: Sets the values of the object and background of an aim file to chosen values
  • /sub_get:
  • /sub_pick:
  • /subtract_aims: Subtracts one aim from another and outputs the remaining region.
  • /sup_divide:
  • /transparent_concat:

Return to Contents

Erosion Dilation Open Close Functions

  • /erosion:
  • /dilation:
  • /open:
  • /close:
  • /erosion_dilat_variable:

Return to Contents

Import Export Conversion Norming Functions

  • /import_freeformat:
  • /dicom_to_aim:
  • /todicom_from_aim:
  • /dicom_list_series:
  • /isq_to_aim:
  • /isq_gobjfit_to_aim:
  • /toisq_from_aim: Writes an isq file to the directory ipl is open in (or specified directory) from an aim file. The isq name should be 8 characters long.
  • /mesh:
  • /msq_from_aim:
  • /rsq_to_aim:
  • /stl_tri:
  • /convert_to_type:
  • /convert_unsigned:
  • /norm_max:

Return to Contents

Functions for Root Canal Evaluations

  • /separ_roots:
  • /calc_ctr_mass_list:
  • /calc_ctr_mass_diff:
  • /treated_surf:
  • /match_cut:
  • /match_cut_adapt:

Return to Contents

Miscellaneous Functions

  • /align_z:
  • /dcl:
  • /flip_aim:
  • /growback_to_orig:
  • /turn3d:
  • /turn2d:
  • /upat_filldb: Fill special Upat DB for patient (radius/tibia) evaluation
  • /xray:

Return to Contents

Obsolete, Experimental and Duplicate Functions

  • /curv_tri:
  • /cut2D_shape_ow:
  • /join_uncompress:
  • /mil_param:
  • /milv1_param:
  • /gauss_seg: duplicate of /seg_gauss
  • /from_aim_to_isq: The function toisq_from_aim will also convert an aim to an isq
  • /local_threshold:
  • /edge_canny:
  • /sobel_grad:
  • /hysteresis_thresholg:

Return to Contents

Functions only available in iplfe

  • /register: Registers two aim files and output a transformation matrix of the transformation to moving input 2 into the space of input 1. Gobjs can be input (registration is more successful with gobjs). Orientation search can be done with masscenter, and/or moment of inertia (MoI), or degree intervals.
  • /transform: Transforms an aim file using a transformation matrix (a text file of the matrix can be input). Interpolation options are nearest neighbor, linear, and cubic interpolation. The inverse of the transform provided can be done by setting Tmat_invert to true.
  • /fe_solveD: A number of finite element functions are available in iplfe, not all are listed here


Return to Contents

Results

Automatic Results

Results are generally automatically extracted after each analysis to the UCT_RESULTS directory.
The results files have the form of:

  • UCT_LIST_*PROJECT*.TXT for XtremeCTs: e.g. result file UCT_LIST_KYLA.TXT for the following project.
  • UCT_LIST_3DLOG_*PROJECT*.TXT for microCTs: e.g. result file UCT_LIST_3DLOG_KYLA.TXT for the following project.
  • where PROJECT is specified in the evaluation tool script setup.

Open the result file and copy and paste it into Excel, e.g.

$ dir uct_results:*kyla*
$ eve uct_results:UCT_LIST_3DLOG_KYLA.TXT

Or transfer the file to your computer using FTP.

  • microct/vivact account UCT_RESULTS location: ADISK1:[MICROCT.RESULTS]
  • invivo/invitro account UCT_RESULTS location: ADISK1:[BONELAB.RESULTS]


Return to Contents

Extract Results from XtremeCT Database using UPAT_LIST

  • Run $ UPAT_LIST to take in a range of samples and extract the standard patient results, which may include scans from other projects.
  • Run $ @com:EXTRACT_UPAT_LIST to take in a list of sample numbers and extract the standard patient results with follow-ups and append them to a result file.
$@COM:EXTRACT_UPAT_LIST P1 P2 P3 P4 P5

    P1 = Sample List
    P2 = Site (RR, RL, TR, TL, R*, T*, *)
    P3 = Number of Follow-Ups (max 19)
    P4 = Results Output File
    P5 = Eval type (4=XT1, 5=Trab, 6=Cort)

An example to extract all sites:

$ @com:EXTRACT_UPAT_LIST mysamples.txt * 19 myresults.txt


Return to Contents

Extracts Results from microCT Database using UCT_LIST

  • Run $ UCT_LIST to take in a range of samples and extract the results, by specifying the first and last measurement numbers for the range they want to extract
  • This may include scans results from other projects, but you can delete unrelated results that are extracted afterwards.
  • The program will output a tab-delimited text file, which can be read into Excel or other analysis programs.
$ uct_list

     UCT_LIST.EXE Version V5.22
     Template-File [UCT_3D_LIST_SHEET]:         !Press Enter to use the default results sheet.
     Output-File [SYS$SCRATCH:UCT_EVAL.TXT]:    !Enter a filename, e.g., BUIE_RESULTS.TXT.
     Density units (0 default) [0]:             !Press Enter.
     From Meas. # [0]:                          !Enter the first measurement number, e.g., 100.
     To Meas. #   [0]:                          !Enter the last measurement number, e.g., 101.  

Processing measurement 100
Processing measurement 101
  • References of results template:


Return to Contents

Generate Report

Generate Standard Patient Report

The standard patient reports are extracted from a DEC terminal using upat_list in print mode, which will print to a postscript (PS) file and can also print a hard copy.

  • The number of follow-ups specified will determine if a baseline or follow-up report is generated.
$ upat_list

     Mode (1 = list, 2 = print, 3 = show) [1]:  2
     Patient # (1-3162) [1]:                    !input the patient's sample number
     Site (found RR) [RR]:	                !RR or RL or TR or TL
     Maximum # of follow-ups (0-19) [19]:	!0 for baseline report, press return for follow-ups
     Template file [default]:	                !press return to use the default template
     Output filename [SYS$SCRATCH:UPAT...]:	!default output file (with sample number and the site) goes to sys$scratch
     # copies [1]:	                        !the number of printouts, 0 if no printout is desired


Return to Contents

Generate CaMos Patient Report

The CaMos patient report is extracted from a DEC terminal using upat_list in print mode, which will print to a postscript (PS) file and can also print a hard copy.

  • To ensure the report is generated using the appropriate normative results, the patient's sample remarks should be in the form "F-RHRF" where the first character indicates the sex of the individual, otherwise the patient is assumed to be male.
$ upat_list

     Mode (1 = list, 2 = print, 3 = show) [1]:  2
     Patient # (1-3162) [1]:                    !input the patient's sample number
     Site (found RR) [RR]:	                !RR or RL or TR or TL
     Maximum # of follow-ups (0-19) [19]:	!0 - 1st scan, 1 - 2nd scan, 2 - 3rd scan...press return for latest scan report 
     Template file [default]:	                COM:UPAT_EVAL_CAMOS.PS
     Output filename [SYS$SCRATCH:UPAT...]:	!default output file (with sample number and the site) goes to sys$scratch
     # copies [1]:	                        !the number of printouts, 0 if no printout is desired


Return to Contents

Convert PS to PDF report

The report can be converted to PDF using $ @SCOM:PS_TO_PDF by:

  1. Follow the instructions above for creating a report, using "2" to print and "0" for the number of copies. (Use the default template file and output filename.)
  2. Locate the file on the sys$scratch by $ cd sys$scratch and $ dir
    • The file should read "UPAT_PAT_[sample #]_[site].PS;1" (e.g. UPAT_PAT_0010_RL.PS;1)
    • You can view this file on the monitor by typing $ gs UPAT_PAT_0010_RL.PS;1
  3. Convert the postscript to PDF by typing in the command followed by the .PS file to convert
    $ @SCOM:PS_TO_PDF  UPAT_PAT_0010_RL.PS;1
  4. The PDF file can then be located again in the sys$scratch directory.

You can transfer the result file to your computer using FTP.

Return to Contents

Result Analysis Script

Bone Morphometry and Densitometry

Suggested readings


Return to Contents

Model-Independent (Direct) Structural Measurements

Bone structural parameters are measured on segmented (i.e., binary) data. Typically the bone is extracted from the background using a global threshold approach; other filtering steps are also commonly employed (e.g., Gaussian smoothing to suppress noise).

Voxel Counting Method

  • Bone Volume (BV): The volume of bone, usually applied to the trabecular compartment. Measured using the voxel counting (VOX) method. Output units are mm3.
  • Total Volume (TV): The volume of bone, pores, and marrow cavities, usually applied to the trabecular compartment. Measured using the voxel counting (VOX) method. Output units are mm3.
  • Bone Volume Fraction (BV/TV): The ratio of bone to the total volume, usually applied to the trabecular compartment. Calculated by dividing BV by TV, as measured using the voxel counting (VOX) method. This is a dimensionless (non-metric) parameter but is often expressed as a percentage.


Return to Contents

Maximal Spheres Method

Refer to this article for more details.

  • Trabecular Thickness (TbTh): The mean thickness of the trabecular struts. Measured using the distance transform (DT) method of fitting maximal spheres inside the bone structure. The standard deviation of the TbTh distribution (TbThSD) provides an estimation of variation in this parameter. Output units are mm.
  • Trabecular Separation (TbSp): The mean thickness of the marrow cavities (i.e., the edge of one trabeculae to the next). Measured using the distance transform (DT) method of fitting maximal spheres inside the marrow spaces. The standard deviation of the TbSp distribution (TbSpSD) provides an estimation of variation in this parameter. Output units are mm.
  • Trabecular Number (TbN): The average number of trabeculae per unit length. Calculated as the inverse of the mean distance between the midaxes of the bone structure. The mean distances between the midaxes is determined using the distance transform (DT) method of fitting maximal spheres. The standard deviation of the TbN distribution provides an estimation of variation in this parameter. Output units are 1/mm.
  • Cortical Thickness (CtTh): The mean thickness of the cortex. Measured using the distance transform (DT) method of fitting maximal spheres inside the bone structure. Pores in the cortex lead to significant underestimation of CtTh and should be "filled in" prior to measurement (i.e., the apparent CtTh). Output units are mm.


Return to Contents

Marching Cubes Method

Refer to this article for more details.

  • Bone Surface (BS): A measure of the bone surface area. Measured using the Marching Cubes method to triangulate (TRI) the surface. Output units are mm2.
  • Structure Model Index (SMI): An estimation of the plate-rod characteristic of the bone structure. SMI is calculated from the curvature of a triangulated surface (TRI) of the structure from the equation: SMI=6{[BV(dBS/dr)]/BS2]. For an ideal plate structure SMI=0 and for an ideal rod structure SMI=3. This is a dimensionless (non-metric) parameter.
Refer to this article for more details.


Image Source: Wikipedia, http://en.wikipedia.org/wiki/File:MarchingCubes.svg, Aug 2011


Return to Contents

Other Method

  • Degree of Anisotropy (DA): A measure of how structure varies with orientation (i.e., if there is a preferred orientation). An isotropic structure, where properties are similar in all directions, would have DA=1 whereas an anisotropic structure has DA>1. Degree of anisotropy is defined as the ratio between the maximal and minimal radius of the mean intercept length (MIL) ellipsoid. The MIL is calculated by placing a series of parallel lines over the 3D image and taking the total length of the test lines divided by the number of bone-marrow interface. The MIL is calculated for a range of 3D directions and the MIL ellipsoid is calculated using a least square fit. This is a dimensionless (non-metric) parameter.
Refer to this article for more details.


Image Source: C. Turner (1992), J. Biomech., 25, pp. 1-9.


  • Connectivity Density (ConnD): A measure of the number of trabecular connections per unit volume. Measured using the Euler characteristic with controlled topological notes. Output units are 1/mm3.
Refer to this article for more details.


This figure illustrates the concept of redundent trabeculae: a) a single trabeculae, b) two trabeculae, c) three trabeculae, and d) four trabeculae. Trabeculae are counted by "cutting trabeculae" until the structure is broken into two disconnected parts.
Image Source: A. Odgaard and H.J.G. Gundersen (1993), Bone, 14, pp. 173-182.


Return to Contents

Densitometric Measurements

Densitometry parameters are measured on grayscale data.

Descriptive Statistics (Mean, Median, SD) of Calibrated Voxel Values

Refer to this article for more details.

  • Bone Mineral Density (BMD): A measure of the density of minerals within the whole bone. Measured by taking the average grayscale intensity of bone, marrow, and pore voxels, and converting it to hydroxyapatite (HA) mineral density. Output units are mg HA/cm3.
  • Tissue Mineral Density (TMD): A measure of the density of minerals within the bone tissue. Measured by taking the average grayscale intensity of the bone only (usually suppressing 2 voxels at the edges to elimitate partial volume artifacts) and converting it to hydroxyapatite (HA) mineral density. Output units are mg HA/cm3.


Return to Contents

Backup and Deletion

Refer to µCT Disk-Utility for detailed procedure.

Tape

Tape Label Convention

Tape labels are 6 characters in length. For the Bone Imaging Lab projects, the first three letters indicate if the tape is for raw (RAW) or image (IMA) data, and the last three digits are for the tape number.

RAW040 = RAW date, tape #040
IMA001 = IMAGE data, tape #001

Alternatively, the first two characters may be set to a PI's initials, the third character indicates if the tape is for raw (R) or image (I) data, and the last three digits are for the tape number.

SBR040 = Steve Boyd RAW, tape #040 <br>
SBI001 = Steve Boyd IMA, tape #001 <br>
BHR006 = Benedikt Hallgrimsson RAW, tape #006 <br>
BHI017 = Benedikt Hallgrimsson IMA, tape #017 <br>
FJR012 = Frank Jirik RAW, tape #012 <br>
FJI003 = Frank Jirik IMA, tape #003 <br>

CaMos raw data is backed up with the following naming:

CAMOS1 = CaMos RAW, tape #1

When a tape becomes full, start (initialize) a new tape, increasing the tape number by one so that each tape label is unique.


Return to Contents

Initialize a New Tape

Put a new tape into the tape drive, then press "Initialize", this will format (erase) everything on the tape. When prompted for a label for the tape, follow the Tape Label Convention. The tape can now be mounted for use.


Full Tape

A tape automatically ejects during a backup procedure if it becomes full. Remove the tape and write protect it (orange indicator will be displayed). Exit the disk-utility program. Start a new instance of the program. Initialize a New Tape. Backup any remaining files.


Return to Contents

Raw Data Backup

  • Ideally 1-2 week after scanning.
  • RSQ files are backed up onto RAW tapes (see Tape Label Convention). Put the most recent RAW tape into the tape drive, then press "Mount".
  • Show "Current (with RAW)", use the file filter (Measurement: ) to search for your files (e.g., CAMOS) and press enter or press "Update List".
  • Select all the files to backup by highlighting them using the left mouse button and ctrl to select individual files or shift to select a range.
  • Highlight RAW, choose "Move To" and "Tape". Press "Start...".
  • When the backup is complete press "Dismount" to eject the tape.
  • If the tape auto-ejected without pressing "Dismount" then the tape is full (see Full Tape).
  • If you select multiple files, be sure they all need to be backed up, otherwise you will get an error.


Return to Contents

Image Data Backup

  • Ideally 1-2 months after scanning, after contouring, onsite analysis and copied image data to project disk.
  1. Delete ISQ After Evaluation
    • ISQ files are normally deleted after completing your evaluation since they are very large files and can be reconstructed from the RSQ file.
    • Show "Current (on Disk)", type the beginning of your sample name (e.g., CAMOS) in the file filter and press enter or press "Update List".
    • Select all the files for which you have completed the evaluation (there will be a + sign next to any scan that has been evaluated). #*Highlight IMA, choose "Move To" and "Trash".
    • After you choose the trash symbol, you will now be given the option to select specific file types, choose "Select" and "ISQ". Press "Start...".
    • Only choose one file type to delete at a time. The wildcard (*) indicate all files other than "ISQ" and "AIM" files.

  2. Backup IMAGE Data
    • AIM, GOBJ and other evaluation files are backed up onto IMA tapes (see Tape Label Convention).
    • Put the most recent IMA tape into the tape drive, then press "Mount".
    • Show "Current (on Disk)", type in the beginning of your sample names (e.g., CAMOS) in the file filter and press enter or press "Update List".
    • Select all the files to backup by highlighting them using the left mouse button and ctrl to select individual files or shift to select a range.
    • Highlight IMA, choose "Move To" and "Tape". Press "Start...".
    • When the backup is complete press "Dismount" to eject the tape.
    • If the tape auto-ejected without pressing "Dismount" then the tape is full (see Full Tape).


Return to Contents

Remote Access

VPN Setup

Access to the OpenVMS workstations from campus does not require VPN setup; however, to access from off the campus requires establishing a VPN connection prior to connecting.

The VPN server is: gpvpn2.ucalgary.ca

The client needed for VPN connection is FortiClient SSL and is available at: http://www.ucalgary.ca/it/networks/vpn/genera


Windows

Download Programs


There is only one program required to access MicroCT remotely: MobaXterm. It will act as both an SSH client and as an X server.


Configure MobaXterm


Run the .exe file after downloading MobaXterm. After the initialization, something like this should pop up:


Click on "Sessions" -> "User Sessions" and choose "SSH" in the top left of the "Session settings" window.
Input your host info into the "Remote host" dialogue box such as "emily.ucalgary.ca", check on "Specify username" and input your username such as "xt2recalib" and ensure "X-11 Forwarding" is checked in "Advanced SSH Settings" tab, and click OK.


It should look like this:

Start the session


To start a session and access the MicroCT system remotely, simply launch the MobaXterm client and under "Sessions" -> "User session" you should have something titled "xt2recalib@emily.ucalgary.ca".
Double click that session and you're good to go!

MAC/Linux

Download Programs

You need an X server and an SSH client to access the MicroCT system remotely.

The terminal already acts as an SSH client. You will only need to download an X server if you don't already have one installed.


SSH from terminal

Accessing MicroCT from your MAC or Linux machine is simple.

  1. Open a terminal.
    • On MAC: open the "Applications" folder, choose "Utilities", then "Terminal".
  2. Type: $ ssh -Y -p22 -c 3des-cbc -o KexAlgorithms=+diffie-hellman-group1-sha1 -o HostKeyAlgorithms=+ssh-dss xt2recalib@emily.ucalgary.ca
    • Typing: $ alias xt2recalib='<ssh command above>' allows you to only type "$ xt2recalib" in the terminal from here on out to access the MicroCT system.
  3. You're good to go!


Problem with OpenSSH authentication

You might get an error similar to the following especially after a recent OS update:

 Unsupported KEX algorithm "+diffie-hellman-group1-sha1"
 command-line line 0: Bad SSH2 KexAlgorithms '+diffie-hellman-group1-sha1

This is not Apple’s fault, it’s OpenSSH version 7. SHA1 is weak, so support for it has been removed. Which is fine, but VMS clients are probably using RSA/SHA1. So until they’re all updated (i.e. never!) we need to re-enable SHA1.

Open a terminal windows and execute the following:

 sudo nano /etc/ssh/ssh_config

ENTER YOUR PASSWORD

Locate the line ‘# MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160′ and remove the Hash/Pound sight from the beginning.

Locate the line ‘# Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc’ and remove the Hash/Pound sight from the beginning.

Then paste the following on the end;

 HostkeyAlgorithms ssh-dss,ssh-rsa
 KexAlgorithms +diffie-hellman-group1-sha1

There’s no reason to reboot, it should work straight away.

If SSH Speed Issues


If you notice that the remote display is quite slow, you may prefer to enter the 'manual' X display redirection after connecting with ssh.

The steps to enter the 'manual' X display redirection are outlined in one of Scanco's FAQs found here.
Click the "Remote Graphical Access from your PC to the MicroCT" tab (5th tab) and scroll down to "SSH Speed Issue" for more information.


Return to Contents