LHCfitNikhef / smefit_release

SMEFiT a Standard Model Effective Field Theory fitter
GNU General Public License v3.0
6 stars 1 forks source link

Latest matplotlib incompatibility #78

Closed LucaMantani closed 6 months ago

LucaMantani commented 6 months ago

I installed smefit from scratch using pip install . and it automatically installs the latest matplotlib version 3.9.0. Unfortunately, some parts of the code uses features that have been removed and therefore one gets errors as soon as doing smefit-h.

Downgrading matplotlib worked fine, but it might be a good idea to adapt the plot routines to the new version, I believe it should be a minor fix.

juanrojochacon commented 6 months ago

If I try I get

Last login: Fri May 17 09:13:50 on ttys000 (base) juanrojo@juans-mbp ~ % pip install smefit ERROR: Ignored the following versions that require a different python version: 0.0.0 Requires-Python >=3.8,<3.11; 0.0.1 Requires-Python >=3.8,<=3.11.6; 3.0.0 Requires-Python <=3.11.8,>=3.10 ERROR: Could not find a version that satisfies the requirement smefit (from versions: none) ERROR: No matching distribution found for smefit (base) juanrojo@juans-mbp ~ %

any idea?

juanrojochacon commented 6 months ago

btw installing from source using conda works fine

LucaMantani commented 6 months ago

Is your python newer than 3.11.6?

It looks like it's required to be older than that. I am not sure of the reason why that is enforced, maybe @jacoterh or @giacomomagni could clarify?

juanrojochacon commented 6 months ago

(base) juanrojo@juans-mbp nnpdf40_tuning % python --version Python 3.12.2

yes, I don't knnow why we request an older python version

jacoterh commented 6 months ago

Indeed, currently, the installation requires python versions between 3.10 and 3.11.8 and any installation done on other versions will fail, like Juan experienced for instance. I do not see any good reason why 3.12 and higher would not be supported, so I will try and change the installation script accordingly.

jacoterh commented 6 months ago

Hi @giacomomagni, are you able to install locally with pip install . on python 3.12? For me the installation gets stuck at mpi4py-pich with the following message: ERROR: Could not find a version that satisfies the requirement mpi4py-mpich<4.0.0,>=3.1.5 (from smefit). The installation does work on 3.11 though, which maybe explains why we included support up to that version only?

giacomomagni commented 6 months ago

I'm trying now.

giacomomagni commented 6 months ago

I'm having the same error as @jacoterh, so not able to install with 3.12 because of this package:

(test_312) [gmagni@stbc-i1 smefit_release]$ pip install mpi4py-mpich
ERROR: Could not find a version that satisfies the requirement mpi4py-mpich (from versions: none)
ERROR: No matching distribution found for mpi4py-mpich

do you know how to fix it @LucaMantani ?

Otherwise in #79 I'd only update the matplotlib version and the pylint fixes.

LucaMantani commented 6 months ago

@giacomomagni @jacoterh if I replace the mpi4py-mpich line with mpi4py="*"

it seems to work fine for me with python 3.12

giacomomagni commented 6 months ago

But that package it's different from mpi4py-mpich. If you try to run mipexec -n 2 smefit NS path_to_runcard with only mpi4py installed you should crash. This happens because with mpi4py then you need to install mpicc separately and we fall back to conda... The nice thing of mpi4py-mpich is that everything can be done with pip.

An alternative could be to drop completely mpich in favor of jax

LucaMantani commented 6 months ago

It works fine for me, I tried. If I do mpiexec -n 2 smefit NS blabla.yaml, it works

LucaMantani commented 6 months ago

Ah, wait. It was using the mpiexec I had installed already outside of the environment...

But shouldn't this be fine? mpiexec does not need to be installed with pip, it is often already installed (e.g. in my hpc is already there)

giacomomagni commented 6 months ago

Yes but for instance it's not provided in the Nikhef cluster. So if mpicc is not available the run will fail...

It's written also in the PyPI page:

https://pypi.org/project/mpi4py/

LucaMantani commented 6 months ago

I see. Weird though, it has nothing to do with python so I would assume one can always install it with apt-get or brew?

giacomomagni commented 6 months ago

sure you can always install with something else, before we had the conda snippet... But then we wanted to remove extra burden and have a full consistent installation with pip, so it's really a matter of choice.

I think we need to wait until the release mpi4py-mpich=3.1.6.

LucaMantani commented 6 months ago

Ok, sounds good to me :)