From 4f8c0412d75e5bc363b3b65d86824244f9986007 Mon Sep 17 00:00:00 2001 From: henrymj Date: Tue, 19 Nov 2019 13:04:32 -0800 Subject: [PATCH 1/3] create fMRI stop signal task for RO1 scanning --- .../config.json | 52 ++ .../experiment.js | 846 ++++++++++++++++++ .../images/circle.png | Bin 0 -> 4152 bytes .../images/pentagon.png | Bin 0 -> 4010 bytes .../images/rhombus.png | Bin 0 -> 2695 bytes .../images/square.png | Bin 0 -> 1993 bytes .../images/stopSignal.png | Bin 0 -> 24280 bytes .../images/trapezoid.png | Bin 0 -> 3018 bytes .../images/triangle.png | Bin 0 -> 2837 bytes .../style.css | 118 +++ 10 files changed, 1016 insertions(+) create mode 100644 stop_signal_single_task_network__fmri/config.json create mode 100755 stop_signal_single_task_network__fmri/experiment.js create mode 100644 stop_signal_single_task_network__fmri/images/circle.png create mode 100644 stop_signal_single_task_network__fmri/images/pentagon.png create mode 100644 stop_signal_single_task_network__fmri/images/rhombus.png create mode 100644 stop_signal_single_task_network__fmri/images/square.png create mode 100644 stop_signal_single_task_network__fmri/images/stopSignal.png create mode 100644 stop_signal_single_task_network__fmri/images/trapezoid.png create mode 100644 stop_signal_single_task_network__fmri/images/triangle.png create mode 100644 stop_signal_single_task_network__fmri/style.css diff --git a/stop_signal_single_task_network__fmri/config.json b/stop_signal_single_task_network__fmri/config.json new file mode 100644 index 000000000..cf995a59e --- /dev/null +++ b/stop_signal_single_task_network__fmri/config.json @@ -0,0 +1,52 @@ +[ + { + "name": "Stop Signal Single Task Network fMRI", + "template":"jspsych", + "run": [ + "static/js/math.min.js", + "static/js/jspsych/jspsych.js", + "static/js/jspsych/plugins/jspsych-call-function.js", + "static/js/jspsych/plugins/jspsych-text.js", + "static/js/jspsych/poldrack_plugins/jspsych-poldrack-text.js", + "static/js/jspsych/poldrack_plugins/jspsych-poldrack-instructions.js", + "static/js/jspsych/poldrack_plugins/jspsych-attention-check.js", + "static/js/jspsych/poldrack_plugins/jspsych-poldrack-single-stim.js", + "static/js/jspsych/poldrack_plugins/jspsych-poldrack-categorize.js", + "static/js/jspsych/poldrack_plugins/jspsych-stop-signal.js", + "static/js/jspsych/plugins/jspsych-survey-text.js", + "static/js/utils/poldrack_fmri_utils.js", + "experiment.js", + "static/css/jspsych.css", + "static/css/default_style.css", + "style.css" + + + ], + "exp_id": "stop_signal_single_task_network__fmri", + "cognitive_atlas_task_id": "tsk_4a57abb949e1a", + "contributors": [ + "Patrick Bissett", + "Jamie Li", + "McKenzie Hagen", + "Russell Poldrack", + "Henry Jones", + "Tony Bui" + ], + "time":30, + "reference": "http://psycnet.apa.org/journals/xlm/37/2/392/", + "notes": "Condition refers to whether the trial is practice or high_freq/low_freq (the two test conditions) as well as whether it was a go or SS trial", + "publish":"True", + "experiment_variables": [{ + "name":"credit_var", + "type":"credit", + "datatype": "boolean", + "description":"True if avg_rt > 200" + }], + "deployment_variables":{"jspsych_init": + {"fullscreen": true, + "display_element": "getDisplayElement", + "on_trial_finish": "addID('stop_signal_single_task_network__fmri')"} + } + + } +] diff --git a/stop_signal_single_task_network__fmri/experiment.js b/stop_signal_single_task_network__fmri/experiment.js new file mode 100755 index 000000000..5030f911e --- /dev/null +++ b/stop_signal_single_task_network__fmri/experiment.js @@ -0,0 +1,846 @@ +/* ************************************ */ +/* Define Helper Functions */ +/* ************************************ */ + +function genITIs() { + mean_iti = .5 //mean and standard deviation of 0.5 secs + min_thresh = 0 + max_thresh = 4 + + lambda = 1/mean_iti + iti_array = [] + for (i=0; i < exp_len; i++) { + curr_iti = - Math.log(Math.random()) / lambda; + while (curr_iti > max_thresh || curr_iti < min_thresh) { + curr_iti = - Math.log(Math.random()) / lambda; + } + iti_array.push(curr_iti*1000) //convert ITIs from seconds to milliseconds + + } + return(iti_array) +} + + + +function getDisplayElement() { + $('
').appendTo('body') + return $('
').appendTo('body') +} + +function addID() { + jsPsych.data.addDataToLastTrial({exp_id: 'stop_signal_single_task_network__fmri'}) +} + +function assessPerformance() { + var experiment_data = jsPsych.data.getTrialsOfType('stop-signal') + var missed_count = 0 + var trial_count = 0 + var rt_array = [] + var rt = 0 + var correct = 0 + var all_trials = 0 + + console.log(experiment_data.length) + + //record choices participants made + var choice_counts = {} + choice_counts[-1] = 0 + choice_counts[77] = 0 + choice_counts[90] = 0 + + for (var i = 0; i < experiment_data.length; i++) { + if (experiment_data[i].trial_id == 'test_trial') { + all_trials += 1 + key = experiment_data[i].key_press + choice_counts[key] += 1 + if (experiment_data[i].stop_signal_condition == 'go'){ + trial_count += 1 + } + + if ((experiment_data[i].stop_signal_condition == 'go') && (experiment_data[i].rt != -1)){ + rt = experiment_data[i].rt + rt_array.push(rt) + if (experiment_data[i].key_press == experiment_data[i].correct_response){ + correct += 1 + } + } else if ((experiment_data[i].stop_signal_condition == 'stop') && (experiment_data[i].rt != -1)){ + rt = experiment_data[i].rt + rt_array.push(rt) + } else if ((experiment_data[i].stop_signal_condition == 'go') && (experiment_data[i].rt == -1)){ + missed_count += 1 + } + } + } + + + //calculate average rt + var avg_rt = -1 + if (rt_array.length !== 0) { + avg_rt = math.median(rt_array) + } + //calculate whether response distribution is okay + var responses_ok = true + Object.keys(choice_counts).forEach(function(key, index) { + if (choice_counts[key] > all_trials * 0.85) { + responses_ok = false + } + }) + var missed_percent = missed_count/trial_count + var accuracy = correct / trial_count + credit_var = (missed_percent < 0.25 && avg_rt > 200 && responses_ok && accuracy > 0.60) + jsPsych.data.addDataToLastTrial({final_credit_var: credit_var, + final_missed_percent: missed_percent, + final_avg_rt: avg_rt, + final_responses_ok: responses_ok, + final_accuracy: accuracy}) +} + +var getFeedback = function() { + return '

' + feedback_text + '

' +} + +var getInstructFeedback = function() { + return '

' + feedback_instruct_text + + '

' +} + +var getCategorizeFeedback = function(){ + curr_trial = jsPsych.progress().current_trial_global - 1 + trial_id = jsPsych.data.getDataByTrialIndex(curr_trial).trial_id + if ((trial_id == 'practice_trial') && (jsPsych.data.getDataByTrialIndex(curr_trial).stop_signal_condition == 'go')){ + if (jsPsych.data.getDataByTrialIndex(curr_trial).key_press == jsPsych.data.getDataByTrialIndex(curr_trial).correct_response){ + + + return '
Correct!
' + prompt_text + } else if ((jsPsych.data.getDataByTrialIndex(curr_trial).key_press != jsPsych.data.getDataByTrialIndex(curr_trial).correct_response) && (jsPsych.data.getDataByTrialIndex(curr_trial).key_press != -1)){ + + + return '
Incorrect
' + prompt_text + + } else if (jsPsych.data.getDataByTrialIndex(curr_trial).key_press == -1){ + + + return '
Respond Faster!
' + prompt_text + + } + } else if ((trial_id == 'practice_trial') && (jsPsych.data.getDataByTrialIndex(curr_trial).stop_signal_condition == 'stop')){ + if (jsPsych.data.getDataByTrialIndex(curr_trial).rt == -1){ + return '
Correct!
' + prompt_text + } else if (jsPsych.data.getDataByTrialIndex(curr_trial).rt != -1){ + return '
There was a star.
' + prompt_text + } + + } +} + +var createTrialTypes = function(numTrialsPerBlock){ + var unique_combos = stop_signal_conditions.length*totalShapesUsed + + var stims = [] + for (var x = 0; x < stop_signal_conditions.length; x++){ + for (var j = 0; j < totalShapesUsed; j++){ + stim = { + stim: shapes[j], + correct_response: possible_responses[j][1], + stop_signal_condition: stop_signal_conditions[x] + } + stims.push(stim) + } + } + + var iteration = numTrialsPerBlock/unique_combos + + stims = jsPsych.randomization.repeat(stims,iteration) + return stims +} + + +var getStopStim = function(){ + return preFileType + 'stopSignal' + fileTypePNG +} + +var getStim = function(){ + + if(exp_phase == "practice1"){ + stim = stims.pop() + shape = stim.stim + correct_response = stim.correct_response + stop_signal_condition = "practice_no_stop" + + } else if ((exp_phase == "test") || (exp_phase == "practice2")){ + stim = stims.pop() + shape = stim.stim + stop_signal_condition = stim.stop_signal_condition + correct_response = stim.correct_response + + + + if(stop_signal_condition == "stop"){ + correct_response = -1 + } + } + + stim = { + image: '
' + preFileType + shape + fileTypePNG + '
', + data: { + stim: shape, + stop_signal_condition: stop_signal_condition, + correct_response: correct_response + } + } + stimData = stim.data + return stim.image +} + + +function getSSD(){ + return SSD +} + +function getSSType(){ + return stop_signal_condition +} + +function getITI_stim() { //added for fMRI compatibility + var currITI = ITIs_stim.shift() + return currITI +} + +function getITI_resp() { //added for fMRI compatibility + var currITI = ITIs_resp.shift() + return currITI +} + + +var appendData = function(){ + curr_trial = jsPsych.progress().current_trial_global + current_trial+=1 + + if (exp_phase == "practice1"){ + currBlock = practiceCount + } else if (exp_phase == "practice2"){ + currBlock = practiceStopCount + } else if (exp_phase == "test"){ + currBlock = testCount + } + + if ((exp_phase == "practice1") || (exp_phase == "practice2") || (exp_phase == "test")){ + jsPsych.data.addDataToLastTrial({ + stim: stimData.stim, + correct_response: correct_response, + current_block: currBlock, + current_trial: current_trial, + stop_signal_condition: stimData.stop_signal_condition + }) + + if (jsPsych.data.getDataByTrialIndex(curr_trial).key_press == correct_response){ + jsPsych.data.addDataToLastTrial({ + correct_trial: 1, + }) + + } else if (jsPsych.data.getDataByTrialIndex(curr_trial).key_press != correct_response){ + jsPsych.data.addDataToLastTrial({ + correct_trial: 0, + }) + } + } + + + if ((exp_phase == "test") || (exp_phase == "practice2")){ + + if ((jsPsych.data.getDataByTrialIndex(curr_trial).key_press == -1) && (jsPsych.data.getDataByTrialIndex(curr_trial).stop_signal_condition == 'stop') && (SSD < maxSSD)){ + jsPsych.data.addDataToLastTrial({stop_acc: 1}) + SSD+=50 + } else if ((jsPsych.data.getDataByTrialIndex(curr_trial).key_press != -1) && (jsPsych.data.getDataByTrialIndex(curr_trial).stop_signal_condition == 'stop') && (SSD > minSSD)){ + jsPsych.data.addDataToLastTrial({stop_acc: 0}) + SSD-=50 + } + + + if ((jsPsych.data.getDataByTrialIndex(curr_trial).key_press == jsPsych.data.getDataByTrialIndex(curr_trial).correct_response) && (jsPsych.data.getDataByTrialIndex(curr_trial).stop_signal_condition == 'go')){ + jsPsych.data.addDataToLastTrial({go_acc: 1}) + } else if ((jsPsych.data.getDataByTrialIndex(curr_trial).key_press != jsPsych.data.getDataByTrialIndex(curr_trial).correct_response) && (jsPsych.data.getDataByTrialIndex(curr_trial).stop_signal_condition == 'go')){ + jsPsych.data.addDataToLastTrial({go_acc: 0}) + } + + } + +} + +/* ************************************ */ +/* Define Experimental Variables */ +/* ************************************ */ + +//fmri variables +var ITIs_stim = [] +var ITIs_resp = [] + + +// generic task variables +var sumInstructTime = 0 //ms +var instructTimeThresh = 0 ///in seconds +var credit_var = 0 +var run_attention_checks = true + + +var practice_len = 24 // 24 must be divisible by 12 +var exp_len = 144 // must be divisible by 12 +var numTrialsPerBlock = 48 // must be divisible by 12 +var numTestBlocks = exp_len / numTrialsPerBlock +var practice_thresh = 3 // 3 blocks of 12 trials + +var accuracy_thresh = 0.80 +var missed_thresh = 0.10 +var SSD = 350 +var maxSSD = 1000 +var minSSD = 0 +var current_trial = 0 + + +var rt_thresh = 1000; +var missed_response_thresh = 0.10; +var accuracy_thresh = 0.75; + +var maxStopCorrect = 0.70 +var minStopCorrect = 0.30 + +var maxStopCorrectPractice = 1 +var minStopCorrectPractice = 0 + + +var stop_signal_conditions = ['go','go','stop'] +var shapes = ['circle','circle','square','square'] +//'hourglass', 'Lshape', 'moon', 'oval', 'rectangle', 'rhombus', 'tear', 'trapezoid' +var color = "black" +var totalShapesUsed = 4 + + +var possible_responses = [['index finger', 89], ['index finger', 89], ['middle finger', 71], ['middle finger', 71]] //fmri responses - keys: BYGRM = thumb->pinky + + +var postFileType = "'>" +var pathSource = "/static/experiments/stop_signal_single_task_network__fmri/images/" +var fileType = ".png" +var preFileType = "" +var preFileType = "' + shapes[0] + ': ' + possible_responses[0][0] + '' + + '
  • ' + shapes[2] + ': ' + possible_responses[2][0] + '
  • ' + + '
  • Do not respond if a star appears!
  • ' + + '' + +var prompt_text = '
    '+ + '

    ' + shapes[0] + ': ' + possible_responses[0][0] + '

    ' + + '

    ' + shapes[2] + ': ' + possible_responses[2][0] + '

    ' + + '

    Do not respond if a star appears!

    ' + + '
    ' + + + +var stims = createTrialTypes(numTrialsPerBlock) +var exp_phase = "practice2" +var exp_phase = "test" + + + +/* ************************************ */ +/* Set up jsPsych blocks */ +/* ************************************ */ +var end_block = { + type: 'poldrack-text', + data: { + exp_id: "stop_signal_single_task_network__fmri", + trial_id: "end" + }, + timing_response: 180000, + text: '
    '+ + '

    Thanks for completing this task!

    '+ + '
    ', + cont_key: [13], + timing_post_trial: 0, + on_finish: function(){ + assessPerformance() + } +}; + + +var instructions_block = { + type: 'poldrack-single-stim', + stimulus: '
    '+ + '

    In this task you will see shapes appear on the screen one at a time.

    ' + + '

    Only one response is correct for each shape.

    '+ + '

    If the shape is a '+shapes[0]+', press your '+possible_responses[0][0]+'.

    '+ + '

    If the shape is a '+shapes[2]+', press your '+possible_responses[2][0]+'.

    '+ + //'

    You should respond as quickly and accurately as possible to each shape.

    '+ + '

    On some trials, a star will appear around the shape. The star will appear with, or shortly after the shape appears.

    '+ + '

    If you see a star appear, please try your best to withhold your response on that trial.

    '+ + '

    If the star appears on a trial, and you try your best to withhold your response, you will find that you will be able to stop sometimes but not always.

    '+ + '

    Please do not slow down your responses in order to wait for the star. You should respond as quickly and accurately as possible to each shape.

    '+ + '

    During practice, you will see a reminder of the rules. This will be removed for test.

    '+ + '

    To let the experimenters know when you are ready to begin, please press any button.

    '+ + '
    ', + is_html: true, + choices: [32], + data: { + trial_id: "instruction", + }, + timing_post_trial: 0, + timing_stim: -1, //until response + timing_response: -1, //until response + response_ends_trial: true +}; + + +var ITI_fixation_block = { + type: 'poldrack-single-stim', + stimulus: '
    +
    ', + is_html: true, + choices: 'none', + data: { + trial_id: "fixation", + }, + timing_post_trial: 0, + timing_stim: getITI_stim, //500 + timing_response: getITI_resp //500 +}; + +var practice_fixation_block = { + type: 'poldrack-single-stim', + stimulus: '
    +
    ', + is_html: true, + choices: 'none', + data: { + trial_id: "prompt_fixation", + }, + timing_post_trial: 0, + timing_stim: 500, //500 + timing_response: 500, //500 + prompt: prompt_text +}; + + +var practice_intro = { + type: 'poldrack-single-stim', + stimulus: '

    We will now start the practice for the experiment.

    For these trials, you must press your '+possible_responses[0][0]+', '+ ' or '+possible_responses[2][0]+ ' depending on the shape of the stimulus. Make sure to respond as quickly and accurately as possible to the shape.

    The responses for each shape are as follows: ' + + prompt_text + + '

    Remember these rules before you proceed.

    Press any button to begin.

    ', + is_html: true, + choices: [32], + data: { + trial_id: "stop_intro_phase1" + }, + timing_post_trial: 0, + timing_response: 180000, + response_ends_trial: true +}; + +var feedback_text = 'We will start practice. During practice, you will receive a prompt to remind you of the rules. This prompt will be removed for test!' // Press any button to begin.' +var feedback_block = { + type: 'poldrack-single-stim', + data: { + trial_id: "practice-no-stop-feedback" + }, + choices: [32], + stimulus: getFeedback, + timing_post_trial: 0, + is_html: true, + timing_response: 10000, //10 seconds for feedback + response_ends_trial: true, + +}; + + +var test_intro = { + type: 'poldrack-single-stim', + stimulus: '
    '+ + '

    We will now begin the test portion.

    '+ + '

    You will see a shape on every trial. Please respond to each shape as quickly and accurately as possible!

    '+ + '

    If the shape is a '+shapes[0]+', press your '+possible_responses[0][0]+'.

    '+ + '

    If the shape is a '+shapes[2]+', press your '+possible_responses[2][0]+'.

    '+ + '

    Do not respond if you see a star.

    '+ + '

    You will no longer receive the rule prompt, so remember the instructions before you continue. Press any button to begin.

    '+ + '
    ', + + is_html: true, + choices: [32], + data: { + trial_id: "test_intro" + }, + timing_post_trial: 0, + timing_response: 180000, + response_ends_trial: true, + on_finish: function(){ + feedback_text = 'We will now start the test session. Please concentrate on responding quickly and accurately to each stimulus. Press any button to begin.' + } +}; + +var feedback_text = + 'The test will begin shortly.'// Press any button to begin.' +var feedback_block = { + type: 'poldrack-single-stim', + data: { + trial_id: "practice-no-stop-feedback" + }, + choices: 'none', + stimulus: getFeedback, + timing_post_trial: 0, + is_html: true, + timing_response: 10000, //10 seconds + response_ends_trial: false, + +}; +/********************************************/ +/* Set up nodes */ +/********************************************/ + +var SSD_setup_block = { + type: 'survey-text', + data: { + trial_id: "SSD_setup" + }, + questions: [ + [ + "

    SSD:

    " + ] + ], on_finish: function(data) { + SSD = parseInt(data.responses.slice(7, 10)) + SSD = math.max(100,math.min(400,SSD)) + ITIs_stim = genITIs() + ITIs_resp = ITIs_stim.slice(0) //make a copy of ITIs so that timing_stimulus & timing_response are the same + } +} + + +var practiceStopTrials = [] +//practiceStopTrials.push(feedback_block) +practiceStopTrials.push(instructions_block) +for (i = 0; i < practice_len; i++) { + var practice_block = { + type: 'stop-signal', + stimulus: getStim, + SS_stimulus: getStopStim, + SS_trial_type: getSSType, + data: { + trial_id: "practice_trial", + }, + is_html: true, + choices: [possible_responses[0][1], possible_responses[2][1]], + timing_stim: 1000, //1000 + timing_response: 2000, //2000 + response_ends_trial: false, + SSD: getSSD, + timing_SS: 500, //500 + timing_post_trial: 0, + on_finish: appendData, + prompt: prompt_text, + on_start: function(){ + stoppingTracker = [] + stoppingTimeTracker = [] + } + } + + var categorize_block = { + type: 'poldrack-single-stim', + data: { + trial_id: "practice-stop-feedback" + }, + choices: 'none', + stimulus: getCategorizeFeedback, + timing_post_trial: 0, + is_html: true, + timing_stim: 500, //500 + timing_response: 500, //500 + response_ends_trial: false, + + }; + + practiceStopTrials.push(practice_fixation_block) + practiceStopTrials.push(practice_block) + practiceStopTrials.push(categorize_block) + +} + + +var practiceStopCount = 0 +var practiceStopNode = { + timeline: practiceStopTrials, + loop_function: function(data) { + practiceStopCount = practiceStopCount + 1 + current_trial = 0 + stims = createTrialTypes(numTrialsPerBlock) + + var total_trials = 0 + + var sum_stop_rt = 0; + var sum_go_rt = 0; + + var sumGo_correct = 0; + var sumStop_correct = 0; + + var num_go_responses = 0; + var num_stop_responses = 0; + + var go_length = 0; + var stop_length = 0 + + for (i = 0; i < data.length; i++) { + if (data[i].trial_id == "practice_trial"){ + total_trials += 1 + } + + if (data[i].stop_signal_condition == "go"){ + go_length += 1 + if (data[i].rt != -1) { + num_go_responses += 1 + sum_go_rt += data[i].rt; + if (data[i].key_press == data[i].correct_response) { + sumGo_correct += 1 + } + } + } else if (data[i].stop_signal_condition == "stop") { + stop_length += 1 + if (data[i].rt != -1){ + num_stop_responses += 1 + sum_stop_rt += data[i].rt + } else if (data[i].rt == -1){ + sumStop_correct += 1 + } + } + } + + var average_rt = sum_go_rt / num_go_responses; + var missed_responses = (go_length - num_go_responses) / go_length + + var aveShapeRespondCorrect = sumGo_correct / go_length + + var stop_signal_respond = num_stop_responses / stop_length + + + + + feedback_text = "
    Please take this time to read your feedback and to take a short break." //Press any button to continue." + + if (practiceStopCount == practice_thresh) { + feedback_text += '

    Done with this practice. The test session will begin shortly.' + exp_phase = "test" + return false; + + } + + if ((aveShapeRespondCorrect > accuracy_thresh) && (stop_signal_respond < maxStopCorrectPractice) && (stop_signal_respond > minStopCorrectPractice)){ + feedback_text += '

    Done with this practice. The test session will begin shortly.' + exp_phase = "test" + return false; + + } else { + if (aveShapeRespondCorrect < accuracy_thresh) { + feedback_text += + '

    We are going to try practice again to see if you can achieve higher accuracy. Remember:
    ' + + prompt_text_list + } + if (average_rt > rt_thresh) { + feedback_text += + '

    You have been responding too slowly, please respond to each shape as quickly and as accurately as possible.' + } + if (missed_responses > missed_response_thresh){ + if(aveShapeRespondCorrect < accuracy_thresh){ + feedback_text += + '

    We have detected a number of trials that required a response, where no response was made. Please ensure that you are responding accurately and quickly to the shapes.' + + + } else { + feedback_text += + '

    We have detected a number of trials that required a response, where no response was made. Please ensure that you are responding accurately and quickly to the shapes.
    ' + + prompt_text_list + } + } + + + if (stop_signal_respond === maxStopCorrectPractice){ + feedback_text += + '

    You have not been stopping your response when stars are present. Please try your best to stop your response if you see a star.' + } + + if (stop_signal_respond === minStopCorrectPractice){ + feedback_text += + '

    You have been responding too slowly. Please respond as quickly and accurately to each stimulus that requires a response.' + + } + + feedback_text += '

    Redoing this practice.' + return true + + } + } +} + +var testTrials = [] +testTrials.push(feedback_block) +for (i = 0; i < numTrialsPerBlock; i++) { + + var test_block = { + type: 'stop-signal', + stimulus: getStim, + SS_stimulus: getStopStim, + SS_trial_type: getSSType, + data: { + trial_id: "test_trial" + }, + is_html: true, + choices: [possible_responses[0][1], possible_responses[2][1]], + timing_stim: 1000, //1000 + timing_response: 2000, //2000 + response_ends_trial: false, + SSD: getSSD, + timing_SS: 500, //500 + timing_post_trial: 0, + on_finish: appendData, + on_start: function(){ + stoppingTracker = [] + stoppingTimeTracker = [] + } + } + testTrials.push(ITI_fixation_block) + testTrials.push(test_block) +} +//testTrials.push(feedback_block) + +var testCount = 0 +var testNode = { + timeline: testTrials, + loop_function: function(data) { + current_trial = 0 + testCount += 1 + stims = createTrialTypes(numTrialsPerBlock) + + var total_trials = 0 + + var sum_stop_rt = 0; + var sum_go_rt = 0; + + var sumGo_correct = 0; + var sumStop_correct = 0; + + var num_go_responses = 0; + var num_stop_responses = 0; + + var go_length = 0; + var stop_length = 0 + + for (i = 0; i < data.length; i++) { + if (data[i].trial_id == "test_trial"){ + total_trials += 1 + } + + if (data[i].stop_signal_condition == "go"){ + go_length += 1 + if (data[i].rt != -1) { + num_go_responses += 1 + sum_go_rt += data[i].rt; + if (data[i].key_press == data[i].correct_response) { + sumGo_correct += 1 + } + } + } else if (data[i].stop_signal_condition == "stop") { + stop_length += 1 + if (data[i].rt != -1){ + num_stop_responses += 1 + sum_stop_rt += data[i].rt + } else if (data[i].rt == -1){ + sumStop_correct += 1 + } + } + } + + var average_rt = sum_go_rt / num_go_responses; + var missed_responses = (go_length - num_go_responses) / go_length + + var aveShapeRespondCorrect = sumGo_correct / go_length + + var stop_signal_respond = num_stop_responses / stop_length + + + feedback_text = "
    Please take this time to read your feedback and to take a short break. Press any button to continue." + feedback_text += "

    You have completed: "+testCount+" out of "+numTestBlocks+" blocks of trials." + + if (testCount == numTestBlocks) { + feedback_text += '

    Done with this test.' //If you have been completing tasks continuously for an hour or more, please take a 15-minute break before starting again.' + + return false; + } else { + + if (aveShapeRespondCorrect < accuracy_thresh) { + feedback_text += + '

    Your accuracy is too low. Remember:
    ' + + prompt_text_list + } + if (average_rt > rt_thresh) { + feedback_text += + '

    You have been responding too slowly, please respond to each shape as quickly and as accurately as possible.' + } + if (missed_responses > missed_response_thresh){ + if(aveShapeRespondCorrect < accuracy_thresh){ + feedback_text += + '

    We have detected a number of trials that required a response, where no response was made. Please ensure that you are responding accurately and quickly to the shapes.' + + + } else { + feedback_text += + '

    We have detected a number of trials that required a response, where no response was made. Please ensure that you are responding accurately and quickly to the shapes.
    ' + + prompt_text_list + } + } + + if (stop_signal_respond > maxStopCorrect){ + feedback_text += + '

    You have not been stopping your response when stars are present. Please try your best to stop your response if you see a star.' + } + + if (stop_signal_respond < minStopCorrect){ + feedback_text += + '

    You have been responding too slowly. Please respond as quickly and accurately to each stimulus that requires a response.' + + } + + + + return true; + } + } +} + + +/* ************************************ */ +/* Set up Experiment */ +/* ************************************ */ + +var stop_signal_single_task_network__fmri_experiment = [] + +stop_signal_single_task_network__fmri_experiment.push(SSD_setup_block) //exp_input + +test_keys(stop_signal_single_task_network__fmri_experiment, [possible_responses[0][1], possible_responses[2][1]]) +//stop_signal_single_task_network__fmri_experiment.push(practiceStopNode) +//stop_signal_single_task_network__fmri_experiment.push(feedback_block); + +setup_fmri_intro(stop_signal_single_task_network__fmri_experiment) +stop_signal_single_task_network__fmri_experiment.push(testNode); +//stop_signal_single_task_network__fmri_experiment.push(feedback_block); + +stop_signal_single_task_network__fmri_experiment.push(end_block); + + + + + diff --git a/stop_signal_single_task_network__fmri/images/circle.png b/stop_signal_single_task_network__fmri/images/circle.png new file mode 100644 index 0000000000000000000000000000000000000000..4ed81f99aaf8e3ff7f86a28e06d37dd30866f3a8 GIT binary patch literal 4152 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 literal 0 HcmV?d00001 diff --git a/stop_signal_single_task_network__fmri/images/pentagon.png b/stop_signal_single_task_network__fmri/images/pentagon.png new file mode 100644 index 0000000000000000000000000000000000000000..51f7dd50a392a69d12d59d69c1d360738fa6ebd0 GIT binary patch literal 4010 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 literal 0 HcmV?d00001 diff --git a/stop_signal_single_task_network__fmri/images/square.png b/stop_signal_single_task_network__fmri/images/square.png new file mode 100644 index 0000000000000000000000000000000000000000..3a4ef24a06f9ba985758d18acdfeedb889635892 GIT binary patch literal 1993 zcmeHH`#;kQ0R6IXL!_ElV&zfMkjRwBJkoaas;SIdqL#0N8{?xSd$nvY+@( zah-G7=b!)pn#Z`h`XF6hAwKcgNKAAD0KoF|Prk#B`)+f}!3LIVI+fL5Qv>JHPoe^v zx9dJ;DI#xHd~wlj9{9(!{N<%sT@>%&)1jD?v_*NWstiPaqNHCyaM4xmS$r}p*N8+p zgNKdE9WIW+&)-~3uff&QQLRBNMj<`bPMGK@dSe5Bak@l6LF$C^7lLePh1Y46+lNo> z+{kv`ErnM;AbPa~n#-HBGLDWgLw0uaZI#Am*6^23Rab(HN?oE)J6zTmW5`9-hila# zeD|gKy%WxF#r7X}n44t#g%NHG_Aw9W8K}ch(|gX`&MoIPnSM0x`Eg+XQnac>FTKgo z8#=Aq(w}@hVYVcU^}k%@xrfzF*@epvO_`l15#h0s1#j#f-3zj` z`XIr~h?JB;+!`n;A@7;-nSn#Rtr)-EpOq@IjA7#j$XgRdPPf35DwA#Ti2=pq2}qf* z?3C=d%u5z5(>eR$1`aJlGIpgH2Ik!x76`*7U#}zw3|o1&2BR!1@)`q@k*|KYK+qA- zdud$gCS*8ApZk?>|BTQ^fGSeE+J}c1>tXbCe~^~~nBbfRg*C*ix<+x1Wg^1HxoQpQ z*!?|J3U~;TOMI>ohtNC6xJ6?qT{2_{pL*O|r6`}z1Jm&k%Atb~`;&JLCc!T!kDb$+ zt(v9A<&U;lh)_kmNo!I~RbZX8n}j~#Y3Gyl`QS99P6X-v%b=?J8?;`MY$Tab zgh{pdXxm+*7eVi%)XTm%Ax5$iKQ_?h0%2vgZ!_j!dmEAD<}ZBzCQc2~X}cS1b60)7 zV_LQ$R3M0y&?Y1Cf@9K7Mcm63Ei@2E*wXYNbNvD~;t*&&0BCLb3AuAL&iX@uQju=X zz67~hUcF~Pn6`TuwW#;i237b?{^2^fX^kpNZ8VLG(FP*YAm5f8k7O%kdw1h2CbYFk z;y3rrQW(jtwZbnys6$l2cwgz>`B;VEseAfD`+hr7tNvnGEgetlZypT^R9+Fvvn8vE zcoMX$UE(m1hTX+5KNYIMCzWQ2@Et+XBL(tn$|-jYI-LfXt8C$kvOPF|atChPmzdZz zf&9h21z^DP7?z*{^g8OX_h{!^_MEs&cv3&8Kx{;B$Ng^_x$KNOtQm6DnLZqm) m#C>%Wwu>PhS$0H0>$1wSqpoL0u^W1Qp8)cRms_n%X!?I(czFQ; literal 0 HcmV?d00001 diff --git a/stop_signal_single_task_network__fmri/images/stopSignal.png b/stop_signal_single_task_network__fmri/images/stopSignal.png new file mode 100644 index 0000000000000000000000000000000000000000..8b8f9fcfe149666a363995d6e03d996471ee0f29 GIT binary patch literal 24280 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

    S-||qrVgt*6lp`>vQ7m1@k?jo{=-6yqJ0& zs}E>E3X9d8d)wv{`(n9o8DHA}%Jlitc7oc@Sa4o5#1qyy7lSKW_yKEy3A#zr!Ex-3 z6TMP^`gUb&$sD&4#+CNCVyq0=uCFW%*RMwSQ01+Wg?@?#6;@@GLMAFt*TcHRkF@j? zfvs}4SQTG#YZTs(uw*(U$#)6?G$swAldBgwU)W&$Q3_ybGs=}!r7b0Mq~k_Xsf-a_ zua4d+w-|qG1^oRmg5HAintHh`VDuDQ1bhgiz$>3qZtEg;OeF62p3#3ScVc^Y-lgu# zlUlwOTA{1$f7&#FD>-Y;LCoZs{Z_ndG_K{r_N(NG&%fAQc|Lf6V}| zJfSExoUbA7hPtSBvfXVE{~ePI1^F^(W<69FkKD^%=6Vk^dw@uC5Krjhr2Gx_MTY-1 zp~M6~fAs_Fx}yADg7KA9L6+#rz?YTe)u9tWQU{D9h>Dszn?j?OExi7{qBbETNoQGZ z-vIv9oKvdYVa#y-u&Fd1^Jc@PvPy16h7PT$?&+d4zG0N>(~C(wH(A!mAlNnsqFBOJ zT#T}^dEwxHO~I}~;_Z3N+-UaRw1E_;?3RF6eV7 VTy1&{jH}*u5q{Z`an3*K{{Zrj&qV+L literal 0 HcmV?d00001 diff --git a/stop_signal_single_task_network__fmri/images/trapezoid.png b/stop_signal_single_task_network__fmri/images/trapezoid.png new file mode 100644 index 0000000000000000000000000000000000000000..ca28507aadc5ee0fbeedd4e15c6651214715f76a GIT binary patch literal 3018 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 literal 0 HcmV?d00001 diff --git a/stop_signal_single_task_network__fmri/images/triangle.png b/stop_signal_single_task_network__fmri/images/triangle.png new file mode 100644 index 0000000000000000000000000000000000000000..93f4bbbc3c9a9f056fa021dc3a05a8974633c500 GIT binary patch literal 2837 zcmW+%c|4R`7#__XTZS3UpoyEcL`YGz8Dp|UGTHZ~$P&huK_M|lwzSB#Gz=0Zqhw#A zDcuS)wp6x|J%h&8pt#>Rf1LBZ@AG@k^FHtU{eI`9SXr9DMKPif2n23sioXPWi@+r; z2oNAzRhOETNzKVV zWv3v*GCa73EqfAU+2o?ROS3b{IGN|%n+%@|%H~(Jsi+@ml zs!BqB%y?tv(755q>gh>2%>xt%Pg3^OVdgQ}{StcC3#wk(sU<_TYLhB&{v6ZZxF*Jx zO{i76sIh=)>WU^@U&{6Db7;C~wZqa4KJK&{y*mGM=0N6TbLOC1c0V}K5EvTObGCw< zAJBB-&Y9cN$nlDPT-K}-_MuN0-JKG%nEsso>Ig@}V#X;}YOz>_V?rG7@BB!KLB!2{ zUHFUT=n6|n}YDzd#>`$VVDJzj%o-GLD7mB+3{K5n=Ki=H?L2t&LbIFok{gd&t0X6q~pwsS;%)6k4C`J9u- zE4!i<*iqP<(O<7hFFjq#4@v*hq_u4QU}#z=w&JNv^;$=)01c~o|OFKeBNRqV^WZ()AA(}dd zK_JqS;1ak>?E`KI!H;HmLmQI7(uj73vMwrlH3_Y-Tk@~GLT_zdu~(1dSRJA|uD9I#<{qsU zZ0GY+=Uc)3|CV(;JHuL@@_^;i+ZlcXwJVnH{B*>=(8e$o2_LPG7cfV^6z;w2<6`eo znINTzX$oSF+zzy5E8>}r%^}TOt)fm8-?=(8SNx^DVJZSX8~ARzCjk8t(aZKeH6vSM z#|M9uZC16S0I)jRd}d#}IUfvox{%QdGOPWaXEv+r6QmR{J%hcR=D^azBnr8?-siDI z-6gP6l+)LUvS%QbIJDliTJ%ZODbZKYm2@Cl@ol@33PRNJ%U?h zOkm^i%sgkQWq7eFNNwq?8te51TO~ydd;JO3;j0dQSr|>L0KHZ^OV3IdtAW(~Pg2WQ z!a-G+kv18vj4IHTc63arv>JGxcV+i~?p6e#E2BR%Jsj)>!`(LTetqHRQFY&6%i>5VC$+FPZU@IC8m7`oZ6jpGJKsRT-p<`oFdZL z7U;m}7J~0-;v3S~9_;9rQ5xUQZDYMuaBkuG{u%O$h7+pe!p+^+%60J_+KTyhMkrY&?ER4QZ~~DoT-J|( zy%QyZNtbY0FOY~4)qv!OFf)LXa9Kz%iLCk*>FEF`SShu$F|&7g* zS0nuzOmL_Hv63PBi2yMCQCpBZ^o2fQCql3~mNr&1Rsx3Azpnec1>Yw-D+AT!Gjb!I zgJDN;oi(@VEhhUsFenAtGmDCFa}@xsx8`o1!(^KRs6g7$#XNpke64KebdW#E94I%! z>-D*5%XF5cee)eI*QZuu-0lNYK5=8fk>O9efJ4bfoYI}Gt(eFKT5jwuW&hM zIF!w(Wp|W;zb{BNu3&AtF*EmbCS(3<_T0XwP8@g5Ug3tfna$2qecqq)>I+q0Ior+q zczEJtxMbnTc2W+J!|~2u=?~v7u-y9P8U3L{G~Dr)#Jn2STV(tRcUJS!cSU;phUjr=aKL~+{8$6 literal 0 HcmV?d00001 diff --git a/stop_signal_single_task_network__fmri/style.css b/stop_signal_single_task_network__fmri/style.css new file mode 100644 index 000000000..f0766911f --- /dev/null +++ b/stop_signal_single_task_network__fmri/style.css @@ -0,0 +1,118 @@ +/*******************************************************/ +/*********** Network Default CSS Styles **********/ +/*******************************************************/ + +.display_stage { + position: fixed; + background: gray; + left: 5vw; + top: 2vh; + height: 94vh; + width: 90vw; + border-radius: 15px; + border: 1vh solid #D0D0D0; + z-index: 0; +} + +.display_stage > div, .display_stage > p { + color: white; +} + +.flanker-text { + text-align: center; + font-size: 50px; + position: relative; + top: 50%; + transform: translateY(-50%); + -webkit-transform: translateY(-50%); +} + +.fb_box { + width:35vw; + height: 20vh; + position:absolute; + top:50%; + left:50%; + margin-right:-50%; + transform: translate(-50%,-175%); +} + +.picture_box { + width: 60%; + height: 60%; + position:absolute; + top:50%; + left:50%; + transform: translate(-50%,-50%); + margin-right:0%; + background-color: none; + text-align: center; +} + + +.fixation { + text-align: center; + font-size: 50px; + position: relative; + top: 50%; + transform: translateY(-50%); + -webkit-transform: translateY(-50%); +} + +.cue-text { + width:20vw; + height: 20vh; + position:absolute; + top:50%; + left:50%; + margin-right:-50%; + transform: translate(-50%,-50%); +} + +.bigbox { +width:100%; +margin: auto; +min-height: 100%; +position:absolute; +top:0%; +left:0%; +margin-right:0%; +background-color: none; +text-align: center; +} + +.instructBox { + width: 80vw; + height: 10vw; + position:absolute; + top:10%; + left:50%; + margin-right: 0%; + transform: translate(-50%,-50%); + background-color: none; + font-size: 24px; +} + +.prompt_box { + width: 75%; + height: 20%; + position:absolute; + top:10%; + left:12.5%; + transform: translate(-50%,-45%); + margin-right:0%; + background-color: none; + text-align: center; +} + +img.center { + height: auto; + width: auto\9; /* ie8 */ + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + max-height: 65%; +} \ No newline at end of file From 6a73f64d81c6f6afa8b8220380fb902b8dd0b0d3 Mon Sep 17 00:00:00 2001 From: henrymj Date: Wed, 20 Nov 2019 16:20:03 -0800 Subject: [PATCH 2/3] clean up stop_signal_single_task_network__fmri --- n_back_single_task_network__fmri/config.json | 51 ++ .../experiment.js | 753 ++++++++++++++++++ .../images/lowercase_B.png | Bin 0 -> 1651 bytes .../images/lowercase_D.png | Bin 0 -> 1624 bytes .../images/lowercase_G.png | Bin 0 -> 1752 bytes .../images/lowercase_T.png | Bin 0 -> 1208 bytes .../images/lowercase_V.png | Bin 0 -> 1513 bytes .../images/uppercase_B.png | Bin 0 -> 1503 bytes .../images/uppercase_D.png | Bin 0 -> 1494 bytes .../images/uppercase_G.png | Bin 0 -> 1689 bytes .../images/uppercase_T.png | Bin 0 -> 1173 bytes .../images/uppercase_V.png | Bin 0 -> 1729 bytes n_back_single_task_network__fmri/style.css | 146 ++++ .../experiment.js | 17 +- 14 files changed, 956 insertions(+), 11 deletions(-) create mode 100644 n_back_single_task_network__fmri/config.json create mode 100644 n_back_single_task_network__fmri/experiment.js create mode 100644 n_back_single_task_network__fmri/images/lowercase_B.png create mode 100644 n_back_single_task_network__fmri/images/lowercase_D.png create mode 100644 n_back_single_task_network__fmri/images/lowercase_G.png create mode 100644 n_back_single_task_network__fmri/images/lowercase_T.png create mode 100644 n_back_single_task_network__fmri/images/lowercase_V.png create mode 100644 n_back_single_task_network__fmri/images/uppercase_B.png create mode 100644 n_back_single_task_network__fmri/images/uppercase_D.png create mode 100644 n_back_single_task_network__fmri/images/uppercase_G.png create mode 100644 n_back_single_task_network__fmri/images/uppercase_T.png create mode 100644 n_back_single_task_network__fmri/images/uppercase_V.png create mode 100644 n_back_single_task_network__fmri/style.css diff --git a/n_back_single_task_network__fmri/config.json b/n_back_single_task_network__fmri/config.json new file mode 100644 index 000000000..3e01e1a02 --- /dev/null +++ b/n_back_single_task_network__fmri/config.json @@ -0,0 +1,51 @@ +[ + { + "name": "N-Back Single Task Network fMRI", + "template":"jspsych", + "run": [ + "static/js/math.min.js", + "static/js/jspsych/jspsych.js", + "static/js/jspsych/plugins/jspsych-call-function.js", + "static/js/jspsych/poldrack_plugins/jspsych-poldrack-text.js", + "static/js/jspsych/poldrack_plugins/jspsych-poldrack-instructions.js", + "static/js/jspsych/poldrack_plugins/jspsych-attention-check.js", + "static/js/jspsych/poldrack_plugins/jspsych-poldrack-single-stim.js", + "static/js/jspsych/poldrack_plugins/jspsych-poldrack-categorize.js", + "static/js/jspsych/plugins/jspsych-survey-text.js", + "static/js/jspsych/poldrack_plugins/jspsych-stop-signal.js", + "static/js/utils/poldrack_fmri_utils.js", + "experiment.js", + "static/css/jspsych.css", + "static/css/default_style.css", + "style.css", + "https://cdnjs.cloudflare.com/ajax/libs/mathjs/3.13.3/math.js" + + + ], + "exp_id": "n_back_single_task_network__fmri", + "cognitive_atlas_task_id": "tsk_4a57abb949e1a", + "contributors": [ + "Patrick Bissett", + "Jamie Li", + "McKenzie Hagen", + "Russell Poldrack" + ], + "time":30, + "reference": "http://psycnet.apa.org/journals/xlm/37/2/392/", + "notes": "Condition refers to whether the trial is practice or high_freq/low_freq (the two test conditions) as well as whether it was a go or SS trial", + "publish":"True", + "experiment_variables": [{ + "name":"credit_var", + "type":"credit", + "datatype": "boolean", + "description":"True if avg_rt > 200" + }], + "deployment_variables":{"jspsych_init": + {"fullscreen": true, + "display_element": "getDisplayElement", + "on_trial_finish": "addID('n_back_single_task_network__fmri')"} + } + + } +] + diff --git a/n_back_single_task_network__fmri/experiment.js b/n_back_single_task_network__fmri/experiment.js new file mode 100644 index 000000000..3fe6b5696 --- /dev/null +++ b/n_back_single_task_network__fmri/experiment.js @@ -0,0 +1,753 @@ +/* ************************************ */ +/* Define Helper Functions */ +/* ************************************ */ + +function genITIs() { + mean_iti = .5 //mean and standard deviation of 0.5 secs + min_thresh = 0 + max_thresh = 4 + + lambda = 1/mean_iti + iti_array = [] + for (i=0; i < exp_len; i++) { + curr_iti = - Math.log(Math.random()) / lambda; + while (curr_iti > max_thresh || curr_iti < min_thresh) { + curr_iti = - Math.log(Math.random()) / lambda; + } + iti_array.push(curr_iti*1000) //convert ITIs from seconds to milliseconds + + } + return(iti_array) +} + +function getITI_stim() { //added for fMRI compatibility + var currITI = ITIs_stim.shift() + return currITI +} + +function getITI_resp() { //added for fMRI compatibility + var currITI = ITIs_resp.shift() + return currITI +} + +function getDisplayElement() { + $('

    ').appendTo('body') + return $('
    ').appendTo('body') +} + +function addID() { + jsPsych.data.addDataToLastTrial({exp_id: 'n_back_single_task_network__fmri'}) +} + + + +function assessPerformance() { + var experiment_data = jsPsych.data.getTrialsOfType('poldrack-single-stim') + var missed_count = 0 + var trial_count = 0 + var rt_array = [] + var rt = 0 + var correct = 0 + + //record choices participants made + var choice_counts = {} + choice_counts[-1] = 0 + choice_counts[77] = 0 + choice_counts[90] = 0 + for (var k = 0; k < possible_responses.length; k++) { + choice_counts[possible_responses[k][1]] = 0 + } + for (var i = 0; i < experiment_data.length; i++) { + if (experiment_data[i].trial_id == 'test_trial'){ + trial_count += 1 + rt = experiment_data[i].rt + key = experiment_data[i].key_press + choice_counts[key] += 1 + if (rt == -1) { + missed_count += 1 + } else { + rt_array.push(rt) + } + + if (key == experiment_data[i].correct_response){ + correct += 1 + } + } + } + + //calculate average rt + var avg_rt = -1 + if (rt_array.length !== 0) { + avg_rt = math.median(rt_array) + } + //calculate whether response distribution is okay + var responses_ok = true + Object.keys(choice_counts).forEach(function(key, index) { + if (choice_counts[key] > trial_count * 0.85) { + responses_ok = false + } + }) + var missed_percent = missed_count/trial_count + var accuracy = correct / trial_count + credit_var = (missed_percent < 0.25 && avg_rt > 200 && responses_ok && accuracy > 0.60) + jsPsych.data.addDataToLastTrial({final_credit_var: credit_var, + final_missed_percent: missed_percent, + final_avg_rt: avg_rt, + final_responses_ok: responses_ok, + final_accuracy: accuracy}) +} + + +var getResponse = function() { + return correct_response +} + + + +var getFeedback = function() { + return '

    ' + feedback_text + '

    ' +} + + +var randomDraw = function(lst) { + var index = Math.floor(Math.random() * (lst.length)) + return lst[index] +}; + + +var createTrialTypes = function(numTrialsPerBlock, delay){ + first_stims = [] + for (var i = 0; i < 3; i++){ + if (i < delay){ + n_back_condition = 'N/A' + } else { + n_back_condition = n_back_conditions[Math.floor(Math.random() * 5)] + } + probe = randomDraw(letters) + correct_response = possible_responses[1][1] + if (n_back_condition == 'match'){ + correct_response = possible_responses[0][1] + probe = randomDraw([first_stims[i - delay].probe.toUpperCase(), first_stims[i - delay].probe.toLowerCase()]) + } else if (n_back_condition == "mismatch"){ + probe = randomDraw('bBdDgGtTvV'.split("").filter(function(y) {return $.inArray(y, [first_stims[i - delay].probe.toLowerCase(), first_stims[i - delay].probe.toUpperCase()]) == -1})) + correct_response = possible_responses[1][1] + } + + + first_stim = { + n_back_condition: n_back_condition, + probe: probe, + correct_response: correct_response, + delay: delay + } + first_stims.push(first_stim) + } + + stims = [] + + for(var numIterations = 0; numIterations < numTrialsPerBlock/n_back_conditions.length; numIterations++){ + for (var numNBackConds = 0; numNBackConds < n_back_conditions.length; numNBackConds++){ + + n_back_condition = n_back_conditions[numNBackConds] + + stim = { + n_back_condition: n_back_condition + } + stims.push(stim) + } + } + + stims = jsPsych.randomization.repeat(stims,1) + stims = first_stims.concat(stims) + + stim_len = stims.length + + new_stims = [] + for (i = 0; i < stim_len; i++){ + if (i < 3){ + stim = stims.shift() + n_back_condition = stim.n_back_condition + probe = stim.probe + correct_response = stim.correct_response + delay = stim.delay + } else { + stim = stims.shift() + n_back_condition = stim.n_back_condition + + if (n_back_condition == "match"){ + probe = randomDraw([new_stims[i - delay].probe.toUpperCase(), new_stims[i - delay].probe.toLowerCase()]) + correct_response = possible_responses[0][1] + } else if (n_back_condition == "mismatch"){ + probe = randomDraw('bBdDgGtTvV'.split("").filter(function(y) {return $.inArray(y, [new_stims[i - delay].probe.toLowerCase(), new_stims[i - delay].probe.toUpperCase()]) == -1})) + correct_response = possible_responses[1][1] + + } + } + + stim = { + n_back_condition: n_back_condition, + probe: probe, + correct_response: correct_response, + delay: delay + } + + new_stims.push(stim) + } + return new_stims +} + + +var getStim = function(){ + stim = stims.shift() + n_back_condition = stim.n_back_condition + probe = stim.probe + correct_response = stim.correct_response + delay = stim.delay + + if (probe == probe.toUpperCase()) { + letter_case = 'uppercase' + } else if (probe == probe.toLowerCase()) { + letter_case = 'lowercase' + } + + return task_boards[0]+ preFileType + letter_case + '_' + probe.toUpperCase() + fileTypePNG + task_boards[1] +} + +var getResponse = function(){ + return correct_response +} + +var appendData = function(){ + curr_trial = jsPsych.progress().current_trial_global + trial_id = jsPsych.data.getDataByTrialIndex(curr_trial).trial_id + current_trial+=1 + + + if (trial_id == 'practice_trial'){ + current_block = practiceCount + } else if (trial_id == 'test_trial'){ + current_block = testCount + } + + jsPsych.data.addDataToLastTrial({ + n_back_condition: n_back_condition, + probe: probe, + correct_response: correct_response, + delay: delay, + current_trial: current_trial, + current_block: current_block, + letter_case: letter_case + }) + + if (jsPsych.data.getDataByTrialIndex(curr_trial).key_press == correct_response){ + jsPsych.data.addDataToLastTrial({ + correct_trial: 1, + }) + + } else if (jsPsych.data.getDataByTrialIndex(curr_trial).key_press != correct_response){ + jsPsych.data.addDataToLastTrial({ + correct_trial: 0, + }) + + } +} + +/* ************************************ */ +/* Define Experimental Variables */ +/* ************************************ */ +// generic task variables +var sumInstructTime = 0 //ms +var instructTimeThresh = 0 ///in seconds +var credit_var = 0 + + +var practice_len = 15 // must be divisible by 5 +var exp_len = 150 // must be divisible by 5 +var numTrialsPerBlock = 50 // 50, must be divisible by 5 and we need to have a multiple of 3 blocks (3,6,9) in order to have equal delays across blocks +var numTestBlocks = exp_len / numTrialsPerBlock +var practice_thresh = 3 // 3 blocks of 15 trials + +var accuracy_thresh = 0.75 +var rt_thresh = 1000 +var missed_thresh = 0.10 + +var delays = jsPsych.randomization.repeat([1, 2, 3], numTestBlocks / 3) + +var delay = 1 + +var pathSource = "/static/experiments/n_back_single_task_network__fmri/images/" +var fileTypePNG = ".png'>" +var preFileType = "Match the current letter to the letter that appeared some number of trials ago' + + '
  • If they match, press your '+possible_responses[0][0]+'
  • ' + + '
  • If they mismatch, press your '+possible_responses[1][0]+'
  • ' + + '' + +var prompt_text = '
    '+ + '

    Match the current letter to the letter that appeared 1 trial ago

    ' + + '

    If they match, press your '+possible_responses[0][0]+'

    ' + + '

    If they mismatch, press your '+possible_responses[1][0]+'

    ' + + '
    ' + +var current_trial = 0 +var current_block = 0 + +//PRE LOAD IMAGES HERE +var pathSource = "/static/experiments/n_back_single_task_network__fmri/images/" +var lettersPreload = ['B','D','G','T','V'] +var casePreload = ['lowercase','uppercase'] +var images = [] + +for(i = 0; i < lettersPreload.length; i++){ + for(x = 0; x < casePreload.length; x++){ + images.push(pathSource + casePreload[x] + '_' + lettersPreload[i] + '.png') + } +} + +jsPsych.pluginAPI.preloadImages(images); +/* ************************************ */ +/* Define Game Boards */ +/* ************************************ */ + +var task_boards = ['
    ','
    '] + +var stims = createTrialTypes(practice_len, delay) + +/* ************************************ */ +/* Set up jsPsych blocks */ +/* ************************************ */ +var SSD_setup_block = { + type: 'survey-text', + data: { + trial_id: "SSD_setup" + }, + questions: [ + [ + "

    SSD:

    " + ] + ], on_finish: function(data) { + SSD = parseInt(data.responses.slice(7, 10)) + SSD = math.max(100,math.min(400,SSD)) + ITIs_stim = genITIs() + ITIs_resp = ITIs_stim.slice(0) //make a copy of ITIs so that timing_stimulus & timing_response are the same + } +} + + + +var end_block = { + type: 'poldrack-text', + data: { + trial_id: "end" + }, + timing_response: 180000, + text: '

    Thanks for completing this task!

    Press enter to continue.

    ', + cont_key: [13], + timing_post_trial: 0, + on_finish: function(){ + assessPerformance() + } +}; + +//Set up post task questionnaire +var post_task_block = { + type: 'survey-text', + data: { + exp_id: "n_back_single_task_network__fmri", + trial_id: "post task questions" + }, + questions: ['

    Please summarize what you were asked to do in this task.

    ', + '

    Do you have any comments about this task?

    '], + rows: [15, 15], + timing_response: 360000, + columns: [60,60] +}; + + +var instructions_block = { + type: 'poldrack-single-stim', + stimulus: '
    '+ + '

    In this task, you will see a letter on every trial.

    '+ + '

    You will be asked to match the current letter, to the letter that appeared either 1, 2, 3 trials ago depending on the delay given to you for that block.

    '+ + '

    Press your '+possible_responses[0][0]+' if the letters match, and your '+possible_responses[1][0]+' if they mismatch.

    '+ + '

    Your delay (the number of trials ago which you must match the current letter to) will change from block to block. You will be given the delay at the start of every block of trials.

    '+ + '

    Capitalization does not matter, so "T" matches with "t".

    '+ + '

    Your delay for this upcoming practice round is 1.

    '+ + '

    During practice, you will see a reminder of the rules. This will be removed for the test.

    '+ + '

    To let the experimenters know when you are ready to begin, please press any button.

    '+ + '
    ', + is_html: true, + choices: [32], + data: { + trial_id: "instruction", + }, + timing_post_trial: 0, + timing_stim: -1, //until response + timing_response: -1, //until response + response_ends_trial: true +}; + +// var instructions_block = { +// type: 'poldrack-instructions', +// data: { +// trial_id: "instruction" +// }, +// pages: [ +// '
    '+ +// '

    In this task, you will see a letter on every trial.

    '+ +// '

    You will be asked to match the current letter, to the letter that appeared either 1, 2, 3 trials ago depending on the delay given to you for that block.

    '+ +// '

    Press your '+possible_responses[0][0]+' if the letters match, and your '+possible_responses[1][0]+' if they mismatch.

    '+ +// '

    Your delay (the number of trials ago which you must match the current letter to) will change from block to block. You will be given the delay at the start of every block of trials.

    '+ +// '

    Capitalization does not matter, so "T" matches with "t".

    '+ +// '

    Your delay for this upcoming practice round is 1.

    '+ +// '

    During practice, you will see a reminder of the rules. This will be removed for the test.

    '+ +// '

    To let the experimenters know when you are ready to begin, please press any button.

    '+ +// '
    ', +// /* +// '
    '+ +// '

    For example, if your delay for the block was 2, and the letters you received for the first 4 trials were V, B, v, and V, you would respond, no match, no match, match, and no match.

    '+ +// '

    The first letter in that sequence, V, DOES NOT have a preceding trial to match with, so press the '+possible_responses[1][0]+' on those trials.

    '+ +// '

    The second letter in that sequence, B, ALSO DOES NOT have a trial 2 ago to match with, so press the '+possible_responses[1][0]+' on those trials.

    '+ +// '

    The third letter in that sequence, v, DOES match the letter from 2 trials, V, so you would respond match.

    '+ +// '

    The fourth letter in that sequence, V, DOES NOT match the letter from 2 trials ago, B, so you would respond no match.

    '+ +// '
    ', +// */ +// '
    ' + +// '

    We will start practice when you finish instructions. Your delay for this practice round is 1. Please make sure you understand the instructions before moving on. During practice, you will receive a reminder of the rules. This reminder will be taken out for test.

    '+ +// '

    To avoid technical issues, please keep the experiment tab (on Chrome or Firefox) active and in full-screen mode for the whole duration of each task.

    '+ +// '
    ' +// ], +// allow_keys: false, +// show_clickable_nav: true, +// timing_post_trial: 1000 +// }; + + + +/* This function defines stopping criteria */ + +var start_test_block = { + type: 'poldrack-text', + data: { + trial_id: "instruction" + }, + timing_response: 180000, + text: '
    '+ + '

    We will now begin the test portion.

    '+ + '

    You will be asked to match the current letter, to the letter that appeared either 1, 2, 3 trials ago depending on the delay given to you for that block.

    '+ + '

    Press your '+possible_responses[0][0]+' if they match, and your '+possible_responses[1][0]+' if they mismatch.

    '+ + '

    Your delay (the number of trials ago which you must match the current letter to) will change from block to block.

    '+ + '

    Capitalization does not matter, so "T" matches with "t".

    '+ + + '

    You will no longer receive the rule prompt, so remember the instructions before you continue. Press Enter to begin.

    '+ + '
    ', + cont_key: [13], + timing_post_trial: 1000, + on_finish: function(){ + feedback_text = "Your delay for this block is "+delay+". Please match the current letter to the letter that appeared "+delay+" trial(s) ago. Press enter to begin." + } +}; + +var start_control_block = { + type: 'poldrack-text', + data: { + trial_id: "instruction" + }, + timing_response: 180000, + text: '
    '+ + '

    For this block of trials, you do not have to match letters. Instead, indicate whether the current letter is a T (or t).

    '+ + '

    Press your '+possible_responses[0][0]+' if the current letter was a T (or t) and your '+possible_responses[1][0]+' if not.

    '+ + '

    You will no longer receive the rule prompt, so remember the instructions before you continue. Press Enter to begin.

    '+ + '
    ', + cont_key: [13], + timing_post_trial: 1000, + on_finish: function(){ + feedback_text = "We will now start this block. Press enter to begin." + } +}; + + +var practice_fixation_block = { + type: 'poldrack-single-stim', + stimulus: '
    +
    ', + is_html: true, + choices: 'none', + data: { + trial_id: "practice_fixation" + }, + timing_response: 500, //500 + timing_post_trial: 0, +} + +var ITI_fixation_block = { + type: 'poldrack-single-stim', + stimulus: '
    +
    ', + is_html: true, + choices: 'none', + data: { + trial_id: "fixation", + }, + timing_post_trial: 0, + timing_stim: getITI_stim, //500 + timing_response: getITI_resp //500 +}; + + + +var feedback_text = + 'Welcome to the experiment. This experiment will take around 5 minutes. Press enter to begin.' +var feedback_block = { + type: 'poldrack-single-stim', + data: { + trial_id: "practice-no-stop-feedback" + }, + choices: 'none', + stimulus: getFeedback, + timing_post_trial: 0, + is_html: true, + timing_response: 10000, + response_ends_trial: false, + +}; + + +/* ************************************ */ +/* Set up timeline blocks */ +/* ************************************ */ + +var practiceTrials = [] +practiceTrials.push(instructions_block) +for (i = 0; i < practice_len + 3; i++) { + var practice_block = { + type: 'poldrack-categorize', + stimulus: getStim, + is_html: true, + choices: [possible_responses[0][1],possible_responses[1][1]], + key_answer: getResponse, + data: { + trial_id: "practice_trial" + }, + correct_text: '
    Correct!
    ' + prompt_text, + incorrect_text: '
    Incorrect
    ' + prompt_text, + timeout_message: '
    Respond Faster!
    ' + prompt_text, + timing_stim: 1000, //1000 + timing_response: 2000, //2000 + timing_feedback_duration: 500, + show_stim_with_feedback: false, + timing_post_trial: 0, + on_finish: appendData, + prompt: prompt_text + } + practiceTrials.push(practice_fixation_block) + practiceTrials.push(practice_block) +} + +var practiceCount = 0 +var practiceNode = { + timeline: practiceTrials, + loop_function: function(data) { + practiceCount += 1 + stims = createTrialTypes(practice_len, delay) + current_trial = 0 + + var sum_rt = 0 + var sum_responses = 0 + var correct = 0 + var total_trials = 0 + var mismatch_press = 0 + + for (var i = 0; i < data.length; i++){ + if (data[i].trial_id == "practice_trial"){ + total_trials+=1 + if (data[i].rt != -1){ + sum_rt += data[i].rt + sum_responses += 1 + if (data[i].key_press == data[i].correct_response){ + correct += 1 + + } + } + + if (data[i].key_press == possible_responses[1][1]){ + mismatch_press += 1 + } + + } + + } + + var accuracy = correct / total_trials + var missed_responses = (total_trials - sum_responses) / total_trials + var ave_rt = sum_rt / sum_responses + var mismatch_press_percentage = mismatch_press / total_trials + + feedback_text = "
    Please take this time to read your feedback and to take a short break." // Press enter to continue" + + if (accuracy > accuracy_thresh){ + feedback_text += + '

    Done with this practice. The test session will begin shortly.' + delay = delays.pop() + stims = createTrialTypes(numTrialsPerBlock, delay) + return false + + } else if (accuracy < accuracy_thresh){ + if (missed_responses > missed_thresh){ + feedback_text += + '

    You have not been responding to some trials. Please respond on every trial that requires a response.' + } + + if (ave_rt > rt_thresh){ + feedback_text += + '

    You have been responding too slowly.' + } + + if (mismatch_press_percentage >= 0.90){ + feedback_text += + '

    Please do not simply press your "'+possible_responses[1][0]+'" to every stimulus. Please try to identify the matches and press your "'+possible_responses[0][0]+'" when they occur.' + } + + if (practiceCount == practice_thresh){ + feedback_text += + '

    Done with this practice. The test session will begin shortly.' + delay = delays.pop() + stims = createTrialTypes(numTrialsPerBlock, delay) + return false + } + + feedback_text += + '

    We are going to try practice again to see if you can achieve higher accuracy. Remember:
    ' + prompt_text_list + + feedback_text += + '

    Press Enter to continue.' + + return true + + } + + } +} + +var testTrials = [] +testTrials.push(feedback_block) +for (i = 0; i < numTrialsPerBlock + 3; i++) { + + var test_block = { + type: 'poldrack-single-stim', + stimulus: getStim, + is_html: true, + data: { + "trial_id": "test_trial", + }, + choices: [possible_responses[0][1],possible_responses[1][1]], + timing_stim: 1000, //1000 + timing_response: 2000, //2000 + timing_post_trial: 0, + response_ends_trial: false, + on_finish: appendData + } + testTrials.push(ITI_fixation_block) + testTrials.push(test_block) +} + +var testCount = 0 +var testNode = { + timeline: testTrials, + loop_function: function(data) { + testCount += 1 + current_trial = 0 + + var sum_rt = 0 + var sum_responses = 0 + var correct = 0 + var total_trials = 0 + var mismatch_press = 0 + + for (var i = 0; i < data.length; i++){ + if (data[i].trial_id == "test_trial"){ + total_trials+=1 + if (data[i].rt != -1){ + sum_rt += data[i].rt + sum_responses += 1 + if (data[i].key_press == data[i].correct_response){ + correct += 1 + } + } + + if (data[i].key_press == possible_responses[1][1]){ + mismatch_press += 1 + } + } + } + + var accuracy = correct / total_trials + var missed_responses = (total_trials - sum_responses) / total_trials + var ave_rt = sum_rt / sum_responses + var mismatch_press_percentage = mismatch_press / total_trials + + feedback_text = "
    Please take this time to read your feedback and to take a short break! Press enter to continue" + feedback_text += "

    You have completed: "+testCount+" out of "+numTestBlocks+" blocks of trials." + + if (accuracy < accuracy_thresh){ + feedback_text += + '

    Your accuracy is too low. Remember:
    ' + prompt_text_list + } + if (missed_responses > missed_thresh){ + feedback_text += + '

    You have not been responding to some trials. Please respond on every trial that requires a response.' + } + + if (ave_rt > rt_thresh){ + feedback_text += + '

    You have been responding too slowly.' + } + + if (mismatch_press_percentage >= 0.90){ + feedback_text += + '

    Please do not simply press your "'+possible_responses[1][0]+'" to every stimulus. Please try to identify the matches and press your "'+possible_responses[0][0]+'" when they occur.' + } + + if (testCount == numTestBlocks){ + feedback_text += + '

    Done with this test. Press Enter to continue.
    If you have been completing tasks continuously for an hour or more, please take a 15-minute break before starting again.' + return false + } else { + delay = delays.pop() + stims = createTrialTypes(numTrialsPerBlock, delay) + feedback_text += "

    For the next round of trials, your delay is "+delay+". Press Enter to continue." + return true + } + } +} + + +/* ************************************ */ +/* Set up Experiment */ +/* ************************************ */ + +var n_back_single_task_network__fmri_experiment = [] + +n_back_single_task_network__fmri_experiment.push(SSD_setup_block); //exp_input + +test_keys(n_back_single_task_network__fmri_experiment, [possible_responses[0][1],possible_responses[1][1]]) +n_back_single_task_network__fmri_experiment.push(practiceNode); +n_back_single_task_network__fmri_experiment.push(feedback_block); + + +//n_back_single_task_network__fmri_experiment.push(start_test_block); +setup_fmri_intro(n_back_single_task_network__fmri_experiment) +n_back_single_task_network__fmri_experiment.push(testNode); +n_back_single_task_network__fmri_experiment.push(feedback_block); + +n_back_single_task_network__fmri_experiment.push(post_task_block); +n_back_single_task_network__fmri_experiment.push(end_block); diff --git a/n_back_single_task_network__fmri/images/lowercase_B.png b/n_back_single_task_network__fmri/images/lowercase_B.png new file mode 100644 index 0000000000000000000000000000000000000000..9ff98ec94234ceef716ffbe364f07db3e1a822a6 GIT binary patch literal 1651 zcmc&#={MU601O)}OM|$IB{bMNs*WPAl?sxr`zUE$&y{MbXzOZ|RBcOsdL)h2ERwRS zQb(gwN8N3cQi>j|Qg?znN@)>w#M-xi!G7w8nR)YJ-kVP|fVZccoQ%2*2n3SDpi#bi zO5Q`^kCJ<=8+$u(PsGmqx*Y|vdo}0wjC2ATdmaQ*Rs0uXxWadP5lJ-+3hAFJwm5Q( ztm&fmbY&E!2V|S6Yg7M}&rn6mJCG-S3RAFmQE*u;%1WO=UY$US^8+Lx7v&w& zKv`FxH|gpQ02!u8wTHb8hzPy43o$DR|9!*|bZJUTpsi?r8CWS3t@DRGc?!hW~ zJBdkr2f7G9tR`y(jaS$LoFgM3NfaTO$Ffy|tyBO46c$_b49nfw#)gDr)=IH;%@m&i z%ywFho!u)O^;=P+BT~g&n3NhPlQ06UM7mCVaSO>LqWu!b1@ zoJ0iD9D`zW6Eddq^W58~!JTl0hJ9RV8a~E+KOG9sK~34-$g_cP)Pj2pc%9D|$aX+2 zFPe9shv1PSv{y7%_OBfL7%ZA$-LDXb6Ew`&jO22r8^D7KM#()^V~k~I>Q)VU6y#ocz{*qH z|DDzLT^z01lb0Vo^IM@xnO$e7v6J64&Whls3EKx%RjdxWDRCy)Em2qYwSex%~G@4VQnKlD&1tl0tQLSE4n^)XVciztj}D!G?iBlo$~k)>OU|(oBW|l z$5GdJTH9*Gu94D)(|5`!ccHTZp=QH!m_=gml^cTc1eZb6S6L`%fdEGFQDhu}M5Y&vi6^_kht{oqXW>o&L(|=IN zf)ZbRm|5r5c?Jk$GYCh0+bS*WR)u0aMCR<*B@~fWzGaCVi~YqS-e5B+10H_vq3Fq9 zR~FH$O}CO>HUM$VvZX#FG~-}gvC`Tl3>30)d3}g3&3Srp@|5$VtXUzdINks)u3tZ2 zs^6grHD$MyY_`Fy$(W8ldLZ=)b>QXs`{OqF{1bRhhNVtJZ9Led-k>v;pT<6WD%d5E zED&Tf4-xZVw@WlMy87h+lHd)rFn006Tpt*K=vn(Lp)YKjEaV9OD*{eSUwe+C3tw^2 zmsR`pm(E$T&u9k@)iyeMP`_e&2lAmxJ1-U=w&x1l15Ui>fOh|Op>GK?Q|kN8P@4^a zjq44gac>0F`ePZ_u)-1T{uT^GX~EdR-9?FhPx!ea#W{B`tC?B?`^iJ)NrPNMI`v0 zO?k1?e&l-n6EAreJZ+Nu?Xia#ZB<@jJoy;2CZcabieIDg=}QVh%uwaQFkqNtJl66_ z_b%KQ=QUh%YO2~{SjtG60$JyMySYJIpGE~gr&LrYHaPMFBUH0!sVR{@-)H##|JKS# ah$J{>*)lzic9VO@0m8U=qS!~nGyVZyHorgs literal 0 HcmV?d00001 diff --git a/n_back_single_task_network__fmri/images/lowercase_D.png b/n_back_single_task_network__fmri/images/lowercase_D.png new file mode 100644 index 0000000000000000000000000000000000000000..bc7f2d31cefc0e2522c5969446b65f20ebc163b6 GIT binary patch literal 1624 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 BvL>4nJ zhzo%*WBU9{KrJk>o-U3d6^w81*msD8%di)m{}Xzl!K=q}f(wUc5UWb72g~e+se5}9 zIGO}>)?QxjxywYXE##W##Ei)klzchD{%MME9yD=Woni9)`^nBX2FB0t-Me?^+;5v7 zMc?nuo@+n<`{S~_^7q?vE^-JcI5aRYGO^H$alndOM_>QFZ=cHUYn9i_wx3|q?3jC! z|K#B%TdGeU@2>GZS1ZdJ#4~^Ts*Ek&uPZt(zRP-@u|DV1p?mY+*uAX1VwAQ*F~GYq zCqJhA<-TiBo{8RX&vN&9MbmDn_1Frp*y-R^xaUL9q4HcNQ*n>k?Hk(~m@*q)_;G1W z@Z{f%m9xjoM&!IJiOjJ{_cJH`8a z%i23Prp=Gp|D3H<*L>$?x%1yXi+C{3eZQkq_Go_L=PlBQgU{I1uDZXSY2`kaUyLFi z`~AOe=34Sg=mmR#!e6_q=d~uh@?IeC(D>zdi2Z7ZRr-x}46K*l2mf6I(U7G-A#jiQ z)%`~{pS>2O5SzbZuaWfqAM&x@jW%y0PUXrzZVPA0(wx99s~u;zf7MrxD?ml^T6N2h z9}5AA*IR}C-rHArSet39$cg!~+I3r!YgRq1k;u$0()g)US-pz=c11;_&aHOO=-smq zn*Mj*ZS$@9$>}HSpJe{lzduLr->SI>Lzp7Bto9Gz@bT;IFY|w2znimL+j8okNhMof z&-@^DIz-##!?DN>`n$r6ABRtBj$J-uXOM{cX{j_&Y^v;=k=f!x(dEN8nQ>mVmd8_>AmfxM3atXJ66(%TIPWvy&Y}vfQsUNWe8v@c|@K}II<21EVEY1@WXaK+t=>Gwps_fgCfVo6m7?}Z_9n#(> zr`rFOHIeqkGdA8Lk)n=T5)`KklFPP(3nUyEyV>SVX$&hggFWe8yd^8v#sgb+CU%=y zctY;|C~vYQ#7@#(q8#|gSirSzGzbG|X&*B*-Ns)Fg$rw#3DW^2O*<4wo9GdH+`bI5 z{3dY_*}HSa^TYW96bdzyJ`y?c(CwzwIlT7tcMpYaBgr zr{QKTN}khVxNNozdB|BVsf*R@Pd|G%@{TEtYv#aNY+YBt=0(Ky ziVi&n|aDaKmcHTqL| zW$v!PLXg`zABb_2Z2n@%&F5DFQ3BPIQi-X1Mi;Q%CAl#L>JZ1Wkz~3#_!GxQ=9#`7 zT?;uTOa6;e+|Z6ObuDHA^|zy}v+h{Zso;)PEyykN5)s=ryV!T@ltUH*_0}lYq^|FQ zxCs4ivsipj`ck&=@TU`*(CLcFROheOLV(4p)UC-tmXlRlIJ2kQ_JV26r*S$}NA)u! z{JTl0jEGy6N*}8Ori_fOFRt&XFKN~CzvJtIgkuqdv^ei_<`a}&A8(waJ4E(_31b4G z8GevH{4%2Q>milmWyXV9D~QXpc&K?KG@pJqb^rJ;-BR&D!$)6D%T)`0?>-?8KiKl9 zrnluPdUyG?`OMe$GmeN*b{CU32hVslb|c(W)~WKarfL^kMejf<#zk0rr+z%=baSH% z32qwwBxr8zaD|0tH^SG7yx^&rpJ1~{cz$uadB4J$#|I=Z+g{|%GoqUgPwQ)!j`TSf zhS=rjIUNOF%ZuMTcl5&Cg3|$3eYLjVRXzIX4VbVtA+)kFI(Aj<=JgAg7~!(|eCJAD z9iWJb76Ypg!9^{K>e(8|`|}C+0FEvS!#pj`b(Jt&C|qH9Iwj>kEcp#!!SWMB)b(n` zS(G6~qA5RPg0;)4V|ht_3h=9j4^;-_Fy?hI8}#%C zB{h;oy(A%2s@^7NIy|d+Qe6)^cX{8GC_PZLdQV(GAx>&H(`}vOrWK<{T6{)n4+1%e z^`^RH&yS{T$MxB@k(+s6w)h=HD_Q28RcEp51mN6bSz2A@%r##7S9ihxQ`r P8+Q#LhLdn2>~Z#g1|W!H literal 0 HcmV?d00001 diff --git a/n_back_single_task_network__fmri/images/uppercase_B.png b/n_back_single_task_network__fmri/images/uppercase_B.png new file mode 100644 index 0000000000000000000000000000000000000000..cb6088a9cab5f2789d06b52f7c64466f7af3c96c GIT binary patch literal 1503 zcmeAS@N?(olHy`uVBq!ia0vp^9Y8#vgAGV3Wlk&vQjEnx?oJHr&dIz4aySb-B8wRq z#DzeZF@63epcd8^PZ!6K3dXm0PM-EHlsR75uj%|O@?^l5fHser{}{a5bW&2A=j!CX ziMSDwuyBp5t@KMy)uhBzGD<;8n_DZjV&>=HjkcQmzVMvvyx+fN-^bTh@7n+J-sfMn z?=7FttDbjzwKyvyi+}^eKoSZ$jeQ&9ceS)qewCFVEU@{XV;_ ztZcrK`;;AqzgPl`B7$OqdvYFH?Y(wqyXbMzSg#q=b!+sNF_6o2LW+A3NRTg>$(*Dc(5^WmGmsweGS|EKv#y^=}wn82NT=m=`{#W=ymCukgscgi6ZU8In)BA?e{bn5n3`kZIBE6*OL47rDJds|x4Q0k z_sc7nJm)y+_LWJ;ty*HP9?=%Pr2%;_A7-GFE#| zX!2gJva!3Ue@^0Mh`_ID@7j!W_5{o4nsNr+zjU{_jkoaC;@>Xl@*^+$^N)DE*J96nvoRr+MYkt6zSb@#e?z^~r#9hOM zRGu4YS}t3Wy*+7~ams!>ruyPrEBHJex^GVLetWg@+Uxh4NAp|5&#gGP@2+mF=j~9p z{S%{fe!G2-J=Jz&Zo>57SJ|OuuOCGm-I2w!!ZhX2-X+_v-m2bn_Jwn>2h%i#d(nG4 zzixBCx%P$hrETWFw-)dP?O*Y>_U+?$lYT8vNQq|ovhH1{?TP!=i#JzoSfDF?`;q$J z`{x|(PJKRU@AEe0@;Tc#W``Db9qh7sy4q^()tx6++RS}<*{!k1*5jS^sVx2Y;@+S$ z;W=S4VKo62Pur!gT|M^6Jb+PmQhA5w9EFpI+8jSIq@Nwe2Jw_M_(9Uqcee#1Tf$Bf%Igx;05@dy14TCTe)OK8c) zr@IzEw4bZF%<^ks=wt<6o#}R$>aKtIeNIHBgZcCRQ2TPTil$)sP}AxO$EIhmGj`Ri zQ)*%<3^VuNYPZrS#6I8uqs4idh2Iq&rJ@(QN*|pJC?H1$GZ_fzcY3&fyXKqyx8J<`yv4}nZ`v}`kk@a%vG0C+Vc)Cm8{{W#bUqo~(+nuhHwaX!^w_{op%6EdgamS4KPvU%O_9ghSe&E7>;|YTV_GNVPb! z<*X}p#Lt{i;>r!7+f)WMuv$SIBvRi5;(-Z$2rmN2@EB&(WQOBf1zXc^tg9o_4A*Hk{VEM<8wElcn)c&*r QU?I)m>FVdQ&MBb@0KaZzR{#J2 literal 0 HcmV?d00001 diff --git a/n_back_single_task_network__fmri/images/uppercase_D.png b/n_back_single_task_network__fmri/images/uppercase_D.png new file mode 100644 index 0000000000000000000000000000000000000000..b97e86e44507157217834dd68dbbd6379ddfe662 GIT binary patch literal 1494 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 Kjt%y>)PDfz_Tfzc literal 0 HcmV?d00001 diff --git a/n_back_single_task_network__fmri/images/uppercase_T.png b/n_back_single_task_network__fmri/images/uppercase_T.png new file mode 100644 index 0000000000000000000000000000000000000000..afd55a738c813b0f67bb98aa72e012dab21e4321 GIT binary patch literal 1173 zcmeAS@N?(olHy`uVBq!ia0vp^9Y8#vgAGV3Wlk&vQjEnx?oJHr&dIz4aySb-B8wRq z#DzeZF@63epcWP@PZ!6K3dXm0PWSmZN-#XgD~!F-(b~zGc+}~Uq)N^WuHThH+_NhM ztq)#%VA-kQ z*yB5UgnUCqg*&PzbkE#hsse{lDF;WyieFuI}GBO)8ng+T+#CUui45 z7GJ!5q+(^I>a44=rY$U$GZgCPtzib zb=@t`=c?(?4L{3^AGfYr{xR+5#tZwUmj0GGws*zth-XDO|cT zHg)D@qcC}i3D2f)c*E&2Vbi{|?$Z^{>L=b5 zo}iFgJG)=caaR1HP3j7cr+%5q$2OVlZ%OrcXqxgh*RJZbyyc(kTu0Q8?OHFt#^q!! z@50}uN3Lv?s`X#~Pq5T}QO>dBT*3F-PnHD6&UMiFuvH^E&`ajF;FqdW^}C;2X8oUf zc#gYH-1o~t>laV?Q+H~6N4-kfB>tV1TjK1WR8QF4I(c#Q?{}N7_8Q+vK4E=gUc}b$ zK(Bu;&wh8@f2*+hPej~gPm>$6Dq?GQPmJjT42 literal 0 HcmV?d00001 diff --git a/n_back_single_task_network__fmri/images/uppercase_V.png b/n_back_single_task_network__fmri/images/uppercase_V.png new file mode 100644 index 0000000000000000000000000000000000000000..fbcd74918bc982e8e0800feb62d41836f8d4d383 GIT binary patch literal 1729 zcmc&#`8yK~0N#8e$H*#q7>{FeTmgpLTU`ZI_CXf8Mj+H07Y+cN1OEr0Z{Yy9!sml9H+75#vd6DwKrA3#8)Rte ze2S#JCsehwOR>81L*mt032Ti&w)Z#pL>>40?S+T!A319T=@rc%QiY30YvL(XnwtWPXNsz^2&z;p7q z(vS7zLnqf0@f8iuTK2K;A4V9q$~xh zZf7_R?VY5%o)$(nmX0)$VM%sViU=i1k80}V?X5?P;G>87)L4DZOX7>(<%7ndPftMPDw#}w7`knYBp-1B2Z`g68>&fc%Ol7F)7_S^F(gl9Ib>jOLi=5u|V3NS)L=o zDy?;ZrgxMm@7Tl~U$_2O`53}V90f0~r5b1dPO0+|w}Z6%UNispjDy;UA+G($cHfze zOl>cqBE4uoIJdcCw7&?rTA=#bQT#&mp?h!ll*$`;Xg1ts17__RUd5UkZG&qQZk8PN$qYyTe{luoDhM`4>D!8M`4*p*^wX zV@NO8L?^4os#)F0YY+;nzGOlLDUOym?m>hsrpMMD8Yy*Rk&zx#O*}R$W~eZFuMC`2 z>o?A%?R>LyEg*;E`G)>9!L>MUN0Zzb{bggD6@OXa3!>@|u?g6-AtO0Y=q-p(KZ~A! zaJaG4y4rxBdUjtedSbpJ4ohIC_}NJDZVk8gy%BUCwquSPgXu0+OHV!phfYiI0KGXv znuAMCY7$>-ONmu*)`+i~P#oWYUu$yC{;S79%dvxS{cToDR>CRqr`YC=EnQa=oI7H<|Mv#ULb{o~1+fbqJEkyL7WXGrlWbcfy*L_?*S zM?9m-fzj}mu(+(SuXVl`B!=#6dr&(WJe4h-I;IK3uN0Pek4m_^s8XQD3(%>?$T7KP zrVQ?&Q~za6Q!y0cq)d5Lg=R<%zCI{^P)wWIxEm5@aPOb6tP{EG4PmHMr6J?#3iyDh zh={uQXMxa$aIo{RDQ1nno<$HI<3@;^#)&nBs<|pV>zfSqd1ZsT@ijTYhJZbrgfBkF zzi4iXqWBv#Ny@N1k6^LS7>_5k-NB4K+V?{ds=6@5Dm%F^t$QyhV=SFn@Dw{L-w;!a z>TW}9n@8BEA&p>UJzulFl%=2%Qg}{t$&u61 div, .display_stage > p { + color: white; +} + +.flanker-text { + text-align: center; + font-size: 50px; + position: relative; + top: 50%; + transform: translateY(-50%); + -webkit-transform: translateY(-50%); +} + + + +.fb_box { + width:35vw; + height: 20vh; + position:absolute; + top:50%; + left:50%; + margin-right:-50%; + transform: translate(-50%,-175%); +} + +.picture_box { + width: 60%; + height: 60%; + position:absolute; + top:50%; + left:50%; + transform: translate(-50%,-50%); + margin-right:0%; + background-color: none; + text-align: center; +} + + +.fixation { + text-align: center; + font-size: 50px; + position: relative; + top: 50%; + transform: translateY(-50%); + -webkit-transform: translateY(-50%); +} + +.cue-text { + width:20vw; + height: 20vh; + position:absolute; + top:50%; + left:50%; + margin-right:-50%; + transform: translate(-50%,-50%); +} + +.bigbox { +width:100%; +margin: auto; +min-height: 100%; +position:absolute; +top:0%; +left:0%; +margin-right:0%; +background-color: none; +text-align: center; +} + +.instructBox { + width: 80vw; + height: 10vw; + position:absolute; + top:10%; + left:50%; + margin-right: 0%; + transform: translate(-50%,-50%); + background-color: none; + font-size: 24px; +} + +.prompt_box { + width: 75%; + height: 20%; + position:absolute; + top:10%; + left:20%; + transform: translate(-50%,-45%); + margin-right:0%; + background-color: none; + text-align: center; +} + +img.center { + height: auto; + width: auto\9; /* ie8 */ + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + max-height: 65%; +} + +/*******************************************************/ +/*********** Stop Signal CSS Styles **********/ +/*******************************************************/ + +.starbox { + width: 30vw; + height: 30vh; + position:absolute; + top:50%; + left:50%; + margin-right:-50%; + transform: translate(-50%,-50%); +} + + +.gng_number { +width: 5vw; +height: 5vw; +position:absolute; +top:50%; +left:50%; +margin-right:0%; +transform: translate(-50%,-50%); +background-color: none; +} \ No newline at end of file diff --git a/stop_signal_single_task_network__fmri/experiment.js b/stop_signal_single_task_network__fmri/experiment.js index 5030f911e..111363182 100755 --- a/stop_signal_single_task_network__fmri/experiment.js +++ b/stop_signal_single_task_network__fmri/experiment.js @@ -99,10 +99,6 @@ var getFeedback = function() { return '

    ' + feedback_text + '

    ' } -var getInstructFeedback = function() { - return '

    ' + feedback_instruct_text + - '

    ' -} var getCategorizeFeedback = function(){ curr_trial = jsPsych.progress().current_trial_global - 1 @@ -388,7 +384,7 @@ var instructions_block = { '

    If you see a star appear, please try your best to withhold your response on that trial.

    '+ '

    If the star appears on a trial, and you try your best to withhold your response, you will find that you will be able to stop sometimes but not always.

    '+ '

    Please do not slow down your responses in order to wait for the star. You should respond as quickly and accurately as possible to each shape.

    '+ - '

    During practice, you will see a reminder of the rules. This will be removed for test.

    '+ + '

    During practice, you will see a reminder of the rules. This will be removed for the test.

    '+ '

    To let the experimenters know when you are ready to begin, please press any button.

    '+ '
    ', is_html: true, @@ -457,7 +453,7 @@ var feedback_block = { timing_post_trial: 0, is_html: true, timing_response: 10000, //10 seconds for feedback - response_ends_trial: true, + response_ends_trial: false, }; @@ -486,8 +482,7 @@ var test_intro = { } }; -var feedback_text = - 'The test will begin shortly.'// Press any button to begin.' +var feedback_text = 'The test will begin shortly.'// Press any button to begin.' var feedback_block = { type: 'poldrack-single-stim', data: { @@ -831,12 +826,12 @@ var stop_signal_single_task_network__fmri_experiment = [] stop_signal_single_task_network__fmri_experiment.push(SSD_setup_block) //exp_input test_keys(stop_signal_single_task_network__fmri_experiment, [possible_responses[0][1], possible_responses[2][1]]) -//stop_signal_single_task_network__fmri_experiment.push(practiceStopNode) -//stop_signal_single_task_network__fmri_experiment.push(feedback_block); +stop_signal_single_task_network__fmri_experiment.push(practiceStopNode) +stop_signal_single_task_network__fmri_experiment.push(feedback_block); setup_fmri_intro(stop_signal_single_task_network__fmri_experiment) stop_signal_single_task_network__fmri_experiment.push(testNode); -//stop_signal_single_task_network__fmri_experiment.push(feedback_block); +stop_signal_single_task_network__fmri_experiment.push(feedback_block); stop_signal_single_task_network__fmri_experiment.push(end_block); From 11b4f82021f9366818b62a138579e73c4858855e Mon Sep 17 00:00:00 2001 From: Thanh Tung Bui Date: Tue, 26 Nov 2019 16:58:42 -0800 Subject: [PATCH 3/3] Add current_trial counter and variable in some trials. Change directed_condition var to directed_forgetting_condition for consistency. --- .../experiment.js | 34 +++++++++---------- flanker_single_task_network/experiment.js | 5 +-- .../experiment.js | 4 +-- go_nogo_single_task_network/experiment.js | 2 +- .../experiment.js | 2 +- .../experiment.js | 2 +- .../experiment.js | 7 ++-- 7 files changed, 30 insertions(+), 26 deletions(-) diff --git a/directed_forgetting_single_task_network/experiment.js b/directed_forgetting_single_task_network/experiment.js index 52ef3c51c..3d0d9deda 100644 --- a/directed_forgetting_single_task_network/experiment.js +++ b/directed_forgetting_single_task_network/experiment.js @@ -136,8 +136,8 @@ var appendProbeData = function(data) { jsPsych.data.addDataToLastTrial({ correct: correct, probe_letter: probe, - directed_forgetting_condition: directed_condition, - trial_num: current_trial, + directed_forgetting_condition: directed_forgetting_condition, + current_trial: current_trial, correct_response: correct_response, exp_stage: exp_stage, cue: cue, @@ -181,23 +181,23 @@ var getCue = function() { }; // Will pop out a probe type from the entire probeTypeArray and then choose a probe congruent with the probe type -var getProbe = function(letters,directed_condition,cue) { +var getProbe = function(letters,directed_forgetting_condition,cue) { var trainingArray = jsPsych.randomization.repeat(stimArray, 1); var lastSet_top = letters.slice(0,numLetters/2) var lastSet_bottom = letters.slice(numLetters/2) - if (directed_condition == 'pos') { + if (directed_forgetting_condition == 'pos') { if (cue == 'BOT') { probe = lastSet_top[Math.floor(Math.random() * numLetters/2)] } else if (cue == 'TOP') { probe = lastSet_bottom[Math.floor(Math.random() * numLetters/2)] } - } else if (directed_condition == 'neg') { + } else if (directed_forgetting_condition == 'neg') { if (cue == 'BOT') { probe = lastSet_bottom[Math.floor(Math.random() * numLetters/2)] } else if (cue == 'TOP') { probe = lastSet_top[Math.floor(Math.random() * numLetters/2)] } - } else if (directed_condition == 'con') { + } else if (directed_forgetting_condition == 'con') { newArray = trainingArray.filter(function(y) { return (y != lastSet_top[0] && y != lastSet_top[1] && y != lastSet_bottom[0] && y != lastSet_bottom[1]) @@ -219,7 +219,7 @@ var getProbeHTML = function(){ var getLettersHTML = function(){ stim = stims.pop() - directed_condition = stim.directed_condition + directed_forgetting_condition = stim.directed_forgetting_condition letters = stim.letters cue = stim.cue probe = stim.probe @@ -259,14 +259,14 @@ var createTrialTypes = function (numTrialsPerBlock,numLetters){ var stims = [] for (var i = 0; i < numTrialsPerBlock; i++){ - var directed_condition = probeTypeArray.pop() + var directed_forgetting_condition = probeTypeArray.pop() var letters = getTrainingSet(used_letters,numLetters) var cue = getCue() - var probe = getProbe(letters,directed_condition,cue) - var correct_response = getCorrectResponse(directed_condition) + var probe = getProbe(letters,directed_forgetting_condition,cue) + var correct_response = getCorrectResponse(directed_forgetting_condition) stim = { - directed_condition:directed_condition, + directed_forgetting_condition:directed_forgetting_condition, letters: letters, cue: cue, probe: probe, @@ -515,7 +515,7 @@ var start_fixation_block = { on_finish: function() { jsPsych.data.addDataToLastTrial({ exp_stage: exp_stage, - trial_num: current_trial + current_trial: current_trial }) } } @@ -534,7 +534,7 @@ var fixation_block = { on_finish: function() { jsPsych.data.addDataToLastTrial({ exp_stage: exp_stage, - trial_num: current_trial + current_trial: current_trial }) } } @@ -552,7 +552,7 @@ var ITI_fixation_block = { on_finish: function() { jsPsych.data.addDataToLastTrial({ exp_stage: exp_stage, - trial_num: current_trial + current_trial: current_trial }) current_trial = current_trial + 1 } @@ -683,7 +683,7 @@ for (i = 0; i < (practice_length); i++) { on_finish: function() { jsPsych.data.addDataToLastTrial({ exp_stage: exp_stage, - trial_num: current_trial + current_trial: current_trial }) } } @@ -703,7 +703,7 @@ for (i = 0; i < (practice_length); i++) { on_finish: function() { jsPsych.data.addDataToLastTrial({ exp_stage: exp_stage, - trial_num: current_trial + current_trial: current_trial }) } } @@ -722,7 +722,7 @@ for (i = 0; i < (practice_length); i++) { on_finish: function() { jsPsych.data.addDataToLastTrial({ exp_stage: exp_stage, - trial_num: current_trial + current_trial: current_trial }) current_trial = current_trial + 1 } diff --git a/flanker_single_task_network/experiment.js b/flanker_single_task_network/experiment.js index 56c9a6af6..52f294573 100644 --- a/flanker_single_task_network/experiment.js +++ b/flanker_single_task_network/experiment.js @@ -409,6 +409,7 @@ for (i = 0; i < practice_len; i++) { if (data.key_press == data.correct_response) { correct_trial = 1 } + current_trial += 1 current_block = practiceCount jsPsych.data.addDataToLastTrial({correct_trial: correct_trial, @@ -533,13 +534,13 @@ for (i = 0; i < numTrialsPerBlock; i++) { if (data.key_press == data.correct_response) { correct_trial = 1 } - + current_trial += 1 current_block = testCount jsPsych.data.addDataToLastTrial({correct_trial: correct_trial, trial_id: 'test_trial', current_block: current_block, - current_trial: i + current_trial: current_trial }) } }; diff --git a/flanker_with_cued_task_switching/experiment.js b/flanker_with_cued_task_switching/experiment.js index 440c034a3..a1e707a8b 100644 --- a/flanker_with_cued_task_switching/experiment.js +++ b/flanker_with_cued_task_switching/experiment.js @@ -288,9 +288,9 @@ var response_keys = {key: [77,90], key_name: ["M","Z"]} var choices = response_keys.key var practice_length = 16 -var test_length = 240 +var exp_len = 240 var numTrialsPerBlock = 40 -var numTestBlocks = test_length / numTrialsPerBlock +var numTestBlocks = exp_len / numTrialsPerBlock var flanker_styles = ['solid','outlined'] diff --git a/go_nogo_single_task_network/experiment.js b/go_nogo_single_task_network/experiment.js index dc161d6c0..504be954a 100644 --- a/go_nogo_single_task_network/experiment.js +++ b/go_nogo_single_task_network/experiment.js @@ -104,7 +104,7 @@ var appendData = function(data) { } jsPsych.data.addDataToLastTrial({ - trial_num: current_trial, + current_trial: current_trial, }) current_trial +=1 diff --git a/shape_matching_single_task_network/experiment.js b/shape_matching_single_task_network/experiment.js index ffb897882..f2b4b54f3 100644 --- a/shape_matching_single_task_network/experiment.js +++ b/shape_matching_single_task_network/experiment.js @@ -109,7 +109,7 @@ var getStim = function() { } else if (trial_type[2] == 'N'){ distractor_i = 'none' } - currData.trial_num = current_trial + currData.current_trial = current_trial currData.shape_matching_condition = trial_type currData.probe_id = probe_i currData.target_id = target_i diff --git a/shape_matching_with_cued_task_switching/experiment.js b/shape_matching_with_cued_task_switching/experiment.js index e2241e75f..ab62b59ed 100644 --- a/shape_matching_with_cued_task_switching/experiment.js +++ b/shape_matching_with_cued_task_switching/experiment.js @@ -297,7 +297,7 @@ var appendData = function() { task_condition: task_switch.task_switch, cue_condition: task_switch.cue_switch, shape_matching_condition: shape_matching_condition, - trial_num: trial_num, + current_trial: trial_num, probe: probe, target: target, distractor: distractor, diff --git a/shape_matching_with_predictable_task_switching/experiment.js b/shape_matching_with_predictable_task_switching/experiment.js index 5fd328dd0..6faad4403 100644 --- a/shape_matching_with_predictable_task_switching/experiment.js +++ b/shape_matching_with_predictable_task_switching/experiment.js @@ -262,17 +262,18 @@ var getFixation = function(){ var appendData = function(){ curr_trial = jsPsych.progress().current_trial_global trial_id = jsPsych.data.getDataByTrialIndex(curr_trial).trial_id + current_trial += 1 jsPsych.data.addDataToLastTrial({ predictable_condition: predictable_condition, predictable_dimension: predictable_dimension, shape_matching_condition: shape_matching_condition, + current_trial: current_trial, probe: probe, target: target, distractor: distractor, correct_response: correct_response, - whichQuadrant: whichQuadrant - + whichQuadrant: whichQuadrant, }) if (jsPsych.data.getDataByTrialIndex(curr_trial).key_press == correct_response){ @@ -624,6 +625,7 @@ var practiceNode = { loop_function: function(data){ practiceCount += 1 stims = createTrialTypes(practice_len) + current_trial = 0 var sum_rt = 0 var sum_responses = 0 @@ -731,6 +733,7 @@ var testNode = { timeline: testTrials, loop_function: function(data) { testCount += 1 + current_trial = 0 stims = createTrialTypes(numTrialsPerBlock) console.log('hereherhe')