compomics / meta-proteome-analyzer

MetaProteomeAnalyzer (MPA) software for analyzing and visualizing MS-based metaproteomics data.
27 stars 10 forks source link

UniProt results fetching does not work #12

Closed jamiemcg closed 6 years ago

jamiemcg commented 6 years ago

When I run the MetaProteomeAnalyzer it does not retrieve any taxonomic or functional meta-information (ontology, pathways, etc.) for any identified proteins, it only shows the list of peptides and proteins.

I have tested on Windows and Linux, using both the GUI and command line. It doesn't work even using the sample Ebendorf data from the tutorial.

Is this a known bug?

Below is the error message from a Linux terminal:


INFO 2017-10-12 12:18:32,650 [main] UniProtTask:76 Fetching 6340 UniProt entries...
2017-10-12 12:18:34,590 INFO [main] u.a.e.u.d.c.u.i.UniProtServiceImpl [UniProtServiceImpl.java:53] UniProt Service is running against: http://www.ebi.ac.uk/uniprot/services/search/uniprot
2017-10-12 12:18:37,113 ERROR [main] u.a.e.u.d.c.u.i.EntryResponseAdaptor [EntryResponseAdaptor.java:52] Unable to deserialize object from avro_binray
java.lang.ArrayIndexOutOfBoundsException: 10
    at org.apache.avro.io.parsing.Symbol$Alternative.getSymbol(Symbol.java:363) ~[avro-1.7.6.jar:1.7.6]
    at org.apache.avro.io.ResolvingDecoder.doAction(ResolvingDecoder.java:229) ~[avro-1.7.6.jar:1.7.6]
    at org.apache.avro.io.parsing.Parser.advance(Parser.java:88) ~[avro-1.7.6.jar:1.7.6]
    at org.apache.avro.io.ResolvingDecoder.readIndex(ResolvingDecoder.java:206) ~[avro-1.7.6.jar:1.7.6]
    at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:155) ~[avro-1.7.6.jar:1.7.6]
    at org.apache.avro.generic.GenericDatumReader.readField(GenericDatumReader.java:193) ~[avro-1.7.6.jar:1.7.6]
    at org.apache.avro.generic.GenericDatumReader.readRecord(GenericDatumReader.java:183) ~[avro-1.7.6.jar:1.7.6]
    at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:151) ~[avro-1.7.6.jar:1.7.6]
    at org.apache.avro.generic.GenericDatumReader.readArray(GenericDatumReader.java:219) ~[avro-1.7.6.jar:1.7.6]
    at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:153) ~[avro-1.7.6.jar:1.7.6]
    at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:155) ~[avro-1.7.6.jar:1.7.6]
    at org.apache.avro.generic.GenericDatumReader.readField(GenericDatumReader.java:193) ~[avro-1.7.6.jar:1.7.6]
    at org.apache.avro.generic.GenericDatumReader.readRecord(GenericDatumReader.java:183) ~[avro-1.7.6.jar:1.7.6]
    at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:151) ~[avro-1.7.6.jar:1.7.6]
    at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:142) ~[avro-1.7.6.jar:1.7.6]
    at uk.ac.ebi.uniprot.dataservice.serializer.impl.AvroByteArraySerializer.read(AvroByteArraySerializer.java:163) ~[japi-1.0.9.jar:na]
    at uk.ac.ebi.uniprot.dataservice.serializer.impl.AvroByteArraySerializer.fromByteArray(AvroByteArraySerializer.java:185) ~[japi-1.0.9.jar:na]
    at uk.ac.ebi.uniprot.dataservice.serializer.impl.AvroSerializer.deserialize(AvroSerializer.java:55) ~[japi-1.0.9.jar:na]
    at uk.ac.ebi.uniprot.dataservice.client.uniprot.impl.EntryResponseAdaptor.adapt(EntryResponseAdaptor.java:48) [japi-1.0.9.jar:na]
    at uk.ac.ebi.uniprot.dataservice.client.uniprot.impl.EntryResponseAdaptor.adapt(EntryResponseAdaptor.java:18) [japi-1.0.9.jar:na]
    at uk.ac.ebi.uniprot.dataservice.client.impl.DefaultQueryResultPageImpl.getResult(DefaultQueryResultPageImpl.java:70) [japi-1.0.9.jar:na]
    at uk.ac.ebi.uniprot.dataservice.client.impl.DefaultQueryResultImpl.getNext(DefaultQueryResultImpl.java:84) [japi-1.0.9.jar:na]
    at uk.ac.ebi.uniprot.dataservice.client.impl.DefaultQueryResultImpl.next(DefaultQueryResultImpl.java:105) [japi-1.0.9.jar:na]
    at de.mpa.analysis.UniProtUtilities.queryUniProtEntriesByIdentifiers(UniProtUtilities.java:255) [mpa-portable-1.7.0.jar:na]
    at de.mpa.analysis.UniProtUtilities.retrieveProteinData(UniProtUtilities.java:224) [mpa-portable-1.7.0.jar:na]
    at de.mpa.task.instances.UniProtTask.queryAndStoreUniprotEntries(UniProtTask.java:78) [mpa-portable-1.7.0.jar:na]
    at de.mpa.task.instances.UniProtTask.run(UniProtTask.java:43) [mpa-portable-1.7.0.jar:na]
    at de.mpa.task.TaskManager.run(TaskManager.java:66) [mpa-portable-1.7.0.jar:na]
    at de.mpa.client.Client.runSearches(Client.java:138) [mpa-portable-1.7.0.jar:na]
    at de.mpa.cli.CmdLineInterface.call(CmdLineInterface.java:241) [mpa-portable-1.7.0.jar:na]
    at de.mpa.cli.CmdLineInterface.<init>(CmdLineInterface.java:78) [mpa-portable-1.7.0.jar:na]
    at de.mpa.cli.CmdLineInterface.main(CmdLineInterface.java:325) [mpa-portable-1.7.0.jar:na]
java.lang.NullPointerException
    at de.mpa.analysis.UniProtUtilities.queryUniProtEntriesByIdentifiers(UniProtUtilities.java:257)
    at de.mpa.analysis.UniProtUtilities.retrieveProteinData(UniProtUtilities.java:224)
    at de.mpa.task.instances.UniProtTask.queryAndStoreUniprotEntries(UniProtTask.java:78)
    at de.mpa.task.instances.UniProtTask.run(UniProtTask.java:43)
    at de.mpa.task.TaskManager.run(TaskManager.java:66)
    at de.mpa.client.Client.runSearches(Client.java:138)
    at de.mpa.cli.CmdLineInterface.call(CmdLineInterface.java:241)
    at de.mpa.cli.CmdLineInterface.<init>(CmdLineInterface.java:78)
    at de.mpa.cli.CmdLineInterface.main(CmdLineInterface.java:325)
jamiemcg commented 6 years ago

This is probably caused by UniProt JAPI updates, in October there was a switch from HTTP to HTTPS. See JAPI change log.

Replacing japi-1.0.9.jar with the latest version japi-1.0.16.jar fixes this and allows MetaProteomeAnalyzer to retrieve UniProt entries as expected.

thilus commented 6 years ago

Thank you for reporting this issue! Yes, you are right and the latest version of MPA Portable (ver. 1.8.0) now features the latest UniProtJAPI version 1.0.16. A couple of tests were run and the nullpointer exception does not seem to come up again.