From 17ca35b1a5ccf4f98c9a88b93845c48ad42fb2f4 Mon Sep 17 00:00:00 2001
From: Ed Rogers <etr@orc.soton.ac.uk>
Date: Thu, 5 Apr 2018 17:45:08 +0200
Subject: [PATCH] Add retest possibility

---
 HearingTest.py | 21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)

diff --git a/HearingTest.py b/HearingTest.py
index 0ef9d42..0c664ea 100644
--- a/HearingTest.py
+++ b/HearingTest.py
@@ -17,6 +17,7 @@ class HearingTest:
     lower_lim = 0
     n_blocks = 20
     max_response_time = 1  # in seconds
+    untested_prob = 0.15
 
     @staticmethod
     def block_size():
@@ -46,13 +47,21 @@ class HearingTest:
         return
 
     def play_next_sound(self):
-        # TODO allow tone outside lims with low prob?
         choices = []
-        for i, freq in enumerate(self.freqs):
-            choices.extend([(freq, v) for v in
-                            np.arange(self.lower_bounds[i]+self.block_size(),
-                                      self.upper_bounds[i],
-                                      self.block_size())])
+        if random.random() < self.untested_prob:
+            # completely random - allows a little retesting
+            for freq in self.freqs:
+                choices.extend([(freq, v) for v in
+                                np.arange(self.lower_lim,
+                                          self.upper_lim,
+                                          self.block_size())])
+        else:
+            # only allow choices from untested parts
+            for i, freq in enumerate(self.freqs):
+                choices.extend([(freq, v) for v in
+                                np.arange(self.lower_bounds[i]+self.block_size(),
+                                          self.upper_bounds[i],
+                                          self.block_size())])
         freq, volume = random.choice(choices)
         self.library.play(freq, volume)
         played_time = time.time()
-- 
GitLab