mne-tools / mne-tools/mne-python

Evaluate whether FreeSurfer's `surfa` could replace or simplify some of our custom code

Open
#13,433 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
3.5k
Forks
1.6k
Avg merge
1d 6h
Merged PRs (30d)
100

Description

Surfa is a collection of Python utilities for medical image analysis and mesh-based surface processing. It provides tools that operate on 3D image arrays and triangular meshes with consideration of their representation in a world (or scanner) coordinate system. While broad in scope, surfa is developed with particular emphasis on neuroimaging applications.

  • Documentation

  • Code

  • surfa is a Python package derived from FreeSurfer. Some of its outputs and inputs directly overlap with MNE’s use of FreeSurfer I/O (meshes, surfaces, coordinate systems transformations).

  • It has built-in coordinate system awareness (scanner / RAS).

  • It's actively developed by the FreeSurfer team.

  • It uses Cython and compiled extensions for performance-critical operation (which can also be a con, I haven't checked whether they provide up-to-date binary wheels).

  • Since it provides a Python API, we don't need to piece together and call shell commands to run FS operations.

Any thoughts?

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the linked surfa documentation and code, then compare its mesh, surface, coordinate-system, and FreeSurfer I/O capabilities with MNE's existing custom code. Done means documenting whether surfa can replace or simplify those areas, including any compiled-extension or binary-wheel concerns, rather than implementing a specific change.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
data
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.