Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion posts/services/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -343,7 +343,7 @@ def compute_sorting_divergence(post: Post) -> dict[int, float]:
difference = prediction_difference_for_sorting(
forecast.get_prediction_values(),
cp.get_prediction_values(),
question,
question.type,
)
if (forecast.author_id not in user_divergences) or (
abs(user_divergences[forecast.author_id]) < abs(difference)
Expand Down
2 changes: 1 addition & 1 deletion posts/services/subscriptions.py
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ def notify_post_cp_change(post: Post):
difference = prediction_difference_for_sorting(
old_forecast_values,
current_forecast_values,
question=question,
question_type=question.type,
)
if max_sorting_diff is None or difference > max_sorting_diff:
max_sorting_diff = difference
Expand Down
20 changes: 20 additions & 0 deletions questions/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from django.utils.html import format_html
from django_better_admin_arrayfield.admin.mixins import DynamicArrayMixin

from questions.types import AggregationMethod
from questions.models import (
AggregateForecast,
Conditional,
Expand Down Expand Up @@ -42,6 +43,7 @@ class QuestionAdmin(CustomTranslationAdmin, DynamicArrayMixin):
"export_selected_questions_data_anonymized",
"rebuild_aggregation_history",
"trigger_scoring",
"trigger_scoring_with_all_aggregations",
]
list_filter = [
"type",
Expand Down Expand Up @@ -142,6 +144,24 @@ def trigger_scoring(self, request, queryset: QuerySet[Question]):

trigger_scoring.short_description = "Trigger Scoring (does nothing if not resolved)"

def trigger_scoring_with_all_aggregations(
self, request, queryset: QuerySet[Question]
):
from scoring.utils import score_question

for question in queryset:
if question.resolution in ["", None, "ambiguous", "annulled"]:
continue
score_question(
question=question,
resolution=question.resolution,
aggregation_methods=list(AggregationMethod._member_map_.values()),
)

trigger_scoring_with_all_aggregations.short_description = (
"Trigger Scoring (Includes ALL Aggregations) (does nothing if not resolved)"
)


@admin.register(Conditional)
class ConditionalAdmin(admin.ModelAdmin):
Expand Down
2 changes: 1 addition & 1 deletion questions/serializers/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -993,7 +993,7 @@ def serialize_question_movement(
divergence = prediction_difference_for_sorting(
f1.forecast_values,
f2.forecast_values,
question,
question.type,
)

if divergence >= threshold:
Expand Down
4 changes: 2 additions & 2 deletions questions/services.py
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ def compute_question_movement(question: Question) -> float | None:
return prediction_difference_for_sorting(
cp_now.get_prediction_values(),
cp_previous.get_prediction_values(),
question,
question.type,
)


Expand Down Expand Up @@ -1035,7 +1035,7 @@ def calculate_user_forecast_movement_for_questions(
divergence = prediction_difference_for_sorting(
f1.forecast_values,
f2.forecast_values,
question,
question.type,
)

if divergence >= 0.25:
Expand Down
10 changes: 10 additions & 0 deletions questions/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,13 @@ class AggregationMethod(models.TextChoices):
UNWEIGHTED = "unweighted"
SINGLE_AGGREGATION = "single_aggregation"
METACULUS_PREDICTION = "metaculus_prediction"
MEDALISTS = "medalists"
EXPERIENCED_USERS_25_RESOLVED = "experienced_users_25_resolved"
IGNORANCE = "ignorance"
RECENCY_WEIGHTED_LOG_ODDS = "recency_weighted_log_odds"
RECENCY_WEIGHTED_MEAN_NO_OUTLIERS = "recency_weighted_mean_no_outliers"
RECENCY_WEIGHTED_MEDALISTS = "recency_weighted_medalists"
RECENCY_WEIGHTED_EXPERIENCED_USERS_25_RESOLVED = (
"recency_weighted_experienced_users_25_resolved"
)
RECENCY_WEIGHTED_LOG_ODDS_NO_OUTLIERS = "recency_weighted_log_odds_no_outliers"
103 changes: 0 additions & 103 deletions scoring/reputation.py

This file was deleted.

Loading