From 894fc92ad02069317f3d94d3f13cdf586a113fd5 Mon Sep 17 00:00:00 2001 From: <> Date: Mon, 15 Jul 2024 21:22:18 +0000 Subject: [PATCH] Deployed ab7d890 with MkDocs version: 1.6.0 --- .nojekyll | 0 404.html | 301 + Example/Example.ipynb | 534 ++ Example/index.html | 1593 ++++ assets/images/favicon.png | Bin 0 -> 1870 bytes assets/javascripts/bundle.fe8b6f2b.min.js | 29 + assets/javascripts/bundle.fe8b6f2b.min.js.map | 7 + assets/javascripts/lunr/min/lunr.ar.min.js | 1 + assets/javascripts/lunr/min/lunr.da.min.js | 18 + assets/javascripts/lunr/min/lunr.de.min.js | 18 + assets/javascripts/lunr/min/lunr.du.min.js | 18 + assets/javascripts/lunr/min/lunr.el.min.js | 1 + assets/javascripts/lunr/min/lunr.es.min.js | 18 + assets/javascripts/lunr/min/lunr.fi.min.js | 18 + assets/javascripts/lunr/min/lunr.fr.min.js | 18 + assets/javascripts/lunr/min/lunr.he.min.js | 1 + assets/javascripts/lunr/min/lunr.hi.min.js | 1 + assets/javascripts/lunr/min/lunr.hu.min.js | 18 + assets/javascripts/lunr/min/lunr.hy.min.js | 1 + assets/javascripts/lunr/min/lunr.it.min.js | 18 + assets/javascripts/lunr/min/lunr.ja.min.js | 1 + assets/javascripts/lunr/min/lunr.jp.min.js | 1 + assets/javascripts/lunr/min/lunr.kn.min.js | 1 + assets/javascripts/lunr/min/lunr.ko.min.js | 1 + assets/javascripts/lunr/min/lunr.multi.min.js | 1 + assets/javascripts/lunr/min/lunr.nl.min.js | 18 + assets/javascripts/lunr/min/lunr.no.min.js | 18 + assets/javascripts/lunr/min/lunr.pt.min.js | 18 + assets/javascripts/lunr/min/lunr.ro.min.js | 18 + assets/javascripts/lunr/min/lunr.ru.min.js | 18 + assets/javascripts/lunr/min/lunr.sa.min.js | 1 + .../lunr/min/lunr.stemmer.support.min.js | 1 + assets/javascripts/lunr/min/lunr.sv.min.js | 18 + assets/javascripts/lunr/min/lunr.ta.min.js | 1 + assets/javascripts/lunr/min/lunr.te.min.js | 1 + assets/javascripts/lunr/min/lunr.th.min.js | 1 + assets/javascripts/lunr/min/lunr.tr.min.js | 18 + assets/javascripts/lunr/min/lunr.vi.min.js | 1 + assets/javascripts/lunr/min/lunr.zh.min.js | 1 + assets/javascripts/lunr/tinyseg.js | 206 + assets/javascripts/lunr/wordcut.js | 6708 +++++++++++++++++ .../workers/search.b8dbb3d2.min.js | 42 + .../workers/search.b8dbb3d2.min.js.map | 7 + assets/stylesheets/main.76a95c52.min.css | 1 + assets/stylesheets/main.76a95c52.min.css.map | 1 + assets/stylesheets/palette.06af60db.min.css | 1 + .../stylesheets/palette.06af60db.min.css.map | 1 + index.html | 447 ++ index.md | 17 + javascripts/mathjax.js | 13 + quickstart/index.html | 358 + quickstart/quickstart.md | 23 + sitemap.xml | 3 + sitemap.xml.gz | Bin 0 -> 127 bytes 54 files changed, 10579 insertions(+) create mode 100644 .nojekyll create mode 100644 404.html create mode 100644 Example/Example.ipynb create mode 100644 Example/index.html create mode 100644 assets/images/favicon.png create mode 100644 assets/javascripts/bundle.fe8b6f2b.min.js create mode 100644 assets/javascripts/bundle.fe8b6f2b.min.js.map create mode 100644 assets/javascripts/lunr/min/lunr.ar.min.js create mode 100644 assets/javascripts/lunr/min/lunr.da.min.js create mode 100644 assets/javascripts/lunr/min/lunr.de.min.js create mode 100644 assets/javascripts/lunr/min/lunr.du.min.js create mode 100644 assets/javascripts/lunr/min/lunr.el.min.js create mode 100644 assets/javascripts/lunr/min/lunr.es.min.js create mode 100644 assets/javascripts/lunr/min/lunr.fi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.fr.min.js create mode 100644 assets/javascripts/lunr/min/lunr.he.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hu.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hy.min.js create mode 100644 assets/javascripts/lunr/min/lunr.it.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ja.min.js create mode 100644 assets/javascripts/lunr/min/lunr.jp.min.js create mode 100644 assets/javascripts/lunr/min/lunr.kn.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ko.min.js create mode 100644 assets/javascripts/lunr/min/lunr.multi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.nl.min.js create mode 100644 assets/javascripts/lunr/min/lunr.no.min.js create mode 100644 assets/javascripts/lunr/min/lunr.pt.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ro.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ru.min.js create mode 100644 assets/javascripts/lunr/min/lunr.sa.min.js create mode 100644 assets/javascripts/lunr/min/lunr.stemmer.support.min.js create mode 100644 assets/javascripts/lunr/min/lunr.sv.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ta.min.js create mode 100644 assets/javascripts/lunr/min/lunr.te.min.js create mode 100644 assets/javascripts/lunr/min/lunr.th.min.js create mode 100644 assets/javascripts/lunr/min/lunr.tr.min.js create mode 100644 assets/javascripts/lunr/min/lunr.vi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.zh.min.js create mode 100644 assets/javascripts/lunr/tinyseg.js create mode 100644 assets/javascripts/lunr/wordcut.js create mode 100644 assets/javascripts/workers/search.b8dbb3d2.min.js create mode 100644 assets/javascripts/workers/search.b8dbb3d2.min.js.map create mode 100644 assets/stylesheets/main.76a95c52.min.css create mode 100644 assets/stylesheets/main.76a95c52.min.css.map create mode 100644 assets/stylesheets/palette.06af60db.min.css create mode 100644 assets/stylesheets/palette.06af60db.min.css.map create mode 100644 index.html create mode 100644 index.md create mode 100644 javascripts/mathjax.js create mode 100644 quickstart/index.html create mode 100644 quickstart/quickstart.md create mode 100644 sitemap.xml create mode 100644 sitemap.xml.gz diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/404.html b/404.html new file mode 100644 index 00000000..fc9fc51e --- /dev/null +++ b/404.html @@ -0,0 +1,301 @@ + + + +
+ + + + + + + + + + + + + + +\n", + " | S1 | \n", + "S2 | \n", + "difference_detected | \n", + "
---|---|---|---|
0 | \n", + "0.010000 | \n", + "0.010000 | \n", + "-0.000829 | \n", + "
1 | \n", + "0.010000 | \n", + "0.060404 | \n", + "1.806354 | \n", + "
2 | \n", + "0.010000 | \n", + "0.110808 | \n", + "2.406270 | \n", + "
3 | \n", + "0.010000 | \n", + "0.161212 | \n", + "2.774411 | \n", + "
4 | \n", + "0.010000 | \n", + "0.211616 | \n", + "3.056933 | \n", + "
... | \n", + "... | \n", + "... | \n", + "... | \n", + "
5045 | \n", + "4.899192 | \n", + "4.949596 | \n", + "-0.000753 | \n", + "
5046 | \n", + "4.899192 | \n", + "5.000000 | \n", + "0.037958 | \n", + "
5047 | \n", + "4.949596 | \n", + "4.949596 | \n", + "-0.013647 | \n", + "
5048 | \n", + "4.949596 | \n", + "5.000000 | \n", + "0.020839 | \n", + "
5049 | \n", + "5.000000 | \n", + "5.000000 | \n", + "-0.021462 | \n", + "
5050 rows × 3 columns
\n", + "# Uncomment the following line when running on Google Colab
+# !pip install "autora"
+
Load the Weber-Fechner Law:
+import numpy as np
+from autora.experiment_runner.synthetic.psychophysics.weber_fechner_law import weber_fechner_law
+s = weber_fechner_law()
+
Check the docstring to get information about the model
+help(weber_fechner_law)
+
Help on function weber_fechner_law in module autora.experiment_runner.synthetic.psychophysics.weber_fechner_law: + +weber_fechner_law(name='Weber-Fechner Law', resolution=100, constant=1.0, maximum_stimulus_intensity=5.0) + Weber-Fechner Law + + Args: + name: name of the experiment + resolution: number of allowed values for stimulus 1 and 2 + constant: constant multiplier + maximum_stimulus_intensity: maximum value for stimulus 1 and 2 + + Examples: + >>> experiment = weber_fechner_law() + + # We can run the runner with numpy arrays or DataFrames. Ther return value will + # always be a pandas DataFrame. + >>> experiment.run(np.array([[.1,.2]]), random_state=42) + S1 S2 difference_detected + 0 0.1 0.2 0.696194 + + >>> experiment.run(pd.DataFrame({'S1': [0.1], 'S2': [0.2]}), random_state=42) + S1 S2 difference_detected + 0 0.1 0.2 0.696194 + ++
... or use the describe function:
+from autora.experiment_runner.synthetic.utilities import describe
+
+print(describe(s))
+
+ Weber-Fechner Law + + Args: + name: name of the experiment + resolution: number of allowed values for stimulus 1 and 2 + constant: constant multiplier + maximum_stimulus_intensity: maximum value for stimulus 1 and 2 + + Examples: + >>> experiment = weber_fechner_law() + + # We can run the runner with numpy arrays or DataFrames. Ther return value will + # always be a pandas DataFrame. + >>> experiment.run(np.array([[.1,.2]]), random_state=42) + S1 S2 difference_detected + 0 0.1 0.2 0.696194 + + >>> experiment.run(pd.DataFrame({'S1': [0.1], 'S2': [0.2]}), random_state=42) + S1 S2 difference_detected + 0 0.1 0.2 0.696194 + + ++
The synthetic experiement s
has properties like the name of the experiment:
s.name
+
'Weber-Fechner Law'+
... a valid metadata description:
+s.variables
+
VariableCollection(independent_variables=[IV(name='S1', value_range=(0.01, 5.0), allowed_values=array([0.01 , 0.06040404, 0.11080808, 0.16121212, 0.21161616, + 0.2620202 , 0.31242424, 0.36282828, 0.41323232, 0.46363636, + 0.5140404 , 0.56444444, 0.61484848, 0.66525253, 0.71565657, + 0.76606061, 0.81646465, 0.86686869, 0.91727273, 0.96767677, + 1.01808081, 1.06848485, 1.11888889, 1.16929293, 1.21969697, + 1.27010101, 1.32050505, 1.37090909, 1.42131313, 1.47171717, + 1.52212121, 1.57252525, 1.62292929, 1.67333333, 1.72373737, + 1.77414141, 1.82454545, 1.87494949, 1.92535354, 1.97575758, + 2.02616162, 2.07656566, 2.1269697 , 2.17737374, 2.22777778, + 2.27818182, 2.32858586, 2.3789899 , 2.42939394, 2.47979798, + 2.53020202, 2.58060606, 2.6310101 , 2.68141414, 2.73181818, + 2.78222222, 2.83262626, 2.8830303 , 2.93343434, 2.98383838, + 3.03424242, 3.08464646, 3.13505051, 3.18545455, 3.23585859, + 3.28626263, 3.33666667, 3.38707071, 3.43747475, 3.48787879, + 3.53828283, 3.58868687, 3.63909091, 3.68949495, 3.73989899, + 3.79030303, 3.84070707, 3.89111111, 3.94151515, 3.99191919, + 4.04232323, 4.09272727, 4.14313131, 4.19353535, 4.24393939, + 4.29434343, 4.34474747, 4.39515152, 4.44555556, 4.4959596 , + 4.54636364, 4.59676768, 4.64717172, 4.69757576, 4.7479798 , + 4.79838384, 4.84878788, 4.89919192, 4.94959596, 5. ]), units='intensity', type=<ValueType.REAL: 'real'>, variable_label='Stimulus 1 Intensity', rescale=1, is_covariate=False), IV(name='S2', value_range=(0.01, 5.0), allowed_values=array([0.01 , 0.06040404, 0.11080808, 0.16121212, 0.21161616, + 0.2620202 , 0.31242424, 0.36282828, 0.41323232, 0.46363636, + 0.5140404 , 0.56444444, 0.61484848, 0.66525253, 0.71565657, + 0.76606061, 0.81646465, 0.86686869, 0.91727273, 0.96767677, + 1.01808081, 1.06848485, 1.11888889, 1.16929293, 1.21969697, + 1.27010101, 1.32050505, 1.37090909, 1.42131313, 1.47171717, + 1.52212121, 1.57252525, 1.62292929, 1.67333333, 1.72373737, + 1.77414141, 1.82454545, 1.87494949, 1.92535354, 1.97575758, + 2.02616162, 2.07656566, 2.1269697 , 2.17737374, 2.22777778, + 2.27818182, 2.32858586, 2.3789899 , 2.42939394, 2.47979798, + 2.53020202, 2.58060606, 2.6310101 , 2.68141414, 2.73181818, + 2.78222222, 2.83262626, 2.8830303 , 2.93343434, 2.98383838, + 3.03424242, 3.08464646, 3.13505051, 3.18545455, 3.23585859, + 3.28626263, 3.33666667, 3.38707071, 3.43747475, 3.48787879, + 3.53828283, 3.58868687, 3.63909091, 3.68949495, 3.73989899, + 3.79030303, 3.84070707, 3.89111111, 3.94151515, 3.99191919, + 4.04232323, 4.09272727, 4.14313131, 4.19353535, 4.24393939, + 4.29434343, 4.34474747, 4.39515152, 4.44555556, 4.4959596 , + 4.54636364, 4.59676768, 4.64717172, 4.69757576, 4.7479798 , + 4.79838384, 4.84878788, 4.89919192, 4.94959596, 5. ]), units='intensity', type=<ValueType.REAL: 'real'>, variable_label='Stimulus 2 Intensity', rescale=1, is_covariate=False)], dependent_variables=[DV(name='difference_detected', value_range=(0, 5.0), allowed_values=None, units='sensation', type=<ValueType.REAL: 'real'>, variable_label='Sensation', rescale=1, is_covariate=False)], covariates=[])+
... a function to generate the full domain of the data (if possible)
+x = s.domain()
+x
+
array([[0.01 , 0.01 ], + [0.01 , 0.06040404], + [0.01 , 0.11080808], + ..., + [4.94959596, 4.94959596], + [4.94959596, 5. ], + [5. , 5. ]])+
... the experiment_runner runner which can be called to generate experimental results:
+import numpy as np
+y = s.run(x) # doctest: +ELLIPSIS
+y
+
+ | S1 | +S2 | +difference_detected | +
---|---|---|---|
0 | +0.010000 | +0.010000 | +-0.000829 | +
1 | +0.010000 | +0.060404 | +1.806354 | +
2 | +0.010000 | +0.110808 | +2.406270 | +
3 | +0.010000 | +0.161212 | +2.774411 | +
4 | +0.010000 | +0.211616 | +3.056933 | +
... | +... | +... | +... | +
5045 | +4.899192 | +4.949596 | +-0.000753 | +
5046 | +4.899192 | +5.000000 | +0.037958 | +
5047 | +4.949596 | +4.949596 | +-0.013647 | +
5048 | +4.949596 | +5.000000 | +0.020839 | +
5049 | +5.000000 | +5.000000 | +-0.021462 | +
5050 rows × 3 columns
+... a function to plot the ground truth:
+s.plotter()
+
... against a fitted model if it exists:
+from sklearn.linear_model import LinearRegression
+model = LinearRegression().fit(x, y)
+s.plotter(model)
+
These can be used to run a full experimental cycle
+from autora.workflow.protocol import ResultKind
+from autora.experimentalist.pipeline import make_pipeline
+from autora.experimentalist.pooler.grid import grid_pool
+from autora.experimentalist.sampler.random_sampler import random_sample
+from functools import partial
+import random
+variables = s.variables
+pool = partial(grid_pool, ivs=variables.independent_variables)
+random.seed(181) # set the seed for the random sampler
+sampler = partial(random_sample, n=20)
+experimentalist_pipeline = make_pipeline([pool, sampler])
+
+from autora.workflow import Controller
+theorist = LinearRegression()
+
+cycle = Controller(
+ variables=variables, experimentalist=experimentalist_pipeline,
+ experiment_runner=s.experiment_runner, theorist=theorist,
+ monitor=lambda s: (s.history[-1].kind == ResultKind.MODEL) and
+ print(f"finished cycle {len(s.models)}"))
+
+c = cycle.run(10)
+best_model = c.state.models[-1]
+print(f"I = "
+ f"{best_model.coef_[0]:.2f} S0 "
+ f"{best_model.coef_[1]:+.2f} S1 "
+ f"{best_model.intercept_:+.2f}")
+
finished cycle 1 +finished cycle 2 +finished cycle 3 +I = -0.49 S0 +0.58 S1 -0.21 ++
+