aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGertjan van den Burg <gertjanvandenburg@gmail.com>2019-08-19 16:29:58 +0100
committerGertjan van den Burg <gertjanvandenburg@gmail.com>2019-08-19 16:29:58 +0100
commit21a84de349a7b9843fd6aaee9d80a5b2bcfb6b64 (patch)
tree5e9fa7a9225405bfede43e455ad5858454119bd3
parentAdd terms and conditions to registration page (diff)
downloadAnnotateChange-21a84de349a7b9843fd6aaee9d80a5b2bcfb6b64.tar.gz
AnnotateChange-21a84de349a7b9843fd6aaee9d80a5b2bcfb6b64.zip
Add feedback for user during demo
-rw-r--r--app/main/demo.py51
-rw-r--r--app/templates/demo/evaluate.html3
2 files changed, 54 insertions, 0 deletions
diff --git a/app/main/demo.py b/app/main/demo.py
index 583e350..7c92bba 100644
--- a/app/main/demo.py
+++ b/app/main/demo.py
@@ -382,6 +382,53 @@ def process_annotations(demo_id):
return retval
+def get_user_feedback(true_cp, user_cp):
+ """Generate HTML to show as feedback to the user"""
+ user_cp = [int(x) for x in user_cp]
+
+ correct = []
+ window = []
+ incorrect = []
+ rem_true = list(true_cp)
+
+ for cp in user_cp:
+ if cp in rem_true:
+ correct.append(cp)
+ rem_true.remove(cp)
+ user_cp = [x for x in user_cp if not x in correct]
+
+ for cp in user_cp:
+ to_delete = []
+ for y in rem_true:
+ if abs(cp - y) < 5:
+ window.append(cp)
+ break
+ for y in to_delete:
+ rem_true.remove(y)
+ user_cp = [x for x in user_cp if not x in window]
+
+ for cp in user_cp:
+ incorrect.append(cp)
+
+ n_correct = len(correct)
+ n_window = len(window)
+ n_fp = len(incorrect)
+
+ text = "\n\n*Feedback:*\n\n"
+ if len(true_cp) == len(user_cp) == 0:
+ text += " - *Correctly identified that there are no change points.*\n"
+ if len(true_cp) > 0:
+ text += f"- *Number of changepoints exactly correct: {n_correct}.*\n"
+ if n_window:
+ text += f"- *Number of points correct within a 5-step window: {n_window}.*\n"
+ if n_fp:
+ text += f"- *Number of incorrectly identified points: {n_fp}.*"
+ text.rstrip()
+
+ text = markdown.markdown(text)
+ return text
+
+
def demo_learn(demo_id, form):
demo_data = DEMO_DATA[demo_id]["learn"]
return render_template(
@@ -443,6 +490,9 @@ def demo_evaluate(demo_id, phase_id, form):
"error",
)
return redirect(url_for("main.index"))
+
+ feedback = get_user_feedback(true_changepoints, user_changepoints)
+
annotations_true = [dict(index=x) for x in true_changepoints]
annotations_user = [dict(index=x) for x in user_changepoints]
return render_template(
@@ -452,6 +502,7 @@ def demo_evaluate(demo_id, phase_id, form):
annotations_user=annotations_user,
annotations_true=annotations_true,
text=demo_data["text"],
+ feedback=feedback,
form=form,
is_multi=is_multi,
)
diff --git a/app/templates/demo/evaluate.html b/app/templates/demo/evaluate.html
index 3f20c94..50a0d9e 100644
--- a/app/templates/demo/evaluate.html
+++ b/app/templates/demo/evaluate.html
@@ -13,6 +13,9 @@
<div class="col-md-8">
{{ text | safe }}
</div>
+ <div class="col-md-8">
+ {{ feedback | safe }}
+ </div>
</div>
<div class="graph-wrapper">