Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion task-launcher/src/tasks/adult-reasoning/helpers/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ export const getLayoutConfig = (
value: stimItem,
displayValue: undefined,
};
defaultConfig.inCorrectTrialConfig.onIncorrectTrial = 'skip';
if (!defaultConfig.isInstructionTrial) {
const mappedDistractors = mapDistractorsToString(distractors);
const prepChoices = prepareChoices(answer.toString(), mappedDistractors, true, trialType);
Expand Down
29 changes: 24 additions & 5 deletions task-launcher/src/tasks/adult-reasoning/timeline.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// setup
import { initTrialSaving, initTimeline, createPreloadTrials, getRealTrials } from '../shared/helpers';
import { initTrialSaving, initTimeline, createPreloadTrials, getRealTrials, prepareCorpus } from '../shared/helpers';
import { jsPsych, initializeCat } from '../taskSetup';
import { taskStore } from '../../taskStore';
// trials
Expand All @@ -10,6 +10,7 @@ import {
taskFinished,
enterFullscreen,
finishExperiment,
fixationOnly,
} from '../shared/trials';
import { getLayoutConfig } from './helpers/config';

Expand All @@ -23,6 +24,8 @@ export default function buildAdultReasoningTimeline(config: Record<string, any>,
const translations: Record<string, string> = taskStore().translations;
const validationErrorMap: Record<string, string> = {};

const cat = taskStore().runCat;

taskStore('totalTestTrials', getRealTrials(corpus));

const layoutConfigMap: Record<string, LayoutConfigType> = {};
Expand All @@ -48,14 +51,30 @@ export default function buildAdultReasoningTimeline(config: Record<string, any>,
layoutConfigMap,
};

const stimulusBlock = {
timeline: [afcStimulusTemplate(trialConfig)],
const stimulusBlock = (trial?: StimulusType) => {
return {
timeline: [afcStimulusTemplate(trialConfig, trial)]
}
};

const numOfTrials = taskStore().totalTrials;
let numOfTrials;

if (cat) {
const fullCorpus = prepareCorpus(corpus, false);
const practice = [...fullCorpus.ipLight, ...fullCorpus.ipHeavy];
numOfTrials = 8;

practice.forEach(trial => {
timeline.push({ ...fixationOnly, stimulus: `` });
timeline.push(stimulusBlock(trial));
});
} else {
numOfTrials = taskStore().totalTrials;
}

for (let i = 0; i < numOfTrials; i++) {
timeline.push({ ...setupStimulus, stimulus: `` });
timeline.push(stimulusBlock);
timeline.push(stimulusBlock());
}

initializeCat();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ export default function buildSameDifferentTimelineCat(config: Record<string, any
const heavy: boolean = taskStore().heavyInstructions;

const corpus: StimulusType[] = taskStore().corpora.stimulus;
const preparedCorpus = prepareCorpus(corpus);
const preparedCorpus = prepareCorpus(corpus, false);

const catCorpus = setupSds(taskStore().corpora.stimulus);
const allBlocks = prepareMultiBlockCat(catCorpus);
Expand Down
9 changes: 8 additions & 1 deletion task-launcher/src/tasks/shared/helpers/getCorpus.ts
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,14 @@ const transformCSV = (
audioFile: row.audio_file,
// difficulty must be undefined for non-instruction/practice trials to avoid running cat
difficulty:
taskStore().runCat || row.trial_type === 'instructions' || row.assessment_stage === 'practice_response'
taskStore().runCat ||
(
(
row.trial_type === 'instructions' ||
row.assessment_stage === 'practice_response'
) &&
taskStore().heavyInstructions
)
? parseFloat(row.d || row.difficulty)
: NaN,
trialNumber: row.trial_num,
Expand Down
9 changes: 4 additions & 5 deletions task-launcher/src/tasks/shared/helpers/prepareCat.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { taskStore } from '../../../taskStore';
import { cat } from '../../taskSetup';

// separates trials from corpus into blocks depending on for heavy/light instructions and CAT
export function prepareCorpus(corpus: StimulusType[]) {
export function prepareCorpus(corpus: StimulusType[], randomStartBlock = true) {
const excludedTrialTypes = '3D';
// limit random starting items so that their difficulty is less than 0
const maxTrialDifficulty = 0;
Expand Down Expand Up @@ -44,10 +44,9 @@ export function prepareCorpus(corpus: StimulusType[]) {
const startItems: StimulusType[] = selectNItems(possibleStartItems, 5);

// put cat portion of corpus into taskStore
const catCorpus: StimulusType[] =
taskStore().task === 'same-different-selection'
? normedTrials
: normedTrials.filter((trial) => !startItems.includes(trial));
const catCorpus: StimulusType[] =
randomStartBlock ?
normedTrials.filter((trial) => !startItems.includes(trial)) : normedTrials;

corpora = {
ipHeavy: corpusParts.ipHeavy, // heavy instruction/practice trials
Expand Down