diff --git a/bcipy/core/symbols.py b/bcipy/core/symbols.py index 1b642e4f..2318073a 100644 --- a/bcipy/core/symbols.py +++ b/bcipy/core/symbols.py @@ -32,12 +32,12 @@ def alphabet(parameters: Optional[Any] = None, include_path: bool = True, stimulus_array: List[str] = [] for stimulus_filename in sorted(os.listdir(path)): # PLUS.png is reserved for the fixation symbol - if stimulus_filename.endswith( - '.png') and not stimulus_filename.endswith('PLUS.png'): + root, ext = os.path.splitext(stimulus_filename) + if ext in [".png", ".bmp", ".jpg"] and not root.endswith("PLUS"): if include_path: img = os.path.join(path, stimulus_filename) else: - img = os.path.splitext(stimulus_filename)[0] + img = root stimulus_array.append(img) return stimulus_array diff --git a/bcipy/core/tests/resources/images/1x1_PLUS.bmp b/bcipy/core/tests/resources/images/1x1_PLUS.bmp new file mode 100644 index 00000000..b3ae134e Binary files /dev/null and b/bcipy/core/tests/resources/images/1x1_PLUS.bmp differ diff --git a/bcipy/core/tests/resources/images/1x1_PLUS.jpg b/bcipy/core/tests/resources/images/1x1_PLUS.jpg new file mode 100644 index 00000000..d1d27bf7 Binary files /dev/null and b/bcipy/core/tests/resources/images/1x1_PLUS.jpg differ diff --git a/bcipy/core/tests/resources/images/1x1_PLUS.png b/bcipy/core/tests/resources/images/1x1_PLUS.png new file mode 100644 index 00000000..b4bdc430 Binary files /dev/null and b/bcipy/core/tests/resources/images/1x1_PLUS.png differ diff --git a/bcipy/core/tests/resources/images/a_1x1.bmp b/bcipy/core/tests/resources/images/a_1x1.bmp new file mode 100644 index 00000000..b3ae134e Binary files /dev/null and b/bcipy/core/tests/resources/images/a_1x1.bmp differ diff --git a/bcipy/core/tests/resources/images/b_1x1.jpg b/bcipy/core/tests/resources/images/b_1x1.jpg new file mode 100644 index 00000000..d1d27bf7 Binary files /dev/null and b/bcipy/core/tests/resources/images/b_1x1.jpg differ diff --git a/bcipy/core/tests/resources/images/c_1x1.png b/bcipy/core/tests/resources/images/c_1x1.png new file mode 100644 index 00000000..b4bdc430 Binary files /dev/null and b/bcipy/core/tests/resources/images/c_1x1.png differ diff --git a/bcipy/core/tests/resources/images/text.txt b/bcipy/core/tests/resources/images/text.txt new file mode 100644 index 00000000..7a98a964 --- /dev/null +++ b/bcipy/core/tests/resources/images/text.txt @@ -0,0 +1 @@ +Text file for testing only images are collected from the folder. \ No newline at end of file diff --git a/bcipy/core/tests/test_symbols.py b/bcipy/core/tests/test_symbols.py index f3cfce7a..0c3dead8 100644 --- a/bcipy/core/tests/test_symbols.py +++ b/bcipy/core/tests/test_symbols.py @@ -1,7 +1,7 @@ import unittest from bcipy.core.symbols import alphabet - +from typing import Dict class TestAlphabet(unittest.TestCase): def test_alphabet_text(self): @@ -17,15 +17,26 @@ def test_alphabet_text(self): '<', '_' ]) - def test_alphabet_images(self): - parameters = {} + def test_alphabet_images_with_path(self): + path = 'bcipy/core/tests/resources/images/' + parameters: Dict[str, bool | str] = {} parameters['is_txt_stim'] = False - parameters['path_to_presentation_images'] = ('bcipy/static/images/' - 'rsvp/') + parameters['path_to_presentation_images'] = path alp = alphabet(parameters) - self.assertNotEqual(alp, [ - 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', - 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'V', 'Y', 'Z', '<', '_' + self.assertEqual(alp, [ + path + 'a_1x1.bmp', + path + 'b_1x1.jpg', + path + 'c_1x1.png' ]) + + def test_alphabet_images_without_path(self): + path = 'bcipy/core/tests/resources/images/' + parameters: Dict[str, bool | str] = {} + parameters['is_txt_stim'] = False + parameters['path_to_presentation_images'] = path + + alp = alphabet(parameters, include_path=False) + + self.assertEqual(alp, ['a_1x1', 'b_1x1', 'c_1x1']) diff --git a/bcipy/display/paradigm/rsvp/display.py b/bcipy/display/paradigm/rsvp/display.py index 2c075eda..b8aa6a27 100644 --- a/bcipy/display/paradigm/rsvp/display.py +++ b/bcipy/display/paradigm/rsvp/display.py @@ -319,7 +319,7 @@ def _generate_inquiry(self) -> List[Dict[str, Any]]: this_stimuli_size = (self.size_list_sti[idx] if self.size_list_sti else self.stimuli_height) - if stim.endswith('.png'): + if any([stim.endswith(ext) for ext in [".png", ".bmp", ".jpg"]]): current_stim['sti'] = self._create_stimulus( mode='image', height=this_stimuli_size, diff --git a/bcipy/parameters/parameters.json b/bcipy/parameters/parameters.json index 79022527..ccbb7fef 100755 --- a/bcipy/parameters/parameters.json +++ b/bcipy/parameters/parameters.json @@ -267,7 +267,7 @@ "value": "bcipy/static/images/rsvp/", "section": "bci_config", "name": "Image Stimulus Folder", - "helpTip": "Specifies the location of image files to be used as stimuli (Text Stimuli On/Off must be set to ‘false’). This must be a directory ending with /.", + "helpTip": "Specifies the location of image files to be used as stimuli (Text Stimuli On/Off must be set to ‘false’). This must be a directory ending with /. Image files must have extension .bmp, .jpg, or .png. Files ending in PLUS.bmp, PLUS.jpg, or PLUS.png, are ignored as they are assumed to be fixation images.", "recommended": "", "editable": false, "type": "directorypath"