diff --git a/docs/_sources/index.rst.txt b/docs/_sources/index.rst.txt
index 1c3afc2..77df5d9 100644
--- a/docs/_sources/index.rst.txt
+++ b/docs/_sources/index.rst.txt
@@ -9,12 +9,78 @@ Welcome to vbjax's documentation!
Introduction
############
+`vbjax` is a Jax-based package for working with virtual brain style models.
+
+Installation
+############
+
+Installs with `pip install "vbjax"`, but you can use the source,
+
+.. code-block:: bash
+
+ git clone https://github.com/ins-amu/vbjax
+ cd vbjax
+ pip install .[dev]
+
+
+The primary additional dependency of vbjax is
+[JAX](github.com/google/jax), which itself depends only on
+NumPy, SciPy & opt-einsum, so it should be safe to add to your
+existing projects.
+
+gee pee you
+------------
+
+**CUDA**
+
+If you have a CUDA-enabled GPU, you install the requisite dependencies like so
+
+.. code-block:: bash
+
+ pip install --upgrade "jax[cuda11_pip]" -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
+
+
+**M1/M2** 🍎
+
+On newer Apple machines w/ M1 or M2 GPUs, JAX supports using the GPU experimentally
+by installing just two extra packages:
+
+.. code-block:: bash
+
+ pip install ml-dtypes==0.2.0 jax-metal
+
+
+About a third of vbjax tests fail due to absence of certain operations like n-dim
+scatter/gather & FFTs, and it may not be faster because these CPUs already have
+excellent memory bandwidth & latency hiding.
+
+**CUDA** 🐳
+
+*BUT* because GPU software stack versions make aligning stars look like child's play,
+container images are available and auto-built w/
+[GitHub Actions](.github/workflows/docker-image.yml), so you can use w/ Docker
+
+.. code-block:: bash
+
+ docker run --rm -it ghcr.io/ins-amu/vbjax:main python3 -c 'import vbjax; print(vbjax.__version__)'
+
+
+The images are built on Nvidia runtime images, so `--gpus all` is enough
+for Jax to discover the GPU(s).
+
.. toctree::
:maxdepth: 2
:caption: Contents:
+Tutorial
+########
+.. toctree::
+ :maxdepth: 2
+ :caption: Contents:
+
+ tutorial
Indices and tables
==================
diff --git a/docs/_sources/tutorial.rst.txt b/docs/_sources/tutorial.rst.txt
new file mode 100644
index 0000000..f37f8a9
--- /dev/null
+++ b/docs/_sources/tutorial.rst.txt
@@ -0,0 +1,6 @@
+
+Tutorial
+***************
+
+This is some test text.
+
diff --git a/docs/build/doctrees/environment.pickle b/docs/build/doctrees/environment.pickle
deleted file mode 100644
index 1ab540a..0000000
Binary files a/docs/build/doctrees/environment.pickle and /dev/null differ
diff --git a/docs/build/doctrees/index.doctree b/docs/build/doctrees/index.doctree
deleted file mode 100644
index 81bed34..0000000
Binary files a/docs/build/doctrees/index.doctree and /dev/null differ
diff --git a/docs/build/html/.buildinfo b/docs/build/html/.buildinfo
deleted file mode 100644
index 9124be8..0000000
--- a/docs/build/html/.buildinfo
+++ /dev/null
@@ -1,4 +0,0 @@
-# Sphinx build info version 1
-# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
-config: 541c023b467482e41183e73dd02177ae
-tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/docs/build/html/.nojekyll b/docs/build/html/.nojekyll
deleted file mode 100644
index e69de29..0000000
diff --git a/docs/copy_html.sh b/docs/copy_html.sh
new file mode 100755
index 0000000..220c058
--- /dev/null
+++ b/docs/copy_html.sh
@@ -0,0 +1,7 @@
+
+rm -rf _modules
+rm -rf _sources
+rm -rf _static
+make html
+cp -r build/html/* .
+rm -rf build
diff --git a/docs/index.html b/docs/index.html
index de97e6a..4017abc 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -13,7 +13,8 @@
-
+
+
This Page
diff --git a/docs/objects.inv b/docs/objects.inv
index fb1611a..238daff 100644
Binary files a/docs/objects.inv and b/docs/objects.inv differ
diff --git a/docs/searchindex.js b/docs/searchindex.js
index 41f07d6..b1f08b9 100644
--- a/docs/searchindex.js
+++ b/docs/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["index"], "filenames": ["index.rst"], "titles": ["Welcome to vbjax\u2019s documentation!"], "terms": {"index": 0, "modul": 0, "search": 0, "page": 0, "function": 0, "build": 0, "time": 0, "step": 0, "heun_step": 0, "x": 0, "dfun": 0, "dt": 0, "arg": 0, "add": 0, "0": 0, "sourc": 0, "us": 0, "heun": 0, "scheme": 0, "state": 0, "right": 0, "hand": 0, "side": 0, "addit": 0, "forc": 0, "term": 0, "make_dd": 0, "nh": 0, "unrol": 0, "10": 0, "invok": 0, "make_sdd": 0, "w": 0, "gfun": 0, "make_od": 0, "integr": 0, "autonom": 0, "ordinari": 0, "differenti": 0, "equat": 0, "od": 0, "paramet": 0, "float": 0, "form": 0, "p": 0, "comput": 0, "deriv": 0, "return": 0, "t": 0, "take": 0, "one": 0, "accord": 0, "x0": 0, "iter": 0, "call": 0, "all": 0, "note": 0, "In": 0, "both": 0, "case": 0, "jax": 0, "compat": 0, "set": 0, "i": 0, "provid": 0, "either": 0, "an": 0, "arrai": 0, "some": 0, "pytre": 0, "structur": 0, "import": 0, "vb": 0, "numpi": 0, "np": 0, "_": 0, "1": 0, "lambda": 0, "r_": 0, "4": 0, "none": 0, "5": 0, "25": 0, "125": 0, "0625": 0, "dtype": 0, "float32": 0, "weak_typ": 0, "true": 0, "zero_delai": 0, "fals": 0, "stochast": 0, "delai": 0, "sde": 0, "int": 0, "maximum": 0, "xt": 0, "drift": 0, "coeffici": 0, "diffus": 0, "If": 0, "numer": 0, "valu": 0, "thi": 0, "constant": 0, "linear": 0, "x_t": 0, "z_t": 0, "each": 0, "start": 0, "A": 0, "The": 0, "doe": 0, "sampl": 0, "normal": 0, "distribut": 0, "nois": 0, "so": 0, "must": 0, "user": 0, "histori": 0, "buffer": 0, "pass": 0, "corrector": 0, "stage": 0, "method": 0, "contain": 0, "predictor": 0, "perform": 0, "reason": 0, "unless": 0, "good": 0, "compromis": 0, "can": 0, "zero": 0, "sdde": 0, "2": 0, "ones": 0, "6": 0, "11": 0, "22": 0, "make_sd": 0, "z": 0, "randn": 0, "5093468": 0, "30794007": 0, "07600437": 0, "03876263": 0, "make_dense_lay": 0, "in_dim": 0, "latent_dim": 0, "out_dim": 0, "init_scl": 0, "extra_in": 0, "act_fn": 0, "pjitfunct": 0, "leaky_relu": 0, "kei": 0, "42": 0, "uint32": 0, "make": 0, "dens": 0, "neural": 0, "network": 0, "given": 0, "latent": 0, "size": 0, "compute_sarvas_gain": 0, "q": 0, "r": 0, "o": 0, "att": 0, "d": 0, "dc": 0, "make_bold": 0, "shape": 0, "boldtheta": 0, "bold": 0, "fmri": 0, "make_cov": 0, "make_fc": 0, "make_fft": 0, "period": 0, "make_gain": 0, "gain": 0, "matrix": 0, "suitabl": 0, "seeg": 0, "eeg": 0, "meg": 0, "make_offlin": 0, "step_fn": 0, "sample_fn": 0, "offlin": 0, "batch": 0, "fashion": 0, "make_timeavg": 0, "averag": 0, "class": 0, "tau_": 0, "tau_f": 0, "tau_o": 0, "alpha": 0, "te": 0, "v0": 0, "e0": 0, "epsilon": 0, "nu_0": 0, "r_0": 0, "recip_tau_": 0, "recip_tau_f": 0, "recip_tau_o": 0, "recip_alpha": 0, "recip_e0": 0, "k1": 0, "k2": 0, "k3": 0, "base": 0, "tupl": 0, "alia": 0, "field": 0, "number": 0, "3": 0, "7": 0, "15": 0, "16": 0, "17": 0, "8": 0, "9": 0, "13": 0, "14": 0, "12": 0, "bveptheta": 0, "tau0": 0, "i1": 0, "jrstate": 0, "y0": 0, "y1": 0, "y2": 0, "y3": 0, "y4": 0, "y5": 0, "jrtheta": 0, "b": 0, "nu_max": 0, "j": 0, "a_1": 0, "a_2": 0, "a_3": 0, "a_4": 0, "mu": 0, "mprstate": 0, "v": 0, "mprtheta": 0, "tau": 0, "delta": 0, "eta": 0, "cr": 0, "cv": 0, "bold_dfun": 0, "sfvq": 0, "bvep_dfun": 0, "y": 0, "c": 0, "compute_bold_theta": 0, "65": 0, "41": 0, "98": 0, "32": 0, "04": 0, "40": 0, "jr_dfun": 0, "mpr_dfun": 0, "csr_to_jax_bcoo": 0, "csr_matrix": 0, "convert": 0, "csr": 0, "format": 0, "coo": 0, "make_sg_spmv": 0, "use_pmap": 0, "shard": 0, "positionalshard": 0, "spmv": 0, "kernel": 0, "gener": 0, "scatter": 0, "gather": 0, "oper": 0, "make_spmv": 0, "is_symmetr": 0, "use_scipi": 0, "closur": 0, "vector": 0, "multipl": 0, "scipi": 0, "bool": 0, "option": 0, "default": 0, "whether": 0, "symmetr": 0, "implement": 0, "spase": 0, "multipli": 0, "support": 0, "gradient": 0, "type": 0, "to_jax": 0, "ndarrai": 0, "move": 0, "via": 0, "dlpack": 0, "to_np": 0, "sht": 0, "local": 0, "coupl": 0, "grid_pairwise_dist": 0, "theta": 0, "phi": 0, "pairwis": 0, "distanc": 0, "grid": 0, "memori": 0, "intens": 0, "larg": 0, "kernel_conv_prep": 0, "k": 0, "prepar": 0, "evalu": 0, "convolut": 0, "kernel_diff": 0, "l": 0, "shtn": 0, "order": 0, "kernel_dist_origin": 0, "origin": 0, "kernel_estimate_shtn": 0, "estim": 0, "effect": 0, "object": 0, "kernel_gaussian": 0, "spatial": 0, "spectral": 0, "gaussian": 0, "kernel_laplac": 0, "laplacian": 0, "kernel_mexican_hat": 0, "mexican": 0, "hat": 0, "kernel_sh_norm": 0, "make_grid": 0, "nlat": 0, "nlon": 0, "creat": 0, "latitud": 0, "longitud": 0, "make_grid_shtn": 0, "lmax": 0, "make_lm": 0, "make_shtdiff": 0, "0004": 0, "return_l": 0, "construct": 0, "diff": 0, "make_shtdiff_np": 0, "from": 0, "tng": 0, "opt": 0, "anaconda3": 0, "env": 0, "lib": 0, "python3": 0, "site": 0, "packag": 0, "__init__": 0, "py": 0, "plain": 0, "randn_relax": 0, "For": 0, "random": 0, "captur": 0, "make_conn_latent_mvnorm": 0, "sc": 0, "nc": 0, "return_ful": 0, "multivari": 0, "over": 0, "nconn": 0, "n": 0, "parcel": 0, "compon": 0, "space": 0, "extra": 0, "inform": 0, "svd": 0, "u_mean": 0, "array_lik": 0, "mean": 0, "u_cov": 0, "covari": 0, "xfm": 0, "map": 0, "full": 0, "u": 0, "left": 0, "singular": 0, "correspond": 0, "embed": 0, "vt": 0, "nconf": 0, "confus": 0, "induc": 0, "dimension": 0, "reduct": 0}, "objects": {"vbjax": [[0, 0, 0, "-", "connectome"], [0, 0, 0, "-", "layers"], [0, 0, 0, "-", "loops"], [0, 0, 0, "-", "monitor"], [0, 0, 0, "-", "neural_mass"], [0, 0, 0, "-", "shtlc"], [0, 0, 0, "-", "sparse"], [0, 0, 0, "-", "util"]], "vbjax.connectome": [[0, 1, 1, "", "make_conn_latent_mvnorm"]], "vbjax.layers": [[0, 1, 1, "", "make_dense_layers"]], "vbjax.loops": [[0, 1, 1, "", "heun_step"], [0, 1, 1, "", "make_dde"], [0, 1, 1, "", "make_ode"], [0, 1, 1, "", "make_sdde"], [0, 1, 1, "", "make_sde"]], "vbjax.monitor": [[0, 1, 1, "", "compute_sarvas_gain"], [0, 1, 1, "", "make_bold"], [0, 1, 1, "", "make_cov"], [0, 1, 1, "", "make_fc"], [0, 1, 1, "", "make_fft"], [0, 1, 1, "", "make_gain"], [0, 1, 1, "", "make_offline"], [0, 1, 1, "", "make_timeavg"]], "vbjax.neural_mass": [[0, 2, 1, "", "BOLDTheta"], [0, 2, 1, "", "BVEPTheta"], [0, 2, 1, "", "JRState"], [0, 2, 1, "", "JRTheta"], [0, 2, 1, "", "MPRState"], [0, 2, 1, "", "MPRTheta"], [0, 1, 1, "", "bold_dfun"], [0, 1, 1, "", "bvep_dfun"], [0, 1, 1, "", "compute_bold_theta"], [0, 1, 1, "", "jr_dfun"], [0, 1, 1, "", "mpr_dfun"]], "vbjax.neural_mass.BOLDTheta": [[0, 3, 1, "", "alpha"], [0, 3, 1, "", "e0"], [0, 3, 1, "", "epsilon"], [0, 3, 1, "", "k1"], [0, 3, 1, "", "k2"], [0, 3, 1, "", "k3"], [0, 3, 1, "", "nu_0"], [0, 3, 1, "", "r_0"], [0, 3, 1, "", "recip_alpha"], [0, 3, 1, "", "recip_e0"], [0, 3, 1, "", "recip_tau_f"], [0, 3, 1, "", "recip_tau_o"], [0, 3, 1, "", "recip_tau_s"], [0, 3, 1, "", "tau_f"], [0, 3, 1, "", "tau_o"], [0, 3, 1, "", "tau_s"], [0, 3, 1, "", "te"], [0, 3, 1, "", "v0"]], "vbjax.neural_mass.BVEPTheta": [[0, 3, 1, "", "I1"], [0, 3, 1, "", "tau0"], [0, 3, 1, "", "x0"]], "vbjax.neural_mass.JRState": [[0, 3, 1, "", "y0"], [0, 3, 1, "", "y1"], [0, 3, 1, "", "y2"], [0, 3, 1, "", "y3"], [0, 3, 1, "", "y4"], [0, 3, 1, "", "y5"]], "vbjax.neural_mass.JRTheta": [[0, 3, 1, "", "A"], [0, 3, 1, "", "B"], [0, 3, 1, "", "I"], [0, 3, 1, "", "J"], [0, 3, 1, "", "a"], [0, 3, 1, "", "a_1"], [0, 3, 1, "", "a_2"], [0, 3, 1, "", "a_3"], [0, 3, 1, "", "a_4"], [0, 3, 1, "", "b"], [0, 3, 1, "", "mu"], [0, 3, 1, "", "nu_max"], [0, 3, 1, "", "r"], [0, 3, 1, "", "v0"]], "vbjax.neural_mass.MPRState": [[0, 3, 1, "", "V"], [0, 3, 1, "", "r"]], "vbjax.neural_mass.MPRTheta": [[0, 3, 1, "", "Delta"], [0, 3, 1, "", "I"], [0, 3, 1, "", "J"], [0, 3, 1, "", "cr"], [0, 3, 1, "", "cv"], [0, 3, 1, "", "eta"], [0, 3, 1, "", "tau"]], "vbjax.shtlc": [[0, 1, 1, "", "grid_pairwise_distance"], [0, 1, 1, "", "kernel_conv_prep"], [0, 1, 1, "", "kernel_diff"], [0, 1, 1, "", "kernel_dist_origin"], [0, 1, 1, "", "kernel_estimate_shtns"], [0, 1, 1, "", "kernel_gaussian"], [0, 1, 1, "", "kernel_laplace"], [0, 1, 1, "", "kernel_mexican_hat"], [0, 1, 1, "", "kernel_sh_normalized"], [0, 1, 1, "", "make_grid"], [0, 1, 1, "", "make_grid_shtns"], [0, 1, 1, "", "make_lm"], [0, 1, 1, "", "make_shtdiff"], [0, 1, 1, "", "make_shtdiff_np"], [0, 1, 1, "", "randn_relaxed"]], "vbjax.sparse": [[0, 1, 1, "", "csr_to_jax_bcoo"], [0, 1, 1, "", "make_sg_spmv"], [0, 1, 1, "", "make_spmv"]], "vbjax.util": [[0, 1, 1, "", "to_jax"], [0, 1, 1, "", "to_np"]]}, "objtypes": {"0": "py:module", "1": "py:function", "2": "py:class", "3": "py:attribute"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "function", "Python function"], "2": ["py", "class", "Python class"], "3": ["py", "attribute", "Python attribute"]}, "titleterms": {"welcom": 0, "vbjax": 0, "": 0, "document": 0, "indic": 0, "tabl": 0, "introduct": 0, "loop": 0, "layer": 0, "monitor": 0, "neural_mass": 0, "spars": 0, "util": 0, "shtlc": 0, "connectom": 0}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx.ext.viewcode": 1, "sphinx": 60}, "alltitles": {"Welcome to vbjax\u2019s documentation!": [[0, "welcome-to-vbjax-s-documentation"]], "Introduction": [[0, "introduction"]], "Indices and tables": [[0, "indices-and-tables"]], "neural_mass": [[0, "module-vbjax.neural_mass"]], "monitor": [[0, "module-vbjax.monitor"]], "loops": [[0, "module-vbjax.loops"]], "connectome": [[0, "module-vbjax.connectome"]], "layers": [[0, "module-vbjax.layers"]], "sparse": [[0, "module-vbjax.sparse"]], "util": [[0, "module-vbjax.util"]], "shtlc": [[0, "module-vbjax.shtlc"]]}, "indexentries": {"a (vbjax.neural_mass.jrtheta attribute)": [[0, "vbjax.neural_mass.JRTheta.A"], [0, "vbjax.neural_mass.JRTheta.a"]], "b (vbjax.neural_mass.jrtheta attribute)": [[0, "vbjax.neural_mass.JRTheta.B"], [0, "vbjax.neural_mass.JRTheta.b"]], "boldtheta (class in vbjax.neural_mass)": [[0, "vbjax.neural_mass.BOLDTheta"]], "bveptheta (class in vbjax.neural_mass)": [[0, "vbjax.neural_mass.BVEPTheta"]], "delta (vbjax.neural_mass.mprtheta attribute)": [[0, "vbjax.neural_mass.MPRTheta.Delta"]], "i (vbjax.neural_mass.jrtheta attribute)": [[0, "vbjax.neural_mass.JRTheta.I"]], "i (vbjax.neural_mass.mprtheta attribute)": [[0, "vbjax.neural_mass.MPRTheta.I"]], "i1 (vbjax.neural_mass.bveptheta attribute)": [[0, "vbjax.neural_mass.BVEPTheta.I1"]], "j (vbjax.neural_mass.jrtheta attribute)": [[0, "vbjax.neural_mass.JRTheta.J"]], "j (vbjax.neural_mass.mprtheta attribute)": [[0, "vbjax.neural_mass.MPRTheta.J"]], "jrstate (class in vbjax.neural_mass)": [[0, "vbjax.neural_mass.JRState"]], "jrtheta (class in vbjax.neural_mass)": [[0, "vbjax.neural_mass.JRTheta"]], "mprstate (class in vbjax.neural_mass)": [[0, "vbjax.neural_mass.MPRState"]], "mprtheta (class in vbjax.neural_mass)": [[0, "vbjax.neural_mass.MPRTheta"]], "v (vbjax.neural_mass.mprstate attribute)": [[0, "vbjax.neural_mass.MPRState.V"]], "a_1 (vbjax.neural_mass.jrtheta attribute)": [[0, "vbjax.neural_mass.JRTheta.a_1"]], "a_2 (vbjax.neural_mass.jrtheta attribute)": [[0, "vbjax.neural_mass.JRTheta.a_2"]], "a_3 (vbjax.neural_mass.jrtheta attribute)": [[0, "vbjax.neural_mass.JRTheta.a_3"]], "a_4 (vbjax.neural_mass.jrtheta attribute)": [[0, "vbjax.neural_mass.JRTheta.a_4"]], "alpha (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.alpha"]], "bold_dfun() (in module vbjax.neural_mass)": [[0, "vbjax.neural_mass.bold_dfun"]], "bvep_dfun() (in module vbjax.neural_mass)": [[0, "vbjax.neural_mass.bvep_dfun"]], "compute_bold_theta() (in module vbjax.neural_mass)": [[0, "vbjax.neural_mass.compute_bold_theta"]], "compute_sarvas_gain() (in module vbjax.monitor)": [[0, "vbjax.monitor.compute_sarvas_gain"]], "cr (vbjax.neural_mass.mprtheta attribute)": [[0, "vbjax.neural_mass.MPRTheta.cr"]], "csr_to_jax_bcoo() (in module vbjax.sparse)": [[0, "vbjax.sparse.csr_to_jax_bcoo"]], "cv (vbjax.neural_mass.mprtheta attribute)": [[0, "vbjax.neural_mass.MPRTheta.cv"]], "e0 (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.e0"]], "epsilon (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.epsilon"]], "eta (vbjax.neural_mass.mprtheta attribute)": [[0, "vbjax.neural_mass.MPRTheta.eta"]], "grid_pairwise_distance() (in module vbjax.shtlc)": [[0, "vbjax.shtlc.grid_pairwise_distance"]], "heun_step() (in module vbjax.loops)": [[0, "vbjax.loops.heun_step"]], "jr_dfun() (in module vbjax.neural_mass)": [[0, "vbjax.neural_mass.jr_dfun"]], "k1 (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.k1"]], "k2 (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.k2"]], "k3 (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.k3"]], "kernel_conv_prep() (in module vbjax.shtlc)": [[0, "vbjax.shtlc.kernel_conv_prep"]], "kernel_diff() (in module vbjax.shtlc)": [[0, "vbjax.shtlc.kernel_diff"]], "kernel_dist_origin() (in module vbjax.shtlc)": [[0, "vbjax.shtlc.kernel_dist_origin"]], "kernel_estimate_shtns() (in module vbjax.shtlc)": [[0, "vbjax.shtlc.kernel_estimate_shtns"]], "kernel_gaussian() (in module vbjax.shtlc)": [[0, "vbjax.shtlc.kernel_gaussian"]], "kernel_laplace() (in module vbjax.shtlc)": [[0, "vbjax.shtlc.kernel_laplace"]], "kernel_mexican_hat() (in module vbjax.shtlc)": [[0, "vbjax.shtlc.kernel_mexican_hat"]], "kernel_sh_normalized() (in module vbjax.shtlc)": [[0, "vbjax.shtlc.kernel_sh_normalized"]], "make_bold() (in module vbjax.monitor)": [[0, "vbjax.monitor.make_bold"]], "make_conn_latent_mvnorm() (in module vbjax.connectome)": [[0, "vbjax.connectome.make_conn_latent_mvnorm"]], "make_cov() (in module vbjax.monitor)": [[0, "vbjax.monitor.make_cov"]], "make_dde() (in module vbjax.loops)": [[0, "vbjax.loops.make_dde"]], "make_dense_layers() (in module vbjax.layers)": [[0, "vbjax.layers.make_dense_layers"]], "make_fc() (in module vbjax.monitor)": [[0, "vbjax.monitor.make_fc"]], "make_fft() (in module vbjax.monitor)": [[0, "vbjax.monitor.make_fft"]], "make_gain() (in module vbjax.monitor)": [[0, "vbjax.monitor.make_gain"]], "make_grid() (in module vbjax.shtlc)": [[0, "vbjax.shtlc.make_grid"]], "make_grid_shtns() (in module vbjax.shtlc)": [[0, "vbjax.shtlc.make_grid_shtns"]], "make_lm() (in module vbjax.shtlc)": [[0, "vbjax.shtlc.make_lm"]], "make_ode() (in module vbjax.loops)": [[0, "vbjax.loops.make_ode"]], "make_offline() (in module vbjax.monitor)": [[0, "vbjax.monitor.make_offline"]], "make_sdde() (in module vbjax.loops)": [[0, "vbjax.loops.make_sdde"]], "make_sde() (in module vbjax.loops)": [[0, "vbjax.loops.make_sde"]], "make_sg_spmv() (in module vbjax.sparse)": [[0, "vbjax.sparse.make_sg_spmv"]], "make_shtdiff() (in module vbjax.shtlc)": [[0, "vbjax.shtlc.make_shtdiff"]], "make_shtdiff_np() (in module vbjax.shtlc)": [[0, "vbjax.shtlc.make_shtdiff_np"]], "make_spmv() (in module vbjax.sparse)": [[0, "vbjax.sparse.make_spmv"]], "make_timeavg() (in module vbjax.monitor)": [[0, "vbjax.monitor.make_timeavg"]], "module": [[0, "module-vbjax.connectome"], [0, "module-vbjax.layers"], [0, "module-vbjax.loops"], [0, "module-vbjax.monitor"], [0, "module-vbjax.neural_mass"], [0, "module-vbjax.shtlc"], [0, "module-vbjax.sparse"], [0, "module-vbjax.util"]], "mpr_dfun() (in module vbjax.neural_mass)": [[0, "vbjax.neural_mass.mpr_dfun"]], "mu (vbjax.neural_mass.jrtheta attribute)": [[0, "vbjax.neural_mass.JRTheta.mu"]], "nu_0 (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.nu_0"]], "nu_max (vbjax.neural_mass.jrtheta attribute)": [[0, "vbjax.neural_mass.JRTheta.nu_max"]], "r (vbjax.neural_mass.jrtheta attribute)": [[0, "vbjax.neural_mass.JRTheta.r"]], "r (vbjax.neural_mass.mprstate attribute)": [[0, "vbjax.neural_mass.MPRState.r"]], "r_0 (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.r_0"]], "randn_relaxed() (in module vbjax.shtlc)": [[0, "vbjax.shtlc.randn_relaxed"]], "recip_alpha (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.recip_alpha"]], "recip_e0 (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.recip_e0"]], "recip_tau_f (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.recip_tau_f"]], "recip_tau_o (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.recip_tau_o"]], "recip_tau_s (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.recip_tau_s"]], "tau (vbjax.neural_mass.mprtheta attribute)": [[0, "vbjax.neural_mass.MPRTheta.tau"]], "tau0 (vbjax.neural_mass.bveptheta attribute)": [[0, "vbjax.neural_mass.BVEPTheta.tau0"]], "tau_f (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.tau_f"]], "tau_o (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.tau_o"]], "tau_s (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.tau_s"]], "te (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.te"]], "to_jax() (in module vbjax.util)": [[0, "vbjax.util.to_jax"]], "to_np() (in module vbjax.util)": [[0, "vbjax.util.to_np"]], "v0 (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.v0"]], "v0 (vbjax.neural_mass.jrtheta attribute)": [[0, "vbjax.neural_mass.JRTheta.v0"]], "vbjax.connectome": [[0, "module-vbjax.connectome"]], "vbjax.layers": [[0, "module-vbjax.layers"]], "vbjax.loops": [[0, "module-vbjax.loops"]], "vbjax.monitor": [[0, "module-vbjax.monitor"]], "vbjax.neural_mass": [[0, "module-vbjax.neural_mass"]], "vbjax.shtlc": [[0, "module-vbjax.shtlc"]], "vbjax.sparse": [[0, "module-vbjax.sparse"]], "vbjax.util": [[0, "module-vbjax.util"]], "x0 (vbjax.neural_mass.bveptheta attribute)": [[0, "vbjax.neural_mass.BVEPTheta.x0"]], "y0 (vbjax.neural_mass.jrstate attribute)": [[0, "vbjax.neural_mass.JRState.y0"]], "y1 (vbjax.neural_mass.jrstate attribute)": [[0, "vbjax.neural_mass.JRState.y1"]], "y2 (vbjax.neural_mass.jrstate attribute)": [[0, "vbjax.neural_mass.JRState.y2"]], "y3 (vbjax.neural_mass.jrstate attribute)": [[0, "vbjax.neural_mass.JRState.y3"]], "y4 (vbjax.neural_mass.jrstate attribute)": [[0, "vbjax.neural_mass.JRState.y4"]], "y5 (vbjax.neural_mass.jrstate attribute)": [[0, "vbjax.neural_mass.JRState.y5"]]}})
\ No newline at end of file
+Search.setIndex({"docnames": ["index", "tutorial"], "filenames": ["index.rst", "tutorial.rst"], "titles": ["Welcome to vbjax\u2019s documentation!", "Tutorial"], "terms": {"i": [0, 1], "jax": 0, "base": 0, "packag": 0, "work": 0, "virtual": 0, "brain": 0, "style": 0, "model": 0, "pip": 0, "can": 0, "us": 0, "sourc": 0, "git": 0, "clone": 0, "http": 0, "github": 0, "com": 0, "ins": 0, "amu": 0, "cd": 0, "dev": 0, "The": 0, "primari": 0, "addit": 0, "depend": 0, "googl": 0, "which": 0, "itself": 0, "onli": 0, "numpi": 0, "scipi": 0, "opt": 0, "einsum": 0, "so": 0, "should": 0, "safe": 0, "add": 0, "your": 0, "exist": 0, "project": 0, "cuda": 0, "If": 0, "have": 0, "enabl": 0, "gpu": 0, "requisit": 0, "like": 0, "upgrad": 0, "cuda11_pip": 0, "f": 0, "storag": 0, "googleapi": 0, "releas": 0, "jax_cuda_releas": 0, "html": 0, "m1": 0, "m2": 0, "On": 0, "newer": 0, "appl": 0, "machin": 0, "w": 0, "support": 0, "experiment": 0, "just": 0, "two": 0, "extra": 0, "ml": 0, "dtype": 0, "0": 0, "2": 0, "metal": 0, "about": 0, "third": 0, "test": [0, 1], "fail": 0, "due": 0, "absenc": 0, "certain": 0, "oper": 0, "n": 0, "dim": 0, "scatter": 0, "gather": 0, "fft": 0, "mai": 0, "faster": 0, "becaus": 0, "cpu": 0, "alreadi": 0, "excel": 0, "memori": 0, "bandwidth": 0, "latenc": 0, "hide": 0, "BUT": 0, "softwar": 0, "stack": 0, "version": 0, "make": 0, "align": 0, "star": 0, "look": 0, "child": 0, "plai": 0, "contain": 0, "imag": 0, "ar": 0, "avail": 0, "auto": 0, "built": 0, "action": 0, "workflow": 0, "docker": 0, "yml": 0, "run": 0, "rm": 0, "ghcr": 0, "io": 0, "main": 0, "python3": 0, "c": 0, "import": 0, "print": 0, "__version__": 0, "nvidia": 0, "runtim": 0, "all": 0, "enough": 0, "discov": 0, "index": 0, "modul": 0, "search": 0, "page": 0, "class": 0, "boldtheta": 0, "tau_": 0, "tau_f": 0, "tau_o": 0, "alpha": 0, "te": 0, "v0": 0, "e0": 0, "epsilon": 0, "nu_0": 0, "r_0": 0, "recip_tau_": 0, "recip_tau_f": 0, "recip_tau_o": 0, "recip_alpha": 0, "recip_e0": 0, "k1": 0, "k2": 0, "k3": 0, "tupl": 0, "alia": 0, "field": 0, "number": 0, "3": 0, "6": 0, "7": 0, "15": 0, "16": 0, "17": 0, "8": 0, "9": 0, "13": 0, "14": 0, "11": 0, "12": 0, "10": 0, "1": 0, "4": 0, "5": 0, "bveptheta": 0, "tau0": 0, "i1": 0, "x0": 0, "jrstate": 0, "y0": 0, "y1": 0, "y2": 0, "y3": 0, "y4": 0, "y5": 0, "jrtheta": 0, "A": 0, "b": 0, "nu_max": 0, "r": 0, "j": 0, "a_1": 0, "a_2": 0, "a_3": 0, "a_4": 0, "mu": 0, "mprstate": 0, "v": 0, "mprtheta": 0, "tau": 0, "delta": 0, "eta": 0, "cr": 0, "cv": 0, "bold_dfun": 0, "sfvq": 0, "x": 0, "p": 0, "bvep_dfun": 0, "y": 0, "compute_bold_theta": 0, "65": 0, "41": 0, "98": 0, "32": 0, "04": 0, "40": 0, "25": 0, "jr_dfun": 0, "mpr_dfun": 0, "compute_sarvas_gain": 0, "q": 0, "o": 0, "att": 0, "d": 0, "dc": 0, "arrai": 0, "make_bold": 0, "shape": 0, "dt": 0, "bold": 0, "fmri": 0, "make_cov": 0, "make_fc": 0, "make_fft": 0, "period": 0, "make_gain": 0, "gain": 0, "none": 0, "matrix": 0, "suitabl": 0, "seeg": 0, "eeg": 0, "meg": 0, "make_offlin": 0, "step_fn": 0, "sample_fn": 0, "arg": 0, "comput": 0, "sampl": 0, "an": 0, "offlin": 0, "batch": 0, "fashion": 0, "make_timeavg": 0, "time": 0, "averag": 0, "function": 0, "build": 0, "step": 0, "heun_step": 0, "dfun": 0, "heun": 0, "scheme": 0, "state": 0, "right": 0, "hand": 0, "side": 0, "forc": 0, "term": 0, "make_dd": 0, "nh": 0, "unrol": 0, "invok": 0, "make_sdd": 0, "gfun": 0, "make_od": 0, "integr": 0, "autonom": 0, "ordinari": 0, "differenti": 0, "equat": 0, "od": 0, "paramet": 0, "float": 0, "form": 0, "deriv": 0, "return": 0, "t": 0, "take": 0, "one": 0, "accord": 0, "iter": 0, "call": 0, "note": 0, "In": 0, "both": 0, "case": 0, "compat": 0, "set": 0, "provid": 0, "either": 0, "some": [0, 1], "pytre": 0, "structur": 0, "vb": 0, "np": 0, "_": 0, "lambda": 0, "r_": 0, "125": 0, "0625": 0, "float32": 0, "weak_typ": 0, "true": 0, "zero_delai": 0, "fals": 0, "stochast": 0, "delai": 0, "sde": 0, "int": 0, "maximum": 0, "xt": 0, "drift": 0, "coeffici": 0, "diffus": 0, "numer": 0, "valu": 0, "thi": [0, 1], "constant": 0, "linear": 0, "x_t": 0, "z_t": 0, "each": 0, "start": 0, "doe": 0, "normal": 0, "distribut": 0, "nois": 0, "must": 0, "user": 0, "histori": 0, "buffer": 0, "pass": 0, "corrector": 0, "stage": 0, "method": 0, "predictor": 0, "perform": 0, "reason": 0, "unless": 0, "good": 0, "compromis": 0, "zero": 0, "sdde": 0, "ones": 0, "22": 0, "make_sd": 0, "z": 0, "randn": 0, "5093468": 0, "30794007": 0, "07600437": 0, "03876263": 0, "make_conn_latent_mvnorm": 0, "sc": 0, "nc": 0, "return_ful": 0, "latent": 0, "multivari": 0, "over": 0, "nconn": 0, "given": 0, "parcel": 0, "option": 0, "compon": 0, "space": 0, "bool": 0, "whether": 0, "inform": 0, "svd": 0, "u_mean": 0, "array_lik": 0, "mean": 0, "u_cov": 0, "covari": 0, "xfm": 0, "map": 0, "vector": 0, "full": 0, "u": 0, "left": 0, "singular": 0, "correspond": 0, "embed": 0, "vt": 0, "nconf": 0, "confus": 0, "induc": 0, "dimension": 0, "reduct": 0, "make_dense_lay": 0, "in_dim": 0, "latent_dim": 0, "out_dim": 0, "init_scl": 0, "extra_in": 0, "act_fn": 0, "pjitfunct": 0, "leaky_relu": 0, "kei": 0, "42": 0, "uint32": 0, "dens": 0, "neural": 0, "network": 0, "size": 0, "csr_to_jax_bcoo": 0, "csr_matrix": 0, "convert": 0, "csr": 0, "format": 0, "coo": 0, "make_sg_spmv": 0, "use_pmap": 0, "shard": 0, "positionalshard": 0, "spmv": 0, "kernel": 0, "gener": 0, "make_spmv": 0, "is_symmetr": 0, "use_scipi": 0, "closur": 0, "multipl": 0, "default": 0, "symmetr": 0, "implement": 0, "spase": 0, "multipli": 0, "gradient": 0, "type": 0, "to_jax": 0, "ndarrai": 0, "move": 0, "via": 0, "dlpack": 0, "to_np": 0, "sht": 0, "local": 0, "coupl": 0, "grid_pairwise_dist": 0, "theta": 0, "phi": 0, "pairwis": 0, "distanc": 0, "grid": 0, "intens": 0, "larg": 0, "kernel_conv_prep": 0, "k": 0, "prepar": 0, "evalu": 0, "convolut": 0, "kernel_diff": 0, "l": 0, "shtn": 0, "order": 0, "kernel_dist_origin": 0, "origin": 0, "kernel_estimate_shtn": 0, "estim": 0, "effect": 0, "object": 0, "kernel_gaussian": 0, "spatial": 0, "spectral": 0, "gaussian": 0, "kernel_laplac": 0, "laplacian": 0, "kernel_mexican_hat": 0, "mexican": 0, "hat": 0, "kernel_sh_norm": 0, "make_grid": 0, "nlat": 0, "nlon": 0, "creat": 0, "latitud": 0, "longitud": 0, "make_grid_shtn": 0, "lmax": 0, "make_lm": 0, "make_shtdiff": 0, "0004": 0, "return_l": 0, "construct": 0, "diff": 0, "make_shtdiff_np": 0, "from": 0, "tng": 0, "anaconda3": 0, "env": 0, "lib": 0, "site": 0, "__init__": 0, "py": 0, "plain": 0, "randn_relax": 0, "For": 0, "random": 0, "captur": 0, "text": 1}, "objects": {"vbjax": [[0, 0, 0, "-", "connectome"], [0, 0, 0, "-", "layers"], [0, 0, 0, "-", "loops"], [0, 0, 0, "-", "monitor"], [0, 0, 0, "-", "neural_mass"], [0, 0, 0, "-", "shtlc"], [0, 0, 0, "-", "sparse"], [0, 0, 0, "-", "util"]], "vbjax.connectome": [[0, 1, 1, "", "make_conn_latent_mvnorm"]], "vbjax.layers": [[0, 1, 1, "", "make_dense_layers"]], "vbjax.loops": [[0, 1, 1, "", "heun_step"], [0, 1, 1, "", "make_dde"], [0, 1, 1, "", "make_ode"], [0, 1, 1, "", "make_sdde"], [0, 1, 1, "", "make_sde"]], "vbjax.monitor": [[0, 1, 1, "", "compute_sarvas_gain"], [0, 1, 1, "", "make_bold"], [0, 1, 1, "", "make_cov"], [0, 1, 1, "", "make_fc"], [0, 1, 1, "", "make_fft"], [0, 1, 1, "", "make_gain"], [0, 1, 1, "", "make_offline"], [0, 1, 1, "", "make_timeavg"]], "vbjax.neural_mass": [[0, 2, 1, "", "BOLDTheta"], [0, 2, 1, "", "BVEPTheta"], [0, 2, 1, "", "JRState"], [0, 2, 1, "", "JRTheta"], [0, 2, 1, "", "MPRState"], [0, 2, 1, "", "MPRTheta"], [0, 1, 1, "", "bold_dfun"], [0, 1, 1, "", "bvep_dfun"], [0, 1, 1, "", "compute_bold_theta"], [0, 1, 1, "", "jr_dfun"], [0, 1, 1, "", "mpr_dfun"]], "vbjax.neural_mass.BOLDTheta": [[0, 3, 1, "", "alpha"], [0, 3, 1, "", "e0"], [0, 3, 1, "", "epsilon"], [0, 3, 1, "", "k1"], [0, 3, 1, "", "k2"], [0, 3, 1, "", "k3"], [0, 3, 1, "", "nu_0"], [0, 3, 1, "", "r_0"], [0, 3, 1, "", "recip_alpha"], [0, 3, 1, "", "recip_e0"], [0, 3, 1, "", "recip_tau_f"], [0, 3, 1, "", "recip_tau_o"], [0, 3, 1, "", "recip_tau_s"], [0, 3, 1, "", "tau_f"], [0, 3, 1, "", "tau_o"], [0, 3, 1, "", "tau_s"], [0, 3, 1, "", "te"], [0, 3, 1, "", "v0"]], "vbjax.neural_mass.BVEPTheta": [[0, 3, 1, "", "I1"], [0, 3, 1, "", "tau0"], [0, 3, 1, "", "x0"]], "vbjax.neural_mass.JRState": [[0, 3, 1, "", "y0"], [0, 3, 1, "", "y1"], [0, 3, 1, "", "y2"], [0, 3, 1, "", "y3"], [0, 3, 1, "", "y4"], [0, 3, 1, "", "y5"]], "vbjax.neural_mass.JRTheta": [[0, 3, 1, "", "A"], [0, 3, 1, "", "B"], [0, 3, 1, "", "I"], [0, 3, 1, "", "J"], [0, 3, 1, "", "a"], [0, 3, 1, "", "a_1"], [0, 3, 1, "", "a_2"], [0, 3, 1, "", "a_3"], [0, 3, 1, "", "a_4"], [0, 3, 1, "", "b"], [0, 3, 1, "", "mu"], [0, 3, 1, "", "nu_max"], [0, 3, 1, "", "r"], [0, 3, 1, "", "v0"]], "vbjax.neural_mass.MPRState": [[0, 3, 1, "", "V"], [0, 3, 1, "", "r"]], "vbjax.neural_mass.MPRTheta": [[0, 3, 1, "", "Delta"], [0, 3, 1, "", "I"], [0, 3, 1, "", "J"], [0, 3, 1, "", "cr"], [0, 3, 1, "", "cv"], [0, 3, 1, "", "eta"], [0, 3, 1, "", "tau"]], "vbjax.shtlc": [[0, 1, 1, "", "grid_pairwise_distance"], [0, 1, 1, "", "kernel_conv_prep"], [0, 1, 1, "", "kernel_diff"], [0, 1, 1, "", "kernel_dist_origin"], [0, 1, 1, "", "kernel_estimate_shtns"], [0, 1, 1, "", "kernel_gaussian"], [0, 1, 1, "", "kernel_laplace"], [0, 1, 1, "", "kernel_mexican_hat"], [0, 1, 1, "", "kernel_sh_normalized"], [0, 1, 1, "", "make_grid"], [0, 1, 1, "", "make_grid_shtns"], [0, 1, 1, "", "make_lm"], [0, 1, 1, "", "make_shtdiff"], [0, 1, 1, "", "make_shtdiff_np"], [0, 1, 1, "", "randn_relaxed"]], "vbjax.sparse": [[0, 1, 1, "", "csr_to_jax_bcoo"], [0, 1, 1, "", "make_sg_spmv"], [0, 1, 1, "", "make_spmv"]], "vbjax.util": [[0, 1, 1, "", "to_jax"], [0, 1, 1, "", "to_np"]]}, "objtypes": {"0": "py:module", "1": "py:function", "2": "py:class", "3": "py:attribute"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "function", "Python function"], "2": ["py", "class", "Python class"], "3": ["py", "attribute", "Python attribute"]}, "titleterms": {"welcom": 0, "vbjax": 0, "": 0, "document": 0, "introduct": 0, "instal": 0, "gee": 0, "pee": 0, "you": 0, "tutori": [0, 1], "content": 0, "neural_mass": 0, "monitor": 0, "loop": 0, "connectom": 0, "layer": 0, "spars": 0, "util": 0, "shtlc": 0}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx.ext.viewcode": 1, "sphinx": 60}, "alltitles": {"Welcome to vbjax\u2019s documentation!": [[0, "welcome-to-vbjax-s-documentation"]], "Introduction": [[0, "introduction"]], "Installation": [[0, "installation"]], "gee pee you": [[0, "gee-pee-you"]], "Tutorial": [[0, "tutorial"], [1, "tutorial"]], "Contents:": [[0, null]], "neural_mass": [[0, "module-vbjax.neural_mass"]], "monitor": [[0, "module-vbjax.monitor"]], "loops": [[0, "module-vbjax.loops"]], "connectome": [[0, "module-vbjax.connectome"]], "layers": [[0, "module-vbjax.layers"]], "sparse": [[0, "module-vbjax.sparse"]], "util": [[0, "module-vbjax.util"]], "shtlc": [[0, "module-vbjax.shtlc"]]}, "indexentries": {"a (vbjax.neural_mass.jrtheta attribute)": [[0, "vbjax.neural_mass.JRTheta.A"], [0, "vbjax.neural_mass.JRTheta.a"]], "b (vbjax.neural_mass.jrtheta attribute)": [[0, "vbjax.neural_mass.JRTheta.B"], [0, "vbjax.neural_mass.JRTheta.b"]], "boldtheta (class in vbjax.neural_mass)": [[0, "vbjax.neural_mass.BOLDTheta"]], "bveptheta (class in vbjax.neural_mass)": [[0, "vbjax.neural_mass.BVEPTheta"]], "delta (vbjax.neural_mass.mprtheta attribute)": [[0, "vbjax.neural_mass.MPRTheta.Delta"]], "i (vbjax.neural_mass.jrtheta attribute)": [[0, "vbjax.neural_mass.JRTheta.I"]], "i (vbjax.neural_mass.mprtheta attribute)": [[0, "vbjax.neural_mass.MPRTheta.I"]], "i1 (vbjax.neural_mass.bveptheta attribute)": [[0, "vbjax.neural_mass.BVEPTheta.I1"]], "j (vbjax.neural_mass.jrtheta attribute)": [[0, "vbjax.neural_mass.JRTheta.J"]], "j (vbjax.neural_mass.mprtheta attribute)": [[0, "vbjax.neural_mass.MPRTheta.J"]], "jrstate (class in vbjax.neural_mass)": [[0, "vbjax.neural_mass.JRState"]], "jrtheta (class in vbjax.neural_mass)": [[0, "vbjax.neural_mass.JRTheta"]], "mprstate (class in vbjax.neural_mass)": [[0, "vbjax.neural_mass.MPRState"]], "mprtheta (class in vbjax.neural_mass)": [[0, "vbjax.neural_mass.MPRTheta"]], "v (vbjax.neural_mass.mprstate attribute)": [[0, "vbjax.neural_mass.MPRState.V"]], "a_1 (vbjax.neural_mass.jrtheta attribute)": [[0, "vbjax.neural_mass.JRTheta.a_1"]], "a_2 (vbjax.neural_mass.jrtheta attribute)": [[0, "vbjax.neural_mass.JRTheta.a_2"]], "a_3 (vbjax.neural_mass.jrtheta attribute)": [[0, "vbjax.neural_mass.JRTheta.a_3"]], "a_4 (vbjax.neural_mass.jrtheta attribute)": [[0, "vbjax.neural_mass.JRTheta.a_4"]], "alpha (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.alpha"]], "bold_dfun() (in module vbjax.neural_mass)": [[0, "vbjax.neural_mass.bold_dfun"]], "bvep_dfun() (in module vbjax.neural_mass)": [[0, "vbjax.neural_mass.bvep_dfun"]], "compute_bold_theta() (in module vbjax.neural_mass)": [[0, "vbjax.neural_mass.compute_bold_theta"]], "compute_sarvas_gain() (in module vbjax.monitor)": [[0, "vbjax.monitor.compute_sarvas_gain"]], "cr (vbjax.neural_mass.mprtheta attribute)": [[0, "vbjax.neural_mass.MPRTheta.cr"]], "csr_to_jax_bcoo() (in module vbjax.sparse)": [[0, "vbjax.sparse.csr_to_jax_bcoo"]], "cv (vbjax.neural_mass.mprtheta attribute)": [[0, "vbjax.neural_mass.MPRTheta.cv"]], "e0 (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.e0"]], "epsilon (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.epsilon"]], "eta (vbjax.neural_mass.mprtheta attribute)": [[0, "vbjax.neural_mass.MPRTheta.eta"]], "grid_pairwise_distance() (in module vbjax.shtlc)": [[0, "vbjax.shtlc.grid_pairwise_distance"]], "heun_step() (in module vbjax.loops)": [[0, "vbjax.loops.heun_step"]], "jr_dfun() (in module vbjax.neural_mass)": [[0, "vbjax.neural_mass.jr_dfun"]], "k1 (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.k1"]], "k2 (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.k2"]], "k3 (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.k3"]], "kernel_conv_prep() (in module vbjax.shtlc)": [[0, "vbjax.shtlc.kernel_conv_prep"]], "kernel_diff() (in module vbjax.shtlc)": [[0, "vbjax.shtlc.kernel_diff"]], "kernel_dist_origin() (in module vbjax.shtlc)": [[0, "vbjax.shtlc.kernel_dist_origin"]], "kernel_estimate_shtns() (in module vbjax.shtlc)": [[0, "vbjax.shtlc.kernel_estimate_shtns"]], "kernel_gaussian() (in module vbjax.shtlc)": [[0, "vbjax.shtlc.kernel_gaussian"]], "kernel_laplace() (in module vbjax.shtlc)": [[0, "vbjax.shtlc.kernel_laplace"]], "kernel_mexican_hat() (in module vbjax.shtlc)": [[0, "vbjax.shtlc.kernel_mexican_hat"]], "kernel_sh_normalized() (in module vbjax.shtlc)": [[0, "vbjax.shtlc.kernel_sh_normalized"]], "make_bold() (in module vbjax.monitor)": [[0, "vbjax.monitor.make_bold"]], "make_conn_latent_mvnorm() (in module vbjax.connectome)": [[0, "vbjax.connectome.make_conn_latent_mvnorm"]], "make_cov() (in module vbjax.monitor)": [[0, "vbjax.monitor.make_cov"]], "make_dde() (in module vbjax.loops)": [[0, "vbjax.loops.make_dde"]], "make_dense_layers() (in module vbjax.layers)": [[0, "vbjax.layers.make_dense_layers"]], "make_fc() (in module vbjax.monitor)": [[0, "vbjax.monitor.make_fc"]], "make_fft() (in module vbjax.monitor)": [[0, "vbjax.monitor.make_fft"]], "make_gain() (in module vbjax.monitor)": [[0, "vbjax.monitor.make_gain"]], "make_grid() (in module vbjax.shtlc)": [[0, "vbjax.shtlc.make_grid"]], "make_grid_shtns() (in module vbjax.shtlc)": [[0, "vbjax.shtlc.make_grid_shtns"]], "make_lm() (in module vbjax.shtlc)": [[0, "vbjax.shtlc.make_lm"]], "make_ode() (in module vbjax.loops)": [[0, "vbjax.loops.make_ode"]], "make_offline() (in module vbjax.monitor)": [[0, "vbjax.monitor.make_offline"]], "make_sdde() (in module vbjax.loops)": [[0, "vbjax.loops.make_sdde"]], "make_sde() (in module vbjax.loops)": [[0, "vbjax.loops.make_sde"]], "make_sg_spmv() (in module vbjax.sparse)": [[0, "vbjax.sparse.make_sg_spmv"]], "make_shtdiff() (in module vbjax.shtlc)": [[0, "vbjax.shtlc.make_shtdiff"]], "make_shtdiff_np() (in module vbjax.shtlc)": [[0, "vbjax.shtlc.make_shtdiff_np"]], "make_spmv() (in module vbjax.sparse)": [[0, "vbjax.sparse.make_spmv"]], "make_timeavg() (in module vbjax.monitor)": [[0, "vbjax.monitor.make_timeavg"]], "module": [[0, "module-vbjax.connectome"], [0, "module-vbjax.layers"], [0, "module-vbjax.loops"], [0, "module-vbjax.monitor"], [0, "module-vbjax.neural_mass"], [0, "module-vbjax.shtlc"], [0, "module-vbjax.sparse"], [0, "module-vbjax.util"]], "mpr_dfun() (in module vbjax.neural_mass)": [[0, "vbjax.neural_mass.mpr_dfun"]], "mu (vbjax.neural_mass.jrtheta attribute)": [[0, "vbjax.neural_mass.JRTheta.mu"]], "nu_0 (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.nu_0"]], "nu_max (vbjax.neural_mass.jrtheta attribute)": [[0, "vbjax.neural_mass.JRTheta.nu_max"]], "r (vbjax.neural_mass.jrtheta attribute)": [[0, "vbjax.neural_mass.JRTheta.r"]], "r (vbjax.neural_mass.mprstate attribute)": [[0, "vbjax.neural_mass.MPRState.r"]], "r_0 (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.r_0"]], "randn_relaxed() (in module vbjax.shtlc)": [[0, "vbjax.shtlc.randn_relaxed"]], "recip_alpha (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.recip_alpha"]], "recip_e0 (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.recip_e0"]], "recip_tau_f (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.recip_tau_f"]], "recip_tau_o (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.recip_tau_o"]], "recip_tau_s (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.recip_tau_s"]], "tau (vbjax.neural_mass.mprtheta attribute)": [[0, "vbjax.neural_mass.MPRTheta.tau"]], "tau0 (vbjax.neural_mass.bveptheta attribute)": [[0, "vbjax.neural_mass.BVEPTheta.tau0"]], "tau_f (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.tau_f"]], "tau_o (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.tau_o"]], "tau_s (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.tau_s"]], "te (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.te"]], "to_jax() (in module vbjax.util)": [[0, "vbjax.util.to_jax"]], "to_np() (in module vbjax.util)": [[0, "vbjax.util.to_np"]], "v0 (vbjax.neural_mass.boldtheta attribute)": [[0, "vbjax.neural_mass.BOLDTheta.v0"]], "v0 (vbjax.neural_mass.jrtheta attribute)": [[0, "vbjax.neural_mass.JRTheta.v0"]], "vbjax.connectome": [[0, "module-vbjax.connectome"]], "vbjax.layers": [[0, "module-vbjax.layers"]], "vbjax.loops": [[0, "module-vbjax.loops"]], "vbjax.monitor": [[0, "module-vbjax.monitor"]], "vbjax.neural_mass": [[0, "module-vbjax.neural_mass"]], "vbjax.shtlc": [[0, "module-vbjax.shtlc"]], "vbjax.sparse": [[0, "module-vbjax.sparse"]], "vbjax.util": [[0, "module-vbjax.util"]], "x0 (vbjax.neural_mass.bveptheta attribute)": [[0, "vbjax.neural_mass.BVEPTheta.x0"]], "y0 (vbjax.neural_mass.jrstate attribute)": [[0, "vbjax.neural_mass.JRState.y0"]], "y1 (vbjax.neural_mass.jrstate attribute)": [[0, "vbjax.neural_mass.JRState.y1"]], "y2 (vbjax.neural_mass.jrstate attribute)": [[0, "vbjax.neural_mass.JRState.y2"]], "y3 (vbjax.neural_mass.jrstate attribute)": [[0, "vbjax.neural_mass.JRState.y3"]], "y4 (vbjax.neural_mass.jrstate attribute)": [[0, "vbjax.neural_mass.JRState.y4"]], "y5 (vbjax.neural_mass.jrstate attribute)": [[0, "vbjax.neural_mass.JRState.y5"]]}})
\ No newline at end of file
diff --git a/docs/source/index.rst b/docs/source/index.rst
index 1c3afc2..77df5d9 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -9,12 +9,78 @@ Welcome to vbjax's documentation!
Introduction
############
+`vbjax` is a Jax-based package for working with virtual brain style models.
+
+Installation
+############
+
+Installs with `pip install "vbjax"`, but you can use the source,
+
+.. code-block:: bash
+
+ git clone https://github.com/ins-amu/vbjax
+ cd vbjax
+ pip install .[dev]
+
+
+The primary additional dependency of vbjax is
+[JAX](github.com/google/jax), which itself depends only on
+NumPy, SciPy & opt-einsum, so it should be safe to add to your
+existing projects.
+
+gee pee you
+------------
+
+**CUDA**
+
+If you have a CUDA-enabled GPU, you install the requisite dependencies like so
+
+.. code-block:: bash
+
+ pip install --upgrade "jax[cuda11_pip]" -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
+
+
+**M1/M2** 🍎
+
+On newer Apple machines w/ M1 or M2 GPUs, JAX supports using the GPU experimentally
+by installing just two extra packages:
+
+.. code-block:: bash
+
+ pip install ml-dtypes==0.2.0 jax-metal
+
+
+About a third of vbjax tests fail due to absence of certain operations like n-dim
+scatter/gather & FFTs, and it may not be faster because these CPUs already have
+excellent memory bandwidth & latency hiding.
+
+**CUDA** 🐳
+
+*BUT* because GPU software stack versions make aligning stars look like child's play,
+container images are available and auto-built w/
+[GitHub Actions](.github/workflows/docker-image.yml), so you can use w/ Docker
+
+.. code-block:: bash
+
+ docker run --rm -it ghcr.io/ins-amu/vbjax:main python3 -c 'import vbjax; print(vbjax.__version__)'
+
+
+The images are built on Nvidia runtime images, so `--gpus all` is enough
+for Jax to discover the GPU(s).
+
.. toctree::
:maxdepth: 2
:caption: Contents:
+Tutorial
+########
+.. toctree::
+ :maxdepth: 2
+ :caption: Contents:
+
+ tutorial
Indices and tables
==================
diff --git a/docs/source/tutorial.rst b/docs/source/tutorial.rst
new file mode 100644
index 0000000..f37f8a9
--- /dev/null
+++ b/docs/source/tutorial.rst
@@ -0,0 +1,6 @@
+
+Tutorial
+***************
+
+This is some test text.
+
diff --git a/docs/tutorial.html b/docs/tutorial.html
new file mode 100644
index 0000000..915939b
--- /dev/null
+++ b/docs/tutorial.html
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
Tutorial — vbjax v0.0.10 documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Tutorial
+This is some test text.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file