Details
-
Type: Task
-
Status: Closed (View Workflow)
-
Priority: Major
-
Resolution: Done
-
Affects Version/s: None
-
Fix Version/s: None
-
Labels:None
-
Story Points:2
-
Epic Link:
-
Sprint:Summer 5 2023 July 10
Description
I attempted to run a search of InterPro using ProtAnnot but the search did not execute properly. (See attached image for a view of ProtAnnot.)
It looks like maybe the InterProScan Web service API has changed and ProtAnnot needs to be updated.
Note:
To understand how to run a search of InterPro using ProtAnnot, watch the video linked from the top page of https://apps.bioviz.org. The first part of the video explains how to install an IGB App using the App Store. You can skip the first part, since you probably should work with the development (current master branch) version of ProtAnnot available from the Downloads section of a ProtAnnot bitbucket repository. To just see how to run a search with ProtAnnot, you can skip ahead to 1:43 minutes into the video.
The error, copied from IGB "log" tab:
01:20:10.863 INFO com.affymetrix.igb.IGB - Completed loading sequence for Chr1 : 7,284,963 - 7,290,069 from IGB Quickload http://lorainelab-quickload.scidas.org/quickload/
01:21:04.688 INFO o.l.i.p.i.InterProscanServiceRest - iprscan5-R20230710-072102-0693-74435734-p1m
01:21:05.129 ERROR o.l.i.p.i.InterProscanServiceRest - No enum constant org.lorainelab.igb.protannot.interproscan.api.InterProscanService.Status.QUEUED
java.lang.IllegalArgumentException: No enum constant org.lorainelab.igb.protannot.interproscan.api.InterProscanService.Status.QUEUED
at java.lang.Enum.valueOf(Enum.java:238) ~[na:1.8.0_332]
at org.lorainelab.igb.protannot.interproscan.api.InterProscanService$Status.valueOf(InterProscanService.java:29) ~[-1688969961404:na]
at org.lorainelab.igb.protannot.interproscan.InterProscanServiceRest.status(InterProscanServiceRest.java:106) ~[-1688969961404:na]
at org.lorainelab.igb.protannot.ProtAnnotService$5.run(ProtAnnotService.java:692) [-1688969961404:na]
at java.util.TimerThread.mainLoop(Timer.java:555) [na:1.8.0_332]
at java.util.TimerThread.run(Timer.java:505) [na:1.8.0_332]
01:21:05.130 INFO o.l.igb.protannot.ProtAnnotService - iprscan5-R20230710-072102-0693-74435734-p1m Error
For this task, determine if this error re-occurs in other searches.
For your reference, one gene model searched. The gene model was "AT1G20920.7" from the "Araport" track of Arabidopsis genome version A_thaliana_Jun_2009.
I discovered the error during final testing of IGBF-3202.
Attachments
- Dscam1.png
- 205 kB
Issue Links
Activity
Arabidopsis Chr1:9,083,607-9,086,202
Selected all models of AT1G26255 from Araport track
In ProtAnnot, selected SignapP, Pfam, TMHMM
- 9.1.0 - everything works, no errors
- 9.1.4 - everything works, no errors
- 9.1.10 - everything works, no errors
Arabidopsis Chr1:9,086,675-9,089,504
Selected all models of AT1G26260 from Araport track
In ProtAnnot, selected SignapP, Pfam, TMHMM
- 9.1.10 - everything works, no errors
Arabidopsis Chr1:8,775,791-8,778,181
Selected all models of AT1G24880 from Araport track
In ProtAnnot, selected SignapP, Pfam, TMHMM
- 9.1.4 - everything works, no errors the first time, start/stop IGB both gene models result in no enum error
- 9.1.10 - AT1G24880.3 - no enum error, AT1G24880.2 - finished, no errors
Stopping and starting 9.1.10 leads to AT1G24880.2 resulting in an error and AT1G24880.3 finishing
Stopping and starting again in 9.1.10 leads to AT1G24880.2 resulting in an error and AT1G24880.3 resulting in an error
Error from IGB 9.1.4
11:39:13.476 INFO o.l.i.p.i.InterProscanServiceRest - iprscan5-R20230713-163911-0371-65719292-p1m 11:39:15.871 INFO o.l.i.p.i.InterProscanServiceRest - iprscan5-R20230713-163913-0834-3742237-p1m 11:39:16.552 ERROR o.l.i.p.i.InterProscanServiceRest - No enum constant org.lorainelab.igb.protannot.interproscan.api.InterProscanService.Status.QUEUED java.lang.IllegalArgumentException: No enum constant org.lorainelab.igb.protannot.interproscan.api.InterProscanService.Status.QUEUED at java.lang.Enum.valueOf(Enum.java:238) ~[na:1.8.0_212] at org.lorainelab.igb.protannot.interproscan.api.InterProscanService$Status.valueOf(InterProscanService.java:29) ~[-1689262667335:na] at org.lorainelab.igb.protannot.interproscan.InterProscanServiceRest.status(InterProscanServiceRest.java:106) ~[-1689262667335:na] at org.lorainelab.igb.protannot.ProtAnnotService$5.run(ProtAnnotService.java:692) [-1689262667335:na] at java.util.TimerThread.mainLoop(Timer.java:555) [na:1.8.0_212] at java.util.TimerThread.run(Timer.java:505) [na:1.8.0_212] 11:39:16.553 INFO o.l.igb.protannot.ProtAnnotService - iprscan5-R20230713-163911-0371-65719292-p1m Error 11:39:17.298 ERROR o.l.i.p.i.InterProscanServiceRest - No enum constant org.lorainelab.igb.protannot.interproscan.api.InterProscanService.Status.QUEUED java.lang.IllegalArgumentException: No enum constant org.lorainelab.igb.protannot.interproscan.api.InterProscanService.Status.QUEUED at java.lang.Enum.valueOf(Enum.java:238) ~[na:1.8.0_212] at org.lorainelab.igb.protannot.interproscan.api.InterProscanService$Status.valueOf(InterProscanService.java:29) ~[-1689262667335:na] at org.lorainelab.igb.protannot.interproscan.InterProscanServiceRest.status(InterProscanServiceRest.java:106) ~[-1689262667335:na] at org.lorainelab.igb.protannot.ProtAnnotService$5.run(ProtAnnotService.java:692) [-1689262667335:na] at java.util.TimerThread.mainLoop(Timer.java:555) [na:1.8.0_212] at java.util.TimerThread.run(Timer.java:505) [na:1.8.0_212] 11:39:17.298 INFO o.l.igb.protannot.ProtAnnotService - iprscan5-R20230713-163913-0834-3742237-p1m Error
As per discussion during our meeting today, here are instructions on finding a gene with lots and lots of gene models for stress-testing ProtAnnot, and hopefully observing searches in the "queued" state.
- Open the Drosphila melanogster August 2014 genome assembly and gene model annotations by clicking the fruit fly picture on the IGB home screen (to the right of the mouse image)
- In the top left search box, enter "Dscam1" to zoom IGB to the gene titled "Down syndrome cell adhesion molecule 1;FBgn0033159;FBtr0306782"
- Note that a new gene region appears with lots of gene models.
- Click-drag over the gene models to select them. (Be careful not to select anything from the opposite strand, e.g., above the "Coordinates" track)
- Launch ProtAnnot
You should then see ProtAnnot loaded up with lots of genes models - around 75. Please see attached image.
with regards to No enum constant (QUEUED) error , the code is not able to process queued jobs. adding new ENUM, QUEUED, would fix the issue. However, minor changes in code also required in order to handle queued jobs(since our code is not able to handle this now).
after going through official documentation of InterProScan, seems like they have updated clients to use QUEUED instead of PENDING. Here is the link that I referred:InterProScan
GitHub link of their source code: github
Types of status we can expect from service:
FINISHED, ERROR, QUEUED, RUNNING, NOT_FOUND or FAILURE
Except QUEUED, our code can process all types of status.
I refactored the code so that it looks more cleaner and readable. Moreover, the code is now able to handle different types of status and you can also see the the frequency of different status in STATUS BAR( bottom left of the screen).
here is the link that need to be tested.
Things that need to be tested:
- code should handle all types of status(FINISHED, ERROR, QUEUED, RUNNING, NOT_FOUND or FAILURE) without generating any error.
- on the bottom left of the window, you can see frequency of different status that are updated while running the jobs.
- with this changes, the output is more specific rather than generic.
Note:
IGB version should be 9.1.10 in order to test this functionality.
I have missed committing one more fille, which has ENUM QUEUEUD, to the the repo. use this updated repository for testing.
Did functional review via the following steps:
- Installed "early access" IGB (main-JDK8 branch, commit hash 51e5ebab25a8dc7db92e89cdea9c48d574933daf)
- Selected File > Preferences > App Repositories and added repository URL https://bitbucket.org/kaushik-gopu/kgopu_proant/downloads/ and named it "KGopu ProtAnnot"
- Selected Tools > Open App Manager
- Observed that the test ProtAnnot app was listed as an available App with version 9.1.4 in Repository ""KGopu ProtAnnot" consistent with previous testing step
- Installed the ProtAnnot app 9.1.4
- In IGB, opened fruit fly genome version "D_melanogaster_Aug_2014" by clicking on the fruit fly image on the home screen
- Used IGB search features to navigate to Dscam1, which has many gene models
- Selected 77 gene models, noticed there was long pause, checked the Log
- Observed the following error:
10:54:24.475 INFO com.affymetrix.igb.Activator - IGB Started 10:54:24.515 INFO o.l.i.q.QuickloadDataProvider - Initializing Quickload Server http://lorainelab-quickload.scidas.org/bar/ 10:54:24.519 [main] INFO com.affymetrix.main.OSGiHandler - Starting Bundle: org.tukaani.xz 10:54:24.520 [main] INFO com.affymetrix.main.OSGiHandler - OSGi is started with org.apache.felix.framework version 6.0.3 10:54:24.732 WARN o.l.i.quickload.util.QuickloadUtils - Optional quickload synonyms.txt file could not be loaded from http://lorainelab-quickload.scidas.org/bar/synonyms.txt 10:54:24.819 WARN o.l.i.quickload.util.QuickloadUtils - Optional species.txt could not be loaded from: http://lorainelab-quickload.scidas.org/bar/species.txt 10:54:24.821 INFO o.l.i.q.QuickloadDataProvider - Initializing Quickload Server http://lorainelab-quickload.scidas.org/chipseq/ 10:54:25.040 WARN o.l.i.quickload.util.QuickloadUtils - Optional quickload synonyms.txt file could not be loaded from http://lorainelab-quickload.scidas.org/chipseq/synonyms.txt 10:54:25.132 WARN o.l.i.quickload.util.QuickloadUtils - Optional species.txt could not be loaded from: http://lorainelab-quickload.scidas.org/chipseq/species.txt 10:54:25.133 INFO o.l.i.q.QuickloadDataProvider - Initializing Quickload Server https://bioviz.org/quickload/genome-in-a-bottle/ 10:54:25.539 WARN o.l.i.quickload.util.QuickloadUtils - Optional quickload synonyms.txt file could not be loaded from https://bioviz.org/quickload/genome-in-a-bottle/synonyms.txt 10:54:25.671 WARN o.l.i.quickload.util.QuickloadUtils - Optional species.txt could not be loaded from: https://bioviz.org/quickload/genome-in-a-bottle/species.txt 10:54:25.723 INFO o.l.i.appstore.IgbAppServerLauncher - Started REST endpoint. 10:55:11.662 INFO c.a.igb.util.IGBTrustManager - Trusted Certificates:CN=bitbucket.org,O=Atlassian US\, Inc.,L=San Francisco,ST=California,C=US,2.5.4.5=#130733393238343439,2.5.4.15=#0c1450726976617465204f7267616e697a6174696f6e,1.3.6.1.4.1.311.60.2.1.2=#130844656c6177617265,1.3.6.1.4.1.311.60.2.1.3=#13025553; CN=DigiCert SHA2 Extended Validation Server CA,OU=www.digicert.com,O=DigiCert Inc,C=US 10:55:12.283 INFO c.a.igb.util.IGBTrustManager - Trusted Certificates:CN=*.s3.amazonaws.com; CN=Amazon RSA 2048 M01,O=Amazon,C=US; CN=Amazon Root CA 1,O=Amazon,C=US; CN=Starfield Services Root Certificate Authority - G2,O=Starfield Technologies\, Inc.,L=Scottsdale,ST=Arizona,C=US Jul 18, 2023 10:55:26 AM com.sun.webkit.network.PublicSuffixes lambda$static$1 WARNING: Resource not found: lib/security/public_suffix_list.dat 10:55:27.045 INFO c.a.igb.util.IGBTrustManager - Trusted Certificates:CN=bitbucket.org,O=Atlassian US\, Inc.,L=San Francisco,ST=California,C=US,2.5.4.5=#130733393238343439,2.5.4.15=#0c1450726976617465204f7267616e697a6174696f6e,1.3.6.1.4.1.311.60.2.1.2=#130844656c6177617265,1.3.6.1.4.1.311.60.2.1.3=#13025553; CN=DigiCert SHA2 Extended Validation Server CA,OU=www.digicert.com,O=DigiCert Inc,C=US 10:55:27.714 INFO c.a.igb.util.IGBTrustManager - Trusted Certificates:CN=*.s3.amazonaws.com; CN=Amazon RSA 2048 M01,O=Amazon,C=US; CN=Amazon Root CA 1,O=Amazon,C=US; CN=Starfield Services Root Certificate Authority - G2,O=Starfield Technologies\, Inc.,L=Scottsdale,ST=Arizona,C=US ERROR: [ProtAnnotEventService(115)] Error during instantiation of the implementation object java.lang.NoClassDefFoundError: com/google/common/eventbus/EventBus at org.lorainelab.igb.protannot.ProtAnnotEventService.<clinit>(ProtAnnotEventService.java:20) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at java.lang.Class.newInstance(Class.java:442) at org.apache.felix.scr.impl.manager.SingleComponentManager.createImplementationObject(SingleComponentManager.java:237) at org.apache.felix.scr.impl.manager.SingleComponentManager.createComponent(SingleComponentManager.java:109) at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:907) at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:880) at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:755) at org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:675) at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:430) at org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:657) at org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:341) at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:387) at org.apache.felix.scr.impl.Activator.access$200(Activator.java:52) at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:262) at org.apache.felix.scr.impl.AbstractExtender.createExtension(AbstractExtender.java:196) at org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:169) at org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:49) at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:488) at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:420) at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:232) at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:450) at org.apache.felix.framework.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:915) at org.apache.felix.framework.EventDispatcher.fireEventImmediately(EventDispatcher.java:834) at org.apache.felix.framework.EventDispatcher.fireBundleEvent(EventDispatcher.java:516) at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4817) at org.apache.felix.framework.Felix.startBundle(Felix.java:2336) at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:998) at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:984) at org.apache.felix.bundlerepository.impl.ResolverImpl.deploy(ResolverImpl.java:600) at org.lorainelab.igb.plugin.manager.BundleActionManager.installBundle(BundleActionManager.java:169) at org.lorainelab.igb.plugin.manager.BundleActionManager.access$100(BundleActionManager.java:43) at org.lorainelab.igb.plugin.manager.BundleActionManager$1.get(BundleActionManager.java:145) at org.lorainelab.igb.plugin.manager.BundleActionManager$1.get(BundleActionManager.java:138) at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1604) at java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1596) at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:175) Caused by: java.lang.ClassNotFoundException: com.google.common.eventbus.EventBus not found by org.lorainelab.igb.protannot [95] at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1597) at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79) at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1982) at java.lang.ClassLoader.loadClass(ClassLoader.java:352) ... 43 more 10:55:28.069 INFO o.l.i.p.manager.BundleActionManager - Installed app: org.lorainelab.igb.protannot,9.1.4 10:55:28.070 INFO com.affymetrix.igb.IGB - bundle org.lorainelab.igb.protannot;9.1.4 installed 10:55:48.388 INFO c.a.igb.view.load.GeneralLoadUtils - Loaded RefSeq Curated in 830.9 ms 10:55:49.434 INFO c.a.igb.view.load.GeneralLoadUtils - Loaded RefGene in 1.002 s 11:09:25.219 INFO com.affymetrix.igb.IGB - Search for \QDscam1\E on genome: Searching locally... 11:09:25.254 INFO com.affymetrix.igb.IGB - Found 75 matches for local search Jul 18, 2023 11:10:00 AM com.affymetrix.igb.property.PropertyView symSelectionChanged INFO: Skipping collecting properties; too many syms selected Jul 18, 2023 11:10:17 AM com.affymetrix.igb.property.PropertyView symSelectionChanged INFO: Skipping collecting properties; too many syms selected Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: com/google/common/eventbus/EventBus at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) at java.lang.Class.getDeclaredMethods(Class.java:1975) at org.apache.felix.scr.impl.inject.BindMethod.getServiceObjectAssignableMethod(BindMethod.java:459) at org.apache.felix.scr.impl.inject.BindMethod.doFindMethod(BindMethod.java:188) at org.apache.felix.scr.impl.inject.BaseMethod.findMethod(BaseMethod.java:175) at org.apache.felix.scr.impl.inject.BaseMethod.access$400(BaseMethod.java:39) at org.apache.felix.scr.impl.inject.BaseMethod$NotResolved.resolve(BaseMethod.java:593) at org.apache.felix.scr.impl.inject.BaseMethod$NotResolved.methodExists(BaseMethod.java:615) at org.apache.felix.scr.impl.inject.BaseMethod.methodExists(BaseMethod.java:520) at org.apache.felix.scr.impl.inject.BindMethod.getServiceObject(BindMethod.java:648) at org.apache.felix.scr.impl.manager.DependencyManager.getServiceObject(DependencyManager.java:2206) at org.apache.felix.scr.impl.manager.DependencyManager$SingleStaticCustomizer.prebind(DependencyManager.java:1118) at org.apache.felix.scr.impl.manager.DependencyManager.prebind(DependencyManager.java:1520) at org.apache.felix.scr.impl.manager.AbstractComponentManager.collectDependencies(AbstractComponentManager.java:1022) at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:860) at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:755) at org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:675) at org.apache.felix.scr.impl.manager.ComponentFactoryImpl.newInstance(ComponentFactoryImpl.java:128) at org.lorainelab.igb.protannot.menu.ProtAnnotMenuProvider.lambda$getMenuItems$0(ProtAnnotMenuProvider.java:43) at org.lorainelab.igb.menu.api.util.MenuUtils$1.actionPerformed(MenuUtils.java:26) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.AbstractButton.doClick(AbstractButton.java:376) at com.apple.laf.ScreenMenuItem.actionPerformed(ScreenMenuItem.java:125) at java.awt.MenuItem.processActionEvent(MenuItem.java:669) at java.awt.MenuItem.processEvent(MenuItem.java:628) at java.awt.MenuComponent.dispatchEventImpl(MenuComponent.java:357) at java.awt.MenuComponent.dispatchEvent(MenuComponent.java:345) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:763) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84) at java.awt.EventQueue$4.run(EventQueue.java:733) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at java.awt.EventQueue.dispatchEvent(EventQueue.java:730) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) Caused by: java.lang.ClassNotFoundException: com.google.common.eventbus.EventBus not found by org.lorainelab.igb.protannot [95] at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1597) at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79) at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1982) at java.lang.ClassLoader.loadClass(ClassLoader.java:352) ... 49 more
Tried again to launch ProtAnnot, this time selecting many fewer gene models, in case the number of gene models was causing this error. Observed the same problem as in the above log:
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: com/google/common/eventbus/EventBus at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) at java.lang.Class.getDeclaredMethods(Class.java:1975) at org.apache.felix.scr.impl.inject.BindMethod.getServiceObjectAssignableMethod(BindMethod.java:459) at org.apache.felix.scr.impl.inject.BindMethod.doFindMethod(BindMethod.java:188) at org.apache.felix.scr.impl.inject.BaseMethod.findMethod(BaseMethod.java:175) at org.apache.felix.scr.impl.inject.BaseMethod.access$400(BaseMethod.java:39) at org.apache.felix.scr.impl.inject.BaseMethod$NotResolved.resolve(BaseMethod.java:593) at org.apache.felix.scr.impl.inject.BaseMethod$NotResolved.methodExists(BaseMethod.java:615) at org.apache.felix.scr.impl.inject.BaseMethod.methodExists(BaseMethod.java:520) at org.apache.felix.scr.impl.inject.BindMethod.getServiceObject(BindMethod.java:648) at org.apache.felix.scr.impl.manager.DependencyManager.getServiceObject(DependencyManager.java:2206) at org.apache.felix.scr.impl.manager.DependencyManager$SingleStaticCustomizer.prebind(DependencyManager.java:1118) at org.apache.felix.scr.impl.manager.DependencyManager.prebind(DependencyManager.java:1520) at org.apache.felix.scr.impl.manager.AbstractComponentManager.collectDependencies(AbstractComponentManager.java:1022) at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:860) at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:755) at org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:675) at org.apache.felix.scr.impl.manager.ComponentFactoryImpl.newInstance(ComponentFactoryImpl.java:128) at org.lorainelab.igb.protannot.menu.ProtAnnotMenuProvider.lambda$getMenuItems$0(ProtAnnotMenuProvider.java:43) at org.lorainelab.igb.menu.api.util.MenuUtils$1.actionPerformed(MenuUtils.java:26) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.AbstractButton.doClick(AbstractButton.java:376) at com.apple.laf.ScreenMenuItem.actionPerformed(ScreenMenuItem.java:125) at java.awt.MenuItem.processActionEvent(MenuItem.java:669) at java.awt.MenuItem.processEvent(MenuItem.java:628) at java.awt.MenuComponent.dispatchEventImpl(MenuComponent.java:357) at java.awt.MenuComponent.dispatchEvent(MenuComponent.java:345) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:763) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84) at java.awt.EventQueue$4.run(EventQueue.java:733) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at java.awt.EventQueue.dispatchEvent(EventQueue.java:730) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) Caused by: java.lang.ClassNotFoundException: com.google.common.eventbus.EventBus not found by org.lorainelab.igb.protannot [95] at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1597) at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79) at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1982) at java.lang.ClassLoader.loadClass(ClassLoader.java:352) ... 49 more
The above error appears to be a problem with a package not being available to ProtAnnot. This looks like it could be an issue with the IGB platform itself not offering a version of a third-party library which ProtAnnot requires. To check this, I attempted to install and run the IGB App using the following version of IGB:
The current Branch Name : master
The build date/time : 07-12-2023 16:20:32
The latest commit id : 471ea30bcf1f4d9e309809c12578b7ae55ee5abf
(Above text is copied from IGB's "About" page, accessed via Help > About IGB.)
I repeated the above steps:
- Added repository URL https://bitbucket.org/kaushik-gopu/kgopu_proant/downloads/ and named it "KGopu ProtAnnot"
- Opened the fruit fly genome as before, selected Dscam1 gene models, and selected Tools > Start ProtAnnot as before
- Observed the same error as above; ProtAnnot would not start
Oops...I just now realized that Kaushik Gopu has advised that this needs to be run with IGB 9.1.10. However, both versions of IGB that I tested are 9.1.12, not 9.1.10. Sorry!
I am leaving the previous two comments in the ticket for our future reference, as they show what happens when we try to run this new version of ProtAnnot with the wrong version of IGB
Testing with IGB version 9.1.10, from the "About IGB page":
The current Branch Name : release-9.1.10
The build date/time : 06-01-2023 18:21:11
The latest commit id : 11ea47c0a5ae16412e4390b4204429802c51daf8
Same error occurred: "Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: com/google/common/eventbus/EventBus"
Trying now to run an earlier version of ProtAnnot. To do this, I reset all of IGB's preferences to defaults by selecting File > Preferences > Other Options > Reset Preferences to Defaults, which will remove KG's app repository from IGB. I then:
- restarted IGB version 9.1.10 (the released version from the BioViz Web site)
- installed protannot version 9.1.3 (the released version of ProtAnnot)
- navigated to the Dscam1 gene as before (after opening fruit fly genome assembly as before)
- selected Dscam1 gene models
- selected Tools > Start ProtAnnot
- observed that the ProtAnnot opened, showing all the selected gene models
My thoughts on the error: Is this missing class in a package from a library that could be packaged with ProtAnnot itself? I feel like even though packaging a third party library with ProtAnnot would increase the size of the bundle, this would make it easier to maintain ProtAnnot. Having ProtAnnot rely on its own classpath to provide required packages would make the App easier to maintain in the long run, because then IGB could change freely without breaking ProtAnnot functionality. However, if this package is being used to enable communication between IGB and ProtAnnot, it may not be possible to do this.
The error does not persist in 9.1.10 since it has older guava version. The 9.1.12 has new guava version which is causing this error. currently, I'm working on this issue on branch 3349.
Testing on Mac with IGB 9.1.10
Fetched Kaushik's IGBF-3381 branch, built locally and added as a repo.
Tested multiple genes including Dscam1.
ProtAnnot worked correctly, no errors in log, all gene models finished except those that reported Invalid Protein Sequence (unrelated to this ticket).
I believe the EventBus error that Dr. Loraine was seeing was due to a change from IGBF-3349 being accidentally merged/included in the downloads folder.
Kaushik Gopu - you will need to rebase IGBF-3381 on top of master before submitting a pull request.
Pull request submitted: https://bitbucket.org/lorainelab/protannot/pull-requests/15.
Merged PR.
To test:
- Download IGB 9.1.10 - the released version of IGB - and install it onto your computer
- When IGB 9.1.10 starts, choose "File > Preferences > Other Options > Research Preferences to Defaults" to ensure you are working with a "fresh" installation of IGB, thus simulating what a naïve user would experience
- Restart IGB 9.1.10
- Choose Tools > Open App Manager
- Observe that version 9.1.3 is the currently available version of ProtAnnot
- Visit the IGB App Store (https://apps.bioviz.org) and open the page for ProtAnnot
- Observe that the version available for installation is version 9.1.3 of ProtAnnot
- Use either the App Manager interface or the App Store page to install version 9.1.3 of ProtAnnot
- In IGB, choose Tools > Open App Manager > Manage Repositories
- Add new repository "https://bitbucket.org/lorainelab/protannot/downloads/"
- Quit IGB and then start IGB again.
- Choose Tools > Open App Manager
- Observe that the App Manager interface shows an option to update ProtAnnot to version 9.1.4
- In IGB, visit the latest fruit fly genome and follow the instructions above to select Dscam1 gene models
- Start ProtAnnot with Dscam1 gene models (as many as you can!)
- Observe that ProtAnnots opens with Dscam1 gene models displayed in the IGB interface
- Choose "run interproscan" button
- Observe that every job runs and finishes, and ProtAnnot updates to show protein sequence motif "hits" (in green) beneath every gene model
Following the above testing gene models loaded in ProtAnnot and results were successful.
Closing ticket
Tested on IGB 9.1.10 release on Mac
Ran ProtAnnot and saw the error mentioned in the description as well as the following error.
Note: I ran ProtAnnot on two gene models, one Finished and one had a status of Error.
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at org.lorainelab.igb.protannot.model.InterProScanTableModel$InterProScanTableData.access$100(InterProScanTableModel.java:113) at org.lorainelab.igb.protannot.model.InterProScanTableModel.getValueAt(InterProScanTableModel.java:90) at javax.swing.JTable.getValueAt(JTable.java:2720) at com.jidesoft.grid.JideTable.getValueAt(Unknown Source) at com.jidesoft.grid.JideTable.prepareRenderer(Unknown Source) at com.affymetrix.igb.swing.jide.StyledJTable.prepareRenderer(StyledJTable.java:137) at com.jidesoft.plaf.basic.BasicJideTableUIDelegate.paintCell(Unknown Source) at com.jidesoft.plaf.basic.BasicJideTableUIDelegate.a(Unknown Source) at com.jidesoft.plaf.basic.BasicJideTableUIDelegate.paint(Unknown Source) at com.jidesoft.plaf.aqua.AquaJideTableUI.paint(Unknown Source) at javax.swing.plaf.ComponentUI.update(ComponentUI.java:161) at javax.swing.JComponent.paintComponent(JComponent.java:780) at javax.swing.JComponent.paint(JComponent.java:1056) at javax.swing.JComponent.paintToOffscreen(JComponent.java:5210) at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579) at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502) at javax.swing.RepaintManager.paint(RepaintManager.java:1272) at javax.swing.JComponent._paintImmediately(JComponent.java:5158) at javax.swing.JComponent.paintImmediately(JComponent.java:4969) at javax.swing.RepaintManager$4.run(RepaintManager.java:831) at javax.swing.RepaintManager$4.run(RepaintManager.java:814) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814) at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789) at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738) at javax.swing.RepaintManager.access$1200(RepaintManager.java:64) at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)