@bdelab/jscat
Version:
A library to support IRT-based computer adaptive testing in JavaScript
61 lines (51 loc) • 1.55 kB
JavaScript
/* Load corpus */
// Word corpus imports
// import dataValidatedURL from "./resp/theoretical.item.bank.csv";
// import simulationResp from "../data/resp_sample_with_pid.csv";
import dataValidatedURL from "./resp/posthoc.item.bank.csv";
import simulationResp from "../data/resp_posthoc_with_pid.csv";
import Papa from "papaparse";
const readCSV = (url) =>
new Promise((resolve) => {
Papa.parse(url, {
download: true,
header: true,
dynamicTyping: true,
skipEmptyLines: true,
complete: function (results) {
const csv_stimuli = results.data;
resolve(csv_stimuli);
},
});
});
// addAsset :: (k, Promise a) -> Promise (k, a)
const addAsset = ([name, assetPromise]) =>
assetPromise.then((asset) => [name, asset]);
// loadAll :: {k: Promise a} -> Promise {k: a}
const loadAll = (assets) =>
Promise.all(Object.entries(assets).map(addAsset)).then(Object.fromEntries);
const csvPromises = {
validated: readCSV(dataValidatedURL),
answerRobot: readCSV(simulationResp),
};
const csvAssets = await loadAll(csvPromises);
const transformCSV = (csvInput) => csvInput.reduce((accum, row) => {
const newRow = {
stimulus: row.item,
a: row.a,
difficulty: row.b,
c: row.c,
d: row.d,
};
accum.push(newRow);
return accum;
}, []);
const csvTransformed = {
validated: transformCSV(csvAssets.validated),
};
export const corpusAll = {
name: "corpusAll",
corpus: csvTransformed.validated,
};
export const { answerRobot } = csvAssets;
// console.log(corpusAll.corpus);