openjournals / joss-reviews

Reviews for the Journal of Open Source Software
Creative Commons Zero v1.0 Universal
714 stars 38 forks source link

[REVIEW]: PyBCI: Python Framework for User-Friendly and Real-Time Brain Computer Interfaces with LSL #5706

Closed editorialbot closed 10 months ago

editorialbot commented 1 year ago

Submitting author: !--author-handle-->@lmbooth<!--end-author-handle-- (Liam Booth) Repository: https://github.com/LMBooth/pybci Branch with paper.md (empty if default branch): main Version: 1.5.0 Editor: !--editor-->@emdupre<!--end-editor-- Reviewers: @anilbey, @jsheunis Archive: 10.5281/zenodo.10245437

Status

status

Status badge code:

HTML: <a href="https://joss.theoj.org/papers/eee942891ba08822a727353294d80dca"><img src="https://joss.theoj.org/papers/eee942891ba08822a727353294d80dca/status.svg"></a>
Markdown: [![status](https://joss.theoj.org/papers/eee942891ba08822a727353294d80dca/status.svg)](https://joss.theoj.org/papers/eee942891ba08822a727353294d80dca)

Reviewers and authors:

Please avoid lengthy details of difficulties in the review thread. Instead, please create a new issue in the target repository and link to those issues (especially acceptance-blockers) by leaving comments in the review thread below. (For completists: if the target issue tracker is also on GitHub, linking the review thread in the issue or vice versa will create corresponding breadcrumb trails in the link target.)

Reviewer instructions & questions

@anilbey & @jsheunis, your review will be checklist based. Each of you will have a separate checklist that you should update when carrying out your review. First of all you need to run this command in a separate comment to create the checklist:

@editorialbot generate my checklist

The reviewer guidelines are available here: https://joss.readthedocs.io/en/latest/reviewer_guidelines.html. Any questions/concerns please let @emdupre know.

✨ Please start on your review when you are able, and be sure to complete your review in the next six weeks, at the very latest ✨

Checklists

πŸ“ Checklist for @anilbey

πŸ“ Checklist for @jsheunis

editorialbot commented 1 year ago

Hello humans, I'm @editorialbot, a robot that can help you with some common editorial tasks.

For a list of things I can do to help you, just type:

@editorialbot commands

For example, to regenerate the paper pdf after making changes in the paper's md or bib files, type:

@editorialbot generate pdf
editorialbot commented 1 year ago
Software report:

github.com/AlDanial/cloc v 1.88  T=0.06 s (900.4 files/s, 60045.5 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
Python                          34            199            436           2126
reStructuredText                 9            195            218            196
Markdown                         6             44              0            127
TeX                              1              1              0            115
YAML                             2              8             14             51
SVG                              3              1              0             43
Arduino Sketch                   1              2              1             36
DOS Batch                        1              8              1             26
make                             1              4              7              9
-------------------------------------------------------------------------------
SUM:                            58            462            677           2729
-------------------------------------------------------------------------------

gitinspector failed to run statistical information for the repository
editorialbot commented 1 year ago

Wordcount for paper.md is 623

editorialbot commented 1 year ago
Reference check summary (note 'MISSING' DOIs are suggestions that need verification):

OK DOIs

- 10.1038/s41592-019-0686-2 is OK

MISSING DOIs

- None

INVALID DOIs

- None
editorialbot commented 1 year ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

emdupre commented 1 year ago

πŸ‘‹ Hi @anilbey and @jsheunis, and thank you again for agreeing to review this submission !

The review will take place in this issue, and you can generate your individual reviewer checklists by asking editorialbot directly with @editorialbot generate my checklist.

In working through the checklist, you're likely to have specific feedback on PyBCI. Whenever possible, please open relevant issues on the linked software repository (and cross-link them with this issue) rather than discussing them here. This helps to make sure that feedback is translated into actionable items to improve the software !

If you aren't sure how to get started, please see the Reviewing for JOSS guide -- and, of course, feel free to ping me with any questions !

emdupre commented 1 year ago

πŸ‘‹ Hi @LMBooth, I did have one structural request on the paper to help facilitate the review process. Currently, the compiled paper does not include an associated reference list. Can you please add a references section at the end of the paper? Please also make sure that any relevant Acknowledgements are included as well.

You can see more about structuring your JOSS paper in our submission guidelines.

LMBooth commented 1 year ago

Sorry about that @emdupre , i wasn't sure if a references section was going to be automatically added from the bib in the repository, i'll start adding those now.

Thank you again for pointing this out.

emdupre commented 1 year ago

Thank you for your quick response, @LMBooth ! It should be automatically added if you include an additional # References heading at the end of the paper.md file.

If you encounter any issues, of course, please let me know !

LMBooth commented 1 year ago

@editorialbot generate pdf

editorialbot commented 1 year ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

LMBooth commented 1 year ago

@editorialbot generate pdf

editorialbot commented 1 year ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

LMBooth commented 1 year ago

Hey again @emdupre, sorry for being a noob, I've added an acknowledgements section and # References at the end of the document, but i can't see any imported references when i look at the article proof, can you tell if my formatting is off at the end of my paper.md or my paper.bib?

emdupre commented 1 year ago

Hi @LMBooth, always happy to help !

It looks like what's happening is that you're actually writing your citations in plain-text in paper.md, rather than in the correct LaTeX formatting. For example, if you look at the # Citations section in the example paper in the docs, you can see the following styles:

For a quick reference, the following citation commands can be used:
- `@author:2001`  ->  "Author et al. (2001)"
- `[@author:2001]` -> "(Author et al., 2001)"
- `[@author1:2001; @author2:2001]` -> "(Author1 et al., 2001; Author2 et al., 2002)"

So, in your paper.md, you'll want to modify every citation accordingly. As an example, right now you have:

PyTorch (Paszke et al., 2019), SciKit-learn (Pedregosa et al., 2011) and TensorFlow (Abadi et al., 2016)

This should be changed to:

PyTorch [@NEURIPS2019_9015], SciKit-learn [@scikit-learn], and TensorFlow [@tensorflow2015-whitepaper]
LMBooth commented 1 year ago

@editorialbot generate pdf

editorialbot commented 1 year ago

:warning: An error happened when generating the pdf.

emdupre commented 1 year ago

@editorialbot generate pdf

editorialbot commented 1 year ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

emdupre commented 1 year ago

There was a transient error on editorialbot, but this is now resolved, @LMBooth ! You can see your compiled paper above. I'm also going to quickly check the references, so you can correct any flagged DOIs.

emdupre commented 1 year ago

@editorialbot check references

editorialbot commented 1 year ago
Reference check summary (note 'MISSING' DOIs are suggestions that need verification):

OK DOIs

- 10.1038/s41592-019-0686-2 is OK
- 10.1109/ACCESS.2021.3079992 is OK

MISSING DOIs

- None

INVALID DOIs

- None
anilbey commented 1 year ago

Review checklist for @anilbey

Conflict of interest

Code of Conduct

General checks

Functionality

Documentation

Software paper

anilbey commented 1 year ago

I completed the installation following the provided instructions. The tool's purpose is well articulated and will certainly provide a significant advantage to the community.

However, I encountered some challenges, notably with the examples within pybci, which require specific sensor hardware that I do not possess. As a result, I was unable to execute the examples and test the software's functionality.

I also noticed the absence of automated tests within the software. Automated testing is vital for maintaining software integrity and enabling continuous integration.

To address these issues, I suggest the implementation of a mock layer that can emulate real hardware streams for each example provided. This solution would facilitate automated testing and empower all contributors, regardless of their hardware capabilities, to understand the code and contribute to the software. The mock streams should ideally behave identically to the hardware streams, thus eliminating the need for additional code to differentiate between the two.

LMBooth commented 1 year ago

Hi @anilbey, these are great recommendations that hopefully won't take me too long to implement.

I currently have a pseudo lsl data generator in the examples. If i take that and make a pseudo/mock layer as a class that can be called within pybci, eliminating the need for running the viewer in a separate file. This would also make it simpler to create some automated testing scripts.

I go on holiday tomorrow but am back mid next week so will begin making the changes then. Thankyou again for going through my work and finding these recommendations, i'll post an update here when i've had chance to address.

jsheunis commented 1 year ago

Review checklist for @jsheunis

Conflict of interest

Code of Conduct

General checks

Functionality

Documentation

Software paper

emdupre commented 1 year ago

πŸ‘‹ Hi @jsheunis, and happy Monday !

I noticed that you've generated your checklist but have not checked off any items yet. Please let me know if you're encountering any issues in this process that I can help with -- and thank you again for agreeing to review !

LMBooth commented 1 year ago

Hi all!

For a brief update, i've managed to create a pseudo device which can be called as a class, i found the GIL to be troublesome when running both the pseudo device (data + marker generation + lsl streams) and pybci at the same time, when viewing the generated data in an LSL viewer (brainvision) there was a lot of starting and stopping in the generation, to overcome this i've created a controller class which is used to call the pseudodevice in either another core or another thread depending on the users choice, the threaded method seems to be okay and a bit more work is needed on the multiprocessed version, hopefully by the end of this weekend i can push an updated version (likely 1.1.0).

jsheunis commented 1 year ago

@emdupre indeed, I generated the checklist just before I went on holiday. Now I'm back and will start with the review this week.

LMBooth commented 1 year ago

Took longer then expected, but i've managed to update the examples and documentation regarding the newly implemented pseudo device class which can be used in all the primary examples to allow the scripts to optionally run automatically if the user has no LSL hardware.

If anyone has any issues with using this new feature please do let me know or open an issue in the git!

Thanks again @anilbey!

emdupre commented 1 year ago

Thank you for the update, @LMBooth ! I'm sure those will be helpful to @jsheunis and @anilbey in completing their reviews.

@anilbey, just to confirm process : you are welcome to continue your review with these updates, even as @jsheunis is completing his initial review !

emdupre commented 1 year ago

Hi @jsheunis, and happy Monday ! 🌻

Just following up to see how this review process is going for you. If you have any questions, please don't hesitate to let me know. I'm happy to address any concerns here or over email, as you'd prefer !

jsheunis commented 1 year ago

Hey @emdupre sorry for dragging on this. I don't have specific concerns, just needed to find the time to get going. I will post updates and issues more regularly now.

jsheunis commented 1 year ago

@editorialbot generate pdf

editorialbot commented 1 year ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

emdupre commented 1 year ago

πŸ‘‹ Hi @LMBooth, from the activity on GitHub I believe that you're working through the reviewer identified issues, but I just wanted to check-in and make sure that things are still on track on your end (i.e., there are no specific blockers other than time !).

If this is not the case, please don't hesitate to let me know. And thanks for your engagement in the review process to date !

LMBooth commented 1 year ago

HI @emdupre, thanks for checking in . I've recently managed to get my appveyor scripts running for a couple simple automated tests, think i want to extend to a couple more cases. Also now we have some scripts to run from a CLI interface, getting both those done had my past couple weekends spare time.

I still need to make a few changes to the documentation but in comparison that should be a lot quicker and easier to get through. I am going away to enjoy the sun next week. I'd like to aim for all edits and changes to be made by the 20th of October to set a target.

emdupre commented 12 months ago

@editorialbot remind @LMBooth in two weeks

editorialbot commented 12 months ago

Reminder set for @LMBooth in two weeks

LMBooth commented 11 months ago

Hi @emdupre, @anilbey and @jsheunis, I've finished updating my documentation and automated tests now relevant to @jsheunis comments and git issues raised. All the feedback was incredibly useful and has made PyBCI in to a much more comprehensive package, now highlighting how others can help contribute toward the project

emdupre commented 11 months ago

Thank you, @LMBooth !

@anilbey and @jsheunis, would you be able to revisit your reviewer checklists in light of these updates ? It looks like https://github.com/LMBooth/pybci/issues/14 is still awaiting reviewer confirmation to close as well.

If you have any questions or concerns, please don't hesitate to ping me in this main thread or in the relevant issues ! And thanks again for your work in reviewing PyBCI to date.

editorialbot commented 11 months ago

:wave: @LMBooth, please update us on how things are progressing here (this is an automated reminder).

LMBooth commented 11 months ago

Hi all, thanks to @anilbey suggestions i've managed to integrate a linter in to the appveyor CI process as well as including a coverage report via codecov.

emdupre commented 11 months ago

Thank you, @LMBooth ! Apologies for the extra ping ; I hadn't removed the reminder after your latest follow-up.

Thanks, too, to @anilbey for your follow-up comments ! @jsheunis and @anilbey, please let me know your thoughts after re-visiting the reviewer checklist with PyBCI's latest updates.

emdupre commented 11 months ago

πŸ‘‹ Hi everyone, just a small note that I will be out-of-office 30 October - 10 November. I will answer any comments or questions as soon as I'm back, though, so please don't hesitate to ping this thread.

jsheunis commented 11 months ago

I've updated my checklist. All the major issues I created have either been fixed or are currently being worked on.

I would still like to see a successful CI run on all operating systems (will create a separate issue for testing)

anilbey commented 11 months ago

Hi, @emdupre I am still having a problem running the exercises. I created an issue (https://github.com/LMBooth/pybci/issues/25) with the details. I will update the checklist once I can run the exercises.

anilbey commented 10 months ago

Hello again @emdupre I also updated my checklist.

emdupre commented 10 months ago

Thank you, @jsheunis and @anilbey ! It looks like both of your reviewer checklists are complete (and all associated issues have been closed), so I am ready to take this submission forward. Of course, if you have any remaining concerns in publishing PyBCI, please let me know.

I'll go ahead and perform a few editorial checks now.

emdupre commented 10 months ago

@editorialbot generate pdf