Skip to content

[ENH] minutes march to june 2025 #50

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

Merged
merged 2 commits into from
Jun 20, 2025
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
[ENH] minutes march to june 2025
  • Loading branch information
Remi-Gau committed Jun 16, 2025
commit c045a61cc86531c1e717f31bfe519c9413dfcfb7
85 changes: 85 additions & 0 deletions meeting_notes/2025/2025_03_18.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
## News

- Nilearn has fewer opened issues than when Rémi joined.

![](https://private-user-images.githubusercontent.com/6961185/423933414-7736362a-1b6d-4b20-bb5e-a67f061879e5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NDIyOTQ4MDYsIm5iZiI6MTc0MjI5NDUwNiwicGF0aCI6Ii82OTYxMTg1LzQyMzkzMzQxNC03NzM2MzYyYS0xYjZkLTRiMjAtYmI1ZS1hNjdmMDYxODc5ZTUucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDMxOCUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAzMThUMTA0MTQ2WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9ZDQ5ZWI2NDUyODJkOGFmZjlmZjQzYTE4NWU5NWU4NmExN2E0Y2NhNzlmNGU3ODg3N2ZmMGNjYTMzZWYzODQxYSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.-SAXpbEvaSDT-odduTcxKgWHtUWjSc9bcZP4qe4OTVk)

- [milestones](https://github.com/nilearn/nilearn/milestones)

Starting dividing issues between those 2

- 0.12.0: late april 2025
- 0.13.0: late october 2025

Bump to 12 already.

## Issues

### 5249 - spam automated issue on the repo

https://github.com/nilearn/nilearn/issues/5249

???
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could be removed


### 5209 - dead atlas?

https://github.com/nilearn/nilearn/issues/5209

course of action when some atlas links die?

## PRs

[review required](https://github.com/nilearn/nilearn/pulls?q=is%3Apr+is%3Aopen+label%3A%22Review+required%22)

### 5234 - refactor nilearn.plotting package

Refactor "nilearn.plotting" package to create sub-packages for each object type and create separate backends for each plotting engine.

Two PR's for "nilearn.plotting.surface" and "nilearn.plotting.matrix"

https://github.com/nilearn/nilearn/pull/5234
https://github.com/nilearn/nilearn/pull/5240

These would further separate backends for matplotlib and plotly which would look like

https://github.com/nilearn/nilearn/pull/5203

As all function imports are at "nilearn.plotting" level (with a few exceptions like "nilearn.plotting.img_plotting.MNI152TEMPLATE" that would require deprecation), it would not have an impact for the users as far as I can imagine.

### 5224 - make surface utility functions public

are we OK to handle surface utility functions (mean_img, new_img_like...) with their volume counterpart?

https://github.com/nilearn/nilearn/pull/5224

### 5199 - drop python 3.9

https://github.com/nilearn/nilearn/pull/5199

I (Rémi) was thinking of dropping 3.9 a bit before its official end of life. Reasoning would be:

- we have one release [0.11.2](https://github.com/nilearn/nilearn/milestone/28) (given our semi regular release schedule) in the spring / early summer with normal 3.9 support
- check if a patch release is necessary soon after it for bug fixes
- after this, drop 3.9 since we won't have another release before its official EOL (AFAICT) (planned release after this would be [0.12.0](https://github.com/nilearn/nilearn/milestone/30))

advantage: removes 20% of our CI runs for at least a several months

note: apparently dropping to python 3.9, would make us bump to matplotlib 3.8 (just when it is recommended to drop support for it [SPEC0](https://scientific-python.org/specs/spec-0000/#recommend-drop-support-for-4) :shrug: ...)


### 5222 - add surface support to threshold_stats_img

why is "all-resolution-inference" mentioned in our code with no implementation?

https://github.com/nilearn/nilearn/pull/5222#discussion_r1998256742

### 4453 - improve display of report in notebooks

no footer or navbar for reports

https://github.com/nilearn/nilearn/pull/4453

## Other questions

* Organize a hackathon ?
* funding opportunities ? https://oscars-project.eu/
70 changes: 70 additions & 0 deletions meeting_notes/2025/2025_04_08.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
## News

- Performance benchmarking with asv ([#5280](https://github.com/nilearn/nilearn/pull/5280))
- AAL atlas issue fixed itself

## Issues

- [#5300](https://github.com/nilearn/nilearn/issues/5300): Use methods in SurfaceImage objects for checking equality, mean etc. ([relevant discussion](https://github.com/nilearn/nilearn/pull/5301#discussion_r2024375219))
- two different kind of functions "checks between two images" vs. "image operations"
- checks are only used by devs vs. image operations are used by public
- add methods in the objects for devs and still keep user-facing image module
- maintaining both would be difficult and would make structure complex
- new situation that we developed SurfaceImage, to be added to nibabel
- we still want to be "approachable"
- re-connect with nibabel devs about SurfaceImage
- [Elizabeth] bring up old discussions with nibabel devs
- Hao-Ting's ancient unfinished [easter egg in nibabel](https://github.com/nipy/nibabel/pull/1014)
- [#5262](https://github.com/nilearn/nilearn/pull/5262): use `imgs` instead of `img` / `X` for `fit`, `transform`, `fit_transform`
- Remi will look into it
- [#5128](https://github.com/nilearn/nilearn/pull/5128): User-guide page to introduce factors affecting performance
- Elizabeth noted that order of calls affecting peakmem readings by `%memmit` ([comment](https://github.com/nilearn/nilearn/pull/5128#discussion_r2021769564))
- probably due to numpy mem mapping
- better to run each command in separate ipython instances
- revisit [the example](https://nilearn.github.io/dev/auto_examples/07_advanced/plot_mask_large_fmri.html) comparing NiftiMasker's performance
- trying to implement the comparison via ASV, but parallelization failing ([PR on an external repo](https://github.com/man-shu/nilearn_benchmarks/pull/1))
- LATEST: works only with `threading` joblib backend:

```
Time:
[100.00%] ··· ================ =========== ===============
-- loader
---------------- ---------------------------
implementation nilearn nibabel (ref)
================ =========== ===============
nilearn 11.0±0.2s 19.6±0.1s
numpy (ref) 3.95±0.5s 15.0±0.1ms
================ =========== ===============
Peak Memory:
[75.00%] ··· ================ ========= ===============
-- loader
---------------- -------------------------
implementation nilearn nibabel (ref)
================ ========= ===============
nilearn 4.58G 5.96G
numpy (ref) 4.31G 167M
================ ========= ===============
```



## PRs

### Review required ([list of PRs](https://github.com/nilearn/nilearn/pulls?q=is%3Apr+is%3Aopen+label%3A%22Review+required%22)):

- [#5280](https://github.com/nilearn/nilearn/pull/5280): Performance benchmarking with asv

## Other questions

* Organize a hackathon ?
* funding opportunities ? https://oscars-project.eu/
* under life sciences
* we dont exactly match the target, fall into "also funded" category
* 10 page proposal: needs a lot of time
* check with Bertrand, get some clarity this week
* [Himanshu] send an email with everyone to get the said clarity.

## Set time next meeting

4pm paris time 6th May
15 changes: 15 additions & 0 deletions meeting_notes/2025/2025_05_20.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
## News

- OHBM in a month: suggestions for brainhack & poster?
- option 1: write the benchmark suite during brainhack
- option 2: plotting focused improvements, [#5216 diffusion plotting](https://github.com/nilearn/nilearn/pull/5216)
- for poster: surface API out, sklearn compliance, atlas object, benchmarks, [nilearn usage stats](https://github.com/nilearn/poia)

- On track for the release end of month
- Is anything needed from the other devs ? @Remi
- Thinking ahead to next release : how can we get other devs involved ?

- About surface/image objects interfacing with nibabel:
- nilearn.image module: why separate functions and not as object methods?
- implement image operations under NiftiImage object and SurfaceImage?
- nibabel's "surface image" implementation not moving forward due to lack of resources
72 changes: 72 additions & 0 deletions meeting_notes/2025/2025_06_10.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
## News

- OHBM poster: himanshu
- OHBM hackathon:
- ideas: work on open issues?
- work on an atlas comparator? https://github.com/Remi-Gau/atlas_comparator.git, an updated version of https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0007200
- update list of core dev?
- https://nilearn.github.io/dev/authors.html#core-developers
- see PR: https://github.com/nilearn/nilearn/pull/5429
- release 0.12: coming soon
- milestone: https://github.com/nilearn/nilearn/milestone/28
- do we want to delay till after OHBM hackathon to maybe include a couple more fix or contributions? Or actually try to finish it before to get some early feedback at hackathon?
- save to disk: https://github.com/nilearn/nilearn/pull/5309

## Issues

### 5408 - Misleading first level parameters logic

https://github.com/nilearn/nilearn/issues/5408

Some first level model parameters are more data specific (TR, slice_time_ref...) and will be ignored if user passes design matrix at fit time.

#### problems

- sklearn 'recommends' that data specific info should be passed at fit time

from the sklearn doc: https://scikit-learn.org/stable/developers/develop.html#fitting

> Depending on the nature of the algorithm, fit can sometimes also accept additional keywords arguments. However, any parameter that can have a value assigned prior to having access to the data should be an __init__ keyword argument. Ideally, fit parameters should be restricted to directly data dependent variables.
- not enough warnings / doc that those paramereters are ignored if design matrices are passed at fit time


Question: do we want to change the API, so that data specific parameters are passed at fit time ?

ACTION: no change in API, update doc and add warnings


## PRs

[review required](https://github.com/nilearn/nilearn/pulls?q=is%3Apr+is%3Aopen+label%3A%22Review+required%22)

### 5410 - [ENH] add tedana support for load_confounds

https://github.com/nilearn/nilearn/pull/5410

- should we aim to have it ready for 0.12?

### 5421 - [FIX] less warning when using symmetric_cmap with matplotlib engine and warn to use the proper 'hemi' when plotting surfaces

https://github.com/nilearn/nilearn/pull/5421

See related issue: https://github.com/nilearn/nilearn/issues/5414

The PR would throw warning about the "hemi" when user want to plot surfaces by passing arrays for mesh and data: we cannot know what hemisphere is being passed in this case, so we warn the user to be cautious and double check what hemi they have passed.

#### problems

- we have never warned about this before even when we did not have any SurfaceImage
- warning fatigue leads to warnings being ignored
- this is about plotting functions so users should litteraly see when something is not right (or at least one would hope)

#### more general question

- should we start thinking about deprecating the possibility to plot numpy arrays directly?
- Remi: not before we have an easy way to load files to SurfaceImage
- Bertrand: would require deprecation

## Set time next meeting

* July 8th, 4PM CET