Example #1
0
    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
Example #7
0
    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