iPad Experiments

Apps for performing research

Search this site input

Application Overview

After many years of evolution with the PathSpan and EstimationLine apps, there was a complete rewrite into the Swift programming language. The configuration files were generalized and a common framework emerged.

The result of that evolution is an App that can be reused to implement new tests through configuration only. This allows the experiment implementation to concentrate only on the new needs and reuse all the basic phases in common. This minimizes the time to deploy a new experiment, and makes it feasible to have experiments customized to each research team.

All the apps use this common framework now; the difference is in the configuration values. This documentation will apply to all the experiments. Some of the configuration items emerged to solve a specific need and you definitely do not need to use them all.

Common components

Participant Identification

Before beginning a session you can enter information such as birth date, gender and a unique ID. This allows you to match up the ID with any personal identifying information that is separated from the collected results for privacy protection of the participant.

Test selection

The set of tests needed for any particular field study can be pre-configured to help reduce any experimenter errors.

Data reporting

All data is recorded by the app and output in CSV format. This makes it easy to analyze in Excel, SPSS or any other data analysis program. The format is specifically designed to be easily to analyze in statistical analysis programs like SPSS or R.

The results from each stimuli/test are emitted on one line of a CSV file. This file is automatically tagged with an iPad specific filename to avoid results from multiple iPads from accidently overwriting any existing result files.

The output is configurable including header names and the date formats are in UTC time and a date easily used by analytics applications.

Many computations can be done as the data is recorded to reduce common analysis steps, such as recording if answers are correct and the participant age in months. Custom calculations are powered by an internal expression calculator that is also configurable.

Timing accuracy

The timing of events is as repeatable as possible by using the iPad. The time a stimulus is shown is synchronized to the actual display frame time, not just the code running time. The touch time for answers is reported from the iPad event handling system that returns a touch time. There is no running of garbage collectors, as in some languages, that can add indeterminate time delays.

Nevertheless, there is some intrinsic time taken by the iPad hardware to detect touches that is not a published number, but is likely very similar between iPads. This will allow many researchers to reproduce experiments in longitudinal studies and around the world, allowing future collaborative studies.

Common building blocks

Everything in an experiment is built on “Items” that can be just for display or also for interaction. All Items share some common configuration.

Some specialized Items include:

  • TextBox
    • Holds labels, prompts, and stimuli.
  • Editable TextBox
    • used to manually enter answer information into a text field.
  • Cluster View
    • a custom non-symbolic cluster generator with many of its own settings.
  • Image View
    • display images
  • Audio View
    • used to hold audio clips that can be played in response to events.
  • Keyboard View
    • used to watch for keyboard events that could be from a participant but more likely from the experimenter that is controlling the session.

Event processing

Each experiment design needs careful design in order to handle all the desired events and, this too, is fully configurable; but is more like careful state machine progamming. You may wish to commission me to do this work for you as I will be the most efficient resource.

Each event, user-touch or timer expiring, can execute a sequence of primitives.

  • Prepare
    • This is generally run at the starting event of an experiment to prepare all of the Items that may be needed for a trial.
  • Show
    • To make an Item visible
  • Hide
    • To make an Item invisible
  • Timer
    • Set up a timer to fire an event in the future, or to stop a Timer.
  • Enable
    • This enables interactivity of an Item and specifies the event to fire if a user touches that Item, for instance.
  • Disable
    • This allows the Item to remain but interaction with it is disabled.
  • Record
    • This is the command used to record all the necessary information that includes all the experiment observations, such as the time that a response is made, which Item was selected and whether it is a correct answer.
  • Animate
    • A visual animation is useful after a touch response although not needed for the experiment result necessarily.
  • Focus
    • Used to focus to an Editable Text Item to record an answer with the keyboard so that the screen does no have to be touched first.
  • Audio
    • Play an audio prompt.
  • Present
    • A subroutine that may run a presentation sequence and then call an event when finished so that the sequencer can continue.
  • End
    • To signal back to the main experimenting task that this trial has ended.
  • Branch
    • A way to run an intermediate formula calculation and chose alternate continuation with another event immediately.
  • Snapshot
    • To collect an image of the screen that may be useful?