As a little side product from the experiments that I recently implemented with oTree, I created otreeutils. This package contains several utility functions and classes for use cases that I came across quite often in the recent weeks. So I decided to create this small package to re-use my code in several experiments and also to share it with others. Update: The package is now also available on PyPI. You can install it via pip install otreeutils
.
First and foremost, otreeutils allows easier creation of surveys, which are a part of many experiments. Instead of defining the Player
model fields, the view page(s) and HTML templates separately, it’s now possible to define the survey questions and their fields in a single data structure. Then you can generate the Player
model class automatically and just define the order of survey pages (if you distribute the survey questions across several pages) — no need to write any HTML.
Another use case that occurs quite often are pages with understanding questions. The participant can only proceed after answering a set of understanding questions correctly. Hints can be displayed for wrong answers. This is implemented in the UnderstandingQuestionsPage
base class. Again, the questions can be defined in a single data structure, no template needs to be edited.
Finally, we found that we needed a softer variant of oTree’s page timeouts, which automatically switch to the next page after a time limit. I implemented a small extension that allows to define a “timeout warning” which is displayed after the time limit is reached. The participant is not forced to the next page.
More features might come soon as we continue to use oTree at the WZB.
The github repository explains the API in the README file and contains fully documented example apps.
Recent Comments