Fmriprep backwards compatiability?

Hi all,

I’m currently trying to work out how robust/safe fmriprep is in its backwards compatibility. I’ve noticed that if I, for example, run preprocessing using 1.5.1rc1 after having previously run 1.5.0rc1, it seems to be able to determine which files need to be brought up to date and which don’t, and either skipping a step because it has found a Cache or rerunning when it finds an Outdated cache. Similarly, if I want a new output space, or preprocessing step, it seems to work quite well to figure out what needs to be redone and what it can skip.

What I’m trying to figure out is if I should trust this, or if I really should rerun from fresh every time I change something.

My main issue is that I laboriously ran fmriprep1.5.0rc1 on around half a dataset (roughly ~150 individual scanning sessions) with a lot of inconsistent hanging errors on an HPC, as mentioned in the FAQ and several posts on the forum. Thankfully, 1.5.1rc1 seems to have alleviated this somewhat but left me with a potential version control headache :slight_smile:

Cheers,

Arjun

Hi @arjun,

In general, we try to make our versioning as semantic as we can, and hence jumping between 1.5.x series should not contain any relevant changes that break compatibility.

This is the case for the particular jump you are trying - 1.5.0rc1 should be fully compatible with 1.5.1rc1.

That said, there are many components that are integrated within fMRIPrep, and obviously any of them can be a potential point to break backwards compatibility. Although we would try to signify these changes by changing the minor version (i.e., next time we break it, then we will push to 1.6.x series), it is possible for us to break compatibility unintendedly.

For you use case it seems sensible to keep using the latest fMRIPrep version within the 1.5 series, but other users (e.g., if you are to run a whole new dataset in the context of a study) it may make sense not to keep the work directory (i.e., cached intermediate results) - and actually this would be my recommendation.

Hi @oesteban,

Thanks so much, that is helpful. So is it fair to say that we wouldn’t expect any differences whatsoever between: a) a dataset preprocessed with rc1.5.0rc1 and then ‘updated’ using rc1.5.1rc1 b) a dataset preprocessed only using rc1.5.1rc1?

Thanks again for your work on the fantastic fmriprep and helping people fumble through their errors on the forums. It is greatly appreciated :slight_smile:

Cheers,

Arjun

You can check the list of changes in https://github.com/poldracklab/fmriprep/releases. As I said, finding no differences whatsoever is an expectation, not a guarantee.

That sounds reasonable. Thanks Oscar!