children_multimod1.sce 10 KB

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