scenario = "fMRI stufy of neural representation of low vs. high frequency tactile stimulation"; #scenario_type = fMRI; #pulses_per_scan = 1; #scan_period = 2750; #pulse_code = 100; no_logfile = true; pulse_width = indefinite_port_code; write_codes = true; response_port_output = false;# this is very important (and silly!!) active_buttons = 1; button_codes = 1;# "\" to receive scanner pulses through FORP begin; trial { stimulus_event { nothing {}; code = "NULL"; }; } trial_null; ############# ### P C L ### ############# begin_pcl; include "nafi's_TMS_library.pcl"; int TMS_intensity = 70; set_TMS_strength(TMS_intensity); arm_TMS(); sub display( string message ) begin display_window.erase(); display_window.draw_text( message ); end; int current_run = 1; int total_scans = 150; int TR = 2500; int TMS_counter = 0; #loop until (pulse_manager.main_pulse_count() > 0) begin end; # wait until the first pulse loop until (response_manager.total_response_count(1) > 0) begin end; # wait until the first pulse #Fixation.present(); # Main Experiment Loop #loop until ( pulse_manager.main_pulse_count() > total_scans) loop until ( response_manager.total_response_count(1) > total_scans) begin #int scan_number = pulse_manager.main_pulse_count() ; int scan_number = response_manager.total_response_count(1); display("Scan Number: " + string(scan_number) +" TMS delivered: " +string(TMS_counter)); if scan_number < total_scans then#if not on the last trial, then wait for the next pulse #( pulse_manager.main_pulse_count() > scan_number ) begin end; if mod(scan_number + 5,2) == 0 then TMS_counter = TMS_counter + 1; loop until (clock.time() >=response_manager.last_response_data().time() + 2100) begin end;# time to connect coil connect_coil(); loop until (clock.time() >=response_manager.last_response_data().time() + 2200) begin end;# time to trigger trigger_TMS(); display("TMS delivered"); loop until (clock.time() >=response_manager.last_response_data().time() + 2300) begin end;# time to disconnect coil disconnect_coil(); end; loop until ( response_manager.total_response_count(1) > scan_number ) begin end;# wait till next pulse elseif scan_number == total_scans #if on the last trial, there will be no next pulse, wait for TR ms, then break out of the loop then loop until #(clock.time() >=pulse_manager.main_pulse_time( scan_number ) + TR) begin end; break; (clock.time() >=response_manager.last_response_data().time() + TR) begin end; break; end; end; disarm_TMS();