Skip to content

Commit

Permalink
Merge pull request #2041 from AllenInstitute/feature/2041-create_epoc…
Browse files Browse the repository at this point in the history
…hs_on_data_load

Create epochs on-the-fly when loading data if data has no previous epoch information
  • Loading branch information
t-b authored Apr 17, 2024
2 parents 2cb2f59 + c45f7a6 commit bde7282
Show file tree
Hide file tree
Showing 18 changed files with 696 additions and 125 deletions.
13 changes: 13 additions & 0 deletions Packages/MIES/MIES_AnalysisBrowser.ipf
Original file line number Diff line number Diff line change
Expand Up @@ -2754,6 +2754,19 @@ Function AB_ButtonProc_LoadSweeps(ba) : ButtonControl
return 0
End

/// @brief Button "Load Both"
Function AB_ButtonProc_LoadBoth(ba) : ButtonControl
STRUCT WMButtonAction &ba

switch(ba.eventcode)
case 2:
PGC_SetAndActivateControl(ba.win, "button_load_stimsets")
PGC_SetAndActivateControl(ba.win, "button_load_sweeps")
endswitch

return 0
End

/// @brief Button "Load Stimsets"
Function AB_ButtonProc_LoadStimsets(ba) : ButtonControl
STRUCT WMButtonAction &ba
Expand Down
15 changes: 12 additions & 3 deletions Packages/MIES/MIES_AnalysisBrowser_Macro.ipf
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

