Skip to content

Commit

Permalink
Web: Add Filter on Scan Number (& Scan filename/Search)
Browse files Browse the repository at this point in the history
On Peptide/Protein/QC and Single Protein

Add new filter on Scan Number
  For each scan number entry, can filter to specific scan filenames
and/or searches
  • Loading branch information
danjasuw committed May 16, 2024
1 parent fcbc301 commit 0df4fef
Show file tree
Hide file tree
Showing 44 changed files with 2,991 additions and 77 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,234 @@
/**
* currentFiltersDisplayBlock__ScanNumber_ScanFilenameId_ProjectSearchId_On_PSM_Filter_UserSelection.tsx
*
* "Current Filters:" For "Must :"
*
*
*/

import React from "react";
import {
CommonData_LoadedFromServer_MultipleSearches__ScanFile_SearchScanFileId_ScanFilename_ScanFileId_Holder,
} from "page_js/data_pages/common_data_loaded_from_server__per_search_plus_some_assoc_common_data__with_loading_code__except_mod_main_page/common_data_loaded_from_server_multiple_searches_sub_parts__returned_objects/commonData_LoadedFromServer_MultipleSearches__ScanFile_SearchScanFileId_ScanFilename_ScanFileId";
import {
ScanNumber_ScanFilenameId_ProjectSearchId_On_PSM_Filter_UserSelection_StateObject
} from "page_js/data_pages/common_filtering_code_filtering_components__except_mod_main_page/filter_on__components/filter_on__core__components__peptide__single_protein/scan_number_and_file_name_or_search__on_psms_selection/js/scanNumber_ScanFilenameId_ProjectSearchId_On_PSM_Filter_UserSelection_StateObject";
import {
DataPageStateManager,
SearchData_SearchName_Etc_SingleSearchEntry__DataPageStateManagerEntry
} from "page_js/data_pages/data_pages_common/dataPageStateManager";

// Set since what is returned is put into an Array. Simply set to root function name.
const _ROOT_REACT_ELEMENT_RETURNED__KEY = "currentFiltersDisplayBlock__ScanNumber_ScanFilenameId_ProjectSearchId_On_PSM_Filter_UserSelection";

/**
*
* @param scanNumber_ScanFilenameId_ProjectSearchId_On_PSM_Filter_UserSelection_StateObject
* @param commonData_LoadedFromServer_MultipleSearches__ScanFile_SearchScanFileId_ScanFilename_ScanFileId_Holder
*/
export const currentFiltersDisplayBlock__ScanNumber_ScanFilenameId_ProjectSearchId_On_PSM_Filter_UserSelection = function (
{
scanNumber_ScanFilenameId_ProjectSearchId_On_PSM_Filter_UserSelection_StateObject,
projectSearchIds,
dataPageStateManager,
commonData_LoadedFromServer_MultipleSearches__ScanFile_SearchScanFileId_ScanFilename_ScanFileId_Holder
} : {
scanNumber_ScanFilenameId_ProjectSearchId_On_PSM_Filter_UserSelection_StateObject : ScanNumber_ScanFilenameId_ProjectSearchId_On_PSM_Filter_UserSelection_StateObject
projectSearchIds : Array<number>
dataPageStateManager : DataPageStateManager
commonData_LoadedFromServer_MultipleSearches__ScanFile_SearchScanFileId_ScanFilename_ScanFileId_Holder: CommonData_LoadedFromServer_MultipleSearches__ScanFile_SearchScanFileId_ScanFilename_ScanFileId_Holder // Use with scanNumber_ScanFilenameId_ProjectSearchId_On_PSM_Filter_UserSelection_StateObject
}
) : JSX.Element {

if ( ( ! scanNumber_ScanFilenameId_ProjectSearchId_On_PSM_Filter_UserSelection_StateObject ) ) {
// Nothing to display

return null; // EARLY RETURN
}

if ( ! scanNumber_ScanFilenameId_ProjectSearchId_On_PSM_Filter_UserSelection_StateObject.is_AnySelections() ) {
// Nothing to display

return null; // EARLY RETURN
}

if ( ( ! dataPageStateManager ) ) {
// Nothing to display

return null; // EARLY RETURN
}

if ( ( ! commonData_LoadedFromServer_MultipleSearches__ScanFile_SearchScanFileId_ScanFilename_ScanFileId_Holder ) ) {
// Nothing to display

return null; // EARLY RETURN
}

return (
<React.Fragment key={ _ROOT_REACT_ELEMENT_RETURNED__KEY }>
<CurrentFiltersDisplayBlock__ScanNumber_ScanFilenameId_ProjectSearchId_On_PSM_Filter_UserSelection
scanNumber_ScanFilenameId_ProjectSearchId_On_PSM_Filter_UserSelection_StateObject={ scanNumber_ScanFilenameId_ProjectSearchId_On_PSM_Filter_UserSelection_StateObject }
projectSearchIds={ projectSearchIds }
dataPageStateManager={ dataPageStateManager }
commonData_LoadedFromServer_MultipleSearches__ScanFile_SearchScanFileId_ScanFilename_ScanFileId_Holder={ commonData_LoadedFromServer_MultipleSearches__ScanFile_SearchScanFileId_ScanFilename_ScanFileId_Holder }
/>
</React.Fragment>
);
}

