Nesvilab/FragPipe

Three errors from installing FragPipe on a fresh Windows 11 install

Closed this issue ยท 5 comments

I have a new workstation on which Windows 11 is freshly installed. When I tried to install FragPipe on it, I've encountered three problems that are preventing me from using the software.

First, DIA-NN requires VCOMP140.DLL, which comes with the Visual C++ Redistributable for Visual Studio 2015. I didn't have the redistributable installed, but the software didn't check for it. As a result, I received a weird error that FragPipe couldn't get a version number from the binary. That error vanished once I installed both 64-bit and 32-bit redistributables.

Second, I have successfully installed FragPipe for spectral library work on two computers. The new workstation, however, fails to install EasyPQP when I hit the "Install/Upgrade EasyPQP" button. FragPipe reports that EasyPQP installed successfully, but the long log text below it (it more than fills the screen and isn't scrollable) suggests otherwise. When I attempt to run "python -m pip install easypqp", I get an error when the software begins doing anything with pyprophet. If I try to install pyprophet by this route, I get a "No module named 'numpy'" though I have definitely installed that library. Does pyprophet require python / numpy to be on the path?

Third, I am using OpenJDK Runtime Environment 21.02+13-58. If I try to use the "browse" button to find DiaNN.exe, for example, I get a dialog box full of Java error messages relating to a java.lang.NullPointerException: Cannot invoke "java.awt.Image.getWidth(java.awt.image.ImageObserver)" because "retVal" is null. In the past, the only Java interpreter I could use with FragPipe successfully was OpenJDK...

Thanks, as always, for your assistance!

fcyu commented

First, DIA-NN requires VCOMP140.DLL, which comes with the Visual C++ Redistributable for Visual Studio 2015. I didn't have the redistributable installed, but the software didn't check for it. As a result, I received a weird error that FragPipe couldn't get a version number from the binary. That error vanished once I installed both 64-bit and 32-bit redistributables.

If I remember it correctly, the DIA-NN folder has a installer.

Second, I have successfully installed FragPipe for spectral library work on two computers. The new workstation, however, fails to install EasyPQP when I hit the "Install/Upgrade EasyPQP" button. FragPipe reports that EasyPQP installed successfully, but the long log text below it (it more than fills the screen and isn't scrollable) suggests otherwise. When I attempt to run "python -m pip install easypqp", I get an error when the software begins doing anything with pyprophet. If I try to install pyprophet by this route, I get a "No module named 'numpy'" though I have definitely installed that library. Does pyprophet require python / numpy to be on the path?

It requires Python 3.9 or 3.10. I am using Windows 11 and having no issue about EasyPQP.

Third, I am using OpenJDK Runtime Environment 21.02+13-58. If I try to use the "browse" button to find DiaNN.exe, for example, I get a dialog box full of Java error messages relating to a java.lang.NullPointerException: Cannot invoke "java.awt.Image.getWidth(java.awt.image.ImageObserver)" because "retVal" is null. In the past, the only Java interpreter I could use with FragPipe successfully was OpenJDK...

First, are you using the JDK not the JRE? Second, 21 is quite new, and I never tested that. Could you try 11 or 17?

Best,

Fengchao

Hi, Fengchao. I am definitely going to owe you a beverage of your choice before all is said and done!

Yes, now that you mention it, I do see VC_redist.x64.exe in the DIA-NN folder. The problem here is that the software installed without checking to see if the prerequisites were in place. The resulting error message ("missing version") didn't point me in the direction of a missing library. It was only after I tried running the tool from the command line that the missing DLL indicated the source of the error.

The version of Python installed on the machine was the most recent release, version 3.12. I installed it to the default location (my user's apps Local) as on my laptop, where EasyPQP works flawlessly. I did not specify to add Python to the path variable, though. While I've been able to get EasyPQP working with my laptop and our upstairs server, it is definitely balking me on the new workstation. I have poked and prodded it a number of ways without success. If I need to establish a particular environment variable to get PyProphet to recognize that I do, in fact, have numpy installed, I am happy to do that, but I don't know what's causing the problem with that recognition. Do you need me to downgrade to an earlier version of Python?

Yes, I have been using the JDK rather than the JRE for OpenJDK, but I am using the most recent release version rather than a development / unstable version. I do not use the Oracle Javas since they A) require registration and B) have a poor past history of working with FragPipe. Happily, I was able to downgrade to an earlier version of the JDK (19?) and now that error has stopped appearing everywhere. For users who are setting up FragPipe for the first time, they may not know that they need to steer clear of the newest OpenJDK versions. It would be useful if your code can bypass the null pointer problem.

fcyu commented

Yes, now that you mention it, I do see VC_redist.x64.exe in the DIA-NN folder. The problem here is that the software installed without checking to see if the prerequisites were in place. The resulting error message ("missing version") didn't point me in the direction of a missing library. It was only after I tried running the tool from the command line that the missing DLL indicated the source of the error.

Yes, the error message is a little informative in this case. I will adjust the code to make it the DLL checking more robust and message information.

Do you need me to downgrade to an earlier version of Python?

Yes, as far as I know, pyOpenMS, which is used by EasyPQP, requires Python 3.8, 3.9 or 3.10 (they support 3.10 recently). It is not compatible with other versions.

For users who are setting up FragPipe for the first time, they may not know that they need to steer clear of the newest OpenJDK versions.

We actually have a tutorial about setting up FragPipe: https://fragpipe.nesvilab.org/docs/tutorial_setup_fragpipe.html. And there are links to download the right version of Java, Python, and other dependencies. I might need to add Visual C++ Redistributable for Visual Studio 2015 for DIA-NN though.

It would be useful if your code can bypass the null pointer problem.

I will take a look.

Best,

Fengchao

I downgraded to Python 3.10.11, and the EasyPQP install succeeded. I've run a trial of spectral library creation via MSFragger on DIA sets, and all worked as it should.

Thank you!
Dave

fcyu commented

Third, I am using OpenJDK Runtime Environment 21.02+13-58. If I try to use the "browse" button to find DiaNN.exe, for example, I get a dialog box full of Java error messages relating to a java.lang.NullPointerException: Cannot invoke "java.awt.Image.getWidth(java.awt.image.ImageObserver)" because "retVal" is null. In the past, the only Java interpreter I could use with FragPipe successfully was OpenJDK...

I finally have some time to look closer into this exception. It turns out to be a bug in JDK 20 and 21: openjdk/jdk#12010 (comment). I guess, for now, the only solution is using the JDK version lower than 20. We currently recommend using 17.

Best,

Fengchao