Question: Warning About isobar Incorrect Calculation And Lack of Maintenance
2
4.1 years ago by
Dario Strbenac1.5k
Australia
Dario Strbenac1.5k wrote:

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.

isobar shovelware • 789 views
modified 3.7 years ago by florian.bw20 • written 4.1 years ago by Dario Strbenac1.5k
1
3.7 years ago by
florian.bw20
United States
florian.bw20 wrote:

Dear Dario Strbenac,

Thank you very much for reporting this error. I'm sorry for the slow response, and even more that this bug was in the package for so long.  It is fixed with the most current development version (v1.16.2), and I will see that I get it into the Bioconductor release versions. The package is not actively developed anymore, but in the future I will be more responsive to bug reports, at least.

Best,

Florian Breitwieser

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.

1

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).