nikivanstein / gsareport Goto Github PK
View Code? Open in Web Editor NEWGlobal Sensitivity reporting for Explainable AI
License: MIT License
Global Sensitivity reporting for Explainable AI
License: MIT License
When generating samples through the command
docker run --rm -v "$(pwd)"/data:/data \ ghcr.io/basvanstein/gsareport:main -p /data/problem.json -d /data --sample --samplesize 500
Only the Latin hypercube sampling generates the exact number of samples specified. Sobol and Morris use that input differently and generate many more samples.
JOSS requires some community guidelines. Add guidelines for third parties wishing to:
I attempted to build the Dockerfile using the command docker build .
and got the following error while pip installing the dependencies:
#13 [ 9/10] RUN pip install -r requirements.txt
#13 sha256:90bf66eac24407c6165fc93b5c6371f577684790a59e67c4585a7d2f107480a1
#13 0.797 Requirement already satisfied: appdirs==1.4.4 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 1)) (1.4.4)
#13 0.914 Collecting argon2-cffi==21.1.0
#13 1.018 Downloading argon2_cffi-21.1.0-cp35-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.whl (96 kB)
#13 1.049 Requirement already satisfied: async-generator==1.10 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 3)) (1.10)
#13 1.086 Collecting attrs==21.3.0
#13 1.102 Downloading attrs-21.3.0-py2.py3-none-any.whl (61 kB)
#13 1.110 Requirement already satisfied: backcall==0.2.0 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 5)) (0.2.0)
#13 1.163 Collecting black==22.3.0
#13 1.217 Downloading black-22.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.5 MB)
#13 1.356 Requirement already satisfied: bleach==4.1.0 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 7)) (4.1.0)
#13 1.408 Collecting bokeh==2.4.2
#13 1.433 Downloading bokeh-2.4.2-py3-none-any.whl (18.5 MB)
#13 2.245 Requirement already satisfied: CacheControl==0.12.6 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 9)) (0.12.6)
#13 2.246 Requirement already satisfied: cairocffi==1.3.0 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 10)) (1.3.0)
#13 2.246 Requirement already satisfied: cffi==1.15.0 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 11)) (1.15.0)
#13 2.246 Requirement already satisfied: chardet==4.0.0 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 12)) (4.0.0)
#13 2.277 Collecting cloudpickle==2.1.0
#13 2.297 Downloading cloudpickle-2.1.0-py3-none-any.whl (25 kB)
#13 2.303 Requirement already satisfied: colorama==0.4.4 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 14)) (0.4.4)
#13 2.303 Requirement already satisfied: contextlib2==0.6.0.post1 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 15)) (0.6.0.post1)
#13 2.601 Collecting cryptography==36.0.1
#13 2.629 Downloading cryptography-36.0.1-cp36-abi3-manylinux_2_24_x86_64.whl (3.6 MB)
#13 2.783 Collecting cycler==0.10.0
#13 2.802 Downloading cycler-0.10.0-py2.py3-none-any.whl (6.5 kB)
#13 2.911 Collecting deap==1.3.1
#13 2.931 Downloading deap-1.3.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (160 kB)
#13 3.126 Collecting debugpy==1.5.1
#13 3.148 Downloading debugpy-1.5.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (1.9 MB)
#13 3.243 Collecting decorator==5.1.0
#13 3.258 Downloading decorator-5.1.0-py3-none-any.whl (9.1 kB)
#13 3.262 Requirement already satisfied: defusedxml==0.7.1 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 21)) (0.7.1)
#13 3.314 Collecting dill==0.3.4
#13 3.330 Downloading dill-0.3.4-py2.py3-none-any.whl (86 kB)
#13 3.365 Collecting distlib==0.3.3
#13 3.387 Downloading distlib-0.3.3-py2.py3-none-any.whl (496 kB)
#13 3.435 Collecting distro==1.6.0
#13 3.451 Downloading distro-1.6.0-py2.py3-none-any.whl (19 kB)
#13 3.483 Collecting entrypoints==0.3
#13 3.498 Downloading entrypoints-0.3-py2.py3-none-any.whl (11 kB)
#13 3.624 Collecting fonttools==4.28.5
#13 3.642 Downloading fonttools-4.28.5-py3-none-any.whl (890 kB)
#13 3.677 Requirement already satisfied: html5lib==1.1 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 27)) (1.1)
#13 3.677 Requirement already satisfied: idna==3.3 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 28)) (3.3)
#13 3.678 Requirement already satisfied: importlib-metadata==4.8.1 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 29)) (4.8.1)
#13 3.733 Collecting ipykernel==6.6.0
#13 3.750 Downloading ipykernel-6.6.0-py3-none-any.whl (126 kB)
#13 3.835 Collecting ipython==7.30.1
#13 3.853 Downloading ipython-7.30.1-py3-none-any.whl (791 kB)
#13 3.911 Collecting ipython-genutils==0.2.0
#13 3.925 Downloading ipython_genutils-0.2.0-py2.py3-none-any.whl (26 kB)
#13 3.982 Collecting ipywidgets==7.6.5
#13 4.028 Downloading ipywidgets-7.6.5-py2.py3-none-any.whl (121 kB)
#13 4.100 Collecting isort==5.10.1
#13 4.115 Downloading isort-5.10.1-py3-none-any.whl (103 kB)
#13 4.124 Requirement already satisfied: jedi==0.18.1 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 35)) (0.18.1)
#13 4.124 Requirement already satisfied: Jinja2==3.0.3 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 36)) (3.0.3)
#13 4.172 Collecting joblib==1.1.0
#13 4.190 Downloading joblib-1.1.0-py2.py3-none-any.whl (306 kB)
#13 4.206 Requirement already satisfied: jsonschema==3.2.0 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 38)) (3.2.0)
#13 4.257 Collecting jupyter-client==7.1.0
#13 4.276 Downloading jupyter_client-7.1.0-py3-none-any.whl (129 kB)
#13 4.362 Collecting jupyter-console==6.4.0
#13 4.379 Downloading jupyter_console-6.4.0-py3-none-any.whl (22 kB)
#13 4.429 Collecting jupyter-core==4.9.1
#13 4.443 Downloading jupyter_core-4.9.1-py3-none-any.whl (86 kB)
#13 4.478 Collecting jupyterlab-pygments==0.1.2
#13 4.499 Downloading jupyterlab_pygments-0.1.2-py2.py3-none-any.whl (4.6 kB)
#13 4.503 Requirement already satisfied: kiwisolver==1.3.2 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 43)) (1.3.2)
#13 4.602 Collecting llvmlite==0.38.1
#13 4.617 Downloading llvmlite-0.38.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (34.5 MB)
#13 5.768 Collecting MarkupSafe==2.0.1
#13 5.785 Downloading MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (30 kB)
#13 5.992 Collecting matplotlib==3.5.1
#13 6.012 Downloading matplotlib-3.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.9 MB)
#13 6.373 Requirement already satisfied: matplotlib-inline==0.1.3 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 47)) (0.1.3)
#13 6.373 Requirement already satisfied: mistune==0.8.4 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 48)) (0.8.4)
#13 6.407 Collecting more-itertools==8.10.0
#13 6.422 Downloading more_itertools-8.10.0-py3-none-any.whl (51 kB)
#13 6.429 Requirement already satisfied: msgpack==1.0.3 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 50)) (1.0.3)
#13 6.472 Collecting multiprocess==0.70.12.2
#13 6.508 Downloading multiprocess-0.70.12.2-py39-none-any.whl (128 kB)
#13 6.556 Collecting nbclient==0.5.4
#13 6.574 Downloading nbclient-0.5.4-py3-none-any.whl (66 kB)
#13 6.625 Collecting nbconvert==6.1.0
#13 6.643 Downloading nbconvert-6.1.0-py3-none-any.whl (551 kB)
#13 6.701 Collecting nbformat==5.1.3
#13 6.717 Downloading nbformat-5.1.3-py3-none-any.whl (178 kB)
#13 6.728 Requirement already satisfied: nest-asyncio==1.5.4 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 55)) (1.5.4)
#13 6.786 Collecting notebook==6.4.4
#13 6.809 Downloading notebook-6.4.4-py3-none-any.whl (9.9 MB)
#13 7.331 Collecting numba==0.55.2
#13 7.448 Downloading numba-0.55.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (3.4 MB)
#13 7.955 Collecting numpy==1.21.5
#13 8.223 Downloading numpy-1.21.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (15.9 MB)
#13 8.712 Requirement already satisfied: ordered-set==4.0.2 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 59)) (4.0.2)
#13 8.713 Requirement already satisfied: packaging==21.3 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 60)) (21.3)
#13 8.920 Collecting pandas==1.3.5
#13 8.939 Downloading pandas-1.3.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.5 MB)
#13 9.445 Collecting pandas-bokeh==0.5.5
#13 9.489 Downloading pandas_bokeh-0.5.5-py2.py3-none-any.whl (29 kB)
#13 9.521 Collecting pandocfilters==1.4.3
#13 9.534 Downloading pandocfilters-1.4.3.tar.gz (16 kB)
#13 9.677 Requirement already satisfied: parso==0.8.2 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 64)) (0.8.2)
#13 9.702 Collecting pathos==0.2.8
#13 9.724 Downloading pathos-0.2.8-py2.py3-none-any.whl (81 kB)
#13 9.733 Requirement already satisfied: pep517==0.12.0 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 66)) (0.12.0)
#13 9.734 Requirement already satisfied: pexpect==4.8.0 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 67)) (4.8.0)
#13 9.734 Requirement already satisfied: pickleshare==0.7.5 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 68)) (0.7.5)
#13 10.06 Collecting Pillow==8.4.0
#13 10.08 Downloading Pillow-8.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB)
#13 10.18 Requirement already satisfied: ply==3.11 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 70)) (3.11)
#13 10.21 Collecting pox==0.3.0
#13 10.23 Downloading pox-0.3.0-py2.py3-none-any.whl (30 kB)
#13 10.30 Collecting ppft==1.6.6.4
#13 10.32 Downloading ppft-1.6.6.4-py3-none-any.whl (65 kB)
#13 10.32 Requirement already satisfied: progress==1.6 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 73)) (1.6)
#13 10.36 Collecting prometheus-client==0.11.0
#13 10.37 Downloading prometheus_client-0.11.0-py2.py3-none-any.whl (56 kB)
#13 10.44 Collecting prompt-toolkit==3.0.24
#13 10.45 Downloading prompt_toolkit-3.0.24-py3-none-any.whl (374 kB)
#13 10.47 Requirement already satisfied: ptyprocess==0.7.0 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 76)) (0.7.0)
#13 10.50 Collecting pycairo==1.20.1
#13 10.51 Downloading pycairo-1.20.1.tar.gz (344 kB)
#13 10.55 Installing build dependencies: started
#13 12.66 Installing build dependencies: finished with status 'done'
#13 12.66 Getting requirements to build wheel: started
#13 12.83 Getting requirements to build wheel: finished with status 'done'
#13 12.83 Preparing wheel metadata: started
#13 13.00 Preparing wheel metadata: finished with status 'done'
#13 13.00 Requirement already satisfied: pycparser==2.21 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 78)) (2.21)
#13 13.04 Collecting Pygments==2.11.1
#13 13.10 Downloading Pygments-2.11.1-py3-none-any.whl (1.1 MB)
#13 13.17 Collecting PyGObject==3.42.0
#13 13.19 Downloading PyGObject-3.42.0.tar.gz (716 kB)
#13 13.28 Installing build dependencies: started
#13 16.38 Installing build dependencies: finished with status 'error'
#13 16.38 ERROR: Command errored out with exit status 1:
#13 16.38 command: /usr/bin/python /usr/lib/python3.10/site-packages/pip install --ignore-installed --no-user --prefix /tmp/pip-build-env-dh3zzgid/overlay --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- setuptools wheel pycairo
#13 16.38 cwd: None
#13 16.38 Complete output (29 lines):
#13 16.38 Collecting setuptools
#13 16.38 Using cached setuptools-65.3.0-py3-none-any.whl (1.2 MB)
#13 16.38 Collecting wheel
#13 16.38 Using cached wheel-0.37.1-py2.py3-none-any.whl (35 kB)
#13 16.38 Collecting pycairo
#13 16.38 Downloading pycairo-1.21.0.tar.gz (340 kB)
#13 16.38 Installing build dependencies: started
#13 16.38 Installing build dependencies: finished with status 'done'
#13 16.38 Getting requirements to build wheel: started
#13 16.38 Getting requirements to build wheel: finished with status 'done'
#13 16.38 Preparing wheel metadata: started
#13 16.38 Preparing wheel metadata: finished with status 'done'
#13 16.38 Building wheels for collected packages: pycairo
#13 16.38 Building wheel for pycairo (PEP 517): started
#13 16.38 Building wheel for pycairo (PEP 517): finished with status 'error'
#13 16.38 ERROR: Command errored out with exit status 1:
#13 16.38 command: /usr/bin/python /usr/lib/python3.10/site-packages/pep517/in_process/_in_process.py build_wheel /tmp/tmp_62d2zbe
#13 16.38 cwd: /tmp/pip-install-zztmw9q1/pycairo_09b188e4764c49b3bf3f8e7c6a7f34a3
#13 16.38 Complete output (6 lines):
#13 16.38 running bdist_wheel
#13 16.38 running build
#13 16.38 running build_py
#13 16.38 running build_ext
#13 16.38 'pkg-config' not found.
#13 16.38 Command ['pkg-config', '--print-errors', '--exists', 'cairo >= 1.15.10']
#13 16.38 ----------------------------------------
#13 16.38 ERROR: Failed building wheel for pycairo
#13 16.38 Failed to build pycairo
#13 16.38 ERROR: Could not build wheels for pycairo which use PEP 517 and cannot be installed directly
#13 16.38 ----------------------------------------
#13 16.38 WARNING: Discarding https://files.pythonhosted.org/packages/cc/72/48cfdd7a0caf3c27f392d2657731ac6f7c3c1c0a60bfeba3e1ba9ffa7ba9/PyGObject-3.42.0.tar.gz#sha256=b9803991ec0b0b4175e81fee0ad46090fa7af438fe169348a9b18ae53447afcd (from https://pypi.org/simple/pygobject/) (requires-python:>=3.6, <4). Command errored out with exit status 1: /usr/bin/python /usr/lib/python3.10/site-packages/pip install --ignore-installed --no-user --prefix /tmp/pip-build-env-dh3zzgid/overlay --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- setuptools wheel pycairo Check the logs for full command output.
#13 16.38 ERROR: Could not find a version that satisfies the requirement PyGObject==3.42.0
#13 16.38 ERROR: No matching distribution found for PyGObject==3.42.0
#13 ERROR: executor failed running [/bin/sh -c pip install -r requirements.txt]: exit code: 1
------
> [ 9/10] RUN pip install -r requirements.txt:
------
executor failed running [/bin/sh -c pip install -r requirements.txt]: exit code: 1
Hi @basvanstein and sorry for the late review,
Here are few suggestions and requests,
Let me know what you think of these suggestions.
Reading through the JOSS paper and the Readme of your project I find myself wondering what exactly the added value of your application is. I am not saying it is not there I just don't quite understand why I would not just be using SAlib directly. Also I think you should point out other toolboxes like SAFE.
To be more precise: Please add a little bit more description of what the user explicitly gains from using this software. Be a bit more explicit on how it fits into the world of existing toolboxes out there.
Furthermore, you state that "each method in the original SALib package requires a different sampling scheme and different sample size". Well the sample size is related to convergence and the scheme very much to the underlying methods and has nothing to do with SAlib. Please elaborate what your your tool does exactly. For me this is currently rather confusing.
The Docker commands will fail if the users local working directory has a space. I recommend changing all instances of:
`pwd`
to "$(pwd)"
In addition, specifying docker volumes on their own lines will also present issues. I recommend changing the following command from:
docker run --rm -v `pwd`/output:/output \
-v `pwd`/data:/data \
ghcr.io/basvanstein/gsareport:main -p /data/problem.json -d /data -o /output
to:
docker run --rm -v "$(pwd)"/output:/output -v "$(pwd)"/data:/data \
ghcr.io/basvanstein/gsareport:main -p /data/problem.json -d /data -o /output
The example documentation refers to several CSV files in order to conduct a test run of the application. However, there are no samples in the repository. It would be helpful to include some samples so an end user could try out the software without having their own data.
From README.md:
Command: python GSAreport.py -p problem.json -d
pwd/data --sample --samplesize 1000
Output:
loaded problem definition
0%| | 0/100 [00:00<?, ?it/s]
Traceback (most recent call last):
File "GSAreport.py", line 756, in <module>
report = SAReport(
File "GSAreport.py", line 138, in __init__
os.makedirs(output_dir)
File "/usr/lib/python3.8/os.py", line 223, in makedirs
mkdir(name, mode)
PermissionError: [Errno 13] Permission denied: '/output/'
Solution: Specify output folder path as last instruction: python GSAreport.py -p problem.json -d
pwd/data --sample --samplesize 1000 -o
pwd/output
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.