Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MVP for GuidedStats #1

Merged
merged 8 commits into from
Nov 8, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Binary file modified .DS_Store
Binary file not shown.
12 changes: 9 additions & 3 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,16 @@ module.exports = {
'eslint:recommended',
'plugin:@typescript-eslint/eslint-recommended',
'plugin:@typescript-eslint/recommended',
'plugin:prettier/recommended'
'plugin:prettier/recommended',
'plugin:svelte/recommended'
],
parser: '@typescript-eslint/parser',
parserOptions: {
project: 'tsconfig.json',
extraFileExtensions: ['.svelte'],
sourceType: 'module'
},
plugins: ['@typescript-eslint', 'svelte3'],
plugins: ['@typescript-eslint'],
rules: {
'@typescript-eslint/no-unused-vars': ['warn', { args: 'none' }],
'@typescript-eslint/no-explicit-any': 'off',
Expand All @@ -28,7 +30,11 @@ module.exports = {
overrides: [
{
files: ['**/*.svelte'],
processor: 'svelte3/svelte3'
parser: 'svelte-eslint-parser',
parserOptions: {
parser: '@typescript-eslint/parser'
}
// processor: 'svelte-eslint-parser'
}
]
};
10 changes: 7 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,11 @@ node_modules/
.eslintcache
.stylelintcache
*.egg-info/
.ipynb_checkpoints
examples/.ipynb_checkpoints/
*.tsbuildinfo

.DS_Store
dist/
.DS_Store
.vscode/
*/__pycache__/
*/labextension/
*/nbextension/index.js
41 changes: 40 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,40 @@
# GuidedStats
# GuidedStats
A Jupyter extension provides customizable, comparable, and reusable UI to construct guided statistical analysis workflows, for novices in stats and domain experts seeking rigorous guidance.

## Install(For Developers)
Tips: you can create a new conda environment to avoid any package conflicts.

First, install the package in editable mode
```
python -m pip install -e .
```
And enable widet frontend
```
# link your development version of the extension with JupyterLab
jupyter labextension develop . --overwrite
# for Jupyter Notebook
jupyter nbextension install --sys-prefix --symlink --overwrite --py guidedstats
jupyter nbextension enable --sys-prefix --py guidedstats
```
To build the project
```
npm run build
```
To automatically rebuild the project after editing frontend code
```
npm run watch
```
To rebuild after editing python package, you need to restart the kernel.

## Usage
To initialize the UI, first we need to import `GuidedStats` and load the dataset into a Pandas DataFrame. Then we pass the DataFrame to `GuidedStats`.
```
from guidedstats import GuidedStats
import pandas as pd

df = pd.read_csv("test.csv")
a = GuidedStats(df)
a
```
After that, we can click the desired workflow and start the guidance.
![UI](UI.jpg)
Binary file added UI.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
207 changes: 207 additions & 0 deletions conda-packages.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,207 @@
# This file may be used to create an environment using:
# $ conda create --name <env> --file <this file>
# platform: osx-arm64
aiofiles=22.1.0=pyhd8ed1ab_0
aiosqlite=0.19.0=pyhd8ed1ab_0
altair=5.0.1=pypi_0
anyio=3.7.1=pyhd8ed1ab_0
appnope=0.1.3=pyhd8ed1ab_0
argon2-cffi=21.3.0=pyhd8ed1ab_0
argon2-cffi-bindings=21.2.0=py311he2be06e_3
arrow=1.2.3=pyhd8ed1ab_0
asttokens=2.2.1=pyhd8ed1ab_0
attrs=23.1.0=pyh71513ae_1
babel=2.12.1=pyhd8ed1ab_1
backcall=0.2.0=pyh9f0ad1d_0
backports=1.0=pyhd8ed1ab_3
backports.functools_lru_cache=1.6.5=pyhd8ed1ab_0
beautifulsoup4=4.12.2=pyha770c72_0
blas=1.0=openblas
bleach=6.0.0=pyhd8ed1ab_0
bottleneck=1.3.5=py311ha0d4635_0
brotli=1.0.9=h1a28f6b_7
brotli-bin=1.0.9=h1a28f6b_7
brotli-python=1.0.9=py311h313beb8_7
bzip2=1.0.8=h3422bc3_4
ca-certificates=2023.7.22=hf0a4a13_0
cached-property=1.5.2=hd8ed1ab_1
cached_property=1.5.2=pyha770c72_1
certifi=2023.7.22=pyhd8ed1ab_0
cffi=1.15.1=py311hae827db_3
charset-normalizer=3.2.0=pyhd8ed1ab_0
comm=0.1.3=pyhd8ed1ab_0
contourpy=1.0.5=py311h48ca7d4_0
cycler=0.11.0=pyhd3eb1b0_0
debugpy=1.6.7=py311ha397e9f_0
decorator=5.1.1=pyhd8ed1ab_0
defusedxml=0.7.1=pyhd8ed1ab_0
deprecation=2.1.0=pyh9f0ad1d_0
entrypoints=0.4=pyhd8ed1ab_0
exceptiongroup=1.1.2=pyhd8ed1ab_0
executing=1.2.0=pyhd8ed1ab_0
flit-core=3.9.0=pyhd8ed1ab_0
fonttools=4.25.0=pyhd3eb1b0_0
fqdn=1.5.1=pyhd8ed1ab_0
freetype=2.12.1=h1192e45_0
giflib=5.2.1=h80987f9_3
guidedstats=0.1.0=dev_0
icu=72.1=he12128b_0
idna=3.4=pyhd8ed1ab_0
importlib-metadata=6.8.0=pyha770c72_0
importlib_metadata=6.8.0=hd8ed1ab_0
importlib_resources=6.0.0=pyhd8ed1ab_1
ipykernel=6.25.0=pyh5fb750a_0
ipylab=0.7.1=pypi_0
ipython=8.14.0=pyhd1c38e8_0
ipython_genutils=0.2.0=py_1
ipywidgets=8.1.0=pypi_0
isoduration=20.11.0=pyhd8ed1ab_0
jedi=0.18.2=pyhd8ed1ab_0
jinja2=3.1.2=pyhd8ed1ab_1
joblib=1.3.0=pyhd8ed1ab_1
jpeg=9e=h80987f9_1
json5=0.9.14=pyhd8ed1ab_0
jsonpointer=2.0=py_0
jsonschema=4.18.4=pyhd8ed1ab_0
jsonschema-specifications=2023.7.1=pyhd8ed1ab_0
jsonschema-with-format-nongpl=4.18.4=pyhd8ed1ab_0
jupyter-packaging=0.12.3=pyha770c72_1
jupyter_client=8.3.0=pyhd8ed1ab_0
jupyter_core=5.3.1=py311h267d04e_0
jupyter_events=0.6.3=pyhd8ed1ab_1
jupyter_server=2.7.0=pyhd8ed1ab_0
jupyter_server_fileid=0.9.0=pyhd8ed1ab_0
jupyter_server_terminals=0.4.4=pyhd8ed1ab_1
jupyter_server_ydoc=0.8.0=pyhd8ed1ab_0
jupyter_ydoc=0.2.4=py311hca03da5_0
jupyterlab=3.6.5=pyhd8ed1ab_0
jupyterlab-widgets=3.0.8=pypi_0
jupyterlab_pygments=0.2.2=pyhd8ed1ab_0
jupyterlab_server=2.24.0=pyhd8ed1ab_0
kiwisolver=1.4.4=py311h313beb8_0
lcms2=2.12=hba8e193_0
lerc=3.0=hc377ac9_0
libblas=3.9.0=16_osxarm64_openblas
libbrotlicommon=1.0.9=h1a28f6b_7
libbrotlidec=1.0.9=h1a28f6b_7
libbrotlienc=1.0.9=h1a28f6b_7
libcblas=3.9.0=16_osxarm64_openblas
libcxx=16.0.6=h4653b0c_0
libdeflate=1.17=h80987f9_0
libexpat=2.5.0=hb7217d7_1
libffi=3.4.2=h3422bc3_5
libgfortran=5.0.0=11_3_0_hca03da5_28
libgfortran5=11.3.0=h009349e_28
liblapack=3.9.0=16_osxarm64_openblas
libopenblas=0.3.21=h269037a_0
libpng=1.6.39=h80987f9_0
libsodium=1.0.18=h27ca646_1
libsqlite=3.42.0=hb31c410_0
libtiff=4.5.0=h313beb8_2
libuv=1.44.2=he4db4b2_0
libwebp=1.2.4=ha3663a8_1
libwebp-base=1.2.4=h80987f9_1
libzlib=1.2.13=h53f4e23_5
llvm-openmp=14.0.6=hc6e5704_0
lz4-c=1.9.4=h313beb8_0
markupsafe=2.1.3=py311heffc1b2_0
matplotlib=3.7.1=py311hca03da5_1
matplotlib-base=3.7.1=py311h7aedaa7_1
matplotlib-inline=0.1.6=pyhd8ed1ab_0
mistune=3.0.0=pyhd8ed1ab_0
munkres=1.1.4=py_0
nbclassic=1.0.0=pyhb4ecaf3_1
nbclient=0.8.0=pyhd8ed1ab_0
nbconvert=7.7.2=pyhd8ed1ab_0
nbconvert-core=7.7.2=pyhd8ed1ab_0
nbconvert-pandoc=7.7.2=pyhd8ed1ab_0
nbformat=5.9.1=pyhd8ed1ab_0
ncurses=6.4=h7ea286d_0
nest-asyncio=1.5.6=pyhd8ed1ab_0
nodejs=18.16.1=ha2ed473_0
notebook=6.5.4=pyha770c72_0
notebook-shim=0.2.3=pyhd8ed1ab_0
numexpr=2.8.4=py311h6dc990b_1
numpy=1.25.1=pypi_0
numpy-base=1.25.0=py311hfbfe69c_0
openssl=3.1.2=h53f4e23_0
overrides=7.3.1=pyhd8ed1ab_0
packaging=23.1=pyhd8ed1ab_0
pandas=2.0.3=pypi_0
pandoc=3.1.3=hce30654_0
pandocfilters=1.5.0=pyhd8ed1ab_0
parso=0.8.3=pyhd8ed1ab_0
patsy=0.5.3=py311hca03da5_0
pexpect=4.8.0=pyh1a96a4e_2
pickleshare=0.7.5=py_1003
pillow=9.4.0=py311h313beb8_0
pip=23.2.1=pyhd8ed1ab_0
pkgutil-resolve-name=1.3.10=pyhd8ed1ab_0
platformdirs=3.9.1=pyhd8ed1ab_0
pooch=1.7.0=pyha770c72_3
prometheus_client=0.17.1=pyhd8ed1ab_0
prompt-toolkit=3.0.39=pyha770c72_0
prompt_toolkit=3.0.39=hd8ed1ab_0
psutil=5.9.5=py311he2be06e_0
ptyprocess=0.7.0=pyhd3deb0d_0
pure_eval=0.2.2=pyhd8ed1ab_0
pycparser=2.21=pyhd8ed1ab_0
pygments=2.15.1=pyhd8ed1ab_0
pyobjc-core=9.2=py311hb702dc4_0
pyobjc-framework-cocoa=9.2=py311hb702dc4_0
pyparsing=3.0.9=py311hca03da5_0
pysocks=1.7.1=pyha2e5f31_6
python=3.11.4=h47c9636_0_cpython
python-dateutil=2.8.2=pyhd8ed1ab_0
python-fastjsonschema=2.18.0=pyhd8ed1ab_0
python-json-logger=2.0.7=pyhd8ed1ab_0
python_abi=3.11=3_cp311
pytz=2023.3=pyhd8ed1ab_0
pyyaml=6.0=py311he2be06e_5
pyzmq=25.1.0=py311hb1af645_0
readline=8.2=h92ec313_1
referencing=0.30.0=pyhd8ed1ab_0
requests=2.31.0=pyhd8ed1ab_0
rfc3339-validator=0.1.4=pyhd8ed1ab_0
rfc3986-validator=0.1.1=pyh9f0ad1d_0
rpds-py=0.9.2=py311h0563b04_0
scikit-learn=1.2.2=py311h313beb8_1
scipy=1.10.1=py311hc76d9b0_1
send2trash=1.8.2=pyhd1c38e8_0
setuptools=68.0.0=pyhd8ed1ab_0
six=1.16.0=pyh6c4a22f_0
sniffio=1.3.0=pyhd8ed1ab_0
soupsieve=2.3.2.post1=pyhd8ed1ab_0
stack_data=0.6.2=pyhd8ed1ab_0
statsmodels=0.14.0=py311hb49d859_1
terminado=0.17.1=pyhd1c38e8_0
threadpoolctl=3.2.0=pyha21a80b_0
tinycss2=1.2.1=pyhd8ed1ab_0
tk=8.6.12=he1e0b03_0
tomli=2.0.1=pyhd8ed1ab_0
tomlkit=0.11.8=pyha770c72_0
toolz=0.12.0=pypi_0
tornado=6.3.2=py311heffc1b2_0
traitlets=5.9.0=pyhd8ed1ab_0
typing-extensions=4.7.1=hd8ed1ab_0
typing_extensions=4.7.1=pyha770c72_0
typing_utils=0.1.0=pyhd8ed1ab_0
tzdata=2023.3=pypi_0
uri-template=1.3.0=pyhd8ed1ab_0
urllib3=2.0.4=pyhd8ed1ab_0
varname=0.11.2=pypi_0
wcwidth=0.2.6=pyhd8ed1ab_0
webcolors=1.13=pyhd8ed1ab_0
webencodings=0.5.1=py_1
websocket-client=1.6.1=pyhd8ed1ab_0
wheel=0.41.0=pyhd8ed1ab_0
widgetsnbextension=4.0.8=pypi_0
xz=5.4.2=h80987f9_0
y-py=0.5.9=py311ha6e5c4f_0
yaml=0.2.5=h3422bc3_2
yarn=3.6.1=h31011fe_0
ypy-websocket=0.8.2=py311hca03da5_0
zeromq=4.3.4=hbdafb3b_1
zipp=3.16.2=pyhd8ed1ab_0
zlib=1.2.13=h53f4e23_5
zstd=1.5.5=hd90d995_0
15,524 changes: 0 additions & 15,524 deletions dist/index.js

This file was deleted.

14,338 changes: 2,543 additions & 11,795 deletions docs/source/_static/embed-bundle.js

Large diffs are not rendered by default.

Loading