kusterlab / prosit

Prosit offers high quality MS2 predicted spectra for any organism and protease as well as iRT prediction. When using Prosit is helpful for your research, please cite "Gessulat, Schmidt et al. 2019" DOI 10.1038/s41592-019-0426-7
https://www.proteomicsdb.org/prosit/
Apache License 2.0
85 stars 45 forks source link

Prosit prediction is not deterministic on RTX3070 #74

Closed courcelm closed 3 years ago

courcelm commented 3 years ago

Hello,

I just ran Prosit with the same peptide, charge, and collision energy multiple times and the output is different (see below). Relative peak intensities are not identical. Is this the expected behavior?

Name: VDASIFKAW/2 MW: 518.776742190865 Comment: Parent=518.776742190865 Collision_energy=30.0 Mods=0 ModString=VDASIFKAW///2 Num peaks: 32 205.097154167 0.79792297 "y1/0.0ppm" 103.052215317 0.23959263 "y1^2)/0.0ppm" 100.075690467 0.32064593 "b1/0.0ppm" 50.541483467 0.13546878 "b1^2)/0.0ppm" 276.134268167 0.8067769 "y2/0.0ppm" 138.570772317 0.42885855 "y2^2)/0.0ppm" 215.102633467 0.347602 "b2/0.0ppm" 108.054954967 0.16237532 "b2^2)/0.0ppm" 404.229231167 0.77003676 "y3/0.0ppm" 202.618253817 0.3076643 "y3^2)/0.0ppm" 286.139747467 0.32322848 "b3/0.0ppm" 143.573511967 0.15214443 "b3^2)/0.0ppm" 551.297645167 0.7587323 "y4/0.0ppm" 276.152460817 0.36189634 "y4^2)/0.0ppm" 373.171775467 0.36814126 "b4/0.0ppm" 187.089525967 0.2668844 "b4^2)/0.0ppm" 664.381709167 0.7691555 "y5/0.0ppm" 332.694492817 0.30301023 "y5^2)/0.0ppm" 486.255839467 0.3273088 "b5/0.0ppm" 243.631557967 0.1740765 "b5^2)/0.0ppm" 751.413737167 0.7689358 "y6/0.0ppm" 376.210506817 0.30418697 "y6^2)/0.0ppm" 633.324253467 0.3262936 "b6/0.0ppm" 317.165764967 0.13447677 "b6^2)/0.0ppm" 822.450851167 0.78016925 "y7/0.0ppm" 411.729063817 0.30794537 "y7^2)/0.0ppm" 761.419216467 0.34156856 "b7/0.0ppm" 381.213246467 0.21541049 "b7^2)/0.0ppm" 937.477794167 0.74595606 "y8/0.0ppm" 469.242535317 0.2621392 "y8^2)/0.0ppm" 832.4563304669999 0.3348214 "b8/0.0ppm" 416.73180346699996 0.27726555 "b8^2)/0.0ppm"

Name: VDASIFKAW/2 MW: 518.776742190865 Comment: Parent=518.776742190865 Collision_energy=30.0 Mods=0 ModString=VDASIFKAW///2 Num peaks: 32 205.097154167 0.9565216 "y1/0.0ppm" 103.052215317 0.3295874 "y1^2)/0.0ppm" 100.075690467 0.42949277 "b1/0.0ppm" 50.541483467 0.3721093 "b1^2)/0.0ppm" 276.134268167 1.0 "y2/0.0ppm" 138.570772317 0.29276648 "y2^2)/0.0ppm" 215.102633467 0.35701087 "b2/0.0ppm" 108.054954967 0.20959632 "b2^2)/0.0ppm" 404.229231167 0.8946012 "y3/0.0ppm" 202.618253817 0.3724613 "y3^2)/0.0ppm" 286.139747467 0.41719005 "b3/0.0ppm" 143.573511967 0.23661742 "b3^2)/0.0ppm" 551.297645167 0.88379455 "y4/0.0ppm" 276.152460817 0.37123126 "y4^2)/0.0ppm" 373.171775467 0.41843453 "b4/0.0ppm" 187.089525967 0.2125686 "b4^2)/0.0ppm" 664.381709167 0.9027191 "y5/0.0ppm" 332.694492817 0.34471998 "y5^2)/0.0ppm" 486.255839467 0.34280714 "b5/0.0ppm" 243.631557967 0.14025317 "b5^2)/0.0ppm" 751.413737167 0.9780483 "y6/0.0ppm" 376.210506817 0.31901738 "y6^2)/0.0ppm" 633.324253467 0.3592946 "b6/0.0ppm" 317.165764967 0.31722817 "b6^2)/0.0ppm" 822.450851167 0.9981915 "y7/0.0ppm" 411.729063817 0.3706902 "y7^2)/0.0ppm" 761.419216467 0.41993114 "b7/0.0ppm" 381.213246467 0.18500432 "b7^2)/0.0ppm" 937.477794167 0.9189864 "y8/0.0ppm" 469.242535317 0.3715445 "y8^2)/0.0ppm" 832.4563304669999 0.3207003 "b8/0.0ppm" 416.73180346699996 0.14946909 "b8^2)/0.0ppm"

Name: VDASIFKAW/2 MW: 518.776742190865 Comment: Parent=518.776742190865 Collision_energy=30.0 Mods=0 ModString=VDASIFKAW///2 Num peaks: 32 205.097154167 0.79792297 "y1/0.0ppm" 103.052215317 0.23959263 "y1^2)/0.0ppm" 100.075690467 0.32064593 "b1/0.0ppm" 50.541483467 0.13546878 "b1^2)/0.0ppm" 276.134268167 0.8067769 "y2/0.0ppm" 138.570772317 0.42885855 "y2^2)/0.0ppm" 215.102633467 0.347602 "b2/0.0ppm" 108.054954967 0.16237532 "b2^2)/0.0ppm" 404.229231167 0.77003676 "y3/0.0ppm" 202.618253817 0.3076643 "y3^2)/0.0ppm" 286.139747467 0.32322848 "b3/0.0ppm" 143.573511967 0.15214443 "b3^2)/0.0ppm" 551.297645167 0.7587323 "y4/0.0ppm" 276.152460817 0.36189634 "y4^2)/0.0ppm" 373.171775467 0.36814126 "b4/0.0ppm" 187.089525967 0.2668844 "b4^2)/0.0ppm" 664.381709167 0.7691555 "y5/0.0ppm" 332.694492817 0.30301023 "y5^2)/0.0ppm" 486.255839467 0.3273088 "b5/0.0ppm" 243.631557967 0.1740765 "b5^2)/0.0ppm" 751.413737167 0.7689358 "y6/0.0ppm" 376.210506817 0.30418697 "y6^2)/0.0ppm" 633.324253467 0.3262936 "b6/0.0ppm" 317.165764967 0.13447677 "b6^2)/0.0ppm" 822.450851167 0.78016925 "y7/0.0ppm" 411.729063817 0.30794537 "y7^2)/0.0ppm" 761.419216467 0.34156856 "b7/0.0ppm" 381.213246467 0.21541049 "b7^2)/0.0ppm" 937.477794167 0.74595606 "y8/0.0ppm" 469.242535317 0.2621392 "y8^2)/0.0ppm" 832.4563304669999 0.3348214 "b8/0.0ppm" 416.73180346699996 0.27726555 "b8^2)/0.0ppm"

LLautenbacher commented 3 years ago

Hi, no, that is not expected. If you can, provide the Task IDs for your job, I can take a look.

courcelm commented 3 years ago

Hello, thanks for your quick answer. I don't see the problem on your website but with my local deployment.

I started the Prosit server with this command:

docker run --gpus all -it \ -v /mnt/projects/MC2021-09-20/prosit/prosit_non_tryptic_fragmentation/hla_hcd:/root/model_spectra/ \ -v /mnt/projects/MC2021-09-20/prosit/model_irt_prediction:/root/model_irt/ \ -e CUDA_VISIBLE_DEVICES=0 \ -p 5000:5000 \ prosit python3 -m prosit.server

I have this input file for prediction:

modified_sequence,collision_energy,precursor_charge VDASIFKAW,30,2

Then I run the prediction with this command:

curl --form peptides=@peptidelist_1.csv http://127.0.0.1:5000/predict/generic

Each time I run it, I get a different result.

courcelm commented 3 years ago

I found a previous report about this kind of issue with TF and Keras here: https://github.com/keras-team/keras/issues/12800

Here is how I fixed the issue for Prosit:

New Dockerfile:

FROM nvcr.io/nvidia/tensorflow:21.09-tf1-py3

RUN apt-get update -qq && \
    apt-get install -y \
            libhdf5-serial-dev \
    && rm -rf /var/lib/apt/lists/*

RUN pip install keras==2.2.4 h5py tables flask pyteomics lxml pandas

ENV KERAS_BACKEND=tensorflow
ENV TF_CPP_MIN_LOG_LEVEL=3
ENV LC_ALL=C.UTF-8
ENV LANG=C.UTF-8

ENV TF_DETERMINISTIC_OPS=1

ADD prosit/ /root/prosit
RUN cd /root/
WORKDIR /root/

I can now run Prosit on my NVIDIA Geforce RTX3070.