Skip to content

Venir d'Ibex et de PCIbex : importer une expérience de lecture dans Potato

Importez une expérience Ibex ou PCIbex Farm dans Potato avec potato import -f ibex : lecture auto-rythmée, labyrinthe, notations, réponses par touches et listes en carré latin.

potato import -f ibex lit une expérience Ibex ou PCIbex (PennController) et construit un projet Potato avec les mêmes items, les mêmes listes en carré latin et le même type d'essai principal. Depuis Potato 2.12.0, une tâche de lecture auto-rythmée, de labyrinthe, d'acceptabilité ou à deux touches peut s'exécuter avec le recrutement, les questionnaires et l'export de Potato, ou à côté d'une tâche d'annotation.

Ibex exécute des expériences de traitement de phrases dans le navigateur, et PCIbex Farm héberge des scripts PennController écrits en JavaScript. Potato n'a pas de couche de script ; l'importateur lit donc les parties d'un script qui ont une forme fixe et liste le reste, que vous reconstruirez à la main.

Importer une expérience

Indiquez à l'importateur le dossier de l'expérience, celui qui contient data_includes/ et chunk_includes/, comme dans un projet téléchargé depuis PCIbex Farm ou Ibex :

bash
potato import -f ibex -i my_experiment/ -o my-study/
python potato/flask_server.py start my-study/config.yaml -p 8000

Les constructions Ibex que l'importateur traduit

Ibex ou PCIbexPotato
Template("table.csv", row => newTrial(...))Un item par ligne du CSV, avec toutes les colonnes conservées
newController("DashedSentence", {s: row.X}), ou le DashedSentence classiqueLecture auto-rythmée en mode fenêtre mobile
newController("Maze", {s: row.X, a: row.Y})La tâche du labyrinthe, avec les distracteurs tirés de row.Y
newScale(N) avec des textes .before et .after, ou l'AcceptabilityJudgment classiqueUne échelle likert à N points avec ces libellés d'extrémité
newKey("F", "J") avec newText(row.X)Un essai chronométré avec ces touches. Renommez les étiquettes selon ce qu'elles signifient
"Question" classique après une phraseUne question de compréhension, avec F et J pour les deux premières réponses
Une colonne Group ou List, ou les étiquettes classiques ["condition", N]Un facteur inter-sujets list, un fichier de données par liste, et batch_assignment.group_by_condition: list

Les items Ibex classiques étiquetés ["condition", N] partagent le groupe N, et la liste k reçoit la condition en position (k + N) mod (nombre de conditions), la rotation habituelle en carré latin. Les items hors du carré vont dans chaque liste, sous un identifiant différent dans chacune, car Potato exige des identifiants d'items uniques d'un fichier de données à l'autre (Déroulement de l'expérience).

Les listes gardent les noms que leur donne l'expérience, comme L1 ou List1.

Les parties à reconstruire vous-même

Ces parties d'une expérience sont laissées de côté, et la sortie ainsi que IMPORT_REPORT.md listent chacune d'elles :

  • les items et modèles d'entraînement ;
  • les écrans Message, Form et Html ;
  • l'ordonnancement par newTimer, Sequence et shuffleSequence ;
  • Header et Footer ;
  • newFunction et les autres codes JavaScript personnalisés ;
  • les éléments image, audio et vidéo, ainsi que l'enregistrement ;
  • tout modèle dont la table ne se trouve pas dans chunk_includes/.

Un essai qui ne relève d'aucun des types traduits est refusé avec un message, de même qu'un import qui ne produirait aucun item, ou un modèle PCIbex dont la colonne de stimulus manque dans sa table. Les cas suivants sont signalés comme des avertissements :

  • une colonne lue par le modèle et absente de la table ;
  • des cellules de stimulus vides ;
  • deux items classiques portant la même étiquette dans un même groupe. Les deux sont conservés, puisqu'Ibex fait tourner un groupe selon la position.

Placez le consentement et les consignes sur des pages de questionnaire. Pour un chronométrage des stimuli que les essais chronométrés ne couvrent pas, exécutez la tâche sur une page jsPsych.

Pour aller plus loin

Pour les détails d'implémentation, consultez la documentation source.