vbview is VoxBo's all-purpose image viewer. It's designed to be self-explanatory, although issues will come up. As of release 1.8.2, it's still evolving rapidly, so this page may become outdated periodically.
Time Series Browsing
The time series pane shows you the time series for a selected voxel or region. If you have a tes file loaded up, it's just what's in that tes file. If you're viewing a GLM, it's the concatenated time series for the entire GLM. Options for time series viewing are off to the right. Here's what they mean.
Mean scale — each time point is divided by the mean of the whole time series
Linear detrend — a regression line is fitted and any linear effect is removed
Apply filtering — the same time domain filtering applied in calculating the GLM is applied to this time series (GLM only)
Remove covariates of no interest — removes the estimated effects of covariates of no interest from the time series (note that this is done after the above operations)
Scale covariates using beta — scales any displayed covariates by the parameter estimate
Show power spectrum — converts whatever is displayed to a power spectrum, with the zeroth frequency zeroed
Additionally, the following three options determine which voxels are included:
graph voxel under mouse
graph selected mask
graph voxel at crosshairs
<b>vbview2</b> is an image viewer for to 3D and 4D images. It displays slices, not projections or surface renderings. It allows an arbitrary number of layers and graphs time series data.
load a mask image -a load an auxiliary volume -s load a statistical map -h show help -v show version To get a complete list of available flags, run the program with the -h argument.
Pre-built VoxBo binaries are available for Linux, OSX, and Cygwin, and via the NeuroDebian project (neuro.debian.net) for Debian derivatives.
VoxBo is a free software package for the processing, analysis, and display of data from functional neuroimaging (chiefly fMRI) experiments and now voxel-based lesion-behavior mapping. Depending on what you need to do, it may be useful as a completely independent package, you may need to supplement it with external tools, or you may use its tools to supplement other packages that you use.
VoxBo's native analysis tools support the modified GLM (for autocorrelated data) as described by Worsley and Friston, as well as the standard GLM for non-autocorrelated data. Beyond that, VoxBo's design is based on a number of considerations we consider essential for scientific software.
A major focus of the VoxBo project is interoperability. This means two things: if you're using VoxBo, you can (and should) make use of parts of other software packages; and if you're using other software packages, you can (and it would make us happy if you did) make use of parts of VoxBo. We don't want you to use VoxBo instead of SPM, FSL, AFNI, or any other tools you find useful. But we would like you to feel you can pick and choose the pieces you like best from each of them, and we hope that you'll find some of VoxBo's many tools helpful for something. If you'd like to browse the list of VoxBo tools to see what might be helpful, visit this page.
VoxBo is free in the sense promoted by the Free Software Foundation — you can use it for any purpose whatsoever and you can modify the code subject to the restrictions of the GPL. It also doesn't depend on any external software, like MATLAB or IDL.
VoxBo's design is motivated (in principle and often in practice) by some considerations we consider important.
- Efficiency and Automation
- Multi-level interfaces
- Distributed processing
- Ease of use and of installation
Sometime in the early 1990s, Geoff Aguirre and Eric Zarahn put together some code to do imaging analysis. Known by various names, including "NewTenureMaker," this software was written in IDL and did what it was supposed to do. Sometime in 1998, Dan Kimberg came by and decided that the software could use some sweeping changes, most notably in its name. After a number of afternoons perusing the Ikea catalog, we settled on the name, VoxBo. The rest is somewhat boring history.
Here are links to the latest release:
- Release 1.8.5 for Linux (about 117MB)
- Release 1.8.5 for OSX/Intel (about 191MB)
- Release 1.8.5 for Cygwin (about 46MB)
- Individual tool downloads for Linux
- Individual tool downloads for OSX
- Individual tool downloads for Cygwin
You can also download VoxBo from NITRC.org:
If for whatever reason you want older stuff, or just want to surf what's available, here's a convenient link to the archive of downloads:
What is VoxBo?
VoxBo is a free software package for the processing, analysis, and display of brain imaging data, specifically including fMRI data and lesion analysis. It runs on Linux, OSX, and Windows (via Cygwin), and is made freely available, complete with source code, under the terms of the GNU General Public License.
What are the advantages of VoxBo?
VoxBo includes modular tools for analyzing imaging data and a job scheduling system for running these tools efficiently. On the scheduling side, VoxBo's advantages include:
- A job scheduler that keeps track of what work needs to be done and what resources are available, and makes sure everything runs smoothly.
- Email notification of errors, warnings, and anomalous events.
- Graceful error recovery.
- A modular, extensible architecture designed to support interoperability.
And on the analysis side:
- Tools for numerous preprocessing steps, including slice timing correction, rigid body motion correction, spatial normalization and spatial smoothing (all steps may be omitted if desired).
- A flexible implementation of the modified General Linear Model (Worsley and Friston, 1995)
- Graphical data presentation allows for "voxel-surfing" and the presentation of time-series data from individual voxels or regions-of-interest.
Why should I use VoxBo instead of [package X]?
You shouldn't! Choosing imaging analysis software shouldn't be an either/or proposition. We'd love to see everyone take advantage of VoxBo's features. But we'd also love to see everyone (including ourselves) take advantage of the terrific features of the many other available software packages, free and otherwise. An important goal of VoxBo development is to create an environment in which you can use whatever software you like alongside whatever other software you like.
That said, with VoxBo, we do provide a self-contained package, that can handle a broad variety of data analysis problems. It's made of lots of parts, some of which you might find individually useful in addition to SPM, AFNI, BrainVoyager, or your own in-house code. But we do think the whole package provides has some nice advantages, a few of which are described below.
What is VoxBo made out of?
VoxBo is written mostly in c/c++, although we continue to distribute older code written in IDL as non-essential parts of the package. All told, VoxBo's source code amounts to well over 150,000 lines (including a bit of redundant and obsolete code, as well as whitespace and comments).
Although VoxBo used to depend on IDL, it no longer does. That said, some people like specific features of the old voxel surfer and we continue to distribute it. Because IDL costs money, and we're trying to build free software, we'd like to phase out the old code eventually, but rest assured that you do not need to invest in IDL to use VoxBo.
Is VoxBo hard to install?
If you just want to run a particular tool, no. Just download it and run it.
If you want VoxBo to schedule jobs across a cluster, then the answer is "sort of." We are continually improving the installation for ease and robustness, and welcome feedback in this area. But it does require root access and a little bit of system administration knowhow. For guidance in the latter case, see Installing VoxBo.
What kinds of documentation and/or support are available?
This wiki is now the major repository for online/printable documentation. For up-to-date information, you should also subscribe to the mailing list. Feel free to ask questions, even really dumb questions. We guarantee you won't be the only one interested in the answer.
Where can I get VoxBo?
This page has all the links you need: Getting VoxBo.
Who funds VoxBo?
Through mid-2007, VoxBo development was funded primarily by a [http://www.nimh.nih.gov/neuroinformatics/index.cfm Human Brain Project] grant (R01DA14418). VoxBo is also supported by NINDS via P30NS045839 (Detre), and through the departments of Radiology and Neurology at the University of Pennsylvania, via the Center for Functional Neuroimaging.
I don't want to learn a lot about computers. Will VoxBo give me any trouble?
You don't have to be a Linux (or UNIX) guru to use VoxBo, but some facility in getting around on your computer will help a lot. We're working hard to make the software as easy as possible to learn and use. But the more comfortable you are on the computer you use for analysis, the better off you'll be.
I don't want to learn a lot about neuroimaging. Will VoxBo give me any trouble?
We are strong believers in idiot-proofing, automation, and intelligence in software. And we do understand why you would want to ask questions about neural activity without having to delve too deeply into areas that are far afield from your research interests. However, if you want to do meaningful work in neuroimaging, you need to understand what you're doing at a reasonably detailed level. We've built VoxBo to be moderately intelligent in places, and we have great plans for future improvements in the usability of the software. But for now, the learning curve for doing functional neuroimaging is still fairly steep, no matter what software you use.
How should I cite VoxBo?
At the moment, there is no VoxBo article, so you should cite the web site:
<a href="http://www.voxbo.org/" class="external free" rel="nofollow">http://www.voxbo.org</a>
Who makes VoxBo?
Dan Kimberg at the University of Pennsylvania oversees the VoxBo project. For the rest of the VoxBo development team, see the Team VoxBo page.
Does VoxBo have a slogan?
Marianna Stark won our slogan contest, and a somewhat uncomfortable Ikea chair, for her entry: "The Software Behind the Brains."
What kinds of analyses does VoxBo support?
VoxBo includes many tools that are neutral with respect to the inferential statistics you can compute, but that we think are particularly valuable. So if a motion corrected, thresholded, normalized, smoothed, and time-corrected dataset is the starting point for your analysis, VoxBo may provide some useful tools for you. If you need a job scheduling system to run these tasks for you at night, we can help there too. But if your primary statistical analyses involve adding random numbers to your data and masking regions whose coordinates include the digits 4 and 7, VoxBo won't provide a lot of help (statistical or psychiatric).
Infrastructure aside, what kinds of analyses are well-supported? The statistical guts of VoxBo are geared towards univariate general linear modeling, and in particular the modified GLM described by Worsley and Friston (Worsley and Friston, 1995). That is, the software is designed to make it relatively easy to describe a set of covariates that you think will model the various contributors to your fMRI signal, to derive a least-squares solution for the relationship between your covariates and the observed data, and to compute inferential statistics describing how well your covariates explain the data. VoxBo also incorporates some methodological innovations drawn from the work of Aguirre and Zarahn (Zarahn et al., 1997b; Aguirre et al., 1998b).
Why doesn't VoxBo support X?
There are many useful analysis techniques we don't have the interest and/or funding to add to VoxBo. If you have something straightforward in mind, feel free to ask. But there is no package that has the best implementation of everything. The best approach is often to mix and match tools from a variety of packages. Our approach with VoxBo has been to focus on a few key components (critically, the GLM), but also to make sure it's easy for you to integrate tools from other packages. The GLM approach implemented in VoxBo is carefully thought-out, and widely useful. But if you would like to use ICA, support vector machines, structural equation modeling, multivariate techniques, Bayesian analysis, or any of the many other interesting analysis approaches and processing tools that have been articulated in the literature, you'll need to rely on other packages as well. We hope you'll still find parts of VoxBo useful. Because interoperability and automation are two major goals of VoxBo, we would like the software to make it easy for you to mix and match packages. If there are particular tools you would like to use with VoxBo, but that don't seem to fit easily, please let us know.
Installation, Administration, and Job Scheduling
What do I need to run VoxBo?
VoxBo is meant to run on Linux, OSX, and Windows. In practice, Windows is a little flaky because of Cygwin-dependence. If you want some more detailed information about what kinds of hardware and software it takes to set up an fMRI analysis lab, see Computing_recommendations.
I don't have super-user access to my machine, can I still use VoxBo?
For most of VoxBo's tools, you can just download them and run them without any special access. If you want to create a cluster configuration (even on a single machine), you need to get your system administrator to install the software first. We hope to restore the single-user mode at some point. Note that imaging analysis is CPU-intensive, so if you're not working on your own machine, you will probably need to alert the system administrator at some level, if just to let them know what you'll be doing.
Please explain VoxBo's job scheduling mechanism.
There are two types of things you do in VoxBo, as in life: interactive things that require your active participation and batch things (or jobs) that don't. As computers get faster, batch things tend to become interactive things. But we always seem to find more and more demanding tasks to throw at our computers, so there's no shortage of batch things.
Functional neuroimaging data analysis presents some computational problems that are sufficiently time-consuming to require batch processing. In order to minimize the amount of time these tasks take, VoxBo implements a job scheduling mechanism that keeps track of what jobs need to be done, and ships them off to computers as they become available.
The utility of this is most easily seen in the context of big jobs (e.g., preprocessing of a subject's data) that can easily be broken up into several smaller parts (e.g., slice acquisition correction, threshholding, etc.). Some of these pieces have to be executed sequentially (e.g., realigning and smoothing data from a single run), but others are independent (e.g., motion correcting the first and the second runs of a subject's data). By breaking up our jobs into relatively small pieces, and having a central scheduler decide when to run each piece, we gain several advantages:
- Efficiency. This is a limited but powerful form of parallel, distributed processing. Time consuming jobs can be run on multiple machines simultaneously.
- Automation. Long sequences of jobs from multiple users can be queued up, each to be run in sequence when the resources are available. Instead of starting one process, waiting for it to finish, starting the next, waiting, etc., you can describe a large number at the same time, and have them all run at the right time.
- Flexibility. Long, time-consuming preprocessing sequences can be interrupted, resumed, and altered easily if they're broken up into multiple jobs. In doing its scheduling, VoxBo takes into account the structure and priority of your job, the resources available, and laboratory policies. If there are eight CPUs free and you need to motion correct eight scans as quickly as possible, you might get lucky and max out the whole lab for a few hours. Without this type of distributed processing, you'd probably end up doing it all on one machine, and it would take eight times as long. With more machines (a reasonable VoxBo-capable machine can be had for under $1500 these days), improvements of more than an order of magnitude are possible.
VoxBo's batch processing system (aka the scheduler) was written in 1998. Since then, so-called grid computing has become quite popular and there are many more choices for distributed processing systems. It may be that we could settle on one of these and get rid of the VoxBo scheduler. However, there is little specific motivation for us to do so, and having control of the source code makes it possible to introduce exactly the features we would like. Of course, if you would like to use parts of VoxBo with some other batching or distributed processing system, it should be quite easy to set up.
How does clustering improve throughput? It seems like it doesn't always.
With the single user model, if you find a free machine, you can set it working on your analysis, and it will crank away until it's done. With cluster-based parallelization, a few big sequences can clog up the entire lab (especially after hours). So if there are a few big jobs stuck ahead of you in the queue, your work might not even get started for many hours.
Although it sounds bad, this is generally a good thing, especially if several people each need to run complex sequences that take a long time. Consider the case where three people each need about 24 machine-hours to do some processing, and there are three free machines. Under the old system, each would start their work on one machine, and each would finish about a day later. With parallel processing, the first sequence would run on all available machines first, followed by the second, followed by the third. The last sequence to finish should still finish in about a day. However, the first to start should finish in about eight hours (a third of a day) and the second to start should finish in about sixteen. The third might not get started until sixteen hours after it was queued, but it will run in a third the time, and therefore be finished at about the same time. In other words, 24 hours has gone from being the average case to the worst case.
Of course, if there happens to be a fourth machine available, all three jobs will finish in much less time than without job scheduling, assuming they can be broken down into small enough chunks to benefit.
Now, this is idealized a bit. If not all the machines are the same speeds, and the jobs aren't perfectly atomic (we break them down into chunks, but some of them are still pretty chunky), it is possible that under some circumstances a job might actually take slightly longer to finish than if it had had the uninterrupted attention of a single CPU. The greatest risk is to jobs that would ordinarily only take a short amount of time, since they are more likely to run up against a bigger job that's using all the machines. If the big job is especially chunky, and none of its pieces are close to finishing, the little job will suffer in comparison to the single-user system. But we're pretty sure this won't happen often, if ever, especially if users are conscientious about assigning appropriate priorities to their work. And this small downside will be greatly outweighed by the majority of times when things will actually take much less time.
I only have one computer, can I use VoxBo without the scheduling stuff?
As of Release 1.8, VoxBo now has a single-user mode. It comes and goes, so please check the release notes for the specific version you're interested in. Of course, even if you have VoxBo installed as part of a cluster, most of the VoxBo components can be invoked from the command line.
I like the analysis software I use now, can I use the scheduling stuff without the rest of VoxBo?
The job scheduling code is designed to be fairly extensible, and in principle would have no problem executing simple shell scripts, MATLAB code, or anything anyone could do in an interactive session with just a keyboard. The main obstacle is documentation - you're on your own figuring out how. However, take a look at the jobtypes files in the VoxBo/etc/jobtypes directory for some hints.
How do I get my data into VoxBo?
File formats are a vexing issue for neuroimaging. VoxBo speaks a handful of file formats (including Analyze and DICOM, and can be taught others, but ultimately there are too many different file formats for us to support them all. Your best bet, if VoxBo doesn't support the file format that comes off your scanner, is to find a converter that will convert your data to one of the formats we do support. If you're having trouble, this is the kind of question that can often be answered either on the VoxBo or the SPM mailing list.
If you liked this article, subscribe to the feed by clicking the image below to keep informed about new contents of the blog: