Skip to content

Commit

Permalink
fixed bug in computing results summary. (#1018)
Browse files Browse the repository at this point in the history
  • Loading branch information
takinbo authored Oct 26, 2024
1 parent f0cb4d9 commit e78ed97
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 15 deletions.
33 changes: 19 additions & 14 deletions apollo/result_analysis/results.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,10 @@ def _variance(dataframe, numerator, denominator):
sigma_msquared = msquared.sum(axis=0)
sigma_am = am.sum(axis=0)

return ((1 - f) / (k * mbarsquared)) * (
(sigma_asquared - (2 * p * sigma_am) + (psquared * sigma_msquared)) / (k - 1)
return (
((1 - f) / (k * mbarsquared)) * ((sigma_asquared - (2 * p * sigma_am) + (psquared * sigma_msquared)) / (k - 1))
if k != 1
else np.nan
)


Expand Down Expand Up @@ -106,18 +108,6 @@ def voting_results(form_id, location_id=None):
not_(models.Submission.quarantine_status.in_(["A", "R"])),
)
filter_set = filter_class(queryset, request.args)
dataset = make_submission_dataframe(filter_set.qs, form)

for result_field in result_fields:
null_value_orig = result_field.get("null_value")
if null_value_orig is None:
continue
try:
null_value = int(null_value_orig)
except (TypeError, ValueError):
continue

dataset[result_field["tag"]] = dataset[result_field["tag"]].replace(null_value, np.nan)

registered_voters_field = form.registered_voters_tag or "registered_voters"
if form.invalid_votes_tag:
Expand All @@ -137,6 +127,21 @@ def voting_results(form_id, location_id=None):
non_zero_fields = [registered_voters_field]
non_zero_sum_fields = result_field_labels

excluded_fields = set(form.tags).difference(non_null_fields + non_zero_fields)

dataset = make_submission_dataframe(filter_set.qs, form, excluded_tags=excluded_fields)

for result_field in result_fields:
null_value_orig = result_field.get("null_value")
if null_value_orig is None:
continue
try:
null_value = int(null_value_orig)
except (TypeError, ValueError):
continue

dataset[result_field["tag"]] = dataset[result_field["tag"]].replace(null_value, np.nan)

if not dataset.empty:
# compute and store reporting status
dataset["reported"] = (
Expand Down
2 changes: 1 addition & 1 deletion apollo/submissions/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ def make_submission_dataframe(query, form, selected_tags=None, excluded_tags=Non
# standard deviation on those columns
type_coercions = {
tag: np.float64
for tag in form.tags
for tag in fields
if form.get_field_by_tag(tag)["type"] == "integer" or form.get_field_by_tag(tag)["type"] == "select"
}

Expand Down

0 comments on commit e78ed97

Please sign in to comment.