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

Add exon number to selection info

    Details

      Description

      Situation: A user inquired as to whether there was a way for IGB to indicate which exon had been selected. For example, many studies report mutations by which exon they affect (i.e. the mutation is found on the eleventh exon). Currently IGB does not provide this information. Counting exons visually can be quite challenging, especially in humans where exons are very small relative to introns, and can be separated by hundreds of thousands of base pairs.

      Task: Investigate the IGB codebase to determine if there would be a relatively simple way to add the exon number to the tooltip or selection info. For example, if a user selects the second exon of a gene model, the tooltip or selection info tab would have a property titled "exon" and the value would be an integer representing the exon's number.

        Attachments

          Activity

          nfreese Nowlan Freese created issue -
          nfreese Nowlan Freese made changes -
          Field Original Value New Value
          Epic Link IGBF-1765 [ 17855 ]
          ann.loraine Ann Loraine made changes -
          Sprint Fall 6 2021 Oct 25 - Nov 5 [ 132 ]
          ann.loraine Ann Loraine made changes -
          Rank Ranked higher
          nfreese Nowlan Freese made changes -
          Rank Ranked higher
          nfreese Nowlan Freese made changes -
          Labels intermediate
          Hide
          nfreese Nowlan Freese added a comment -
          Show
          nfreese Nowlan Freese added a comment - Bed file format: https://genome.ucsc.edu/FAQ/FAQformat.html#format1
          nfreese Nowlan Freese made changes -
          Assignee Kaushik Gopu [ kgopu ]
          nfreese Nowlan Freese made changes -
          Sprint Fall 1 - Sep 5 [ 82 ]
          nfreese Nowlan Freese made changes -
          Hide
          nfreese Nowlan Freese added a comment -

          Start with module: Plugin - BED file format handler

          Show
          nfreese Nowlan Freese added a comment - Start with module: Plugin - BED file format handler
          nfreese Nowlan Freese made changes -
          Status To-Do [ 10305 ] In Progress [ 3 ]
          nfreese Nowlan Freese made changes -
          Summary Investigate adding exon number to selection info Add exon number to selection info
          nfreese Nowlan Freese made changes -
          Story Points 1 3
          Hide
          kgopu Kaushik Gopu added a comment - - edited

          Update:

          • Figured out a way to get the min_blocks and max_blocks data from the object.
          • The type of the object that is passed to function is SeqSymmetry(Parent class), but it does not have information about blocks. Therefore it needs to by type casted with class UcscBedDetailSym, child class of SeqSymmetry, in order to access the getters methods of min_blocks and max_blocks.
          • on coming monday, I will be creating a new branch and start working on the coding part.
          Show
          kgopu Kaushik Gopu added a comment - - edited Update: Figured out a way to get the min_blocks and max_blocks data from the object. The type of the object that is passed to function is SeqSymmetry (Parent class), but it does not have information about blocks. Therefore it needs to by type casted with class UcscBedDetailSym , child class of SeqSymmetry , in order to access the getters methods of min_blocks and max_blocks. on coming monday, I will be creating a new branch and start working on the coding part.
          ann.loraine Ann Loraine made changes -
          Sprint Fall 1 - Sep 5 [ 82 ] Fall 1 - Sep 5, Fall 2 2023 Sep 17 [ 82, 178 ]
          ann.loraine Ann Loraine made changes -
          Rank Ranked higher
          nfreese Nowlan Freese made changes -
          Story Points 3 5
          Hide
          nfreese Nowlan Freese added a comment -

          Since the bedsym logic may be applied to data that is not showing gene models (exons), label the blocks as "Block: " for Selection Info.

          Show
          nfreese Nowlan Freese added a comment - Since the bedsym logic may be applied to data that is not showing gene models (exons), label the blocks as "Block: " for Selection Info.
          Hide
          nfreese Nowlan Freese added a comment -

          Some general notes from walking through the debugger:
          SeqUtils.java - collectLeafSpans - loops through blocks and calls UcscBedSym getChild
          UcscBedSym.java - getChild - creates new BedChildSingletonSeqSym for each child (I think these equate to exons). Right now these just take three properties, seq, start, end (they are effectively just a SimpleSeqSpan). Unclear if we can add the index position to the BedChildSingletonSeqSym (i.e. what should be the exon). The SimpleSeqSpan is used in a lot of places, so would be hard to modify. Maybe we can modify BedChildSingletonSeqSym to have the index position?
          SeqMapView - determineProps - this is where the properties are assigned to the view, but I'm not sure exactly how this works.

          Show
          nfreese Nowlan Freese added a comment - Some general notes from walking through the debugger: SeqUtils.java - collectLeafSpans - loops through blocks and calls UcscBedSym getChild UcscBedSym.java - getChild - creates new BedChildSingletonSeqSym for each child (I think these equate to exons). Right now these just take three properties, seq, start, end (they are effectively just a SimpleSeqSpan). Unclear if we can add the index position to the BedChildSingletonSeqSym (i.e. what should be the exon). The SimpleSeqSpan is used in a lot of places, so would be hard to modify. Maybe we can modify BedChildSingletonSeqSym to have the index position? SeqMapView - determineProps - this is where the properties are assigned to the view, but I'm not sure exactly how this works.
          Hide
          kgopu Kaushik Gopu added a comment - - edited
          • Implemented a feature that shows block number of a selected gene model in selection info.
          • pull and checkout to this branch.
          • added comments for each code change.
            Testing Instructions:
          • select the single genome, click on the selection info and check for a property named "block number".
          • Hover on single genome model and look for the property called "block number".
          • The block number represents the sequence number or position of the block.
          Show
          kgopu Kaushik Gopu added a comment - - edited Implemented a feature that shows block number of a selected gene model in selection info. pull and checkout to this branch. added comments for each code change. Testing Instructions: select the single genome, click on the selection info and check for a property named "block number". Hover on single genome model and look for the property called "block number". The block number represents the sequence number or position of the block.
          kgopu Kaushik Gopu made changes -
          Status In Progress [ 3 ] Needs 1st Level Review [ 10005 ]
          nfreese Nowlan Freese made changes -
          Assignee Kaushik Gopu [ kgopu ]
          nfreese Nowlan Freese made changes -
          Status Needs 1st Level Review [ 10005 ] First Level Review in Progress [ 10301 ]
          nfreese Nowlan Freese made changes -
          Assignee Nowlan Freese [ nfreese ]
          Hide
          nfreese Nowlan Freese added a comment - - edited

          Testing on Mac:

          • Default data from IGB Quickload shows block number correctly for +/- strands.
          • ncbiRefSeqCurated in the hg38 human genome does not show the block number (I think these DAS files load as bigBed, which IGB cannot currently fully parse).
          • Local bed file shows block number correctly for +/- strands.
          • Narrowpeak and broadpeak files do not show block number (this is the correct behavior).
          • Local GFF3 file (from smoketesting) does not show block number (correct behavior), but does show a "rank" property that seems to correlate with exon number, so no need to implement this feature for GFF3?
          • Local GTF file (from smoketesting) does not show block number (correct behavior), but does have a "exon_number" property, so no need to implement the feature for GTF.
          • Local bigbed file (see IGBF-2978) shows block number correctly for +/- strands.
          • A FindJunctions file is showing the block number. This isn't exactly correct as the block number for findJunctions is always going to be 1 - 2 and will not change based on the exons associated with the junction. Odd that the findJunctions file is being parsed as a ucscBedSym, but I think it should be fine assuming we leave the property as "Block number" instead of exon, which could be confusing.

          Everything seems to be working well. GFF/GTF already seem to implement the exon number, so we have now added bed/bigBed files. It's odd that the UCSC DAS files are not showing the block number, but I have a few theories (I will make a new ticket).

          One quirk is that the first and last "thick" exons when overlapping a "thin" UTR will not show the block number. This is because the "thin" UTR is the actual child sym that the block number appears in, the thick part is drawn over top of it, and it is unclear where that sym is coming from.

          Ready for pull request.

          Show
          nfreese Nowlan Freese added a comment - - edited Testing on Mac: Default data from IGB Quickload shows block number correctly for +/- strands. ncbiRefSeqCurated in the hg38 human genome does not show the block number (I think these DAS files load as bigBed, which IGB cannot currently fully parse). Local bed file shows block number correctly for +/- strands. Narrowpeak and broadpeak files do not show block number (this is the correct behavior). Local GFF3 file (from smoketesting) does not show block number (correct behavior), but does show a "rank" property that seems to correlate with exon number, so no need to implement this feature for GFF3? Local GTF file (from smoketesting) does not show block number (correct behavior), but does have a "exon_number" property, so no need to implement the feature for GTF. Local bigbed file (see IGBF-2978 ) shows block number correctly for +/- strands. A FindJunctions file is showing the block number. This isn't exactly correct as the block number for findJunctions is always going to be 1 - 2 and will not change based on the exons associated with the junction. Odd that the findJunctions file is being parsed as a ucscBedSym, but I think it should be fine assuming we leave the property as "Block number" instead of exon, which could be confusing. Everything seems to be working well. GFF/GTF already seem to implement the exon number, so we have now added bed/bigBed files. It's odd that the UCSC DAS files are not showing the block number, but I have a few theories (I will make a new ticket). One quirk is that the first and last "thick" exons when overlapping a "thin" UTR will not show the block number. This is because the "thin" UTR is the actual child sym that the block number appears in, the thick part is drawn over top of it, and it is unclear where that sym is coming from. Ready for pull request.
          nfreese Nowlan Freese made changes -
          Assignee Nowlan Freese [ nfreese ] Kaushik Gopu [ kgopu ]
          nfreese Nowlan Freese made changes -
          Status First Level Review in Progress [ 10301 ] Ready for Pull Request [ 10304 ]
          Hide
          kgopu Kaushik Gopu added a comment - - edited

          new pull request submitted after rebasing branch with main-JDK8.

          Show
          kgopu Kaushik Gopu added a comment - - edited new pull request submitted after rebasing branch with main-JDK8.
          kgopu Kaushik Gopu made changes -
          Status Ready for Pull Request [ 10304 ] Pull Request Submitted [ 10101 ]
          nfreese Nowlan Freese made changes -
          Assignee Kaushik Gopu [ kgopu ] Ann Loraine [ aloraine ]
          ann.loraine Ann Loraine made changes -
          Status Pull Request Submitted [ 10101 ] Reviewing Pull Request [ 10303 ]
          Hide
          ann.loraine Ann Loraine added a comment -

          PR is merged and main-JDK8 branch installers are newly built and ready for testing in the Downloads section of the team repo as usual: https://bitbucket.org/lorainelab/integrated-genome-browser/downloads/

          Show
          ann.loraine Ann Loraine added a comment - PR is merged and main-JDK8 branch installers are newly built and ready for testing in the Downloads section of the team repo as usual: https://bitbucket.org/lorainelab/integrated-genome-browser/downloads/
          ann.loraine Ann Loraine made changes -
          Status Reviewing Pull Request [ 10303 ] Merged Needs Testing [ 10002 ]
          ann.loraine Ann Loraine made changes -
          Assignee Ann Loraine [ aloraine ]
          nfreese Nowlan Freese made changes -
          Status Merged Needs Testing [ 10002 ] Post-merge Testing In Progress [ 10003 ]
          Hide
          nfreese Nowlan Freese added a comment -

          Tested main-JDK8 installer on Mac.

          Block number is working correctly, no errors in the log.

          Closing ticket.

          Show
          nfreese Nowlan Freese added a comment - Tested main-JDK8 installer on Mac. Block number is working correctly, no errors in the log. Closing ticket.
          nfreese Nowlan Freese made changes -
          Assignee Kaushik Gopu [ kgopu ]
          nfreese Nowlan Freese made changes -
          Resolution Done [ 10000 ]
          Status Post-merge Testing In Progress [ 10003 ] Closed [ 6 ]
          pkulzer Paige Kulzer made changes -
          Fix Version/s 10.0.0 Major Release [ 10900 ]
          nfreese Nowlan Freese made changes -
          Issue Type Improvement [ 4 ] New Feature [ 2 ]

            People

            • Assignee:
              kgopu Kaushik Gopu
              Reporter:
              nfreese Nowlan Freese
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: