-
Notifications
You must be signed in to change notification settings - Fork 1
/
CORDUROY_ANALYSIS_meta.ipf
executable file
·341 lines (254 loc) · 15.5 KB
/
CORDUROY_ANALYSIS_meta.ipf
1
#pragma rtGlobals=1 // Use modern global access method./////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// CORDUROY_ANALYSIS_meta// Contains the code for the GUI used for "meta"-analysis, i.e. anlysis of pre-analyzed waves//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Function CORD_DisplayMetaControlPanel()/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// String thisDF = GetDataFolder(1) DoWindow/F CORD_MetaAnalysisControlPanel if (V_Flag!=0) DoWindow/K CORD_MetaAnalysisControlPanel endif CORD_InitializeMetaPanel() Execute "CORD_MetaAnalysisControlPanel()" Execute "ModifyPanel cbRGB = (20000,20000,20000)" CORD_ListDataFolders_Util() SetDataFolder thisDFend///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Function CORD_InitializeMetaPanel()/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// String thisDF = GetDataFolder(1) if(DataFolderExists("root:Analysis:Panels:MetaAnalysisPanel")) KillDataFolder root:Analysis:Panels:MetaAnalysisPanel endif NewDataFolder/O root:MetaAnalysis NewDataFolder/O root:Analysis NewDataFolder/O root:Analysis:Panels NewDataFolder/O/S root:Analysis:Panels:MetaAnalysisPanel Variable/G cols=2,rows=2,marg=0.5, PositionNum=0 String/G MetaModuleList="", AnWaveList1="",AnWaveList2="", MetaLibList="NORMALIZE;BOXCAR;SPIKETIMES;SPIKEKIN;SPIKEISI;SPIKEWIN;CLUSTERS;PETH;PSTH" String/G CurrAnDF1 = "root:", CurrAnDF2 = "root:", CurrAnWave1="", CurrAnWave2="" String/G AnFunc1="None", AnFunc2="None" NewDataFolder/O/S root:Analysis:Modules:MetaModule String/G None MetaModuleList = StringList("*",";") SetDataFolder thisDFEnd//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// PANEL ACTION PROCEDURES/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Function CORD_MetaWaveSelect(cntrlName,popNum,popStr) : PopupMenuControl/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// String cntrlName Variable popNum // which item is currently selected (1-based) String popStr // contents of current popup item as string String thisDF = GetDataFolder(1) if(stringmatch(cntrlName,"*a")) CORD_MetaListAnl(popStr,cntrlName) elseif(stringmatch(cntrlName,"*b")) CORD_SetAnl(popStr,cntrlName) else CORD_SetFunc(popStr,cntrlName) endif SetDataFolder thisDFEnd///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Function CORD_MetaListAnl(popStr,cntrlName)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// String popStr, cntrlName String thisDF = GetDataFolder(1) string fullDFpath = "root:" if( !(stringmatch(popStr,"None")) ) fullDFpath = "root:"+popStr print fullDFpath endif SetDataFolder fullDFpath string CandidateWaves = WaveList("*roi*",";","") if(stringmatch(cntrlName,"*1*")) SVAR AnDF1 = root:Analysis:Panels:MetaAnalysisPanel:CurrAnDF1 AnDF1 = GetDataFolder(1) SVAR AnWaveList1 = root:Analysis:Panels:MetaAnalysisPanel:AnWaveList1 AnWaveList1 = CandidateWaves elseif(stringmatch(cntrlName,"*2*")) SVAR AnDF2 = root:Analysis:Panels:MetaAnalysisPanel:CurrAnDF2 AnDF2 = GetDataFolder(1) SVAR AnWaveList2 = root:Analysis:Panels:MetaAnalysisPanel:AnWaveList2 AnWaveList2 = CandidateWaves endif ControlUpdate/A/W=CORD_MetaAnalysisControlPanel SetDataFolder thisDFEnd///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Function CORD_SetAnl(popStr,cntrlName)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// String popStr, cntrlName if(stringmatch(cntrlName,"*1*")) SVAR AnWave1 = root:Analysis:Panels:MetaAnalysisPanel:CurrAnWave1 AnWave1 = popStr elseif(stringmatch(cntrlName,"*2*")) SVAR AnWave2 = root:Analysis:Panels:MetaAnalysisPanel:CurrAnWave2 AnWave2 = popStr endif End///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Function CORD_SetFunc(popStr,cntrlName)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// String popStr, cntrlName if(stringmatch(cntrlName,"*1*")) SVAR AnFunc1 = root:Analysis:Panels:MetaAnalysisPanel:AnFunc1 AnFunc1 = popStr elseif(stringmatch(cntrlName,"*2*")) SVAR AnFunc2 = root:Analysis:Panels:MetaAnalysisPanel:AnFunc2 AnFunc2 = popStr endifEnd//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// PANEL DESCRIPTION/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Function CORD_MetaRun(ctrlName) : ButtonControl/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// String ctrlName SVAR prefix1 = root:Analysis:Panels:MetaAnalysisPanel:AnFunc1 string An1Call SVAR prefix2 = root:Analysis:Panels:MetaAnalysisPanel:AnFunc2 string An2Call print prefix1 print prefix2 SVAR AnWave1 = root:Analysis:Panels:MetaAnalysisPanel:CurrAnWave1 SVAR AnWave2 = root:Analysis:Panels:MetaAnalysisPanel:CurrAnWave2 if( stringmatch(prefix1,"NORMALIZE") || stringmatch(prefix2,"NORMALIZE") || stringmatch(prefix1,"SPIKE*") || stringmatch(prefix2,"CLUSTERS") || stringmatch(prefix1,"CLUSTERS") || stringmatch(prefix2,"SPIKE*")) An1Call = "CORD_"+prefix1+"_execute(\""+AnWave1+"\",\""+AnWave2+"\")" Execute An1Call else if( stringmatch(prefix1,"None") && stringmatch(prefix2,"None") ) Abort "There are no analysis functions selected" elseif( stringmatch(prefix1,"None") || stringmatch(prefix2,"None") ) if( !(stringmatch(prefix1,"None")) ) An1Call = "CORD_"+prefix1+"_execute(\""+AnWave1+"\",\""+"1"+"\")" Execute An1Call elseif( !(stringmatch(prefix2,"None")) ) An2Call = "CORD_"+prefix2+"_execute(\""+AnWave2+"\",\""+"2"+"\")" Execute An2Call endif else An1Call = "CORD_"+prefix1+"_execute(\""+AnWave1+"\",\""+"1"+"\")" Execute An1Call An2Call = "CORD_"+prefix2+"_execute(\""+AnWave2+"\",\""+"2"+"\")" Execute An2Call endif endifEnd///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Function CORD_MetaView(ctrlName) : ButtonControl/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// String ctrlName CORD_MetaMakeList() NVAR cancelled = cancelled if(cancelled) Abort "No waves can be found to view" endif Abort "Not yet developed..." End///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Function CORD_MetaEdit(ctrlName) : ButtonControl/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// String ctrlName CORD_MetaMakeList() NVAR cancelled = cancelled if(cancelled) Abort "No waves can be found to edit" endif Abort "Not yet developed..."End///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Function CORD_MetaLay(ctrlName) : ButtonControl/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// String ctrlName Abort "Not yet developed..."End///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Function CORD_MetaAddSuffix(suffix)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// String suffix string suffix_list = StrVarOrDefault("root:MetaAnalysis:suffix_list", "" ) string suffix_match = "*"+suffix+"*" if(!stringmatch(suffix_list, suffix_match)) string/G root:MetaAnalysis:suffix_list = AddListItem(suffix, suffix_list) endifEnd///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Function CORD_MetaMakeList()/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// SVAR suffix_list = root:MetaAnalysis:suffix_list if(!SVAR_exists(suffix_list)) variable/G cancelled = 1 else variable/G cancelled = 0 endif variable numitems = ItemsInList(suffix_list),index=0 string CompleteList="", CurrentSuffix="",CurrentList="" for(index=0;index<numitems;index+=1) CurrentSuffix = "*"+StringFromList(index, suffix_list) CurrentList = WaveList(CurrentSuffix, ";", "" ) CompleteList = CompleteList + CurrentList + ";" endfor string/G root:MetaAnalysis:allwaves = CompleteListEnd//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// PANEL DESCRIPTION//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Window CORD_MetaAnalysisControlPanel() : Panel PauseUpdate; Silent 1 // building the window... variable dispX = str2num(StringFromList(3, StringByKey("SCREEN1", IgorInfo(0)),",")) variable dispY = str2num(StringFromList(4, StringByKey("SCREEN1", IgorInfo(0)),",")) NewPanel/W=(dispX-710,0,dispX-360,270)/K=1 as "Corduroy Analysis - Meta Analysis"// NewPanel/W=(630,0,980,270)/K=1 as "Corduroy Analysis - Meta Analysis" SetDrawLayer UserBack variable ypos=-5GroupBox META_Group1,pos={6,5+ypos},size={338,97},font="Verdana",fColor=(60000,20000,40000),fstyle=0,fsize=11,labelBack=(60000,20000,40000),title="Meta-analysis Control" PopupMenu META_popup1a,bodyWidth=120,font="Verdana",proc=CORD_MetaWaveSelect,pos={120,25+ypos},title="Exp1",value="None;"+root:Analysis:UtilityPanel:FileList, fsize=10 PopupMenu META_popup2a,bodyWidth=120,font="Verdana",proc=CORD_MetaWaveSelect,pos={276,25+ypos},title="Exp2",value="None;"+root:Analysis:UtilityPanel:FileList, fsize=10 PopupMenu META_popup1b,bodyWidth=120,font="Verdana",proc=CORD_MetaWaveSelect,pos={120,50+ypos},title="Anl1",value="None;"+root:Analysis:Panels:MetaAnalysisPanel:AnWaveList1, fsize=10 PopupMenu META_popup2b,bodyWidth=120,font="Verdana",proc=CORD_MetaWaveSelect,pos={276,50+ypos},title="Anl2",value="None;"+root:Analysis:Panels:MetaAnalysisPanel:AnWaveList2, fsize=10 PopupMenu META_popup1c,bodyWidth=120,font="Verdana",proc=CORD_MetaWaveSelect,pos={120,75+ypos},title="Func1",value="None;"+root:Analysis:Panels:MetaAnalysisPanel:MetaLibList, fsize=10 PopupMenu META_popup2c,bodyWidth=120,font="Verdana",proc=CORD_MetaWaveSelect,pos={276,75+ypos},title="Func2",value="None;"+root:Analysis:Panels:MetaAnalysisPanel:MetaLibList, fsize=10 PopupMenu META_popup3,bodyWidth=120,font="Verdana",proc=CORD_MetaModSelect,pos={140,110+ypos},title="Set Module",value="None;"+root:Analysis:Panels:MetaAnalysisPanel:MetaModuleList, fsize=10,fColor=(20000,60000,40000) Button META_Button1,pos={205,110+ypos},size={120,20},noproc, title="Save current...", font="Verdana", fsize=10////////////// TO BE COMPLETED /////////////////////GroupBox META_Group2,pos={6,135+ypos},size={338,97},font="Verdana",title="Layout Description", fColor=(20000,40000,60000),fstyle=0,fsize=11,labelBack=(20000,40000,60000) SetVariable LAY_ColSet1,pos={15,150},size={100,20},title="Columns",font="Verdana",frame=1 SetVariable LAY_ColSet1,limits={0,30,1},variable=root:Analysis:Panels:MetaAnalysisPanel:cols SetVariable LAY_RowSet1,pos={122,150},size={100,20},title="Rows",font="Verdana",frame=1 SetVariable LAY_RowSet1,limits={0,30,1},variable=root:Analysis:Panels:MetaAnalysisPanel:rows SetVariable LAY_MargSet1,pos={230,150},size={100,20},title="Margins",font="Verdana",frame=1 SetVariable LAY_MargSet1,limits={0,30,1},variable=root:Analysis:Panels:MetaAnalysisPanel:marg PopupMenu LAY_pop1,bodyWidth=150,font="Verdana",proc=CORD_LayGraph,pos={172,173},title="Graph Set",value="None;"+root:Analysis:Panels:MetaAnalysisPanel:MetaModuleList, fsize=10 SetVariable LAY_pos,pos={15,200},size={150,15},title="Position",font="Verdana", limits={0,Inf,0},value=root:Analysis:Panels:MetaAnalysisPanel:PositionNum,fsize=10 Button LAY_DefSet1,pos={235,173},size={100,20},noproc, title="Define Set...", font="Verdana", fsize=10 //The three basic commands for layouts are:// NewLayout [/B=(r,g,b) /C=color /K=k /P=orientation /W=(left,top,right,bottom)] [as titleStr ]// AppendLayoutObject [/D=fidelity /F=frame /R=(l,t,r,b ) /T=trans /W=winName ] objectType objectName// ModifyLayout [/W=winName /I/M/Z] [bgRGB=(r,g,b ), columns(obj)=c, fidelity(obj)=f, frame(obj)=f, height(obj)=h, left(obj)=l, mag=m, rows(obj)=r, top(obj)=t, trans(obj)=t, units=u, width(obj)=w]////////////// TO BE COMPLETED /////////////////////// Group of action buttons that act on the actions defined in the rest of the panel Button META_Button8,pos={7,240+ypos},size={80,20},proc=CORD_MetaRun, title="RUN", font="Verdana" Button META_Button9,pos={92,240+ypos},size={80,20},proc=CORD_MetaEdit, title="EDIT", font="Verdana", fstyle=2 Button META_Button10,pos={177,240+ypos},size={80,20},proc=CORD_MetaView, title="VIEW", font="Verdana", fstyle=2 Button META_Button11,pos={262,240+ypos},size={80,20},proc=CORD_MetaLay, title="LAYOUT", font="Verdana", fstyle=2EndMacro