diff --git a/meeting_notes/2025/2025_03_18.md b/meeting_notes/2025/2025_03_18.md new file mode 100644 index 0000000..342a91c --- /dev/null +++ b/meeting_notes/2025/2025_03_18.md @@ -0,0 +1,84 @@ +## 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 + + +### 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/ diff --git a/meeting_notes/2025/2025_04_08.md b/meeting_notes/2025/2025_04_08.md new file mode 100644 index 0000000..9605266 --- /dev/null +++ b/meeting_notes/2025/2025_04_08.md @@ -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 diff --git a/meeting_notes/2025/2025_05_20.md b/meeting_notes/2025/2025_05_20.md new file mode 100644 index 0000000..bf3cd35 --- /dev/null +++ b/meeting_notes/2025/2025_05_20.md @@ -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 diff --git a/meeting_notes/2025/2025_06_10.md b/meeting_notes/2025/2025_06_10.md new file mode 100644 index 0000000..e6a9802 --- /dev/null +++ b/meeting_notes/2025/2025_06_10.md @@ -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 + \ No newline at end of file