diff --git a/dev/numpy/demand_array.pkl b/dev/numpy/demand_array.pkl new file mode 100644 index 0000000..7a89872 Binary files /dev/null and b/dev/numpy/demand_array.pkl differ diff --git a/dev/numpy/environment.yaml b/dev/numpy/environment.yaml new file mode 100644 index 0000000..89360ce --- /dev/null +++ b/dev/numpy/environment.yaml @@ -0,0 +1,10 @@ +name: numpy +channels: + - conda-forge + - nodefaults +dependencies: + - python=3.12 + - pandas=2.2.2 # https://anaconda.org/conda-forge/pandas/files + - scipy=1.13.1 # https://anaconda.org/conda-forge/scipy/files + - numpy=2.0.0 # https://anaconda.org/conda-forge/numpy/files + - jupyterlab \ No newline at end of file diff --git a/dev/numpy/numpy_2_apple_silicon.ipynb b/dev/numpy/numpy_2_apple_silicon.ipynb new file mode 100644 index 0000000..f79a94d --- /dev/null +++ b/dev/numpy/numpy_2_apple_silicon.ipynb @@ -0,0 +1,538 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Build Dependencies:\n", + " blas:\n", + " detection method: pkgconfig\n", + " found: true\n", + " include directory: /opt/homebrew/Caskroom/miniconda/base/envs/main/include\n", + " lib directory: /opt/homebrew/Caskroom/miniconda/base/envs/main/lib\n", + " name: blas\n", + " openblas configuration: unknown\n", + " pc file directory: /opt/homebrew/Caskroom/miniconda/base/envs/main/lib/pkgconfig\n", + " version: 3.9.0\n", + " lapack:\n", + " detection method: internal\n", + " found: true\n", + " include directory: unknown\n", + " lib directory: unknown\n", + " name: dep4377784592\n", + " openblas configuration: unknown\n", + " pc file directory: unknown\n", + " version: 1.26.4\n", + "Compilers:\n", + " c:\n", + " args: -ftree-vectorize, -fPIC, -fstack-protector-strong, -O2, -pipe, -isystem,\n", + " /opt/homebrew/Caskroom/miniconda/base/envs/main/include, -fdebug-prefix-map=/Users/runner/miniforge3/conda-bld/numpy_1707225640867/work=/usr/local/src/conda/numpy-1.26.4,\n", + " -fdebug-prefix-map=/opt/homebrew/Caskroom/miniconda/base/envs/main=/usr/local/src/conda-prefix,\n", + " -D_FORTIFY_SOURCE=2, -isystem, /opt/homebrew/Caskroom/miniconda/base/envs/main/include,\n", + " -mmacosx-version-min=11.0\n", + " commands: arm64-apple-darwin20.0.0-clang\n", + " linker: ld64\n", + " linker args: -Wl,-headerpad_max_install_names, -Wl,-dead_strip_dylibs, -Wl,-rpath,/opt/homebrew/Caskroom/miniconda/base/envs/main/lib,\n", + " -L/opt/homebrew/Caskroom/miniconda/base/envs/main/lib, -ftree-vectorize, -fPIC,\n", + " -fstack-protector-strong, -O2, -pipe, -isystem, /opt/homebrew/Caskroom/miniconda/base/envs/main/include,\n", + " -fdebug-prefix-map=/Users/runner/miniforge3/conda-bld/numpy_1707225640867/work=/usr/local/src/conda/numpy-1.26.4,\n", + " -fdebug-prefix-map=/opt/homebrew/Caskroom/miniconda/base/envs/main=/usr/local/src/conda-prefix,\n", + " -D_FORTIFY_SOURCE=2, -isystem, /opt/homebrew/Caskroom/miniconda/base/envs/main/include,\n", + " -mmacosx-version-min=11.0\n", + " name: clang\n", + " version: 16.0.6\n", + " c++:\n", + " args: -ftree-vectorize, -fPIC, -fstack-protector-strong, -O2, -pipe, -stdlib=libc++,\n", + " -fvisibility-inlines-hidden, -fmessage-length=0, -isystem, /opt/homebrew/Caskroom/miniconda/base/envs/main/include,\n", + " -fdebug-prefix-map=/Users/runner/miniforge3/conda-bld/numpy_1707225640867/work=/usr/local/src/conda/numpy-1.26.4,\n", + " -fdebug-prefix-map=/opt/homebrew/Caskroom/miniconda/base/envs/main=/usr/local/src/conda-prefix,\n", + " -D_FORTIFY_SOURCE=2, -isystem, /opt/homebrew/Caskroom/miniconda/base/envs/main/include,\n", + " -mmacosx-version-min=11.0\n", + " commands: arm64-apple-darwin20.0.0-clang++\n", + " linker: ld64\n", + " linker args: -Wl,-headerpad_max_install_names, -Wl,-dead_strip_dylibs, -Wl,-rpath,/opt/homebrew/Caskroom/miniconda/base/envs/main/lib,\n", + " -L/opt/homebrew/Caskroom/miniconda/base/envs/main/lib, -ftree-vectorize, -fPIC,\n", + " -fstack-protector-strong, -O2, -pipe, -stdlib=libc++, -fvisibility-inlines-hidden,\n", + " -fmessage-length=0, -isystem, /opt/homebrew/Caskroom/miniconda/base/envs/main/include,\n", + " -fdebug-prefix-map=/Users/runner/miniforge3/conda-bld/numpy_1707225640867/work=/usr/local/src/conda/numpy-1.26.4,\n", + " -fdebug-prefix-map=/opt/homebrew/Caskroom/miniconda/base/envs/main=/usr/local/src/conda-prefix,\n", + " -D_FORTIFY_SOURCE=2, -isystem, /opt/homebrew/Caskroom/miniconda/base/envs/main/include,\n", + " -mmacosx-version-min=11.0\n", + " name: clang\n", + " version: 16.0.6\n", + " cython:\n", + " commands: cython\n", + " linker: cython\n", + " name: cython\n", + " version: 3.0.8\n", + "Machine Information:\n", + " build:\n", + " cpu: aarch64\n", + " endian: little\n", + " family: aarch64\n", + " system: darwin\n", + " cross-compiled: true\n", + " host:\n", + " cpu: arm64\n", + " endian: little\n", + " family: aarch64\n", + " system: darwin\n", + "Python Information:\n", + " path: /opt/homebrew/Caskroom/miniconda/base/envs/main/bin/python\n", + " version: '3.11'\n", + "SIMD Extensions:\n", + " baseline:\n", + " - NEON\n", + " - NEON_FP16\n", + " - NEON_VFPV4\n", + " - ASIMD\n", + " found:\n", + " - ASIMDHP\n", + " not found:\n", + " - ASIMDFHM\n", + "\n" + ] + } + ], + "source": [ + "np.show_config()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "import scipy as sp" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Build Dependencies:\n", + " blas:\n", + " detection method: pkgconfig\n", + " found: true\n", + " include directory: /opt/homebrew/Caskroom/miniconda/base/envs/main/include\n", + " lib directory: /opt/homebrew/Caskroom/miniconda/base/envs/main/lib\n", + " name: blas\n", + " openblas configuration: unknown\n", + " pc file directory: /opt/homebrew/Caskroom/miniconda/base/envs/main/lib/pkgconfig\n", + " version: 3.9.0\n", + " lapack:\n", + " detection method: pkgconfig\n", + " found: true\n", + " include directory: /opt/homebrew/Caskroom/miniconda/base/envs/main/include\n", + " lib directory: /opt/homebrew/Caskroom/miniconda/base/envs/main/lib\n", + " name: lapack\n", + " openblas configuration: unknown\n", + " pc file directory: /opt/homebrew/Caskroom/miniconda/base/envs/main/lib/pkgconfig\n", + " version: 3.9.0\n", + " pybind11:\n", + " detection method: pkgconfig\n", + " include directory: /opt/homebrew/Caskroom/miniconda/base/envs/main/include\n", + " name: pybind11\n", + " version: 2.11.1\n", + "Compilers:\n", + " c:\n", + " args: -ftree-vectorize, -fPIC, -fstack-protector-strong, -O2, -pipe, -isystem,\n", + " /opt/homebrew/Caskroom/miniconda/base/envs/main/include, -fdebug-prefix-map=/Users/runner/miniforge3/conda-bld/scipy-split_1706041548403/work=/usr/local/src/conda/scipy-split-1.12.0,\n", + " -fdebug-prefix-map=/opt/homebrew/Caskroom/miniconda/base/envs/main=/usr/local/src/conda-prefix,\n", + " -D_FORTIFY_SOURCE=2, -isystem, /opt/homebrew/Caskroom/miniconda/base/envs/main/include,\n", + " -mmacosx-version-min=11.0\n", + " commands: arm64-apple-darwin20.0.0-clang\n", + " linker: ld64\n", + " linker args: -Wl,-headerpad_max_install_names, -Wl,-dead_strip_dylibs, -Wl,-rpath,/opt/homebrew/Caskroom/miniconda/base/envs/main/lib,\n", + " -L/opt/homebrew/Caskroom/miniconda/base/envs/main/lib, -ftree-vectorize, -fPIC,\n", + " -fstack-protector-strong, -O2, -pipe, -isystem, /opt/homebrew/Caskroom/miniconda/base/envs/main/include,\n", + " -fdebug-prefix-map=/Users/runner/miniforge3/conda-bld/scipy-split_1706041548403/work=/usr/local/src/conda/scipy-split-1.12.0,\n", + " -fdebug-prefix-map=/opt/homebrew/Caskroom/miniconda/base/envs/main=/usr/local/src/conda-prefix,\n", + " -D_FORTIFY_SOURCE=2, -isystem, /opt/homebrew/Caskroom/miniconda/base/envs/main/include,\n", + " -mmacosx-version-min=11.0\n", + " name: clang\n", + " version: 16.0.6\n", + " c++:\n", + " args: -ftree-vectorize, -fPIC, -fstack-protector-strong, -O2, -pipe, -stdlib=libc++,\n", + " -fvisibility-inlines-hidden, -fmessage-length=0, -isystem, /opt/homebrew/Caskroom/miniconda/base/envs/main/include,\n", + " -fdebug-prefix-map=/Users/runner/miniforge3/conda-bld/scipy-split_1706041548403/work=/usr/local/src/conda/scipy-split-1.12.0,\n", + " -fdebug-prefix-map=/opt/homebrew/Caskroom/miniconda/base/envs/main=/usr/local/src/conda-prefix,\n", + " -D_FORTIFY_SOURCE=2, -isystem, /opt/homebrew/Caskroom/miniconda/base/envs/main/include,\n", + " -mmacosx-version-min=11.0\n", + " commands: arm64-apple-darwin20.0.0-clang++\n", + " linker: ld64\n", + " linker args: -Wl,-headerpad_max_install_names, -Wl,-dead_strip_dylibs, -Wl,-rpath,/opt/homebrew/Caskroom/miniconda/base/envs/main/lib,\n", + " -L/opt/homebrew/Caskroom/miniconda/base/envs/main/lib, -ftree-vectorize, -fPIC,\n", + " -fstack-protector-strong, -O2, -pipe, -stdlib=libc++, -fvisibility-inlines-hidden,\n", + " -fmessage-length=0, -isystem, /opt/homebrew/Caskroom/miniconda/base/envs/main/include,\n", + " -fdebug-prefix-map=/Users/runner/miniforge3/conda-bld/scipy-split_1706041548403/work=/usr/local/src/conda/scipy-split-1.12.0,\n", + " -fdebug-prefix-map=/opt/homebrew/Caskroom/miniconda/base/envs/main=/usr/local/src/conda-prefix,\n", + " -D_FORTIFY_SOURCE=2, -isystem, /opt/homebrew/Caskroom/miniconda/base/envs/main/include,\n", + " -mmacosx-version-min=11.0\n", + " name: clang\n", + " version: 16.0.6\n", + " cython:\n", + " commands: cython\n", + " linker: cython\n", + " name: cython\n", + " version: 3.0.7\n", + " fortran:\n", + " args: -march=armv8.3-a, -ftree-vectorize, -fPIC, -fno-stack-protector, -O2, -pipe,\n", + " -isystem, /opt/homebrew/Caskroom/miniconda/base/envs/main/include, -fdebug-prefix-map=/Users/runner/miniforge3/conda-bld/scipy-split_1706041548403/work=/usr/local/src/conda/scipy-split-1.12.0,\n", + " -fdebug-prefix-map=/opt/homebrew/Caskroom/miniconda/base/envs/main=/usr/local/src/conda-prefix\n", + " commands: /Users/runner/miniforge3/conda-bld/scipy-split_1706041548403/_build_env/bin/arm64-apple-darwin20.0.0-gfortran\n", + " linker: ld64\n", + " linker args: -Wl,-headerpad_max_install_names, -Wl,-dead_strip_dylibs, -Wl,-rpath,/opt/homebrew/Caskroom/miniconda/base/envs/main/lib,\n", + " -L/opt/homebrew/Caskroom/miniconda/base/envs/main/lib, -march=armv8.3-a, -ftree-vectorize,\n", + " -fPIC, -fno-stack-protector, -O2, -pipe, -isystem, /opt/homebrew/Caskroom/miniconda/base/envs/main/include,\n", + " -fdebug-prefix-map=/Users/runner/miniforge3/conda-bld/scipy-split_1706041548403/work=/usr/local/src/conda/scipy-split-1.12.0,\n", + " -fdebug-prefix-map=/opt/homebrew/Caskroom/miniconda/base/envs/main=/usr/local/src/conda-prefix\n", + " name: gcc\n", + " version: 12.3.0\n", + " pythran:\n", + " include directory: ../../_build_env/venv/lib/python3.11/site-packages/pythran\n", + " version: 0.15.0\n", + "Machine Information:\n", + " build:\n", + " cpu: x86_64\n", + " endian: little\n", + " family: x86_64\n", + " system: darwin\n", + " cross-compiled: true\n", + " host:\n", + " cpu: arm64\n", + " endian: little\n", + " family: aarch64\n", + " system: darwin\n", + "Python Information:\n", + " path: /opt/homebrew/Caskroom/miniconda/base/envs/main/bin/python\n", + " version: '3.11'\n", + "\n" + ] + } + ], + "source": [ + "sp.show_config()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "import bw2io as bi\n", + "import bw2data as bd\n", + "import bw2calc as bc" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'0.9.DEV27'" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bi.__version__" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'2.0.DEV16'" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bc.__version__" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Databases dictionary with 4 object(s):\n", + "\tbiosphere3\n", + "\tecoinvent-3.10-apos\n", + "\tecoinvent-3.10-biosphere\n", + "\ttest" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bd.databases" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "bd.projects.set_current(\"ei_3.10\")" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "ei = bd.Database(\"ecoinvent-3.10-apos\")" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Methods dictionary with 668 objects, including:\n", + "\t('CML v4.8 2016', 'acidification', 'acidification (incl. fate, average Europe total, A&B)')\n", + "\t('CML v4.8 2016', 'climate change', 'global warming potential (GWP100)')\n", + "\t('CML v4.8 2016', 'ecotoxicity: freshwater', 'freshwater aquatic ecotoxicity (FAETP inf)')\n", + "\t('CML v4.8 2016', 'ecotoxicity: marine', 'marine aquatic ecotoxicity (MAETP inf)')\n", + "\t('CML v4.8 2016', 'ecotoxicity: terrestrial', 'terrestrial ecotoxicity (TETP inf)')\n", + "\t('CML v4.8 2016', 'energy resources: non-renewable', 'abiotic depletion potential (ADP): fossil fuels')\n", + "\t('CML v4.8 2016', 'eutrophication', 'eutrophication (fate not incl.)')\n", + "\t('CML v4.8 2016', 'human toxicity', 'human toxicity (HTP inf)')\n", + "\t('CML v4.8 2016', 'material resources: metals/minerals', 'abiotic depletion potential (ADP): elements (ultimate reserves)')\n", + "\t('CML v4.8 2016', 'ozone depletion', 'ozone layer depletion (ODP steady state)')\n", + "Use `list(this object)` to get the complete list." + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bd.methods" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "lca = bc.LCA(\n", + " demand={ei.random(): 1},\n", + " method=('IPCC 2021', 'climate change', 'global warming potential (GWP100)')\n", + ")\n", + "lca.load_lci_data()\n", + "lca.build_demand_array()\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import pickle" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "pickle.dump(\n", + " obj=lca.technosphere_matrix,\n", + " file=open(\"technosphere_matrix.pkl\", \"wb\")\n", + ")\n", + "pickle.dump(\n", + " obj=lca.demand_array,\n", + " file=open(\"demand_array.pkl\", \"wb\")\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "technosphere_matrix = pickle.load(open(\"technosphere_matrix.pkl\", \"rb\"))\n", + "demand_array = pickle.load(open(\"demand_array.pkl\", \"rb\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4.97 s ± 32.9 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" + ] + } + ], + "source": [ + "%%timeit\n", + "supply_array = sp.sparse.linalg.spsolve(technosphere_matrix, demand_array)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "14.5 s ± 161 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" + ] + } + ], + "source": [ + "%%timeit\n", + "supply_array = sp.sparse.linalg.spsolve(technosphere_matrix, demand_array, use_umfpack=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "14.4 s ± 245 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" + ] + } + ], + "source": [ + "%%timeit\n", + "supply_array = sp.sparse.linalg.spsolve(technosphere_matrix, demand_array, use_umfpack=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'scikit_umfpack'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[12], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mscikit_umfpack\u001b[39;00m\n", + "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'scikit_umfpack'" + ] + } + ], + "source": [ + "import scikit_umfpack" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "ename": "ImportError", + "evalue": "cannot import name 'Tester' from 'numpy.testing' (/opt/homebrew/Caskroom/miniconda/base/envs/main/lib/python3.11/site-packages/numpy/testing/__init__.py)", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[13], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mscikits\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m umfpack\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/envs/main/lib/python3.11/site-packages/scikits/umfpack/__init__.py:25\u001b[0m\n\u001b[1;32m 22\u001b[0m \u001b[38;5;28;01mdel\u001b[39;00m _umfpack_doc, _interface_doc\n\u001b[1;32m 24\u001b[0m __all__ \u001b[38;5;241m=\u001b[39m [s \u001b[38;5;28;01mfor\u001b[39;00m s \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mdir\u001b[39m() \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m s\u001b[38;5;241m.\u001b[39mstartswith(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m_\u001b[39m\u001b[38;5;124m'\u001b[39m)]\n\u001b[0;32m---> 25\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mnumpy\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtesting\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Tester\n\u001b[1;32m 26\u001b[0m test \u001b[38;5;241m=\u001b[39m Tester()\u001b[38;5;241m.\u001b[39mtest\n", + "\u001b[0;31mImportError\u001b[0m: cannot import name 'Tester' from 'numpy.testing' (/opt/homebrew/Caskroom/miniconda/base/envs/main/lib/python3.11/site-packages/numpy/testing/__init__.py)" + ] + } + ], + "source": [ + "from scikits import umfpack" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "numpy", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/dev/numpy/technosphere_matrix.pkl b/dev/numpy/technosphere_matrix.pkl new file mode 100644 index 0000000..6ca2cf3 Binary files /dev/null and b/dev/numpy/technosphere_matrix.pkl differ diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..ce0035e --- /dev/null +++ b/requirements.txt @@ -0,0 +1,6 @@ +numpy==2.0.0 +scipy==1.14.0 +pandas==2.2.2 +#bw2data==4.0.dev43 +#bw2io==0.9.dev28 +#bw2calc==2.0.dev17 \ No newline at end of file