Window AnalysisBrowser() : Panel
PauseUpdate; Silent 1 // building window...
NewPanel/K=1/W=(993, 257, 2133, 1021)
NewPanel/K=1/W=(709, 94, 1849, 858) as "AnalysisBrowser"
SetDrawLayer UserBack
DrawLine 5, 305, 105, 305
DrawLine 5, 242, 105, 242
Expand Down Expand Up @@ -79,6 +79,7 @@ Window AnalysisBrowser() : Panel
ListBox listbox_AB_Folders, userdata(ResizeControlsInfo)+=A"zzzzzzzzzzzz!!#u:Du]k<zzzzzzzzzzz"
ListBox listbox_AB_Folders, userdata(ResizeControlsInfo)+=A"zzz!!#u:Du]k<zzzzzzzzzzzzzz!!!"
ListBox listbox_AB_Folders, labelBack=(65535, 65535, 65535)
ListBox listbox_AB_Folders, colorWave=root:MIES:Analysis:AnaBrowserFolderColors
ListBox listbox_AB_Folders, mode=4
Button button_AB_AddFolder, pos={7.00, 5.00}, size={100.00, 25.00}, proc=AB_ButtonProc_AddFolder
Button button_AB_AddFolder, title="Add folder"
Expand All @@ -92,8 +93,8 @@ Window AnalysisBrowser() : Panel
Button button_AB_Remove, userdata(ResizeControlsInfo)=A"!!,@C!!#?)!!#@,!!#=+z!!#](Aon\"Qzzzzzzzzzzzzzz!!#](Aon\"Qzz"
Button button_AB_Remove, userdata(ResizeControlsInfo)+=A"zzzzzzzzzzzz!!#u:Du]k<zzzzzzzzzzz"
Button button_AB_Remove, userdata(ResizeControlsInfo)+=A"zzz!!#u:Du]k<zzzzzzzzzzzzzz!!!"
Button button_AB_refresh, pos={7.00, 88.00}, size={100.00, 25.00}, title="Refresh", proc=AB_ButtonProc_Refresh
Button button_AB_refresh, help={"Refresh stimset list"}
Button button_AB_refresh, pos={7.00, 88.00}, size={100.00, 25.00}, proc=AB_ButtonProc_Refresh
Button button_AB_refresh, title="Refresh", help={"Refresh stimset list"}
Button button_AB_refresh, userdata(ResizeControlsInfo)=A"!!,@C!!#?i!!#@,!!#=+z!!#](Aon\"Qzzzzzzzzzzzzzz!!#](Aon\"Qzz"
Button button_AB_refresh, userdata(ResizeControlsInfo)+=A"zzzzzzzzzzzz!!#u:Du]k<zzzzzzzzzzz"
Button button_AB_refresh, userdata(ResizeControlsInfo)+=A"zzz!!#u:Du]k<zzzzzzzzzzzzzz!!!"
Expand All @@ -108,9 +109,16 @@ Window AnalysisBrowser() : Panel
Button button_AB_AddFiles, userdata(ResizeControlsInfo)=A"!!,@C!!#=g!!#@,!!#=+z!!#](Aon\"Qzzzzzzzzzzzzzz!!#](Aon\"Qzz"
Button button_AB_AddFiles, userdata(ResizeControlsInfo)+=A"zzzzzzzzzzzz!!#u:Du]k<zzzzzzzzzzz"
Button button_AB_AddFiles, userdata(ResizeControlsInfo)+=A"zzz!!#u:Du]k<zzzzzzzzzzzzzz!!!"
Button button_load_sweepsAndStimsets, pos={6.00, 391.00}, size={100.00, 25.00}, proc=AB_ButtonProc_LoadBoth
Button button_load_sweepsAndStimsets, title="Load Both"
Button button_load_sweepsAndStimsets, help={"Open a sweep browser panel from the selected sweeps. In case an experiment or device is selected, all sweeps and stimsets are loaded from them."}
Button button_load_sweepsAndStimsets, userdata(ResizeControlsInfo)=A"!!,@#!!#C(J,hpW!!#=+z!!#](Aon\"Qzzzzzzzzzzzzzz!!#](Aon\"Qzz"
Button button_load_sweepsAndStimsets, userdata(ResizeControlsInfo)+=A"zzzzzzzzzzzz!!#u:Du]k<zzzzzzzzzzz"
Button button_load_sweepsAndStimsets, userdata(ResizeControlsInfo)+=A"zzz!!#u:Du]k<zzzzzzzzzzzzzz!!!"
DefineGuide splitGuide={FT, 10}, UGVL={FL, 15}
SetWindow kwTopWin, hook(windowCoordinateSaving)=StoreWindowCoordinatesHook
SetWindow kwTopWin, hook(ResizeControls)=ResizeControlsSafe
SetWindow kwTopWin, hook(cleanup)=AB_WindowHook
SetWindow kwTopWin, userdata(ResizeControlsInfo)=A"!!*'\"z!!#EIJ,hu%zzzzzzzzzzzzzzzzzzzzz"
SetWindow kwTopWin, userdata(ResizeControlsInfo)+=A"zzzzzzzzzzzzzzzzzzzzzzzzz"
SetWindow kwTopWin, userdata(ResizeControlsInfo)+=A"zzzzzzzzzzzzzzzzzzz!!!"
Expand All @@ -120,5 +128,6 @@ Window AnalysisBrowser() : Panel
SetWindow kwTopWin, userdata(ResizeControlsGuides)="splitGuide;UGVL;"
SetWindow kwTopWin, userdata(ResizeControlsInfosplitGuide)="NAME:splitGuide;WIN:AnalysisBrowser;TYPE:User;HORIZONTAL:1;POSITION:10.00;GUIDE1:FT;GUIDE2:;RELPOSITION:10;"
SetWindow kwTopWin, userdata(ResizeControlsInfoUGVL)="NAME:UGVL;WIN:AnalysisBrowser;TYPE:User;HORIZONTAL:0;POSITION:15.00;GUIDE1:FL;GUIDE2:;RELPOSITION:15;"
SetWindow kwTopWin, userdata(datafolder)="workFolder"
Execute/Q/Z "SetWindow kwTopWin sizeLimit={855,573,inf,inf}" // sizeLimit requires Igor 7 or later
EndMacro
32 changes: 31 additions & 1 deletion Packages/MIES/MIES_BrowserSettingsPanel.ipf
Original file line number Diff line number Diff line change
Expand Up @@ -1671,8 +1671,9 @@ Function BSP_AddTracesForEpochs(string win)
WAVE/Z/T textualValues = BSP_GetLogbookWave(win, LBT_LABNOTEBOOK, LBN_TEXTUAL_VALUES, sweepNumber = sweepNumber)
ASSERT(WaveExists(textualValues), "Textual LabNotebook not found.")

DFREF sweepDFR = BSP_GetSweepDF(win, sweepNumber)
// present since a2172f03 (Added generations of epoch information wave, 2019-05-22)
WAVE/T/Z epochsFromLBN = EP_FetchEpochs(numericalValues, textualValues, sweepNumber, channelNumber, channelType)
WAVE/T/Z epochsFromLBN = EP_FetchEpochs(numericalValues, textualValues, sweepNumber, sweepDFR, channelNumber, channelType)
if(!WaveExists(epochsFromLBN))
continue
endif
Expand Down Expand Up @@ -2014,3 +2015,32 @@ static Function BSP_MemoryFreeMappedDF(string win)

AB_FreeWorkingDFs(dfList, index)
End

/// @brief Gets sweep browser data folder from sweep- or data browser window name and sweep number
///
/// @param[in] win sweep- or data browser window
/// @param[in] sweepNo sweep number
///
/// @returns sweep data folder reference, null reference if requirements not met
Function/DF BSP_GetSweepDF(string win, variable sweepNo)

variable isSweepBrowser
string device

isSweepBrowser = BSP_IsSweepBrowser(win)
if(isSweepBrowser)
DFREF sweepBrowserDFR = SB_GetSweepBrowserFolder(win)
WAVE/T sweepMap = GetSweepBrowserMap(sweepBrowserDFR)
DFREF deviceDFR = SB_GetSweepDataFolder(sweepMap, sweepNo = sweepNo)
else
if(!BSP_HasBoundDevice(win))
return $""
endif
device = BSP_GetDevice(win)
DFREF deviceDFR = GetDeviceDataPath(device)
endif

DFREF sweepDFR = GetSingleSweepFolder(deviceDFR, sweepNo)

return sweepDFR
End
25 changes: 25 additions & 0 deletions Packages/MIES/MIES_Cache.ipf
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,31 @@
/// @anchor CacheKeyGenerators
/// @{

/// @brief Cache key generator for recreated epochs wave
Function/S CA_KeyRecreatedEpochs(WAVE numericalValues, WAVE/T textualValues, DFREF sweepDFR, variable sweepNo)

variable crc

// the calculation assumes that recreated epochs are based on an old LNB
// thats content is treated as const (except mod time, as this check is fast)

ASSERT_TS(!IsFreeWave(numericalValues), "Numerical LNB wave must be global")
ASSERT_TS(!IsFreeWave(textualValues), "Textual LNB wave must be global")
ASSERT_TS(!IsFreeDatafolder(sweepDFR), "sweepDFR must not be free")

crc = StringCRC(0, GetWavesDataFolder(numericalValues, 2))
crc = StringCRC(crc, num2istr(WaveModCountWrapper(numericalValues)))

crc = StringCRC(crc, GetWavesDataFolder(textualValues, 2))
crc = StringCRC(crc, num2istr(WaveModCountWrapper(textualValues)))

crc = StringCRC(crc, GetDataFolder(1, sweepDFR))
crc = StringCRC(crc, num2istr(sweepNo))
crc = StringCRC(crc, num2istr(SWEEP_EPOCH_VERSION))

return num2istr(crc) + "Version 1"
End

/// @brief Cache key generator for oodDAQ offset waves
Function/S CA_DistDAQCreateCacheKey(params)
STRUCT OOdDAQParams &params
Expand Down
7 changes: 5 additions & 2 deletions Packages/MIES/MIES_Constants.ipf
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ Constant DAQ_CONFIG_WAVE_VERSION = 3
Constant DA_EPHYS_PANEL_VERSION = 64
Constant DATA_SWEEP_BROWSER_PANEL_VERSION = 50
Constant WAVEBUILDER_PANEL_VERSION = 14
Constant ANALYSISBROWSER_PANEL_VERSION = 3
Constant ANALYSISBROWSER_PANEL_VERSION = 4

/// Version of the stimset wave note
Constant STIMSET_NOTE_VERSION = 10
Constant STIMSET_NOTE_VERSION = 11

/// Version of the epoch information for DA+TTL data
Constant SWEEP_EPOCH_VERSION = 9
Expand Down Expand Up @@ -984,6 +984,9 @@ StrConstant PULSE_END_INDICES_KEY = "Pulse Train Pulse End Indices"
StrConstant INFLECTION_POINTS_INDEX_KEY = "Inflection Points Indices"
StrConstant EPOCH_LENGTH_INDEX_KEY = "Epoch Length Indices"
StrConstant STIMSET_SIZE_KEY = "Stimset Size"
StrConstant STIMSET_ERROR_KEY = "Wavebuilder Error"

Constant WAVEBUILDER_STATUS_ERROR = 1

/// DA_Ephys controls which should be disabled during DAQ
StrConstant CONTROLS_DISABLE_DURING_DAQ = "Check_DataAcqHS_All;Radio_ClampMode_AllIClamp;Radio_ClampMode_AllVClamp;Radio_ClampMode_AllIZero;SetVar_Sweep;Check_DataAcq_Indexing;check_DataAcq_IndexRandom;Check_DataAcq1_IndexingLocked;check_DataAcq_RepAcqRandom;Check_DataAcq1_RepeatAcq;Check_Settings_SkipAnalysFuncs;check_Settings_MD"
Expand Down
Loading

0 comments on commit bde7282

Please sign in to comment.