From 4bddf9862287e4ca174aed25fd5af0bcfbdef575 Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Thu, 7 Mar 2024 14:15:05 +0100 Subject: [PATCH 1/4] AnalysisBrowser: Update the panel Make it fully resizable, replace the lines with groupboxes and add checkboxes for selecting NWB/PXP files for loading and loading TPStorage later on. --- Packages/MIES/MIES_AnalysisBrowser_Macro.ipf | 83 ++++++++++++-------- 1 file changed, 51 insertions(+), 32 deletions(-) diff --git a/Packages/MIES/MIES_AnalysisBrowser_Macro.ipf b/Packages/MIES/MIES_AnalysisBrowser_Macro.ipf index 002d3ea266..e95a57c118 100644 --- a/Packages/MIES/MIES_AnalysisBrowser_Macro.ipf +++ b/Packages/MIES/MIES_AnalysisBrowser_Macro.ipf @@ -11,76 +11,70 @@ Window AnalysisBrowser() : Panel PauseUpdate; Silent 1 // building window... - NewPanel/K=1/W=(709, 94, 1849, 858) as "AnalysisBrowser" - SetDrawLayer UserBack - DrawLine 5, 305, 105, 305 - DrawLine 5, 242, 105, 242 - DrawLine -2, 145, 1145, 145 - ListBox list_experiment_contents, pos={119.00, 150.00}, size={1014.00, 608.00}, proc=AB_ListBoxProc_ExpBrowser + NewPanel/K=1/W=(48, 425, 1188, 1257) as "AnalysisBrowser" + ListBox list_experiment_contents, pos={120.00, 173.00}, size={1013.00, 653.00}, proc=AB_ListBoxProc_ExpBrowser ListBox list_experiment_contents, help={"Various properties of the loaded sweep data"} - ListBox list_experiment_contents, userdata(ResizeControlsInfo)=A"!!,FS!!#A%!!#E8J,htSz!!#](Aon\"Qzzzzzzzzzzzzzz!!#o2B4uAezz" + ListBox list_experiment_contents, userdata(ResizeControlsInfo)=A"!!,FU!!#A:!!#<(z!!#](Aon\"Qzzzzzzzzzzzzzz!!#](Aon\"Qzz" + CheckBox check_load_nwb, userdata(ResizeControlsInfo)+=A"zzzzzzzzzzzz!!#u:Du]k\"!!#<(z!!#](Aon\"Qzzzzzzzzzzzzzz!!#](Aon\"Qzz" + CheckBox check_load_pxp, userdata(ResizeControlsInfo)+=A"zzzzzzzzzzzz!!#u:Du]k Date: Thu, 7 Mar 2024 14:21:57 +0100 Subject: [PATCH 2/4] AB_BrowserStartupSettings: Update it --- Packages/MIES/MIES_AnalysisBrowser.ipf | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Packages/MIES/MIES_AnalysisBrowser.ipf b/Packages/MIES/MIES_AnalysisBrowser.ipf index dff3bef27c..55655d760c 100644 --- a/Packages/MIES/MIES_AnalysisBrowser.ipf +++ b/Packages/MIES/MIES_AnalysisBrowser.ipf @@ -2681,6 +2681,7 @@ Function AB_BrowserStartupSettings() HideTools/W=$panel/A SetWindow $panel, userData(panelVersion)="" + SetWindow $panel, userData(datafolder)="" SetCheckBoxState(panel, "checkbox_load_overwrite", CHECKBOX_UNSELECTED) @@ -2689,8 +2690,8 @@ Function AB_BrowserStartupSettings() SearchForInvalidControlProcs(panel) print "Do not forget to increase ANALYSISBROWSER_PANEL_VERSION." - ListBox list_experiment_contents, win=$panel, listWave=$"", selWave=$"" - ListBox listbox_AB_Folders, win=$panel, listWave=$"", selWave=$"" + ListBox list_experiment_contents, win=$panel, listWave=$"", selWave=$"", colorWave=$"" + ListBox listbox_AB_Folders, win=$panel, listWave=$"", selWave=$"", colorWave=$"" Execute/P/Z "DoWindow/R " + panel Execute/P/Q/Z "COMPILEPROCEDURES " From 46a52aca5edcfd2f1aeccb6b026a5ce71c6d11dd Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Thu, 7 Mar 2024 20:03:41 +0100 Subject: [PATCH 3/4] MIES_AnalysisBrowser.ipf: Rename AB_LoadType variable name We don't use underscores in variable names. --- Packages/MIES/MIES_AnalysisBrowser.ipf | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Packages/MIES/MIES_AnalysisBrowser.ipf b/Packages/MIES/MIES_AnalysisBrowser.ipf index 55655d760c..0782447edf 100644 --- a/Packages/MIES/MIES_AnalysisBrowser.ipf +++ b/Packages/MIES/MIES_AnalysisBrowser.ipf @@ -1536,7 +1536,7 @@ static Function AB_GUIRowIsStimsetsOnly(variable row) End /// @returns 0 if at least one sweep or stimset could be loaded, 1 otherwise -static Function AB_LoadFromExpandedRange(variable row, variable subSectionColumn, variable AB_LoadType, [variable overwrite, DFREF sweepBrowserDFR, WAVE/T dfCollect]) +static Function AB_LoadFromExpandedRange(variable row, variable subSectionColumn, variable loadType, [variable overwrite, DFREF sweepBrowserDFR, WAVE/T dfCollect]) variable j, endRow, mapIndex, sweep, oneValidLoad, index string device, discLocation, dataFolder, fileName, fileType @@ -1560,7 +1560,7 @@ static Function AB_LoadFromExpandedRange(variable row, variable subSectionColumn for(j = row; j < endRow; j += 1) if(AB_GUIRowIsStimsetsOnly(row)) - if(AB_LoadType != AB_LOAD_STIMSET) + if(loadType != AB_LOAD_STIMSET) return 1 endif device = "" @@ -1586,7 +1586,7 @@ static Function AB_LoadFromExpandedRange(variable row, variable subSectionColumn fileType = map[mapIndex][%FileType] fileName = map[mapIndex][%FileName] - switch(AB_LoadType) + switch(loadType) case AB_LOAD_STIMSET: if(AB_LoadStimsetFromFile(discLocation, dataFolder, fileType, device, sweep, overwrite = overwrite) == 1) continue @@ -1638,14 +1638,14 @@ static Function AB_GetRowWithNextTreeView(selWave, startRow, col) return numRows End -static Function AB_LoadFromFile(AB_LoadType, [sweepBrowserDFR]) - variable AB_LoadType +static Function AB_LoadFromFile(loadType, [sweepBrowserDFR]) + variable loadType DFREF sweepBrowserDFR variable mapIndex, sweep, numRows, i, row, overwrite, oneValidLoad, index string dataFolder, fileName, discLocation, fileType, device - if(AB_LoadType == AB_LOAD_SWEEP) + if(loadType == AB_LOAD_SWEEP) ASSERT(!ParamIsDefault(sweepBrowserDFR), "create sweepBrowser DataFolder with SB_OpenSweepBrowser() prior") ASSERT(IsGlobalDataFolder(sweepBrowserDFR), "sweepBrowser DataFolder does not exist") endif @@ -1666,23 +1666,23 @@ static Function AB_LoadFromFile(AB_LoadType, [sweepBrowserDFR]) row = indizes[i] // handle not expanded EXPERIMENT and DEVICE COLUMNS - switch(AB_LoadType) + switch(loadType) case AB_LOAD_STIMSET: - if(!AB_LoadFromExpandedRange(row, EXPERIMENT_TREEVIEW_COLUMN, AB_LoadType, overwrite = overwrite)) + if(!AB_LoadFromExpandedRange(row, EXPERIMENT_TREEVIEW_COLUMN, loadType, overwrite = overwrite)) oneValidLoad = 1 continue endif - if(!AB_LoadFromExpandedRange(row, DEVICE_TREEVIEW_COLUMN, AB_LoadType, overwrite = overwrite)) + if(!AB_LoadFromExpandedRange(row, DEVICE_TREEVIEW_COLUMN, loadType, overwrite = overwrite)) oneValidLoad = 1 continue endif break case AB_LOAD_SWEEP: - if(!AB_LoadFromExpandedRange(row, EXPERIMENT_TREEVIEW_COLUMN, AB_LoadType, sweepBrowserDFR = sweepBrowserDFR, overwrite = overwrite, dfCollect = dfCollect)) + if(!AB_LoadFromExpandedRange(row, EXPERIMENT_TREEVIEW_COLUMN, loadType, sweepBrowserDFR = sweepBrowserDFR, overwrite = overwrite, dfCollect = dfCollect)) oneValidLoad = 1 continue endif - if(!AB_LoadFromExpandedRange(row, DEVICE_TREEVIEW_COLUMN, AB_LoadType, sweepBrowserDFR = sweepBrowserDFR, overwrite = overwrite, dfCollect = dfCollect)) + if(!AB_LoadFromExpandedRange(row, DEVICE_TREEVIEW_COLUMN, loadType, sweepBrowserDFR = sweepBrowserDFR, overwrite = overwrite, dfCollect = dfCollect)) oneValidLoad = 1 continue endif @@ -1703,7 +1703,7 @@ static Function AB_LoadFromFile(AB_LoadType, [sweepBrowserDFR]) discLocation = map[mapIndex][%DiscLocation] fileType = map[mapIndex][%FileType] - switch(AB_LoadType) + switch(loadType) case AB_LOAD_STIMSET: if(AB_LoadStimsetFromFile(discLocation, dataFolder, fileType, device, sweep, overwrite = overwrite)) continue From 100c268c1e72e415c486d54828bf656ee8f69243 Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Thu, 7 Mar 2024 14:22:16 +0100 Subject: [PATCH 4/4] changes --- Packages/MIES/MIES_AnalysisBrowser.ipf | 83 ++++++++++++++++++++++---- 1 file changed, 70 insertions(+), 13 deletions(-) diff --git a/Packages/MIES/MIES_AnalysisBrowser.ipf b/Packages/MIES/MIES_AnalysisBrowser.ipf index 0782447edf..38226e13a6 100644 --- a/Packages/MIES/MIES_AnalysisBrowser.ipf +++ b/Packages/MIES/MIES_AnalysisBrowser.ipf @@ -11,12 +11,15 @@ /// /// Has no dependencies on any hardware related functions. -static Constant EXPERIMENT_TREEVIEW_COLUMN = 0 -static Constant DEVICE_TREEVIEW_COLUMN = 3 -static Constant AB_LOAD_SWEEP = 0 -static Constant AB_LOAD_STIMSET = 1 -static StrConstant AB_UDATA_WORKINGDF = "datafolder" -static StrConstant AB_WORKFOLDER_NAME = "workFolder" +static Constant EXPERIMENT_TREEVIEW_COLUMN = 0 +static Constant DEVICE_TREEVIEW_COLUMN = 3 + +static Constant AB_LOAD_SWEEP = 0 +static Constant AB_LOAD_STIMSET = 1 +static Constant AB_LOAD_TP_STORAGE = 2 + +static StrConstant AB_UDATA_WORKINGDF = "datafolder" +static StrConstant AB_WORKFOLDER_NAME = "workFolder" static Function AB_ResetListBoxWaves() @@ -365,13 +368,11 @@ static Function AB_LoadFile(discLocation) strswitch(map[%FileType]) case ANALYSISBROWSER_FILE_TYPE_IGOR: AB_LoadSweepsFromExperiment(map[%DiscLocation], device) - AB_LoadTPStorageFromIgor(map[%DiscLocation], map[%DataFolder], device) AB_LoadUserCommentFromFile(map[%DiscLocation], map[%DataFolder], device) break case ANALYSISBROWSER_FILE_TYPE_NWBv1: case ANALYSISBROWSER_FILE_TYPE_NWBv2: AB_LoadSweepsFromNWB(map[%DiscLocation], map[%DataFolder], device) - AB_LoadTPStorageFromNWB(map[%DiscLocation], map[%DataFolder], device) AB_LoadUserCommentAndHistoryFromNWB(map[%DiscLocation], map[%DataFolder], device) break default: @@ -796,6 +797,37 @@ static Function AB_StoreChannelsBySweep(groupID, nwbVersion, channelList, sweeps SetNumberInWaveNote(storage, NOTE_INDEX, numSweeps) End +static Function AB_LoadTPStorageFromFile(string discLocation, string dataFolder, string fileType, string device, [variable overwrite]) + + if(ParamIsDefault(overwrite)) + overwrite = 0 + else + overwrite = !!overwrite + endif + + DFREF targetDFR = GetAnalysisDeviceTestpulse(dataFolder, device) + + if(overwrite) + KillOrMoveToTrash(dfr = targetDFR) + else + if(!IsDataFolderEmpty(targetDFR)) + return 0 + endif + endif + + strswitch(fileType) + case ANALYSISBROWSER_FILE_TYPE_IGOR: + return AB_LoadTPStorageFromIgor(discLocation, dataFolder, device) + break + case ANALYSISBROWSER_FILE_TYPE_NWBv1: + case ANALYSISBROWSER_FILE_TYPE_NWBv2: + return AB_LoadTPStorageFromNWB(discLocation, dataFolder, device) + break + default: + ASSERT(0, "Invalid file type") + endswitch +End + static Function AB_LoadTPStorageFromIgor(expFilePath, expFolder, device) string expFilePath, expFolder, device @@ -821,7 +853,7 @@ static Function AB_LoadTPStorageFromIgor(expFilePath, expFolder, device) return numWavesLoaded End -Function AB_LoadTPStorageFromNWB(nwbFilePath, expFolder, device) +static Function AB_LoadTPStorageFromNWB(nwbFilePath, expFolder, device) string nwbFilePath, expFolder, device variable h5_fileID, testpulseGroup, numEntries, i @@ -1560,7 +1592,7 @@ static Function AB_LoadFromExpandedRange(variable row, variable subSectionColumn for(j = row; j < endRow; j += 1) if(AB_GUIRowIsStimsetsOnly(row)) - if(loadType != AB_LOAD_STIMSET) + if(loadType == AB_LOAD_SWEEP) return 1 endif device = "" @@ -1593,6 +1625,12 @@ static Function AB_LoadFromExpandedRange(variable row, variable subSectionColumn endif oneValidLoad = 1 break + case AB_LOAD_TP_STORAGE: + if(AB_LoadTPStorageFromFile(discLocation, dataFolder, fileType, device, overwrite = overwrite) == 1) + continue + endif + oneValidLoad = 1 + break case AB_LOAD_SWEEP: if(AB_LoadSweepFromFile(discLocation, dataFolder, fileType, device, sweep, overwrite = overwrite) == 1) continue @@ -1607,7 +1645,7 @@ static Function AB_LoadFromExpandedRange(variable row, variable subSectionColumn SB_AddToSweepBrowser(sweepBrowserDFR, fileName, dataFolder, device, sweep) break default: - break + ASSERT(0, "Unexpected loadType") endswitch endfor @@ -1668,6 +1706,7 @@ static Function AB_LoadFromFile(loadType, [sweepBrowserDFR]) // handle not expanded EXPERIMENT and DEVICE COLUMNS switch(loadType) case AB_LOAD_STIMSET: + case AB_LOAD_TP_STORAGE: if(!AB_LoadFromExpandedRange(row, EXPERIMENT_TREEVIEW_COLUMN, loadType, overwrite = overwrite)) oneValidLoad = 1 continue @@ -1688,7 +1727,7 @@ static Function AB_LoadFromFile(loadType, [sweepBrowserDFR]) endif break default: - break + ASSERT(0, "Invalid loadType") endswitch sweep = str2num(GetLastNonEmptyEntry(expBrowserList, "sweep", row)) @@ -1723,8 +1762,14 @@ static Function AB_LoadFromFile(loadType, [sweepBrowserDFR]) dfCollect[index] = dataFolder SetNumberInWaveNote(dfCollect, NOTE_INDEX, index + 1) break - default: + case AB_LOAD_TP_STORAGE: + if(AB_LoadTPStorageFromFile(discLocation, dataFolder, fileType, device, overwrite = overwrite)) + continue + endif + oneValidLoad = 1 break + default: + ASSERT(0, "Invalid loadType") endswitch endfor @@ -3569,3 +3614,15 @@ static Function AB_MemoryFreeMappedDF() AB_RemoveMapEntry(i) endfor End + +Function AB_ButtonProc_LoadTPStorage(STRUCT WMButtonAction &ba) : ButtonControl + + switch(ba.eventcode) + case 2: + AB_CheckPanelVersion(ba.win) + + AB_LoadFromFile(AB_LOAD_TP_STORAGE) + endswitch + + return 0 +End