Giter Club home page Giter Club logo

dallinger's Introduction

Dallinger

Build Status Demos codecov Code Climate License

Dallinger's incubator

Laboratory automation for the behavioral and social sciences.

Features

  • Performs laboratory automation for the behavioral and social sciences
  • Coordinates participant recruitment using Mechanical Turk

Install

To install Dallinger, see the instructions.

Documentation

Documentation is available on the documentation website.

Demos

Demonstration experiments are distributed separately in the dlgr.demos package.

Contribute

Support

If you are having issues, please let us know.

Subscribe to our Slack channel

Dallinger is open-source, and is completely free to use in your experiments. However, to help users with technical issues and experiment creation, the Dallinger team maintains a Dallinger support Slack channel. Access to the Dallinger support Slack requires a $10 per month per user subscription, with proceeds supporting the future development of Dallinger. Users are free to subscribe for as many or as few months as they wish.

To subscribe and gain access to the Slack support channel, please download and complete this invoice. Completed invoices, along with a check for the appropriate amount, should be sent to the address on the invoice. Upon the invoice being processed, the listed users will be added to the Slack channel. If you are from a developing nation and are unable to afford a subscription, please contact us directly.

License

The project is licensed under the MIT license.

dallinger's People

Contributors

a-paxton avatar alecpm avatar cewing avatar cguardia avatar chiruzzimarco avatar dallingerbot avatar davisagli avatar dependabot[bot] avatar elinevg avatar fmhoeger avatar jcpeterson avatar jessesnyder avatar jhamrick avatar luke-poeppel avatar matthewwilkes avatar mpacer avatar pelmers avatar pkrafft avatar pmcharrison avatar polvanrijn avatar pyup-bot avatar silviot avatar stefanuddenberg avatar suchow avatar thomasmorgan avatar vlall avatar witekdev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dallinger's Issues

User-modified settings in .dallingerconfig not saved

Users have the option of including experiment configuration parameters in one of two locations: the experiment's config.txt or a global .dallingerconfig file. This separation has two benefits: (1) it allows keys for Heroku and other web services to be stored outside of the files that are packaged up in a zip file each time an experiment is run; and (2) it allows for default settings, such as the organization name, to be overwritten once instead of needing to rewrite it for each new experiment. However, .dallingerconfig is not saved. It should be, because the file can contain information relevant to the experiment and how it was run.

Add demo on co-evolutionary networks

From @thomasmorgan on September 3, 2014 22:11

We should make demos:

1 - two co-evolving species (think host parasite)
2 - one where participants fill out the behavior of the environment (participatory fitness function). This is also quite like Stephan's game where other participants acted as filters.

Copied from original issue: berkeley-cocosci/Wallace#30

Add demo that uses multiple types of interaction networks

From @michaelpacer on November 11, 2014 0:17

This is a reason to have vector types as an extension of the vector class so as to allow multigraphs over the same sets of nodes that obey different constraints on the kinds of information transmission that can occur.

Possible examples:

Evolutionary Graph theory: Breaking the symmetry between interaction and replacement

Gender based sexual reproduction restrictions, no gender based behavioral restrictions

Species level reproduction restrictions, alarm calls and communication between species

Copied from original issue: berkeley-cocosci/Wallace#72

Add demo that uses multiple types of interaction networks

From @michaelpacer on November 11, 2014 0:17

This is a reason to have vector types as an extension of the vector class so as to allow multigraphs over the same sets of nodes that obey different constraints on the kinds of information transmission that can occur.

Possible examples:

Evolutionary Graph theory: Breaking the symmetry between interaction and replacement

Gender based sexual reproduction restrictions, no gender based behavioral restrictions

Species level reproduction restrictions, alarm calls and communication between species

Copied from original issue: berkeley-cocosci/Wallace#72

Use a new configuration parser

The configuration parser should be as similar as possible to what's there, but should not depend on psiTurk. This may also be a good opportunity to address #73, an issue where user-modified settings in the .dallingerconfig file are not recorded in the experiment package.

Remove nested requests

From @suchow on July 26, 2016 18:34

Consider the nested HTTP requests in the following snippet from questionnaire.js:

submit_responses = function() {
    if (lock===false) {
        lock=true;
        reqwest({
            url: "/question/" + participant_id,
            method: 'post',
            type: 'json',
            data: {
                question: "engagement",
                number: 1,
                response: $("#engagement").val()
            },
            success: function (resp) {
                reqwest({
                    url: "/question/" + participant_id,
                    method: 'post',
                    type: 'json',
                    data: {
                        question: "difficulty",
                        number: 2,
                        response: $("#difficulty").val()
                    },
                    success: function(resp) {
                        submit_assignment();
                    },
                    error: function (err) {
                        err_response = JSON.parse(err.response);
                        if (err_response.hasOwnProperty('html')) {
                            $('body').html(err_response.html);
                        }
                    }
                });
            },
            error: function (err) {
                console.log(err);
                err_response = JSON.parse(err.response);
                if (err_response.hasOwnProperty('html')) {
                    $('body').html(err_response.html);
                }
            }
        });
    }
};

Because the second HTTP request does not depend on the first, it is unnecessary to nest them in this way. It would be simpler to write a for loop over the questions and post them one by one.

This appears in several places elsewhere.

Copied from original issue: berkeley-cocosci/Wallace#395

Implement a variety of economic games

https://en.wikipedia.org/wiki/List_of_games_in_game_theory

  • Hedonic games #189
  • Schelling spatial segregation #188
  • Voronoi game #137
  • Keynesian beauty contest #42
  • Iterated prisoners dilemma tournament
  • Battle of the sexes
  • Blotto games
  • Fair division
  • Centipede game
  • Chicken
  • Cournot competition
  • Deadlock
  • Dictator game
  • Diner's dilemma
  • Dollar auction
  • El Farol Bar problem
  • Game without a value
  • Guess two thirds of the average
  • Kuhn poker
  • Matching pennies
  • Minority game
  • Kolkata Paise Restaurant Problem
  • Nash bargaining game
  • Pirate game
  • Ultimate game
  • Pigs
  • Princess and monster game
  • Prisoner's dilemma
  • Iterated prisoner's dilemma
  • Public goods game
  • Rock, paper, scissors
  • Screening game
  • Signaling game
  • Stag hunt
  • Traveler's dilemma
  • War of Attrition
  • Ultimatum game
  • Nim
  • Samaritan's dilemma
  • Pareto coordination (see pg. 29 of the Joel Watson game theory text)

Create a dyadic network structure

(This is what you'd want if participants arrived one by one and were arranged into pairs. Then you can generalize to the case of triads, small groups, etc.)

work out why some notifications are not being processed

From @thomasmorgan on October 15, 2015 0:43

Wallace uses notifications from AWS to advance a particular experiment. For example, when recruiting participants in batches of 40, Wallace waits for a submitted notification from AWS as a prompt to update the status of the participant in the database to 101 (meaning completed) and it then uses this to determine whether it needs to put up 40 more slots or not.

Because processing the notifications can take a long time they are dealt with by worker dynos.

During the most recent large scale study, in some instances Wallace paused, seemingly awaiting a notification from AWS. However, the logs show that the notification is sent, but that it is not processed successfully. At first it appeared that it wasn't being added to the queue successfully and so was never being picked up by the worker dynos, however, in some cases the worker dynos appeared to start working on it, but did not finish successfully.

Copied from original issue: berkeley-cocosci/Wallace#237

psiTurk separation

The goal is to allow Dallinger to run without psiTurk as a dependency. This will require a good bit of research into how exactly we depend on psiTurk.

  • Use a different configuration manager (#72)
  • Flask app
  • psiTurk shell
  • psiTurk access keys
  • Documentation
  • Overwritten routes (compute_bonus/, quitter/)
  • scoped_session_decorator in db.py
  • Ad server

Method for tracing the history of an info

From @michaelpacer on November 11, 2014 1:9

Given an info identity, create a complete history of any particular piece of info by tracing the source infos (in a many to one transformation) recursively until you arrive at a source or a human participant who created the info.

A secondary convenience method might be to create a graph of this information path through the nodes, transformations and vectors it went along and through.

Copied from original issue: berkeley-cocosci/Wallace#74

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.