percolator icon indicating copy to clipboard operation
percolator copied to clipboard

Numerical differences in output between Windows and Linux

Open vrkosk opened this issue 5 years ago • 1 comments

There are often numerical differences in output between the Windows and Linux versions. This is the command line I used:

percolator.exe -i 10 -D 14 -v 2 -U -B F003877.decoy.pop -r F003877.target.pop -j F003877.dat.pip

I've tried versions 3.04 and 3.05, using the Ubuntu 64-bit binaries as well as compiling directly from source. A summary table is below showing the count of matches at q<0.01; counts come directly from the target.pop and decoy.pop files.

If you diff the pop files produced by (e.g.) version 3.05 on Linux vs 3.05 on Windows, most lines show non-trivial numerical differences. There also seem to be compiler differences on Linux. ICC 2016 stands for Intel Parallel Studio XE 2016.

Version | Platform | How compiled | Target PSMs | Decoy PSMs 3.04 | Linux | from source (ICC 2016) | 61942 | 618 3.04 | Linux | from source (GCC 4.8.5) | 61832 | 617 3.04 | Windows | from source (VS2015) | 61837 | 617 3.04 | Linux | github release | 61832 | 617 3.04 | Windows | github release | 61837 | 617 3.05.0 | Linux | from source (ICC 2016) | 61911 | 618 3.05.0 | Linux | from source (GCC 4.8.5) | 61918 | 618 3.05.0 | Linux | github release | 61849 | 617 3.05.0 | Windows | from source (VS2015) | 61831 | 617 3.05.0 | Windows | github release | 61831 | 617

F003877.dat.pip is about 150MB. Zipped version is 31MB, which exceeds GitHub file attachment limit. I'm happy to upload it to a dropbox if needed.

vrkosk avatar Sep 17 '20 11:09 vrkosk

One cause is that the code performs floating point arithmetic using functions from cmath.h, such as std::sqrt and std::pow. The precision of these calculations are determined by the compiler along with the accompanying standard.

marcus1337 avatar Sep 23 '20 14:09 marcus1337