Skip to content

fooof v.1.1 not yet updated on conda forge #315

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

Closed
TomDonoghue opened this issue Feb 18, 2024 · 10 comments
Closed

fooof v.1.1 not yet updated on conda forge #315

TomDonoghue opened this issue Feb 18, 2024 · 10 comments
Labels
code / maintenance Topic related to code updates / maintenance.

Comments

@TomDonoghue
Copy link
Member

fooof v1.0.0 is available on conda-forge, but it hasn't been updated to v1.1

I'm not totally sure how the conda-forge feedstocks work, but I think it basically comes down to merging this PR:
conda-forge/fooof-feedstock#1

@ryanhammonds - do you know how this works, and know what to do to check / fix if necessary that PR, and do you have permissions to merge it if / when it's ready?

@TomDonoghue TomDonoghue added the code / maintenance Topic related to code updates / maintenance. label Feb 18, 2024
@ryanhammonds
Copy link
Contributor

I can merge it but it looks like something in the CI pipeline is failing.

I'm in favor of deprecating support for conda / conda forge. I've never used conda or understood its use case when working with python only packages.

If someone in the community wants to take over maintaining the recipe / build I can turn it over. Otherwise I'd say to use pip install fooof instead.

What are your thoughts on conda vs pip?

@TomDonoghue
Copy link
Member Author

I do use conda to manage my environments - I think it's useful to create and manage environments in the way it does dependency checking, and to be able to start with the anaconda distribution for a "everything science is ready and consistent" env. I don't really use conda-forge, though I tend to just use pip to install our packages (or others not on conda) and have environments with mixed installs. That might not be considered very good practice - I don't really know.

Overall, I don't have any strong thoughts on whether to continue to support conda-forge - I find it hard to say without really having a sense if people actually use it much.

I would suggest we try and get fooof 1.1 updated on conda-forge, since right now we list like we support, but actually it's a version behind and some stuff doesn't work. After that, we can decide whether to deprecate / not do conda-forge for specparam.

Do you have a sense of what is failing in the CI? Is it something easy to fix?

@ryanhammonds
Copy link
Contributor

Sounds good. I imagine people who try to install from conda forge do so because of the instructions on the readme. But maybe I'm underestimating how popular conda forge is.

I'm not sure what is failing tbh. You can make a PR on the feedstock repo and I can merge it. I'll look into how I can relinquish my role as maintainer of it to you.

@ryanhammonds
Copy link
Contributor

ryanhammonds commented Feb 20, 2024

I added you as a maintainer to the conda forge repo. I re-triggered the CI and the error being thrown is: ModuleNotFoundError: No module named 'matplotlib'. Seems like a test depends on matplotlib and optional-requirements.txt isn't being installed in the azure container.

@chapochn
Copy link

chapochn commented Mar 6, 2024

Just adding my 2 cents: I usually always try to install everything from conda forge. MNE gets everything from conda forge. So I would strongly support having the option of installing the last version from conda-forge

@danieltomasz
Copy link

danieltomasz commented May 8, 2024

@TomDonoghue good to serendipitously learn that the errors in my code were caused by wrong version :)
it is usually bad practice to mix pip and conda; I need conda when for projects that require specific built version of packages - I needed to do bayesian inference with pymc, arviz and bambi, when I used non-conda version of those package a inference on my computer didn't converge due to problem with C++ libraries, when I used clean conda forge install it worked fine :P
I can do pip install along those package but when pip installed package trigger update to their dependencies I might again got this error or someone else in similar situation et cetera (so far I don't have any problem with specparam from pip, but I would strongly advise to maintain conda-forge presence)

I am no specialist about conda, but if you use conda builds and pip precompiled wheels you might encounter edge cases when wheel depending on shared library from other wheel (which is not the case for specparam I think), but still you can have noticeable difference in performance of specparam library depending of blas/liblas through numpy

https://medium.com/hydroinformatics/getting-started-with-conda-environment-part-2-fc87fdd9fde8
https://www.reddit.com/r/MachineLearning/comments/13qp0s6/d_which_blas_library_to_choose_for_apple_silicon/

@danieltomasz
Copy link

danieltomasz commented May 8, 2024

Basically people who needs specific dependencies (often for more efficient computation) choose conda - think specific version of blas/openblas and support for gpu automatically installed vs manual install and compilation with pip (for example conda provide blas=*=accelerate for Mx Apple family instead of needing to build it from source via pip, there significant improvement over default when analysing EEG
https://mne.discourse.group/t/ica-slow-on-apple-silicon-arm64-mac/6579/3

EDIT: on MacOS 14 Numpy default wheels to accelerate but you see broader context now
numpy/numpy#24905

@pa-friederich-sipbb
Copy link

pa-friederich-sipbb commented May 2, 2025

I also encounter the problem of having my code not being able to run due to the inability to update to fooof 1.1.0 using conda. Having tried several ways to install the latest version using pip in a conda env, it still doesn't work. It has been more than a year since the issue appeared. Could you do something about it please @TomDonoghue or @ryanhammonds ?

@ryanhammonds
Copy link
Contributor

it is usually bad practice to mix pip and conda

using pip in a conda env, it still doesn't work

Being unable to use pip sounds like a pretty big drawback to using conda. I use venv and have no issues. Tom uses pip with conda so maybe he has better insight.

It would also be useful to provided some info about why pip fails.

@pa-friederich-sipbb Is there something preventing you from being able to make a PR on the conda-forge fooof feedstock? Like permissions / etc. I think anyone can make a PR if the build isn't working.

@TomDonoghue
Copy link
Member Author

TomDonoghue commented May 5, 2025

Hey @pa-friederich-sipbb - a while ago I spent some time trying to fix the fooof 1.1.0 deployment, and it wasn't working seemingly, because one of the tests was failing. Long story short - we usually run the tests with optional dependencies included, but through conda-forge it tests the minimal version, and a couple of our plotting tests weren't set to properly turn off in that case, in the failing tests for 1.1.0 were blocking it being updated to conda-forge. To address this I had to cut a new release, 1.1.1, which is now available on Github & PyPI, and has been updated on conda-forge as well. With conda-forge, using conda with fooof should now work (and when specparam is tagged to a proper release I'll add that there too).

Hopefully not necessary now, but I do use use conda, and have never had any trouble pip installing fooof / specparam when I need to do so. Granted it's not technically considered good practice (re @danieltomasz's comments) but the requirements for fooof are pretty minimal so I personally haven't had any issues with it breaking environments - though I guess in some cases it could.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
code / maintenance Topic related to code updates / maintenance.
Projects
None yet
Development

No branches or pull requests

5 participants