Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use JSON XOP for finding LNB key #2159

Open
MichaelHuth opened this issue Jul 3, 2024 · 0 comments
Open

Use JSON XOP for finding LNB key #2159

MichaelHuth opened this issue Jul 3, 2024 · 0 comments

Comments

@MichaelHuth
Copy link
Collaborator

diff --git a/Packages/MIES/MIES_Constants.ipf b/Packages/MIES/MIES_Constants.ipf
index 84e9b698c..ba30be858 100644
--- a/Packages/MIES/MIES_Constants.ipf
+++ b/Packages/MIES/MIES_Constants.ipf
@@ -2313,3 +2313,5 @@ /// @anchor FFTWinFunctions
 Constant SUTTER_MAX_MAX_TP_PULSES = 10000

 Constant INVALID_SWEEP_NUMBER = -1
+
+StrConstant LNB_JSON_PREFIX = "/keyIndices"
diff --git a/Packages/MIES/MIES_ExperimentDocumentation.ipf b/Packages/MIES/MIES_ExperimentDocumentation.ipf
index 34d86af5e..1e555c5b0 100644
--- a/Packages/MIES/MIES_ExperimentDocumentation.ipf
+++ b/Packages/MIES/MIES_ExperimentDocumentation.ipf
@@ -493,6 +493,7 @@ static Function ED_WriteChangedValuesToNoteText(device, sweepNo)
 static Function [WAVE colIndizes, variable rowIndex] ED_FindIndizesAndRedimension(WAVE/T incomingKey, WAVE incomingValues, WAVE/T key, WAVE values, variable logbookType)
        variable numCols, numKeyRows, numKeyCols, i, j, numAdditions, idx
        variable lastValidIncomingKeyRow, descIndex, isUserEntry, headstageCont, headstageContDesc, isUnAssoc
+       variable jsonId
        string msg, searchStr

        numKeyRows              = DimSize(key, ROWS)
@@ -503,6 +504,7 @@ static Function [WAVE colIndizes, variable rowIndex] ED_FindIndizesAndRedimensio

        WAVE/T/ZZ desc

+       jsonId  = GetLNBJsonId(values)
        numCols = DimSize(incomingKey, COLS)
        for(i = 0; i < numCols; i += 1)
                searchStr = incomingKey[0][i]
@@ -522,6 +524,7 @@ static Function [WAVE colIndizes, variable rowIndex] ED_FindIndizesAndRedimensio
                key[0, lastValidIncomingKeyRow][idx] = incomingKey[p][i]
                indizes[i]                           = idx
                numAdditions                        += 1
+               JSON_AddVariable(jsonId, LNB_JSON_PREFIX + "/" + ReplaceString("/", searchStr, "_"), idx)

                isUserEntry = (strsearch(searchStr, LABNOTEBOOK_USER_PREFIX, 0) == 0)
diff --git a/Packages/MIES/MIES_MiesUtilities.ipf b/Packages/MIES/MIES_MiesUtilities.ipf
index 5c8ffa249..451c99abb 100644
--- a/Packages/MIES/MIES_MiesUtilities.ipf
+++ b/Packages/MIES/MIES_MiesUtilities.ipf
@@ -47,6 +47,8 @@ /// @brief This file holds utility functions which need to know about MIES inter

 static Constant ARCHIVE_SIZETHRESHOLD = 52428800

+static StrConstant LNB_JSONID_KEY = "jsonIdLNBKeys"
+
 Menu "GraphMarquee"
        "Horiz Expand (VisX)", /Q, HorizExpandWithVisX()
 End
@@ -1042,6 +1044,29 @@ threadsafe static Function [WAVE/Z wv, variable index] GetLastSettingChannelInte
        return [$"", NaN]
 End

+threadsafe Function GetLNBJsonId(WAVE values)
+
+       variable jsonId = GetNumberFromWaveNote(values, LNB_JSONID_KEY)
+       if(IsFinite(jsonId) && JSON_Exists(jsonId, ""))
+               return jsonId
+       endif
+
+       jsonId = JSON_New()
+       SetNumberInWaveNote(values, LNB_JSONID_KEY, jsonId)
+
+       JSON_AddTreeObject(jsonId, LNB_JSON_PREFIX)
+       Make/FREE/N=(DimSize(values, COLS)) indexHelper
+       MultiThread indexHelper = JSON_AddVariable(jsonId, LNB_JSON_PREFIX + "/" + ReplaceString("/", GetDimLabel(values, COLS, p), "_"), p)
+
+       return jsonId
+End
+
+threadsafe Function GetLNBSettingsColumn(WAVE values, string key)
+
+       variable index = JSON_GetVariable(GetLNBJsonId(values), LNB_JSON_PREFIX + "/" + ReplaceString("/", key, "_"), ignoreErr = 1)
+       return IsNaN(index) ? -2 : index
+End
+
 threadsafe Function GetLNBSettingsColumn(WAVE values, string key)

        string cacheKey, sortedkeyWaveName

then replace in GetLastSetting the line with
settingCol = FindDimLabel(values, COLS, setting) with a call to GetLNBSettingsColumn

requires a thread aware JSON XOP

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant