Skip to content

Tags: CAMBI-tech/BciPy

Tags

v2.0.1rc3

Toggle v2.0.1rc3's commit message
update changelog

v2.0.0rc3

Toggle v2.0.0rc3's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
Merge pull request #280 from CAMBI-tech/2.0.0rc3

2.0.0rc3

v2.0.1rc2

Toggle v2.0.1rc2's commit message
2.0.1rc2

Patch for missing import

v2.0.0rc2

Toggle v2.0.0rc2's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
2.0.0rc2 (#251)

* add timer to prevent double clicking (#218)

* #181963356 ; added better alerting to inform users when fake data mode is on

* Added changelog entry

* Refactoring to reduce duplication

* #182040775 ; option to summarize session at the end of a copy phrase task

* Update README.md

High level GPT2 documentation added, word level prediction described, contact information added

* Matrix Display Fixes (#221)

* fixes bug with last stimuli lagging in matrix calibration, added entire grid flash before each inquiry

* Address PR comment   cleanup

Co-authored-by: Tab Memmott <[email protected]>

* Refactored session helper to generate spreadsheets without first creating a sqlite database

* ERP plotting improvements and MNE data support (#220)

* #182005453 ; added parameter for signal model path; updated initialization code to use this for typing tasks

* #182406904 ; Fix bug when generating a spreadsheet from active session data

* [Bug fix] Two presses needed to start copy phrase (#225)

* Documentation and formatting

* #182200897 ; check for internet connection and confirm before proceeding with the session

* Added logging for GPU information, if available

* Whitespace fix

* Added changes

* Move session validation to validate module; update internet connectivity test to work with VPN

* #182106570 ; added functionality for configuration channel specifications for a given device.

* Added a test mock to prevent a GUI interaction during testing

* Fix test issue by switching to a different acquisition client for mocking

* use a better default timeout (#228)

* #182776686 ; prevent widgets scrolling on parameters form

* Jitter (#233)

Jitter for calibration   parameter. copy phrase ip

cleanup stimuli tests

* User ID reset bug and cleanup (#235)

User id reset fix

* Add support for Tobii Nano (#234)

* Add support for Tobii Nano

* address PR feedback

* update changelog

* added ssvep to cvep method (#232)

Co-authored-by: Aida Fakhry <[email protected]>
Co-authored-by: Tab Memmott <[email protected]>

* #183037159 ; alert when using battery power

* Better documentation on return values and potential impacts

* VEP Display (#237)

* upgrade psychopy  (#239)

* ERP viz demo fix (#240)

* #175193924 infrastructure for changed parameters ; #183134229 Fixed issue with params_form rounding some float values ; #183133776  allow static offset to be input with more precision

* Remove unneeded parameters  (#241)

* signal model loaded log (#244)

better signal model logging

* Devices config update && BciPy running outside of root (#242)

* Refactor param changes GUI to use a scroll area for displaying a large number of changes

* Refinements; parameters changes start out collapsed if empty; minor refactorings

* #182408060 ; Ensure that spelled text is provided to the language model when using fake data

* Export the device used as a useable config file (#247)

* Convert: add BDF support and fix static offset bug (#246)

* #182031676 ; remove TCP-based acquisition code

* Added PR number to changelog

* Added function type information; better string representations of channel specs and device specs; removed unused code in tests

* Updated max_buffer_len parameter name for lsl_client

* fix rebase issue in parameters module

* Bug fixes: jitter, offline analysis, task complete alerting  (#250)

* Matrix Bug: fix for scp flashing (#252)

* Matrix documentation (#253)

Co-authored-by: lawhead <[email protected]>
Co-authored-by: Shijia Liu <37078018 [email protected]>
Co-authored-by: jcgangemi1 <87331189 [email protected]>
Co-authored-by: AidaFakhry <92689243 [email protected]>
Co-authored-by: Aida Fakhry <[email protected]>
Co-authored-by: Basak Celik <[email protected]>

v2.0.0rc1

Toggle v2.0.0rc1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
2.0.0-rc.1 (#158)

* Deserialization of Session from JSON data; refactored code for displaying inquiry evidence from session helper to session data structures.

* Refactored session helper to simplify and use session_data; added tests for session helper

* function for loading users (#125)

* WIP load users

* Add functionality to support no data directory and lint

* remove unused import

* Add unittest examples with some direction

* Testing

Testing uploaded code 2

* Ran Make Lint Command

Final edit before PR

* change input into load_users, update tests

Co-authored-by: Alister <[email protected]>
Co-authored-by: Tab Memmott <[email protected]>

* EDF conversion fixes (#126)

* EDF conversion fixes

* Feedback refinements; renaming and documentation

* Optional arguments

* Removed unused eeg_len parameter from session data

* Removed unused parameter from copy_phrase task

* remove display from unittests (mock) and lint (#128)

* Inquiry Preview (#129)

* Inquiry Preview Display and Key Input Method

* #176581753 ; added timeout to acquisition connector

* Added top level variable to LSL_TIMEOUT_SECONDS

* Add abstract base class for SignalModel

* Update citation on README (#131)

* #176151285 ; use stim_length parameter for Copy Phrase rather than hard-coding values

* Add abstract base class for SignalModel

* Add tests to prepare for refactoring PCA/RDA/KDE model

- export offline_analysis and return figure handles from
  generate_offline_analysis_screen() to allow testing
- Add integration tests in bcipy/signal/tests/model/test_offline_analysis.py,
  asserting model's current behavior for:
  - AUC (number only, no contents of pkl file)
  - lik_dens figure
  - mean_erp figure
- Add unit tests in bcipy/signal/tests/model/test_model.py,
  asserting model's current behavior
- Remove unused grid_search() function from cross_validation.py
- Add placeholder tests for notch and bandpass
- Add some notes in model training code
- Removing unnecessary folders, formatting, and removing unused code from demos
- Remove unnecessary DummyDimReduction
- Rename "mach_learning" to "ml

TODO - it might be worth considering deleting or updating the demos at
bcipy/signal/model/demo/ml

* Fix renaming issues by sticking with 'mach_learning' instead of new 'ml' name

* - undo formatting changes in demos and offline_analysis
- move demos back to original location

* vizualization -> visualization

* PR feedback

* - assert raise either StopIteration ( python <=3.6 ) or RuntimeError ( python >=3.7 )

- add test_producer_end

* Add function to compute probabilities after keyinput

* Update docstring

* rename files

* PR feedback

* PR feedback

- Making code compatible with python3.6
- use 'remove_text=True' for pytest-mpl
  (axis tick locations move slightly between matplotlib releases,
   but this should not cause test to fail)

* gitignore

* Add tests copy phrase (#138)

- Rename test_signal_model.py to test_copy_phrase_wrapper.py
- Add test for CopyPhraseWrapper
- Simplify and cleanup query_mechanisms.py
- Add makefile targets for unit and integration tests

* fix random seed in additional necessary places for tests (#140)

- fix random seed in additional necessary places for tests
- set target letter more obviously for inference test
- update expected output files for unit tests and integration tests

* Added unit tests for copy phrase task

* Additional logging for copy phrase task

* Lint and update test-all command (#142)

* Lint and update test-all command

* update dev requirements / lint

* remove version dependency

* Refactor pca rda kde (#141)

* Rename test_signal_model.py to test_copy_phrase_wrapper.py

- Add test for CopyPhraseWrapper
- Simplify and cleanup query_mechanisms.py
- Add PcaRdaKdeModel class and unit tests
- Rename test_kde plot
- Remove unused plot from test data
- use new PcaRdaKde model in copy_phrase_wrapper and bci_main
- move `load_signal_model` to `bcipy/signal/model`
- always use `alphabet()` helper function instead of manually creating alphabets
- Remove "lik_dens.pdf" figure from offline_analysis visualization
- Remove test for "lik_dens.pdf" from offline_analysis integration test
  and its expected output
- Move all code for PCA/RDA/KDE model into one module
- Move all tests for PCA/RDA/KDE model into one file, separated between
  internals and externals
- remove previous train and inference scripts (now replace by `model.fit` and `model.predict`
- Remove outdated demos
* Fix test_copy_phrase_wrapper
- Add tests for SignalException
- update `bcipy/signal/model` README

* Additional copy phrase tests; session data convenience function

* initial attempt to split copy phrase execute method into smaller methods

* Refactor work in progress; consistent handling of parameters; factored out  into smaller methods; fixed issues with fake data

* Rename variables for clarity; refactored implicit tuple to a namedtuple

* #178148421 ; fix bug in signal model loading

* Removed hard-coded value

* #178148286 ; fix error in model saving

* Copy Phrase refactoring ; moved all loop update code to the end of the run loop for clarity. Factored out more code into their own methods.

* Update README.md

Add Niklas to contributors

* Added namedtuple in stimulus helper to clarify a commonly used data tuple and refactored the DecisionMaker, CopyPhraseWrapper, and CopyPhrase task to use the new structure; In CopyPhraseWrapper, separated the addition of new evidence from making a decision to allow for additional evidence types to be added; created an enumeration for currently supported evidence types; Refactored session data to use a dict of evidences, rather than hard-code specific types; Extensively refactored the Copy Phrase task for clarity to support integration of inquiry preview evidence; incorporated evidence from inquiry preview into the decision maker; added documentation and typing throughout.

* Removed outdated section of README

* Refactored code to add evidence to copy phrase wrapper; refactored session data to only display evidence presented during a given inquiry

* isort imports

* Renaming for clarity

* CopyPhraseWrapper documentation and typing

* Added assertions that required copy phrase parameters are present

* Refactored EvidenceType to an Enum and moved it to the session_data module. Fixes to session_tools

* Updated resource for session test

* Refactor trial inquiry reshaper (#147)

- simplify and shorten preprocessing transforms, handle fs alongside data during transforms
- refactor trial_reshaper, move to TrialReshaper
- add InquiryReshaper
- change model pkl filename AUC to 4 digits of precision
- relax tolerance for comparing expected model AUC

* Fix targetness assignments in write copy phrase triggers (#148)

* Update license, code of conduct, move bci_main to make a better entry point (#150)

* calibration trigger refactor and cleanup (#149)

* Update main bcipy image to cambi.png (#152)

* Fix filtering in data viewer

* Refactored data_viewer for clarity

* Added PyQt port of data viewer

* pyqt viewer cleanup

* Increased the timeout in the LSL datasource to fix a bug in viewer initialization

* Stimuli Ordering (#153)

* Added code to place the viewer in a second monitor

* 178007109 task ready (#155)

* Add MessageBox, autoclose, and timeout

* Address Aziz PR comments (#145)

* Answered PR comments from Aziz's previous PR

* Style changes to toolbar

* Fixed issue with button text refresh

* Refactored pyqt viewer to make control widgets more responsive. Added widgets for controls to enforce a fixed height layout, allowing the data plots to expand correctly when the window is resized.

* Initialize viewer to 90% of the screen height

* Added the ability to set the fixed scale value. Added caching to the autoscale bounds

* Set size of the main panel and allow resize

* Cleanup

* Refinements: added typing information; pulled variables up to class vars; button turns green when paused to indicate that the viewer needs to be restarted

* Replace wxPython data viewer with the PyQt version (#157)

* Experiment anon field (#156)

* #178787961 ; fixes error when reshaping data for copy phrase

* #175674845 ; module for raw data format

* Cleaned up unit tests

* #179057693 ; provided DeviceSpec with an additional parameter for configuring channels to exclude from analysis

* Updated devices to correctly load excluded channels; updated list of channels excluded for analysis

* AUC output fix   report timing (#163)

* Update log level and add a timing decorator

* Add documentation and update log format

* add logs to offline analysis, fix test

* Refactor task (#162)

* add linux requirements shell script and CI spec (#167)

* Refactored lsl_recorder to use raw_data module; unit tests and cleanup

* LslClient feature parity with current acquisition client; marker writer integration; context manager support; added the ability to name the raw data file. Simplified interface of marker writer to reflect current usage. Updated the acquisition helper to initialize the LslClient.

* Work on offsets for lsl client

* Created a Clock object with the same interface as psychopy core.Clock that wraps lsl_local_clock. Updated all code to use the new internal clock.

* Removed unused multi-modal approaches

* Added unit tests for clock

* Removed support for TCP connection in acquisition helper

* Removed marker writer from acquisition clients and display code

* Re-wrote process_data_for_decision to query the acquisition client using timestamps rather than sample numbers. Modified acquisition client to record only the configured data, rather than all detected LSL data. Synced the recorded data offset with the client.

* #176100240 ; Replaced Tk dialog instances to use a PyQt FileDialog

* Update main.yml

update ubuntu before installing

* Language model base class (#164)

* initial commit language model base class

* Update code for python 3.7

* Reverted tests for producer

* Increased tolerance for unit test

* Added better logging for acquisition; updated multi-modal demos

* Fixed unit tests; better documentation; fixed edge case for data queries

* Fixed linting errors

* #179123977 ; annotated failing test with mark_slow to suppress during CI (#170)

* Address tests failing in CI

* Refinements and cleanup

* Adjusted test tolerance

* Fix clock error in get_key_press

* Fixed broken tests

* Modified Copy Phrase task to query the acquisition module for a given number of samples; added utility methods to raw_data module to assist in debugging.

* Refactored unit test

* Added buffer to lsl_client so consecutive data queries yield the same result

* "#179544118 ; Cleaned up lsl_recorder to ensure all remaining data is pulled on completion"

* Adds methods to convert.py to support data compression/decompression (#173)

* Adds methods to convert.py to support data compression/decompression

* Linting

* Added documentation, added name_checker helper method, added unit tests

Added tar_name_checker helper method to check for properly named tar archives with extensions, and added appropriate unit tests to check that it works within the three existing compression methods. Added documentation for the four compression related methods. Renamed file_list to archive_list.

* Small changes to merge PR

Co-authored-by: Tab Memmott <[email protected]>

* #179844387 ; replace uses of max_inq_per_trial parameter with max_inq_per_series (#176)

* #179844380 ; added parameter to configure the maximum number of selections in a copy phrase

* Add preview only mode (#177)

* Backspace always shown (#178)

* Matrix display (#182)

* Matrix Display

* Addressing PR comments

Co-authored-by: Julia Gangemi <[email protected]>

* Refactor generate_offline_analysis to visualize_erp (#183)

* #180155037 ; added the ability to define the precision of the evidence values in the session data

* #180154885 ; add selection to session data

* Bug fix

* Fixed sorting bug when deserializing from session.json data

* Refinements based on PR feedback

* Skipped timing test to fix failing CI

* #179649835 ; #179806994 ; Added computed metrics for all sessions; added custom metrics for Copy Phrase tasks

* Refinements to metric naming; refactored parameters for TaskSummary

* Trigger handling (#185)

* Add new Trigger, TriggerHandler, TriggerType

New classes/methods for trigger handling

* Added some unit tests for new trigger

* Editing new Trigger unit tests

* Editing trigger and trigger tests

* Attempted fixing of some unit tests with varying success

* mock file open using unittest patch, uncomment old tests, add coverage

* lint, split up load method and define as staticmethod, updated variable names

* Edited triggers to catch some exceptions, added corresponding tests

* linting

* Trigger refinement based on feedback

Refactored type and TriggerType as category and TriggerCategory to avoid confusion with Python built-in type functions. Renamed FlushSensitivity to FlushFrequency. Added a docstring for TriggerHandler.

* Commented out dataclass import

So the linting tests will stop yelling at me

* Refining of Trigger based on feedback

Added dataclass back in to make Trigger frozen/(mostly) immutable, refactored Trigger.time as a float instead of a str

* Further refactoring of Trigger from suggestions

* linting

Co-authored-by: Tab Memmott <[email protected]>

* Init commit for new language model infrastructure

* add transformer lm implementation

* Added Uniform language model; refactored CopyPhraseWrapper to always use a language model

* Updated the PRELM language model to reset the server state after every ; cleanup

* Changes to PRELM

* Better messaging for required parameters; added assertion for calculation

* Pyedflib fix (#190)

* update triggers.py, implement in tasks, deprecate unused tasks (#189)

* #180605653 ; added session metric for switch response time

* Added unit test for switch response calculation

* Factored out utility function; added custom exception to trigger reader to ensure the correct file format; renamed trigger type for key press event

* Renamed list_processing module to list

* updates after Trigger PR

* modifications done based on discussion during last meeting

* add load to init

* made changes based on discussion

* rename model file

* address lint issues

* rename base.py to base_model.py

* updates to integration tests to reflect recent changes (#195)

* Button press fix (#194)

- Update and simplify inquiry preview function
- Add explanation in docstring and add tests

* addressed PR comments

* addressed PR comments

* Matrix calibration (#192)

* Add matrix calibration display and task

* Work In Progress: updated matrix calibration to properly generate and display stimuli - still need to fix bug with triggers

* add target prompt, matrix trigger write, misc cleanup

* Fix bug in matrix calibration inquiry generator

Update to generate unique random stimuli in matrix calibration demo

* Updates to matrix calibration, refactored rsvp inquiry generator to general inquiry generator that can be used for matrix as well

* create paradigm submodule in display

* cleanup

* lint

* update trigger type

* Update display.py

* Update stimuli.py

Co-authored-by: Tab Memmott <[email protected]>

* Use a custom wait screen for copy phrase. use a better starting task text (#191)

* Unicode trigger labels (#196)

* #181018867 ; integrate new gpt2 language model; refactor parent LanguageModel to use stricter checking for supported response type and include common functionality; refactored other existing language models to use the parent class

* PR refinements; removed lang_enabled_parameter; removed import_submodules usage; updated lm_path parameter to give it a type directory path; required language model to be provided to CopyPhraseWrapper

* Removed normalized property from language model; modified PRELM to return probabilities

* Set ubuntu version for continuous integration

* Reverted workflow

* assign zero probability for symbols not returned by gpt2

* #178695472 ; remove docker language models

* #181349857 ; unit tests for gpt2

* Fix inquiry reshaper (#200)

Update InquiryReshaper to select correct window of time

* #181350204 ; always use configured backspace probability

* Updated UniformLanguageModel to remove redundant code

* improved method for character prediction

* set default beam width and search depth

* #181427286 ; bug fix so that Preview Mode does not add button evidence

* Added a check for invalid bool entries in Parameters module

* Updated CopyPhraseWrapper to treat the lm_backspace_prob parameter as a minimum value, allowing the language model to specify a higher probability.

* add types to function arguments

* remove extra comments

* fix lint errors

* address PR comments

* address Tab's PR comments

* add unigram symbol set equal check

* fix lint errors

* Matrix calibration (#205)

* Add matrix calibration display and task

* Work In Progress: updated matrix calibration to properly generate and display stimuli - still need to fix bug with triggers

* add target prompt, matrix trigger write, misc cleanup

* Fix bug in matrix calibration inquiry generator

Update to generate unique random stimuli in matrix calibration demo

* Updates to matrix calibration, refactored rsvp inquiry generator to general inquiry generator that can be used for matrix as well

* create paradigm submodule in display

* cleanup

* lint

* update trigger type

* Update display.py

* Update stimuli.py

* WIP- Modifications to inquiry generator to choose evenly distributed target positions and include no target inquiries, increased contrast in matrix and flashing characters

* WIP- Added functionality to toggle between randomly chosen or evenly distributed target positions for calibration

* WIP: Fixed bugs in distributed target positions for inquiry generator, added tests for new functionality

* updates to stimuli generation to respect num of nontarget inquirues. IP still need to test various parameter inputs.

* updates to stimuli generation, included alphabetical distributed target position, can use percentage of nontarget inquiries for random targets, lint

* update parameters.json for nontarget_inquiries

* address PR comments #205

* address PR comments, cleanup

* address PR comments, clean up

* Update calibration.py

Co-authored-by: Tab Memmott <[email protected]>

* Prestimulus, Inquiry Based Training, Model Tuning (#208)

Co-authored-by: Niklas <niklas.sm [email protected]>
Co-authored-by: lawhead <[email protected]>

* Ubuntu fix (#198)

* #181490020 ; removed legacy language model parameters

* #181489190 ; updated stimuli labels in copy phrase session to ensure that fixation stimuli are labeled as 'fixation' rather than 'nontarget'

* Bump pillow from 8.0.0 to 9.0.1 (#209)

* Prestim acq buffer (#212)

* Matrix timing validation (#213)

* #181987601 move session script to demo

* Release (#214)

* #181038299 ; updated documentation for acquisition module

* Updated docs

* Clear events before getting key presses in inquiry preview (#216)

* Added relevant links to LSL

* address PR comments and set python versions in setup.py

Co-authored-by: lawhead <[email protected]>
Co-authored-by: Alister Cedeno <41930170 [email protected]>
Co-authored-by: Niklas <niklas.sm [email protected]>
Co-authored-by: Basak Celik <[email protected]>
Co-authored-by: theJokerEvoker <88907537 [email protected]>
Co-authored-by: Julia Gangemi <[email protected]>
Co-authored-by: Shijia Liu <37078018 [email protected]>
Co-authored-by: jcgangemi1 <87331189 [email protected]>

v1.4.2

Toggle v1.4.2's commit message
add scripts to changelog

1.4.1

Toggle 1.4.1's commit message
Add to changelog, update to correct pypi version

v1.4.0

Toggle v1.4.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
Merge pull request #57 from BciPy/1_3_1

Version 1.4.0

v1.3.0

Toggle v1.3.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
Merge pull request #46 from BciPy/1_3

Version 1.3