
Issues creating dependent waves

masheroz
On a button press, I want to load the files, and then make a plot wave which is dependent on the data I've just read in. That way, I can use the plot wave to do other things with in other places.
I made a test function to try out my logic, but it works, and I can't see how it is functionally different to what is below.
function doit() NVAR index =root:index //the global variable I'm using in the dependency already exists make/O w ={{1,2,3,4,5},{10,20,30,40,50}} //I'm reading my data into a 2D wave make/O/N=(dimsize(w,0)) dw //I'm creating my dependent wave from the size of my source wave SetFormula dw , "w[p][index]" //I'm setting the dependency in the same manner end // a successful implementation
Now for my real code:
function loadFilesButtonProc(ctrlName) : ButtonControl String ctrlName //parameters to help me load files, track sizes, and make the dependency. Already exist SVAR ext =root:Packages:AI:LoadPanelFolder:extension SVAR pat =root:Packages:AI:LoadPanelFolder:pattern NVAR endSeqno =root:Packages:AI:LoadPanelFolder:endSeqno NVAR endCh =root:Packages:AI:LoadPanelFolder:endCh NVAR seqnoChooser =root:Packages:AI:LoadPanelFolder:seqnoChooser //removes a plot so I can kill its wave RemoveImage /W=LoadPanel#LoadPanelGraphs#surfPlot /Z surf_y //creates surf_x, sur_y, and surf_e. 2814 rows, 29 columns (for the debug data) // surf_x,y,e may already exist before this line, but get killed in the function before being remade // uses "loadwave" to read the text data into igor loadwaves("","",extension=ext, pattern=pat) //gets the size for future updates endSeqno = dimsize(surf_y,1)-1 endCh = dimsize(surf_y,0)-1 //This is my issue: These dependencies are broken, but I can't figure out why. // I've tried making simpler instances, but they work! // I've tried putting some "DoUpdates" in there, but they don't seem to do anything make/O/N=(dimsize(surf_y,0)), plot_x, plot_y, plot_e SetFormula plot_x , "surf_x[p][seqnoChooser]" SetFormula plot_y , "surf_y[p][seqnoChooser]" SetFormula plot_e , "surf_e[p][seqnoChooser]" //now plot it SetActiveSubwindow LoadPanel#LoadPanelGraphs#surfPlot AppendImage surf_y Label left "Seqno" Label bottom "Channel number" ModifyGraph mirror=2 SetActiveSubwindow LoadPanel end
SetFormula plot_x , "surf_x[p][seqnoChooser]"
which is a local alias. Try to replace it with the absolute variable name
HJ
September 18, 2015 at 04:08 am - Permalink
I also used a local variable in my short example, but that one was in root, so maybe that was the difference.
Thanks
September 20, 2015 at 05:05 pm - Permalink
should not have worked (although the variable is in root).
SetFormula
is working on a global scope. It is not aware that it has been called from a function.HJ
September 21, 2015 at 02:04 am - Permalink