def get_index(self, name): """Returns the index of an electrode called `name` This function searches the electrode array for an electrode with string identifier `name`. If found, the index of that electrode is returned, else None. Parameters ---------- name : str An electrode name (string identifier). Returns ------- A valid electrode index or None. """ # Is `name` a valid electrode name? # Iterate through electrodes to find a matching name. Shuffle list # to reduce time complexity of average lookup. for idx, el in utils.traverse_randomly(enumerate(self.electrodes)): if el.name == name: return idx # Worst case O(n): name could not be found. return None
def test_traverse_randomly(): # Generate a list of integers sequence = np.arange(100).tolist() # Iterate the sequence in random order shuffled_idx = [] shuffled_val = [] for idx, value in enumerate(utils.traverse_randomly(sequence)): shuffled_idx.append(idx) shuffled_val.append(value) # Make sure every element was visited once npt.assert_equal(shuffled_idx, np.arange(len(sequence)).tolist()) npt.assert_equal(shuffled_val.sort(), sequence.sort())