Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lightweight BIDS Layouts for all #87

Open
2 tasks
effigies opened this issue Nov 18, 2022 · 1 comment
Open
2 tasks

Lightweight BIDS Layouts for all #87

effigies opened this issue Nov 18, 2022 · 1 comment

Comments

@effigies
Copy link

Title

Lightweight BIDS Layouts for all

Leaders

Name GitHub
Chris Markiewicz @effigies
Alejandro de la Vega @adelavega

Collaborators

Name GitHub
Your name here...

Brainhack Global 2022 Event

Bay Area Brainhack

Project Description

PyBIDS' BIDSLayout currently uses a generic database (sqlite) to represent a BIDS dataset. For large datasets of >100 subjects, this can be time-prohibitive to construct.

ancpBIDS has written a custom domain-specific model based at least partially on the BIDS schema, which enables a BIDSLayout that is orders of magnitude faster than PyBIDS'.

During BrainHack Global, we will be working on porting PyBIDS to use ancpBIDS instead of sqlite to represent datasets in memory, and we would be glad to have your help.

Link to project repository/sources

Goals for Brainhack Global

  • ancpBIDS-backed BIDSLayout in PyBIDS with 100% backwards compatibility

We'll settle for not breaking any apps we test. So let's test some apps.

Good first issues

  1. Evaluate ancpbids as a successor to bids.layout bids-standard/pybids#831

  2. We're aiming to do some additional prep and break this down into smaller issues

Communication channels

https://mattermost.brainhack.org/brainhack/channels/pybids

Skills

If you want to work on the refactor:

  • Python: moderate
    • Pandas: some experience
    • Pytest: fixtures should be a known concept

Testing:

  • git/GitHub: basic, able to commit changes and make pull requests against projects
  • Python:

Onboarding documentation

PyBIDS doesn't have contribution guidelines currently. The DIPY developer guidelines are a pretty useful for general best practices: https://dipy.org/documentation/1.5.0/devel/

To get up to speed on the problem, we have a couple PRs that are worth perusing:

What will participants learn?

This is going to be an exercise in refactoring and testing. You will learn:

  • To install multiple dependent projects in editable mode
  • To run unit tests and use the Python debug shell (pdb)
  • To delete hundreds of lines of code, even entire files, with no regrets

We will also need bug reports! Testing our proposal out on other projects will involve:

  • Installing the project that uses PyBIDS and patching in an unreleased version of PyBIDS
    • For projects that distribute with Docker, patching packages into the Docker container may be easier than setting up a development environment
  • Writing detailed, actionable bug reports that can help others quickly reproduce the issue and identify its cause

Data to use

Ideally we'll be working with a variety of BIDS datasets to ensure that we test as many components of BIDSLayout as possible, so feel free to bring your own data.

Another good source of datasets is https://openneuro.org

Number of collaborators

3

Credit to collaborators

PyBIDS contributors are credited in a Zenodo file and listed as authors on Zenodo releases.

Image

Leave this text if you don't have an image yet.

Type

coding_methods

Development status

2_releases_existing

Topic

reproducible_scientific_methods

Tools

BIDS

Programming language

containerization, documentation, Python

Modalities

not_applicable

Git skills

1_commit_push, 2_branches_PRs, 3_continuous_integration

Anything else?

No response

Things to do after the project is submitted and ready to review.

  • Add a comment below the main post of your issue saying: Hi @brainhackorg/project-monitors my project is ready!
  • Twitter-sized summary of your project pitch.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment