Isobar is a Bioconductor package for the normalisation and analysis of TMT and iTRAQ data. It has over 50 citations, but has at least one important normalisation bug.
Isotope impurity correction is an essential step which takes a table of impurity percentages and calculates a deconvoluted set of quantities. Isobar solves the incorrect linear model, which leads to incorrect normalised values.
Consider the following matrix of impurities:
labels <- c("114", "115", "116") impurity <- matrix(c(0.96, 0.03, 0.01, 0.02, 0.93, 0.05, 0.02, 0.04, 0.94), byrow = TRUE, ncol = 3, dimnames = list(labels, labels))
and the following ion counts
counts <- matrix(c(110, 209, 481), nrow = 1)
The impurity matrix has the labels as rows, and the percentages of the labels actually weighing the mass in the columns. For example, 96% of the labelling reagent labelled as 114 weighs the amount it should. However, 3% of the 114 labelling reagent labeled weigh 115, rather than 114. Based on this, the expected normalised values are 100, 200, and 500.
The code used by isobar in the correctIsotopeImpurities
function simplifies to :
corrected <- t(apply(counts, 1, function(spectrum) { solve(impurity, spectrum) }))
which is the incorrect linear model and produces the wrong normalised values. The size of the error can be large if a large measured value is adjacent to a small measured value. The correct model is simply :
solve(t(impurity), spectrum)
The authors were notified of this a few months ago, but have ignored the bug. MSnbase previously had the same error, but was fixed by the maintainer, as described in the NEWS file. To avoid publishing incorrect proteomics results, it is advisable to avoid using Isobar until the authors decide to resume maintaining their software.
Did you commit the changes to the Subversion repository of Bioconductor ? The SVN log doesn't show any recent changes to the development version of your package. It is also unchanged for the release variety, so it seems that no changes were made anywhere.
Also, 1.16.2 is not a valid version for devel (the middle segment should be odd in devel). We have a pre-commit hook that rejects commits with invalid versions so perhaps you ran into that and that is why the change has not been checked in.
I do see a recent commit to https://github.com/fbreitwieser/isobar but you need to explicitly set that up to link to our svn repo and you must explicitly commit to svn with
git svn dcommit
, see the documentation.I made the commits to my Github repo, however the git-svn bridge has been discontinued so it was not automatically synced with the SVN.
https://github.com/fbreitwieser/isobar/commit/ddaaa2d23e26c621fdb36b645e41822fef1ab32c
Thank you for the information, Dan, I will set-up the sync with SVN.
The release version (BioC 3.2) and the development version have the bug now fixed in the SVN. I added the following message to the NEWS file:
- Fixed critical bug in isotope impurity correction method. Isobar used a transposed matrix for isotope impurity correction prior to this fix. Quantification results will change when isotope impurity correction is performed. Bug discovered by Dario Strbenac https://support.bioconductor.org/p/74301/#79900).