virtualcommons / vcweb Goto Github PK
View Code? Open in Web Editor NEWDjango framework for collective action experiments
Home Page: http://commons.asu.edu
License: Other
Django framework for collective action experiments
Home Page: http://commons.asu.edu
License: Other
Create a django form and replace the redirect at /bug-report with a server endpoint that interacts with the github issues API to create bug reports.
Sending experiment registration emails & subject pool invitation emails to large number of users are raising a need for proper server-side async processing support (or at a minimum hacking it together client-side by disabling buttons via javascript etc).
code is hairy, see if you can clean it up
They appear to be displaying the target data value date instead of the comment date.
https://vcweb.asu.edu/cas/asu/
ReferenceError: Can't find variable: inf
See https://vcsentry.asu.edu/vcweb/vcweb/group/362/ for more details
integrate account profile updating and subject pool invitation signups into the participant dashboard instead of convoluted redirect logic in core.views.dashboard
You cannot apply bindings multiple times to the same element.
See also: billpull/knockout-bootstrap#49
This is an area that needs improvement, both documentation-wise and in terms of framework / API support
round started handlers must invoke initialize_data_values with the appropriate parameters in order to initialize data values. If any errors occur in data value initialization, subsequent rounds will fail to run / load properly. This should be declarative instead, defined via the ExperimentConfiguration / RoundConfiguration objects. We can work to come up with a scheme for declaring how participant and data values can be transferred from round to round, and whether or not a round should transfer data values across or not.
Participants should create data values as they participate and generate data, not created at the start of the round and then updated when they generate data. For instance, the boundary effects experiment creates a new harvest decision data value every time a participant selects a harvest decision. The one that "sticks" is their most recent one with is_active=True.
The creation of and transfer of essential group data values has to occur when a round begins, so this may stay the same.
Consider https://docs.djangoproject.com/en/dev/ref/django-admin/#django-admin-option---template to create an experiment app template with boilerplate needed to set up a new ExperimentMetadata type including round started handlers, round ended handlers, customizing ExperimentMetadata properties, parameterization, etc.
Another possibility is a custom django management command like ./manage.py newexperiment that uses startapp behind the scenes to create a new vcweb experiment app skeleton.
our sockjs tornado is giving a lot of warnings on chrome and no longer works on firefox.
autoselecting the just-added session would make the subject recruitment workflow faster
Causing registered experiment handlers to execute twice, advancing the round twice, sending two sets of emails, etc.
I think core.views.update_round_configuration can benefit from a similar refactor as the other configuration endpoints by pushing logic into the form. What do you think?
implement group clustering treatment where payment is dependent on performance of all groups within the cluster instead of just the group.
Set reply-to header on contact form email to the authenticated user's email if logged-in
We have a case where a participant received an invitation for the same experiment twice. Please locate and fix the bug in the invitation logic ASAP.
For experiment 115:
In [7]: [rpv.date_created for rpv in RoundParameterValue.objects.filter(parameter__name='regrowth_rate', round_configuration=rc)] Out[7]:
[datetime.datetime(2014, 9, 30, 12, 49, 22, 145468),
datetime.datetime(2014, 9, 30, 12, 49, 22, 146903),
datetime.datetime(2014, 9, 30, 12, 49, 22, 150136),
datetime.datetime(2014, 9, 30, 12, 49, 22, 153204)]
It is possible to create "degenerate" experiments where the number of participants and groups isn't enough to actually run the experiment properly. Should provide some level of validation to warn the user that this is occurring.
Example: creating 10 test participants for the boundary effects experiment AB/BA/AD create 3 groups, 2 with 4 participants and 1 with 2 participants. The group that doesn't get linked to a cluster will end up being degenerate and prevent the experiment from running properly.
This isn't a huge issue because the group requirements is a research protocol issue (register exact # of participants) but we should at least prevent the server side from dying or leaving the database in an inconsistent state.
Hook into system_daily_tick or similar signal to perform periodic audits:
participant pk 2042 had an Invitation generated even though their class status is Graduate. It's possible that they changed their class status after the Invitation was generated but please verify that Invitation generation logic is only including undergraduates.
Replace with Redis - need to merge redis_integration back into default
Some resources:
Consider replacing memcached django cache with django-redis-cache as well?
Sometimes invalid participants sign up and have to be removed (like graduate students, etc.). Would be nice to have a wait list of configurable size N that can be promoted to signed up participants in the experiment session when already-signed-up participants are removed.
Despite lots of error reports from sentry, it appears that django integration with sentry is broken at the moment for both vcweb and vcweb-dev.
./manage.py raven test
Sending a test message... DEBUG 2014-09-30 14:59:07,436 [raven.contrib.django.client.DjangoClient|send_remote:563] Sending message of length 4292 to https://vcsentry.asu.edu/api/1/store/
success!
Event ID was '0d756ae953f94807a04f7883372b3db8'
ERROR 2014-09-30 14:59:07,480 [sentry.errors|_target:141] Failed processing job
Traceback (most recent call last):
File "/opt/virtualenvs/vcweb/lib/python2.7/site-packages/raven/transport/threaded.py", line 139, in _target
callback(*args, **kwargs)
File "/opt/virtualenvs/vcweb/lib/python2.7/site-packages/raven/transport/threaded.py", line 161, in send_sync
failure_cb(e)
File "/opt/virtualenvs/vcweb/lib/python2.7/site-packages/raven/base.py", line 566, in failed_send
self._failed_send(e, url, data)
File "/opt/virtualenvs/vcweb/lib/python2.7/site-packages/raven/base.py", line 538, in _failed_send
body = e.read()
File "/usr/lib64/python2.7/socket.py", line 351, in read
data = self._sock.recv(rbufsize)
File "/usr/lib64/python2.7/httplib.py", line 543, in read
return self._read_chunked(amt)
File "/usr/lib64/python2.7/httplib.py", line 597, in _read_chunked
raise IncompleteRead(''.join(value))
IncompleteRead: IncompleteRead(3987 bytes read)
May be a reasonable replacement for the random color set that's being used now.
Currently experimenter notes can only be submit for the current round. Add it as a textarea that can be submit for any round.
Going to /accounts/profile/ as an undergrad student shows a profile page where the save button is forever disabled.
Steps to reproduce:
After creating an ExperimentSession via the subject pool interface it gets autoselected but the "Create Invitations" button remains disabled.
2 treatments
group size of 20
no leaderboard
Group average score: 60
Your neighborhood average score: 77
Your total point contribution: 100
T1:
everyone connected, standard fully connected group
can see group score (payment = group average * $.02)
communication goes to entire group
T2:
ego net / lattice network structure, each participant is connected to 4 other participants
neighborhood info and chat
can see group score (payment = group average * $.02)
can see neighborhood score (average contributions of everyone connected to you)
(DONE) add preference questions support to data model dynamic group sizes to maximize group heterogeneity / similarity add time as a participant resource constraints, where a participant is endowed with a set of time and can allocate it to different activities information is spread across network structures
Seeing fairly frequent csrf failures in the logs now (originating from vcweb.core.views.csrf_failure)
Despite having a group_required
annotation experiment_session_signup led to a 500 error (https://vcsentry.asu.edu/vcweb/vcweb/group/402/) instead of redirecting.
Unchecking the "send email" checkbox in register-participants leads to a Javascript validation error stating that it is a required field.
create server endpoint and wire it up to an interface to allow experimenters to automatically move all signup participants from a given ExperimentSession into a given Experiment
Also look into replacing Experiment.start_date with ExperimentSession.scheduled_date. I think this means that Experiments will have a OneToOne with ExperimentSessions. This makes our data model messy though and allows degeneracy as ExperimentSession still needs the ManyToOne with ExperimentMetadata as not all scheduled subject pool experiment sessions are related to vcweb Experiments.
Consider creating an ExperimentSession automatically when creating an experiment that captures the start date and other metadata.
Need to refactor the experimenter dashboard & monitor pages & workflows. Some visual ideas:
http://startbootstrap.com/template-categories/admin-dashboard/
registered participants doesn't get updated properly when a real-time experiment is activated (try it with forestry)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.