Below is a list of tools I find useful or interesting.

Caveat: I use Windows XP on my current work machine.  Some of the listed tools are available only for Windows, others are geared at bringing some of the functionality of Windows 7 and Mac OS to my XP machine.

Academic Tools

Google Scholar (web)
Google’s academic search engine is a fantastic tool when you know bits and pieces about an article you’d like to get hold of, but don’t have a comprehensive reference.  I use it in combination with Wash U’s excellent library site whenever I’m after a pdf I’ve seen referenced in a talk or at lab meeting.

Publish or Perish (desktop)
A handy application that allows you to quickly explore an academic’s publication metrics.  I use it to keep track of citations, though it’s not the most reliable source of this information as it use Google Scholar’s liberal citation counts.

GPower (desktop)
An application with a number of nifty functions related to power analyses.  I can see this being very useful when it comes to grant application time.

Effect Size Calculator (web)
Online tool for quick and dirty effect size calculation.

Gimp (desktop)
Powerful image editing desktop application.  I use this for everything from fine-tuning figures for manuscripts to adjusting the resolution of instruction slide images for Experiments.  I’m not a image-editing power-user so I tend to create the images with in Powerpoint (or Statistica for graphs) before exporting them as high-resolution tiffs to touch up using Gimp.

General Windows Tools

Dropbox (web & desktop)
Dropbox has changed my whole approach to synching files across multiple computers.  I don’t need to worry about CDRs or memory sticks anymore, I can just drag something into my Explorer-integrated dropbox and see it pop-up on all the other machines on which I have dropbox installed.  I recently designed a new experiment on my desktop machine, and found that I could test each iteration of the development on the laptop machine on which it will be run as soon as I saved the desktop machine version.  Even if your internet connection goes down, you still have access to your files as local copies always available  and only updated from the cloud.  You get 2GB for free with incremental additional space available for certain forms of software evangelism (i.e. converting your friends) and subscription access to more space.  Wonderful!

Logmein (web & desktop)
A great alternative to remote desktop.  I use this to tunnel into my work PC from home if I need to check anything or gain access to resources on the work network.

Chrome (desktop)
Google’s lightning-fast browser.  I made the switch from Firefox when the Mozilla browser started getting very slow.  Although Firefox still wins the addons/extensions war, Chrome is making vast strides here.  Extensions I use include: AdblockGoogle Mail Checker Plus and ForecastFox. (I’ve also tried the even faster Opera, though it’s still a little too prone to crashes for my liking.)

Microsoft Security Essentials (desktop)
Excellent background antivirus software from Microsoft.

Revo Uninstaller (desktop)
A comprehensive uninstaller that searches and removes traces of applications forgotten by built-in application uninstaller.  I use the free version with no complaints at all.

RocketDock (desktop)
A mac-style application launcher.  It’s endlessly customisable and much more useful than the Windows XP taskbar.  I’m not sure I’ll persist with it once I get onto a windows 7 machine though

Stalled Printer Repair (desktop)
Portable tool that allows you to quickly flush a printer queue following a stall.  A vast improvement on the built-in printer queue manager’s efforts.

Novapdf (desktop)
I got this free from Lifehacker a while ago and it’s proved so useful I will be buying it for my next machine. It allows you to create pdfs from anything you can print – pretty useful if you’re putting documents online.

Aquasnap (desktop)
A utility that emulates Windows 7’s Aerosnap functionality.  Great if you have a large monitor and often have applications open side-by-side.

Taskbar Shuffle (desktop)
Drag and drop taskbar applications into new positions.  Not essential, handy if you’re into organising things.

Fences (desktop)
Another organisation utility, this time for the desktop itself.  I tend to use my desktop as a holding pad for anything and everything – Fences allows me to fence sections of it off for certain types of files, e.g. pdfs, portable applications, data I’ve been sent that I need to look at etc.  Also, if you double-click on the desktop, it all disappears, giving you the illusion of being ultra-organised.

Blogs have an important role to play in making science accessible and fun.  We’re used to seeing blogs used to highlight and wax lyrical about interesting findings, disseminate critical scientific thought, and pass judgement on good and bad practice.  They provide a quick and easy way of making editorial-style scientific commentary available to anyone with a passing interest, without the need for a subscription to a journal or for membership of a professional body. What we’re not used to seeing is the primary publication of data through blogs.  Why not?

