**1.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.

**20**• written 4.1 years ago by Dario Strbenac •

**1.5k**