diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index a14d20d..8fb7824 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -12,12 +12,12 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, macos-latest] - build: [meson, setuptools] + build: [meson, pyproject] include: - os: ubuntu-latest python-version: "3.10" - os: macos-latest - python-version: "3.11" + python-version: "3.12" steps: - name: Checkout nuflux uses: actions/checkout@v2 @@ -31,16 +31,16 @@ jobs: sudo apt-get update sudo apt-get install ninja-build gcovr libcfitsio-dev python-is-python3 libboost-python-dev doxygen sudo dpkg -r lcov - curl -L https://github.com/icecube/photospline/archive/refs/tags/v2.1.0.tar.gz | tar xz - cmake -S photospline-2.1.0 -B photospline -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr + curl -L https://github.com/icecube/photospline/archive/refs/tags/v2.2.1.tar.gz | tar xz + cmake -S photospline-2.2.1 -B photospline -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr sudo make install -C photospline - name: HomeBrew Install Dependencies if: startsWith( matrix.os, 'macos') run: | brew tap icecube/icecube brew install boost-python3 ninja doxygen cfitsio gcovr icecube/icecube/photospline - - name: Build nuflux with setuptools - if: matrix.build == 'setuptools' + - name: Build nuflux with pyproject + if: matrix.build == 'pyproject' run: | python3 -m pip install .[test] python3 -m pytest @@ -48,7 +48,7 @@ jobs: if: matrix.build == 'meson' run: | python3 -m pip install meson numpy sphinx breathe sphinx_rtd_theme pytest pytest-subtests - meson setup build . -D b_coverage=true + meson setup build . -D b_coverage=true --prefix=${HOME}/inst/ ninja -C build test - name: Generate Coverage Report and Docs if: matrix.build == 'meson' && startsWith( matrix.os, 'ubuntu') @@ -72,7 +72,7 @@ jobs: strategy: fail-fast: false matrix: - cvmfs: [py3-v4.0.1, py3-v4.1.1, py3-v4.2.1, py3-v4.3.0] + cvmfs: [py3-v4.1.1, py3-v4.2.1, py3-v4.3.0] steps: - uses: cvmfs-contrib/github-action-cvmfs@v3 - name: Checkout nuflux @@ -89,13 +89,13 @@ jobs: pip install --user meson ninja pytest pytest-subtests CMAKE_PREFIX_PATH=${SROOT} BOOST_ROOT=${SROOT} meson setup build /nuflux ninja -Cbuild test - cvmfs_setuptools_tests: - name: cvmfs setuptools tests ${{matrix.cvmfs}} + cvmfs_pyproject_tests: + name: cvmfs pyproject tests ${{matrix.cvmfs}} runs-on: ubuntu-latest strategy: fail-fast: false matrix: - cvmfs: [py3-v4.0.1, py3-v4.1.1, py3-v4.2.1, py3-v4.3.0] + cvmfs: [py3-v4.1.1, py3-v4.3.0] steps: - uses: cvmfs-contrib/github-action-cvmfs@v3 - name: Checkout nuflux @@ -103,11 +103,11 @@ jobs: - name: Build and Run Tests in Docker uses: addnab/docker-run-action@v3 with: - options: -v /cvmfs/icecube.opensciencegrid.org/:/cvmfs/icecube.opensciencegrid.org/ -v /home/runner/work/nuflux/nuflux:/nuflux + options: -v /cvmfs/icecube.opensciencegrid.org/:/cvmfs/icecube.opensciencegrid.org/ -v /home/runner/work/nuflux/nuflux:/nf image: centos:centos7.9.2009 run: | yum -y install glibc-headers glibc-devel eval $(/cvmfs/icecube.opensciencegrid.org/${{matrix.cvmfs}}/setup.sh) - pip install --user wheel pytest pytest-subtests - PREFIX=${SROOT} pip install --user --no-build-isolation /nuflux - python3 -m pytest /nuflux + python3 -m pip install --user pip pytest pytest-subtests + BOOST_ROOT=${SROOT} python3 -m pip install --user --verbose /nf + python3 -m pytest /nf diff --git a/README.md b/README.md index 70b9b3d..1b07e53 100644 --- a/README.md +++ b/README.md @@ -30,14 +30,14 @@ If you only need to use python you can install it directly through pip: pip install --user git+https://github.com/icecube/nuflux -Note that this may fail if photospline and boost_python are installed in nonstandard locations, e.g. headers in /opt/toolsets/mystuff/include, libraries in /opt/toolsets/mystuff/lib. In this case, set the `PREFIX` environment variable to the root of your toolset installation: +Note that this may fail if photospline and boost_python are installed in nonstandard locations, e.g. headers in /opt/toolsets/photospline/include, libraries in /opt/toolsets/photospline/lib. In this case, set the `CMAKE_PREFIX_PATH` environment variable to the root of your photospline installation and `BOOST_ROOT` to the root of your boost installation: - PREFIX=/opt/toolsets/mystuff pip install --user git+https://github.com/icecube/nuflux + CMAKE_PREFIX_PATH=/opt/toolsets/photospline BOOST_ROOT=/opt/toolsets/boost pip install --user git+https://github.com/icecube/nuflux -If you are running it in IceCube's cvmfs environment you will want to set `PREFIX` to the base of the cvmfs envionment which is stored in the envionment variable `SROOT`: +If you are running it in IceCube's cvmfs environment you will want to set `CMAKE_PREFIX_PATH` and `BOOST_ROOT` to the base of the cvmfs envionment which is stored in the environment variable `SROOT`: - eval `/cvmfs/icecube.opensciencegrid.org/py3-v4.1.1/setup.sh` - PREFIX=${SROOT} pip install --user git+https://github.com/icecube/nuflux + eval `/cvmfs/icecube.opensciencegrid.org/py3-v4.3.0/setup.sh` + CMAKE_PREFIX_PATH=${SROOT} BOOST_ROOT=${SROOT} pip install --user git+https://github.com/icecube/nuflux #### Meson @@ -55,11 +55,11 @@ For example, in IceCube's cvmfs envionment you should do: CMAKE_PREFIX_PATH=${SROOT} BOOST_ROOT=${SROOT} meson setup build . --prefix=/path/to/instal/to -the option -Ddata_path can be used to install to a directory outside of the PREFIX directory. +the option -Ddata_path can be used to install the raw flux tables to a directory outside of the PREFIX directory. If you want to install to a read-only file system you can pass -Dinstall_data=False -You may also use the environment variable `NUFLUX_DATA` to specify the path of the nuflux data tables if they are in a +You may also use the environment variable `NUFLUX_DATA` to specify the path of the raw flux tables if they are in a place other than where they were installed to. ## Documentation diff --git a/a.out b/a.out new file mode 100755 index 0000000..0fd90a2 Binary files /dev/null and b/a.out differ diff --git a/docs/installation.rst b/docs/installation.rst index 14549b3..504d3c3 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -53,11 +53,11 @@ Here are some errors that have been encountered with Python and Meson installati * **photospline and boost are installed in non-standard locations** - The Python installation may fail if photospline and boost_python are installed in non-standard locations, e.g. headers in ``/opt/toolsets/mystuff/include``, libraries in ``/opt/toolsets/mystuff/lib``. In this case, set the `PREFIX` environment variable to the root of your toolset installation: + The Python installation may fail if photospline and boost_python are installed in non-standard locations, e.g. headers in ``/opt/toolsets/mystuff/include``, libraries in ``/opt/toolsets/mystuff/lib``. In this case, set the `CMAKE_PREFIX_PATH` and `BOOST_ROOT` environment variables to the root of your toolset installation: :: - PREFIX=/opt/toolsets/mystuff pip install --user git+https://github.com/icecube/nuflux + CMAKE_PREFIX_PATH=/opt/toolsets/photospline and `BOOST_ROOT`=/opt/toolsets/boost pip install --user git+https://github.com/icecube/nuflux * **Meson is out of date** diff --git a/meson.build b/meson.build index ab0526c..3900da9 100644 --- a/meson.build +++ b/meson.build @@ -1,102 +1,29 @@ project('nuflux', 'cpp', - version : '2.0.4', - default_options : ['cpp_std=c++17']) + version: '2.0.4', + default_options: ['cpp_std=c++17']) cfitsio = dependency('cfitsio') photospline = dependency('photospline', method : 'cmake') -datadir = get_option('data_path') -if datadir == '' - datadir = get_option('prefix') / get_option('datadir') / meson.project_name() -endif conf_data = configuration_data() -conf_data.set_quoted('DATA_DIR',datadir) -configure_file(output : 'config.h', - configuration : conf_data) -if get_option('install_data') - install_subdir('nuflux/data/', - install_dir:datadir, - strip_directory:true) +conf_data.set_quoted('NUFLUX_VERSION',meson.project_version()) +if not get_option('pymodule') + datadir = get_option('data_path') + if datadir == '' + datadir = get_option('prefix') / get_option('datadir') / meson.project_name() + endif + conf_data.set_quoted('DATA_DIR',datadir) endif - -subdir('src/include/nuflux') +configure_file( + output: 'config.h', + configuration: conf_data) +configuration_inc = include_directories('.') inc = include_directories('src/include') -libnuflux = library( - 'nuflux', - 'src/library/ANFlux.cpp', - 'src/library/IPLEFlux.cpp', - 'src/library/LegacyConventionalFlux.cpp', - 'src/library/SplineFlux.cpp', - 'src/library/SplineFlux2.cpp', - 'src/library/FluxFunction.cpp', - 'src/library/LegacyPromptFlux.cpp', - 'src/library/detail.cpp', - include_directories : inc, - dependencies : [photospline,cfitsio], - install : true) - +init_file = files('src/nuflux/__init__.py') +subdir('src/include/nuflux') +subdir('src/library') +subdir('src/pybindings') +subdir('src/nuflux/data') subdir('tests') - -pkg_mod = import('pkgconfig') -pkg_mod.generate( - libraries : libnuflux, - version : meson.project_version(), - name : meson.project_name(), - filebase : meson.project_name(), - url : 'https://github.com/IceCubeOpenSource/nuflux', - description : 'A library for calculating atmospheric neutrino fluxes') - -cppcomp = meson.get_compiler('cpp') -pymod = import('python') -python = pymod.find_installation(get_option('python'),required: false) - -if not python.found() - warning('Can\'t find python: "'+get_option('python')+'", skipping python build') -else - pydep = python.dependency() - - # Find numpy - numpy = run_command(python,'-c', - 'import importlib.util,os;print(os.path.join(importlib.util.find_spec("numpy").submodule_search_locations[0],"core","include"))', - check: true, - ) - if numpy.returncode()==0 - pybind_inc = include_directories(numpy.stdout().strip()) - message ('Numpy found: '+ numpy.stdout().strip()) - else - warning ('Numpy not found: building without arrays') - pybind_inc = include_directories() - endif - - python_name = 'python'+''.join(python.language_version().split('.')) - boost = dependency('boost' , modules : [python_name]) - - if not boost.found() - warning( 'Can\'t find boost python, Skipping python build') - else - message('Building package for python version ' + - python.language_version() + ': ' + python.get_install_dir()) - python.install_sources('nuflux/__init__.py', - subdir: 'nuflux', - ) - - python.extension_module( - '_nuflux', - ['src/pybindings/module.cxx'], - include_directories : [inc,pybind_inc], - dependencies : [photospline,pydep, boost], - link_with : libnuflux, - install:true) - - pytest_env = environment(test_env) - pytest_env.append('PYTHONPATH',meson.current_source_dir()) - pytest_env.append('PYTHONPATH',meson.current_build_dir()) - test('test_fluxes',find_program('tests/test_fluxes.py'), env: pytest_env) - test('doctest',python,args: ['-m','doctest',files('README.md')],env: pytest_env) - meson.add_devenv(pytest_env) - endif - -endif - subdir('docs') diff --git a/meson_options.txt b/meson_options.txt index aa1bd6b..4cd54a3 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -1,3 +1,4 @@ -option('python', type : 'string', value : 'python3', description : 'python path to compile against') -option('data_path', type: 'string', value : '', description: 'absolute path to where to install data files, will overrede --datadir Default will be PREFIX/share/nuflux') -option('install_data', type: 'boolean', value : true, description: 'can be set to false if installing on a readonly filesystem') +option('python', type : 'string', value: 'python3', description : 'python path to compile against') +option('data_path', type: 'string', value: '', description: 'absolute path to where to install the raw flux tables, will override --datadir Default will be PREFIX/share/nuflux') +option('install_data', type: 'boolean', value: true, description: 'can be set to false if installing on a readonly filesystem') +option('pymodule', type: 'boolean', value: false, description: 'install as a python module, no shared library, and with the data files as part of the python module' ) diff --git a/nuflux/data/SplineFlux/BERSS_H3a_central_nue.fits b/nuflux/data/SplineFlux/BERSS_H3a_central_nue.fits deleted file mode 120000 index ddcc0e3..0000000 --- a/nuflux/data/SplineFlux/BERSS_H3a_central_nue.fits +++ /dev/null @@ -1 +0,0 @@ -BERSS_H3a_central.fits \ No newline at end of file diff --git a/nuflux/data/SplineFlux/BERSS_H3a_central_nuebar.fits b/nuflux/data/SplineFlux/BERSS_H3a_central_nuebar.fits deleted file mode 120000 index ddcc0e3..0000000 --- a/nuflux/data/SplineFlux/BERSS_H3a_central_nuebar.fits +++ /dev/null @@ -1 +0,0 @@ -BERSS_H3a_central.fits \ No newline at end of file diff --git a/nuflux/data/SplineFlux/BERSS_H3a_central_numu.fits b/nuflux/data/SplineFlux/BERSS_H3a_central_numu.fits deleted file mode 120000 index ddcc0e3..0000000 --- a/nuflux/data/SplineFlux/BERSS_H3a_central_numu.fits +++ /dev/null @@ -1 +0,0 @@ -BERSS_H3a_central.fits \ No newline at end of file diff --git a/nuflux/data/SplineFlux/BERSS_H3a_central_numubar.fits b/nuflux/data/SplineFlux/BERSS_H3a_central_numubar.fits deleted file mode 120000 index ddcc0e3..0000000 --- a/nuflux/data/SplineFlux/BERSS_H3a_central_numubar.fits +++ /dev/null @@ -1 +0,0 @@ -BERSS_H3a_central.fits \ No newline at end of file diff --git a/nuflux/data/SplineFlux/BERSS_H3p_central_nue.fits b/nuflux/data/SplineFlux/BERSS_H3p_central_nue.fits deleted file mode 120000 index 334778a..0000000 --- a/nuflux/data/SplineFlux/BERSS_H3p_central_nue.fits +++ /dev/null @@ -1 +0,0 @@ -BERSS_H3p_central.fits \ No newline at end of file diff --git a/nuflux/data/SplineFlux/BERSS_H3p_central_nuebar.fits b/nuflux/data/SplineFlux/BERSS_H3p_central_nuebar.fits deleted file mode 120000 index 334778a..0000000 --- a/nuflux/data/SplineFlux/BERSS_H3p_central_nuebar.fits +++ /dev/null @@ -1 +0,0 @@ -BERSS_H3p_central.fits \ No newline at end of file diff --git a/nuflux/data/SplineFlux/BERSS_H3p_central_numu.fits b/nuflux/data/SplineFlux/BERSS_H3p_central_numu.fits deleted file mode 120000 index 334778a..0000000 --- a/nuflux/data/SplineFlux/BERSS_H3p_central_numu.fits +++ /dev/null @@ -1 +0,0 @@ -BERSS_H3p_central.fits \ No newline at end of file diff --git a/nuflux/data/SplineFlux/BERSS_H3p_central_numubar.fits b/nuflux/data/SplineFlux/BERSS_H3p_central_numubar.fits deleted file mode 120000 index 334778a..0000000 --- a/nuflux/data/SplineFlux/BERSS_H3p_central_numubar.fits +++ /dev/null @@ -1 +0,0 @@ -BERSS_H3p_central.fits \ No newline at end of file diff --git a/nuflux/data/SplineFlux/BERSS_H3p_lower_nue.fits b/nuflux/data/SplineFlux/BERSS_H3p_lower_nue.fits deleted file mode 120000 index d2e3fdb..0000000 --- a/nuflux/data/SplineFlux/BERSS_H3p_lower_nue.fits +++ /dev/null @@ -1 +0,0 @@ -BERSS_H3p_lower.fits \ No newline at end of file diff --git a/nuflux/data/SplineFlux/BERSS_H3p_lower_nuebar.fits b/nuflux/data/SplineFlux/BERSS_H3p_lower_nuebar.fits deleted file mode 120000 index d2e3fdb..0000000 --- a/nuflux/data/SplineFlux/BERSS_H3p_lower_nuebar.fits +++ /dev/null @@ -1 +0,0 @@ -BERSS_H3p_lower.fits \ No newline at end of file diff --git a/nuflux/data/SplineFlux/BERSS_H3p_lower_numu.fits b/nuflux/data/SplineFlux/BERSS_H3p_lower_numu.fits deleted file mode 120000 index d2e3fdb..0000000 --- a/nuflux/data/SplineFlux/BERSS_H3p_lower_numu.fits +++ /dev/null @@ -1 +0,0 @@ -BERSS_H3p_lower.fits \ No newline at end of file diff --git a/nuflux/data/SplineFlux/BERSS_H3p_lower_numubar.fits b/nuflux/data/SplineFlux/BERSS_H3p_lower_numubar.fits deleted file mode 120000 index d2e3fdb..0000000 --- a/nuflux/data/SplineFlux/BERSS_H3p_lower_numubar.fits +++ /dev/null @@ -1 +0,0 @@ -BERSS_H3p_lower.fits \ No newline at end of file diff --git a/nuflux/data/SplineFlux/BERSS_H3p_upper_nue.fits b/nuflux/data/SplineFlux/BERSS_H3p_upper_nue.fits deleted file mode 120000 index cc6a1dd..0000000 --- a/nuflux/data/SplineFlux/BERSS_H3p_upper_nue.fits +++ /dev/null @@ -1 +0,0 @@ -BERSS_H3p_upper.fits \ No newline at end of file diff --git a/nuflux/data/SplineFlux/BERSS_H3p_upper_nuebar.fits b/nuflux/data/SplineFlux/BERSS_H3p_upper_nuebar.fits deleted file mode 120000 index cc6a1dd..0000000 --- a/nuflux/data/SplineFlux/BERSS_H3p_upper_nuebar.fits +++ /dev/null @@ -1 +0,0 @@ -BERSS_H3p_upper.fits \ No newline at end of file diff --git a/nuflux/data/SplineFlux/BERSS_H3p_upper_numu.fits b/nuflux/data/SplineFlux/BERSS_H3p_upper_numu.fits deleted file mode 120000 index cc6a1dd..0000000 --- a/nuflux/data/SplineFlux/BERSS_H3p_upper_numu.fits +++ /dev/null @@ -1 +0,0 @@ -BERSS_H3p_upper.fits \ No newline at end of file diff --git a/nuflux/data/SplineFlux/BERSS_H3p_upper_numubar.fits b/nuflux/data/SplineFlux/BERSS_H3p_upper_numubar.fits deleted file mode 120000 index cc6a1dd..0000000 --- a/nuflux/data/SplineFlux/BERSS_H3p_upper_numubar.fits +++ /dev/null @@ -1 +0,0 @@ -BERSS_H3p_upper.fits \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 1c92b24..97cdd94 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,10 +1,10 @@ [build-system] -requires = ["setuptools", "oldest-supported-numpy"] -build-backend = "setuptools.build_meta" +build-backend = 'mesonpy' +requires = ['meson-python', 'oldest-supported-numpy'] [project] name = "nuflux" -version = "2.0.4" +dynamic = ["version"] description = "A library for calculating atmospheric neutrino fluxes" readme = "README.md" requires-python = "~=3.7" @@ -37,6 +37,9 @@ doi = "https://doi.org/10.5281/zenodo.8180337" [project.optional-dependencies] test = ["pytest","pytest-subtests"] +[tool.meson-python.args] +setup = ['-Dpymodule=true'] + [tool.pytest.ini_options] addopts = "--doctest-glob='README.md'" testpaths = ["tests", "README.md"] diff --git a/setup.py b/setup.py deleted file mode 100755 index 2ce63e7..0000000 --- a/setup.py +++ /dev/null @@ -1,34 +0,0 @@ -import os -import sys - -import numpy -from setuptools import Extension, setup - -boost_python = "boost_python" + str(sys.version_info.major) + str(sys.version_info.minor) -prefix = os.environ.get("PREFIX", "/usr/local") - -extension = Extension( - "_nuflux", - [ - "src/library/logging.cpp", - "src/library/SplineFlux.cpp", - "src/library/SplineFlux2.cpp", - "src/library/LegacyPromptFlux.cpp", - "src/library/LegacyConventionalFlux.cpp", - "src/library/ANFlux.cpp", - "src/library/IPLEFlux.cpp", - "src/library/FluxFunction.cpp", - "src/pybindings/detail.cxx", - "src/pybindings/module.cxx", - ], - include_dirs=["src/include", numpy.get_include(), os.path.join(prefix, "include")], - library_dirs=[os.path.join(prefix, "lib"), os.path.join(prefix, "lib64")], - libraries=[boost_python, "photospline"], - extra_compile_args=["-std=c++17", "-DUSE_NUMPY"], -) - -setup( - packages=["nuflux"], - ext_modules=[extension], - package_data={"nuflux": ["data/*/*.fits", "data/*/*.dat"]}, -) diff --git a/src/include/nuflux/SplineFlux.h b/src/include/nuflux/SplineFlux.h index 043e411..f735cef 100644 --- a/src/include/nuflux/SplineFlux.h +++ b/src/include/nuflux/SplineFlux.h @@ -8,7 +8,7 @@ namespace nuflux{ class SimpleSplineFlux : public FluxFunction{ private: - std::map> > components; + boost::shared_ptr> spline; public: SimpleSplineFlux(const std::string& fluxName); static boost::shared_ptr makeFlux(const std::string& fluxName); diff --git a/src/include/nuflux/nuflux.h b/src/include/nuflux/nuflux.h index 4061b3c..198e5df 100644 --- a/src/include/nuflux/nuflux.h +++ b/src/include/nuflux/nuflux.h @@ -22,6 +22,9 @@ namespace nuflux{ ///Print an listing of all supported models void printModels(); + + ///Return the current nuflux version + std::string getVersion(); } //namespace nuflux diff --git a/src/library/ANFlux.cpp b/src/library/ANFlux.cpp index c6f156c..f4aaed3 100644 --- a/src/library/ANFlux.cpp +++ b/src/library/ANFlux.cpp @@ -6,11 +6,11 @@ namespace nuflux { ANFlux::ANFlux(const std::string& fluxName) : FluxFunction(fluxName) { - std::string nuefile = detail::getDataPath("/ANFlux/" + fluxName + "_nue.fits"); + std::string nuefile = detail::getDataPath("ANFlux/" + fluxName + "_nue.fits"); boost::shared_ptr evaluator = boost::make_shared(nuefile); fluxes_[NuE] = evaluator; fluxes_[NuEBar] = evaluator; - std::string numufile = detail::getDataPath("/ANFlux/" + fluxName + "_numu.fits"); + std::string numufile = detail::getDataPath("ANFlux/" + fluxName + "_numu.fits"); evaluator = boost::make_shared(numufile); fluxes_[NuMu] = evaluator; fluxes_[NuMuBar] = evaluator; diff --git a/src/library/FluxFunction.cpp b/src/library/FluxFunction.cpp index 8a43915..3c3e701 100644 --- a/src/library/FluxFunction.cpp +++ b/src/library/FluxFunction.cpp @@ -1,7 +1,14 @@ #include #include +#include "config.h" namespace nuflux{ + + ///Return the current nuflux version + std::string getVersion(){ + return NUFLUX_VERSION; + } + namespace detail{ struct FluxFactory{ boost::shared_ptr(*factoryFn)(const std::string&); diff --git a/src/library/SplineFlux.cpp b/src/library/SplineFlux.cpp index d168d8d..16b240e 100644 --- a/src/library/SplineFlux.cpp +++ b/src/library/SplineFlux.cpp @@ -15,10 +15,8 @@ namespace nuflux{ } double SimpleSplineFlux::readExtents(ParticleType type)const{ - std::map> > - ::const_iterator it=components.find(type); - double le=it->second->lower_extent(0), ue=it->second->upper_extent(0); - double lc=it->second->lower_extent(1), uc=it->second->upper_extent(1); + double le=spline->lower_extent(0), ue=spline->upper_extent(0); + double lc=spline->lower_extent(1), uc=spline->upper_extent(1); std::cout << "Extents for dim energy:\t\t" << pow(10,le) << "\t" << pow(10,ue) << std::endl; std::cout << "Extents for dim cos(zenith):\t" << lc << "\t" << uc << std::endl; return 0; @@ -27,10 +25,7 @@ namespace nuflux{ SimpleSplineFlux::SimpleSplineFlux(const std::string& fluxName): FluxFunction(fluxName){ - components[NuMu] =boost::make_shared>(detail::getDataPath("SplineFlux/"+fluxName+"_numu.fits")); - components[NuMuBar]=boost::make_shared>(detail::getDataPath("SplineFlux/"+fluxName+"_numubar.fits")); - components[NuE] =boost::make_shared>(detail::getDataPath("SplineFlux/"+fluxName+"_nue.fits")); - components[NuEBar] =boost::make_shared>(detail::getDataPath("SplineFlux/"+fluxName+"_nuebar.fits")); + spline = boost::make_shared>(detail::getDataPath("SplineFlux/"+fluxName+".fits")); } boost::shared_ptr SimpleSplineFlux::makeFlux(const std::string& fluxName){ @@ -38,8 +33,7 @@ namespace nuflux{ } double SimpleSplineFlux::getFlux(ParticleType type, double energy, double cosZenith) const{ - std::map> >::const_iterator it=components.find(type); - if(it==components.end()) { + if(type != NuMu && type != NuMuBar && type !=NuE && type!=NuEBar){ if (isNeutrino(type)) { return 0; } else { @@ -49,8 +43,8 @@ namespace nuflux{ } // Warn the user about coordinates outside of physics extents: - double le=it->second->lower_extent(0), ue=it->second->upper_extent(0); - double lc=it->second->lower_extent(1), uc=it->second->upper_extent(1); + double le=spline->lower_extent(0), ue=spline->upper_extent(0); + double lc=spline->lower_extent(1), uc=spline->upper_extent(1); if (!((energy-pow(10, ue)) * (energy-pow(10, le)) <= 0 )){ return 0; } @@ -60,8 +54,8 @@ namespace nuflux{ double coords[2]={log10(energy),cosZenith}; int centers[2]; - it->second->searchcenters(coords,centers); - double lf=it->second->ndsplineeval(coords,centers,0); + spline->searchcenters(coords,centers); + double lf=spline->ndsplineeval(coords,centers,0); return(pow(10,lf)); } diff --git a/src/library/meson.build b/src/library/meson.build new file mode 100644 index 0000000..1da4957 --- /dev/null +++ b/src/library/meson.build @@ -0,0 +1,28 @@ +lib_src = files( + 'ANFlux.cpp', + 'IPLEFlux.cpp', + 'LegacyConventionalFlux.cpp', + 'SplineFlux.cpp', + 'SplineFlux2.cpp', + 'FluxFunction.cpp', + 'LegacyPromptFlux.cpp' + ) + +if not get_option('pymodule') + + libnuflux = library( + 'nuflux', + lib_src + 'detail.cpp', + include_directories: [inc, configuration_inc], + dependencies : [photospline, cfitsio], + install: true) + + pkg_mod = import('pkgconfig') + pkg_mod.generate( + libraries: libnuflux, + version: meson.project_version(), + name: meson.project_name(), + filebase: meson.project_name(), + url: 'https://github.com/icecube/nuflux', + description: 'A library for calculating atmospheric neutrino fluxes') +endif \ No newline at end of file diff --git a/nuflux/__init__.py b/src/nuflux/__init__.py similarity index 85% rename from nuflux/__init__.py rename to src/nuflux/__init__.py index 2e779f2..764f583 100644 --- a/nuflux/__init__.py +++ b/src/nuflux/__init__.py @@ -1,10 +1,11 @@ __all__ = ['FluxFunction', 'KneeReweightable', 'LegacyConventionalFlux', 'LegacyPromptFlux', 'NuE', 'NuEBar', 'NuMu', 'NuMuBar', 'NuTau', 'NuTauBar', 'ParticleType', 'PionKaonAdjustable', 'SplineFlux', 'SplineFlux2', 'availableFluxes', - 'kneesForFlux', 'makeFlux', 'printModels', 'stand_alone'] + 'kneesForFlux', 'makeFlux', 'printModels', 'stand_alone', 'getVersion'] from _nuflux import (FluxFunction, KneeReweightable, LegacyConventionalFlux, LegacyPromptFlux, NuE, NuEBar, NuMu, NuMuBar, NuTau, NuTauBar, ParticleType, PionKaonAdjustable, SplineFlux, SplineFlux2, availableFluxes, kneesForFlux, makeFlux, - printModels, stand_alone) + printModels, stand_alone, getVersion) +__version__ = getVersion() \ No newline at end of file diff --git a/nuflux/data/ANFlux/CORSIKA_GaisserH3a_QGSJET-II_nue.fits b/src/nuflux/data/ANFlux/CORSIKA_GaisserH3a_QGSJET-II_nue.fits similarity index 100% rename from nuflux/data/ANFlux/CORSIKA_GaisserH3a_QGSJET-II_nue.fits rename to src/nuflux/data/ANFlux/CORSIKA_GaisserH3a_QGSJET-II_nue.fits diff --git a/nuflux/data/ANFlux/CORSIKA_GaisserH3a_QGSJET-II_numu.fits b/src/nuflux/data/ANFlux/CORSIKA_GaisserH3a_QGSJET-II_numu.fits similarity index 100% rename from nuflux/data/ANFlux/CORSIKA_GaisserH3a_QGSJET-II_numu.fits rename to src/nuflux/data/ANFlux/CORSIKA_GaisserH3a_QGSJET-II_numu.fits diff --git a/nuflux/data/ANFlux/CORSIKA_GaisserH3a_SIBYLL-2.1_nue.fits b/src/nuflux/data/ANFlux/CORSIKA_GaisserH3a_SIBYLL-2.1_nue.fits similarity index 100% rename from nuflux/data/ANFlux/CORSIKA_GaisserH3a_SIBYLL-2.1_nue.fits rename to src/nuflux/data/ANFlux/CORSIKA_GaisserH3a_SIBYLL-2.1_nue.fits diff --git a/nuflux/data/ANFlux/CORSIKA_GaisserH3a_SIBYLL-2.1_numu.fits b/src/nuflux/data/ANFlux/CORSIKA_GaisserH3a_SIBYLL-2.1_numu.fits similarity index 100% rename from nuflux/data/ANFlux/CORSIKA_GaisserH3a_SIBYLL-2.1_numu.fits rename to src/nuflux/data/ANFlux/CORSIKA_GaisserH3a_SIBYLL-2.1_numu.fits diff --git a/nuflux/data/ANFlux/CORSIKA_GaisserH3a_average_nue.fits b/src/nuflux/data/ANFlux/CORSIKA_GaisserH3a_average_nue.fits similarity index 100% rename from nuflux/data/ANFlux/CORSIKA_GaisserH3a_average_nue.fits rename to src/nuflux/data/ANFlux/CORSIKA_GaisserH3a_average_nue.fits diff --git a/nuflux/data/ANFlux/CORSIKA_GaisserH3a_average_numu.fits b/src/nuflux/data/ANFlux/CORSIKA_GaisserH3a_average_numu.fits similarity index 100% rename from nuflux/data/ANFlux/CORSIKA_GaisserH3a_average_numu.fits rename to src/nuflux/data/ANFlux/CORSIKA_GaisserH3a_average_numu.fits diff --git a/nuflux/data/IPLEFlux/IPhonda2006_sno_solmin_nbe2D.dat b/src/nuflux/data/IPLEFlux/IPhonda2006_sno_solmin_nbe2D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2006_sno_solmin_nbe2D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2006_sno_solmin_nbe2D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2006_sno_solmin_nbe3D.dat b/src/nuflux/data/IPLEFlux/IPhonda2006_sno_solmin_nbe3D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2006_sno_solmin_nbe3D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2006_sno_solmin_nbe3D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2006_sno_solmin_nbm2D.dat b/src/nuflux/data/IPLEFlux/IPhonda2006_sno_solmin_nbm2D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2006_sno_solmin_nbm2D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2006_sno_solmin_nbm2D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2006_sno_solmin_nbm3D.dat b/src/nuflux/data/IPLEFlux/IPhonda2006_sno_solmin_nbm3D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2006_sno_solmin_nbm3D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2006_sno_solmin_nbm3D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2006_sno_solmin_nue2D.dat b/src/nuflux/data/IPLEFlux/IPhonda2006_sno_solmin_nue2D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2006_sno_solmin_nue2D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2006_sno_solmin_nue2D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2006_sno_solmin_nue3D.dat b/src/nuflux/data/IPLEFlux/IPhonda2006_sno_solmin_nue3D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2006_sno_solmin_nue3D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2006_sno_solmin_nue3D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2006_sno_solmin_num2D.dat b/src/nuflux/data/IPLEFlux/IPhonda2006_sno_solmin_num2D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2006_sno_solmin_num2D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2006_sno_solmin_num2D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2006_sno_solmin_num3D.dat b/src/nuflux/data/IPLEFlux/IPhonda2006_sno_solmin_num3D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2006_sno_solmin_num3D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2006_sno_solmin_num3D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2014_sk_solmax_nbe2D.dat b/src/nuflux/data/IPLEFlux/IPhonda2014_sk_solmax_nbe2D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2014_sk_solmax_nbe2D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2014_sk_solmax_nbe2D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2014_sk_solmax_nbe3D.dat b/src/nuflux/data/IPLEFlux/IPhonda2014_sk_solmax_nbe3D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2014_sk_solmax_nbe3D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2014_sk_solmax_nbe3D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2014_sk_solmax_nbm2D.dat b/src/nuflux/data/IPLEFlux/IPhonda2014_sk_solmax_nbm2D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2014_sk_solmax_nbm2D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2014_sk_solmax_nbm2D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2014_sk_solmax_nbm3D.dat b/src/nuflux/data/IPLEFlux/IPhonda2014_sk_solmax_nbm3D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2014_sk_solmax_nbm3D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2014_sk_solmax_nbm3D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2014_sk_solmax_nue2D.dat b/src/nuflux/data/IPLEFlux/IPhonda2014_sk_solmax_nue2D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2014_sk_solmax_nue2D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2014_sk_solmax_nue2D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2014_sk_solmax_nue3D.dat b/src/nuflux/data/IPLEFlux/IPhonda2014_sk_solmax_nue3D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2014_sk_solmax_nue3D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2014_sk_solmax_nue3D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2014_sk_solmax_num2D.dat b/src/nuflux/data/IPLEFlux/IPhonda2014_sk_solmax_num2D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2014_sk_solmax_num2D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2014_sk_solmax_num2D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2014_sk_solmax_num3D.dat b/src/nuflux/data/IPLEFlux/IPhonda2014_sk_solmax_num3D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2014_sk_solmax_num3D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2014_sk_solmax_num3D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2014_sk_solmin_nbe2D.dat b/src/nuflux/data/IPLEFlux/IPhonda2014_sk_solmin_nbe2D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2014_sk_solmin_nbe2D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2014_sk_solmin_nbe2D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2014_sk_solmin_nbe3D.dat b/src/nuflux/data/IPLEFlux/IPhonda2014_sk_solmin_nbe3D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2014_sk_solmin_nbe3D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2014_sk_solmin_nbe3D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2014_sk_solmin_nbm2D.dat b/src/nuflux/data/IPLEFlux/IPhonda2014_sk_solmin_nbm2D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2014_sk_solmin_nbm2D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2014_sk_solmin_nbm2D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2014_sk_solmin_nbm3D.dat b/src/nuflux/data/IPLEFlux/IPhonda2014_sk_solmin_nbm3D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2014_sk_solmin_nbm3D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2014_sk_solmin_nbm3D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2014_sk_solmin_nue2D.dat b/src/nuflux/data/IPLEFlux/IPhonda2014_sk_solmin_nue2D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2014_sk_solmin_nue2D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2014_sk_solmin_nue2D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2014_sk_solmin_nue3D.dat b/src/nuflux/data/IPLEFlux/IPhonda2014_sk_solmin_nue3D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2014_sk_solmin_nue3D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2014_sk_solmin_nue3D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2014_sk_solmin_num2D.dat b/src/nuflux/data/IPLEFlux/IPhonda2014_sk_solmin_num2D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2014_sk_solmin_num2D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2014_sk_solmin_num2D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2014_sk_solmin_num3D.dat b/src/nuflux/data/IPLEFlux/IPhonda2014_sk_solmin_num3D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2014_sk_solmin_num3D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2014_sk_solmin_num3D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2014_spl_solmax_nbe2D.dat b/src/nuflux/data/IPLEFlux/IPhonda2014_spl_solmax_nbe2D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2014_spl_solmax_nbe2D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2014_spl_solmax_nbe2D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2014_spl_solmax_nbe3D.dat b/src/nuflux/data/IPLEFlux/IPhonda2014_spl_solmax_nbe3D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2014_spl_solmax_nbe3D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2014_spl_solmax_nbe3D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2014_spl_solmax_nbm2D.dat b/src/nuflux/data/IPLEFlux/IPhonda2014_spl_solmax_nbm2D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2014_spl_solmax_nbm2D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2014_spl_solmax_nbm2D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2014_spl_solmax_nbm3D.dat b/src/nuflux/data/IPLEFlux/IPhonda2014_spl_solmax_nbm3D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2014_spl_solmax_nbm3D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2014_spl_solmax_nbm3D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2014_spl_solmax_nue2D.dat b/src/nuflux/data/IPLEFlux/IPhonda2014_spl_solmax_nue2D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2014_spl_solmax_nue2D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2014_spl_solmax_nue2D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2014_spl_solmax_nue3D.dat b/src/nuflux/data/IPLEFlux/IPhonda2014_spl_solmax_nue3D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2014_spl_solmax_nue3D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2014_spl_solmax_nue3D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2014_spl_solmax_num2D.dat b/src/nuflux/data/IPLEFlux/IPhonda2014_spl_solmax_num2D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2014_spl_solmax_num2D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2014_spl_solmax_num2D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2014_spl_solmax_num3D.dat b/src/nuflux/data/IPLEFlux/IPhonda2014_spl_solmax_num3D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2014_spl_solmax_num3D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2014_spl_solmax_num3D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2014_spl_solmin_nbe2D.dat b/src/nuflux/data/IPLEFlux/IPhonda2014_spl_solmin_nbe2D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2014_spl_solmin_nbe2D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2014_spl_solmin_nbe2D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2014_spl_solmin_nbe3D.dat b/src/nuflux/data/IPLEFlux/IPhonda2014_spl_solmin_nbe3D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2014_spl_solmin_nbe3D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2014_spl_solmin_nbe3D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2014_spl_solmin_nbm2D.dat b/src/nuflux/data/IPLEFlux/IPhonda2014_spl_solmin_nbm2D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2014_spl_solmin_nbm2D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2014_spl_solmin_nbm2D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2014_spl_solmin_nbm3D.dat b/src/nuflux/data/IPLEFlux/IPhonda2014_spl_solmin_nbm3D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2014_spl_solmin_nbm3D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2014_spl_solmin_nbm3D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2014_spl_solmin_nue2D.dat b/src/nuflux/data/IPLEFlux/IPhonda2014_spl_solmin_nue2D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2014_spl_solmin_nue2D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2014_spl_solmin_nue2D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2014_spl_solmin_nue3D.dat b/src/nuflux/data/IPLEFlux/IPhonda2014_spl_solmin_nue3D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2014_spl_solmin_nue3D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2014_spl_solmin_nue3D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2014_spl_solmin_num2D.dat b/src/nuflux/data/IPLEFlux/IPhonda2014_spl_solmin_num2D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2014_spl_solmin_num2D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2014_spl_solmin_num2D.dat diff --git a/nuflux/data/IPLEFlux/IPhonda2014_spl_solmin_num3D.dat b/src/nuflux/data/IPLEFlux/IPhonda2014_spl_solmin_num3D.dat similarity index 100% rename from nuflux/data/IPLEFlux/IPhonda2014_spl_solmin_num3D.dat rename to src/nuflux/data/IPLEFlux/IPhonda2014_spl_solmin_num3D.dat diff --git a/nuflux/data/LegacyConventionalFlux/bartol_nue.dat b/src/nuflux/data/LegacyConventionalFlux/bartol_nue.dat similarity index 100% rename from nuflux/data/LegacyConventionalFlux/bartol_nue.dat rename to src/nuflux/data/LegacyConventionalFlux/bartol_nue.dat diff --git a/nuflux/data/LegacyConventionalFlux/bartol_nuebar.dat b/src/nuflux/data/LegacyConventionalFlux/bartol_nuebar.dat similarity index 100% rename from nuflux/data/LegacyConventionalFlux/bartol_nuebar.dat rename to src/nuflux/data/LegacyConventionalFlux/bartol_nuebar.dat diff --git a/nuflux/data/LegacyConventionalFlux/bartol_numu.dat b/src/nuflux/data/LegacyConventionalFlux/bartol_numu.dat similarity index 100% rename from nuflux/data/LegacyConventionalFlux/bartol_numu.dat rename to src/nuflux/data/LegacyConventionalFlux/bartol_numu.dat diff --git a/nuflux/data/LegacyConventionalFlux/bartol_numubar.dat b/src/nuflux/data/LegacyConventionalFlux/bartol_numubar.dat similarity index 100% rename from nuflux/data/LegacyConventionalFlux/bartol_numubar.dat rename to src/nuflux/data/LegacyConventionalFlux/bartol_numubar.dat diff --git a/nuflux/data/LegacyConventionalFlux/honda2006_gaisserH3a_elbert.dat b/src/nuflux/data/LegacyConventionalFlux/honda2006_gaisserH3a_elbert.dat similarity index 100% rename from nuflux/data/LegacyConventionalFlux/honda2006_gaisserH3a_elbert.dat rename to src/nuflux/data/LegacyConventionalFlux/honda2006_gaisserH3a_elbert.dat diff --git a/nuflux/data/LegacyConventionalFlux/honda2006_gaisserH4a_elbert.dat b/src/nuflux/data/LegacyConventionalFlux/honda2006_gaisserH4a_elbert.dat similarity index 100% rename from nuflux/data/LegacyConventionalFlux/honda2006_gaisserH4a_elbert.dat rename to src/nuflux/data/LegacyConventionalFlux/honda2006_gaisserH4a_elbert.dat diff --git a/nuflux/data/LegacyConventionalFlux/honda2006_gst13_elbert.dat b/src/nuflux/data/LegacyConventionalFlux/honda2006_gst13_elbert.dat similarity index 100% rename from nuflux/data/LegacyConventionalFlux/honda2006_gst13_elbert.dat rename to src/nuflux/data/LegacyConventionalFlux/honda2006_gst13_elbert.dat diff --git a/nuflux/data/LegacyConventionalFlux/honda2006_gst13star_elbert.dat b/src/nuflux/data/LegacyConventionalFlux/honda2006_gst13star_elbert.dat similarity index 100% rename from nuflux/data/LegacyConventionalFlux/honda2006_gst13star_elbert.dat rename to src/nuflux/data/LegacyConventionalFlux/honda2006_gst13star_elbert.dat diff --git a/nuflux/data/LegacyConventionalFlux/honda2006_nue.dat b/src/nuflux/data/LegacyConventionalFlux/honda2006_nue.dat similarity index 100% rename from nuflux/data/LegacyConventionalFlux/honda2006_nue.dat rename to src/nuflux/data/LegacyConventionalFlux/honda2006_nue.dat diff --git a/nuflux/data/LegacyConventionalFlux/honda2006_nuebar.dat b/src/nuflux/data/LegacyConventionalFlux/honda2006_nuebar.dat similarity index 100% rename from nuflux/data/LegacyConventionalFlux/honda2006_nuebar.dat rename to src/nuflux/data/LegacyConventionalFlux/honda2006_nuebar.dat diff --git a/nuflux/data/LegacyConventionalFlux/honda2006_numu.dat b/src/nuflux/data/LegacyConventionalFlux/honda2006_numu.dat similarity index 100% rename from nuflux/data/LegacyConventionalFlux/honda2006_numu.dat rename to src/nuflux/data/LegacyConventionalFlux/honda2006_numu.dat diff --git a/nuflux/data/LegacyConventionalFlux/honda2006_numubar.dat b/src/nuflux/data/LegacyConventionalFlux/honda2006_numubar.dat similarity index 100% rename from nuflux/data/LegacyConventionalFlux/honda2006_numubar.dat rename to src/nuflux/data/LegacyConventionalFlux/honda2006_numubar.dat diff --git a/nuflux/data/LegacyConventionalFlux/honda2006_polygonato_mod_elbert.dat b/src/nuflux/data/LegacyConventionalFlux/honda2006_polygonato_mod_elbert.dat similarity index 100% rename from nuflux/data/LegacyConventionalFlux/honda2006_polygonato_mod_elbert.dat rename to src/nuflux/data/LegacyConventionalFlux/honda2006_polygonato_mod_elbert.dat diff --git a/nuflux/data/LegacyPromptFlux/sarcevic_max_gaisserH3a_elbert.dat b/src/nuflux/data/LegacyPromptFlux/sarcevic_max_gaisserH3a_elbert.dat similarity index 100% rename from nuflux/data/LegacyPromptFlux/sarcevic_max_gaisserH3a_elbert.dat rename to src/nuflux/data/LegacyPromptFlux/sarcevic_max_gaisserH3a_elbert.dat diff --git a/nuflux/data/LegacyPromptFlux/sarcevic_max_gaisserH4a_elbert.dat b/src/nuflux/data/LegacyPromptFlux/sarcevic_max_gaisserH4a_elbert.dat similarity index 100% rename from nuflux/data/LegacyPromptFlux/sarcevic_max_gaisserH4a_elbert.dat rename to src/nuflux/data/LegacyPromptFlux/sarcevic_max_gaisserH4a_elbert.dat diff --git a/nuflux/data/LegacyPromptFlux/sarcevic_max_nuebarpro.dat b/src/nuflux/data/LegacyPromptFlux/sarcevic_max_nuebarpro.dat similarity index 100% rename from nuflux/data/LegacyPromptFlux/sarcevic_max_nuebarpro.dat rename to src/nuflux/data/LegacyPromptFlux/sarcevic_max_nuebarpro.dat diff --git a/nuflux/data/LegacyPromptFlux/sarcevic_max_nuepro.dat b/src/nuflux/data/LegacyPromptFlux/sarcevic_max_nuepro.dat similarity index 100% rename from nuflux/data/LegacyPromptFlux/sarcevic_max_nuepro.dat rename to src/nuflux/data/LegacyPromptFlux/sarcevic_max_nuepro.dat diff --git a/nuflux/data/LegacyPromptFlux/sarcevic_max_numubarpro.dat b/src/nuflux/data/LegacyPromptFlux/sarcevic_max_numubarpro.dat similarity index 100% rename from nuflux/data/LegacyPromptFlux/sarcevic_max_numubarpro.dat rename to src/nuflux/data/LegacyPromptFlux/sarcevic_max_numubarpro.dat diff --git a/nuflux/data/LegacyPromptFlux/sarcevic_max_numupro.dat b/src/nuflux/data/LegacyPromptFlux/sarcevic_max_numupro.dat similarity index 100% rename from nuflux/data/LegacyPromptFlux/sarcevic_max_numupro.dat rename to src/nuflux/data/LegacyPromptFlux/sarcevic_max_numupro.dat diff --git a/nuflux/data/LegacyPromptFlux/sarcevic_max_polygonato_mod_elbert.dat b/src/nuflux/data/LegacyPromptFlux/sarcevic_max_polygonato_mod_elbert.dat similarity index 100% rename from nuflux/data/LegacyPromptFlux/sarcevic_max_polygonato_mod_elbert.dat rename to src/nuflux/data/LegacyPromptFlux/sarcevic_max_polygonato_mod_elbert.dat diff --git a/nuflux/data/LegacyPromptFlux/sarcevic_min_gaisserH3a_elbert.dat b/src/nuflux/data/LegacyPromptFlux/sarcevic_min_gaisserH3a_elbert.dat similarity index 100% rename from nuflux/data/LegacyPromptFlux/sarcevic_min_gaisserH3a_elbert.dat rename to src/nuflux/data/LegacyPromptFlux/sarcevic_min_gaisserH3a_elbert.dat diff --git a/nuflux/data/LegacyPromptFlux/sarcevic_min_gaisserH4a_elbert.dat b/src/nuflux/data/LegacyPromptFlux/sarcevic_min_gaisserH4a_elbert.dat similarity index 100% rename from nuflux/data/LegacyPromptFlux/sarcevic_min_gaisserH4a_elbert.dat rename to src/nuflux/data/LegacyPromptFlux/sarcevic_min_gaisserH4a_elbert.dat diff --git a/nuflux/data/LegacyPromptFlux/sarcevic_min_nuebarpro.dat b/src/nuflux/data/LegacyPromptFlux/sarcevic_min_nuebarpro.dat similarity index 100% rename from nuflux/data/LegacyPromptFlux/sarcevic_min_nuebarpro.dat rename to src/nuflux/data/LegacyPromptFlux/sarcevic_min_nuebarpro.dat diff --git a/nuflux/data/LegacyPromptFlux/sarcevic_min_nuepro.dat b/src/nuflux/data/LegacyPromptFlux/sarcevic_min_nuepro.dat similarity index 100% rename from nuflux/data/LegacyPromptFlux/sarcevic_min_nuepro.dat rename to src/nuflux/data/LegacyPromptFlux/sarcevic_min_nuepro.dat diff --git a/nuflux/data/LegacyPromptFlux/sarcevic_min_numubarpro.dat b/src/nuflux/data/LegacyPromptFlux/sarcevic_min_numubarpro.dat similarity index 100% rename from nuflux/data/LegacyPromptFlux/sarcevic_min_numubarpro.dat rename to src/nuflux/data/LegacyPromptFlux/sarcevic_min_numubarpro.dat diff --git a/nuflux/data/LegacyPromptFlux/sarcevic_min_numupro.dat b/src/nuflux/data/LegacyPromptFlux/sarcevic_min_numupro.dat similarity index 100% rename from nuflux/data/LegacyPromptFlux/sarcevic_min_numupro.dat rename to src/nuflux/data/LegacyPromptFlux/sarcevic_min_numupro.dat diff --git a/nuflux/data/LegacyPromptFlux/sarcevic_min_polygonato_mod_elbert.dat b/src/nuflux/data/LegacyPromptFlux/sarcevic_min_polygonato_mod_elbert.dat similarity index 100% rename from nuflux/data/LegacyPromptFlux/sarcevic_min_polygonato_mod_elbert.dat rename to src/nuflux/data/LegacyPromptFlux/sarcevic_min_polygonato_mod_elbert.dat diff --git a/nuflux/data/LegacyPromptFlux/sarcevic_std_gaisserH3a_elbert.dat b/src/nuflux/data/LegacyPromptFlux/sarcevic_std_gaisserH3a_elbert.dat similarity index 100% rename from nuflux/data/LegacyPromptFlux/sarcevic_std_gaisserH3a_elbert.dat rename to src/nuflux/data/LegacyPromptFlux/sarcevic_std_gaisserH3a_elbert.dat diff --git a/nuflux/data/LegacyPromptFlux/sarcevic_std_gaisserH4a_elbert.dat b/src/nuflux/data/LegacyPromptFlux/sarcevic_std_gaisserH4a_elbert.dat similarity index 100% rename from nuflux/data/LegacyPromptFlux/sarcevic_std_gaisserH4a_elbert.dat rename to src/nuflux/data/LegacyPromptFlux/sarcevic_std_gaisserH4a_elbert.dat diff --git a/nuflux/data/LegacyPromptFlux/sarcevic_std_nuebarpro.dat b/src/nuflux/data/LegacyPromptFlux/sarcevic_std_nuebarpro.dat similarity index 100% rename from nuflux/data/LegacyPromptFlux/sarcevic_std_nuebarpro.dat rename to src/nuflux/data/LegacyPromptFlux/sarcevic_std_nuebarpro.dat diff --git a/nuflux/data/LegacyPromptFlux/sarcevic_std_nuepro.dat b/src/nuflux/data/LegacyPromptFlux/sarcevic_std_nuepro.dat similarity index 100% rename from nuflux/data/LegacyPromptFlux/sarcevic_std_nuepro.dat rename to src/nuflux/data/LegacyPromptFlux/sarcevic_std_nuepro.dat diff --git a/nuflux/data/LegacyPromptFlux/sarcevic_std_numubarpro.dat b/src/nuflux/data/LegacyPromptFlux/sarcevic_std_numubarpro.dat similarity index 100% rename from nuflux/data/LegacyPromptFlux/sarcevic_std_numubarpro.dat rename to src/nuflux/data/LegacyPromptFlux/sarcevic_std_numubarpro.dat diff --git a/nuflux/data/LegacyPromptFlux/sarcevic_std_numupro.dat b/src/nuflux/data/LegacyPromptFlux/sarcevic_std_numupro.dat similarity index 100% rename from nuflux/data/LegacyPromptFlux/sarcevic_std_numupro.dat rename to src/nuflux/data/LegacyPromptFlux/sarcevic_std_numupro.dat diff --git a/nuflux/data/LegacyPromptFlux/sarcevic_std_polygonato_mod_elbert.dat b/src/nuflux/data/LegacyPromptFlux/sarcevic_std_polygonato_mod_elbert.dat similarity index 100% rename from nuflux/data/LegacyPromptFlux/sarcevic_std_polygonato_mod_elbert.dat rename to src/nuflux/data/LegacyPromptFlux/sarcevic_std_polygonato_mod_elbert.dat diff --git a/nuflux/data/SplineFlux/BERSS_H3a_central.fits b/src/nuflux/data/SplineFlux/BERSS_H3a_central.fits similarity index 100% rename from nuflux/data/SplineFlux/BERSS_H3a_central.fits rename to src/nuflux/data/SplineFlux/BERSS_H3a_central.fits diff --git a/nuflux/data/SplineFlux/BERSS_H3p_central.fits b/src/nuflux/data/SplineFlux/BERSS_H3p_central.fits similarity index 100% rename from nuflux/data/SplineFlux/BERSS_H3p_central.fits rename to src/nuflux/data/SplineFlux/BERSS_H3p_central.fits diff --git a/nuflux/data/SplineFlux/BERSS_H3p_lower.fits b/src/nuflux/data/SplineFlux/BERSS_H3p_lower.fits similarity index 100% rename from nuflux/data/SplineFlux/BERSS_H3p_lower.fits rename to src/nuflux/data/SplineFlux/BERSS_H3p_lower.fits diff --git a/nuflux/data/SplineFlux/BERSS_H3p_upper.fits b/src/nuflux/data/SplineFlux/BERSS_H3p_upper.fits similarity index 100% rename from nuflux/data/SplineFlux/BERSS_H3p_upper.fits rename to src/nuflux/data/SplineFlux/BERSS_H3p_upper.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL21_K0L_nue.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL21_K0L_nue.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL21_K0L_nue.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL21_K0L_nue.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL21_K0L_nuebar.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL21_K0L_nuebar.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL21_K0L_nuebar.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL21_K0L_nuebar.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL21_K0L_numu.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL21_K0L_numu.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL21_K0L_numu.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL21_K0L_numu.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL21_K0L_numubar.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL21_K0L_numubar.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL21_K0L_numubar.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL21_K0L_numubar.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL21_K0S_nue.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL21_K0S_nue.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL21_K0S_nue.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL21_K0S_nue.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL21_K0S_nuebar.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL21_K0S_nuebar.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL21_K0S_nuebar.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL21_K0S_nuebar.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL21_K0_nue.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL21_K0_nue.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL21_K0_nue.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL21_K0_nue.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL21_K0_nuebar.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL21_K0_nuebar.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL21_K0_nuebar.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL21_K0_nuebar.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL21_K0_numu.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL21_K0_numu.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL21_K0_numu.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL21_K0_numu.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL21_K0_numubar.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL21_K0_numubar.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL21_K0_numubar.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL21_K0_numubar.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL21_conv_nue.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL21_conv_nue.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL21_conv_nue.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL21_conv_nue.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL21_conv_nuebar.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL21_conv_nuebar.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL21_conv_nuebar.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL21_conv_nuebar.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL21_conv_numu.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL21_conv_numu.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL21_conv_numu.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL21_conv_numu.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL21_conv_numubar.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL21_conv_numubar.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL21_conv_numubar.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL21_conv_numubar.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL21_k_nue.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL21_k_nue.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL21_k_nue.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL21_k_nue.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL21_k_nuebar.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL21_k_nuebar.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL21_k_nuebar.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL21_k_nuebar.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL21_k_numu.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL21_k_numu.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL21_k_numu.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL21_k_numu.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL21_k_numubar.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL21_k_numubar.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL21_k_numubar.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL21_k_numubar.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL21_mu_nue.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL21_mu_nue.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL21_mu_nue.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL21_mu_nue.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL21_mu_nuebar.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL21_mu_nuebar.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL21_mu_nuebar.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL21_mu_nuebar.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL21_mu_numu.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL21_mu_numu.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL21_mu_numu.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL21_mu_numu.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL21_mu_numubar.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL21_mu_numubar.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL21_mu_numubar.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL21_mu_numubar.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL21_nue.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL21_nue.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL21_nue.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL21_nue.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL21_nuebar.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL21_nuebar.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL21_nuebar.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL21_nuebar.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL21_numu.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL21_numu.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL21_numu.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL21_numu.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL21_numubar.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL21_numubar.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL21_numubar.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL21_numubar.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL21_pi_nue.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL21_pi_nue.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL21_pi_nue.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL21_pi_nue.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL21_pi_nuebar.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL21_pi_nuebar.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL21_pi_nuebar.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL21_pi_nuebar.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL21_pi_numu.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL21_pi_numu.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL21_pi_numu.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL21_pi_numu.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL21_pi_numubar.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL21_pi_numubar.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL21_pi_numubar.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL21_pi_numubar.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0L_nue.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0L_nue.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0L_nue.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0L_nue.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0L_nuebar.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0L_nuebar.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0L_nuebar.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0L_nuebar.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0L_numu.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0L_numu.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0L_numu.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0L_numu.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0L_numubar.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0L_numubar.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0L_numubar.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0L_numubar.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0S_nue.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0S_nue.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0S_nue.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0S_nue.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0S_nuebar.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0S_nuebar.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0S_nuebar.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0S_nuebar.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0_nue.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0_nue.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0_nue.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0_nue.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0_nuebar.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0_nuebar.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0_nuebar.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0_nuebar.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0_numu.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0_numu.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0_numu.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0_numu.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0_numubar.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0_numubar.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0_numubar.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_K0_numubar.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_conv_nue.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_conv_nue.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_conv_nue.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_conv_nue.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_conv_nuebar.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_conv_nuebar.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_conv_nuebar.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_conv_nuebar.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_conv_numu.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_conv_numu.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_conv_numu.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_conv_numu.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_conv_numubar.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_conv_numubar.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_conv_numubar.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_conv_numubar.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_k_nue.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_k_nue.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_k_nue.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_k_nue.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_k_nuebar.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_k_nuebar.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_k_nuebar.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_k_nuebar.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_k_numu.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_k_numu.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_k_numu.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_k_numu.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_k_numubar.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_k_numubar.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_k_numubar.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_k_numubar.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_mu_nue.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_mu_nue.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_mu_nue.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_mu_nue.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_mu_nuebar.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_mu_nuebar.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_mu_nuebar.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_mu_nuebar.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_mu_numu.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_mu_numu.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_mu_numu.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_mu_numu.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_mu_numubar.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_mu_numubar.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_mu_numubar.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_mu_numubar.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_nue.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_nue.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_nue.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_nue.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_nuebar.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_nuebar.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_nuebar.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_nuebar.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_numu.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_numu.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_numu.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_numu.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_numubar.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_numubar.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_numubar.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_numubar.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_nutau.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_nutau.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_nutau.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_nutau.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_nutaubar.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_nutaubar.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_nutaubar.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_nutaubar.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_pi_nue.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_pi_nue.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_pi_nue.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_pi_nue.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_pi_nuebar.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_pi_nuebar.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_pi_nuebar.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_pi_nuebar.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_pi_numu.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_pi_numu.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_pi_numu.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_pi_numu.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_pi_numubar.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_pi_numubar.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_pi_numubar.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_pi_numubar.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_pr_nue.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_pr_nue.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_pr_nue.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_pr_nue.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_pr_nuebar.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_pr_nuebar.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_pr_nuebar.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_pr_nuebar.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_pr_numu.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_pr_numu.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_pr_numu.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_pr_numu.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_pr_numubar.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_pr_numubar.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_pr_numubar.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_pr_numubar.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_pr_nutau.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_pr_nutau.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_pr_nutau.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_pr_nutau.fits diff --git a/nuflux/data/SplineFlux2/H3a_SIBYLL23C_pr_nutaubar.fits b/src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_pr_nutaubar.fits similarity index 100% rename from nuflux/data/SplineFlux2/H3a_SIBYLL23C_pr_nutaubar.fits rename to src/nuflux/data/SplineFlux2/H3a_SIBYLL23C_pr_nutaubar.fits diff --git a/src/nuflux/data/meson.build b/src/nuflux/data/meson.build new file mode 100644 index 0000000..ce5b01a --- /dev/null +++ b/src/nuflux/data/meson.build @@ -0,0 +1,180 @@ +data_files = { + 'ANFlux':files( + 'ANFlux/CORSIKA_GaisserH3a_QGSJET-II_nue.fits', + 'ANFlux/CORSIKA_GaisserH3a_QGSJET-II_numu.fits', + 'ANFlux/CORSIKA_GaisserH3a_SIBYLL-2.1_nue.fits', + 'ANFlux/CORSIKA_GaisserH3a_SIBYLL-2.1_numu.fits', + 'ANFlux/CORSIKA_GaisserH3a_average_nue.fits', + 'ANFlux/CORSIKA_GaisserH3a_average_numu.fits', + ), + 'IPLEFlux': files( + 'IPLEFlux/IPhonda2006_sno_solmin_nbe2D.dat', + 'IPLEFlux/IPhonda2006_sno_solmin_nbe3D.dat', + 'IPLEFlux/IPhonda2006_sno_solmin_nbm2D.dat', + 'IPLEFlux/IPhonda2006_sno_solmin_nbm3D.dat', + 'IPLEFlux/IPhonda2006_sno_solmin_nue2D.dat', + 'IPLEFlux/IPhonda2006_sno_solmin_nue3D.dat', + 'IPLEFlux/IPhonda2006_sno_solmin_num2D.dat', + 'IPLEFlux/IPhonda2006_sno_solmin_num3D.dat', + 'IPLEFlux/IPhonda2014_sk_solmax_nbe2D.dat', + 'IPLEFlux/IPhonda2014_sk_solmax_nbe3D.dat', + 'IPLEFlux/IPhonda2014_sk_solmax_nbm2D.dat', + 'IPLEFlux/IPhonda2014_sk_solmax_nbm3D.dat', + 'IPLEFlux/IPhonda2014_sk_solmax_nue2D.dat', + 'IPLEFlux/IPhonda2014_sk_solmax_nue3D.dat', + 'IPLEFlux/IPhonda2014_sk_solmax_num2D.dat', + 'IPLEFlux/IPhonda2014_sk_solmax_num3D.dat', + 'IPLEFlux/IPhonda2014_sk_solmin_nbe2D.dat', + 'IPLEFlux/IPhonda2014_sk_solmin_nbe3D.dat', + 'IPLEFlux/IPhonda2014_sk_solmin_nbm2D.dat', + 'IPLEFlux/IPhonda2014_sk_solmin_nbm3D.dat', + 'IPLEFlux/IPhonda2014_sk_solmin_nue2D.dat', + 'IPLEFlux/IPhonda2014_sk_solmin_nue3D.dat', + 'IPLEFlux/IPhonda2014_sk_solmin_num2D.dat', + 'IPLEFlux/IPhonda2014_sk_solmin_num3D.dat', + 'IPLEFlux/IPhonda2014_spl_solmax_nbe2D.dat', + 'IPLEFlux/IPhonda2014_spl_solmax_nbe3D.dat', + 'IPLEFlux/IPhonda2014_spl_solmax_nbm2D.dat', + 'IPLEFlux/IPhonda2014_spl_solmax_nbm3D.dat', + 'IPLEFlux/IPhonda2014_spl_solmax_nue2D.dat', + 'IPLEFlux/IPhonda2014_spl_solmax_nue3D.dat', + 'IPLEFlux/IPhonda2014_spl_solmax_num2D.dat', + 'IPLEFlux/IPhonda2014_spl_solmax_num3D.dat', + 'IPLEFlux/IPhonda2014_spl_solmin_nbe2D.dat', + 'IPLEFlux/IPhonda2014_spl_solmin_nbe3D.dat', + 'IPLEFlux/IPhonda2014_spl_solmin_nbm2D.dat', + 'IPLEFlux/IPhonda2014_spl_solmin_nbm3D.dat', + 'IPLEFlux/IPhonda2014_spl_solmin_nue2D.dat', + 'IPLEFlux/IPhonda2014_spl_solmin_nue3D.dat', + 'IPLEFlux/IPhonda2014_spl_solmin_num2D.dat', + 'IPLEFlux/IPhonda2014_spl_solmin_num3D.dat', + ), + 'LegacyConventionalFlux':files( + 'LegacyConventionalFlux/bartol_nue.dat', + 'LegacyConventionalFlux/bartol_nuebar.dat', + 'LegacyConventionalFlux/bartol_numu.dat', + 'LegacyConventionalFlux/bartol_numubar.dat', + 'LegacyConventionalFlux/honda2006_gaisserH3a_elbert.dat', + 'LegacyConventionalFlux/honda2006_gaisserH4a_elbert.dat', + 'LegacyConventionalFlux/honda2006_gst13_elbert.dat', + 'LegacyConventionalFlux/honda2006_gst13star_elbert.dat', + 'LegacyConventionalFlux/honda2006_nue.dat', + 'LegacyConventionalFlux/honda2006_nuebar.dat', + 'LegacyConventionalFlux/honda2006_numu.dat', + 'LegacyConventionalFlux/honda2006_numubar.dat', + 'LegacyConventionalFlux/honda2006_polygonato_mod_elbert.dat', + ), + 'LegacyPromptFlux': files( + 'LegacyPromptFlux/sarcevic_max_gaisserH3a_elbert.dat', + 'LegacyPromptFlux/sarcevic_max_gaisserH4a_elbert.dat', + 'LegacyPromptFlux/sarcevic_max_nuebarpro.dat', + 'LegacyPromptFlux/sarcevic_max_nuepro.dat', + 'LegacyPromptFlux/sarcevic_max_numubarpro.dat', + 'LegacyPromptFlux/sarcevic_max_numupro.dat', + 'LegacyPromptFlux/sarcevic_max_polygonato_mod_elbert.dat', + 'LegacyPromptFlux/sarcevic_min_gaisserH3a_elbert.dat', + 'LegacyPromptFlux/sarcevic_min_gaisserH4a_elbert.dat', + 'LegacyPromptFlux/sarcevic_min_nuebarpro.dat', + 'LegacyPromptFlux/sarcevic_min_nuepro.dat', + 'LegacyPromptFlux/sarcevic_min_numubarpro.dat', + 'LegacyPromptFlux/sarcevic_min_numupro.dat', + 'LegacyPromptFlux/sarcevic_min_polygonato_mod_elbert.dat', + 'LegacyPromptFlux/sarcevic_std_gaisserH3a_elbert.dat', + 'LegacyPromptFlux/sarcevic_std_gaisserH4a_elbert.dat', + 'LegacyPromptFlux/sarcevic_std_nuebarpro.dat', + 'LegacyPromptFlux/sarcevic_std_nuepro.dat', + 'LegacyPromptFlux/sarcevic_std_numubarpro.dat', + 'LegacyPromptFlux/sarcevic_std_numupro.dat', + 'LegacyPromptFlux/sarcevic_std_polygonato_mod_elbert.dat', + ), + 'SplineFlux':files( + 'SplineFlux/BERSS_H3a_central.fits', + 'SplineFlux/BERSS_H3p_central.fits', + 'SplineFlux/BERSS_H3p_lower.fits', + 'SplineFlux/BERSS_H3p_upper.fits', + ), + 'SplineFlux2':files( + 'SplineFlux2/H3a_SIBYLL21_K0L_nue.fits', + 'SplineFlux2/H3a_SIBYLL21_K0L_nuebar.fits', + 'SplineFlux2/H3a_SIBYLL21_K0L_numu.fits', + 'SplineFlux2/H3a_SIBYLL21_K0L_numubar.fits', + 'SplineFlux2/H3a_SIBYLL21_K0S_nue.fits', + 'SplineFlux2/H3a_SIBYLL21_K0S_nuebar.fits', + 'SplineFlux2/H3a_SIBYLL21_K0_nue.fits', + 'SplineFlux2/H3a_SIBYLL21_K0_nuebar.fits', + 'SplineFlux2/H3a_SIBYLL21_K0_numu.fits', + 'SplineFlux2/H3a_SIBYLL21_K0_numubar.fits', + 'SplineFlux2/H3a_SIBYLL21_conv_nue.fits', + 'SplineFlux2/H3a_SIBYLL21_conv_nuebar.fits', + 'SplineFlux2/H3a_SIBYLL21_conv_numu.fits', + 'SplineFlux2/H3a_SIBYLL21_conv_numubar.fits', + 'SplineFlux2/H3a_SIBYLL21_k_nue.fits', + 'SplineFlux2/H3a_SIBYLL21_k_nuebar.fits', + 'SplineFlux2/H3a_SIBYLL21_k_numu.fits', + 'SplineFlux2/H3a_SIBYLL21_k_numubar.fits', + 'SplineFlux2/H3a_SIBYLL21_mu_nue.fits', + 'SplineFlux2/H3a_SIBYLL21_mu_nuebar.fits', + 'SplineFlux2/H3a_SIBYLL21_mu_numu.fits', + 'SplineFlux2/H3a_SIBYLL21_mu_numubar.fits', + 'SplineFlux2/H3a_SIBYLL21_nue.fits', + 'SplineFlux2/H3a_SIBYLL21_nuebar.fits', + 'SplineFlux2/H3a_SIBYLL21_numu.fits', + 'SplineFlux2/H3a_SIBYLL21_numubar.fits', + 'SplineFlux2/H3a_SIBYLL21_pi_nue.fits', + 'SplineFlux2/H3a_SIBYLL21_pi_nuebar.fits', + 'SplineFlux2/H3a_SIBYLL21_pi_numu.fits', + 'SplineFlux2/H3a_SIBYLL21_pi_numubar.fits', + 'SplineFlux2/H3a_SIBYLL23C_K0L_nue.fits', + 'SplineFlux2/H3a_SIBYLL23C_K0L_nuebar.fits', + 'SplineFlux2/H3a_SIBYLL23C_K0L_numu.fits', + 'SplineFlux2/H3a_SIBYLL23C_K0L_numubar.fits', + 'SplineFlux2/H3a_SIBYLL23C_K0S_nue.fits', + 'SplineFlux2/H3a_SIBYLL23C_K0S_nuebar.fits', + 'SplineFlux2/H3a_SIBYLL23C_K0_nue.fits', + 'SplineFlux2/H3a_SIBYLL23C_K0_nuebar.fits', + 'SplineFlux2/H3a_SIBYLL23C_K0_numu.fits', + 'SplineFlux2/H3a_SIBYLL23C_K0_numubar.fits', + 'SplineFlux2/H3a_SIBYLL23C_conv_nue.fits', + 'SplineFlux2/H3a_SIBYLL23C_conv_nuebar.fits', + 'SplineFlux2/H3a_SIBYLL23C_conv_numu.fits', + 'SplineFlux2/H3a_SIBYLL23C_conv_numubar.fits', + 'SplineFlux2/H3a_SIBYLL23C_k_nue.fits', + 'SplineFlux2/H3a_SIBYLL23C_k_nuebar.fits', + 'SplineFlux2/H3a_SIBYLL23C_k_numu.fits', + 'SplineFlux2/H3a_SIBYLL23C_k_numubar.fits', + 'SplineFlux2/H3a_SIBYLL23C_mu_nue.fits', + 'SplineFlux2/H3a_SIBYLL23C_mu_nuebar.fits', + 'SplineFlux2/H3a_SIBYLL23C_mu_numu.fits', + 'SplineFlux2/H3a_SIBYLL23C_mu_numubar.fits', + 'SplineFlux2/H3a_SIBYLL23C_nue.fits', + 'SplineFlux2/H3a_SIBYLL23C_nuebar.fits', + 'SplineFlux2/H3a_SIBYLL23C_numu.fits', + 'SplineFlux2/H3a_SIBYLL23C_numubar.fits', + 'SplineFlux2/H3a_SIBYLL23C_nutau.fits', + 'SplineFlux2/H3a_SIBYLL23C_nutaubar.fits', + 'SplineFlux2/H3a_SIBYLL23C_pi_nue.fits', + 'SplineFlux2/H3a_SIBYLL23C_pi_nuebar.fits', + 'SplineFlux2/H3a_SIBYLL23C_pi_numu.fits', + 'SplineFlux2/H3a_SIBYLL23C_pi_numubar.fits', + 'SplineFlux2/H3a_SIBYLL23C_pr_nue.fits', + 'SplineFlux2/H3a_SIBYLL23C_pr_nuebar.fits', + 'SplineFlux2/H3a_SIBYLL23C_pr_numu.fits', + 'SplineFlux2/H3a_SIBYLL23C_pr_numubar.fits', + 'SplineFlux2/H3a_SIBYLL23C_pr_nutau.fits', + 'SplineFlux2/H3a_SIBYLL23C_pr_nutaubar.fits', + ) +} + +if not get_option('pymodule') + test_env = {'NUFLUX_DATA': meson.current_source_dir()} + if get_option('install_data') + foreach d, f: data_files + install_subdir(d, install_dir:datadir) + endforeach + endif +else + test_env = {} + foreach d, f: data_files + python.install_sources(f, subdir: 'nuflux/data/' + d) + endforeach +endif diff --git a/src/pybindings/detail.cxx b/src/pybindings/detail.cxx index e2bf000..d0f4d7c 100644 --- a/src/pybindings/detail.cxx +++ b/src/pybindings/detail.cxx @@ -1,15 +1,15 @@ #include +#include #include +namespace fs = std::filesystem; namespace bp = boost::python; namespace nuflux{ namespace detail{ std::string getDataPath(std::string fname){ - bp::object pkg_resources = bp::import("pkg_resources"); - bp::object resource_filename = pkg_resources.attr("resource_filename"); - std::string path = bp::extract(resource_filename("nuflux","data/"+fname)); - return path; + std::string basedir = bp::extract(bp::import("nuflux").attr("__file__")); + return fs::path(basedir).parent_path() / "data" / fname; } } } diff --git a/src/pybindings/meson.build b/src/pybindings/meson.build new file mode 100644 index 0000000..f07dbe6 --- /dev/null +++ b/src/pybindings/meson.build @@ -0,0 +1,56 @@ +cppcomp = meson.get_compiler('cpp') +pymod = import('python') +python = pymod.find_installation(get_option('python'), required: false, pure: false) +test_python = false + +if not python.found() + warning('Can\'t find python: "' + get_option('python') + '", skipping python build') +else + pydep = python.dependency() + module_inc = [inc] + + # Find numpy + numpy = run_command( + python,'-c', + 'import importlib.util,os;print(os.path.join(importlib.util.find_spec("numpy").submodule_search_locations[0],"core","include"))', + check: true, + ) + if numpy.returncode()==0 + module_inc += include_directories(numpy.stdout().strip()) + message ('Numpy found: '+ numpy.stdout().strip()) + else + warning ('Numpy not found: building without arrays') + endif + + python_name = 'python' + ''.join(python.language_version().split('.')) + boost = dependency('boost', modules: [python_name]) + + if not boost.found() + warning( 'Can\'t find boost python, Skipping python build') + else + message('Building package for python version ' + + python.language_version() + ': ' + python.get_install_dir()) + python.install_sources(init_file, subdir: 'nuflux') + + pysrc = ['module.cxx'] + pymodule_link = [] + if get_option('pymodule') + pysrc += lib_src + pysrc += 'detail.cxx' + module_inc += configuration_inc + else + pymodule_link += libnuflux + endif + + pymodule = python.extension_module( + '_nuflux', + pysrc, + include_directories: module_inc, + dependencies: [photospline, pydep, boost], + link_with: pymodule_link, + cpp_args: '-Wno-deprecated', + install: true) + + test_python = true + endif +endif diff --git a/src/pybindings/module.cxx b/src/pybindings/module.cxx index d75dde3..5486cf7 100644 --- a/src/pybindings/module.cxx +++ b/src/pybindings/module.cxx @@ -100,10 +100,12 @@ register_FluxFunction() { using namespace nuflux; + bp::def("getVersion", &getVersion, "Get the current nuflux version"); bp::def("makeFlux", &makeFlux, "Instantiate and return a flux model"); bp::def("availableFluxes", &available_fluxes_list, "Get a list of valid flux model names"); bp::def("kneesForFlux", &knees_for_flux_list, "Get a list of valid knee-reweighting scheme names for the given model"); bp::def("printModels", &printModels, "Print a list of models to stdout"); + bp::def("dataPath", &detail::getDataPath, "Print the data path for a given model"); bp::class_, boost::noncopyable>("FluxFunction", bp::no_init) .def("getFlux", diff --git a/tests/meson.build b/tests/meson.build index 47eea12..60f01c6 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -1,29 +1,40 @@ -test_env = {'NUFLUX_DATA': meson.project_source_root()+'/nuflux/data'} -test( - 'test_basic', - executable('test_basic', - 'test_basic.cxx', - dependencies: [photospline,cfitsio], - include_directories: inc, - link_with: libnuflux - ), - env: test_env, -) +if not get_option('pymodule') + test( + 'test_basic', + executable('test_basic', + 'test_basic.cxx', + dependencies: [photospline,cfitsio], + include_directories: inc, + link_with: libnuflux + ), + env: test_env, + ) -test( - 'readme', - executable( - 'README', - custom_target( - input: ['../README.md'], - output: ['README.cxx'], - command: ['awk', '/END CODE/ {p=0};p;/BEGIN CODE/ {p=1}','@INPUT@'], - capture: true, + test( + 'readme', + executable( + 'README', + custom_target( + input: ['../README.md'], + output: ['README.cxx'], + command: ['awk', '/END CODE/ {p=0};p;/BEGIN CODE/ {p=1}','@INPUT@'], + capture: true, + ), + dependencies: [photospline,cfitsio], + include_directories: inc, + link_with: libnuflux ), - dependencies: [photospline,cfitsio], - include_directories: inc, - link_with: libnuflux - ), - env: test_env, -) -meson.add_devenv(test_env) + env: test_env, + ) + meson.add_devenv(test_env) +endif + +if test_python + fs = import('fs') + pytest_env = environment(test_env) + pytest_env.append('PYTHONPATH', meson.source_root() + '/src') + pytest_env.append('PYTHONPATH', fs.parent(pymodule.full_path())) + test('test_fluxes', find_program('test_fluxes.py'), env: pytest_env) + test('doctest', python, args: ['-m', 'doctest', files('../README.md')], env: pytest_env) + meson.add_devenv(pytest_env) +endif \ No newline at end of file diff --git a/tests/test_fluxes.py b/tests/test_fluxes.py index f29b0b9..203723d 100755 --- a/tests/test_fluxes.py +++ b/tests/test_fluxes.py @@ -26,7 +26,7 @@ def compare_fluxes(subtests, data, energies): for nu_str, nu in nuflux.ParticleType.names.items(): with subtests.test(model=model, knee=knee, nu=nu_str): if nu_str in y: - np.testing.assert_allclose(flux.getFlux(nu, E, cz), y[nu_str], rtol=1e-13) + np.testing.assert_allclose(flux.getFlux(nu, E, cz), y[nu_str], rtol=1e-13, atol=1e-13) else: np.testing.assert_array_equal(flux.getFlux(nu, E, cz), 0) assert flux.getFlux(nu, np.nextafter(emin, -np.inf), 0) == 0