def test_allocation(self): study = Study.objects.get(slug='test-allocation-study') study.auto_randomise = False # note - we just test this, because it uses weighted_ranomisation too User.objects.filter(username__startswith="0").delete() users = [ make_user({ 'username': i, 'email': i + "@TEST.COM", 'password': i }) for i in [str(random.random()) for i in range(30)] ] # repeat the test with different group weightings ratios = list(permutations([1, 2, 3, 4], 3)) # [(1, 2, 3), (1, 2, 4), (1, 3, 2), (1, 3, 4) ... etc] study.randomisation_probability = .5 study.save() meanp = stats.lmean( [.00001] + [_get_p_for_allocation(study, users, i) for i in ratios]) assert meanp > .05
def test_making_membership(self): """"Can we add a dummy user to the demo study?""" study = Study.objects.get(slug='demo-study') user = make_user({'username': "******", 'email': "*****@*****.**", 'password': "******"}) membership = Membership(study=study, user=user) membership.save() assert membership.condition is None # has not auto-randomised allocate(membership) membership.add_observations() return membership
def test_autorandomisation(self): study = Study.objects.get(slug='demo-study') study.auto_randomise = False study.save() user = make_user({'username': "******", 'email': "*****@*****.**", 'password': "******"}) membership = Membership(study=study, user=user) membership.save() assert membership.condition is None allocate(membership) assert membership.condition is not None
def test_making_membership(self): """"Can we add a dummy user to the demo study?""" study = Study.objects.get(slug='demo-study') user = make_user({ 'username': "******", 'email': "*****@*****.**", 'password': "******" }) membership = Membership(study=study, user=user) membership.save() assert membership.condition is None # has not auto-randomised allocate(membership) membership.add_observations() return membership
def test_auto_add_observations(self): study = Study.objects.get(slug='demo-study') study.auto_add_observations = False study.save() user = make_user({'username': "******", 'email': "*****@*****.**", 'password': "******"}) membership = Membership(study=study, user=user) membership.save() assert membership.condition is None allocate(membership) assert membership.condition is not None assert membership.observation_set.all().count() is 0 membership.add_observations() assert membership.observation_set.all().count() is 1
def test_autorandomisation(self): study = Study.objects.get(slug='demo-study') study.auto_randomise = False study.save() user = make_user({ 'username': "******", 'email': "*****@*****.**", 'password': "******" }) membership = Membership(study=study, user=user) membership.save() assert membership.condition is None allocate(membership) assert membership.condition is not None
def test_allocation(self): study = Study.objects.get(slug='test-allocation-study') study.auto_randomise = False # note - we just test this, because it uses weighted_ranomisation too User.objects.filter(username__startswith="0").delete() users = [make_user({'username': i, 'email': i + "@TEST.COM", 'password': i}) for i in [str(random.random()) for i in range(30)]] # repeat the test with different group weightings ratios = list(permutations([1, 2, 3, 4], 3)) # [(1, 2, 3), (1, 2, 4), (1, 3, 2), (1, 3, 4) ... etc] study.randomisation_probability = .5 study.save() meanp = stats.lmean([.00001] + [_get_p_for_allocation(study, users, i) for i in ratios]) assert meanp > .05
def test_auto_add_observations(self): study = Study.objects.get(slug='demo-study') study.auto_add_observations = False study.save() user = make_user({ 'username': "******", 'email': "*****@*****.**", 'password': "******" }) membership = Membership(study=study, user=user) membership.save() assert membership.condition is None allocate(membership) assert membership.condition is not None assert membership.observation_set.all().count() is 0 membership.add_observations() assert membership.observation_set.all().count() is 1