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

split off simulation code into separate package #12980

Open
drammock opened this issue Nov 21, 2024 · 12 comments
Open

split off simulation code into separate package #12980

drammock opened this issue Nov 21, 2024 · 12 comments

Comments

@drammock
Copy link
Member

Hi @mne-tools/mne-python-steering-committee

@ctrltz and colleagues have been doing some work on simulating MNE objects (above and beyond what we currently support), in the new https://github.com/ctrltz/meegsim package. They have expressed interest in incorporating their work into MNE-Python, and after a few discussions with @larsoner @agramfort and @britta-wstnr we've settled on a tentative plan to "spin off" our existing simulation code into a new package (mne-simulation or so) similar to what was done for connectivity a few years ago, and then give @ctrltz and colleagues write-access to that repo so they can add their code and also have a much smaller/faster test/CI suite. Existing simulation code would be deprecated in MNE-Python release 1.9 and removed in 1.10.

This issue is your chance to weigh in on whether you think it best to:

  1. follow the above plan
  2. keep existing simulation code in MNE-Python, and add new code into the main repo
  3. keep existing simulation code in MNE-Python, and don't add the new MEEGsim functionality
  4. something else (?)
@drammock
Copy link
Member Author

drammock commented Nov 21, 2024

one possible downside to the "spinoff" approach that I've just thought of, is the risk of losing git history (edit: and hence contributor credit) for the existing code. I think there's probably a way to preserve it, via something like:

  • fresh-clone MNE-Python repo
  • filter + rewrite history to only include the simulation files
  • make a commit that fixes all the imports (e.g., changes from .forward import whatever to from mne.forward import whatever)
  • add in all the other packaging-related scaffolding

@mscheltienne
Copy link
Member

+1, glad someone is working on simulation!

@ctrltz
Copy link
Contributor

ctrltz commented Nov 21, 2024

Thank you, @drammock! Tagging @minajamshidi and @astudenova to keep them in the loop.

@sappelhoff
Copy link
Member

+1 to spin off under mne-tools/mne-simulation!

@larsoner
Copy link
Member

+1 for spin off with some git history magic suggested by @drammock . There is probably a way to do it that preserves committer and date and such but mangles the commit numbers (which is okay)

@hoechenberger
Copy link
Member

Go for it 👍

@cbrnr
Copy link
Contributor

cbrnr commented Nov 21, 2024

Also 👍 for spin off!

@britta-wstnr
Copy link
Member

+1 from me, too. Really excited about the cool options that @ctrltz, @minajamshidi, and @astudenova support in MEEGsim! 😍

@adam2392
Copy link
Member

+1 supporting simulation would help so much research in this space.

@agramfort
Copy link
Member

+1 too.

We could even start thinking into adding ML based generative models. There is a bunch of cool works in this space eg

https://www.biorxiv.org/content/10.1101/2023.08.23.554148v1
https://github.com/LiuyinYang1101/EEGDiffWave

@drammock
Copy link
Member Author

OK thanks everyone for weighing in. I'll start working on the deprecation + spin-off this week. I'll leave this open, but convert the title to be normative, so we can close it when the spin-off is complete.

@drammock drammock changed the title RFC: splitting simulation code into separate package split off simulation code into separate package Nov 25, 2024
@myd7349
Copy link
Contributor

myd7349 commented Nov 27, 2024

Although Git provides the subtree split and filter-branch commands, I personally find that git-filter-repo can be a helpful tool for splitting a code repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests