children_multimod3.sce 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  1. # Reakce je pouze u kočky - tlačítko 1 - mňouká (správný zvuk) tlačítko 2- štěká (špatný zvuk), na ostatní se odezva bere jako false allarm
  2. randomize_trials=true;
  3. #no_logfile = true;
  4. active_buttons = 2;
  5. button_codes = 1,2;
  6. response_matching = simple_matching;
  7. begin;
  8. array {
  9. sound{
  10. wavefile { filename = "koza.wav"; } snd_buck;
  11. } standard_stimulus; # standard stimulus;
  12. sound{
  13. wavefile { filename = "pes.wav"; } snd_dog;
  14. }; # target 1
  15. sound{
  16. wavefile { filename = "kocka.wav"; } snd_cat;
  17. };
  18. } sound_stimulus;
  19. array {
  20. picture {
  21. bitmap { filename = "koza1.jpg"; } buck;
  22. x=0; y=0;
  23. } standard_pic;
  24. picture {
  25. bitmap { filename = "pes1.jpg"; } dog;
  26. x=0; y=0;
  27. } target1_pic;
  28. picture {
  29. bitmap { filename = "kocka1.jpg"; } cat;
  30. x=0; y=0;
  31. } target2_pic;
  32. } picture_stimulus;
  33. trial {
  34. trial_duration = 1200;
  35. stimulus_event{
  36. picture standard_pic;
  37. duration=700;
  38. } event1;
  39. stimulus_event{
  40. sound standard_stimulus;
  41. duration=700;
  42. port_code=1;
  43. code=1;
  44. } event2;
  45. } main;
  46. begin_pcl;
  47. array <int> stim[300];
  48. array <int> out_code[300];
  49. array <int> tg_stim_list[60];
  50. array <int> tg_type_list[60]; # obsahuje info o typu targetu 2 - pes steka¡ 3 - kocka mnouka¡ 4- kocka steka¡ 5 - pes mnouka¡
  51. array <string> type[6]={"buck ","dog b", "cat m","cat b","dog m"};
  52. int st,num,en,pos,cat_pos;
  53. int cat_dog_pos, dog_cat_pos;
  54. int react_time, cum_creact_time,cum_ireact_time,incorrect_react_time, cum_incorrect_react_time, false_cum_react_time, false_react_time;
  55. int correct_snd_n, incorrect_snd_n;
  56. double avg_creact,avg_ireact,incorrect_avg_react, false_avg_react;
  57. string userid;
  58. output_file s_output = new output_file;
  59. # naplnění­ pole standardními stimuly
  60. loop int j=1 until j>300
  61. begin
  62. stim[j]=1;
  63. out_code[j]=1;
  64. j=j+1;
  65. end;
  66. # 20% se vymění za targety s kodem 2 (pes)
  67. st=3; num=60;
  68. loop int k=1 until k>60
  69. begin
  70. if (st <205) then en=st+4; else en=st + 3; end;
  71. if (en>295) then en=295; end;
  72. pos=random(st,en);
  73. tg_stim_list[k]=pos;
  74. tg_type_list[k]=2;
  75. stim[pos]=2;
  76. out_code[pos]=2; out_code[pos+1]=11;
  77. st=pos+3;
  78. k=k+1;
  79. end;
  80. # z př™edchozíchch 20% se jich 10% zamě›ní za tg s kodem 3 (kočka)
  81. loop int l=1 until l>30
  82. begin
  83. pos=random(1,60);
  84. cat_pos= tg_stim_list[pos];
  85. if (stim[cat_pos]!=3) then
  86. tg_type_list[pos] = 3;
  87. stim[cat_pos]=3; out_code[cat_pos]=3;
  88. out_code[cat_pos+1]=12;
  89. l=l+1;
  90. end;
  91. end;
  92. # u 5% targetu se zamění zvuky - tj. pes mňˆouká¡ a kočka štěká
  93. loop int l=1 until l>15
  94. begin
  95. int pos1, pos2;
  96. loop
  97. pos1=random(1,60);
  98. pos2=random(1,60);
  99. until (tg_type_list[pos1]==2) && (tg_type_list[pos2]==3)
  100. begin
  101. pos1=random(1,60);
  102. pos2=random(1,60);
  103. end;
  104. tg_type_list[pos1]=5; tg_type_list[pos2]=4;
  105. dog_cat_pos= tg_stim_list[pos1]; cat_dog_pos = tg_stim_list[pos2];
  106. stim[dog_cat_pos]=2; out_code[dog_cat_pos]=5;
  107. stim[cat_dog_pos]=3; out_code[cat_dog_pos]=4;
  108. out_code[dog_cat_pos+1]=13;out_code[cat_dog_pos+1]=14;
  109. l=l+1;
  110. end;
  111. /*-----------------------------------------------------------------------------------*/
  112. loop int i=1 until i>300
  113. begin
  114. term.print(stim[i]);
  115. i=i+1;
  116. end;
  117. term.print("\n");
  118. loop int i=1 until i>300
  119. begin
  120. term.print(out_code[i]); term.print(" ");
  121. i=i+1;
  122. end;
  123. term.print("\n");
  124. /*---------------------------------------------------------------------------------*/
  125. /* ----------------------- tady se spouští vlastní stimulace ----------------------*/
  126. userid=logfile.subject();
  127. s_output.open(userid+".txt");
  128. cum_creact_time=0;
  129. cum_ireact_time=0;
  130. correct_snd_n=0;
  131. incorrect_snd_n=0;
  132. cum_incorrect_react_time=0;
  133. false_react_time=0;
  134. false_cum_react_time=0;
  135. int bt;
  136. s_output.print("****************************** MIAOWING CAT ************************************\n\n");
  137. loop int i=1 until i>30
  138. begin
  139. s_output.print(i); s_output.print("\t"); s_output.print(out_code[i]);s_output.print("\t");
  140. event1.set_stimulus(picture_stimulus[stim[i]]);
  141. if (out_code[i]>3) && (out_code[i]<6) then
  142. event2.set_stimulus(sound_stimulus[out_code[i]-2]);
  143. s_output.print(type[out_code[i]]+"\t");
  144. else
  145. event2.set_stimulus(sound_stimulus[stim[i]]);
  146. s_output.print(type[stim[i]]+"\t");
  147. end;
  148. event2.set_port_code(out_code[i]);
  149. event2.set_event_code(string(out_code[i]));
  150. if (out_code[i]==3)
  151. then event2.set_target_button(1);
  152. bt=1;
  153. event2.set_stimulus_time_in(200);
  154. event2.set_stimulus_time_out(900);
  155. elseif (out_code[i]==4)
  156. then event2.set_target_button(2);
  157. bt=2;
  158. event2.set_stimulus_time_in(200);
  159. event2.set_stimulus_time_out(900);
  160. else event2.set_target_button(0);
  161. event2.set_response_active(true);
  162. end;
  163. main.present();
  164. stimulus_data last = stimulus_manager.last_stimulus_data();
  165. if (last.type()==stimulus_hit)
  166. then
  167. if (out_code[i]==3)
  168. then
  169. react_time=last.reaction_time();
  170. cum_creact_time=cum_creact_time+react_time;
  171. s_output.print("o"+"\t");s_output.print(bt);s_output.print(" ");s_output.print(response_manager.last_response());s_output.print(" ");s_output.print(react_time);
  172. correct_snd_n=correct_snd_n+1;
  173. /* term.print("React_time = "); term.print(react_time); term.print("\n"); */
  174. elseif (out_code[i]==4)
  175. then
  176. react_time=last.reaction_time();
  177. cum_ireact_time=cum_ireact_time+react_time;
  178. s_output.print("o"+"\t");s_output.print(bt);s_output.print(" ");s_output.print(response_manager.last_response());s_output.print(" ");s_output.print(react_time);
  179. incorrect_snd_n=incorrect_snd_n+1;
  180. end;
  181. elseif (last.type()==stimulus_incorrect)
  182. then
  183. incorrect_react_time=last.reaction_time();
  184. cum_incorrect_react_time=cum_incorrect_react_time+incorrect_react_time;
  185. s_output.print("x"+"\t");s_output.print(bt);s_output.print(" ");s_output.print(response_manager.last_response());s_output.print(" "); s_output.print(incorrect_react_time);
  186. elseif (last.type()==stimulus_false_alarm)
  187. then
  188. false_react_time=last.reaction_time();
  189. false_cum_react_time=false_cum_react_time+false_react_time;
  190. s_output.print("f"+"\t");s_output.print("-");s_output.print(" ");s_output.print(response_manager.last_response());s_output.print(" "); s_output.print(false_react_time);
  191. end;
  192. i=i+1;
  193. s_output.print("\n");
  194. end;
  195. int total_hits=response_manager.total_hits();
  196. int total_false_alarms=response_manager.total_false_alarms();
  197. #int total_hits_correct_snd = response_manager.total_response_count(1);
  198. #int total_hits_incorrect_snd = response_manager.total_response_count(2);
  199. int total_incorrects = response_manager.total_incorrects();
  200. if (correct_snd_n!=0)
  201. then avg_creact=double(cum_creact_time)/double(correct_snd_n);
  202. else avg_creact=0.;
  203. end;
  204. if (incorrect_snd_n!=0)
  205. then avg_ireact=double(cum_ireact_time)/double(incorrect_snd_n);
  206. else avg_ireact=0.;
  207. end;
  208. if (total_incorrects!=0)
  209. then incorrect_avg_react=double(cum_incorrect_react_time)/double(total_incorrects);
  210. else incorrect_avg_react=0.;
  211. end;
  212. if (total_false_alarms!=0)
  213. then false_avg_react=double(false_cum_react_time)/double(total_false_alarms);
  214. else false_avg_react=0.;
  215. end;
  216. s_output.print("\n\n");
  217. s_output.print("Total hits = "); s_output.print(total_hits); s_output.print("\n");
  218. s_output.print("Total correct sound hits = "); s_output.print(correct_snd_n); s_output.print("\n");
  219. s_output.print("Average correct sound reaction time = "); s_output.print(avg_creact); s_output.print("\n\n");
  220. s_output.print("Total incorrect sound hits = "); s_output.print(incorrect_snd_n); s_output.print("\n");
  221. s_output.print("Average incorrect sound reaction time = "); s_output.print(avg_ireact); s_output.print("\n\n");
  222. s_output.print("Total incorrect responses = "); s_output.print(total_incorrects); s_output.print("\n");
  223. s_output.print("Average incorrect response time = "); s_output.print(incorrect_avg_react); s_output.print("\n\n");
  224. s_output.print("Total false alarms = "); s_output.print(total_false_alarms); s_output.print("\n");
  225. s_output.print("Average false alarm response time = "); s_output.print(false_avg_react); s_output.print("\n\n");
  226. term.print("Total hits = "); term.print(total_hits); term.print("\n");
  227. term.print("Total correct sound reaction time = "); term.print(avg_creact); term.print("\n");
  228. term.print("Total incorrect sound reaction time = "); term.print(avg_ireact); term.print("\n");
  229. s_output.close();