diff multithreshold 1.46/multiThreshold.m @ 38:c2204b18f4a2 tip

End nov big change
author Ray Meddis <rmeddis@essex.ac.uk>
date Mon, 28 Nov 2011 13:34:28 +0000
parents 3ea506487b3b
children
line wrap: on
line diff
--- a/multithreshold 1.46/multiThreshold.m	Thu Oct 06 15:43:20 2011 +0100
+++ b/multithreshold 1.46/multiThreshold.m	Mon Nov 28 13:34:28 2011 +0000
@@ -46,7 +46,7 @@
 
 % Edit the above text to modify the response to help multiThreshold
 
-% Last Modified by GUIDE v2.5 20-Sep-2011 11:47:22
+% Last Modified by GUIDE v2.5 25-Oct-2011 07:51:14
 
 % Begin initialization code - DO NOT EDIT
 gui_Singleton = 1;
@@ -93,7 +93,7 @@
 % Then wait for user action
 global stimulusParameters experiment betweenRuns
 global targetTypes maskerTypes backgroundTypes
-global variableNames paradigmNames threshEstNames  cueNames
+global variableNames paradigmNames threshEstNames  cueNames betweenRunsVariables
 
 % Specify order of fields in main structures
 % identify as empty values or empty strings only
@@ -106,13 +106,14 @@
 variableNames={'stimulusDelay','maskerDuration','maskerLevel',...
     'maskerRelativeFrequency', 'targetFrequency', 'gapDuration',...
     'targetDuration','targetLevel','rampDuration',...
-    'cueTestDifference', 'WRVstartValues', 'WRVsteps', 'WRVlimits'};
+    'cueTestDifference', 'WRVstartValues', 'WRVsteps', 'WRVlimits',...
+    'OHIOnTones'};
 
 % Variable variables
 %  (names of variable that can changed between runs)
 betweenRunsVariables={'stimulusDelay','maskerDuration','maskerLevel',...
     'maskerRelativeFrequency','targetFrequency', 'gapDuration',...
-    'targetDuration','targetLevel','numOHIOtones'};
+    'targetDuration','targetLevel','OHIOnTones'};
 % populate the 'between runs variable' menus
 set(handles.popupmenuVaryParameter1,'string',betweenRunsVariables)
 set(handles.popupmenuVaryParameter2,'string',betweenRunsVariables)
@@ -143,6 +144,8 @@
 % Establish available paradigms by scanning paradigms folder
 paradigmNames= what('paradigms');
 paradigmNames= paradigmNames.m; % select m files only
+idx=strmatch('paradigm_', paradigmNames); % with 'paradigm_'
+paradigmNames=paradigmNames(idx);
 for i=1:length(paradigmNames)   % strip off file extension
     paradigmNames{i}=paradigmNames{i}(10:end-2); 
 end
@@ -183,7 +186,7 @@
     '2I2AFC++', '2I2AFC+++'};
 set(handles.popupmenuThreshEst, 'string', threshEstNames);
 experiment.stopCriteria2IFC=[75 3 5];
-experiment.stopCriteriaSI=[20];
+experiment.stopCriteriaSI=20;
 
 % ** editBoxes that are only set by hand
 % music (relative) level, 'tada!' (manual setting only)
@@ -191,7 +194,7 @@
 set(handles.editMusicLevel,'string','0')
 
 % Catch Trial Rate
-set(handles.editCatchTrialRate,'string','0.2   0.1  2 ');
+set(handles.editCatchTrialRate,'string','0.2   0.1  ');
 
 % calibration
 stimulusParameters.restoreCalibration=7;
@@ -205,6 +208,7 @@
 % saveData
 experiment.saveData=1;
 set(handles.editSaveData,'string',num2str(experiment.saveData))
+set(handles.pushbuttonSave,'visible','off')
 
 % printTracks
 experiment.printTracks=0;
@@ -336,6 +340,25 @@
 set(handles.editBackgroundLevel,'string', num2str...
     (stimulusParameters.backgroundLevel))
 
