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

Add the ability to filter multiple values for Samtools tags

    Details

    • Type: Task
    • Status: To-Do (View Workflow)
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Labels:
      None

      Description

      In the Filter... feature, users can to add multiple filters for the tracks and these filters appear in a list in the Add\Remove\Edit filters window. When adding Samtools tags options, however, multiple filter options does not seem to work as expected.
      When adding a cell barcode(CR) filter, the track only shows reads associated with that CR. Then that filter was removed and another CR filter with a different barcode was added. The same thing happened: reads associated with the CR is displayed. That behavior is expected. However, when both the filters is present in the list, although the expected behavior is for the track to show reads from both the CR values, the observation is that all reads disappear.

        Attachments

          Issue Links

            Activity

            Hide
            karthik Karthik Raveendran added a comment -

            When multiple filters are added in the list, the logic only displays reads that meet all the filter conditions (AND operation). With Samtools tags, we need an OR operator which displays reads that meet atleast one of the conditions.

            Show
            karthik Karthik Raveendran added a comment - When multiple filters are added in the list, the logic only displays reads that meet all the filter conditions (AND operation). With Samtools tags, we need an OR operator which displays reads that meet atleast one of the conditions.
            Hide
            karthik Karthik Raveendran added a comment - - edited

            As the user may add several Samtool tags options in the list to filter out, UX changes in the Filter by window such as the ability to resize the window was added and the comparator option for the tags available now because it can be confusing to some users needed to be removed.

            Show
            karthik Karthik Raveendran added a comment - - edited As the user may add several Samtool tags options in the list to filter out, UX changes in the Filter by window such as the ability to resize the window was added and the comparator option for the tags available now because it can be confusing to some users needed to be removed.
            Hide
            karthik Karthik Raveendran added a comment -

            General Work Flow
            When the Filter by option is clicked on track dropdown menu,

            1. the actionPerformed() function in FilterAction object is triggered where the filter dialog (Add/Remove/Edit Filters dialog - see image) is created as well as an instance of the ConfigureFilters class is also created.
            2. When the Add button is clicked on, the addNew() function in that class is called where
            3. an instance of the ConfigureOptionsDialog (Add Filter dialog - see image) is created at the top of the function. The init() function in this class is where
            4. an instance of the ConfigureOptionPanel is created at the top of the function which is a panel where users can select a filter from the dropdown and UI elements associated with the filter is populated here.
            5. The init() function in this class is where the dropdown menu for the filters are created and listeners are added to each menu item. By default, the filter on the top the dropdown list is selected (at the time of writing this comment it is Average Quality Score) and this triggers the listeners to populate options, such as, average_quality textfield as well as a comparator dropdown menu. Let's call these Filter Options
            6. When the filter dropdown menu item in Add Filter dialog is selected, the change listener will call the setSelected() is called where after checking there are no null values initParamPanel() is called which in turn calls addOptions()
            7. Here, the Filter Options are added to the ConfigureOptionPanel and the respective Filter Options listeners, such as, a change listener when a value is added to a textfield which sets the parameter in the paramMap which key-value Map for all the Filter Options. All of this happens in the ConfigureOptionPanel .
            8. When the user submits their choice (click the OK button on Add Filter dialog), the values of the Filter Options is added to the ConfigureOptionsDialog list. The values are compared with the track properties in FilterSymmerty() in the SamtoolsFilter
            Show
            karthik Karthik Raveendran added a comment - General Work Flow When the Filter by option is clicked on track dropdown menu, the actionPerformed() function in FilterAction object is triggered where the filter dialog ( Add/Remove/Edit Filters dialog - see image) is created as well as an instance of the ConfigureFilters class is also created. When the Add button is clicked on, the addNew() function in that class is called where an instance of the ConfigureOptionsDialog ( Add Filter dialog - see image) is created at the top of the function. The init() function in this class is where an instance of the ConfigureOptionPanel is created at the top of the function which is a panel where users can select a filter from the dropdown and UI elements associated with the filter is populated here. The init() function in this class is where the dropdown menu for the filters are created and listeners are added to each menu item. By default, the filter on the top the dropdown list is selected (at the time of writing this comment it is Average Quality Score ) and this triggers the listeners to populate options, such as, average_quality textfield as well as a comparator dropdown menu. Let's call these Filter Options When the filter dropdown menu item in Add Filter dialog is selected, the change listener will call the setSelected() is called where after checking there are no null values initParamPanel() is called which in turn calls addOptions() Here, the Filter Options are added to the ConfigureOptionPanel and the respective Filter Options listeners, such as, a change listener when a value is added to a textfield which sets the parameter in the paramMap which key-value Map for all the Filter Options . All of this happens in the ConfigureOptionPanel . When the user submits their choice (click the OK button on Add Filter dialog), the values of the Filter Options is added to the ConfigureOptionsDialog list. The values are compared with the track properties in FilterSymmerty() in the SamtoolsFilter
            Hide
            karthik Karthik Raveendran added a comment -

            Currently, multiple filter values can be added to the samtags filters using a semi-colon separator. See Commit

            Show
            karthik Karthik Raveendran added a comment - Currently, multiple filter values can be added to the samtags filters using a semi-colon separator. See Commit
            Hide
            nfreese Nowlan Freese added a comment -

            Tested using Karthik's branch on Mac.

            Filter by multiple values is working well. I have a couple of thoughts/changes:

            • I think it would be good to separate your commit into two commits, 1) adding the ability to filter multiple samtools tag values, i.e. the changes to SamTagsFilter.java, and 2) improving the filters window, i.e. the changes to FilterAction.java and ConfigureFilters.java.
            • Can we avoid the import of java.awt.* (i.e. don't import .*)
            • Add back the comparator for not equal. That way I can put in two or three CR values and then choose if I want to only see these CR values, or I want to not see these CR values.
            Show
            nfreese Nowlan Freese added a comment - Tested using Karthik's branch on Mac. Filter by multiple values is working well. I have a couple of thoughts/changes: I think it would be good to separate your commit into two commits, 1) adding the ability to filter multiple samtools tag values, i.e. the changes to SamTagsFilter.java, and 2) improving the filters window, i.e. the changes to FilterAction.java and ConfigureFilters.java. Can we avoid the import of java.awt.* (i.e. don't import .*) Add back the comparator for not equal. That way I can put in two or three CR values and then choose if I want to only see these CR values, or I want to not see these CR values.

              People

              • Assignee:
                karthik Karthik Raveendran
                Reporter:
                karthik Karthik Raveendran
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated: