Example #1
0
def basic(request):
    "Calculates and displays some basic statistics."
    context = {}

    # Number of users
    num_users = stats.count_active_users()
    context["num_users"] = num_users

    # Number of questions answered
    num_responses = models.MultipleChoiceResponse.objects.count()
    context["num_responses"] = num_responses
    context["responses_per_user"] = num_responses / float(num_users)

    num_tests = models.TestSet.objects.exclude(end_time=None).count()
    context["num_tests"] = num_tests

    (context["mean_tbt"], context["std_tbt"]) = basic_stats(stats.get_time_between_tests())

    context["log_start_time"] = models.TestSet.objects.order_by("start_time")[0].start_time
    context["log_end_time"] = models.TestSet.objects.order_by("-start_time")[0].start_time

    context["tests_per_user"] = num_tests / float(num_users)
    context["responses_per_test"] = num_responses / float(num_tests)

    all_responses = models.MultipleChoiceResponse.objects
    context["mean_score"] = all_responses.filter(option__is_correct=True).count() / float(all_responses.count())

    test_stats = stats.get_test_size_stats()
    pretty_results = [(k, 100 * t, 100 * c) for (k, t, c) in test_stats]
    context["test_dist"] = pretty_results

    context["time_used_mean"], context["time_used_std"] = stats.get_mean_time_used()

    return render_to_response("analysis/basic.html", context, RequestContext(request))
Example #2
0
def _build_time_graph(name):
    if name == "betweentests":
        data = stats.get_time_between_tests()
        hist_data = stats.log_histogram(data, start=1.0 / (24 * 60))
        chart = charts.LineChart(hist_data, data_name="histogram")
        chart.add_data("raw", [(x,) for x in data])
        return chart

    elif name == "sessions":
        data = stats.get_mean_score_over_sessions()
        approx_data = stats.approximate(data, n_points=12)
        chart = charts.MultiLineChart(approx_data, y_axis=(0.0, 1, 0.1), x_axis=(0, 1, 0.1), data_name="approximate")
        chart.add_data("raw", data)
        two_colours = charts.color_desc(2).split(",")
        three_colours = ",".join((two_colours[0], two_colours[1], two_colours[1]))
        chart["chco"] = three_colours
        return chart

    raise KeyError(name)
Example #3
0
def basic(request):
    "Calculates and displays some basic statistics."
    context = {}

    # Number of users
    num_users = stats.count_active_users()
    context['num_users'] = num_users

    # Number of questions answered
    num_responses = models.MultipleChoiceResponse.objects.count()
    context['num_responses'] = num_responses
    context['responses_per_user'] = num_responses / float(num_users)

    num_tests = models.TestSet.objects.exclude(end_time=None).count()
    context['num_tests'] = num_tests

    (
        context['mean_tbt'],
        context['std_tbt'],
    ) = basic_stats(stats.get_time_between_tests())

    context['log_start_time'] = models.TestSet.objects.order_by(
        'start_time')[0].start_time
    context['log_end_time'] = models.TestSet.objects.order_by(
        '-start_time', )[0].start_time

    context['tests_per_user'] = num_tests / float(num_users)
    context['responses_per_test'] = num_responses / float(num_tests)

    all_responses = models.MultipleChoiceResponse.objects
    context['mean_score'] = (
        all_responses.filter(option__is_correct=True).count() /
        float(all_responses.count()))

    test_stats = stats.get_test_size_stats()
    pretty_results = [(k, 100 * t, 100 * c) for (k, t, c) in test_stats]
    context['test_dist'] = pretty_results

    context['time_used_mean'], context['time_used_std'] = \
            stats.get_mean_time_used()

    return render_to_response("analysis/basic.html", context,
                              RequestContext(request))
Example #4
0
def _build_time_graph(name):
    if name == 'betweentests':
        data = stats.get_time_between_tests()
        hist_data = stats.log_histogram(data, start=1.0 / (24 * 60))
        chart = charts.LineChart(hist_data, data_name='histogram')
        chart.add_data('raw', [(x, ) for x in data])
        return chart

    elif name == 'sessions':
        data = stats.get_mean_score_over_sessions()
        approx_data = stats.approximate(data, n_points=12)
        chart = charts.MultiLineChart(approx_data,
                                      y_axis=(0.0, 1, 0.1),
                                      x_axis=(0, 1, 0.1),
                                      data_name='approximate')
        chart.add_data('raw', data)
        two_colours = charts.color_desc(2).split(',')
        three_colours = ','.join(
            (two_colours[0], two_colours[1], two_colours[1]))
        chart['chco'] = three_colours
        return chart

    raise KeyError(name)