Uploaded image for project: 'IGB'
  1. IGB
  2. IGBF-3807

Create link outs for UCSC REST data sets / files

    Details

    • Type: Task
    • Status: Closed (View Workflow)
    • Priority: Major
    • Resolution: Done
    • Affects Version/s: None
    • Fix Version/s: 10.1.0
    • Labels:
      None

      Description

      There is a way to link to UCSC track descriptions using this link pattern:

      Where "g" is a string identifying a track.

      You can also add a "db" parameter to specify the genome version of interest. With this new parameter, the URL pattern is:

      For example:

      opens a page at the UCSC genome browser with a page describing track "dbSnp155Composite" in the context of the hg18 genome version.

      This page is even an entry-point for the UCSC genome browser interface. The page has a "submit" button. When you click this "submit" button, a new page opens showing a genomic scene for the requested genome version, with the track shown, as well. It's hard to interpret this page if you are not already familiar with the browser, but it provides an entrée for a user to start comparing how the track data look in its native UCSC Genome Browser context with how it looks in IGB.

      It would be fantastic if we could provide link-outs going from the IGB UCSC REST data sets shown in IGB's Data Access panel.

      Doing this shouldn't be too difficult, and the goal of this task is to determine if it is feasible. If yes, we can include implementation in this ticket as well, as the developer sees fit.

      The code would construct the "link out" URLs using this pattern:

      or, even better:

      Let's call this "option 1" also known as (aka) "direct link into UCSC Web site."

        Attachments

          Issue Links

            Activity

            Hide
            nfreese Nowlan Freese added a comment - - edited

            Also:

            Idea for UCSC Web Links: Make link out to google search on the UCSC domain - can put site:https://genome.ucsc.edu/ in the search so that only results from UCSC are returned

            example)

            https://www.google.com/search?q=site%3Ahttps%3A%2F%2Fgenome.ucsc.edu+phastConsElements100way

            Nowlan Freese: suggests we could use the above pattern for a Web Links option.

            Show
            nfreese Nowlan Freese added a comment - - edited Also: Idea for UCSC Web Links: Make link out to google search on the UCSC domain - can put site: https://genome.ucsc.edu/ in the search so that only results from UCSC are returned example) https://www.google.com/search?q=site%3Ahttps%3A%2F%2Fgenome.ucsc.edu+phastConsElements100way Nowlan Freese : suggests we could use the above pattern for a Web Links option.
            Hide
            nfreese Nowlan Freese added a comment -

            Example for external link from the hg18 human genome and the track set to refGene: https://genome.ucsc.edu/cgi-bin/hgTrackUi?db=hg18&g=refGene

            Show
            nfreese Nowlan Freese added a comment - Example for external link from the hg18 human genome and the track set to refGene: https://genome.ucsc.edu/cgi-bin/hgTrackUi?db=hg18&g=refGene
            Hide
            ann.loraine Ann Loraine added a comment - - edited

            Consensus:

            We would like:

            • "option 1" also known as "direct link into UCSC Web site."

            We need some kind of system to let us know the instant UCSC changes their URL format!

            Nowlan Freese and Jaya Sravani Sirigineedi like the idea of adding tests to the build process to alert us to changes.

            Show
            ann.loraine Ann Loraine added a comment - - edited Consensus: We would like: "option 1" also known as "direct link into UCSC Web site." We need some kind of system to let us know the instant UCSC changes their URL format! Nowlan Freese and Jaya Sravani Sirigineedi like the idea of adding tests to the build process to alert us to changes.
            Hide
            jsirigin Jaya Sravani Sirigineedi added a comment - - edited

            Developed code to create linkouts for UCSC REST tracks, the code works if I keep the base domain URL as a string in the code but when I introduce a properties file and try to read from it, it's not working and throws an error. Below is the error, investigating this issue currently.

            ERROR : bundle igb:10.1.0 (40)[com.affymetrix.igb.prefs.IgbPreferencesLoadingOrchestrator(44)] : The activate method has thrown an exception
            java.util.MissingResourceException: Can't find bundle for base name ucsc, locale en_US
            at java.base/java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:2059)
            at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1697)
            at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1600)
            at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1555)
            at java.base/java.util.ResourceBundle.getBundle(ResourceBundle.java:861)
            at org.lorainelab.igb.ucsc.rest.api.service.UCSCRestApiDataProvider.<init>(UCSCRestApiDataProvider.java:39)

            Nowlan Freese meanwhile if you are free could you help me in building this branch (https://bitbucket.org/jaya-sravani/integrated-genome-browser/branch/IGBF-3807) in your local and let me know if you are also facing the same issue when IGB is starting.

            Show
            jsirigin Jaya Sravani Sirigineedi added a comment - - edited Developed code to create linkouts for UCSC REST tracks, the code works if I keep the base domain URL as a string in the code but when I introduce a properties file and try to read from it, it's not working and throws an error. Below is the error, investigating this issue currently. ERROR : bundle igb:10.1.0 (40) [com.affymetrix.igb.prefs.IgbPreferencesLoadingOrchestrator(44)] : The activate method has thrown an exception java.util.MissingResourceException: Can't find bundle for base name ucsc, locale en_US at java.base/java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:2059) at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1697) at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1600) at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1555) at java.base/java.util.ResourceBundle.getBundle(ResourceBundle.java:861) at org.lorainelab.igb.ucsc.rest.api.service.UCSCRestApiDataProvider.<init>(UCSCRestApiDataProvider.java:39) Nowlan Freese meanwhile if you are free could you help me in building this branch ( https://bitbucket.org/jaya-sravani/integrated-genome-browser/branch/IGBF-3807 ) in your local and let me know if you are also facing the same issue when IGB is starting.
            Hide
            nfreese Nowlan Freese added a comment -

            I'm seeing the same error when starting IGB on branch IGBF-3807. It looks like something in OSGi is not happy.

            Show
            nfreese Nowlan Freese added a comment - I'm seeing the same error when starting IGB on branch IGBF-3807 . It looks like something in OSGi is not happy.
            Hide
            jsirigin Jaya Sravani Sirigineedi added a comment -

            As discussed with Nowlan Freese, Changed the code to use the base domain URL as a string in the code instead of loading it from the properties file for now, as we are facing an issue with that. Also, observed an error log regarding SLf4j while running the tests, currently working on resolving both these issues. Updated code is available at the branch: https://bitbucket.org/jaya-sravani/integrated-genome-browser/branch/IGBF-3807. Please review and let me know if there are any issues.

            Show
            jsirigin Jaya Sravani Sirigineedi added a comment - As discussed with Nowlan Freese , Changed the code to use the base domain URL as a string in the code instead of loading it from the properties file for now, as we are facing an issue with that. Also, observed an error log regarding SLf4j while running the tests, currently working on resolving both these issues. Updated code is available at the branch: https://bitbucket.org/jaya-sravani/integrated-genome-browser/branch/IGBF-3807 . Please review and let me know if there are any issues.
            Hide
            nfreese Nowlan Freese added a comment -

            Tested on Mac using Sravani's branch.

            Link outs are working as expected, tested on mouse and human genomes using multiple files in UCSC REST. I was able to build IGB without internet (showing that the test for the link outs can fail without killing the build). But I didn't see anything in the log about the link out failing.

            I am seeing is a lot of what look like null pointer exceptions in the log when I mouse over the UCSC REST subfolder names (like genePred) in the Available Data window.

            Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: Cannot invoke "java.util.Map.getOrDefault(Object, Object)" because the return value of "com.affymetrix.genometry.general.DataSet.getProperties()" is null
            at org.lorainelab.igb.ucsc.rest.api.service.UCSCRestApiDataProvider.getDataSetLinkoutUrl(UCSCRestApiDataProvider.java:166)
            	at com.affymetrix.igb.view.load.FeatureTreeView.featureFriendlyURL(FeatureTreeView.java:453)
            	at com.affymetrix.igb.view.load.FeatureTreeView.getURLAt(FeatureTreeView.java:437)
            	at com.affymetrix.igb.view.load.FeatureTreeView$TreeMouseListener.mouseMoved(FeatureTreeView.java:373)
            	at java.desktop/java.awt.AWTEventMulticaster.mouseMoved(AWTEventMulticaster.java:338)
            	at java.desktop/java.awt.AWTEventMulticaster.mouseMoved(AWTEventMulticaster.java:337)
            	at java.desktop/java.awt.Component.processMouseMotionEvent(Component.java:6666)
            	at java.desktop/javax.swing.JComponent.processMouseMotionEvent(JComponent.java:3416)
            	at java.desktop/java.awt.Component.processEvent(Component.java:6390)
            	at java.desktop/java.awt.Container.processEvent(Container.java:2266)
            	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4996)
            	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
            	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4828)
            	at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
            	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4588)
            	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516)
            	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
            	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
            	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4828)
            	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:775)
            	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
            	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
            	at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
            	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
            	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:98)
            	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:747)
            	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
            	at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
            	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
            	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:744)
            	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
            	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
            	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
            	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
            	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
            	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
            
            Show
            nfreese Nowlan Freese added a comment - Tested on Mac using Sravani's branch. Link outs are working as expected, tested on mouse and human genomes using multiple files in UCSC REST. I was able to build IGB without internet (showing that the test for the link outs can fail without killing the build). But I didn't see anything in the log about the link out failing. I am seeing is a lot of what look like null pointer exceptions in the log when I mouse over the UCSC REST subfolder names (like genePred) in the Available Data window. Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: Cannot invoke "java.util.Map.getOrDefault( Object , Object )" because the return value of "com.affymetrix.genometry.general.DataSet.getProperties()" is null at org.lorainelab.igb.ucsc. rest .api.service.UCSCRestApiDataProvider.getDataSetLinkoutUrl(UCSCRestApiDataProvider.java:166) at com.affymetrix.igb.view.load.FeatureTreeView.featureFriendlyURL(FeatureTreeView.java:453) at com.affymetrix.igb.view.load.FeatureTreeView.getURLAt(FeatureTreeView.java:437) at com.affymetrix.igb.view.load.FeatureTreeView$TreeMouseListener.mouseMoved(FeatureTreeView.java:373) at java.desktop/java.awt.AWTEventMulticaster.mouseMoved(AWTEventMulticaster.java:338) at java.desktop/java.awt.AWTEventMulticaster.mouseMoved(AWTEventMulticaster.java:337) at java.desktop/java.awt.Component.processMouseMotionEvent(Component.java:6666) at java.desktop/javax.swing.JComponent.processMouseMotionEvent(JComponent.java:3416) at java.desktop/java.awt.Component.processEvent(Component.java:6390) at java.desktop/java.awt.Container.processEvent(Container.java:2266) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4996) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4828) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4588) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4828) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:775) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714) at java.base/java.security.AccessController.doPrivileged(AccessController.java:400) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:98) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:747) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745) at java.base/java.security.AccessController.doPrivileged(AccessController.java:400) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:744) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
            Hide
            jsirigin Jaya Sravani Sirigineedi added a comment -

            Fixed the exception issue and pushed the updated code to the above-mentioned branch. And for the test case log, I have mentioned a Slf4j error in the comment previously which is the cause for the log to not appear, currently, I am investigating this issue and another error as part of this ticket - https://jira.bioviz.org/browse/IGBF-3813

            Show
            jsirigin Jaya Sravani Sirigineedi added a comment - Fixed the exception issue and pushed the updated code to the above-mentioned branch. And for the test case log, I have mentioned a Slf4j error in the comment previously which is the cause for the log to not appear, currently, I am investigating this issue and another error as part of this ticket - https://jira.bioviz.org/browse/IGBF-3813
            Hide
            ann.loraine Ann Loraine added a comment -

            Just a quick FYI for Jaya Sravani Sirigineedi and Nowlan Freese:

            There's no rush from my side. Mentioning this because Nowlan Freese is at a meeting and might not be able to take a look as quickly as usual.

            Show
            ann.loraine Ann Loraine added a comment - Just a quick FYI for Jaya Sravani Sirigineedi and Nowlan Freese : There's no rush from my side. Mentioning this because Nowlan Freese is at a meeting and might not be able to take a look as quickly as usual.
            Hide
            jsirigin Jaya Sravani Sirigineedi added a comment -

            FYI, this feature can be tested along with this https://jira.bioviz.org/browse/IGBF-3813 ticket as that branch includes these changes.

            Show
            jsirigin Jaya Sravani Sirigineedi added a comment - FYI, this feature can be tested along with this https://jira.bioviz.org/browse/IGBF-3813 ticket as that branch includes these changes.
            Hide
            ann.loraine Ann Loraine added a comment -

            The PR containing the change is merged as part of another ticket. The new code is now available in the "early access" installers available from the BioViz.org Web site.
            Ready for testing.

            Show
            ann.loraine Ann Loraine added a comment - The PR containing the change is merged as part of another ticket. The new code is now available in the "early access" installers available from the BioViz.org Web site. Ready for testing.
            Hide
            nfreese Nowlan Freese added a comment -

            Tested main branch installer on Mac.

            Link outs worked correctly for several tested genomes (human, mouse, elephant). No errors in the log.

            Closing ticket.

            Show
            nfreese Nowlan Freese added a comment - Tested main branch installer on Mac. Link outs worked correctly for several tested genomes (human, mouse, elephant). No errors in the log. Closing ticket.

              People

              • Assignee:
                jsirigin Jaya Sravani Sirigineedi
                Reporter:
                ann.loraine Ann Loraine
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: