compomics / peptide-shaker

Interpretation of proteomics identification results
http://compomics.github.io/projects/peptide-shaker.html
48 stars 18 forks source link

java.lang.StringIndexOutOfBoundsException #537

Open jcanderan opened 3 months ago

jcanderan commented 3 months ago

Hello,

I posted about this issue in the #438 but wasn't able to duplicate it reliably. I've encountered it again and have been able to duplicate it consistently on different machines (even with re-running SearchGUI) with the same file.

edit: noticed I also had it opened as #485 but it was only temporarily resolved and has returned

Typically it goes away after re-trying a number of times but not this time.

(same error as below on a linux machine with 64 GB and Java 19)

I put the searchgui_out.zip here

Thanks!

Error from PeptideShaker side:


Wed Jul 17 10:47:00 EDT 2024        Selecting leading proteins, inferring peptide and protein inference status.
Wed Jul 17 10:47:01 EDT 2024        An error occurred: null
Wed Jul 17 10:47:01 EDT 2024        Please contact the developers (https://github.com/compomics/peptide-shaker/issues).

Wed Jul 17 10:47:01 EDT 2024        Importing Data Canceled!

Contents of the log file:

Wed Jul 17 10:43:35 EDT 2024: PeptideShaker version 3.0.8.
Memory given to the Java virtual machine: 4294967296.
Total amount of memory in the Java virtual machine: 134217728.
Free memory: 75491800.
Java version: 22.
1714 script command tokens
(C) 2009 Jmol Development
Jmol Version: 12.0.43  2011-05-03 14:21
java.vendor: Oracle Corporation
java.version: 22
os.name: Windows 11
memory: 57.0/134.2
processors available: 16
useCommandThread: false

java.lang.StringIndexOutOfBoundsException
    at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486)
    at java.base/java.util.concurrent.ForkJoinTask.getException(ForkJoinTask.java:557)
    at java.base/java.util.concurrent.ForkJoinTask.reportException(ForkJoinTask.java:573)
    at java.base/java.util.concurrent.ForkJoinTask.join(ForkJoinTask.java:663)
    at java.base/java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:677)
    at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateParallel(ForEachOps.java:160)
    at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateParallel(ForEachOps.java:174)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:264)
    at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:611)
    at eu.isas.peptideshaker.protein_inference.ProteinInference.inferPiStatus(ProteinInference.java:115)
    at eu.isas.peptideshaker.PeptideShaker.createProject(PeptideShaker.java:632)
    at eu.isas.peptideshaker.gui.NewDialog$20.run(NewDialog.java:748)
    at java.base/java.lang.Thread.run(Thread.java:1570)
Caused by: java.lang.StringIndexOutOfBoundsException: Index 382 out of bounds for length 382
    at java.base/jdk.internal.util.Preconditions$1.apply(Preconditions.java:55)
    at java.base/jdk.internal.util.Preconditions$1.apply(Preconditions.java:52)
    at java.base/jdk.internal.util.Preconditions$4.apply(Preconditions.java:213)
    at java.base/jdk.internal.util.Preconditions$4.apply(Preconditions.java:210)
    at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:98)
    at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:106)
    at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:302)
    at java.base/java.lang.String.checkIndex(String.java:4881)
    at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:46)
    at java.base/java.lang.String.charAt(String.java:1582)
    at com.compomics.util.experiment.identification.utils.PeptideUtils.getNEnzymaticTermini(PeptideUtils.java:639)
    at com.compomics.util.experiment.identification.utils.PeptideUtils.lambda$isEnzymatic$16(PeptideUtils.java:681)
    at java.base/java.util.stream.IntPipeline$4$1.accept(IntPipeline.java:246)
    at java.base/java.util.Spliterators$IntArraySpliterator.tryAdvance(Spliterators.java:1133)
    at java.base/java.util.stream.IntPipeline.forEachWithCancel(IntPipeline.java:163)
    at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:574)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:560)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:546)
    at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230)
    at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)
    at java.base/java.util.stream.IntPipeline.anyMatch(IntPipeline.java:537)
    at com.compomics.util.experiment.identification.utils.PeptideUtils.lambda$isEnzymatic$18(PeptideUtils.java:688)
    at java.base/java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90)
    at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1686)
    at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:144)
    at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:574)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:560)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:546)
    at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230)
    at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)
    at java.base/java.util.stream.ReferencePipeline.anyMatch(ReferencePipeline.java:647)
    at com.compomics.util.experiment.identification.utils.PeptideUtils.isEnzymatic(PeptideUtils.java:678)
    at eu.isas.peptideshaker.protein_inference.ProteinInference.lambda$compareMainProtein$4(ProteinInference.java:403)
    at java.base/java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90)
    at java.base/java.util.stream.LongPipeline$1$1.accept(LongPipeline.java:177)
    at java.base/java.util.Spliterators$LongArraySpliterator.tryAdvance(Spliterators.java:1232)
    at java.base/java.util.stream.LongPipeline.forEachWithCancel(LongPipeline.java:161)
    at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:574)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:560)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:546)
    at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230)
    at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)
    at java.base/java.util.stream.ReferencePipeline.anyMatch(ReferencePipeline.java:647)
    at eu.isas.peptideshaker.protein_inference.ProteinInference.compareMainProtein(ProteinInference.java:402)
    at eu.isas.peptideshaker.protein_inference.ProteinInference.inferPiStatus(ProteinInference.java:173)
    at eu.isas.peptideshaker.protein_inference.ProteinInference.lambda$inferPiStatus$1(ProteinInference.java:116)
    at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:212)
    at java.base/java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1715)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:556)
    at java.base/java.util.stream.ForEachOps$ForEachTask.compute(ForEachOps.java:291)
    at java.base/java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:759)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:507)
    at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1491)
    at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:2073)
    at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:2035)
    at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:187)
hbarsnes commented 3 months ago

Thanks for sharing the test data. I can confirm that the error is reproduced on my end. I will look into it after the summer holidays and see if I can come up with a fix.

hbarsnes commented 1 month ago

I've finally released a new version of PeptideShaker with a quick fix that supports slightly larger databases. You should now be able to load your data. However, the issue may reappear if using even larger databases. Hence, a proper fix ought to be implemented at some point. I will therefore keep the issue open as a reminder.