-
Notifications
You must be signed in to change notification settings - Fork 10
Home
Welcome to the mkturk wiki!
Build the simplest possible code to run psychophysics remotely on a tablet. The result was a couple client side files in html/javascript that run a delayed match to sample (DMS in mkturk.html) task and an automator for automatically updating the task parameters (mkturkautomator.js). The server side was left to dropbox (mkturkdropox.js) which not only hosted the webpage but also stored the images and data for the task.
The implemented code is very linear and long and by no means perfect. Now that this proof-of-concept system works, the intent is for anyone to be able to use it as a starting point for quickly implementing their own web-based, touchscreen systems. For additional examples, inquire about MMturk by shayo in DiCarlo lab or the implementation by W. Bendris in Conway lab. The goal of this repository is to give you resources to get up and running. Of course, we would love feedback on things you do differently or improve upon to relay those contributions back to the community. For our part, our future plans are below.
-
(done) integrate bluetooth capability using chrome API. Requires android marshmallow.Bluetooth capability:
-
(done) dropbox has released a cleaned up version of its API. mkturk will need to transition to this version. The advantage of using dropbox is in having a stable place to store data that requires little administrative overhead. More on dropbox API v2: http://www.hnwatcher.com/r/2788001/Dropbox-API-v2-Tutorial-Benefits-of-version-2-and-how-to-integrate-it-AndroidUpdate dropbox functionality:
-
(done) syntax sugar on top of generators to make promise code more readable [google] (https://developers.google.com/web/fundamentals/getting-started/primers/async-functions), microsoftAsync/Await:
-
(done) Objects are organized by label folders. New folders can be added without having to update code, simply add folder to parameter file. Folders should be organized by objects and images referred to by descriptive label that includes metaparameters and hash.Drag & Drop Image Loading:
-
(done) create block modes to select subsets of images based on metaparameters or designated train/test splits.Automator improvements:
-
Sensors:
Create plugins for RFID and weight sensors -
Database functionality:
write a script to transfer data from storage location into a database. This step happens offline and may depend on server side hardware that requires within lab administrative effort. -
Inclusive Task Structuring:
Task is a set of screens with rules between screens. Each screen is a container of precisely specified images (x,y,t). This structure ideally will accommodate DMS, Go-No Go, SR, and N-back tasks. -
(postponed; instead added in situ parameter text editing at beginning of task) gui that allows user to view and set parameters for a given subject that day and for setting up training schedules for the automator. GUI could also display image previews or recent performance stats of subject.Parameter GUI:
This is a work-in-progress.
- Convert mkturk v1 code to work with Dropbox API v2.
- Create a codebase that allows for variants of the delayed AFC match-to-sample task template to be easily written (e.g. stimulus-response, serial target match-to-sample, n-back)
- In the spirit of v1's params.txt system, have a human-readable, online interface that can be used to specify aspects of the monkey's task while it is running
- Streamline the current process for adding novel stimuli to a preexisting task
- automate the packing of images
- remove the user's responsibility to follow hard-coded naming / folder-ing conventions on the user's image files
- Replicate the functionality of "automator.js" - a task-switching automator that allows for automated traversal through a monkey training pipeline
- Add a functionality for automatically archiving tasks and stimulus images, and enabling one-command recreation of previous task HTMLs for record-keeping / replication / inheritance purposes
- Automate database storage of monkey psychophysics data to a local lab server (e.g. dicarlo5), in line with the lab specified data format
- Base code which applies to every mkturk task - does universal things like specifying a base HTML template, logging to Dropbox / some DB, etc.
- Task template code which specifies the rules, temporal structure, and other general aspects of a task. Particulars like the stimulus set to be used, reward amount, etc. are not specified here; this is supposed to be a template that anyone can plug-and-play by using the next item.
- An online interface (like params.txt) used to specify the task template and the parameters of that task (e.g. which image folder / meta to pull stimuli from, stim duration, juice) by the experimenter or by a task automator. Can be used to perform day-to-day (or trial-to-trial) tweaks during data collection.
- A piece of automator code in which a user-specified sequence of task templates / task params can be traversed based on some specified criteria. (e.g. for a training pipeline)