-
Notifications
You must be signed in to change notification settings - Fork 1
/
altruism_pain.m
87 lines (69 loc) · 2.34 KB
/
altruism_pain.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
function s = altruism_pain()
%% this code
% deals with the fMRI exp. of altruism lowers pain
% created by whx and yuermai. And yuermai instructs the process.
% with the tremendous help of yuqinlin , keqin
% and Dr. chen lihan
% as well as the wonderful book
% by Dr. feng chenzhi.
% Jakob Thomassen (and huangyao) : control the output of analogue pulse
% from bits sharp with matlab
% much still needs to be done to make sure it will work in fomral fMRI exp.
% keep fighting
% 150315
clear all;
global leftKey rightKey escapeKey iCounter Events time_init;
iCounter = 1;
Events = NaN(2, 5);
subinfo = getSubInfo;
seq = genSequence;
seqChoice = genseq_choice; % for predicted altruism
a = item_liangbiao;
design = [num2cell(seq(:, [1 2])) a.all(seq(:,[3 4])) num2cell(seq(:, 5))];
designChoice = [a.all(seqChoice(:, [1 2])) num2cell(seqChoice(:, 3))];
disp(design);
disp(designChoice);
%keyboard;
try
if exist('./data', 'dir') ~= 7
mkdir('data');
end
AssertOpenGL; % Check if PTB-3 is properly installed on the system
KbName('UnifyKeyNames');
leftKey=KbName('3#');
rightKey=KbName('4$');
escapeKey=KbName('escape');
%Screen('Preference', 'SkipSyncTests', 1); % drop for formal exp.
screens=Screen('Screens');
screenNumber=max(screens);
% [wptr, wrect] = Screen('OpenWindow', screenNumber,0, [300,50, 1300, 600]);% FOR debug
[wptr, wrect] = Screen('OpenWindow', screenNumber,0); % for formal exp.
[xcenter,ycenter] = RectCenter(wrect);
HideCursor;
Screen(wptr,'TextStyle',0);
Screen('Preference', 'TextRenderer', 1);
Screen('Preference', 'TextAntiAliasing', 1);
Screen('TextFont', wptr, 'Microsoft Yahei'); % or `Microsoft Simsun`?
time_init = GetSecs; % record from this very moment.
trigger_mri(wptr, getTime('DummyScan')); % send s to trigger and dummy scan for 10s
initializeSeq(wptr, 28, xcenter, ycenter, wrect, seq, seqChoice);
sayGoodbye(wptr, 255);
filename = [subinfo{1} '_' datestr(now, 30)];
save(['./data/' filename],'Events');
save(['./data/' filename '_full']);
save all;
s = load('all');
sca;
ListenChar(0);
ShowCursor;
catch
filename = [subinfo{1} '_' datestr(now, 30)];
save(['./data/' filename '_buggy']);
save all;
s = load('all');
sca;
psychrethrow(psychlasterror);
ListenChar(0);
ShowCursor;
end
end