Skip to content

Commit ad64938

Browse files
authored
2.0.0rc4 release (#338)
1 parent 02591eb commit ad64938

File tree

254 files changed

+21097
-7531
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

254 files changed

+21097
-7531
lines changed

.coveragerc

+9-2
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,22 @@
22
[run]
33
omit =
44
*__init__*
5+
*__main__*
56
*/usr/local/lib*
67
*tests*
78
*test*
89
*demo*
9-
*gui/*
10+
*exceptions.py
11+
*/gui/experiments/*
12+
*/gui/viewer/*
13+
*/gui/BCInterface.py
1014

1115
[report]
1216
exclude_lines =
1317
pragma: no cover
1418
def __repr__
19+
def __str__
1520
raise NotImplementedError
16-
if __name__ == .__main__.:
21+
@abstract
22+
if __name__ == .__main__.:
23+
logging.getLogger(__name__)

.github/workflows/codeql-analysis.yml

-70
This file was deleted.

.github/workflows/main.yml

+42-33
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,15 @@ jobs:
1818
strategy:
1919
fail-fast: false
2020
matrix:
21-
python-version: [3.8, 3.9]
21+
python-version: [3.8, 3.9, 3.10.6]
2222

2323
steps:
2424
- uses: actions/checkout@v2
2525
- name: Set up Python ${{ matrix.python-version }}
2626
uses: actions/setup-python@v2
2727
with:
2828
python-version: ${{ matrix.python-version }}
29-
- name: Install dependencies
29+
- name: Update OS, pip & install custom dependencies
3030
run: |
3131
sudo apt-get update
3232
sudo apt-get install libgtk-3-dev
@@ -37,13 +37,9 @@ jobs:
3737
sudo apt-get install xvfb
3838
python -m pip install --upgrade pip
3939
pip install attrdict3
40-
pip install -r dev_requirements.txt
41-
pip install -e .
42-
pip install kenlm==0.1 --global-option="--max_order=12"
43-
- name: Lint with flake8
40+
- name: Install dependencies
4441
run: |
45-
# stop the build if there are Python syntax errors or undefined names
46-
flake8 bcipy
42+
make dev-install
4743
- name: Unit test
4844
if: always()
4945
run: |
@@ -59,66 +55,79 @@ jobs:
5955
else
6056
echo "Ubuntu test failure"
6157
fi
58+
- name: type-check
59+
run: |
60+
make type
61+
- name: lint
62+
run: |
63+
make lint
6264
6365
build-windows:
6466

6567
runs-on: windows-latest
6668
strategy:
6769
fail-fast: false
6870
matrix:
69-
python-version: [3.8, 3.9]
71+
python-version: [3.8, 3.9, 3.10.6]
7072

7173
steps:
7274
- uses: actions/checkout@v2
7375
- name: Set up Python ${{ matrix.python-version }}
7476
uses: actions/setup-python@v2
7577
with:
7678
python-version: ${{ matrix.python-version }}
77-
- name: Install dependencies for python3.9
78-
if: matrix.python-version == 3.9
79+
- name: update pip & install custom dependencies
7980
run: |
8081
python -m pip install --upgrade pip
81-
pip install ./.bcipy/downloads/pyWinhook-1.6.2-cp39-cp39-win_amd64.whl
82-
- name: Install dependencies
82+
- name: install manually downloaded pyWinhook wheel for Python 3.9
83+
if: matrix.python-version == 3.9
8384
run: |
84-
python -m pip install --upgrade pip
85-
pip install -r dev_requirements.txt
86-
pip install -e .
87-
pip install kenlm==0.1 --global-option="--max_order=12"
88-
- name: Lint with flake8
85+
pip install ./.bcipy/downloads/pyWinhook-1.6.2-cp39-cp39-win_amd64.whl
86+
- name: install dependencies
8987
run: |
90-
# stop the build if there are Python syntax errors or undefined names
91-
flake8 bcipy
92-
- name: Unit test
88+
make dev-install
89+
- name: unittest
9390
if: always()
9491
run: |
95-
coverage run --branch --source=bcipy -m pytest --mpl -k "not slow"
92+
make coverage-report
93+
- name: type-check
94+
run: |
95+
make type
96+
- name: lint
97+
run: |
98+
make lint
9699
97100
build-macos:
98101

99102
runs-on: macos-latest
100103
strategy:
101104
fail-fast: false
102105
matrix:
103-
python-version: [3.8, 3.9]
106+
python-version: [3.8, 3.9, 3.10.6]
104107

105108
steps:
106-
- uses: actions/checkout@v2
109+
- uses: actions/checkout@v4
107110
- name: Set up Python ${{ matrix.python-version }}
108111
uses: actions/setup-python@v2
109112
with:
110113
python-version: ${{ matrix.python-version }}
111-
- name: Install dependencies
114+
- name: update pip & install custom dependencies
112115
run: |
116+
sh scripts/shell/m2chip_install.sh
117+
brew install labstreaminglayer/tap/lsl
113118
python -m pip install --upgrade pip
114-
pip install -r dev_requirements.txt
115-
pip install -e .
116-
pip install kenlm==0.1 --global-option="--max_order=12"
117-
- name: Lint with flake8
119+
- name: install dependencies
118120
run: |
119-
# stop the build if there are Python syntax errors or undefined names
120-
flake8 bcipy
121-
- name: Unit test
121+
make dev-install
122+
- name: unittest
122123
if: always()
123124
run: |
124-
coverage run --branch --source=bcipy -m pytest --mpl -k "not slow"
125+
make coverage-report
126+
- name: type-check
127+
run: |
128+
make type
129+
- name: lint
130+
run: |
131+
make lint
132+
133+

.gitignore

+14-7
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,40 @@
1+
# OS and Package Files
12
*.pyc
23
*~
34
.DS_Store
45
.cache/
56
.vscode/
67
.tm_properties
78
.mypy_cache/
8-
data/
9+
mypy-html.css
10+
.coverage
11+
index.html
12+
htmlcov/
13+
html/
14+
915
# Virtualenv
1016
venv/
1117
venv*/
1218
__pycache__/
1319
.cache/
1420

1521
# BciPy files and directories
16-
calibration.csv
17-
rawdata.csv
22+
*.csv
23+
*.pdf
1824
buffer.db
1925
lmwrap.log
2026
env.txt
2127
.idea
22-
.coverage
23-
htmlcov/
2428
bcipy.egg-info/
29+
data/
2530
build/
2631
dist/
27-
2832
bcipy/parameters/parameters_*
2933
bcipy_cache
30-
3134
bcipy/language/lms/lm_dec19_char_large_12gram.*
3235
bcipy/language/lms/out_*
3336
bcipy/language/out/
37+
38+
39+
bcipy/simulator/tests/resource/
40+
!bcipy/simulator/data

CHANGELOG.md

+75-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,79 @@
1-
# 2.0.1-rc.3
1+
# 2.0.0-rc.4
2+
3+
Our final release candidate before the official 2.0 release!
24

35
## Contributions
46

5-
- Bug Fixes
6-
- Fix for missing inits and static assets #284 catch sessions with no data #284 move experiment and field assets to parameters location #284
7+
- Multimodal Acquisition and Querying
8+
- Support for multiple devices in online querying #286
9+
- Support for trigger handling relative to a given device #293
10+
- Support multiple device static offests #331
11+
- Support for Device Status (passive or active) #310
12+
- Session Orchestrator #339
13+
- New task protocol for orchestrating tasks in a session. This refactors several Task and Cli functionality #339, #343
14+
- Parameter guardrails #340
15+
- Allow multiple phrases in a single protocol to be defined in a phrase.json and randomized #352
16+
- BciPy Client Additions #346
17+
- Other commands added for offline analysis, visualization and simulation.
18+
- Artifact Module #336
19+
- Simulator #350
20+
- Task
21+
- Calibration Task Refactor: pulls out common elements from RSVP and Matrix calibration tasks #330
22+
- Registry Refactor #332
23+
- Inquiry Preview
24+
- Surface button error probability #347
25+
- Add to Matrix #353
26+
- Bugfixes/Refactor #348
27+
- Add more stoppage criteria #351 (max_incorrect)
28+
- Matrix
29+
- Layout Support #349
30+
- Grid always on #313
31+
- Output stimuli position, screen capture and monitor information after Matrix tasks #303
32+
- Row/Column spacing support #298
33+
- VEP Calibration #304/#296
34+
- session data to VEP calibration #322
35+
- Model
36+
- Offline analysis to support multimodal fusion. Initial release of GazeModel, GazeReshaper, and Gaze Visualization #294
37+
- Updates to ensure seamless offline analysis for both EEG and Gaze data #305
38+
- Offline analysis support for EEG and (multiple) gaze models. Updates to support Eye Tracker Evidence class #360
39+
- Language Model
40+
- Add Oracle model #316
41+
- Random Uniform model #311
42+
- Stimuli
43+
- Updates to ensure stimuli are presented at the same frequency #287
44+
- Output stimuli position, screen capture and monitor information after Matrix tasks #303
45+
- Dynamic Selection Window
46+
- Updated trial_length to trial_window to allow for greater control of window used after stimulus presentations #291
47+
- Report
48+
- Functionality to generate a report in the form of a PDF #325
49+
- Add a BciPy Calbiraiton Report Action #357
50+
- Offset Support
51+
- Add support for determining offsets between timing verification Tasks (Ex. RSVPTimingVerificationCalibration) and RawData with a photodiode trigger column. This is useful for setting up new systems and preventing errors before an experiment begins. #327
52+
- Parameters
53+
- Add a Range type parameter #285 Add editable fields #340 Update parameters.json to seperate relevant parameters by task
54+
- Housekeeping
55+
- Add mypy typing to the codebase #301
56+
- Change default log level to INFO to prevent too many messages in the experiment logs #288
57+
- Upgrade requirements for m1/2 chips #299/#300
58+
- Fix GitHub actions build issues with macOS #324
59+
- Tests Improvements
60+
- Fix occasionally failing test in `test_stimuli` #326
61+
- Reshaper tests #302
62+
- Fix parameter save as #323
63+
- Pause error #321
64+
- Fix data buffer issue #308
65+
- GUI Refactor #337
66+
- Create new `BCIUI` class for simpler more straightforward UI creation.
67+
- Create dedicated external stylesheet for global styling
68+
- Rewrite Experiment Registry to use new GUI code
69+
- Create intertask action UI
70+
- Task Return Object #334
71+
- Create `TaskData` dataclass to be returned from tasks
72+
- updates task `execute` methods to return an instance of `TaskData`
73+
- Allows for optional storage of a save path and task dictionary in `TaskData`
74+
-Experiment Refactor #333 #329
75+
- Refactors the Experiment Field Collection GUI to be an action
76+
- Allows task protocol to be defined in the orchestrator
777

878
# 2.0.0-rc.3
979

@@ -17,9 +87,11 @@
1787
- Set channel spec information in devices.json. Removed aliases. #266 Updated default analysis channels for Wearable Sensing devices #279
1888
- Refactor to allow multiple devices to be configured for multimodal acquisition. #277
1989
- Refinements to LSL server to use the device ChannelSpec information for generating metadata. #282
90+
- Updated data consumers to explicitly set a chunk size. Refinements to LSL server to simulate different chunk sizes. #292
2091
- Matrix
2192
- Matrix calibration refinements #262
2293
- Matrix Copy Phrase Task #261
94+
- Matrix displays can be parameterized with a given number of rows and columns. #289
2395
- RSVP
2496
- RSVP Calibration pulls out inquiry preview parameters and calls the display with them if enabled
2597
- RSVP Display `do_inquiry` accepts a preview_calibration argument that will present the full inquiry to come if True after the prompt and before the fixation

0 commit comments

Comments
 (0)