diff --git a/CHANGELOG.md b/CHANGELOG.md index dd27499..2886081 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added `cpm.models.learning.SARSATrace`, a SARSA learning rule with an eligibility trace - Added test units for `HybridMBMF` and `SARSATrace` - Added a two-step task example replicating Smid et al. (2022), with its data in `cpm.datasets.load_two_step_data` +- Added an example that fits causal ratings in a blocking experiment, recreating Figures 1 and 2 of Spicer et al. (2021), with its data in `cpm.datasets.load_blocking_data`; based on an earlier version by @chotong - Added `cpm.generators.SessionWrapper`, a `Wrapper` for models that compute all trials of a participant at once - Added `cpm.models.kernels`, the formulas of the `cpm.models` classes as functions that numba can compile, used by the classes and the built-in applications - Added numba as an optional dependency (`pip install "cpm-toolbox[numba]"`) that compiles the built-in applications; without it, they give the same results as plain Python diff --git a/cpm/datasets/__init__.py b/cpm/datasets/__init__.py index b5ee59c..83e91d9 100644 --- a/cpm/datasets/__init__.py +++ b/cpm/datasets/__init__.py @@ -2,4 +2,5 @@ from .base import load_risky_choices from .base import load_metacognition_data from .base import load_two_step_data +from .base import load_blocking_data from .base import load_csv diff --git a/cpm/datasets/base.py b/cpm/datasets/base.py index ac15c45..b278190 100644 --- a/cpm/datasets/base.py +++ b/cpm/datasets/base.py @@ -234,3 +234,53 @@ def load_two_step_data(): Smid et al. (2022). Computational and behavioral correlates of developmental changes in model-based/model-free decision-making. Developmental Science, e13380. """ return load_csv("two_step_adults.csv") + + +def load_blocking_data(): + """ + Load the test-stage ratings of the blocking experiment of Spicer et al. (2021). + + Returns + ------- + pd.DataFrame + A pandas DataFrame with one row per test trial and participant. + + Examples + -------- + >>> data = load_blocking_data() + >>> data.groupby(["ppt", "cue"]).rating.mean().unstack().mean() + + Notes + ----- + Forty-one participants learned which foods caused stomach ache in a + fictional patient. In Stage 1, they saw twelve blocks of the single cues A+, + B- and C-, and in Stage 2, six blocks of the compounds AX+, BY+ and CD-, where + + means that the patient had stomach ache and - that they did not. X is the + blocked cue, Y its control, and C and D are fillers. In the test stage, they + rated how likely each single cue was to cause stomach ache, on a scale from 0 + (very unlikely) to 10 (very likely), without feedback, in ten blocks of the six + cues. Only the test stage is included; the trial orders of the training stages + were randomised for each participant, and are not available. + + The data were originally published by the authors on the Open Science + Framework (`osf.io/sa8ux `__), and the experiment is + described in their supplementary materials + (`osf.io/7u6re `__). They are licensed under the + `Creative Commons Attribution 4.0 International License (CC BY 4.0) + `__; cite Spicer et al. (2021) + when you use them. + + The dataset includes the following columns: + + - ``ppt``: the participant number. + - ``block``: the test block (1 to 10). + - ``trial``: the test trial (1 to 60). + - ``cue``: the cue that was rated (A, B, C, D, X or Y). + - ``rating``: the rating, from 0 to 10. + - ``rt``: the response time, in seconds. + + References + ---------- + Spicer, S. G., Wills, A. J., Jones, P. M., Mitchell, C. J., & Dome, L. (2021). Representing uncertainty in the Rescorla-Wagner model: Blocking, the redundancy effect, and outcome base rate. Open Journal of Experimental Psychology and Neuroscience, 1, 14-21. + """ + return load_csv("blocking_ratings.csv") diff --git a/cpm/datasets/data/blocking_ratings.csv b/cpm/datasets/data/blocking_ratings.csv new file mode 100644 index 0000000..4e52b03 --- /dev/null +++ b/cpm/datasets/data/blocking_ratings.csv @@ -0,0 +1,2461 @@ +ppt,block,trial,cue,rating,rt +101,1,1,B,0,8.22 +101,1,2,C,0,1.586 +101,1,3,D,0,1.536 +101,1,4,X,0,0.77 +101,1,5,Y,10,2.453 +101,1,6,A,10,0.62 +101,2,7,Y,10,0.586 +101,2,8,X,0,1.836 +101,2,9,C,0,0.803 +101,2,10,A,10,1.236 +101,2,11,B,0,1.653 +101,2,12,D,0,1.853 +101,3,13,A,10,1.47 +101,3,14,C,0,1.22 +101,3,15,D,0,0.853 +101,3,16,B,0,0.57 +101,3,17,X,0,0.42 +101,3,18,Y,10,1.819 +101,4,19,C,0,1.536 +101,4,20,D,0,0.42 +101,4,21,X,0,0.42 +101,4,22,Y,0,0.42 +101,4,23,A,10,1.386 +101,4,24,B,0,1.253 +101,5,25,B,0,0.503 +101,5,26,D,0,0.887 +101,5,27,C,0,0.42 +101,5,28,X,0,0.422 +101,5,29,A,10,1.12 +101,5,30,Y,10,1.087 +101,6,31,B,0,1.22 +101,6,32,Y,10,1.286 +101,6,33,C,0,1.62 +101,6,34,D,0,0.503 +101,6,35,A,10,1.387 +101,6,36,X,0,1.186 +101,7,37,Y,10,1.587 +101,7,38,B,0,0.97 +101,7,39,X,0,0.436 +101,7,40,A,10,1.286 +101,7,41,C,0,1.42 +101,7,42,D,0,0.486 +101,8,43,B,0,0.487 +101,8,44,D,0,0.42 +101,8,45,C,0,0.438 +101,8,46,A,10,0.903 +101,8,47,X,0,1.153 +101,8,48,Y,10,1.17 +101,9,49,C,0,1.236 +101,9,50,B,0,0.453 +101,9,51,Y,10,1.37 +101,9,52,D,0,1.054 +101,9,53,A,10,1.287 +101,9,54,X,0,1.269 +101,10,55,C,0,0.703 +101,10,56,D,0,0.406 +101,10,57,Y,10,1.369 +101,10,58,A,10,1.403 +101,10,59,B,0,1.253 +101,10,60,X,0,0.587 +102,1,1,D,0,3.389 +102,1,2,B,0,2.041 +102,1,3,Y,10,2.141 +102,1,4,C,0,3.405 +102,1,5,A,10,2.22 +102,1,6,X,10,1.024 +102,2,7,A,10,1.024 +102,2,8,C,0,3.236 +102,2,9,D,0,1.46 +102,2,10,B,3,1.87 +102,2,11,X,3,5.939 +102,2,12,Y,10,2.122 +102,3,13,C,0,1.62 +102,3,14,B,0,0.955 +102,3,15,A,10,1.322 +102,3,16,X,3,2.024 +102,3,17,Y,3,0.703 +102,3,18,D,0,1.856 +102,4,19,A,10,1.174 +102,4,20,X,3,2.539 +102,4,21,D,1,2.321 +102,4,22,C,0,1.224 +102,4,23,Y,3,1.72 +102,4,24,B,0,1.42 +102,5,25,A,10,1.039 +102,5,26,B,0,1.452 +102,5,27,D,0,1.253 +102,5,28,Y,3,1.486 +102,5,29,X,3,0.89 +102,5,30,C,0,3.091 +102,6,31,A,10,1.27 +102,6,32,Y,3,1.857 +102,6,33,X,3,0.653 +102,6,34,D,0,1.105 +102,6,35,C,0,0.931 +102,6,36,B,0,2.791 +102,7,37,D,0,0.903 +102,7,38,X,3,1.321 +102,7,39,Y,3,0.724 +102,7,40,C,0,1.27 +102,7,41,A,10,1.07 +102,7,42,B,0,1.62 +102,8,43,X,3,1.793 +102,8,44,A,10,1.107 +102,8,45,Y,3,1.291 +102,8,46,B,0,1.122 +102,8,47,C,0,0.986 +102,8,48,D,0,0.889 +102,9,49,D,0,0.603 +102,9,50,C,0,1.003 +102,9,51,A,9,1.275 +102,9,52,B,0,1.674 +102,9,53,Y,3,1.989 +102,9,54,X,3,0.724 +102,10,55,Y,3,0.803 +102,10,56,B,0,1.074 +102,10,57,A,10,1.603 +102,10,58,C,0,2.574 +102,10,59,X,3,1.153 +102,10,60,D,0,1.155 +103,1,1,D,1,9.153 +103,1,2,A,10,2.037 +103,1,3,Y,8,4.07 +103,1,4,X,9,1.853 +103,1,5,C,1,2.22 +103,1,6,B,1,0.886 +103,2,7,A,10,1.603 +103,2,8,B,1,1.953 +103,2,9,D,1,1.337 +103,2,10,Y,8,1.787 +103,2,11,C,1,2.703 +103,2,12,X,9,1.92 +103,3,13,A,10,0.803 +103,3,14,Y,8,1.087 +103,3,15,D,1,2.32 +103,3,16,X,9,1.803 +103,3,17,B,1,1.503 +103,3,18,C,1,2.27 +103,4,19,X,9,1.37 +103,4,20,B,1,1.47 +103,4,21,D,1,2.12 +103,4,22,Y,8,2.153 +103,4,23,A,10,1.103 +103,4,24,C,1,1.337 +103,5,25,A,10,1.47 +103,5,26,X,9,1.136 +103,5,27,C,2,1.703 +103,5,28,Y,8,2.22 +103,5,29,B,1,1.687 +103,5,30,D,1,1.12 +103,6,31,A,10,1.287 +103,6,32,X,9,0.786 +103,6,33,B,1,1.237 +103,6,34,Y,8,1.553 +103,6,35,D,1,1.336 +103,6,36,C,1,1.053 +103,7,37,B,1,1.003 +103,7,38,D,1,0.553 +103,7,39,A,10,1.42 +103,7,40,Y,8,0.936 +103,7,41,C,1,1.236 +103,7,42,X,9,1.153 +103,8,43,D,1,1.503 +103,8,44,B,1,1.237 +103,8,45,Y,8,1.82 +103,8,46,X,9,0.987 +103,8,47,C,1,1.603 +103,8,48,A,10,1.22 +103,9,49,D,1,1.42 +103,9,50,Y,8,2.103 +103,9,51,B,1,2.02 +103,9,52,X,9,1.136 +103,9,53,C,1,1.236 +103,9,54,A,10,1.32 +103,10,55,D,1,1.12 +103,10,56,B,1,1.503 +103,10,57,Y,8,1.453 +103,10,58,X,9,0.637 +103,10,59,A,10,0.637 +103,10,60,C,1,1.486 +104,1,1,X,5,15.954 +104,1,2,A,10,3.553 +104,1,3,Y,10,5.187 +104,1,4,D,0,4.12 +104,1,5,B,0,1.737 +104,1,6,C,0,1.42 +104,2,7,C,0,1.853 +104,2,8,Y,10,2.87 +104,2,9,A,10,1.187 +104,2,10,D,0,2.02 +104,2,11,X,5,4.27 +104,2,12,B,0,3.103 +104,3,13,C,0,1.103 +104,3,14,A,10,2.62 +104,3,15,Y,10,1.053 +104,3,16,X,5,1.836 +104,3,17,D,0,1.537 +104,3,18,B,0,1.02 +104,4,19,A,10,2.003 +104,4,20,X,5,3.07 +104,4,21,Y,10,2.72 +104,4,22,C,0,1.687 +104,4,23,D,0,0.801 +104,4,24,B,0,1.07 +104,5,25,D,0,3.486 +104,5,26,B,0,1.053 +104,5,27,A,10,1.887 +104,5,28,X,5,1.653 +104,5,29,Y,10,2.187 +104,5,30,C,0,1.903 +104,6,31,C,0,0.753 +104,6,32,A,10,1.903 +104,6,33,B,0,1.87 +104,6,34,X,5,1.67 +104,6,35,Y,10,1.92 +104,6,36,D,0,1.503 +104,7,37,C,0,0.77 +104,7,38,Y,10,1.737 +104,7,39,D,0,1.653 +104,7,40,X,5,1.736 +104,7,41,A,10,1.52 +104,7,42,B,0,2.003 +104,8,43,Y,10,3.77 +104,8,44,B,0,1.653 +104,8,45,C,0,4.62 +104,8,46,X,5,2.387 +104,8,47,A,10,6.72 +104,8,48,D,0,2.837 +104,9,49,B,0,0.67 +104,9,50,C,0,0.52 +104,9,51,X,5,1.653 +104,9,52,D,0,1.37 +104,9,53,A,10,1.62 +104,9,54,Y,10,0.936 +104,10,55,C,0,1.587 +104,10,56,D,0,0.753 +104,10,57,Y,10,1.97 +104,10,58,X,5,1.536 +104,10,59,B,0,2.77 +104,10,60,A,10,1.753 +105,1,1,Y,10,5.436 +105,1,2,B,0,3.57 +105,1,3,D,0,4.841 +105,1,4,X,6,3.389 +105,1,5,A,10,2.157 +105,1,6,C,0,1.907 +105,2,7,X,6,2.886 +105,2,8,A,10,1.224 +105,2,9,Y,10,2.253 +105,2,10,B,0,1.439 +105,2,11,D,0,0.686 +105,2,12,C,0,0.524 +105,3,13,D,2,2.558 +105,3,14,B,0,1.424 +105,3,15,A,10,3.453 +105,3,16,C,0,1.67 +105,3,17,Y,10,2.255 +105,3,18,X,6,2.624 +105,4,19,D,0,2.736 +105,4,20,Y,10,1.324 +105,4,21,X,6,3.856 +105,4,22,B,0,6.641 +105,4,23,C,0,0.931 +105,4,24,A,10,2.22 +105,5,25,A,10,0.404 +105,5,26,B,0,1.437 +105,5,27,D,0,0.843 +105,5,28,C,0,0.503 +105,5,29,X,6,1.77 +105,5,30,Y,10,1.041 +105,6,31,A,10,0.872 +105,6,32,C,0,1.122 +105,6,33,X,6,1.353 +105,6,34,B,0,1.103 +105,6,35,Y,10,1.155 +105,6,36,D,0,1.153 +105,7,37,C,1,0.603 +105,7,38,A,10,1.139 +105,7,39,B,0,1.19 +105,7,40,Y,10,1.322 +105,7,41,D,0,1.322 +105,7,42,X,6,1.081 +105,8,43,B,0,1.222 +105,8,44,X,6,1.02 +105,8,45,A,10,1.07 +105,8,46,D,0,1.208 +105,8,47,C,0,1.091 +105,8,48,Y,10,1.056 +105,9,49,C,0,1.053 +105,9,50,B,0,1.224 +105,9,51,X,6,0.957 +105,9,52,A,10,0.915 +105,9,53,Y,10,0.92 +105,9,54,D,0,1.342 +105,10,55,A,10,1.17 +105,10,56,D,0,1.058 +105,10,57,C,0,0.586 +105,10,58,B,0,1.774 +105,10,59,Y,10,1.253 +105,10,60,X,6,1.153 +106,1,1,X,5,5.036 +106,1,2,Y,10,5.12 +106,1,3,B,0,3.503 +106,1,4,D,0,3.403 +106,1,5,C,0,1.986 +106,1,6,A,10,1.603 +106,2,7,C,0,1.603 +106,2,8,X,5,1.003 +106,2,9,A,10,1.553 +106,2,10,B,0,2.32 +106,2,11,D,0,1.686 +106,2,12,Y,10,1.253 +106,3,13,D,0,0.903 +106,3,14,C,0,3.887 +106,3,15,A,10,1.837 +106,3,16,Y,10,1.286 +106,3,17,X,5,0.803 +106,3,18,B,0,0.887 +106,4,19,Y,10,2.02 +106,4,20,D,0,1.486 +106,4,21,B,0,1.003 +106,4,22,A,10,1.305 +106,4,23,C,0,1.603 +106,4,24,X,5,1.103 +106,5,25,Y,10,2.57 +106,5,26,C,0,1.536 +106,5,27,D,0,1.003 +106,5,28,B,0,1.436 +106,5,29,X,5,1.57 +106,5,30,A,10,1.486 +106,6,31,A,10,1.303 +106,6,32,Y,10,0.936 +106,6,33,B,0,1.236 +106,6,34,X,5,1.853 +106,6,35,D,0,1.02 +106,6,36,C,0,1.303 +106,7,37,B,0,1.019 +106,7,38,C,0,1.336 +106,7,39,D,0,0.97 +106,7,40,Y,10,1.37 +106,7,41,X,5,1.303 +106,7,42,A,10,1.153 +106,8,43,B,0,1.237 +106,8,44,Y,10,1.07 +106,8,45,A,10,1.286 +106,8,46,D,0,1.136 +106,8,47,C,0,0.886 +106,8,48,X,5,0.903 +106,9,49,A,10,1.153 +106,9,50,D,0,1.236 +106,9,51,B,0,1.303 +106,9,52,Y,10,1.62 +106,9,53,C,0,1.236 +106,9,54,X,5,1.77 +106,10,55,A,10,1.37 +106,10,56,X,5,0.97 +106,10,57,Y,10,2.386 +106,10,58,C,0,0.736 +106,10,59,B,0,0.487 +106,10,60,D,0,1.336 +107,1,1,D,0,8.653 +107,1,2,Y,10,5.37 +107,1,3,X,5,4.737 +107,1,4,C,0,3.57 +107,1,5,A,10,1.72 +107,1,6,B,0,1.336 +107,2,7,C,0,1.62 +107,2,8,D,0,2.77 +107,2,9,X,5,3.62 +107,2,10,B,0,1.637 +107,2,11,Y,10,2.437 +107,2,12,A,10,1.453 +107,3,13,A,10,1.236 +107,3,14,C,0,1.053 +107,3,15,D,0,1.37 +107,3,16,B,0,2.303 +107,3,17,Y,10,3.67 +107,3,18,X,5,1.637 +107,4,19,Y,10,1.77 +107,4,20,D,0,1.253 +107,4,21,X,5,1.72 +107,4,22,C,0,1.587 +107,4,23,B,0,2.303 +107,4,24,A,10,1.803 +107,5,25,B,0,1.37 +107,5,26,D,0,1.253 +107,5,27,C,0,0.953 +107,5,28,A,10,1.32 +107,5,29,Y,10,2.386 +107,5,30,X,5,1.22 +107,6,31,Y,10,1.887 +107,6,32,D,0,1.037 +107,6,33,B,0,1.486 +107,6,34,X,5,1.936 +107,6,35,A,10,2.086 +107,6,36,C,0,1.136 +107,7,37,Y,10,1.92 +107,7,38,D,0,1.17 +107,7,39,B,0,1.053 +107,7,40,X,5,2.336 +107,7,41,C,0,2.003 +107,7,42,A,10,1.137 +107,8,43,X,5,1.336 +107,8,44,B,0,1.12 +107,8,45,A,10,1.253 +107,8,46,Y,10,1.136 +107,8,47,D,0,1.403 +107,8,48,C,0,1.453 +107,9,49,A,10,1.036 +107,9,50,B,0,1.969 +107,9,51,Y,10,2.27 +107,9,52,D,0,0.87 +107,9,53,X,5,2.403 +107,9,54,C,0,1.77 +107,10,55,C,0,0.836 +107,10,56,Y,10,1.303 +107,10,57,X,5,1.086 +107,10,58,B,0,1.237 +107,10,59,D,0,0.853 +107,10,60,A,10,1.037 +108,1,1,X,2,12.452 +108,1,2,D,0,1.753 +108,1,3,B,0,2.086 +108,1,4,C,0,0.554 +108,1,5,A,10,1.803 +108,1,6,Y,10,1.405 +108,2,7,X,5,1.506 +108,2,8,Y,10,1.374 +108,2,9,C,0,3.153 +108,2,10,D,0,1.253 +108,2,11,A,10,1.691 +108,2,12,B,0,2.022 +108,3,13,B,0,0.737 +108,3,14,Y,10,1.458 +108,3,15,X,2,1.424 +108,3,16,D,0,2.837 +108,3,17,C,0,1.655 +108,3,18,A,10,0.92 +108,4,19,D,3,1.555 +108,4,20,A,10,1.436 +108,4,21,C,0,2.153 +108,4,22,X,2,1.67 +108,4,23,Y,10,0.938 +108,4,24,B,0,3.374 +108,5,25,C,0,1.374 +108,5,26,B,0,0.587 +108,5,27,X,2,1.803 +108,5,28,Y,10,1.237 +108,5,29,A,10,0.653 +108,5,30,D,2,2.991 +108,6,31,C,0,2.372 +108,6,32,B,0,0.97 +108,6,33,Y,10,2.872 +108,6,34,X,2,1.724 +108,6,35,A,10,1.237 +108,6,36,D,2,1.174 +108,7,37,C,0,1.324 +108,7,38,X,2,1.037 +108,7,39,Y,10,1.358 +108,7,40,A,10,0.453 +108,7,41,B,0,1.358 +108,7,42,D,2,1.272 +108,8,43,C,0,0.989 +108,8,44,D,2,1.481 +108,8,45,A,10,1.22 +108,8,46,X,2,1.17 +108,8,47,B,0,1.405 +108,8,48,Y,10,1.353 +108,9,49,A,10,0.524 +108,9,50,D,2,2.12 +108,9,51,Y,10,1.291 +108,9,52,C,0,2.058 +108,9,53,B,0,2.124 +108,9,54,X,0,2.269 +108,10,55,B,0,0.922 +108,10,56,Y,10,1.024 +108,10,57,X,0,1.736 +108,10,58,D,0,2.17 +108,10,59,A,10,0.993 +108,10,60,C,0,1.37 +109,1,1,D,2,4.486 +109,1,2,C,0,1.77 +109,1,3,B,0,0.92 +109,1,4,Y,8,1.703 +109,1,5,A,8,0.686 +109,1,6,X,5,1.553 +109,2,7,C,0,1.52 +109,2,8,A,8,1.536 +109,2,9,Y,8,0.803 +109,2,10,D,0,1.32 +109,2,11,B,0,1.12 +109,2,12,X,0,2.353 +109,3,13,X,0,0.62 +109,3,14,D,0,2.07 +109,3,15,B,0,1.02 +109,3,16,A,9,1.52 +109,3,17,Y,9,0.703 +109,3,18,C,0,1.136 +109,4,19,A,9,1.537 +109,4,20,Y,9,0.57 +109,4,21,X,0,1.07 +109,4,22,B,0,0.737 +109,4,23,D,0,0.52 +109,4,24,C,0,0.553 +109,5,25,X,0,0.453 +109,5,26,B,0,0.919 +109,5,27,C,0,0.57 +109,5,28,Y,9,1.153 +109,5,29,D,0,1.62 +109,5,30,A,9,1.07 +109,6,31,A,9,0.603 +109,6,32,X,0,0.887 +109,6,33,Y,9,1.003 +109,6,34,C,0,0.853 +109,6,35,D,0,1.02 +109,6,36,B,0,1.187 +109,7,37,D,0,0.886 +109,7,38,C,0,0.436 +109,7,39,A,8,0.936 +109,7,40,X,1,1.036 +109,7,41,Y,9,1.387 +109,7,42,B,0,1.387 +109,8,43,B,0,0.436 +109,8,44,C,0,0.42 +109,8,45,D,0,0.423 +109,8,46,X,0,0.42 +109,8,47,Y,8,1.003 +109,8,48,A,8,0.47 +109,9,49,Y,8,0.52 +109,9,50,B,0,1.053 +109,9,51,X,0,0.536 +109,9,52,D,0,0.437 +109,9,53,A,10,1.186 +109,9,54,C,0,0.953 +109,10,55,X,9,0.953 +109,10,56,Y,9,0.704 +109,10,57,D,0,1.403 +109,10,58,B,0,0.603 +109,10,59,A,9,1.186 +109,10,60,C,0,0.886 +110,1,1,Y,8,6.298 +110,1,2,A,9,1.753 +110,1,3,X,6,1.907 +110,1,4,D,0,1.743 +110,1,5,C,3,1.453 +110,1,6,B,3,3.97 +110,2,7,A,9,1.322 +110,2,8,D,0,1.489 +110,2,9,C,0,3.991 +110,2,10,Y,9,1.256 +110,2,11,X,8,1.542 +110,2,12,B,3,1.225 +110,3,13,A,10,1.222 +110,3,14,X,8,0.807 +110,3,15,B,0,1.339 +110,3,16,D,0,1.853 +110,3,17,Y,9,1.272 +110,3,18,C,2,1.422 +110,4,19,D,0,1.372 +110,4,20,C,1,1.159 +110,4,21,A,9,1.259 +110,4,22,B,2,3.472 +110,4,23,Y,7,1.253 +110,4,24,X,8,1.105 +110,5,25,A,9,0.825 +110,5,26,C,2,1.086 +110,5,27,B,5,1.271 +110,5,28,Y,10,0.974 +110,5,29,D,0,1.193 +110,5,30,X,9,1.104 +110,6,31,A,10,1.041 +110,6,32,D,1,0.958 +110,6,33,X,6,1.788 +110,6,34,C,1,1.506 +110,6,35,B,3,2.041 +110,6,36,Y,9,0.838 +110,7,37,C,0,1.222 +110,7,38,B,3,1.307 +110,7,39,A,10,0.891 +110,7,40,Y,7,0.924 +110,7,41,D,0,0.924 +110,7,42,X,6,1.372 +110,8,43,C,1,1.82 +110,8,44,Y,7,1.093 +110,8,45,A,9,1.221 +110,8,46,D,0,1.72 +110,8,47,X,8,1.291 +110,8,48,B,1,2.154 +110,9,49,X,9,1.803 +110,9,50,Y,6,0.903 +110,9,51,B,0,1.091 +110,9,52,A,10,1.103 +110,9,53,D,0,1.172 +110,9,54,C,1,1.124 +110,10,55,D,0,0.991 +110,10,56,X,8,1.037 +110,10,57,C,1,1.089 +110,10,58,Y,7,1.507 +110,10,59,A,10,1.42 +110,10,60,B,0,1.004 +111,1,1,X,0,5.57 +111,1,2,B,1,9.054 +111,1,3,Y,7,2.67 +111,1,4,D,0,2.603 +111,1,5,C,0,4.72 +111,1,6,A,9,5.254 +111,2,7,C,0,1.47 +111,2,8,D,0,3.437 +111,2,9,X,5,5.153 +111,2,10,B,1,4.554 +111,2,11,Y,10,1.903 +111,2,12,A,10,0.953 +111,3,13,A,10,0.62 +111,3,14,Y,10,1.403 +111,3,15,B,1,3.003 +111,3,16,C,0,3.787 +111,3,17,X,0,6.07 +111,3,18,D,0,0.955 +111,4,19,D,0,2.453 +111,4,20,A,10,2.037 +111,4,21,C,0,2.953 +111,4,22,Y,10,4.187 +111,4,23,X,5,2.453 +111,4,24,B,1,5.82 +111,5,25,A,10,1.503 +111,5,26,X,5,2.637 +111,5,27,B,0,2.203 +111,5,28,Y,10,1.186 +111,5,29,D,0,4.12 +111,5,30,C,0,1.203 +111,6,31,C,0,0.753 +111,6,32,D,0,1.253 +111,6,33,Y,10,1.337 +111,6,34,X,2,3.803 +111,6,35,B,0,3.337 +111,6,36,A,10,1.07 +111,7,37,A,10,0.97 +111,7,38,X,1,1.537 +111,7,39,Y,10,2.053 +111,7,40,B,1,1.153 +111,7,41,D,0,2.37 +111,7,42,C,0,0.787 +111,8,43,Y,10,2.403 +111,8,44,B,0,3.803 +111,8,45,A,10,1.52 +111,8,46,X,1,1.97 +111,8,47,D,0,1.837 +111,8,48,C,0,0.587 +111,9,49,Y,10,1.12 +111,9,50,B,1,1.453 +111,9,51,C,0,2.07 +111,9,52,X,5,8.937 +111,9,53,A,10,1.536 +111,9,54,D,0,1.836 +111,10,55,B,5,1.137 +111,10,56,A,10,2.003 +111,10,57,Y,10,1.653 +111,10,58,D,0,2.453 +111,10,59,C,0,0.703 +111,10,60,X,5,1.486 +112,1,1,C,0,9.957 +112,1,2,B,0,1.508 +112,1,3,X,5,2.325 +112,1,4,Y,7,4.491 +112,1,5,A,10,1.089 +112,1,6,D,2,3.753 +112,2,7,C,0,1.439 +112,2,8,D,2,0.953 +112,2,9,B,0,1.272 +112,2,10,A,10,1.388 +112,2,11,X,5,1.403 +112,2,12,Y,8,3.622 +112,3,13,X,5,3.303 +112,3,14,Y,8,1.37 +112,3,15,A,10,1.058 +112,3,16,B,0,1.92 +112,3,17,D,2,2.97 +112,3,18,C,0,3.624 +112,4,19,Y,8,1.605 +112,4,20,D,2,2.224 +112,4,21,B,0,2.191 +112,4,22,X,5,1.238 +112,4,23,C,0,10.503 +112,4,24,A,10,1.705 +112,5,25,D,2,2.787 +112,5,26,C,0,1.124 +112,5,27,B,0,0.603 +112,5,28,A,10,1.337 +112,5,29,Y,8,5.187 +112,5,30,X,5,1.189 +112,6,31,D,2,1.853 +112,6,32,Y,8,1.591 +112,6,33,B,0,1.441 +112,6,34,A,10,1.204 +112,6,35,C,0,4.089 +112,6,36,X,5,1.47 +112,7,37,X,5,0.891 +112,7,38,D,2,2.756 +112,7,39,Y,8,1.387 +112,7,40,C,0,1.77 +112,7,41,B,0,0.543 +112,7,42,A,10,1.258 +112,8,43,Y,8,1.32 +112,8,44,B,0,1.553 +112,8,45,A,10,1.21 +112,8,46,C,0,5.97 +112,8,47,D,2,1.505 +112,8,48,X,5,1.172 +112,9,49,X,5,0.822 +112,9,50,B,0,2.687 +112,9,51,C,0,1.82 +112,9,52,Y,8,1.374 +112,9,53,D,2,1.287 +112,9,54,A,10,1.153 +112,10,55,C,0,1.504 +112,10,56,D,2,1.17 +112,10,57,A,10,1.424 +112,10,58,B,0,1.353 +112,10,59,X,5,1.22 +112,10,60,Y,8,2.045 +113,1,1,C,2,6.67 +113,1,2,D,2,1.42 +113,1,3,B,3,2.236 +113,1,4,A,10,3.453 +113,1,5,X,8,6.053 +113,1,6,Y,7,1.92 +113,2,7,C,2,1.936 +113,2,8,D,2,2.237 +113,2,9,X,7,1.57 +113,2,10,B,3,1.387 +113,2,11,A,10,1.453 +113,2,12,Y,6,1.637 +113,3,13,Y,6,0.587 +113,3,14,C,2,1.353 +113,3,15,X,7,1.503 +113,3,16,D,2,1.27 +113,3,17,B,3,3.153 +113,3,18,A,10,1.353 +113,4,19,Y,7,1.287 +113,4,20,D,3,1.287 +113,4,21,B,4,1.27 +113,4,22,X,7,2.086 +113,4,23,A,10,1.137 +113,4,24,C,1,1.086 +113,5,25,A,10,1.753 +113,5,26,C,2,1.337 +113,5,27,X,6,1.27 +113,5,28,D,2,1.17 +113,5,29,Y,6,1.486 +113,5,30,B,2,1.137 +113,6,31,X,7,1.503 +113,6,32,D,2,2.353 +113,6,33,B,3,1.57 +113,6,34,A,10,1.687 +113,6,35,C,2,1.503 +113,6,36,Y,7,1.636 +113,7,37,Y,7,0.803 +113,7,38,B,3,1.153 +113,7,39,D,2,1.086 +113,7,40,C,2,0.636 +113,7,41,A,10,1.337 +113,7,42,X,7,2.053 +113,8,43,Y,7,2.137 +113,8,44,B,3,2.32 +113,8,45,C,3,1.42 +113,8,46,X,7,1.12 +113,8,47,A,10,1.287 +113,8,48,D,3,1.103 +113,9,49,Y,7,1.153 +113,9,50,X,7,2.27 +113,9,51,D,2,1.253 +113,9,52,B,2,1.07 +113,9,53,A,10,1.336 +113,9,54,C,2,1.32 +113,10,55,B,3,1.603 +113,10,56,Y,7,2.47 +113,10,57,A,10,1.42 +113,10,58,X,7,2.07 +113,10,59,C,2,1.387 +113,10,60,D,2,1.036 +114,1,1,C,0,3.537 +114,1,2,A,10,3.237 +114,1,3,X,0,2.37 +114,1,4,B,0,3.156 +114,1,5,D,0,0.854 +114,1,6,Y,10,1.638 +114,2,7,X,0,2.02 +114,2,8,C,0,1.107 +114,2,9,D,0,1.103 +114,2,10,B,0,1.506 +114,2,11,A,10,1.137 +114,2,12,Y,10,0.589 +114,3,13,X,0,1.174 +114,3,14,Y,10,1.258 +114,3,15,C,0,1.341 +114,3,16,B,0,1.374 +114,3,17,D,0,1.143 +114,3,18,A,10,1.614 +114,4,19,B,0,1.358 +114,4,20,X,0,1.307 +114,4,21,D,0,1.037 +114,4,22,A,10,1.937 +114,4,23,Y,10,0.653 +114,4,24,C,0,1.272 +114,5,25,D,0,1.672 +114,5,26,A,10,1.574 +114,5,27,C,0,1.22 +114,5,28,Y,10,1.174 +114,5,29,X,0,1.453 +114,5,30,B,0,1.853 +114,6,31,B,0,1.354 +114,6,32,C,0,1.653 +114,6,33,X,0,0.603 +114,6,34,A,10,1.17 +114,6,35,Y,10,0.553 +114,6,36,D,0,1.076 +114,7,37,C,0,1.136 +114,7,38,X,0,0.603 +114,7,39,D,0,0.724 +114,7,40,B,0,0.573 +114,7,41,Y,10,1.458 +114,7,42,A,10,0.574 +114,8,43,A,10,0.537 +114,8,44,B,0,1.155 +114,8,45,Y,10,1.123 +114,8,46,D,0,1.02 +114,8,47,C,0,0.653 +114,8,48,X,0,0.957 +114,9,49,Y,10,1.527 +114,9,50,D,0,1.003 +114,9,51,X,0,2.056 +114,9,52,C,0,2.224 +114,9,53,B,0,1.122 +114,9,54,A,10,1.324 +114,10,55,Y,10,0.625 +114,10,56,C,0,1.203 +114,10,57,X,0,1.039 +114,10,58,D,0,0.753 +114,10,59,A,10,1.338 +114,10,60,B,0,1.822 +115,1,1,A,10,7.891 +115,1,2,D,0,4.057 +115,1,3,B,0,1.388 +115,1,4,C,0,1.843 +115,1,5,X,5,3.955 +115,1,6,Y,10,1.672 +115,2,7,B,0,1.32 +115,2,8,Y,5,1.941 +115,2,9,A,10,1.455 +115,2,10,X,5,1.308 +115,2,11,C,0,1.158 +115,2,12,D,0,3.739 +115,3,13,Y,5,1.472 +115,3,14,A,10,1.104 +115,3,15,C,0,1.503 +115,3,16,X,5,1.127 +115,3,17,D,0,1.405 +115,3,18,B,0,1.67 +115,4,19,X,5,1.271 +115,4,20,A,10,2.22 +115,4,21,C,0,2.574 +115,4,22,D,0,0.773 +115,4,23,Y,5,1.208 +115,4,24,B,0,0.888 +115,5,25,B,0,0.756 +115,5,26,C,0,0.606 +115,5,27,Y,5,1.453 +115,5,28,D,1,0.924 +115,5,29,X,5,3.155 +115,5,30,A,10,1.355 +115,6,31,C,0,1.005 +115,6,32,Y,5,1.259 +115,6,33,B,0,1.188 +115,6,34,A,10,2.169 +115,6,35,D,0,1.87 +115,6,36,X,5,0.853 +115,7,37,A,10,1.12 +115,7,38,B,0,1.191 +115,7,39,X,5,1.202 +115,7,40,C,0,1.02 +115,7,41,Y,5,1.188 +115,7,42,D,0,1.187 +115,8,43,C,0,5.103 +115,8,44,X,5,2.053 +115,8,45,A,10,1.105 +115,8,46,D,0,1.427 +115,8,47,B,0,1.026 +115,8,48,Y,10,2.622 +115,9,49,X,5,1.706 +115,9,50,B,0,1.272 +115,9,51,Y,10,2.393 +115,9,52,C,0,0.955 +115,9,53,D,0,0.956 +115,9,54,A,10,1.023 +115,10,55,C,0,1.059 +115,10,56,Y,10,2.04 +115,10,57,X,5,1.42 +115,10,58,D,0,2.006 +115,10,59,A,10,1.056 +115,10,60,B,0,1.09 +116,1,1,Y,10,4.703 +116,1,2,D,0,1.72 +116,1,3,C,0,2.686 +116,1,4,A,10,1.853 +116,1,5,X,6,4.27 +116,1,6,B,0,1.237 +116,2,7,C,0,0.937 +116,2,8,Y,10,2.453 +116,2,9,A,10,0.97 +116,2,10,B,0,1.737 +116,2,11,X,3,2.67 +116,2,12,D,0,1.603 +116,3,13,X,4,1.387 +116,3,14,C,0,1.17 +116,3,15,D,0,1.02 +116,3,16,A,10,1.253 +116,3,17,Y,10,0.703 +116,3,18,B,0,1.321 +116,4,19,C,0,1.82 +116,4,20,D,0,0.586 +116,4,21,Y,10,0.887 +116,4,22,X,4,1.203 +116,4,23,B,0,0.836 +116,4,24,A,10,1.069 +116,5,25,A,10,0.787 +116,5,26,D,0,1.204 +116,5,27,B,0,0.753 +116,5,28,X,4,1.436 +116,5,29,C,0,1.286 +116,5,30,Y,10,1.086 +116,6,31,X,4,1.57 +116,6,32,B,0,1.17 +116,6,33,D,0,0.62 +116,6,34,C,0,0.57 +116,6,35,Y,10,1.136 +116,6,36,A,10,0.553 +116,7,37,X,5,1.453 +116,7,38,C,0,0.903 +116,7,39,A,10,1.12 +116,7,40,B,0,1.22 +116,7,41,Y,10,1.203 +116,7,42,D,0,1.303 +116,8,43,A,10,1.236 +116,8,44,Y,10,0.47 +116,8,45,X,4,0.937 +116,8,46,B,0,0.87 +116,8,47,C,0,0.654 +116,8,48,D,0,0.603 +116,9,49,D,0,0.637 +116,9,50,A,10,0.936 +116,9,51,Y,10,0.686 +116,9,52,X,5,0.954 +116,9,53,C,0,0.77 +116,9,54,B,0,1.103 +116,10,55,Y,10,1.103 +116,10,56,B,0,1.203 +116,10,57,D,0,0.687 +116,10,58,C,0,0.787 +116,10,59,X,5,1.003 +116,10,60,A,10,1.237 +117,1,1,D,1,10.18 +117,1,2,A,8,4.522 +117,1,3,C,2,2.09 +117,1,4,X,8,1.873 +117,1,5,Y,8,1.193 +117,1,6,B,1,2.922 +117,2,7,X,8,2.203 +117,2,8,A,8,1.155 +117,2,9,B,1,1.653 +117,2,10,D,1,1.805 +117,2,11,Y,8,1.174 +117,2,12,C,1,0.938 +117,3,13,C,1,0.807 +117,3,14,D,1,0.826 +117,3,15,A,8,1.353 +117,3,16,X,8,0.991 +117,3,17,Y,9,2.205 +117,3,18,B,2,1.255 +117,4,19,X,8,1.34 +117,4,20,D,1,0.888 +117,4,21,Y,10,1.505 +117,4,22,C,0,1.339 +117,4,23,A,10,2.774 +117,4,24,B,1,3.541 +117,5,25,C,1,1.638 +117,5,26,X,9,1.06 +117,5,27,D,1,1.322 +117,5,28,B,1,0.891 +117,5,29,Y,8,1.441 +117,5,30,A,8,1.155 +117,6,31,Y,9,2.703 +117,6,32,X,9,1.093 +117,6,33,C,1,1.021 +117,6,34,A,8,1.489 +117,6,35,B,1,1.736 +117,6,36,D,1,1.203 +117,7,37,A,9,1.005 +117,7,38,Y,10,2.121 +117,7,39,X,9,0.843 +117,7,40,C,1,0.936 +117,7,41,B,1,1.305 +117,7,42,D,1,2.422 +117,8,43,B,1,1.172 +117,8,44,A,9,0.989 +117,8,45,D,0,1.271 +117,8,46,C,1,0.824 +117,8,47,Y,9,1.488 +117,8,48,X,9,0.874 +117,9,49,C,1,1.372 +117,9,50,Y,10,1.055 +117,9,51,B,0,1.271 +117,9,52,X,9,1.489 +117,9,53,A,9,1.055 +117,9,54,D,1,0.937 +117,10,55,C,1,0.637 +117,10,56,D,1,0.525 +117,10,57,Y,9,2.455 +117,10,58,B,1,1.605 +117,10,59,X,9,1.771 +117,10,60,A,10,3.11 +118,1,1,D,2,8.536 +118,1,2,A,9,4.403 +118,1,3,Y,4,3.27 +118,1,4,X,4,3.187 +118,1,5,B,3,2.587 +118,1,6,C,1,3.37 +118,2,7,C,1,3.153 +118,2,8,Y,4,3.603 +118,2,9,D,3,2.253 +118,2,10,B,4,4.003 +118,2,11,X,6,3.421 +118,2,12,A,9,2.853 +118,3,13,D,3,5.537 +118,3,14,Y,4,2.72 +118,3,15,A,9,1.82 +118,3,16,X,4,2.72 +118,3,17,C,1,4.037 +118,3,18,B,2,2.087 +118,4,19,A,9,1.736 +118,4,20,C,1,1.386 +118,4,21,B,2,1.92 +118,4,22,Y,4,1.42 +118,4,23,D,2,1.737 +118,4,24,X,6,3.103 +118,5,25,D,2,1.87 +118,5,26,Y,2,0.838 +118,5,27,C,1,1.137 +118,5,28,A,9,1.403 +118,5,29,X,6,5.72 +118,5,30,B,2,1.22 +118,6,31,Y,2,1.12 +118,6,32,C,1,1.153 +118,6,33,B,2,1.253 +118,6,34,X,4,2.553 +118,6,35,D,2,1.136 +118,6,36,A,9,2.303 +118,7,37,X,4,2.82 +118,7,38,C,1,1.653 +118,7,39,A,9,3.17 +118,7,40,B,2,3.487 +118,7,41,Y,2,0.72 +118,7,42,D,4,2.27 +118,8,43,C,1,1.587 +118,8,44,X,4,3.753 +118,8,45,Y,4,1.92 +118,8,46,B,2,1.387 +118,8,47,D,2,5.37 +118,8,48,A,9,2.12 +118,9,49,D,2,1.153 +118,9,50,B,2,0.936 +118,9,51,X,4,1.987 +118,9,52,C,1,1.237 +118,9,53,Y,2,1.17 +118,9,54,A,9,3.303 +118,10,55,X,4,5.62 +118,10,56,B,2,3.353 +118,10,57,D,2,1.203 +118,10,58,Y,2,3.537 +118,10,59,A,9,1.653 +118,10,60,C,1,1.687 +119,1,1,C,7,2.33 +119,1,2,B,10,11.954 +119,1,3,D,1,3.853 +119,1,4,X,7,7.02 +119,1,5,A,10,3.337 +119,1,6,Y,7,1.687 +119,2,7,A,10,2.119 +119,2,8,D,1,5.303 +119,2,9,X,7,2.437 +119,2,10,Y,7,1.586 +119,2,11,B,10,1.703 +119,2,12,C,0,2.037 +119,3,13,X,7,4.737 +119,3,14,A,10,0.853 +119,3,15,C,0,1.953 +119,3,16,Y,7,2.454 +119,3,17,B,10,1.153 +119,3,18,D,0,1.253 +119,4,19,A,10,4.053 +119,4,20,C,0,1.17 +119,4,21,B,10,3.37 +119,4,22,Y,7,1.337 +119,4,23,X,7,0.82 +119,4,24,D,0,1.42 +119,5,25,A,10,2.503 +119,5,26,C,0,1.353 +119,5,27,Y,7,1.887 +119,5,28,X,7,0.72 +119,5,29,D,0,1.036 +119,5,30,B,10,2.42 +119,6,31,B,10,0.653 +119,6,32,C,0,0.97 +119,6,33,Y,7,1.519 +119,6,34,D,0,1.103 +119,6,35,X,7,1.586 +119,6,36,A,10,1.37 +119,7,37,B,10,1.236 +119,7,38,Y,7,1.153 +119,7,39,D,0,1.253 +119,7,40,A,10,1.82 +119,7,41,C,0,1.07 +119,7,42,X,7,1.203 +119,8,43,B,10,1.054 +119,8,44,D,0,1.103 +119,8,45,C,0,1.103 +119,8,46,A,10,1.103 +119,8,47,X,7,1.187 +119,8,48,Y,7,0.903 +119,9,49,A,10,1.076 +119,9,50,X,7,2.552 +119,9,51,B,10,1.003 +119,9,52,C,0,3.104 +119,9,53,Y,7,1.436 +119,9,54,D,0,1.103 +119,10,55,B,10,1.07 +119,10,56,D,0,1.936 +119,10,57,A,10,1.086 +119,10,58,X,7,2.036 +119,10,59,C,0,1.153 +119,10,60,Y,7,1.403 +120,1,1,B,0,7.869 +120,1,2,C,0,1.141 +120,1,3,Y,7,2.542 +120,1,4,A,10,5.422 +120,1,5,X,0,2.46 +120,1,6,D,0,0.838 +120,2,7,B,0,1.124 +120,2,8,A,10,1.67 +120,2,9,D,0,2.32 +120,2,10,Y,9,3.303 +120,2,11,X,0,1.406 +120,2,12,C,0,1.805 +120,3,13,X,0,0.653 +120,3,14,D,0,0.724 +120,3,15,A,10,1.403 +120,3,16,C,0,1.154 +120,3,17,Y,9,2.437 +120,3,18,B,0,0.774 +120,4,19,B,0,1.373 +120,4,20,Y,9,1.29 +120,4,21,A,10,1.188 +120,4,22,X,0,0.936 +120,4,23,D,0,0.874 +120,4,24,C,0,3.82 +120,5,25,A,10,1.227 +120,5,26,X,0,1.07 +120,5,27,D,0,0.605 +120,5,28,C,0,0.639 +120,5,29,B,0,0.689 +120,5,30,Y,9,1.389 +120,6,31,Y,9,0.657 +120,6,32,B,0,1.138 +120,6,33,D,0,0.553 +120,6,34,A,10,1.571 +120,6,35,X,0,1.256 +120,6,36,C,0,0.574 +120,7,37,A,10,0.991 +120,7,38,C,0,1.303 +120,7,39,D,0,0.474 +120,7,40,B,0,0.537 +120,7,41,Y,9,1.256 +120,7,42,X,0,1.27 +120,8,43,C,0,0.503 +120,8,44,Y,9,0.907 +120,8,45,A,10,0.708 +120,8,46,D,0,1.255 +120,8,47,X,0,0.506 +120,8,48,B,0,0.553 +120,9,49,A,10,1.189 +120,9,50,D,0,1.291 +120,9,51,Y,9,1.12 +120,9,52,B,0,1.336 +120,9,53,X,0,0.491 +120,9,54,C,0,0.553 +120,10,55,A,10,0.989 +120,10,56,X,0,1.353 +120,10,57,B,0,0.453 +120,10,58,Y,9,1.105 +120,10,59,D,0,1.093 +120,10,60,C,0,0.472 +121,1,1,B,4,11.037 +121,1,2,A,9,3.22 +121,1,3,C,1,6.054 +121,1,4,Y,7,3.57 +121,1,5,D,3,4.737 +121,1,6,X,3,2.153 +121,2,7,D,3,5.07 +121,2,8,A,9,2.287 +121,2,9,X,3,1.603 +121,2,10,B,6,3.037 +121,2,11,Y,8,2.753 +121,2,12,C,1,3.487 +121,3,13,A,9,1.903 +121,3,14,C,1,2.003 +121,3,15,X,3,6.404 +121,3,16,D,3,3.136 +121,3,17,B,6,3.237 +121,3,18,Y,4,2.22 +121,4,19,X,4,1.02 +121,4,20,Y,4,0.953 +121,4,21,B,5,5.287 +121,4,22,C,1,1.586 +121,4,23,A,9,1.403 +121,4,24,D,3,5.77 +121,5,25,C,1,3.237 +121,5,26,Y,3,1.937 +121,5,27,X,3,1.32 +121,5,28,B,6,3.536 +121,5,29,D,3,1.02 +121,5,30,A,9,1.537 +121,6,31,B,4,10.687 +121,6,32,D,4,1.67 +121,6,33,A,9,1.07 +121,6,34,Y,5,2.286 +121,6,35,X,5,3.003 +121,6,36,C,1,9.97 +121,7,37,Y,4,2.104 +121,7,38,D,1,1.237 +121,7,39,B,4,2.27 +121,7,40,X,4,1.036 +121,7,41,C,1,0.986 +121,7,42,A,9,1.07 +121,8,43,A,9,0.603 +121,8,44,B,4,1.587 +121,8,45,D,1,0.803 +121,8,46,C,1,0.904 +121,8,47,X,4,1.336 +121,8,48,Y,4,0.87 +121,9,49,C,1,1.069 +121,9,50,Y,4,1.02 +121,9,51,B,4,1.453 +121,9,52,X,4,0.87 +121,9,53,A,9,1.303 +121,9,54,D,1,0.837 +121,10,55,D,1,0.77 +121,10,56,Y,4,3.27 +121,10,57,C,1,0.937 +121,10,58,X,4,0.953 +121,10,59,A,9,1.037 +121,10,60,B,4,1.037 +122,1,1,D,2,8.473 +122,1,2,C,0,4.453 +122,1,3,A,10,2.157 +122,1,4,Y,8,2.922 +122,1,5,X,3,2.657 +122,1,6,B,2,1.587 +122,2,7,X,2,1.422 +122,2,8,D,3,1.243 +122,2,9,C,3,1.237 +122,2,10,B,2,1.522 +122,2,11,Y,7,1.371 +122,2,12,A,10,2.891 +122,3,13,C,3,1.757 +122,3,14,B,2,1.203 +122,3,15,Y,8,1.388 +122,3,16,A,10,1.505 +122,3,17,X,2,1.22 +122,3,18,D,3,0.907 +122,4,19,B,3,1.27 +122,4,20,X,3,1.222 +122,4,21,D,2,1.003 +122,4,22,Y,7,1.791 +122,4,23,A,10,1.308 +122,4,24,C,2,2.287 +122,5,25,B,3,1.091 +122,5,26,D,3,1.303 +122,5,27,C,2,1.006 +122,5,28,Y,7,1.572 +122,5,29,X,1,1.57 +122,5,30,A,10,1.155 +122,6,31,X,3,1.11 +122,6,32,B,3,1.387 +122,6,33,Y,7,1.273 +122,6,34,C,2,1.606 +122,6,35,D,2,1.459 +122,6,36,A,10,2.491 +122,7,37,A,10,1.824 +122,7,38,C,2,1.955 +122,7,39,Y,7,1.153 +122,7,40,D,3,1.371 +122,7,41,X,2,1.391 +122,7,42,B,3,1.527 +122,8,43,A,10,1.205 +122,8,44,B,3,1.303 +122,8,45,X,4,1.238 +122,8,46,D,4,1.356 +122,8,47,Y,7,2.508 +122,8,48,C,2,1.622 +122,9,49,A,10,1.87 +122,9,50,Y,7,1.289 +122,9,51,D,2,1.957 +122,9,52,X,3,1.404 +122,9,53,C,1,1.153 +122,9,54,B,3,1.154 +122,10,55,Y,7,1.338 +122,10,56,D,2,1.122 +122,10,57,B,3,1.641 +122,10,58,X,2,1.555 +122,10,59,A,10,1.306 +122,10,60,C,1,1.208 +123,1,1,D,0,11.087 +123,1,2,C,0,2.103 +123,1,3,A,10,1.986 +123,1,4,B,5,4.403 +123,1,5,Y,10,3.12 +123,1,6,X,10,1.17 +123,2,7,D,0,1.369 +123,2,8,A,10,1.07 +123,2,9,C,0,3.153 +123,2,10,X,10,1.07 +123,2,11,Y,9,5.553 +123,2,12,B,5,4.037 +123,3,13,C,0,1.353 +123,3,14,D,0,1.62 +123,3,15,Y,9,1.736 +123,3,16,A,10,1.836 +123,3,17,B,5,5.52 +123,3,18,X,10,1.62 +123,4,19,X,10,2.386 +123,4,20,A,10,1.437 +123,4,21,Y,9,2.587 +123,4,22,C,0,1.72 +123,4,23,D,0,3.087 +123,4,24,B,5,2.32 +123,5,25,C,0,1.853 +123,5,26,Y,9,2.353 +123,5,27,A,10,0.67 +123,5,28,B,5,2.403 +123,5,29,D,0,0.637 +123,5,30,X,10,1.604 +123,6,31,A,10,2.186 +123,6,32,X,10,0.953 +123,6,33,Y,9,1.253 +123,6,34,C,0,1.669 +123,6,35,B,5,2.087 +123,6,36,D,0,1.12 +123,7,37,C,0,2.953 +123,7,38,D,0,0.753 +123,7,39,X,9,0.937 +123,7,40,A,10,0.936 +123,7,41,B,0,1.153 +123,7,42,Y,9,2.988 +123,8,43,D,0,0.903 +123,8,44,X,10,0.87 +123,8,45,C,0,1.536 +123,8,46,A,10,1.687 +123,8,47,Y,9,0.936 +123,8,48,B,5,0.72 +123,9,49,Y,9,0.937 +123,9,50,X,10,1.02 +123,9,51,D,0,0.786 +123,9,52,A,10,0.987 +123,9,53,C,0,1.453 +123,9,54,B,6,1.52 +123,10,55,X,10,0.886 +123,10,56,C,0,2.22 +123,10,57,B,5,1.836 +123,10,58,A,9,0.92 +123,10,59,D,0,1.187 +123,10,60,Y,7,2.27 +124,1,1,B,10,5.174 +124,1,2,D,0,2.053 +124,1,3,A,10,1.874 +124,1,4,C,0,2.274 +124,1,5,Y,7,2.337 +124,1,6,X,7,1.489 +124,2,7,X,7,0.907 +124,2,8,D,0,1.253 +124,2,9,Y,7,1.253 +124,2,10,C,0,1.52 +124,2,11,A,10,1.172 +124,2,12,B,10,0.703 +124,3,13,B,10,0.737 +124,3,14,Y,7,2.856 +124,3,15,C,0,1.222 +124,3,16,X,7,1.405 +124,3,17,A,10,1.337 +124,3,18,D,0,2.341 +124,4,19,B,10,1.086 +124,4,20,D,0,1.391 +124,4,21,A,10,1.207 +124,4,22,Y,7,2.243 +124,4,23,X,7,1.003 +124,4,24,C,0,1.003 +124,5,25,B,10,1.372 +124,5,26,A,10,0.703 +124,5,27,X,7,1.053 +124,5,28,D,0,1.053 +124,5,29,C,0,0.57 +124,5,30,Y,7,0.955 +124,6,31,A,10,0.989 +124,6,32,B,10,0.603 +124,6,33,X,7,1.27 +124,6,34,D,0,1.237 +124,6,35,Y,7,1.475 +124,6,36,C,0,1.407 +124,7,37,X,7,2.157 +124,7,38,Y,7,1.358 +124,7,39,C,0,1.042 +124,7,40,D,0,0.553 +124,7,41,B,10,1.124 +124,7,42,A,10,0.638 +124,8,43,X,7,1.153 +124,8,44,B,10,1.303 +124,8,45,D,0,1.487 +124,8,46,C,0,0.453 +124,8,47,A,10,1.023 +124,8,48,Y,7,1.058 +124,9,49,X,7,0.674 +124,9,50,C,0,0.937 +124,9,51,Y,7,1.072 +124,9,52,A,10,1.338 +124,9,53,B,10,0.538 +124,9,54,D,0,1.043 +124,10,55,C,0,0.408 +124,10,56,Y,7,1.209 +124,10,57,D,0,0.958 +124,10,58,X,7,1.572 +124,10,59,A,10,1.237 +124,10,60,B,10,0.558 +125,1,1,B,0,5.553 +125,1,2,C,0,2.021 +125,1,3,X,8,7.42 +125,1,4,A,10,1.953 +125,1,5,Y,9,3.52 +125,1,6,D,0,2.287 +125,2,7,X,9,3.587 +125,2,8,C,0,1.603 +125,2,9,A,10,1.236 +125,2,10,D,0,2.07 +125,2,11,B,0,2.437 +125,2,12,Y,10,3.103 +125,3,13,B,0,2.404 +125,3,14,Y,10,1.57 +125,3,15,A,10,1.153 +125,3,16,D,0,1.987 +125,3,17,C,0,1.087 +125,3,18,X,8,3.103 +125,4,19,D,0,1.67 +125,4,20,X,8,1.603 +125,4,21,B,0,1.803 +125,4,22,C,0,1.37 +125,4,23,A,10,1.453 +125,4,24,Y,10,1.953 +125,5,25,D,0,1.303 +125,5,26,Y,9,1.803 +125,5,27,A,10,1.07 +125,5,28,B,0,1.337 +125,5,29,X,8,2.587 +125,5,30,C,0,2.337 +125,6,31,X,5,6.37 +125,6,32,Y,10,1.853 +125,6,33,C,0,0.953 +125,6,34,B,0,0.82 +125,6,35,D,0,0.87 +125,6,36,A,10,1.72 +125,7,37,D,0,1.97 +125,7,38,Y,10,1.57 +125,7,39,X,5,3.021 +125,7,40,C,0,1.403 +125,7,41,B,0,1.703 +125,7,42,A,10,1.537 +125,8,43,X,5,3.703 +125,8,44,C,0,1.92 +125,8,45,Y,9,3.437 +125,8,46,B,0,1.603 +125,8,47,A,10,1.22 +125,8,48,D,0,1.737 +125,9,49,D,0,0.92 +125,9,50,B,0,1.37 +125,9,51,Y,9,1.253 +125,9,52,C,0,2.387 +125,9,53,A,10,1.537 +125,9,54,X,5,1.42 +125,10,55,Y,10,1.187 +125,10,56,D,0,1.303 +125,10,57,A,10,1.187 +125,10,58,C,0,1.437 +125,10,59,B,0,1.12 +125,10,60,X,5,1.62 +126,1,1,X,5,4.591 +126,1,2,C,0,1.975 +126,1,3,Y,10,2.487 +126,1,4,D,3,5.655 +126,1,5,B,0,3.508 +126,1,6,A,10,1.286 +126,2,7,D,3,2.19 +126,2,8,Y,10,1.953 +126,2,9,C,0,1.389 +126,2,10,A,10,1.825 +126,2,11,B,0,2.372 +126,2,12,X,5,2.774 +126,3,13,A,10,1.708 +126,3,14,Y,10,1.258 +126,3,15,B,0,1.803 +126,3,16,C,0,1.22 +126,3,17,D,3,2.287 +126,3,18,X,5,1.637 +126,4,19,A,10,3.291 +126,4,20,C,0,1.374 +126,4,21,X,5,1.453 +126,4,22,B,0,1.653 +126,4,23,Y,10,1.224 +126,4,24,D,3,1.303 +126,5,25,C,0,1.239 +126,5,26,B,0,0.77 +126,5,27,Y,10,1.574 +126,5,28,X,5,1.353 +126,5,29,A,10,3.137 +126,5,30,D,3,1.553 +126,6,31,D,2,0.824 +126,6,32,A,10,1.689 +126,6,33,B,0,1.47 +126,6,34,C,0,0.525 +126,6,35,X,5,1.203 +126,6,36,Y,10,2.203 +126,7,37,C,0,1.524 +126,7,38,D,3,2.238 +126,7,39,B,0,2.953 +126,7,40,A,10,1.124 +126,7,41,X,5,2.67 +126,7,42,Y,10,2.555 +126,8,43,Y,10,0.553 +126,8,44,X,5,1.974 +126,8,45,A,10,1.174 +126,8,46,B,0,1.441 +126,8,47,C,0,0.753 +126,8,48,D,3,3.343 +126,9,49,D,3,0.686 +126,9,50,X,5,1.257 +126,9,51,Y,10,1.243 +126,9,52,B,0,1.258 +126,9,53,A,10,1.253 +126,9,54,C,0,0.977 +126,10,55,C,0,2.138 +126,10,56,Y,10,1.303 +126,10,57,B,0,2.139 +126,10,58,X,5,2.238 +126,10,59,A,10,1.189 +126,10,60,D,3,1.522 +127,1,1,A,10,3.503 +127,1,2,D,1,4.02 +127,1,3,B,1,3.37 +127,1,4,Y,9,3.487 +127,1,5,X,5,10.104 +127,1,6,C,0,4.02 +127,2,7,A,10,2.653 +127,2,8,B,0,1.97 +127,2,9,C,0,4.92 +127,2,10,Y,8,1.57 +127,2,11,D,1,5.337 +127,2,12,X,5,3.22 +127,3,13,B,2,5.987 +127,3,14,A,10,3.124 +127,3,15,D,0,3.003 +127,3,16,Y,9,1.804 +127,3,17,X,5,1.353 +127,3,18,C,1,2.703 +127,4,19,Y,9,2.57 +127,4,20,B,1,2.22 +127,4,21,D,1,3.687 +127,4,22,X,5,3.12 +127,4,23,C,1,3.703 +127,4,24,A,10,1.536 +127,5,25,C,1,2.203 +127,5,26,B,1,1.52 +127,5,27,A,10,2.503 +127,5,28,Y,9,3.087 +127,5,29,D,1,7.67 +127,5,30,X,5,1.303 +127,6,31,A,10,1.786 +127,6,32,C,0,1.253 +127,6,33,Y,10,1.719 +127,6,34,D,1,2.486 +127,6,35,X,5,3.353 +127,6,36,B,1,2.987 +127,7,37,A,10,3.787 +127,7,38,Y,10,1.12 +127,7,39,B,1,1.253 +127,7,40,X,5,4.17 +127,7,41,C,1,7.954 +127,7,42,D,1,0.936 +127,8,43,A,10,1.037 +127,8,44,B,1,1.453 +127,8,45,Y,10,1.953 +127,8,46,C,1,2.287 +127,8,47,D,1,2.486 +127,8,48,X,6,1.537 +127,9,49,Y,10,2.653 +127,9,50,A,10,1.486 +127,9,51,D,1,1.787 +127,9,52,X,5,1.336 +127,9,53,C,1,3.953 +127,9,54,B,1,1.737 +127,10,55,B,1,3.887 +127,10,56,Y,10,1.753 +127,10,57,D,1,3.77 +127,10,58,X,5,2.004 +127,10,59,A,10,1.32 +127,10,60,C,1,1.086 +128,1,1,X,5,14.27 +128,1,2,C,0,3.253 +128,1,3,D,0,2.12 +128,1,4,B,0,1.254 +128,1,5,A,10,2.236 +128,1,6,Y,10,6.203 +128,2,7,Y,10,2.637 +128,2,8,A,10,1.237 +128,2,9,B,0,2.12 +128,2,10,D,0,1.187 +128,2,11,X,5,9.454 +128,2,12,C,0,1.42 +128,3,13,A,10,1.753 +128,3,14,D,0,3.003 +128,3,15,C,0,6.387 +128,3,16,B,0,0.786 +128,3,17,X,5,1.72 +128,3,18,Y,10,1.437 +128,4,19,Y,10,0.803 +128,4,20,A,10,0.953 +128,4,21,C,0,2.037 +128,4,22,B,0,1.053 +128,4,23,X,5,2.47 +128,4,24,D,0,1.42 +128,5,25,Y,10,1.236 +128,5,26,X,5,2.337 +128,5,27,B,0,1.354 +128,5,28,C,0,0.836 +128,5,29,D,0,1.037 +128,5,30,A,10,1.32 +128,6,31,B,0,2.387 +128,6,32,X,5,1.886 +128,6,33,Y,10,1.886 +128,6,34,A,10,0.903 +128,6,35,D,0,1.387 +128,6,36,C,0,3.087 +128,7,37,C,0,0.486 +128,7,38,Y,10,1.687 +128,7,39,A,10,1.67 +128,7,40,D,0,1.887 +128,7,41,X,5,1.386 +128,7,42,B,0,1.053 +128,8,43,C,0,1.653 +128,8,44,D,5,2.003 +128,8,45,A,10,3.97 +128,8,46,X,5,3.32 +128,8,47,Y,10,2.57 +128,8,48,B,0,1.438 +128,9,49,Y,10,5.437 +128,9,50,B,0,1.703 +128,9,51,X,5,2.653 +128,9,52,D,0,3.17 +128,9,53,A,10,2.803 +128,9,54,C,0,1.57 +128,10,55,B,0,0.736 +128,10,56,C,0,0.57 +128,10,57,D,5,1.42 +128,10,58,A,10,1.07 +128,10,59,Y,10,0.587 +128,10,60,X,5,1.17 +129,1,1,B,2,8.836 +129,1,2,X,3,2.022 +129,1,3,A,10,1.788 +129,1,4,D,2,1.905 +129,1,5,C,1,1.723 +129,1,6,Y,7,1.653 +129,2,7,B,3,4.303 +129,2,8,X,6,1.558 +129,2,9,Y,6,1.074 +129,2,10,C,2,2.191 +129,2,11,A,10,2.307 +129,2,12,D,6,2.436 +129,3,13,Y,3,2.657 +129,3,14,C,2,2.386 +129,3,15,A,10,2.988 +129,3,16,X,7,2.988 +129,3,17,B,3,2.003 +129,3,18,D,3,1.106 +129,4,19,D,3,0.82 +129,4,20,B,7,1.44 +129,4,21,A,10,1.389 +129,4,22,X,6,1.355 +129,4,23,Y,7,1.758 +129,4,24,C,2,1.474 +129,5,25,A,10,0.955 +129,5,26,X,7,1.253 +129,5,27,B,6,2.574 +129,5,28,D,2,1.837 +129,5,29,Y,8,1.37 +129,5,30,C,2,1.839 +129,6,31,B,7,1.187 +129,6,32,D,3,1.639 +129,6,33,C,3,1.076 +129,6,34,A,10,1.105 +129,6,35,X,6,1.47 +129,6,36,Y,8,1.888 +129,7,37,A,10,0.89 +129,7,38,Y,7,1.674 +129,7,39,X,7,0.843 +129,7,40,D,7,0.973 +129,7,41,B,8,1.657 +129,7,42,C,3,1.155 +129,8,43,A,10,1.574 +129,8,44,C,3,1.574 +129,8,45,Y,8,1.426 +129,8,46,X,7,1.403 +129,8,47,B,2,1.339 +129,8,48,D,3,1.037 +129,9,49,C,3,0.724 +129,9,50,B,6,1.836 +129,9,51,Y,8,1.441 +129,9,52,D,4,1.103 +129,9,53,X,7,1.407 +129,9,54,A,10,1.003 +129,10,55,C,2,1.324 +129,10,56,X,8,1.453 +129,10,57,Y,7,1.389 +129,10,58,B,6,1.224 +129,10,59,A,10,0.92 +129,10,60,D,6,2.17 +130,1,1,X,6,8.87 +130,1,2,C,1,6.454 +130,1,3,D,1,2.687 +130,1,4,Y,7,4.87 +130,1,5,A,10,2.203 +130,1,6,B,0,4.037 +130,2,7,C,0,2.303 +130,2,8,A,10,2.67 +130,2,9,D,1,6.987 +130,2,10,B,0,2.17 +130,2,11,X,6,3.67 +130,2,12,Y,7,2.803 +130,3,13,A,10,1.553 +130,3,14,C,0,1.787 +130,3,15,Y,7,5.77 +130,3,16,B,0,1.803 +130,3,17,D,2,3.37 +130,3,18,X,6,5.287 +130,4,19,Y,7,2.72 +130,4,20,A,10,1.52 +130,4,21,D,2,4.303 +130,4,22,B,0,1.986 +130,4,23,X,5,4.97 +130,4,24,C,0,2.02 +130,5,25,Y,7,4.387 +130,5,26,D,2,1.687 +130,5,27,A,10,1.253 +130,5,28,X,5,2.553 +130,5,29,B,0,1.62 +130,5,30,C,0,1.286 +130,6,31,B,0,1.337 +130,6,32,D,2,1.853 +130,6,33,Y,7,2.437 +130,6,34,X,5,2.453 +130,6,35,C,1,3.303 +130,6,36,A,10,1.703 +130,7,37,Y,7,1.553 +130,7,38,C,1,1.987 +130,7,39,D,2,1.553 +130,7,40,B,0,1.22 +130,7,41,A,10,1.587 +130,7,42,X,5,1.37 +130,8,43,X,5,0.737 +130,8,44,D,2,1.753 +130,8,45,B,0,1.453 +130,8,46,A,10,1.603 +130,8,47,C,0,2.087 +130,8,48,Y,7,2.753 +130,9,49,D,2,3.487 +130,9,50,C,0,1.12 +130,9,51,A,10,1.603 +130,9,52,B,0,1.853 +130,9,53,X,5,1.353 +130,9,54,Y,7,2.987 +130,10,55,X,5,1.203 +130,10,56,D,2,2.287 +130,10,57,C,0,1.103 +130,10,58,A,10,1.703 +130,10,59,Y,7,1.353 +130,10,60,B,0,1.52 +131,1,1,A,10,3.453 +131,1,2,Y,8,4.62 +131,1,3,D,1,1.887 +131,1,4,X,5,4.92 +131,1,5,C,1,3.988 +131,1,6,B,4,2.937 +131,2,7,C,1,1.337 +131,2,8,D,1,0.77 +131,2,9,Y,8,1.387 +131,2,10,X,7,1.437 +131,2,11,A,10,1.303 +131,2,12,B,6,2.403 +131,3,13,C,1,1.353 +131,3,14,Y,7,1.67 +131,3,15,B,8,1.437 +131,3,16,A,10,1.103 +131,3,17,D,1,1.187 +131,3,18,X,7,1.786 +131,4,19,A,10,1.637 +131,4,20,C,1,1.153 +131,4,21,B,6,2.154 +131,4,22,Y,8,1.837 +131,4,23,X,8,0.737 +131,4,24,D,1,1.121 +131,5,25,Y,8,1.186 +131,5,26,B,7,1.387 +131,5,27,X,8,0.97 +131,5,28,A,10,0.737 +131,5,29,C,1,0.987 +131,5,30,D,1,1.52 +131,6,31,B,8,1.203 +131,6,32,C,1,1.27 +131,6,33,Y,8,1.103 +131,6,34,X,7,1.305 +131,6,35,A,10,1.053 +131,6,36,D,1,1.153 +131,7,37,D,1,0.905 +131,7,38,A,10,1.27 +131,7,39,C,1,1.12 +131,7,40,B,8,1.32 +131,7,41,X,7,0.853 +131,7,42,Y,8,1.622 +131,8,43,X,7,0.953 +131,8,44,C,1,1.003 +131,8,45,D,1,0.854 +131,8,46,B,8,1.087 +131,8,47,A,10,0.77 +131,8,48,Y,9,1.537 +131,9,49,B,9,0.687 +131,9,50,A,9,0.654 +131,9,51,Y,8,1.022 +131,9,52,C,1,1.27 +131,9,53,D,1,1.004 +131,9,54,X,7,1.303 +131,10,55,Y,9,1.636 +131,10,56,A,10,0.72 +131,10,57,D,1,1.22 +131,10,58,X,8,1.254 +131,10,59,C,1,1.103 +131,10,60,B,7,0.97 +132,1,1,D,0,9.32 +132,1,2,A,10,2.62 +132,1,3,B,5,2.34 +132,1,4,C,0,1.891 +132,1,5,Y,10,6.053 +132,1,6,X,5,7.447 +132,2,7,X,5,0.837 +132,2,8,C,0,4.275 +132,2,9,B,5,4.792 +132,2,10,A,10,8.557 +132,2,11,D,0,6.47 +132,2,12,Y,5,2.475 +132,3,13,D,0,1.304 +132,3,14,Y,5,0.825 +132,3,15,C,0,0.958 +132,3,16,X,0,1.337 +132,3,17,B,0,1.204 +132,3,18,A,10,2.004 +132,4,19,Y,5,2.292 +132,4,20,D,0,1.204 +132,4,21,X,5,3.741 +132,4,22,C,0,1.077 +132,4,23,A,10,1.225 +132,4,24,B,5,1.958 +132,5,25,X,5,0.637 +132,5,26,Y,5,2.025 +132,5,27,C,0,1.204 +132,5,28,D,0,1.104 +132,5,29,A,10,1.289 +132,5,30,B,5,1.004 +132,6,31,A,10,1.287 +132,6,32,X,5,1.52 +132,6,33,B,5,1.039 +132,6,34,Y,5,3.12 +132,6,35,D,0,1.291 +132,6,36,C,0,0.954 +132,7,37,B,5,3.753 +132,7,38,X,5,0.72 +132,7,39,A,10,1.004 +132,7,40,C,0,1.52 +132,7,41,D,0,1.254 +132,7,42,Y,10,2.403 +132,8,43,D,0,1.219 +132,8,44,X,5,0.892 +132,8,45,Y,10,2.005 +132,8,46,A,10,1.19 +132,8,47,B,5,0.954 +132,8,48,C,0,1.003 +132,9,49,X,5,2.353 +132,9,50,B,5,1.588 +132,9,51,A,10,1.087 +132,9,52,D,0,1.853 +132,9,53,Y,5,2.939 +132,9,54,C,0,1.406 +132,10,55,C,0,1.192 +132,10,56,D,0,0.953 +132,10,57,B,5,2.589 +132,10,58,Y,10,2.453 +132,10,59,X,5,0.719 +132,10,60,A,10,1.842 +133,1,1,B,0,6.653 +133,1,2,D,0,1.52 +133,1,3,Y,10,2.303 +133,1,4,A,10,0.653 +133,1,5,C,0,2.803 +133,1,6,X,9,3.703 +133,2,7,X,9,1.336 +133,2,8,C,0,1.52 +133,2,9,A,10,1.82 +133,2,10,Y,10,1.553 +133,2,11,B,0,1.736 +133,2,12,D,0,2.987 +133,3,13,B,0,0.937 +133,3,14,D,0,0.87 +133,3,15,X,9,2.52 +133,3,16,C,0,1.386 +133,3,17,Y,10,2.153 +133,3,18,A,10,0.82 +133,4,19,X,10,1.087 +133,4,20,Y,10,2.269 +133,4,21,D,0,1.053 +133,4,22,C,0,1.87 +133,4,23,A,10,1.386 +133,4,24,B,0,1.503 +133,5,25,D,0,0.636 +133,5,26,A,10,1.22 +133,5,27,C,0,1.619 +133,5,28,B,0,1.453 +133,5,29,X,10,1.386 +133,5,30,Y,10,1.287 +133,6,31,Y,10,0.57 +133,6,32,D,0,0.987 +133,6,33,C,0,1.553 +133,6,34,A,10,1.803 +133,6,35,X,9,1.053 +133,6,36,B,0,1.553 +133,7,37,Y,10,1.453 +133,7,38,B,0,1.453 +133,7,39,A,10,1.186 +133,7,40,D,0,1.536 +133,7,41,X,10,1.02 +133,7,42,C,0,1.787 +133,8,43,Y,10,1.186 +133,8,44,B,0,1.57 +133,8,45,A,10,1.37 +133,8,46,D,0,1.387 +133,8,47,X,10,1.22 +133,8,48,C,0,1.553 +133,9,49,B,0,1.77 +133,9,50,D,0,0.953 +133,9,51,Y,10,1.836 +133,9,52,A,10,1.17 +133,9,53,X,10,1.303 +133,9,54,C,0,1.437 +133,10,55,B,0,1.17 +133,10,56,D,0,0.62 +133,10,57,X,10,1.503 +133,10,58,Y,10,1.136 +133,10,59,C,0,1.203 +133,10,60,A,10,1.72 +134,1,1,C,0,3.586 +134,1,2,Y,8,4.187 +134,1,3,D,0,1.81 +134,1,4,A,10,2.288 +134,1,5,X,5,2.624 +134,1,6,B,0,2.22 +134,2,7,D,2,4.688 +134,2,8,C,0,2.141 +134,2,9,B,0,0.976 +134,2,10,A,10,1.689 +134,2,11,Y,8,2.406 +134,2,12,X,5,1.889 +134,3,13,D,2,1.372 +134,3,14,A,10,2.005 +134,3,15,Y,8,2.153 +134,3,16,B,0,2.52 +134,3,17,X,5,1.788 +134,3,18,C,0,2.793 +134,4,19,Y,8,1.991 +134,4,20,B,0,1.406 +134,4,21,A,10,0.94 +134,4,22,X,5,1.155 +134,4,23,C,0,2.355 +134,4,24,D,2,1.257 +134,5,25,C,0,1.022 +134,5,26,A,10,1.391 +134,5,27,Y,8,1.14 +134,5,28,D,2,1.522 +134,5,29,B,0,1.405 +134,5,30,X,5,1.293 +134,6,31,B,0,1.127 +134,6,32,Y,8,1.62 +134,6,33,C,0,1.505 +134,6,34,X,5,1.505 +134,6,35,A,10,1.539 +134,6,36,D,2,1.491 +134,7,37,C,0,2.606 +134,7,38,D,2,1.073 +134,7,39,X,5,2.008 +134,7,40,B,0,0.92 +134,7,41,Y,8,2.438 +134,7,42,A,10,2.355 +134,8,43,A,10,0.791 +134,8,44,D,2,0.96 +134,8,45,C,0,1.16 +134,8,46,B,0,1.588 +134,8,47,X,5,1.32 +134,8,48,Y,8,1.109 +134,9,49,X,5,2.207 +134,9,50,D,2,1.231 +134,9,51,C,0,0.939 +134,9,52,B,0,1.193 +134,9,53,A,10,1.412 +134,9,54,Y,8,0.888 +134,10,55,Y,8,0.554 +134,10,56,A,10,1.31 +134,10,57,B,0,1.037 +134,10,58,D,2,1.238 +134,10,59,X,5,1.089 +134,10,60,C,0,0.872 +135,1,1,B,0,3.986 +135,1,2,C,0,1.97 +135,1,3,A,10,4.803 +135,1,4,D,0,2.82 +135,1,5,X,0,2.453 +135,1,6,Y,8,4.837 +135,2,7,X,1,4.72 +135,2,8,D,1,1.67 +135,2,9,A,10,1.436 +135,2,10,Y,8,1.487 +135,2,11,C,0,1.686 +135,2,12,B,0,1.12 +135,3,13,D,0,2.287 +135,3,14,A,10,1.47 +135,3,15,B,1,2.12 +135,3,16,Y,8,2.17 +135,3,17,C,0,1.786 +135,3,18,X,2,2.12 +135,4,19,A,10,2.137 +135,4,20,Y,8,1.52 +135,4,21,C,0,1.153 +135,4,22,D,1,2.187 +135,4,23,B,0,1.32 +135,4,24,X,2,2.353 +135,5,25,A,10,1.653 +135,5,26,X,3,3.353 +135,5,27,Y,8,3.003 +135,5,28,C,0,1.237 +135,5,29,B,0,2.32 +135,5,30,D,2,1.07 +135,6,31,Y,8,1.52 +135,6,32,D,2,1.604 +135,6,33,C,0,1.837 +135,6,34,B,0,1.087 +135,6,35,X,0,2.603 +135,6,36,A,10,1.153 +135,7,37,A,10,1.053 +135,7,38,D,2,1.203 +135,7,39,X,0,1.537 +135,7,40,Y,10,1.27 +135,7,41,B,0,2.253 +135,7,42,C,0,0.903 +135,8,43,D,1,1.103 +135,8,44,Y,8,3.736 +135,8,45,B,0,0.953 +135,8,46,A,10,1.386 +135,8,47,C,1,1.636 +135,8,48,X,1,2.237 +135,9,49,X,1,1.337 +135,9,50,C,0,0.836 +135,9,51,D,1,1.07 +135,9,52,B,0,3.32 +135,9,53,Y,8,1.336 +135,9,54,A,10,0.953 +135,10,55,Y,8,1.37 +135,10,56,D,2,1.187 +135,10,57,X,2,2.837 +135,10,58,A,10,1.436 +135,10,59,C,0,1.07 +135,10,60,B,0,1.053 +136,1,1,D,0,7.42 +136,1,2,B,0,1.82 +136,1,3,X,10,4.536 +136,1,4,C,0,2.153 +136,1,5,A,10,2.186 +136,1,6,Y,10,1.553 +136,2,7,B,0,1.637 +136,2,8,D,0,1.22 +136,2,9,X,10,1.97 +136,2,10,A,10,1.036 +136,2,11,C,0,1.553 +136,2,12,Y,10,1.67 +136,3,13,C,0,3.17 +136,3,14,Y,10,3.237 +136,3,15,D,0,1.92 +136,3,16,B,0,0.786 +136,3,17,X,10,1.786 +136,3,18,A,10,2.287 +136,4,19,X,10,4.32 +136,4,20,C,0,3.287 +136,4,21,A,10,4.037 +136,4,22,B,0,1.453 +136,4,23,Y,10,3.003 +136,4,24,D,0,2.537 +136,5,25,B,0,0.803 +136,5,26,C,0,1.02 +136,5,27,X,10,1.403 +136,5,28,A,10,1.453 +136,5,29,D,0,1.32 +136,5,30,Y,10,5.103 +136,6,31,X,10,0.703 +136,6,32,A,10,0.62 +136,6,33,C,0,1.553 +136,6,34,D,0,1.07 +136,6,35,B,0,0.72 +136,6,36,Y,10,1.42 +136,7,37,A,10,0.753 +136,7,38,C,0,1.803 +136,7,39,X,10,1.786 +136,7,40,Y,10,0.903 +136,7,41,D,0,1.536 +136,7,42,B,0,0.903 +136,8,43,A,10,1.387 +136,8,44,D,0,2.57 +136,8,45,B,0,1.437 +136,8,46,C,0,1.52 +136,8,47,X,10,1.753 +136,8,48,Y,10,4.404 +136,9,49,X,10,0.586 +136,9,50,A,10,0.537 +136,9,51,C,0,1.269 +136,9,52,B,0,0.636 +136,9,53,Y,10,1.453 +136,9,54,D,0,2.287 +136,10,55,X,10,1.887 +136,10,56,A,0,1.603 +136,10,57,D,10,1.286 +136,10,58,C,0,1.687 +136,10,59,Y,10,1.42 +136,10,60,B,0,2.503 +137,1,1,B,0,7.122 +137,1,2,X,0,2.205 +137,1,3,Y,10,2.937 +137,1,4,D,0,1.888 +137,1,5,C,0,0.572 +137,1,6,A,10,1.237 +137,2,7,D,0,0.903 +137,2,8,Y,10,1.071 +137,2,9,X,0,0.959 +137,2,10,A,10,1.186 +137,2,11,B,0,1.022 +137,2,12,C,0,0.793 +137,3,13,C,0,0.572 +137,3,14,Y,10,1.372 +137,3,15,X,0,1.198 +137,3,16,D,0,1.419 +137,3,17,B,0,0.638 +137,3,18,A,10,1.603 +137,4,19,Y,10,1.072 +137,4,20,X,0,0.674 +137,4,21,A,10,1.806 +137,4,22,C,0,0.919 +137,4,23,D,0,0.555 +137,4,24,B,0,0.608 +137,5,25,B,0,0.436 +137,5,26,C,0,0.505 +137,5,27,D,0,1.637 +137,5,28,Y,10,1.788 +137,5,29,X,0,0.569 +137,5,30,A,10,1.287 +137,6,31,A,10,1.102 +137,6,32,C,0,0.872 +137,6,33,B,0,0.42 +137,6,34,Y,10,0.939 +137,6,35,X,0,0.819 +137,6,36,D,0,0.454 +137,7,37,A,10,1.105 +137,7,38,C,1,0.588 +137,7,39,Y,10,2.172 +137,7,40,D,0,0.755 +137,7,41,B,0,0.572 +137,7,42,X,0,0.506 +137,8,43,A,10,1.371 +137,8,44,X,0,0.607 +137,8,45,D,0,0.505 +137,8,46,C,0,0.503 +137,8,47,Y,10,1.17 +137,8,48,B,0,0.571 +137,9,49,X,0,0.539 +137,9,50,C,0,0.437 +137,9,51,Y,0,0.42 +137,9,52,A,10,1.623 +137,9,53,D,0,0.569 +137,9,54,B,0,0.506 +137,10,55,A,10,1.355 +137,10,56,B,0,0.839 +137,10,57,Y,10,1.191 +137,10,58,X,0,0.505 +137,10,59,D,0,0.703 +137,10,60,C,0,0.588 +138,1,1,D,0,5.636 +138,1,2,B,0,3.17 +138,1,3,C,0,3.77 +138,1,4,X,3,9.67 +138,1,5,Y,10,3.953 +138,1,6,A,10,1.487 +138,2,7,D,2,5.887 +138,2,8,B,0,5.537 +138,2,9,Y,10,2.887 +138,2,10,C,0,5.254 +138,2,11,X,3,2.503 +138,2,12,A,10,3.637 +138,3,13,B,0,2.22 +138,3,14,D,2,1.436 +138,3,15,C,0,2.787 +138,3,16,Y,10,1.72 +138,3,17,X,2,1.903 +138,3,18,A,10,4.737 +138,4,19,Y,10,1.32 +138,4,20,B,0,3.987 +138,4,21,D,2,3.87 +138,4,22,A,10,1.47 +138,4,23,C,0,1.603 +138,4,24,X,3,1.803 +138,5,25,D,2,6.02 +138,5,26,C,0,1.437 +138,5,27,B,0,0.77 +138,5,28,Y,10,1.82 +138,5,29,X,1,3.287 +138,5,30,A,10,1.053 +138,6,31,A,10,6.62 +138,6,32,X,2,3.287 +138,6,33,C,0,3.703 +138,6,34,B,0,0.586 +138,6,35,D,3,2.253 +138,6,36,Y,10,1.07 +138,7,37,A,10,6.336 +138,7,38,C,0,1.57 +138,7,39,Y,10,0.97 +138,7,40,D,2,3.42 +138,7,41,B,0,1.037 +138,7,42,X,3,1.253 +138,8,43,D,3,3.103 +138,8,44,C,0,1.47 +138,8,45,X,4,1.17 +138,8,46,B,0,1.253 +138,8,47,A,10,1.453 +138,8,48,Y,10,0.72 +138,9,49,D,2,1.337 +138,9,50,X,3,0.97 +138,9,51,C,0,1.303 +138,9,52,B,0,0.77 +138,9,53,A,10,1.603 +138,9,54,Y,10,1.587 +138,10,55,D,2,3.171 +138,10,56,A,10,1.353 +138,10,57,X,3,2.153 +138,10,58,C,0,1.686 +138,10,59,B,0,1.387 +138,10,60,Y,10,1.77 +139,1,1,D,0,5.953 +139,1,2,B,0,2.989 +139,1,3,C,0,1.322 +139,1,4,A,10,2.038 +139,1,5,Y,10,1.536 +139,1,6,X,5,4.938 +139,2,7,X,5,2.787 +139,2,8,D,0,1.12 +139,2,9,B,0,1.493 +139,2,10,A,10,1.49 +139,2,11,C,0,2.386 +139,2,12,Y,10,3.972 +139,3,13,A,10,2.422 +139,3,14,D,0,1.12 +139,3,15,Y,10,1.308 +139,3,16,C,0,1.122 +139,3,17,X,5,1.439 +139,3,18,B,0,0.891 +139,4,19,C,0,0.777 +139,4,20,D,0,3.139 +139,4,21,X,5,1.505 +139,4,22,Y,10,1.408 +139,4,23,A,10,1.036 +139,4,24,B,0,2.624 +139,5,25,Y,10,1.905 +139,5,26,A,10,1.064 +139,5,27,B,0,1.109 +139,5,28,C,0,1.305 +139,5,29,X,5,1.108 +139,5,30,D,0,1.591 +139,6,31,D,0,0.986 +139,6,32,C,0,1.938 +139,6,33,A,10,1.386 +139,6,34,B,0,1.157 +139,6,35,X,5,1.291 +139,6,36,Y,10,1.354 +139,7,37,B,0,1.176 +139,7,38,Y,10,2.241 +139,7,39,C,0,1.172 +139,7,40,X,5,1.089 +139,7,41,A,10,1.123 +139,7,42,D,0,1.222 +139,8,43,C,0,1.169 +139,8,44,A,10,1.209 +139,8,45,X,5,1.131 +139,8,46,D,0,1.837 +139,8,47,B,0,0.971 +139,8,48,Y,10,1.52 +139,9,49,B,0,1.305 +139,9,50,C,0,0.838 +139,9,51,A,10,1.471 +139,9,52,Y,10,1.122 +139,9,53,X,5,1.006 +139,9,54,D,0,0.72 +139,10,55,C,0,0.623 +139,10,56,B,0,0.924 +139,10,57,A,10,1.189 +139,10,58,Y,10,2.372 +139,10,59,D,0,0.991 +139,10,60,X,5,1.287 +140,1,1,A,10,10.32 +140,1,2,B,0,6.92 +140,1,3,Y,10,1.27 +140,1,4,C,0,2.653 +140,1,5,D,0,0.503 +140,1,6,X,5,1.836 +140,2,7,Y,10,1.303 +140,2,8,D,0,1.286 +140,2,9,A,10,1.353 +140,2,10,X,5,1.286 +140,2,11,C,0,1.987 +140,2,12,B,0,1.553 +140,3,13,D,0,0.57 +140,3,14,B,0,1.686 +140,3,15,X,5,1.536 +140,3,16,Y,10,0.987 +140,3,17,A,10,0.686 +140,3,18,C,0,1.07 +140,4,19,D,0,0.92 +140,4,20,Y,10,1.153 +140,4,21,X,5,1.153 +140,4,22,C,0,1.12 +140,4,23,B,0,0.554 +140,4,24,A,10,1.003 +140,5,25,B,0,1.47 +140,5,26,C,0,0.536 +140,5,27,Y,10,1.337 +140,5,28,X,5,1.57 +140,5,29,D,0,1.17 +140,5,30,A,10,1.153 +140,6,31,A,10,0.436 +140,6,32,B,0,1.186 +140,6,33,C,0,0.737 +140,6,34,Y,10,1.17 +140,6,35,X,5,1.153 +140,6,36,D,0,1.004 +140,7,37,D,0,0.47 +140,7,38,C,0,1.037 +140,7,39,Y,10,1.103 +140,7,40,B,0,1.103 +140,7,41,X,5,1.303 +140,7,42,A,10,1.003 +140,8,43,A,10,0.47 +140,8,44,C,0,1.169 +140,8,45,B,0,0.953 +140,8,46,D,0,0.937 +140,8,47,Y,10,1.07 +140,8,48,X,5,0.909 +140,9,49,Y,10,0.92 +140,9,50,C,0,0.936 +140,9,51,A,10,1.171 +140,9,52,D,0,0.886 +140,9,53,X,5,1.187 +140,9,54,B,0,1.103 +140,10,55,B,0,0.554 +140,10,56,Y,10,1.203 +140,10,57,X,5,0.953 +140,10,58,C,0,0.953 +140,10,59,D,0,0.67 +140,10,60,A,10,1.036 +141,1,1,X,8,7.059 +141,1,2,Y,8,1.67 +141,1,3,D,0,1.909 +141,1,4,A,10,1.472 +141,1,5,C,0,1.787 +141,1,6,B,0,2.603 +141,2,7,X,7,7.869 +141,2,8,D,0,1.053 +141,2,9,A,10,1.736 +141,2,10,C,0,2.287 +141,2,11,B,0,1.272 +141,2,12,Y,7,3.238 +141,3,13,A,10,1.404 +141,3,14,X,10,0.64 +141,3,15,Y,8,2.188 +141,3,16,C,0,2.655 +141,3,17,D,0,3.82 +141,3,18,B,0,0.576 +141,4,19,A,10,1.305 +141,4,20,D,0,0.956 +141,4,21,C,0,0.509 +141,4,22,Y,7,2.653 +141,4,23,B,0,1.259 +141,4,24,X,10,1.526 +141,5,25,A,10,0.454 +141,5,26,C,0,1.04 +141,5,27,D,0,0.692 +141,5,28,Y,7,1.737 +141,5,29,X,10,1.438 +141,5,30,B,0,1.076 +141,6,31,X,7,1.508 +141,6,32,D,0,1.125 +141,6,33,B,0,0.505 +141,6,34,A,10,1.022 +141,6,35,Y,7,1.638 +141,6,36,C,0,1.022 +141,7,37,Y,7,1.373 +141,7,38,A,10,3.121 +141,7,39,C,0,1.189 +141,7,40,D,0,0.556 +141,7,41,B,0,0.507 +141,7,42,X,7,1.494 +141,8,43,D,0,1.439 +141,8,44,B,0,0.572 +141,8,45,A,10,1.473 +141,8,46,C,0,1.039 +141,8,47,X,7,1.403 +141,8,48,Y,7,0.66 +141,9,49,A,10,0.776 +141,9,50,X,7,0.97 +141,9,51,B,0,1.622 +141,9,52,D,0,1.657 +141,9,53,Y,7,1.989 +141,9,54,C,0,1.256 +141,10,55,D,0,0.608 +141,10,56,X,6,1.175 +141,10,57,Y,7,1.256 +141,10,58,B,0,1.26 +141,10,59,A,10,1.372 +141,10,60,C,0,1.347 diff --git a/docs/api/datasets.rst b/docs/api/datasets.rst index 420c69e..f5851c2 100644 --- a/docs/api/datasets.rst +++ b/docs/api/datasets.rst @@ -12,6 +12,7 @@ and examples. load_bandit_data load_two_step_data + load_blocking_data load_risky_choices load_metacognition_data load_csv diff --git a/docs/conf.py b/docs/conf.py index 40da8d4..4f00fe0 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -84,12 +84,17 @@ ], "cpm.applications.reinforcement_learning.HybridMBMF": ["examples/two-step-task"], "cpm.models.learning.SARSATrace": ["examples/two-step-task"], - "cpm.models.learning.SeparableRule": ["examples/blocking"], - "cpm.models.learning.DeltaRule": ["examples/blocking", "tutorials/first-model"], + "cpm.models.learning.SeparableRule": [ + "tutorials/first-model", + "examples/blocking", + "examples/blocking-ratings", + ], + "cpm.models.learning.DeltaRule": ["examples/blocking", "examples/blocking-ratings"], "cpm.applications.signal_detection.EstimatorMetaD": ["examples/meta-d"], "cpm.datasets.load_bandit_data": ["tutorials/first-model"], "cpm.datasets.load_metacognition_data": ["examples/meta-d"], "cpm.datasets.load_two_step_data": ["examples/two-step-task"], + "cpm.datasets.load_blocking_data": ["examples/blocking-ratings"], } autosummary_context = {"tutorial_links": API_TUTORIAL_LINKS} diff --git a/docs/examples/blocking-ratings.ipynb b/docs/examples/blocking-ratings.ipynb new file mode 100644 index 0000000..af38d0f --- /dev/null +++ b/docs/examples/blocking-ratings.ipynb @@ -0,0 +1,1153 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f8f1dfe0", + "metadata": {}, + "source": [ + "# Fitting causal ratings in a blocking experiment\n", + "\n", + "> **Level** Intermediate · **Time** 25 minutes · **Prerequisites** [Blocking with Bush–Mosteller and Rescorla–Wagner](blocking.ipynb) and [Tutorial 1](../tutorials/first-model.ipynb) ·\n", + "> **cpm components** [`SeparableRule`](#cpm.models.learning.SeparableRule), [`DeltaRule`](#cpm.models.learning.DeltaRule), [`Nominal`](#cpm.models.utils.Nominal), [`Wrapper`](#cpm.generators.Wrapper), [`FminBound`](#cpm.optimisation.FminBound), [`Distance`](#cpm.optimisation.minimise.Distance) ·\n", + "> **Data** [`load_blocking_data`](#cpm.datasets.load_blocking_data), the blocking experiment of Spicer et al. (2021)\n", + "\n", + "In the [blocking example](blocking.ipynb), only the Rescorla–Wagner model predicted blocking.\n", + "Does that mean it also explains a blocking experiment better than the Bush–Mosteller model?\n", + "Spicer et al. (2021) fitted both models to the full results of a blocking experiment, all six test cues rather than only the blocked cue and its control.\n", + "As usually applied, with every cue starting at an associative strength of zero, the Rescorla–Wagner model fitted no better than the Bush–Mosteller model.\n", + "It only fitted better once the starting strength of the cues was a free parameter, which they proposed represents uncertainty about novel cues.\n", + "\n", + "In this example, we recreate the two blocking figures of their paper (Figures 1 and 2), using their data.\n", + "\n", + "**What you'll learn**\n", + "\n", + "- how to turn associative strengths into ratings with a logistic response function,\n", + "- how to make the starting state of a model a free parameter,\n", + "- how to fit one set of parameters to the mean ratings of a group, with your own loss function in [`FminBound`](#cpm.optimisation.FminBound),\n", + "- why fitting all the cues of an experiment, rather than one effect, can change which model wins." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "b1b3d762", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-01T08:52:13.545218Z", + "iopub.status.busy": "2026-10-01T08:52:13.545218Z", + "iopub.status.idle": "2026-10-01T08:52:15.436643Z", + "shell.execute_reply": "2026-10-01T08:52:15.436643Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.26.0.dev0\n" + ] + } + ], + "source": [ + "import cpm\n", + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "print(cpm.__version__)" + ] + }, + { + "cell_type": "markdown", + "id": "7384773b", + "metadata": {}, + "source": [ + "## The experiment\n", + "\n", + "Forty-one participants played a doctor, who learns which foods cause stomach ache in a patient.\n", + "Each food is a cue, and + means that stomach ache followed, − that it did not.\n", + "\n", + "| Stage 1 | Stage 2 | Test |\n", + "|---|---|---|\n", + "| A+, B−, C− | AX+, BY+, CD− | A, B, C, D, X, Y |\n", + "\n", + "X is the blocked cue: it was paired with A, which already predicted stomach ache.\n", + "Y is its control: it was paired with B, which did not.\n", + "C and D are fillers, so that as many trial types were followed by stomach ache as not.\n", + "Stage 1 had twelve blocks of its three trial types, and Stage 2 six blocks, each in a random order.\n", + "At test, participants rated how likely each food was to cause stomach ache, from 0 (very unlikely) to 10 (very likely), in ten blocks without feedback.\n", + "\n", + "[`load_blocking_data`](#cpm.datasets.load_blocking_data) returns the test ratings, one row per test trial.\n", + "Spicer et al. published the data on the [Open Science Framework](https://osf.io/sa8ux/) under a [CC BY 4.0 license](https://creativecommons.org/licenses/by/4.0/)." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "296474ef", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-01T08:52:15.438650Z", + "iopub.status.busy": "2026-10-01T08:52:15.438650Z", + "iopub.status.idle": "2026-10-01T08:52:15.459043Z", + "shell.execute_reply": "2026-10-01T08:52:15.459043Z" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
pptblocktrialcueratingrt
010111B08.220
110112C01.586
210113D01.536
310114X00.770
410115Y102.453
\n", + "
" + ], + "text/plain": [ + " ppt block trial cue rating rt\n", + "0 101 1 1 B 0 8.220\n", + "1 101 1 2 C 0 1.586\n", + "2 101 1 3 D 0 1.536\n", + "3 101 1 4 X 0 0.770\n", + "4 101 1 5 Y 10 2.453" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from cpm.datasets import load_blocking_data\n", + "\n", + "ratings = load_blocking_data()\n", + "ratings.head()" + ] + }, + { + "cell_type": "markdown", + "id": "faad1383", + "metadata": {}, + "source": [ + "We average the ratings of each participant over the ten test blocks, and then over participants." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "bb13829e", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-01T08:52:15.461558Z", + "iopub.status.busy": "2026-10-01T08:52:15.461558Z", + "iopub.status.idle": "2026-10-01T08:52:15.472437Z", + "shell.execute_reply": "2026-10-01T08:52:15.472437Z" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
cueABCDXY
mean rating9.841.470.350.814.978.42
\n", + "
" + ], + "text/plain": [ + "cue A B C D X Y\n", + "mean rating 9.84 1.47 0.35 0.81 4.97 8.42" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cue_names = [\"A\", \"B\", \"C\", \"D\", \"X\", \"Y\"]\n", + "\n", + "participant_means = ratings.groupby([\"ppt\", \"cue\"]).rating.mean().unstack()[cue_names]\n", + "observed = participant_means.mean()\n", + "observed.round(2).to_frame(\"mean rating\").T" + ] + }, + { + "cell_type": "markdown", + "id": "b68011b3", + "metadata": {}, + "source": [ + "Participants rated the blocked cue X lower than its control Y, so learning about X was blocked.\n", + "But X was not rated low: its mean rating is close to 5, the middle of the scale.\n", + "\n", + "## The models\n", + "\n", + "We use the two learning rules of the [blocking example](blocking.ipynb).\n", + "$V_i$ is the associative strength of cue $i$, $R$ is the outcome, and $\\alpha$ is the learning rate, which is the same for all cues.\n", + "\n", + "**Bush and Mosteller (1951).** Each cue that is present learns from its own error, independently of the other cues:\n", + "\n", + "$$\n", + "\\Delta V_i = \\alpha \\, (R - V_i)\n", + "$$\n", + "\n", + "**Rescorla and Wagner (1972).** All cues that are present share one error, the difference between the outcome and their summed prediction:\n", + "\n", + "$$\n", + "\\Delta V_i = \\alpha \\left( R - \\sum_{j \\in \\text{present}} V_j \\right)\n", + "$$\n", + "\n", + "Spicer et al. write the learning rate as the product of a cue salience and an outcome learning rate, and collapse the two into one parameter, $G$, which is our $\\alpha$.\n", + "\n", + "Participants gave ratings, not associative strengths.\n", + "Following Spicer et al., who in turn follow Gluck and Bower (1988), the rating $P_i$ of cue $i$ is a logistic function of its associative strength:\n", + "\n", + "$$\n", + "P_i = \\frac{10}{1 + e^{-\\theta \\, (V_i - \\beta)}}\n", + "$$\n", + "\n", + "$\\beta$ is the associative strength that is rated 5, the middle of the scale, and $\\theta$ sets how steeply the rating rises around it.\n", + "\n", + "Before training, every cue has the same starting strength $V_0$:\n", + "\n", + "$$\n", + "V_i = V_0 \\quad \\text{for all cues } i\n", + "$$\n", + "\n", + "As usually applied, both models start at $V_0 = 0$.\n", + "The model has four parameters: $\\alpha$, $\\beta$, $\\theta$, and, when it is free, $V_0$." + ] + }, + { + "cell_type": "markdown", + "id": "d34c13cd", + "metadata": {}, + "source": [ + "We extend the model function of the [blocking example](blocking.ipynb) in three ways:\n", + "\n", + "- on the first trial, all six associative strengths are set to the starting strength,\n", + "- the model predicts a rating from the summed strength of the cues present,\n", + "- on test trials there is no feedback, so the strengths are not updated.\n", + "\n", + "Like Spicer et al., we fit ratings divided by 10, so that they are on the same scale as associative strength." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "24e40a59", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-01T08:52:15.474443Z", + "iopub.status.busy": "2026-10-01T08:52:15.474443Z", + "iopub.status.idle": "2026-10-01T08:52:15.478487Z", + "shell.execute_reply": "2026-10-01T08:52:15.478487Z" + } + }, + "outputs": [], + "source": [ + "from functools import partial\n", + "\n", + "from cpm.generators import Parameters, Value, Wrapper\n", + "from cpm.models.learning import DeltaRule, SeparableRule\n", + "from cpm.models.utils import Nominal\n", + "\n", + "\n", + "def model(parameters, trial, rule):\n", + " values = np.asarray(parameters.values).copy()\n", + " if trial.trial == 1:\n", + " values[:] = parameters.initial_strength\n", + " cues = np.array([trial.cue_1, trial.cue_2], dtype=int)\n", + " present = Nominal(target=cues[cues > 0], bits=6)\n", + "\n", + " prediction = np.sum(values * present)\n", + " rating = 1 / (1 + np.exp(-parameters.theta * (prediction - parameters.beta)))\n", + " if trial.phase < 3: # no feedback at test\n", + " update = rule(weights=values, feedback=[trial.outcome], input=present, alpha=parameters.alpha)\n", + " update.compute()\n", + " values += update.weights.flatten()\n", + "\n", + " return {\"values\": values, \"prediction\": prediction, \"rating\": rating, \"dependent\": np.array([rating])}\n", + "\n", + "\n", + "rules = {\"Bush and Mosteller\": SeparableRule, \"Rescorla and Wagner\": DeltaRule}" + ] + }, + { + "cell_type": "markdown", + "id": "898423ec", + "metadata": {}, + "source": [ + "Next, we write the experiment as a table, with one row per trial, as in the [blocking example](blocking.ipynb).\n", + "The cues are numbered A = 1, B = 2, C = 3, D = 4, X = 5 and Y = 6.\n", + "Each cue is tested once: learning stops at test, so a second test block would give the same predictions.\n", + "\n", + "The dataset does not include the order in which each participant saw the training trials.\n", + "We use one fixed order instead; with learning rates as small as the ones we find below, the order does not change the fitted ratings." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "8547045f", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-01T08:52:15.481093Z", + "iopub.status.busy": "2026-10-01T08:52:15.480088Z", + "iopub.status.idle": "2026-10-01T08:52:15.487963Z", + "shell.execute_reply": "2026-10-01T08:52:15.487963Z" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
phasecue_1cue_2outcometrial
52226153
53234054
54310055
55320056
56330057
57340058
58350059
59360060
\n", + "
" + ], + "text/plain": [ + " phase cue_1 cue_2 outcome trial\n", + "52 2 2 6 1 53\n", + "53 2 3 4 0 54\n", + "54 3 1 0 0 55\n", + "55 3 2 0 0 56\n", + "56 3 3 0 0 57\n", + "57 3 4 0 0 58\n", + "58 3 5 0 0 59\n", + "59 3 6 0 0 60" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "number = {cue: i + 1 for i, cue in enumerate(cue_names)}\n", + "\n", + "\n", + "def trials(phase, stimuli, outcomes):\n", + " return [\n", + " {\"phase\": phase, \"cue_1\": number[s[0]], \"cue_2\": number[s[1]] if len(s) > 1 else 0, \"outcome\": outcome}\n", + " for s, outcome in zip(stimuli, outcomes)\n", + " ]\n", + "\n", + "\n", + "stage_1 = trials(1, [\"A\", \"B\", \"C\"], [1, 0, 0]) * 12\n", + "stage_2 = trials(2, [\"AX\", \"BY\", \"CD\"], [1, 1, 0]) * 6\n", + "test = trials(3, cue_names, [0] * 6)\n", + "design = pd.DataFrame(stage_1 + stage_2 + test)\n", + "design[\"trial\"] = np.arange(1, len(design) + 1)\n", + "design.tail(8)" + ] + }, + { + "cell_type": "markdown", + "id": "389f76a0", + "metadata": {}, + "source": [ + "## Fitting the mean ratings\n", + "\n", + "Spicer et al. fitted one set of parameters to the six mean ratings of the group, by minimising the sum of squared errors (SSE) between the predicted and observed ratings.\n", + "To do this with [`FminBound`](#cpm.optimisation.FminBound), we treat the whole group as a single participant: the `observed` column holds the mean rating of each cue on its test trial, and nothing on the training trials, where no ratings were made.\n", + "\n", + "The squared-error loss of [`Distance.SSE`](#cpm.optimisation.minimise.Distance.SSE) does not accept missing values, so we write a loss function that passes it the test trials only." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "88023cb0", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-01T08:52:15.489970Z", + "iopub.status.busy": "2026-10-01T08:52:15.489970Z", + "iopub.status.idle": "2026-10-01T08:52:15.494486Z", + "shell.execute_reply": "2026-10-01T08:52:15.494486Z" + } + }, + "outputs": [], + "source": [ + "from cpm.optimisation import FminBound, minimise\n", + "\n", + "design[\"ppt\"] = \"group\"\n", + "design[\"observed\"] = np.nan\n", + "test_trials = design.phase.eq(3).to_numpy()\n", + "design.loc[test_trials, \"observed\"] = observed[cue_names].to_numpy() / 10\n", + "\n", + "\n", + "def test_sse(predicted, observed, **kwargs):\n", + " rated = ~np.isnan(np.ravel(observed))\n", + " return minimise.Distance.SSE(np.ravel(predicted)[rated], np.ravel(observed)[rated])" + ] + }, + { + "cell_type": "markdown", + "id": "46200890", + "metadata": {}, + "source": [ + "The parameters get bounds but no informative priors, since we minimise the SSE alone.\n", + "The starting strength is a fixed value, or a free parameter between −1 and 1, as in Spicer et al." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "2ea03fe6", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-01T08:52:15.496384Z", + "iopub.status.busy": "2026-10-01T08:52:15.496384Z", + "iopub.status.idle": "2026-10-01T08:52:15.499285Z", + "shell.execute_reply": "2026-10-01T08:52:15.499285Z" + } + }, + "outputs": [], + "source": [ + "def make_parameters(initial_strength):\n", + " return Parameters(\n", + " alpha=Value(value=0.1, lower=0, upper=1, prior=\"uniform\"),\n", + " beta=Value(value=0.5, lower=0, upper=1, prior=\"uniform\"),\n", + " theta=Value(value=5, lower=0, upper=100, prior=\"uniform\"),\n", + " initial_strength=initial_strength,\n", + " values=np.zeros(6),\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "7efb49d4", + "metadata": {}, + "source": [ + "The fit can end in a local minimum, so we start the optimiser from a grid of starting values and keep the best fit, as Spicer et al. did.\n", + "The error surface of the Bush–Mosteller model is flat along some directions, so we also tighten the stopping rule of the optimiser.\n", + "The function below fits both models, and returns their best-fitting parameters, their SSE, and the $R^2$ of the predicted against the observed mean ratings, which Spicer et al. used to judge how well a model fits." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "b509acac", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-01T08:52:15.501292Z", + "iopub.status.busy": "2026-10-01T08:52:15.501292Z", + "iopub.status.idle": "2026-10-01T08:52:15.505161Z", + "shell.execute_reply": "2026-10-01T08:52:15.505161Z" + } + }, + "outputs": [], + "source": [ + "from itertools import product\n", + "\n", + "\n", + "def fit_models(initial_strength, guesses):\n", + " summary, predictions = {}, {}\n", + " for name, rule in rules.items():\n", + " wrapper = Wrapper(model=partial(model, rule=rule), parameters=make_parameters(initial_strength), data=design)\n", + " fit = FminBound(\n", + " model=wrapper,\n", + " data=design,\n", + " ppt_identifier=\"ppt\",\n", + " minimisation=test_sse,\n", + " initial_guess=guesses,\n", + " number_of_starts=len(guesses),\n", + " # passed on to scipy.optimize.fmin_l_bfgs_b\n", + " approx_grad=True,\n", + " factr=10,\n", + " pgtol=1e-12,\n", + " )\n", + " fit.optimise(display=False)\n", + "\n", + " best = {key: float(value) for key, value in fit.parameters[0].items()}\n", + " wrapper.reset(parameters=best)\n", + " wrapper.run()\n", + " predictions[name] = 10 * wrapper.dependent[test_trials].ravel()\n", + " r_squared = np.corrcoef(predictions[name], observed[cue_names])[0, 1] ** 2\n", + " summary[name] = {\"initial_strength\": float(np.asarray(initial_strength)), **best, \"SSE\": fit.fit[0][\"fun\"], \"R²\": r_squared}\n", + " return pd.DataFrame(summary).T, pd.DataFrame(predictions, index=cue_names)" + ] + }, + { + "cell_type": "markdown", + "id": "f528749f", + "metadata": {}, + "source": [ + "Spicer et al. show the fits as the predicted mean rating of each cue, against the distribution of the participants' ratings.\n", + "We draw the same figure: the grey dots are the mean ratings of individual participants, the black line is the mean of the group, and the two models are drawn on either side of it, so that the distance to the line is the error of the model." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "708ab22d", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-01T08:52:15.507169Z", + "iopub.status.busy": "2026-10-01T08:52:15.507169Z", + "iopub.status.idle": "2026-10-01T08:52:15.513761Z", + "shell.execute_reply": "2026-10-01T08:52:15.513761Z" + } + }, + "outputs": [], + "source": [ + "SURFACE, INK, MUTED, GRID = \"#fcfcfb\", \"#0b0b0b\", \"#52514e\", \"#e6e5e1\"\n", + "styles = { # colour and shape, so that the models are not told apart by colour alone\n", + " \"Bush and Mosteller\": {\"color\": \"#2a78d6\", \"marker\": \"o\", \"offset\": -0.15},\n", + " \"Rescorla and Wagner\": {\"color\": \"#eb6834\", \"marker\": \"D\", \"offset\": 0.15},\n", + "}\n", + "\n", + "\n", + "def plot_fit(predictions, title):\n", + " positions = np.arange(len(cue_names))\n", + " jitter = np.random.default_rng(0).uniform(-0.07, 0.07, participant_means.shape)\n", + " fig, ax = plt.subplots(figsize=(7.5, 4.4), facecolor=SURFACE)\n", + " ax.set_facecolor(SURFACE)\n", + "\n", + " violins = ax.violinplot([participant_means[cue] for cue in cue_names], positions=positions, widths=0.8, showextrema=False)\n", + " for body in violins[\"bodies\"]:\n", + " body.set(facecolor=\"#eeede9\", edgecolor=\"none\", alpha=1)\n", + " ax.scatter((positions + jitter).ravel(), participant_means.to_numpy().ravel(), s=10, color=\"#a9a8a2\", linewidths=0, zorder=2, label=\"participants\")\n", + " ax.hlines(observed[cue_names], positions - 0.32, positions + 0.32, color=INK, linewidth=2.5, zorder=3, label=\"observed mean\")\n", + " for name, style in styles.items():\n", + " ax.scatter(\n", + " positions + style[\"offset\"], predictions[name], s=80, color=style[\"color\"], marker=style[\"marker\"],\n", + " edgecolors=SURFACE, linewidths=2, zorder=4, label=name,\n", + " )\n", + "\n", + " ax.set_xticks(positions, cue_names, fontsize=11, color=INK)\n", + " ax.set_yticks(range(0, 11, 2))\n", + " ax.set_ylim(-0.5, 10.5)\n", + " ax.set_xlim(-0.6, len(cue_names) - 0.4)\n", + " ax.set_xlabel(\"cue\", color=MUTED)\n", + " ax.set_ylabel(\"mean causal rating\", color=MUTED)\n", + " ax.tick_params(length=0, colors=MUTED)\n", + " ax.yaxis.grid(True, color=GRID, linewidth=0.8)\n", + " ax.set_axisbelow(True)\n", + " ax.spines[[\"top\", \"right\", \"left\"]].set_visible(False)\n", + " ax.spines[\"bottom\"].set_color(GRID)\n", + " ax.set_title(title, loc=\"left\", color=INK, fontsize=12, pad=30)\n", + " legend = ax.legend(\n", + " ncol=4, loc=\"lower left\", bbox_to_anchor=(0, 1.0), frameon=False, fontsize=9, labelcolor=MUTED,\n", + " handletextpad=0.3, columnspacing=1.2, borderaxespad=0.3,\n", + " )\n", + " legend.legend_handles[0].set_sizes([30]) # the participant dots are too small to read in the legend\n", + " plt.tight_layout()\n", + " plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "5dbb52da", + "metadata": {}, + "source": [ + "The values that Spicer et al. report for their fits (Tables S2 and S3 of their supplementary materials) are below, for comparison.\n", + "They are rounded to two decimal places." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "769939ba", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-01T08:52:15.515768Z", + "iopub.status.busy": "2026-10-01T08:52:15.515768Z", + "iopub.status.idle": "2026-10-01T08:52:15.520153Z", + "shell.execute_reply": "2026-10-01T08:52:15.520153Z" + } + }, + "outputs": [], + "source": [ + "reported = pd.DataFrame(\n", + " [\n", + " [\"zero\", \"Bush and Mosteller\", 0.00, 0.04, 0.21, 13.41, 0.24, 0.71],\n", + " [\"zero\", \"Rescorla and Wagner\", 0.00, 0.01, 0.04, 75.81, 0.24, 0.71],\n", + " [\"free\", \"Bush and Mosteller\", 0.45, 0.02, 0.49, 30.52, 0.06, 0.93],\n", + " [\"free\", \"Rescorla and Wagner\", 0.43, 0.04, 0.41, 19.31, 0.00, 1.00],\n", + " ],\n", + " columns=[\"starting strength\", \"model\", \"initial_strength\", \"alpha\", \"beta\", \"theta\", \"SSE\", \"R²\"],\n", + ").set_index([\"starting strength\", \"model\"])" + ] + }, + { + "cell_type": "markdown", + "id": "a98eaed4", + "metadata": {}, + "source": [ + "## All cues start at zero\n", + "\n", + "We first fit the models as they are usually applied, with every cue starting at zero.\n", + "There are three free parameters, so the grid has $2^3 = 8$ starting points." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "b1571d35", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-01T08:52:15.522161Z", + "iopub.status.busy": "2026-10-01T08:52:15.522161Z", + "iopub.status.idle": "2026-10-01T08:52:39.246352Z", + "shell.execute_reply": "2026-10-01T08:52:39.246352Z" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
initial_strengthalphabetathetaSSER²
cpmBush and Mosteller0.00.0320.17915.5540.2420.711
Rescorla and Wagner0.00.0050.027100.0000.2440.710
Spicer et al. (2021)Bush and Mosteller0.00.0400.21013.4100.2400.710
Rescorla and Wagner0.00.0100.04075.8100.2400.710
\n", + "
" + ], + "text/plain": [ + " initial_strength alpha beta \\\n", + "cpm Bush and Mosteller 0.0 0.032 0.179 \n", + " Rescorla and Wagner 0.0 0.005 0.027 \n", + "Spicer et al. (2021) Bush and Mosteller 0.0 0.040 0.210 \n", + " Rescorla and Wagner 0.0 0.010 0.040 \n", + "\n", + " theta SSE R² \n", + "cpm Bush and Mosteller 15.554 0.242 0.711 \n", + " Rescorla and Wagner 100.000 0.244 0.710 \n", + "Spicer et al. (2021) Bush and Mosteller 13.410 0.240 0.710 \n", + " Rescorla and Wagner 75.810 0.240 0.710 " + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "grid = [(0.05, 0.25), (0.25, 0.75), (1, 3)] # alpha, beta, theta\n", + "zero_summary, zero_predictions = fit_models(0.0, np.array(list(product(*grid))))\n", + "\n", + "pd.concat({\"cpm\": zero_summary, \"Spicer et al. (2021)\": reported.loc[\"zero\"]}).round(3)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "e6392cce", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-01T08:52:39.249359Z", + "iopub.status.busy": "2026-10-01T08:52:39.249359Z", + "iopub.status.idle": "2026-10-01T08:52:39.478318Z", + "shell.execute_reply": "2026-10-01T08:52:39.478318Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtIAAAGuCAYAAAC9YuGNAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAACRYElEQVR4nO3dd5wTZf4H8M9M2u5mS7ayC+wuvRcb2HtBRE+xi6JYzv47785+dj3P7t159ooKKCB2xYYNLKAiYIGlCbvALlvYbM2mzfz+CAmbbHqbSfJ5v16+JMkk8+xMMvOdZ77P9xEcDrsMIiIiIiKKiKh0A4iIiIiIUhEDaSIiIiKiKDCQJiIiIiKKAgNpIiIiIqIoMJAmIiIiIooCA2kiIiIioigwkCYiIiIiigIDaSIiIiKiKDCQJiIiIiKKAgNpAAUFJtx3332ex3PnzkVBgQlbt25VsFVEREREpGZpH0g/99zzKCgw4aijjla6KSnh4Ycfwfvvv5+Qz16+fDnuu+8+mM3muH7uJ5984nUhRERERJQMaR9IL1y4EFVVVfjpp5+wadNmpZujeo8++ig++OCDhHz28uUrcP/9D6CtrS2un/vJJ5/i/vsfiOtnEhEREYWS1oH0li1bsHz5cvzrX/eipKQECxcuULpJGamrq0vpJiSNLMuwWCxKN4OIiIiSIK0D6YULF8JkMmHKlCk4+eSTsWDBwrivY/369bjgglkYMmQo+vUrx7777oe7777H8/oVV1yB8ePH93nffffdh4ICU5/n58+fj8MOOxz9+pWjunoQLrzwImzbts1rmU2bNuG882Zi+PARKCvrh9Gjx+DCCy8K2dMb6n0FBSZ0dXVh3rzXUFBgQkGBCVdccQUAoLa2Fn//+7XYd9/90K9fOQYNGozzz7+gTx65O7982bJl+Pvfr8XQocMwevQY3HfffbjtttsAABMmTPR8frA89G+//Rbnn38Bxo4dh9LSMowZMxY333yzV6B6xRVX4LnnnvO03/1fIO7t7u8/998KAJIk4cknn8T++x+AsrJ+GDZsOK655q9obTV7fd748eNx5pln4bPPluDww49Av37leOmllwAAf/yxBeeffwGqqwehvLwCRx99DD7++OOg+4iIiIhSh1bpBiTSggULcdJJJ0Gv1+P000/DCy+8gJ9+Wol9990nLp//66+/YurUE6DVajFr1ixUVVXhjz/+wEcfLcbtt98W8ec99NDDuPfeezF9+nScf/75aGlpxjPPPIupU0/A0qVfw2QywWazYfr0U2Gz2XDppZeiX78y1NfX46OPPkZbWxsKCgr8fnY473v22Wfwf//3F+y77z6YNWsWAGDw4MEAgJUrf8aKFctx2mmnon//AaitrcULL7yAE088EcuXL0dOTo7X+q699jqUlBTjxhtvQFdXN4499hhs3LgJb7zxBu67718oLi4GAJSUlATcHm+//TYsFgsuuugiFBUV4aeffsIzzzyL7dt34JVXXgYAXHjhhaivb8AXX3yBZ599JuQ2PumkkzBkyBCv51atWoUnn3wKJSWlnueuueavmDdvHs4991xcdtll2Lp1K5577jmsWbMGn3zyMXQ6nWfZDRs24OKLL8aFF16ICy64AMOHD0NjYyOOO+44WCwWXHbZZSgqKsRrr72Gs88+B6+88jJOOumkkG0lIiIidUvbQPrnn1dh/fr1ePDBBwEABx54IAYMGICFCxfELZC+4YYbIMsyvv76K1RWVnqev+uuOyP+rNraWtx333249dZbcd1113qeP+mkk3DooYfh+edfwHXXXYt169Zh69atePnll3HKKSd7lrvxxhuDfn447zvrrLPwt7/9HYMGDcJZZ53l9f4pU47zeh8ATJ16PI455li8++67OPvss71eKywsxLvvvguNRuN5buLEiXjjjTcwbdo0VFdXh9wmd911F7Kzsz2PL7xwFoYMGYK7774bdXV1qKysxOTJkzFs2DB88cUXfdrsz7hx4zBu3DjP45aWFtxzzz0YO3YMbrrJtS2+++47vPLKK3j++edwxhlneJY99NBDcdppp+Htt9/2en7z5s1YtGgRjjlmz4DWm2++GY2Njfjoo8U48MADAQAXXHABDjroYPzjH7dg2rRpEMW0viFERESU9tL2TL5w4QKUlZXhsMMOBQAIgoDp06dj0aI34XQ6Y/785uZmfPPNtzjvvHO9gmj3uiL13nvvQZIkTJ8+HS0tLZ7/+vXrh6FDh2Lp0qUAgPz8fADAkiVL0N3dHfbnR/s+t94Brd1ux65duzBkyBAUFBRg9erVfZa/4ILzvYLoaPReZ1dXF1paWrD//pMhyzLWrFkT02cDgNPpxEUXXYyOjk7MmTMXRqMRgKsnvKAgH0ceeaTXvth7772Qm5uLr79e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+7ZtsNvtGD9ufFTv37p1C7Zu3YqlS5f2elaGLEtobGzEwIED49NQIqI0wkCaiCgN6PX6gK8JggAAkGXZ85zD6fRapqenB8ccexxOmHpCn/eXlJTEqZVEROmFgTQRURoor6iAXq/HL7/+gqP79fN6LT+/AABgbm1Fbm4uAGDLlj+8lhk8eAi2b6tDeUVFchpMRJQGmCNNRJQG9Ho9Tj5lOua8+iq++upLNDQ0YP369fh8yWcoLy9HcXEJFiycj/r6HVj50094/713vd5/8imnoKamBi88/xy2/PEH6ut34IcfVuCF559T6C8iIlI/weGwy6EXIyIitZMkCW+/9SaWLPkMu3a1orDQhGOPm4Lp00/FunXr8Pxzz6C+vgHDhg3F1KnT8OijD3uVv9u4cSNef20e1q+vgSwD5eX9cOBBB+PUU09T+C8jIlInBtJERERERFFgagcRERERURQYSBMRERERRYGBNBERERFRFBhIExERERFFgYE0EREREVEUGEgTEREREUWBgTQRERERURQYSBMRERERRYGBNBERERFRFBhIExERERFFgYE0EREREVEUGEgTEREREUXh/wFdyESEpJK21gAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_fit(zero_predictions, \"All cues start at zero\")" + ] + }, + { + "cell_type": "markdown", + "id": "19dc7479", + "metadata": {}, + "source": [ + "This is Figure 1 of Spicer et al.: both models fit equally poorly, with an SSE of 0.24 and an $R^2$ of 0.71.\n", + "The Rescorla–Wagner model predicts blocking, since it rates X lower than Y, but the difference is small, and neither model captures the low rating of B or the high rating of Y.\n", + "\n", + "The problem is the starting strength.\n", + "After the B− trials of Stage 1, B still has an associative strength of zero, just like the new cue Y.\n", + "In Stage 2, B and Y are then trained together on BY+ trials, so both models predict the same rating for them, although participants rated B 1.5 and Y 8.4.\n", + "The best the models can do is to learn very little, and use a steep response function to place B, X and Y near the middle of the scale.\n", + "The fitted Rescorla–Wagner model takes this to the extreme: its learning rate is close to zero, and $\\theta$ is at its upper bound of 100, so that the response function is almost a step.\n", + "Its parameters differ from the reported ones for this reason; the fit is equally good.\n", + "\n", + "## Starting from uncertainty\n", + "\n", + "A rat that has never encountered a cue has not learned anything about it, so its associative strength should start at zero.\n", + "A participant who sees a new food, however, does not know whether it causes stomach ache or not.\n", + "Spicer et al. proposed that the associative strength of a novel cue should start at an intermediate value, which reflects this uncertainty, and they made the starting strength a free parameter.\n", + "If it represents uncertainty, the best-fitting value should be near the middle of the range of associative strengths.\n", + "\n", + "We make the starting strength a free parameter, with a uniform prior between −1 and 1, and add it to the grid of starting points." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "eac403fd", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-01T08:52:39.481325Z", + "iopub.status.busy": "2026-10-01T08:52:39.481325Z", + "iopub.status.idle": "2026-10-01T08:54:02.425098Z", + "shell.execute_reply": "2026-10-01T08:54:02.425098Z" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
initial_strengthalphabetathetaSSER²
cpmBush and Mosteller0.4170.0060.42987.6790.0600.928
Rescorla and Wagner0.4280.0430.41019.3170.0010.999
Spicer et al. (2021)Bush and Mosteller0.4500.0200.49030.5200.0600.930
Rescorla and Wagner0.4300.0400.41019.3100.0001.000
\n", + "
" + ], + "text/plain": [ + " initial_strength alpha beta \\\n", + "cpm Bush and Mosteller 0.417 0.006 0.429 \n", + " Rescorla and Wagner 0.428 0.043 0.410 \n", + "Spicer et al. (2021) Bush and Mosteller 0.450 0.020 0.490 \n", + " Rescorla and Wagner 0.430 0.040 0.410 \n", + "\n", + " theta SSE R² \n", + "cpm Bush and Mosteller 87.679 0.060 0.928 \n", + " Rescorla and Wagner 19.317 0.001 0.999 \n", + "Spicer et al. (2021) Bush and Mosteller 30.520 0.060 0.930 \n", + " Rescorla and Wagner 19.310 0.000 1.000 " + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "initial_strength = Value(value=0.5, lower=-1, upper=1, prior=\"uniform\")\n", + "grid = [(0.05, 0.25), (0.25, 0.75), (1, 3), (0.25, 0.75)] # alpha, beta, theta, initial_strength\n", + "free_summary, free_predictions = fit_models(initial_strength, np.array(list(product(*grid))))\n", + "\n", + "pd.concat({\"cpm\": free_summary, \"Spicer et al. (2021)\": reported.loc[\"free\"]}).round(3)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "e51295f5", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-01T08:54:02.428172Z", + "iopub.status.busy": "2026-10-01T08:54:02.428172Z", + "iopub.status.idle": "2026-10-01T08:54:02.521726Z", + "shell.execute_reply": "2026-10-01T08:54:02.521726Z" + }, + "tags": [ + "thumbnail" + ] + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtIAAAGuCAYAAAC9YuGNAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAACfjklEQVR4nOzdd5hTVfoH8O+9N20mUzK9wMzQhyKIqICKAqICoquigIIIWFYsu+5vbVhQEV27rq5iV5QiYMG2YsMGFlBZQFCGJjMDTJ/JMJOe3PP7IyRMMum56e/neXg0mZvk5La899z3vIezWi0MhBBCCCGEkKDwsW4AIYQQQgghiYgCaUIIIYQQQkJAgTQhhBBCCCEhoECaEEIIIYSQEFAgTQghhBBCSAgokCaEEEIIISQEFEgTQgghhBASAgqkCSGEEEIICQEF0oQQQgghhISAAukYGTp0KK677rpYNyPpXXfddSgt7RHy66dMmYIpU6ZI2KLQPf30Mxg27Hjk5ORizJgxsW4OIYQQkvKSNpDeuXMnZs++AscddxwKC4swcOAgXHDBhXjxxRddlnv88Sfw8ccfR6QNmzZtwkMPPQStVhuR94+UXbt24aGHHkJ1dXWsmxIQvV6Phx56CBs2bIh1UyJm/fqvcM8992D06FFYsuQ53HPPPbFuEgHw+eef46GHHop1MwghhMRIUgbSmzZtwrhx47Fjxw7MmTMHjz32GK64YjZ4nsfzz7/gsuyTTz6J//73vxFqx2Y8/PAjaG9v7/a3X375Bc8880xEPjdcu3ZV4eGHH0FNTU2smxIQg8GAhx9+BBs3bpT8vdeuXYu1a9dK/r7B+u6778DzPJ599llcdtllOOecc2LdJALg88+/wMMPPxLrZhBCCIkRWawbEAmPP/4EsrKy8PXXX0Gj0bj8rampKeKfr9PpoFarfS6jVCoj3o5oYIzBaDQiLS0t1k2JCIVCEesmAACam5uQlpbmtz2iKMJsNkOlUkWpZZFntVohimLcbItIS/ZjihBCkklS9kj/+eefGDRoYLcgGgAKCgqc/5+drYFOp8PKlW8hO1uD7GyNM2+5pqYG//znzTjxxJNQVFSMXr1644or5nRLd1ixYgWyszXYuHEj/vnPm9G3bz8MGjQYDz30EBYuXAgAGDbseOf7O17vniPteJ+ffvoJd955J/r06YuSklLMmjULzc3NLp8piiIeeughVFYORHFxCc477zzs2rUr4Lzrd955F2ecMRY9evREz55lOOWUU/H888872zFnzhwAwHnnne9styNtYujQoZg+fQa+/HI9xo4dh6KiYrz++usAAK1WiwULFmDw4CEoKCjE8OEn4Kmn/g1RFJ2fXV1djexsDZ555j94/fWlOP744SgoKMS4cePx669burV17dr3MXLkKBQWFmH06FPw0Ucf4brrrsPQoUOd79enT18AwMMPP+Jsr/vt9sOHD2PmzJkoLe2BPn364q677obNZvO7rjzlSL/44osYNWo0iotLUF5egbFjx+Htt9/2+T5msxkPPvggzjhjLMrKylFSUopJkybju+++89uG7GwNli9fAZ1O5/x+K1ascP7tlltuxZo1azBq1GgUFBTiyy+/dH7nG264Af369UdBQSFGjRqNZcuWdXt/k8mEf/3rXxg+/AQUFBRi8OAhWLjwHphMpoDWz+jRp+B//9uKs88+B0VFxRg6dBheffW1kL5/1/1jyZIlzv1j165dIb3Hyy+/jGHDjkdxcQkuvPAiHDx4EIwxPProoxg0aDCKiopx2WWXobW1rdt3++KLLzBp0mSUlJSiR4+emDZtOv744w/n36+77jq8/PLLzu3g+OcgiiKWLFmCUaNGo7CwCP369cdNN/0DbW1al8/xdUwRQgiJb0nZI11WVoaff/4Zv//+OwYPHux1uZdeehF/+9vfceKJIzB37lwAQO/evQEAW7b8D5s3b8LFF09FaWkP1NTU4NVXX8V5552HTZs2IT093eW9br75FuTn5+H222+DTqfH2Wefhb179+Gdd97BQw/9C3l5eQCA/Px8n22/9dbboNFosGDB7aiursHzzz8PufxWLF167If1vvsW4emnn8bkyZMwYcIE/PbbDkydejGMRqPfdfPVV1/jqquuwtixY3HfffcBAHbvrsJPP23Cddddh1NPPQ3z51+LF154ETfffDMqKwcAACorK53vsWfPHlx11VWYN28e5syZg/79+0Gv12PKlCk4fLgO8+bNQ8+ePbF58yYsWrQIDQ31ePjhh13a8fbbb6OzsxPz5s0Dx3F4+umnMXv2bGzbthVyuRwA8Nlnn2HevHkYMmQw7r33Hmi1Wtx4499QWlrqfJ/8/Hw8+eST+Oc//4nzzjsPf/nL+QCAIUOGOJex2WyYOvVinHjiiVi8eDG++eYbPPvss+jduzeuvvoqv+usq6VL38Btt92OCy64APPnz4fJZMSOHTvxyy+/YNq0aV5f19HRgTffXIZLLrkYc+bMQWdnJ5YtW4apUy/GV1+tx7Bhw7y+9qWXXsTSpUvx669b8J//2NOBRo4c5fz7d999h7Vr1+Kvf70Gubl5KC8vR2NjI84662xwHIe//vUa5OXl48svv8CNN/4NHR0duP766wHYg71LL70MP/30E+bOnYMBAyrx++87sWTJEuzbtxcrV670u060Wi2mTZuGiy66EJdccjHWrn0f//znP6FQyDF79uyQvv+KFStgNBoxd+5cKJUK5OTkBP0ea9asgcViwbXX/hVtbW14+ulnMHfuPJxxxhnYuHEj/vGPm7B//368+OJLWLjwbjz33HPO165atQrz51+HCRMmYNGi+6DXG/Dqq69i4sRJ2LDhO1RUVGDevHmoq6vH119/jZdech17AQA33fQPrFy5ErNmzcK1116L6upqvPzyy9i+fTs+//wz534OeD6mCCGEJACr1cKS7d/nn3/OsrKyWFZWFhs/fjy788472WeffcYMBn23ZQsLC9k111zd7fmOjiPdnvvxxx+YWq1my5cvcz73xhtLmVqtZmeddRYzmYwuyz/55JNMrVazffv2dnuvQYMGunyu432mTJnCLBaz8/nbbruVZWVlsZaWZma1Wtjhw4dYdnY2mzFjusv7PfDAYqZWqz1+l67/brnlZlZSUtKtrV3/vfPOO0ytVrOvv/7KY7vVajX79NNPXZ5/6KF/scLCQlZVtcvl+bvvvptlZWWxAwf+ZFarhe3bt5ep1WpWVlbGmpqanMt9+OEHTK1Ws48//sj53MiRJ7MBAwYwrbbN+dw333zN1Go1GzRooPO5hoZ6plar2eLF93dr7zXXXM3UajX7178edHn+lFNOYaeddprffWnixHPYxInnOB9Pnz6NnXTSSUHvkyaTken1OpfnmpubWO/evdm1117r9/XXXHM1Kyws7Pa8Wq1mmZmZbMeO31yenz9/Puvbty9rbGxwef6KK65gpaUlzv17xYrlLDMzk23Y8J3Lci+99BJTq9Xs++83+l0/arWa/fvfTzmf0+t1bPTo0axXr17OYy7Q7+/YP0pKSlh9fV1I69DxHhUVFc7jxmq1sIULFzK1Ws1Gjx7FjEaD8/k5c+aw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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_fit(free_predictions, \"Starting strength is a free parameter\")" + ] + }, + { + "cell_type": "markdown", + "id": "12a108d0", + "metadata": {}, + "source": [ + "This is Figure 2 of Spicer et al.\n", + "With a free starting strength, the Rescorla–Wagner model fits the mean ratings almost perfectly ($R^2 = 1.00$), and its best-fitting parameters are the reported ones.\n", + "The best-fitting starting strength is 0.43, an intermediate value, as the uncertainty account predicts.\n", + "\n", + "Both models now separate B from Y: B loses associative strength on the B− trials of Stage 1, while Y enters Stage 2 at the starting strength.\n", + "Only the Rescorla–Wagner model also separates X from Y.\n", + "At the end of Stage 1, A predicts stomach ache, so the summed prediction of A and X on AX+ trials is close to the outcome, and X barely learns.\n", + "X ends the experiment close to where it started, near $\\beta$, so it is rated close to 5: the model is as uncertain about X as it was about any new food.\n", + "The Bush–Mosteller model has no summed error, so X and Y learn in the same way, and it predicts the same rating for both.\n", + "\n", + "The Bush–Mosteller parameters differ from the reported ones, because the model predicts almost the same ratings for a range of parameter values.\n", + "Our fit has an SSE of 0.060, and the reported parameters give 0.061.\n", + "\n", + "## Summary and next steps\n", + "\n", + "You fitted two learning models to the mean ratings of a blocking experiment, with a logistic response function and a starting strength that can be a free parameter, and recreated Figures 1 and 2 of Spicer et al. (2021).\n", + "When all the test cues are fitted, the Rescorla–Wagner model only explains the experiment better than the Bush–Mosteller model if novel cues start at an intermediate associative strength.\n", + "\n", + "To take this further:\n", + "\n", + "- Spicer et al. go on to fit the redundancy effect, and a manipulation of the outcome base rate (Jones et al., 2019), with the same models; their data and code are linked from the [supplementary materials](https://osf.io/7u6re/).\n", + "- To fit a model to each participant, rather than to the mean of a group, see [Tutorial 1: Build and fit your first model](../tutorials/first-model.ipynb).\n", + "\n", + "This example is based on a first version by Zhaotong Jia.\n", + "\n", + "## References\n", + "\n", + "Bush, R. R., & Mosteller, F. (1951). A mathematical model for simple learning. *Psychological Review*, 58(5), 313–323. https://doi.org/10.1037/h0054388\n", + "\n", + "Gluck, M. A., & Bower, G. H. (1988). From conditioning to category learning: An adaptive network model. *Journal of Experimental Psychology: General*, 117(3), 227–247. https://doi.org/10.1037/0096-3445.117.3.227\n", + "\n", + "Jones, P. M., Zaksaite, T., & Mitchell, C. J. (2019). Uncertainty and blocking in human causal learning. *Journal of Experimental Psychology: Animal Learning and Cognition*, 45(1), 111–124. https://doi.org/10.1037/xan0000185\n", + "\n", + "Rescorla, R. A., & Wagner, A. R. (1972). A theory of Pavlovian conditioning: Variations in the effectiveness of reinforcement and nonreinforcement. In A. H. Black & W. F. Prokasy (Eds.), *Classical conditioning II: Current research and theory* (pp. 64–99). Appleton-Century-Crofts.\n", + "\n", + "Spicer, S. G., Wills, A. J., Jones, P. M., Mitchell, C. J., & Dome, L. (2021). Representing uncertainty in the Rescorla-Wagner model: Blocking, the redundancy effect, and outcome base rate. *Open Journal of Experimental Psychology and Neuroscience*, 1, 14–21. https://doi.org/10.46221/ojepn.2021.6623" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.12.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/examples/index.md b/docs/examples/index.md index 9eca123..505df62 100644 --- a/docs/examples/index.md +++ b/docs/examples/index.md @@ -19,6 +19,18 @@ Why does a cue learned in compound with a pretrained cue gain so little strength {bdg-success}`Beginner` {bdg-light}`15 min` ::: +:::{grid-item-card} Fitting causal ratings in a blocking experiment +:link: blocking-ratings +:link-type: doc +:img-top: ../_static/thumbnails/blocking-ratings.png + +{bdg-primary-line}`Associative learning` +^^^ +Fit both learning rules to the ratings of a human blocking experiment, and recreate the finding of Spicer et al. (2021) that novel cues need an intermediate starting strength. ++++ +{bdg-warning}`Intermediate` {bdg-light}`25 min` +::: + :::{grid-item-card} Model-based and model-free control in the two-step task :link: two-step-task :link-type: doc @@ -49,6 +61,7 @@ Estimate how well confidence ratings track the accuracy of perceptual decisions. :caption: Associative learning blocking +blocking-ratings ``` ```{toctree} diff --git a/test/datasets/test_datasets.py b/test/datasets/test_datasets.py index 13a943d..0dadce6 100644 --- a/test/datasets/test_datasets.py +++ b/test/datasets/test_datasets.py @@ -2,7 +2,7 @@ import pytest import pandas as pd from unittest.mock import patch, mock_open -from cpm.datasets import load_csv, load_bandit_data, load_risky_choices, load_two_step_data +from cpm.datasets import load_csv, load_bandit_data, load_risky_choices, load_two_step_data, load_blocking_data @pytest.fixture @@ -94,3 +94,27 @@ def test_load_two_step_data_columns(): expected = {"ppt", "trial", "s1", "s2", "choice", "stimuli_left", "points", "timeout_1", "timeout_2"} assert expected.issubset(data.columns) assert data.ppt.nunique() > 1 + + +@patch("cpm.datasets.base.load_csv") +def test_load_blocking_data(mock_load_csv): + # Mock load_csv to return a DataFrame + mock_load_csv.return_value = pd.DataFrame({"col1": [1, 3], "col2": [2, 4]}) + + # Call the function + result = load_blocking_data() + + # Assertions + mock_load_csv.assert_called_once_with("blocking_ratings.csv") + assert isinstance(result, pd.DataFrame) + assert result.equals(pd.DataFrame({"col1": [1, 3], "col2": [2, 4]})) + + +def test_load_blocking_data_means(): + # The packaged file must reproduce the mean ratings reported by Spicer et al. (2021) + data = load_blocking_data() + assert {"ppt", "block", "trial", "cue", "rating", "rt"}.issubset(data.columns) + assert data.ppt.nunique() == 41 + means = data.groupby(["ppt", "cue"]).rating.mean().unstack().mean() + reported = {"A": 9.84, "B": 1.47, "C": 0.35, "D": 0.81, "X": 4.97, "Y": 8.42} + assert means.round(2).to_dict() == reported