NAME: DTI Visualization and Analytical Tool (brainapp) FAQ QUESTION: Where is the brainapp code? $G/src/brainapp QUESTION: How do I run and compile the program? In a shell, type make to compile. To run on the desktop, type run desktop [-save ] [-load ] If the -load option is not set, the subject ID in the settings-common.cfg file will be loaded. To run on the fishtank, type vrpn-start-fishtank in one shell. Then, in another shell, type run fishtank [-save ] [-load ] QUESTION: How do I load a new dataset? To load a new dataset, you should edit the settings-common.cfg file. You will have to specify the directory in which the dataset is located, the name of the dataset, the name of the streamtube model (if you're loading one), the name of the ventricle model (if you're loading one), and the name of the streamsurface model (if you're loading one). The format is as follows: Brain_Data_Dir Brain Brain_Tube Brain_Vent Brain_Surf A specific example is shown below: Brain_Data_Dir /map/gfx0/common0/diffusion/Interface/datasets/ Brain MEM_DTI_COHEN_40B Brain_Tube tube_9.wrl Brain_Vent vent_1.wrl Brain_Surf surf_3.wrl Once the settings-common.cfg file has been edited, run the program as usual, but without the -load option. QUESTION: How does the user interaction work on the desktop? Keypresses: s = hide/show streamsurfaces v = hide/show VOI menu c = hide/show stats menu (for total and weighted lengths) (note, you can't show both VOI and Stats menus at the same time. You must hide one before you show the other) Save/load: If you start up the application without specifying a save-as file, you will not be able to save anything in that session. If you specify a save-as file, then a Save button will appear on the menu. Press this botton (middle click) to save to a file. Doing this saves the confic info (datasets, wrl files) as well as VOI locations, boolean expressions and threshold values. Mouse: Left button - navigate around the scene Middle button - click on buttons/sliders and other gui-related things VOIs: 1) press v to show ROI menu 2) middle click New_VOI (a VOI menu will pop up) 3) fiddle around with the position and dimension sliders to get the VOI where you want it 4) once you are satisfied with the location, click "Add_VOI" 5) in order to show streamtubes in VOIs, you must select the VOI(s) you want to include in the ROI by middle clicking on them (the VOIs turn green once selected. To deselect, middle click again). After selecting the VOIs you want in y our ROI, click the "AND_Selected" button in the menu. (What this does is is show all streamtubes that pass through all of the selected VOIs. Essentially, it adds a boolean expression to a list of expressions that specify which tubes to show) 6) Now you should just see the streamtubes in the ROI (and the hue should be different) 7) To display the ROI with all other streamtubes, click the "Show_all" button in the View menu 8) To display only the streamtubes in the ROIs, click the "Show_ROIs" button 9) You can repeat steps 1-8 as much as you want 10) You can only edit a VOI if it is not part of a boolean expression. If it is not part of an expression, middle click on the New_VOI button of the ROI menu. Then you can fix the dimensions/position of the selected VOI. Once you are done editing, don't click "Add_VOI", otherwise a duplicate VOI will be added. Simply exit the ROI menu by pressing "v" again. Statistics: 1) press c to show statistics menu 2) middle click any of the buttons to compute something (like total length) (the stats are calculated on all visible streamtubes) 3) when the set of visible streamtubes changes, you have to recompute the metrics (because the buttons will clear) 4) hide the stats menu by pressing c again QUESTION: How does the user interaction work on the fishtank? It works the same as on the desktop except that you use the right mouse button to navigate the scene instead of the left mouse button. QUESTION: How is the program (code) organized? TestApp.cpp - top-level. We read the config (or load) file and set up the brain Brain.cpp - contains the streamtube, ventricle, and streamsurface models. Also keeps track of the statistics of the streamtube model. BrainMRI.cpp - contains the orthogonal MRI slices BrainSlice.cpp - an MRI Slice.cpp - textured quad that represents the MRI slices BrainVol.cpp - indexes the MRI slices BrainUtil.H - reads in the MRI (from i0 images) VOI.cpp - basically just a rectangular prism ROI.cpp - keeps track of the VOIs and boolean expressions Default2DMenu.cpp - simple 2D menu (use middle mouse button) Slider.cpp - 2D slider (use middle mouse button) ModelLoader.H - loads an obj model ObjModel.cpp - a model from an obj file VRMLLoader.cpp - loads a wrl model Statistics.cpp - contains a statistics menu, which queries the Brain for computations QUESTION: Where can I find DTI research papers related to this project? I will make a reading list with links soon. For now, here are relevant research paper titles and authors: Akers, David et al. "Exploring connectivity of the brain's white matter with dynamic queries" Beaulieu, Christian et al. "The basis of anisotropic water diffusion in the nervous system - a technical review" Brooks, Frederick P. et al. "The computer scientist as toolsmith II" Catani, Marco et al. "Occipito-temporal connections in the human brain" Ciccarelli, O. et al. "Diffusion tractography based group mapping of major white-matter pathways in the human brain" Ciccarelli, O. et al. "From diffusion tractography to quantitative white matter tract measures: a reproducibility study" Ding, Zhaohua et al. "Classification and quantification of neuronal fiber pathways using diffusion tensor MRI" Gong, Gaolang et al. "Asymmetry analysis of cingulum based on scale-invariant parameterization by diffusion tensor imaging" Parker, Geoffry JM et al. "Initial demonstration of in vivo tracing of axonal projections in the macaque brain and comparisohn with the human brain using diffusion tensor imaging and fast marching tractography" Peters, Alan. "The effects of normal aging on myelin and nerve fibers: a review" Vilanova, A. et al. "An introduction to visualization of diffusion tensor imaging and its applications" Zhang, Song et al. "Visualizing diffusion tensor MR images using streamtubes and streamsurfaces" QUESTION: Where can I find data obtained from this program (in Spring 2005)? All of the data is in the $G/src/brainapp_data directory. In Spring 2005, we worked on developing metrics to measure white matter integrity. We considered the pathologies of vascular cognitive impairment (VCI), HIV, and HIV with progressive multifocal leukoencephalopathy (PML) in particular. The data directory is organized as follows: METRICS.txt has thresholded/unthresholded metric measures for several datasets (HIV, normals, VCI) SUBJECTS lists all the subjects we made models for in spring 2005 as well as the parameters that were used aging/ has the .ba files for the VCI and some healthy controls aging/imgs has the un/thresholded images of the VCI and healthy subjects brainapp_files/ has older brainapp files that can probably be deleted controls/ has .ba files for a bunch of healthy controls controls/imgs has corpus callosum images of the healthy subjects hiv/ has some HIV .ba files hiv/imgs has some HIV images pml/ has some PML .ba files pml/imgs has some PML images reproducibility_study/ has the .ba files for all the models considered in the reproducibility study. These models are all for DTI_MEM_4_N_27. statistics/ has the statistics we obtained from spring 2005 tumor/ has tumor .ba files QUESTION: Where can I find presentations and papers that discuss the above data? stylee's honors thesis paper and presentation are in /pro/graphics/papers/brainapp. QUESTION: Who can I contact if I have more questions? Email me at Stephanie.Lee@alumni.brown.edu QUESTION: How can I create new ventricle models? To create a new ventricle model, edit the Makefile of the dataset. An example of input parameters is: vent_1: $(LANDMARK) -in $(MEM_DTI_COHEN_158)/d2mem/I0 -em 2 -np 150.2 1 04.3 102.1 -iv 700 -cp 0.50 -outobj ./models/$@ To find out what these parameters mean, type landmark -- in a shell. Once the parameters are set, type make in a shell (in this case, make vent_1). If you are trying to generate a ventricle model, but the result shows the ventricles along with a lot of extra surfaces you don't want, you should experiment with the -iv parameter. A higher -iv parameter makes more of the surfaces disappear from the model. If the result shows surfaces other than the ventricles, then the -np parameter might need to be changed. One way of figuring out a point to input is to first generate a model where none of the surfaces are extraced (-em 0). Once the model appears, the ventricles (along with other stuff) should be visible. You can hover your mouse over a part of the ventricles and press "p" on the keyboard. The point on the model that the mouse is hovering over will be outputted into the shell. You can try to use this point as a possible -np parameter. After you generate a good ventricle model, you can convert the .sm file to a .wrl file to make it compatible with brainapp. QUESTION: How can I create new streamtube models? To create a new streamtube model, edit the Makefile of the dataset. The input parameters that were used the most in Spring 2005 are: tube_9: $(TUBEGEN) -dt $(MEM_DTI_4_N_27)/d2mem/Diffusion -t2 $(MEM_DTI_4 _N_27)/d2mem/I0 -radius 0.3 -al 0.1 -cs 10 -cl .1 -cd 2.0 -dth .5 -seed 1 1 1 -stepsize 1.0 -t2thresh -1.0 -ODE 0 -out ./models/$@.sm -randlen 1 -randseed -1 You can read about the parameters of tubegen by typing tubegen -- in a shell. Type make in a shell once the Makefile is set. QUESTION: What are all the files that tubegen outputs when it finishes generating a streamtube model? Tubegen outputs multiple files when creating a streamtube model. Descriptions of all files are below: .sm the streamtube model (vertices and colors) .wrl the streamtube model (based on the .sm file) .data a list of the backbone vertices in each streamtube. The format is as follows: .... .... .info a file that has the mean linear anisotropy of each streamtube (the order of the streamtubes in this file is the same as the order of the streamtubes in the .wrl file) .nocr the uncompressed version of the .data file .size the number of streamtubes in the model QUESTION: How can I create new streamsurface models? To create a new streamsurface model, edit the Makefile of the dataset. A sample set of input parameters is shown below: surf_3: $(SURFGEN) -dt ./d2mem/Diffusion -t2 ./d2mem/I0 -seed 5 5 5 -out ./models/$@.sm -pl 0.2 ENDFAQ: DO NOT DELETE THIS LINE