On the face of it, blogs would seem to be a perfect publication medium.  By choosing to publish my data on my blog:
1) I can cut out the delays that plague the publication process;
2) I can make my research accessible to everyone who is interested;
3) and they won’t need to pay a penny for it;
4) I can start a genuine comment-driven dialogue with interested readers;
5) I can bypass that pesky peer-review process;
6) and I can even eliminate the (sometimes outrageous) cost of publication.
Even if I’d rather stick with the tried-and-tested journals for my multi-experiment masterpieces, there must be preliminary data dissemination niche that blogs can fill.  It’s surely only a matter of time before I start publishing my exciting new data on this blog, isn’t it?

I don’t think so.  Here’s why:

1) Journals are beginning to recognise the frustration felt over publication delays.  At the moment, delays are an inherent part of scientific publication for print.  Yes, these delays slow the process down, but they are becoming less of a problem as journals move towards making digital content available from the ‘in-press’ stage.  Of course this doesn’t eliminate the 18 months it took to get the first reviews back, collect the additional data, resubmit, get the second review back, think about how to answer two of the main criticisms and deflect the third without causing offence, submit your third draft, etc. but that’s a problem with peer-review (see point 5 below), not the publication medium itself.

2) Most research isn’t interesting to the non-specialist – that’s why it’s so hard to get published in Nature, Science or even Psychological Science.  We may all believe that our research is directly relevant to the general public,we may even have to assert that in order to obtain grant-funding and excel in academic assessment exercises like th REF, but for most people, even eventual users of the fruit of your scientific loins, this relevance is generally a few steps away from being engaging to read about in its methodological minutiae.  If you don’t need to make your research easy to find for those with only a passing interest, then you may as well make it easy to find for those with a vested interest, such as those who also spend their lives researching the same thing as you.  It is here that the efficiency of a journal as a news aggregator kicks in.  Rather than check hundreds of blogs a day, I can set up RSS feeds for only a few tables of contents and I’m done.

3) Open Access journals are a game-changer.  Journals are masters of the paywall.  This is a serious issue hampering the scientist’s obligation to make his or her work available to the public.  But it seems like this is on the verge of changing.  In the U.S., federally funded research is more accessible to the general public than it used to be, regardless of the journal in which it is published.  Perhaps in tandem with this mandate for public accessibility, Open Access journals are gaining momentum for a number of reasons: the transparency of their review process; the 21st century supplementary data they allow you to upload; and, of course, the ‘open access’ they offer to the science they publish.  The cost of open access publishing is usually shouldered by the publishing scientist, but at least it’s only shouldered once, not every time the science is disseminated as is the case with closed access journals.

4) If the net has an opinion on your work, it will comment on it.  There is usually no official, internet-based, comment-driven dialogue with readers when articles are published in traditional journals.  Whilst internet comments sometimes display humanity at its most idiotic, they are a part of the way the internet operates and lacking in traditional scientific publication.  I am sure that that as the scientific community settles on a standard method of obtaining information about recently published articles online (e.g. through RSS feeds or sites such as academia.edu) a method of commenting that meets the needs of scientists will evolve.  I’m already seeing scientific articles highlighted in the Explore section of my Google Reader RSS aggregator (they’re usually way off the mark, but at least they’re popping up), and with Google desperate to get in on the social web I don’t think it will be long before scientific abstracts are presented to us in such a way that they afford comments, whether they are wanted or not.  In the meantime, I recently discovered that if people find your work interesting, they will find ways to get hold of it and write about it online in a way that is much more comment friendly.

5) Peer review isn’t perfect, but it’s the best we have.  As far as scientific scrutiny goes it’s also better than editorial review in newspapers or journals, and beats no reviewer whatsoever (the sort of review I subject my writing to when I publish it on this blog).  Plenty has been written about this and it is a a contentious topic, but I’m happy with the process as long as there isn’t any systematic bias in the way in which articles are reviewed by my peers.

6) Low-traffic blogs are free, journals are not – this is the only point on which blogs beat journals.  Journals need to choose whether they are going to charge to publish your work, or for access to your work – the double-dipping they currently engage in is unacceptable.  With open access gaining popularity, I’m fairly certain that journals will start charging more for the privilege of providing them with content (without which they would fold within a matter or months) and less for providing it thereafter – they’ll probably make exactly as much money when they switch over to fully open access as they do now.  Even so, there is an argument to be made that journals do provide value for money, for the scientist at least.  As an example, imaging research doesn’t happen unless you have a grant.  If you have a grant, then the exorbitant cost of publication is shouldered by the funding body, not you.  Behavioural journals don’t tend to charge anywhere near as much for publication and these costs could potentially be funded by your employer.  In both of these situations, if you have been able to conduct my research, you should be able to publish it in a journal your data and/or writing are good enough.  Of course, I would love it if the NIH decided they wanted to challenge publishers on their costs, and as they are the ones being fleeced (directly at least) – but taking this passive position leaves me rather uneasy.

Feel free to have your say in the comments below as I’m sure there are many issues I’ve glossed over or missed altogether.

fMRI studies, which measure blood oxygenation-dependent (BOLD) signal, do report brain activations.

It seems obvious, but it’s been subject to debate.  Why? – well, largely because validations of the technique have tended to involve stimulating neurons using electrodes and measuring the resulting BOLD response using fMRI.  Unfortunately, whenever you stick an electrode into the brain to stimulate a region, that electrical stimulation tends to have extremely non-specific effects.  It’s like testing whether the energy-saving light bulbs (and not the tube fluorescents or the traditional filament bulbs) in the Dobbins Lab explode at high currents by sending a power surge to the whole university and checking to see if the fire department is called to the Psychology building.  There are any number of other, related events associated with the power surge that could have caused the fire-department to be called out.

But now we have some more solid evidence for fMRI doing what we think it does.  Using a pretty cool technique called optogenetic stimulation, mouse neurons can be modified (by a locally-injected virus) to fire when exposed to light, and very specific neuronal firing can be non-invasively stimulated using ‘optical stimulation’.  Resultant changes in local BOLD signal can be assessed using high field-strength fMRI to see whether there is a BOLD activation that corresponds directly to the neuronal firing.  Thankfully, as reported by Lee et al. in Nature, excitatory neuronal firing does lead to the sort of BOLD activation we typically see in fMRI studies.

So, excitatory neurons firing causes an elevated BOLD response.  But wait, there’s more:

“Evoked BOLD was dominated by positive signals while driving these excitatory CaMKIIα-positive cells; in contrast, optically driving inhibitory parvalbumin-positive cells10, which may have unique connectivity with local neuronal circuitry or vasculature, additionally gave rise to a zone of negative BOLD, consistent with the GABAergic phenotype, surrounding the local positive BOLD signal (Supplementary Fig. 4).”

The suggestion there is that the firing of inhibitory neurons leads to negative BOLD signal.  The justification for this statement is hidden away in the supplementary materials, but if it’s well-supported (and replicated,  of course) then fMRI may start being the intuitively plausible brain interrogation tool that we’ve also shied away from allowing it to be.  It doesn’t get too much simpler than: more excitation = more activation = more blood; more inhibition = less activation = less blo0d, does it?

It’s good to know I may not be in the snake-oil business.

Here’s a link to the article: http://www.nature.com/nature/journal/vaop/ncurrent/full/nature09108.html#/

Here’s an interesting wikibooks page detailing how you can make SPM faster.

http://en.wikibooks.org/wiki/SPM/Faster_SPM

Some of the tweaks involve simply adjusting the spm_defaults.m to utilise the amount of RAM you have installed at the model estimation stage.  Others involve a more costly (and potentially hugely beneficial?) purchase of the Parallel Computing Toolbox to utilise many cores in a single machine, or many machines served by a server.  I’ll certainly be taking a look at these tweaks in the coming weeks and months.

EDIT: Changing the defaults.stats.maxmem parameter from its default value of 20 to 33 (in order to use a maximum of 8GB of available memory; as outlined in the screengrab from the wikibooks site below) looks to have sped model estimation up by maybe a factor of 10.

A defaults variable 'maxmem' indicates how much memory can be used at the same time when estimating a model. If you have loads of memory, you can increase that memory setting in spm_defaults.m

Assuming you have a large amount of RAM to utilise, this is a HUGE time-saving tweak.  Even if you don’t have a large amount of RAM, I’m sure you can speed things up considerably by specifying the value as something greater than the meagre 1MB (2^20) SPM allocates by default.

SEE ALSO: https://www.jiscmail.ac.uk/cgi-bin/webadmin?A2=SPM;863a049c.1105 which has the following recommendation:

[change] line 569 in spm_spm from:

nbz = max(1,min(zdim,floor(mmv/(xdim*ydim)))); nbz = 1; %-# planes

to:

nbz = max(1,min(zdim,floor(mmv/(xdim*ydim)))); %-# planes

[i]n order to load as much data as possible into the RAM at once.

It has been a busy and exciting few weeks, but I’m now ready to get back to business and do some research!

By way of re-introducing myself to my own blog (and the blogs of others), here’s a nice blog-post by Tal Yarkoni of [citation needed] on the common practice of  data-peeking.  It should make you think twice about taking a peek at the data half-way through data collection, though I’m not sure whether researchers really are as systematic in their peeking as Tal suggests in his worst-case scenario.  I’m sure that Tal would argue it doesn’t matter how systematic you are, once you peek, you know, and this necessarily changes your approach to the data.

This is proving to be a little more interesting that I had imagined.  The particularly noteworthy finding is a null finding – it doesn’t seem to matter how you do the connectivity analysis, the recovered maps tend to look very similar.

I’m going to think about how to present this best, and what analyses will best illustrate this sort of null finding, but I think it may have publication legs so I’ll hold off preemptively discussing the data until I know exactly what I’ll do to it and how I’ll disseminate it.

By default, SPM masks the images that contribute to an analysis at the Estimation stage.  If a voxel is masked out because it fails to exceed an arbitrary analysis threshold (set to a defulat of 0.8 in SPM5), then its values are replaced with NaNs, and that voxel does not contribute to the final output.  Incidentally, this masking contributes to the non-analysis of orbitofrontal and frontopolar regions as a consequence of signal dropout.

If you want to include voxels that do not exceed the threshold (useful if you are interesting in analysing data presented in unusual units, e.g. maps of residuals), you can edit the spm_defaults.m file.  Around line 42 should be the following text:

% Mask defaults
%=======================================================================
defaults.mask.thresh    = 0.8;
This can be edited (e.g. replaced with -Inf if you want to remove the threshold altogether), the spm_defaults.m file saved, and the analysis run with a more liberal masking threshold implemented.  This can greatly increase the number of comparison that are made, and can include a lot of computationally expensive junk i.e. comparisons with non-brain tissue.  To get round this issue, it is worthwhile setting an explicit mask in the model specification stage (e.g. the whole brain mask I wrote about here) whenever you lower the implicit masking threshold.

There is a little more on this from the SPM list here.  As with all SPM tweaks, make note of what you have tweaked, and make sure you change it back to its default setting once you have done what you set out to do.

Things I have (re-)learned this week:
– Conducting resting connectivity analyses on 60mins worth of 2s TR fMRI data from 19 participants takes time;
– It is always a good idea to do a quick literature search before proclaiming any findings as Earth-shattering.

The first point is no surprise; especially when I consider that the previous resting analyses I have done have all been conducted on approx. 12 min worth of 2.2s TR fMRI data.

The second point helped to temper my initial enthusiasm for some pretty interesting initial findings, which I won’t explain just yet (that will come in pt. 3).  Suffice to say, an article headed by Damien Fair published in NeuroImage that we had read for a lab meeting back in 2008 had already considered quite comprehensively whether on-task fMRI scans could be used to inform fcMRI analyses.

I’m now in the process of trying to replicate Fair et al’s on-task connectivity analyses which examines the residuals following on-task model fitting (once again necessitating that I employ the SPM residuals tweak outlined here), which should give me two different sorts of on-task connectivity analyses to compare to a standard resting connectivity analysis in pt. 3.

Stay tuned.

Last week, during a very interesting Brain, Behavior and Cognition colloquium given by Steve Nelson, Jeff Zacks asked a thought-provoking question.  He wanted to know what fMRI connectivity maps would look like if you performed a resting-connectivity-type analysis on data that wasn’t collected at rest, but was instead collected whilst participants were ‘on-task’, i.e. doing things other than resting.

As background to this:
– Each fMRI participant in our lab typically carry out one or two connectivity scans prior to, or following a the bulk of the experimental scanning;
– Connectivity scans require that the participant keep their eyes open, fixate on a fixation cross, and try not to fall asleep for about 5 minutes;
– Experimental scans have participants engage in much more effortful cognitive processes (such as trying to recognise words and scenes), with multiple tasks presented in relatively quick succession;
– Resting connectivity is thought to be driven be low frequency fluctuations in signal ( approx. 0.1 Hz; a peak every 10 seconds or so), on-task BOLD activation is much more event-related, ramping up or down following certain events  which occur every 6 seconds or so (which we assume results from the engagement of a particular cognitive process).
This Raichle article in Scientific American is a a very accessible primer on the current state of resting connectivity.  This Raichle  article in PNAS is a more comprehensive scientific discussion of the same topic.

Two resting connectivity networks (red and blue, overlap in purple) seeded with 4mm radius spherical seeds on the PFC mid-line.

Jeff’s question was interesting to me because it asks how robust these slow-wave oscillations across distal brain loci really are.  To what extent would they be (un-)modulated by task-related fluctuations in BOLD signal?

My initial thoughts were that on-task resting connectivity maps would look pretty similar to resting resting connectivity maps – after all, it has been suggested that resting connectivity networks, such as the fronto-parietal control network, arise because of their frequency of coactivation during development, i.e. that DLPFC, MPFC and IPL are coactive when on-task so often that it makes metabolic sense for their activity to synchronise even when not on-task.  But, there’s no need to be satisfied with your initial thoughts when you can simply look at some data, so that’s what I did.

On Friday I began the process of running a resting state-style connectivity analysis on the on-task scans of the data that went into the Journal of Neuroscience paper we had published a few weeks ago.   It was a nice dataset to use as we had also collected resting  scans and carried out a connectivity analysis that yielded some interesting results.  I entered the same two seeds (from the the PFC mid-line) that were central to our connectivity analysis into a connectivity analysis using the four, 10-minute on-task scans that we analysed for the event-related fMRI analysis.  In part two, I’ll have an informal look at the differences between the output from the resting scans and the on-task scans when subjected to the same resting connectivity analyses.

Occasionally, it’s nice to look under the bonnet and see what’s going on during any automated process that you take for granted.  More often than not, I do this when the automaticity has broken down and I need to fix it (e.g. my computer won’t start), or if I need to modify the process in a certain way as to make its product more useful to me (e.g. installing a TV card to make my computer more ‘useful’ to me).  This is especially true with tools such as SPM.

One of the greatest benefits associated with using SPM is that it’s all there, in one package, waiting to be unleashed on your data.  You could conduct all of your analyses using SPM only, and you could never need to know how SPM makes the pretty pictures that indicate significant brain activations according to your specified model.  That’s probably a bad idea.  You, at least, need to know that SPM is conducting lots and lots of statistical tests – regressions – as discussed in the previous post.  If you have a little understanding of regressions, you’re then aware that what isn’t fit into your regression model is called a ‘residual’ and there are a few interesting things you can do with residuals to establish the quality of the regression model you have fit to your data.  Unfortunately with SPM, this model fitting happens largely under the bonnet, and you could conduct all of your analyses without ever seeing the word ‘residual’ mentioned anywhere in the SPM interface.

Why is this?  I’m not entirely sure.  During the process of ‘Estimation’, SPM writes an image containing all of your residuals to disk (in the same directory as the to-be-estimated SPM.mat file) in a series of image files as follows:

ResI_0001.img ResI_0001.hdr
ResI_0002.img ResI_0002.hdr
ResI_0003.img ResI_0003.hdr

ResI_xxxx.img ResI_xxxx.hdr
(xxxx corresponds to the number of scans that contribute to the model.)

Each residual image will look something like this when displayed in SPM. You can see from the black background that these images are necessarily subject to the same masking as the beta or con images.

SPM then deletes these images once estimation is complete, leaving you having to formulate a workaround if you want to recover the residuals for your model.  One reason SPM deletes the residual image files is that they take up a lot of disk space – the residuals add nearly 400MB (in our 300 scan model) for each participant which is a real pain if you’re estimating lots of participants and lots of models.

If you’re particularly interested in exploring the residual images (for instance, you can extract the timecourse of residuals for the entire run from an ROI using Marsbar), you need to tweak SPM’s code.  As usual, the SPM message-board provides information on how to do this.

You can read the original post here, or see the relevant text below:

… See spm_spm.m, searching for the text “Delete the residuals images”.  Comment out the subsequent spm_unlink lines and you’ll have the residual images (ResI_xxxx.img) present in the analysis directory.
Also note that if you have more than 64 images, you’ll also need to change spm_defaults.m, in particular the line
defaults.stats.maxres   = 64;
which is the maximum number of residual images written.
There are a few steps here:
1) open spm_spm.m for editing by typing
>> edit spm_spm
2) Find the following block of code (lines 960-966 in my version of SPM5):
%-Delete the residuals images
%==========================================================================
for  i = 1:nSres,
spm_unlink([spm_str_manip(VResI(i).fname,’r’) ‘.img’]);
spm_unlink([spm_str_manip(VResI(i).fname,’r’) ‘.hdr’]);
spm_unlink([spm_str_manip(VResI(i).fname,’r’) ‘.mat’]);
end
and comment it out so it looks like:
%-Delete the residuals images
%==========================================================================
%for  i = 1:nSres,
%    spm_unlink([spm_str_manip(VResI(i).fname,’r’) ‘.img’]);
%    spm_unlink([spm_str_manip(VResI(i).fname,’r’) ‘.hdr’]);
%    spm_unlink([spm_str_manip(VResI(i).fname,’r’) ‘.mat’]);
%end
3) open spm_defaults.m for editing by typing

>> edit spm_defaults

4) Find the following line (line 35 in my version of SPM5):

defaults.stats.maxres   = 64;

and change to:

defaults.stats.maxres   = Inf;

5) Save both files and run your analysis.

Make sure that once you no longer need to see the residual images, you unmodify the code, otherwise you’ll run out of harddisk-space very very quickly!