rdk / p2rank

P2Rank: Protein-ligand binding site prediction tool based on machine learning. Stand-alone command line program / Java library for predicting ligand binding pockets from protein structure.
https://rdk.github.io/p2rank/
MIT License
242 stars 34 forks source link

IndexOutOfBoundsException when loading PDB file #20

Closed skodapetr closed 3 years ago

skodapetr commented 4 years ago

Running traineval I got following exception in log file:

[INFO] Protein - loading protein [/data/p2rank/ions/data/2020-01/mg/pdb/5m1k.pdb]
[INFO] PDBUtils - loading file [data/2020-01/mg/pdb/5m1k.pdb]
[ERROR] ConsoleWriter - Index 0 out of bounds for length 0
java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
        at jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64) ~[?:?]
        at jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70) ~[?:?]
        at jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248) ~[?:?]
        at java.util.Objects.checkIndex(Objects.java:372) ~[?:?]
        at java.util.ArrayList.get(ArrayList.java:458) ~[?:?]
        at org.biojava.nbio.structure.io.PDBFileParser.sourceValueSetter(PDBFileParser.java:1237) ~[biojava-structure-4.2.12.jar:4.2.12]
        at org.biojava.nbio.structure.io.PDBFileParser.pdb_SOURCE_Handler(PDBFileParser.java:1204) ~[biojava-structure-4.2.12.jar:4.2.12]
        at org.biojava.nbio.structure.io.PDBFileParser.makeCompounds(PDBFileParser.java:2818) ~[biojava-structure-4.2.12.jar:4.2.12]
        at org.biojava.nbio.structure.io.PDBFileParser.parsePDBFile(PDBFileParser.java:2764) ~[biojava-structure-4.2.12.jar:4.2.12]
        at org.biojava.nbio.structure.io.PDBFileParser.parsePDBFile(PDBFileParser.java:2635) ~[biojava-structure-4.2.12.jar:4.2.12]
        at cz.siret.prank.utils.PDBUtils.loadFromFile(PDBUtils.groovy:51) ~[p2rank.jar:?]
        at cz.siret.prank.utils.PDBUtils$loadFromFile$10.call(Unknown Source) ~[?:?]
        at cz.siret.prank.domain.Protein.loadFile(Protein.groovy:157) ~[p2rank.jar:?]
        at jdk.internal.reflect.GeneratedMethodAccessor213.invoke(Unknown Source) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
        at org.codehaus.groovy.runtime.callsite.PlainObjectMetaMethodSite.doInvoke(PlainObjectMetaMethodSite.java:43) ~[groovy-2.5.6.jar:2.5.6]
        at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:190) ~[groovy-2.5.6.jar:2.5.6]
        at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.call(PogoMetaMethodSite.java:70) ~[groovy-2.5.6.jar:2.5.6]
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:135) ~[groovy-2.5.6.jar:2.5.6]
        at cz.siret.prank.domain.Protein.load(Protein.groovy:146) ~[p2rank.jar:?]
        at cz.siret.prank.domain.Protein$load$5.call(Unknown Source) ~[?:?]
        at cz.siret.prank.domain.loaders.PredictionLoader.loadPredictionPair(PredictionLoader.groovy:34) ~[p2rank.jar:?]
        at cz.siret.prank.domain.loaders.PredictionLoader$loadPredictionPair$26.call(Unknown Source) ~[?:?]
        at cz.siret.prank.domain.Dataset$Item.loadPredictionPair(Dataset.groovy:96) ~[p2rank.jar:?]
        at cz.siret.prank.domain.Dataset$Item.getPredictionPair(Dataset.groovy:86) ~[p2rank.jar:?]
        at jdk.internal.reflect.GeneratedMethodAccessor82.invoke(Unknown Source) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
        at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:101) ~[groovy-2.5.6.jar:2.5.6]
        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) ~[groovy-2.5.6.jar:2.5.6]
        at org.codehaus.groovy.runtime.metaclass.MethodMetaProperty$GetBeanMethodMetaProperty.getProperty(MethodMetaProperty.java:76) ~[groovy-2.5.6.jar:2.5.6]
        at org.codehaus.groovy.runtime.callsite.GetEffectivePogoPropertySite.callGetProperty(GetEffectivePogoPropertySite.java:48) ~[groovy-2.5.6.jar:2.5.6]
        at cz.siret.prank.program.routines.CollectVectorsRoutine$_collectVectors_closure1.doCall(CollectVectorsRoutine.groovy:91) ~[p2rank.jar:?]
        at jdk.internal.reflect.GeneratedMethodAccessor452.invoke(Unknown Source) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
        at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:101) ~[groovy-2.5.6.jar:2.5.6]
        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) ~[groovy-2.5.6.jar:2.5.6]
        at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:263) ~[groovy-2.5.6.jar:2.5.6]
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1041) ~[groovy-2.5.6.jar:2.5.6]
 at groovy.lang.Closure.call(Closure.java:405) ~[groovy-2.5.6.jar:2.5.6]
        at groovy.lang.Closure.call(Closure.java:421) ~[groovy-2.5.6.jar:2.5.6]
        at org.codehaus.groovy.runtime.DefaultGroovyMethods.collect(DefaultGroovyMethods.java:3540) ~[groovy-2.5.6.jar:2.5.6]
        at org.codehaus.groovy.runtime.DefaultGroovyMethods.collect(DefaultGroovyMethods.java:3525) ~[groovy-2.5.6.jar:2.5.6]
        at org.codehaus.groovy.runtime.DefaultGroovyMethods.collect(DefaultGroovyMethods.java:3625) ~[groovy-2.5.6.jar:2.5.6]
        at org.codehaus.groovy.runtime.dgm$87.invoke(Unknown Source) ~[groovy-2.5.6.jar:2.5.6]
        at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:244) ~[groovy-2.5.6.jar:2.5.6]
        at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:53) ~[groovy-2.5.6.jar:2.5.6]
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) ~[groovy-2.5.6.jar:2.5.6]
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115) ~[groovy-2.5.6.jar:2.5.6]
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:127) ~[groovy-2.5.6.jar:2.5.6]
        at cz.siret.prank.program.routines.CollectVectorsRoutine.collectVectors(CollectVectorsRoutine.groovy:91) ~[p2rank.jar:?]
        at cz.siret.prank.program.routines.TrainEvalRoutine.doCollectVectors(TrainEvalRoutine.groovy:87) ~[p2rank.jar:?]
        at cz.siret.prank.program.routines.TrainEvalRoutine.collectTrainVectors(TrainEvalRoutine.groovy:68) ~[p2rank.jar:?]
        at cz.siret.prank.program.routines.TrainEvalRoutine$collectTrainVectors.call(Unknown Source) ~[?:?]
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) ~[groovy-2.5.6.jar:2.5.6]
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115) ~[groovy-2.5.6.jar:2.5.6]
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:119) ~[groovy-2.5.6.jar:2.5.6]
        at cz.siret.prank.program.routines.Experiments.doTrainEval(Experiments.groovy:108) ~[p2rank.jar:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
        at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:101) ~[groovy-2.5.6.jar:2.5.6]
        at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite$StaticMetaMethodSiteNoUnwrapNoCoerce.invoke(StaticMetaMethodSite.java:149) ~[groovy-2.5.6.jar:2.5.6]
        at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.callStatic(StaticMetaMethodSite.java:100) ~[groovy-2.5.6.jar:2.5.6]
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:55) ~[groovy-2.5.6.jar:2.5.6]
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:196) ~[groovy-2.5.6.jar:2.5.6]
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:224) ~[groovy-2.5.6.jar:2.5.6]
        at cz.siret.prank.program.routines.Experiments.traineval(Experiments.groovy:129) ~[p2rank.jar:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
        at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:101) ~[groovy-2.5.6.jar:2.5.6]
        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) ~[groovy-2.5.6.jar:2.5.6]
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1217) ~[groovy-2.5.6.jar:2.5.6]
        at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnCurrentN(ScriptBytecodeAdapter.java:94) ~[groovy-2.5.6.jar:2.5.6]
        at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnCurrent0(ScriptBytecodeAdapter.java:125) ~[groovy-2.5.6.jar:2.5.6]
        at cz.siret.prank.program.routines.Experiments.execute(Experiments.groovy:92) ~[p2rank.jar:?]
        at cz.siret.prank.program.routines.Experiments$execute$0.call(Unknown Source) ~[?:?]
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) ~[groovy-2.5.6.jar:2.5.6]
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115) ~[groovy-2.5.6.jar:2.5.6]
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:119) ~[groovy-2.5.6.jar:2.5.6]
        at cz.siret.prank.program.Main.runExperiment(Main.groovy:261) ~[p2rank.jar:?]
        at cz.siret.prank.program.Main.run(Main.groovy:324) ~[p2rank.jar:?]
        at cz.siret.prank.program.Main$run.call(Unknown Source) ~[?:?]
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) [groovy-2.5.6.jar:2.5.6]
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115) [groovy-2.5.6.jar:2.5.6]
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:119) [groovy-2.5.6.jar:2.5.6]
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:119) [groovy-2.5.6.jar:2.5.6]
        at cz.siret.prank.program.Main.main(Main.groovy:377) [p2rank.jar:?]
[INFO] ConsoleWriter - For details see log file: mg/run.log
[INFO] ConsoleWriter -
[INFO] ConsoleWriter - ----------------------------------------------------------------------------------------------
[INFO] ConsoleWriter -  finished with ERROR in 2 minutes, 57.339 seconds
[INFO] ConsoleWriter - ----------------------------------------------------------------------------------------------

The record in dataset.ds file for relevant protein is

pdb/5m1k.pdb    MG

From the exception, it is not clear what is wrong and how it can be fixed.

Tested using latest release 2.0.1.

rdk commented 4 years ago

Seems to be a bug in org.biojava:biojava-structure:4.2.12

rdk commented 4 years ago

@skodapetr does it still happen with current version from develop branch?

skodapetr commented 4 years ago

I haven't seen this for a while, but it may be that I'm running different commands. Still, I can reopen-recreate if that happens again.