Currently both validphys and n3fit are completely free of C++ dependence. In addition, the C++ part of the code is no longer used (some people are still using evolven3fit but it is no longer a requirement).
The only external dependency that is not available as a python package is lhapdf, which for the moment would need to be installed by the user. However, in some of the systems that we use to run there is either lhapdf available by default or an official package for your favourite linux (or macos) flavour so I think we can sidestep the issue for the moment.
So the idea would be to write a pyproject.toml file such that it:
- installs
n3fit
- copies the data and theory db into the package data
- installs all dependencies other than
lhapdf and pandoc
- installs
validphys
- then
vp-get will create the share/NNPDF/ structure as needed
All libnnpdf, evolven3fit, etc, can be skipped. If anyone needs any part of it they can still use conda (for the time being we will have to maintain both) but this gives an extra option to people.
Some notes:
-
in principle the list of dependencies is not very different from conda https://github.com/NNPDF/nnpdf/blob/master/conda-recipe/meta.yaml only the C++-specific ones need to be dropped: swig, apfel, libarchive, etc.
-
python is not allowed to write to share during installation, the data and profile should go as a package-data (both in the conda installation and the pip package) and share would be for things that are "vp-downloaded". This is also more consistent with how other programs do it and also ensures that installation and data are always in sync as we intended.
-
since validphys needs pandoc we might want to start by having a package that only works for n3fit (which is what needs to run in clusters and might benefit the most from an unmanaged pip installation), validphys would still be installed but would crash badly when creating reports if pandoc is not available (or with a nice error).
cc @APJansen I've added you here since you already worked quite a bit on things adjacent to that when you had to install for MacOS so I'd be grateful if you could chime in (or even take this task if you wish since you already have some experience with the installation!)
A minimal requirements.txt file with packages needed in order for the fit to start running
# n3fit
tensorflow
psutil
# evolven3fit
eko
# validphys
pineappl
fiatlux
reportengine
validobj
prompt_toolkit
## hyperopt
hyperopt
seaborn
Only LHAPDF is missing from this list.
Currently both
validphysandn3fitare completely free of C++ dependence. In addition, the C++ part of the code is no longer used (some people are still usingevolven3fitbut it is no longer a requirement).The only external dependency that is not available as a python package is
lhapdf, which for the moment would need to be installed by the user. However, in some of the systems that we use to run there is eitherlhapdfavailable by default or an official package for your favourite linux (or macos) flavour so I think we can sidestep the issue for the moment.So the idea would be to write a
pyproject.tomlfile such that it:n3fitlhapdfandpandocvalidphysvp-getwill create theshare/NNPDF/structure as neededAll
libnnpdf,evolven3fit, etc, can be skipped. If anyone needs any part of it they can still use conda (for the time being we will have to maintain both) but this gives an extra option to people.Some notes:
in principle the list of dependencies is not very different from conda https://github.com/NNPDF/nnpdf/blob/master/conda-recipe/meta.yaml only the C++-specific ones need to be dropped:
swig,apfel,libarchive, etc.python is not allowed to write to
shareduring installation, the data and profile should go as a package-data (both in the conda installation and the pip package) andsharewould be for things that are "vp-downloaded". This is also more consistent with how other programs do it and also ensures that installation and data are always in sync as we intended.since
validphysneedspandocwe might want to start by having a package that only works forn3fit(which is what needs to run in clusters and might benefit the most from an unmanaged pip installation), validphys would still be installed but would crash badly when creating reports if pandoc is not available (or with a nice error).cc @APJansen I've added you here since you already worked quite a bit on things adjacent to that when you had to install for MacOS so I'd be grateful if you could chime in (or even take this task if you wish since you already have some experience with the installation!)
A minimal requirements.txt file with packages needed in order for the fit to start running
Only LHAPDF is missing from this list.