+% values related to assessment method
+switch experiment.threshEstMethod
+    case {'MaxLikelihood','oneIntervalUpDown'}
+        set(handles.editstopCriteriaBox, 'string', ...
+            num2str(experiment.singleIntervalMaxTrials))
+    case {'2I2AFC++','2I2AFC+++'}
+        set(handles.editstopCriteriaBox, 'string', ...
+            num2str(experiment.stopCriteria2IFC))
+    otherwise
+        error([' aResetPopupMenus:  threshEstMethod not recognised -> ' ...
+            experiment.threshEstMethod])
+end
+% assessment method popup may be changed between paradigms
+%  e.g. SRT must be one interval
+x=get(handles.popupmenuThreshEst, 'string');
+set(handles.popupmenuThreshEst, 'value', ...
+    strmatch(experiment.threshEstMethod, x));
+
+
 % on RUN the sample rate will be picked from the text box
 % However, MAP overrules the sample rate and sets its own
 aSetSampleRate(stimulusParameters.subjectSampleRate, handles);
@@ -352,7 +375,7 @@
 % ------------------------------------------------------ aResetPopupMenus
 function aResetPopupMenus(handles)
 global   stimulusParameters betweenRuns variableNames
-global targetTypes maskerTypes experiment backgroundTypes
+global targetTypes maskerTypes experiment backgroundTypes betweenRunsVariables
 
 switch experiment.threshEstMethod
     case {'MaxLikelihood','oneIntervalUpDown'}
@@ -375,11 +398,11 @@
 
 %set variables popupmenus as specified in betweenRuns
 variableParameter1ID=0; variableParameter2ID=0;
-for i=1:length(variableNames)
-    if strcmp(variableNames{i},betweenRuns.variableName1)
+for i=1:length(betweenRunsVariables) %  variableNames
+    if strcmp(betweenRunsVariables{i},betweenRuns.variableName1)
         variableParameter1ID=i;
     end
-    if strcmp(variableNames{i},betweenRuns.variableName2)
+    if strcmp(betweenRunsVariables{i},betweenRuns.variableName2)
         variableParameter2ID=i;
     end
 end
@@ -416,6 +439,15 @@
 set(handles.edittargetDuration, 'visible', 'on')
 set(handles.edittargetFrequency, 'visible', 'on')
 
+switch experiment.paradigm(1:3)
+    case 'OHI'
+        set(handles.editOHIOnTones, 'visible', 'on')
+        set(handles.textOHIOnTones, 'visible', 'on')
+    otherwise
+        set(handles.editOHIOnTones, 'visible', 'off')
+        set(handles.textOHIOnTones, 'visible', 'off')
+end
+
 switch experiment.ear
     case {'statsModelLogistic', 'statsModelRareEvent'}
         set(handles.editStatsModel, 'visible', 'on')
@@ -688,6 +720,8 @@
 global experiment expGUIhandles stimulusParameters
 tic
 expGUIhandles=handles;
+set(handles.pushbuttonSave,'visible','off')
+
 set(handles.pushbuttonStop, 'backgroundColor', [.941 .941 .941])
 % set(handles.editparamChanges,'visible','off')
 
@@ -718,9 +752,15 @@
 
 % --- Executes on button press in pushbuttonSingleShot.
 function pushbuttonSingleShot_Callback(hObject, eventdata, handles)
-global experiment
+global experiment paradigmNames
 experiment.singleShot=1;
 
+% startup paradigm, 'training' (could be anywhere on the list)
+startupParadigm='training';
+idx= find(strcmp(paradigmNames,startupParadigm));
+set(handles.popupmenuParadigm,'value', idx)
+aParadigmSelection(handles);
+
 % special test for spontaneous activity
 x=get(handles.editWRVstartValues, 'string');
 y=get(handles.edittargetDuration, 'string');
@@ -740,7 +780,7 @@
 % ------------------------------------------aReadAndCheckParameterBoxes
 function errorMsg=aReadAndCheckParameterBoxes(handles)
 global experiment  stimulusParameters betweenRuns  statsModel
-global variableNames  LevittControl paramChanges
+global variableNames  LevittControl paramChanges betweenRunsVariables
 % When the program sets the parameters all should be well
 % But when the user changes them...
 
@@ -801,7 +841,7 @@
 end
 
 chosenOption=get(handles.popupmenuVaryParameter1,'value');
-betweenRuns.variableName1=variableNames{chosenOption};
+betweenRuns.variableName1=betweenRunsVariables{chosenOption};
 eval(['betweenRuns.variableList1 = stimulusParameters.' ...
     betweenRuns.variableName1 ';']);
 
@@ -891,6 +931,9 @@
         'catch trial base rates must be less than catch trial start rate';
     return,
 end
+% force the decay rate for catchTrialRate
+%  to avoid having to explain it to the user
+stimulusParameters.catchTrialRates(3)=2;
 
 % sample rate
 % The sample rate is set in the paradigm file.
@@ -1040,7 +1083,12 @@
 % identify model parameter changes if any
 paramChanges=get(handles.editparamChanges,'string');
 if ~strcmp(paramChanges, ';'), paramChanges=[paramChanges ';']; end
+try
 eval(paramChanges);
+catch
+    error('Problems with suggested parameter changes')
+end
+
 
 % -------------------------------------------- aSetSampleRate
 function aSetSampleRate(sampleRate, handles)
@@ -1099,7 +1147,7 @@
         stimulusParameters.includeCue=0;						 % no cue
         set(handles.popupmenuCueNoCue,'value', 2)
 
-        set(handles.editCatchTrialRate,'string','0 0  2 ');%no catch trials
+        set(handles.editCatchTrialRate,'string','0 0');%no catch trials
         set(handles.editName,'string', 'Normal')			% force name
         experiment.name=get(handles.editName,'string');	% read name back
         set(handles.editcalibrationdB,'string','0')
@@ -1110,6 +1158,9 @@
         set(handles.editSaveData,'string', '0')
         set(handles.editSubjectFont,'string', '10');
         experiment.MacGThreshold=0; % num MacG spikes to exceed threshold
+    otherwise
+        set(handles.editCatchTrialRate,'string','0.2 0.1');%no catch trials
+
 end
 aResetPopupMenus(handles)
 
@@ -1119,19 +1170,22 @@
 
 % ------------------------------------------------------------- cueSetUp
 function cueSetUp(handles)
-global stimulusParameters
+global stimulusParameters experiment
 
-chosenOption=get(handles.popupmenuCueNoCue,'value');
-if chosenOption==1
-    stimulusParameters.includeCue=1;
-    set(handles.editcueTestDifference,'visible', 'on')
-    set(handles.textcueTestDifference,'visible', 'on')
-    stimulusParameters.subjectText=stimulusParameters.instructions{2};
-else
-    stimulusParameters.includeCue=0;
-    set(handles.editcueTestDifference,'visible', 'off')
-    set(handles.textcueTestDifference,'visible', 'off')
-    stimulusParameters.subjectText= stimulusParameters.instructions{1};
+switch experiment.threshEstMethod
+    case {'oneIntervalUpDown', 'MaxLikelihood'}
+        chosenOption=get(handles.popupmenuCueNoCue,'value');
+        if chosenOption==1
+            stimulusParameters.includeCue=1;
+            set(handles.editcueTestDifference,'visible', 'on')
+            set(handles.textcueTestDifference,'visible', 'on')
+            stimulusParameters.subjectText=stimulusParameters.instructions{2};
+        else
+            stimulusParameters.includeCue=0;
+            set(handles.editcueTestDifference,'visible', 'off')
+            set(handles.textcueTestDifference,'visible', 'off')
+            stimulusParameters.subjectText= stimulusParameters.instructions{1};
+        end
 end
 
 % -------------------------------------------- popupmenuThreshEst_Callback
@@ -1761,3 +1815,34 @@
 end
 
 
+
+
+function pushbuttonSave_Callback(hObject, eventdata, handles)
+global experiment
+
+subjectName=experiment.name;
+if ~isdir(['savedData' filesep subjectName ])
+    mkdir(['savedData' filesep subjectName ])
+end
+
+% date and time and replace ':' with '_'
+date=datestr(now);idx=findstr(':',date);date(idx)='_';
+fileName=[subjectName ' ' date '.mat'];
+movefile(['savedData' filesep 'mostRecentResults.mat'], ...
+    ['savedData' filesep subjectName filesep fileName])
+set(handles.pushbuttonSave,'visible','off')
+
+
+
+function editOHIOnTones_Callback(hObject, eventdata, handles)
+
+
+function editOHIOnTones_CreateFcn(hObject, eventdata, handles)
+
+% Hint: edit controls usually have a white background on Windows.
+%       See ISPC and COMPUTER.
+if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
+    set(hObject,'BackgroundColor','white');
+end
+
+