/**
*
* @param searchScanFileDataEntries
*/
const CurrentFiltersDisplayBlock__ScanNumber_ScanFilenameId_ProjectSearchId_On_PSM_Filter_UserSelection = function(
{
scanNumber_ScanFilenameId_ProjectSearchId_On_PSM_Filter_UserSelection_StateObject,
projectSearchIds,
dataPageStateManager,
commonData_LoadedFromServer_MultipleSearches__ScanFile_SearchScanFileId_ScanFilename_ScanFileId_Holder
} : {
scanNumber_ScanFilenameId_ProjectSearchId_On_PSM_Filter_UserSelection_StateObject : ScanNumber_ScanFilenameId_ProjectSearchId_On_PSM_Filter_UserSelection_StateObject
projectSearchIds : Array<number>
dataPageStateManager : DataPageStateManager
commonData_LoadedFromServer_MultipleSearches__ScanFile_SearchScanFileId_ScanFilename_ScanFileId_Holder: CommonData_LoadedFromServer_MultipleSearches__ScanFile_SearchScanFileId_ScanFilename_ScanFileId_Holder // Use with scanNumber_ScanFilenameId_ProjectSearchId_On_PSM_Filter_UserSelection_StateObject
}
) : JSX.Element {

// CANNOT return null since wrapped in <React.Fragment>

const selectionsElements: Array<JSX.Element> = [];

for ( const scanNumber_ScanFilenameIds_ProjectSearchIds_Selection_Entry of scanNumber_ScanFilenameId_ProjectSearchId_On_PSM_Filter_UserSelection_StateObject.get__scanNumber_ScanFilenameIds_ProjectSearchIds_Selections() ) {

if ( selectionsElements.length === 0 ) {
// First Entry Text before
selectionsElements.push(
<span key={ "text_before_" + selectionsElements.length }>Only showing data for PSMs with </span>
)
} else {
// NOT First Entry Text before
selectionsElements.push(
<span key={ "text_before_" + selectionsElements.length }> or a </span>
)
}

selectionsElements.push(
<span key={ "text_before_" + selectionsElements.length }>scan number of { scanNumber_ScanFilenameIds_ProjectSearchIds_Selection_Entry.scanNumber }</span>
)

const searchData_For_ProjectSearchId__HasSelection: Array<SearchData_SearchName_Etc_SingleSearchEntry__DataPageStateManagerEntry> = []

for ( const projectSearchId of projectSearchIds ) {

const searchData_For_ProjectSearchId = dataPageStateManager.get_searchData_SearchName_Etc_Root().get_SearchData_For_ProjectSearchId( projectSearchId )
if ( ! searchData_For_ProjectSearchId ) {
throw Error( "dataPageStateManager.get_searchData_SearchName_Etc_Root().get_SearchData_For_ProjectSearchId( projectSearchId ) returned NOTHING for projectSearchId: " + projectSearchId )
}

if ( scanNumber_ScanFilenameIds_ProjectSearchIds_Selection_Entry.wholeSearches_Selected_ProjectSearchIds
&& scanNumber_ScanFilenameIds_ProjectSearchIds_Selection_Entry.wholeSearches_Selected_ProjectSearchIds.has( projectSearchId ) ) {

searchData_For_ProjectSearchId__HasSelection.push( searchData_For_ProjectSearchId )

} else if (
scanNumber_ScanFilenameIds_ProjectSearchIds_Selection_Entry.searchScanFile_Ids_Selected
&& scanNumber_ScanFilenameIds_ProjectSearchIds_Selection_Entry.searchScanFile_Ids_Selected.size > 0 ) {

const scanFile_SearchScanFileId_ScanFilename_ScanFileId_Holder =
commonData_LoadedFromServer_MultipleSearches__ScanFile_SearchScanFileId_ScanFilename_ScanFileId_Holder.get_For_ProjectSearchId( projectSearchId )

if ( scanFile_SearchScanFileId_ScanFilename_ScanFileId_Holder ) {
for ( const searchScanFileData of scanFile_SearchScanFileId_ScanFilename_ScanFileId_Holder.get_SearchScanFileData_PerSearchScanFileId_Array_OrderedBy_Filename() ) {

if ( scanNumber_ScanFilenameIds_ProjectSearchIds_Selection_Entry.searchScanFile_Ids_Selected.has( searchScanFileData.searchScanFileId ) ) {

searchData_For_ProjectSearchId__HasSelection.push( searchData_For_ProjectSearchId )

break;
}
}
}
}
}

const searchData_For_ProjectSearchId__HasSelection__Length = searchData_For_ProjectSearchId__HasSelection.length


let searchesAndTheirScanFilenamesText = undefined



for ( let index = 0; index < searchData_For_ProjectSearchId__HasSelection__Length; index++ ) {

if ( ! searchesAndTheirScanFilenamesText ) {

let searchesLabel = ""
if ( searchData_For_ProjectSearchId__HasSelection__Length > 1 ) {
searchesLabel = "es"
}
searchesAndTheirScanFilenamesText = " in search" + searchesLabel + " "

} else {

if ( index === ( searchData_For_ProjectSearchId__HasSelection__Length - 1 ) ) {
// last entry
searchesAndTheirScanFilenamesText += " or "
} else {
// NOT last entry
searchesAndTheirScanFilenamesText += " or "
}
}

const searchData_For_ProjectSearchId__HasSelection_Entry = searchData_For_ProjectSearchId__HasSelection[ index ]

searchesAndTheirScanFilenamesText += searchData_For_ProjectSearchId__HasSelection_Entry.searchId

if (
scanNumber_ScanFilenameIds_ProjectSearchIds_Selection_Entry.searchScanFile_Ids_Selected
&& scanNumber_ScanFilenameIds_ProjectSearchIds_Selection_Entry.searchScanFile_Ids_Selected.size > 0 ) {

const scanFile_SearchScanFileId_ScanFilename_ScanFileId_Holder =
commonData_LoadedFromServer_MultipleSearches__ScanFile_SearchScanFileId_ScanFilename_ScanFileId_Holder.get_For_ProjectSearchId( searchData_For_ProjectSearchId__HasSelection_Entry.projectSearchId )

if ( scanFile_SearchScanFileId_ScanFilename_ScanFileId_Holder ) {

const scanFilenames_INITIAL_STRING = ""

let scanFilenames = scanFilenames_INITIAL_STRING

for ( const searchScanFileData of scanFile_SearchScanFileId_ScanFilename_ScanFileId_Holder.get_SearchScanFileData_PerSearchScanFileId_Array_OrderedBy_Filename() ) {

if ( scanNumber_ScanFilenameIds_ProjectSearchIds_Selection_Entry.searchScanFile_Ids_Selected.has( searchScanFileData.searchScanFileId ) ) {

if ( scanFilenames !== scanFilenames_INITIAL_STRING ) {
scanFilenames += ", "
}

scanFilenames += searchScanFileData.filename
}
}

if ( scanFilenames !== scanFilenames_INITIAL_STRING ) {
searchesAndTheirScanFilenamesText += " (" + scanFilenames + ")"
}
}
}
}

selectionsElements.push(
<span key={ "text_" + selectionsElements.length }>{ searchesAndTheirScanFilenamesText }</span>
)
}

return (
<React.Fragment>

<div>
{ selectionsElements }
</div>

</React.Fragment>
);

}

Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ import {currentFiltersDisplayBlock__PSM_Exclude_IndependentDecoy_PSMs_UserSelect
import {Page_MainFiltersDisplay_CommonDisplayContainer_Component} from "page_js/data_pages/common_filtering_code_filtering_components__except_mod_main_page/current_filters_display_block__each_root_component_and_their_data_objects/common/page_MainFiltersDisplay_CommonDisplayContainer_Component";
import {currentFiltersDisplayBlock__PeptideSequence_MissedCleavageCount_UserSelections} from "page_js/data_pages/common_filtering_code_filtering_components__except_mod_main_page/current_filters_display_block__common_and_page_specific/current_filters_display_block__common_display_elements/currentFiltersDisplayBlock__PeptideSequence_MissedCleavageCount_UserSelections";
import {currentFiltersDisplayBlock__PeptideMeetsDigestion_AKA_TrypticPeptide_Etc_UserSelections} from "page_js/data_pages/common_filtering_code_filtering_components__except_mod_main_page/current_filters_display_block__common_and_page_specific/current_filters_display_block__common_display_elements/currentFiltersDisplayBlock__PeptideMeetsDigestion_AKA_TrypticPeptide_Etc_UserSelections";
import {
currentFiltersDisplayBlock__ScanNumber_ScanFilenameId_ProjectSearchId_On_PSM_Filter_UserSelection
} from "page_js/data_pages/common_filtering_code_filtering_components__except_mod_main_page/current_filters_display_block__common_and_page_specific/current_filters_display_block__common_display_elements/currentFiltersDisplayBlock__ScanNumber_ScanFilenameId_ProjectSearchId_On_PSM_Filter_UserSelection";



Expand Down Expand Up @@ -177,6 +180,18 @@ export class Peptide_Page_FiltersDisplay extends React.Component< Peptide_Page_F
}
}

{ // Scan Number Filter
const currentFilter = currentFiltersDisplayBlock__ScanNumber_ScanFilenameId_ProjectSearchId_On_PSM_Filter_UserSelection({
scanNumber_ScanFilenameId_ProjectSearchId_On_PSM_Filter_UserSelection_StateObject: this.props.peptide_Page_FiltersDisplay_ComponentData.scanNumber_ScanFilenameId_ProjectSearchId_On_PSM_Filter_UserSelection_StateObject,
projectSearchIds: this.props.peptide_Page_FiltersDisplay_ComponentData.projectSearchIds,
dataPageStateManager: this.props.peptide_Page_FiltersDisplay_ComponentData.dataPageStateManager,
commonData_LoadedFromServer_MultipleSearches__ScanFile_SearchScanFileId_ScanFilename_ScanFileId_Holder: this.props.peptide_Page_FiltersDisplay_ComponentData.commonData_LoadedFromServer_MultipleSearches__ScanFile_SearchScanFileId_ScanFilename_ScanFileId_Holder
});
if ( currentFilter ) {
currentFiltersArray.push( currentFilter );
}
}

{ // Peptide Unique UserSelections

const currentFilter = currentFiltersDisplayBlock__Peptide_QC__PeptideUnique_UserSelection({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,18 @@ import {CommonData_LoadedFromServer_PerSearch_Plus_SomeAssocCommonData__Except_M
import {Psm_Exclude_IndependentDecoy_PSMs_Filter_UserSelection_StateObject} from "page_js/data_pages/common_filtering_code_filtering_components__except_mod_main_page/filter_on__components/filter_on__core__components__peptide__single_protein/psm_exclude_independent_decoy_psms/psm_Exclude_IndependentDecoy_PSMs_Filter_UserSelection_StateObject";
import {PeptideSequence_MissedCleavageCount_UserSelections_StateObject} from "page_js/data_pages/common_filtering_code_filtering_components__except_mod_main_page/filter_on__components/filter_on__core__components__peptide__single_protein/filter_on__peptide_sequence_missed_cleavage_count/js/peptideSequence_MissedCleavageCount_UserSelections_StateObject";
import {PeptideMeetsDigestion_AKA_TrypticPeptide_Etc_UserSelections_StateObject} from "page_js/data_pages/common_filtering_code_filtering_components__except_mod_main_page/filter_on__components/filter_on__core__components__peptide__single_protein/filter_on__peptide_meets_digestion__aka_tryptic_peptide_etc/peptideMeetsDigestion_AKA_TrypticPeptide_Etc_UserSelections_StateObject";
import {
ScanNumber_ScanFilenameId_ProjectSearchId_On_PSM_Filter_UserSelection_StateObject
} from "page_js/data_pages/common_filtering_code_filtering_components__except_mod_main_page/filter_on__components/filter_on__core__components__peptide__single_protein/scan_number_and_file_name_or_search__on_psms_selection/js/scanNumber_ScanFilenameId_ProjectSearchId_On_PSM_Filter_UserSelection_StateObject";
import { DataPageStateManager } from "page_js/data_pages/data_pages_common/dataPageStateManager";

/**
*
*/
export interface Peptide_Page_FiltersDisplay_ComponentData {

projectSearchIds : Array<number>
dataPageStateManager : DataPageStateManager
commonData_LoadedFromServer_PerSearch_Plus_SomeAssocCommonData__Except_ModMainPage__Root: CommonData_LoadedFromServer_PerSearch_Plus_SomeAssocCommonData__Except_ModMainPage__Root

modificationMass_UserSelections_StateObject : ModificationMass_UserSelections_StateObject;
Expand All @@ -38,6 +43,7 @@ export interface Peptide_Page_FiltersDisplay_ComponentData {
peptideMeetsDigestion_AKA_TrypticPeptide_Etc_UserSelections_StateObject: PeptideMeetsDigestion_AKA_TrypticPeptide_Etc_UserSelections_StateObject;
proteinPositionFilter_UserSelections_StateObject : ProteinPositionFilter_UserSelections_StateObject;
peptideList_PeptidePage_SingleProtein_FilterOnCounts_psm_UserSelections_StateObject : PeptideList_PeptidePage_SingleProtein_FilterOnCounts_psm_UserSelections_StateObject
scanNumber_ScanFilenameId_ProjectSearchId_On_PSM_Filter_UserSelection_StateObject : ScanNumber_ScanFilenameId_ProjectSearchId_On_PSM_Filter_UserSelection_StateObject
commonData_LoadedFromServer_MultipleSearches__ScanFile_SearchScanFileId_ScanFilename_ScanFileId_Holder: CommonData_LoadedFromServer_MultipleSearches__ScanFile_SearchScanFileId_ScanFilename_ScanFileId_Holder // Use with scanFilenameId_On_PSM_Filter_UserSelection_StateObject
scanFilenameId_On_PSM_Filter_UserSelection_StateObject : ScanFilenameId_On_PSM_Filter_UserSelection_StateObject
scan_RetentionTime_MZ_UserSelections_StateObject : Scan_RetentionTime_MZ_UserSelections_StateObject
Expand Down

0 comments on commit 0df4fef

Please sign in to comment.