|
@@ -1,249 +0,0 @@
|
|
|
-
|
|
|
-function ISP_MoBi(PTP_name, first_block, last_block, volume)
|
|
|
-%%
|
|
|
-% e.g. ISP_MoBi('S01_O1', 1, 14, 0)
|
|
|
-
|
|
|
-% call the function as
|
|
|
-% ISP_MoBi(PTP_name, number of the initial block, number of the last block, volume)
|
|
|
-
|
|
|
-% where...
|
|
|
-% PTP_name --> the participant code which has to be SXX_OXX i.e.
|
|
|
-% participant number followed by the block order
|
|
|
-
|
|
|
-% first_block and last_block --> first and last block you want to run
|
|
|
-% volume --> volume of the noise played in the earphones
|
|
|
-
|
|
|
-% toi regulate thoe noise use the following function before running
|
|
|
-% ISP_MoBi
|
|
|
-
|
|
|
-%[volume] = Noise_Volume_regulation()
|
|
|
-% ...and then PsychPortAudio('Close'); to switch it off
|
|
|
-
|
|
|
-
|
|
|
-%%
|
|
|
-%cd 'C:\Users\neuro\Desktop\MoBi-P15'
|
|
|
-
|
|
|
-addpath('C:\Users\neuro\Desktop\script_mobi_da_commentare\arduino_for_MoBi');
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-% initialize forces variable
|
|
|
-%forces = 0;
|
|
|
-% forces.max_force_left = 969.8065;
|
|
|
-
|
|
|
-
|
|
|
-% QUESTO PERCHE' E' QUI?
|
|
|
-forces.max_force_right = 900;
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-% from the first to the last block -->
|
|
|
-% set PTP data and file name to be saved after the block run
|
|
|
-% if the block is odd --> present instructions and set the force
|
|
|
-% threshold
|
|
|
-
|
|
|
-
|
|
|
-for bl = first_block:last_block
|
|
|
-
|
|
|
- [data_subject,R] = MoBi_save_settings();
|
|
|
-
|
|
|
- % cd 'C:\Users\neuro\Desktop\MoBi-P15';
|
|
|
- cd 'C:\Users\neuro\Desktop\script_mobi_da_commentare'
|
|
|
-
|
|
|
-
|
|
|
- % calculate the TMS thershold only in odd blocks
|
|
|
- if mod(bl,2) == 1
|
|
|
- MoBi_instructions(R(bl,:), data_subject, volume, forces, bl);
|
|
|
- TMS4Threshold_MoBi();
|
|
|
- end
|
|
|
-
|
|
|
-
|
|
|
- % actual code for experiment running
|
|
|
- [forces] = ISP_MoBi_sequence(R(bl,:), data_subject, volume, forces, bl);
|
|
|
-
|
|
|
-end
|
|
|
-
|
|
|
-
|
|
|
-%%
|
|
|
-% the function outputs the name of the next block and the structure of the
|
|
|
-% session
|
|
|
- function [data_subject,R] = MoBi_save_settings()
|
|
|
-
|
|
|
- order_tmp = strsplit(PTP_name, '_');
|
|
|
- stim_order = order_tmp{2};
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- istruzione_mano_dx = [{'Rilassata'};{'Rilassata'};...
|
|
|
- {'Rilassata'};{'Rilassata'};...
|
|
|
- {'Rilassata'};{'Rilassata'};...
|
|
|
- {'Rilassata'};{'Rilassata'};...
|
|
|
- {'Rilassata'};{'Rilassata'};...
|
|
|
- {'Rilassata'}; {'Rilassata'};...
|
|
|
- {'Rilassata'};{'Rilassata'}];
|
|
|
-
|
|
|
-
|
|
|
- % choose the hemisphere stimulation order (0 == left hem, 1 == right hem)
|
|
|
- switch stim_order
|
|
|
-
|
|
|
- case {'O1'}
|
|
|
- stim = [{'Mono_PA'};{'Mono_PA'};...
|
|
|
- {'Mono_AP'};{'Mono_AP'};...
|
|
|
- {'Mono_LM'};{'Mono_LM'};...
|
|
|
- {'Bi_PA_contracted'};{'Bi_PA_contracted'};...
|
|
|
- {'Bi_AP'}; {'Bi_AP'};...
|
|
|
- {'Bi_LM'};{'Bi_LM'};...
|
|
|
- {'Bi_PA'};{'Bi_PA'}];
|
|
|
-
|
|
|
-
|
|
|
- istruzione_mano_sx = [{'Rilassata'};{'Rilassata'};...
|
|
|
- {'Rilassata'};{'Rilassata'};...
|
|
|
- {'Rilassata'};{'Rilassata'};...
|
|
|
- {'Contratta'};{'Contratta'};...
|
|
|
- {'Rilassata'};{'Rilassata'};...
|
|
|
- {'Rilassata'}; {'Rilassata'};...
|
|
|
- {'Rilassata'};{'Rilassata'}];
|
|
|
-
|
|
|
- case {'O2'}
|
|
|
-
|
|
|
- stim = [{'Mono_AP'};{'Mono_AP'};...
|
|
|
- {'Mono_LM'};{'Mono_LM'};...
|
|
|
- {'Bi_PA_contracted'};{'Bi_PA_contracted'};...
|
|
|
- {'Bi_AP'}; {'Bi_AP'};...
|
|
|
- {'Bi_LM'};{'Bi_LM'};...
|
|
|
- {'Bi_PA'};{'Bi_PA'};...
|
|
|
- {'Mono_PA'};{'Mono_PA'}];
|
|
|
-
|
|
|
-
|
|
|
- istruzione_mano_sx = [{'Rilassata'};{'Rilassata'};...
|
|
|
- {'Rilassata'};{'Rilassata'};...
|
|
|
- {'Contratta'};{'Contratta'};...
|
|
|
- {'Rilassata'};{'Rilassata'};...
|
|
|
- {'Rilassata'};{'Rilassata'};...
|
|
|
- {'Rilassata'}; {'Rilassata'};...
|
|
|
- {'Rilassata'};{'Rilassata'}];
|
|
|
-
|
|
|
- case {'O3'}
|
|
|
- stim = [{'Mono_LM'};{'Mono_LM'};...
|
|
|
- {'Bi_PA_contracted'};{'Bi_PA_contracted'};...
|
|
|
- {'Bi_AP'}; {'Bi_AP'};...
|
|
|
- {'Bi_LM'};{'Bi_LM'};...
|
|
|
- {'Bi_PA'};{'Bi_PA'};...
|
|
|
- {'Mono_PA'};{'Mono_PA'};...
|
|
|
- {'Mono_AP'};{'Mono_AP'}];
|
|
|
-
|
|
|
-
|
|
|
- istruzione_mano_sx = [{'Rilassata'};{'Rilassata'};...
|
|
|
- {'Contratta'};{'Contratta'};...
|
|
|
- {'Rilassata'};{'Rilassata'};...
|
|
|
- {'Rilassata'};{'Rilassata'};...
|
|
|
- {'Rilassata'};{'Rilassata'};...
|
|
|
- {'Rilassata'}; {'Rilassata'};...
|
|
|
- {'Rilassata'};{'Rilassata'}];
|
|
|
-
|
|
|
- case {'O4'}
|
|
|
- stim = [{'Bi_PA_contracted'};{'Bi_PA_contracted'};...
|
|
|
- {'Bi_AP'}; {'Bi_AP'};...
|
|
|
- {'Bi_LM'};{'Bi_LM'};...
|
|
|
- {'Bi_PA'};{'Bi_PA'};...
|
|
|
- {'Mono_PA'};{'Mono_PA'};...
|
|
|
- {'Mono_AP'};{'Mono_AP'};...
|
|
|
- {'Mono_LM'};{'Mono_LM'}];
|
|
|
-
|
|
|
-
|
|
|
- istruzione_mano_sx = [ {'Contratta'};{'Contratta'};...
|
|
|
- {'Rilassata'};{'Rilassata'};...
|
|
|
- {'Rilassata'};{'Rilassata'};...
|
|
|
- {'Rilassata'};{'Rilassata'};...
|
|
|
- {'Rilassata'};{'Rilassata'};...
|
|
|
- {'Rilassata'}; {'Rilassata'};...
|
|
|
- {'Rilassata'};{'Rilassata'}];
|
|
|
-
|
|
|
-
|
|
|
- case {'O5'}
|
|
|
- stim = [{'Bi_AP'}; {'Bi_AP'};...
|
|
|
- {'Bi_LM'};{'Bi_LM'};...
|
|
|
- {'Bi_PA'};{'Bi_PA'};...
|
|
|
- {'Mono_PA'};{'Mono_PA'};...
|
|
|
- {'Mono_AP'};{'Mono_AP'};...
|
|
|
- {'Mono_LM'};{'Mono_LM'};...
|
|
|
- {'Bi_PA_contracted'};{'Bi_PA_contracted'}];
|
|
|
-
|
|
|
- istruzione_mano_sx = [ {'Rilassata'};{'Rilassata'};...
|
|
|
- {'Rilassata'};{'Rilassata'};...
|
|
|
- {'Rilassata'};{'Rilassata'};...
|
|
|
- {'Rilassata'};{'Rilassata'};...
|
|
|
- {'Rilassata'}; {'Rilassata'};...
|
|
|
- {'Rilassata'};{'Rilassata'};...
|
|
|
- {'Contratta'};{'Contratta'}];
|
|
|
-
|
|
|
- case {'O6'}
|
|
|
- stim = [{'Bi_LM'};{'Bi_LM'};...
|
|
|
- {'Bi_PA'};{'Bi_PA'};...
|
|
|
- {'Mono_PA'};{'Mono_PA'};...
|
|
|
- {'Mono_AP'};{'Mono_AP'};...
|
|
|
- {'Mono_LM'};{'Mono_LM'};...
|
|
|
- {'Bi_PA_contracted'};{'Bi_PA_contracted'};...
|
|
|
- {'Bi_AP'}; {'Bi_AP'}];
|
|
|
-
|
|
|
- istruzione_mano_sx = [ {'Rilassata'};{'Rilassata'};...
|
|
|
- {'Rilassata'};{'Rilassata'};...
|
|
|
- {'Rilassata'};{'Rilassata'};...
|
|
|
- {'Rilassata'};{'Rilassata'};...
|
|
|
- {'Rilassata'}; {'Rilassata'};...
|
|
|
- {'Contratta'};{'Contratta'};...
|
|
|
- {'Rilassata'};{'Rilassata'}];
|
|
|
-
|
|
|
- case {'O7'}
|
|
|
- stim = [{'Bi_PA'};{'Bi_PA'};...
|
|
|
- {'Mono_PA'};{'Mono_PA'};...
|
|
|
- {'Mono_AP'};{'Mono_AP'};...
|
|
|
- {'Mono_LM'};{'Mono_LM'};...
|
|
|
- {'Bi_PA_contracted'};{'Bi_PA_contracted'};...
|
|
|
- {'Bi_AP'}; {'Bi_AP'};...
|
|
|
- {'Bi_LM'};{'Bi_LM'}];
|
|
|
-
|
|
|
- istruzione_mano_sx = [ {'Rilassata'};{'Rilassata'};...
|
|
|
- {'Rilassata'};{'Rilassata'};...
|
|
|
- {'Rilassata'};{'Rilassata'};...
|
|
|
- {'Rilassata'};{'Rilassata'};...
|
|
|
- {'Contratta'};{'Contratta'};...
|
|
|
- {'Rilassata'}; {'Rilassata'};...
|
|
|
- {'Rilassata'};{'Rilassata'}];
|
|
|
-
|
|
|
- end
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- % R is a table-like matrix containing
|
|
|
- % on the first column --> stimulation type
|
|
|
- % on the second column--> instructions for the left hand
|
|
|
- % relaxation/contraction
|
|
|
- % on the second column--> instructions for the right hand
|
|
|
- % relaxation/contraction (which is always relaxed)
|
|
|
- R = [stim istruzione_mano_sx istruzione_mano_dx];
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- % get the time so that savings do not overwrite
|
|
|
- hour = clock;
|
|
|
-
|
|
|
- % put together into a string
|
|
|
- hour = strcat(num2str(hour(1)),...
|
|
|
- num2str(hour(2)),...
|
|
|
- num2str(hour(3)),'_',...
|
|
|
- num2str(hour(4)),...
|
|
|
- num2str(hour(5)),...
|
|
|
- num2str(round(hour(6))));
|
|
|
-
|
|
|
-
|
|
|
- % data_subject contains the string corresponding to the name of the block file .mat
|
|
|
- % this info will be used as input into the ISP_MoBi_sequence and MoBi_instructions
|
|
|
- % functions
|
|
|
- data_subject = strcat(PTP_name, '_', R{bl,1}, '_', R{bl,2}, '_', R{bl,3}, '_', num2str(bl), '_', hour, '.mat');
|
|
|
-
|
|
|
- end
|
|
|
-
|
|
|
-end
|