Following watershed segmentation, we obtained seven clusters for sucrose trials and five clusters for shock trials
Results, NT inputs from the PVT to the BLA mediates passive-active behavioral strategies, paragraph 3; Figure 5d-e and 5g-h; Methods, Unsupervised trial-based classification of behaviors
The pose has no timestamps, but a linear map of the trial clock onto the pose clock (offset and rate factor) fitted to the port entries holds in 21 of 29 sessions (best extra lag within 1 s in each third; 20 of the 21 factors between 0.9874 and 0.9885; median head-to-port distance at port entries 38 pixels against 105 over all frames). On the 1319 sucrose and 688 shock trials of those sessions (300 frames after each CS, 6264 tsfresh features, 5931 and 5927 kept), no reading gives both counts; each of the four meets one and not the other. With features z-scored and the installed scikit-learn defaults, the reading adopted, the kernel density has 7 peaks for sucrose and 3 for shock for all 5 seeds; with the 2020 defaults 7, 7, 8, 7, 8 and 4, 3, 4, 3, 3. With raw features it has 6 for sucrose and 5 for shock for all 5 seeds (installed defaults), and 7, 5, 7, 5, 6 and 5, 5, 5, 6, 7 (2020 defaults). So the sucrose count holds and the shock count does not under the z-scored features, and the reverse under the raw ones, and the outcome is partially_reproduced under every reading. The raw-feature counts are not stable. In the raw features the 3 largest features carry 95% (sucrose) and 98% (shock) of the variance and the 10 largest all of it; with the installed defaults an exact PCA in place of the randomized one gives 8 and 5, and multiplying each feature by 1 + 1e-9 noise gives 7 and 7. With z-scored features the same changes give 7 and 4, so the sucrose count stays at 7 and the shock count stays below 5. The run reviewed in round 2, with the same code on another runner, printed 7 and 5 (raw, installed defaults) and 9 and 4 (z-scored, installed defaults), which shows the same sensitivity. Without H08, H10 and H24, whose clock is checked least well (head-to-port distance under the map 29.0, 27.7 and 38.4 px against 35.1, 34.8 and 46.8 px over all frames), the adopted reading gives 5 and 4. The statement's "separate passive and active strategies" is not tested.
How the test differed from the paper’s method
- The pose is put on the trial clock by a linear map fitted to the port entries (nb.fit_pose_clock), since the files give only a start time and a nominal 15 frames per second; this is an assumption. H11, H14, H17, H23, H25, H29, H39 and H40, where the map does not hold, and H28 and H32, whose recorded session has no pose, are left out.
- tsfresh 0.16.0 does not install with Python 3.13; tsfresh 0.21.2 with its comprehensive default feature set is used (6264 features per trial, the paper's "~6000").
- Features that are not finite or are constant are dropped. Whether the features were scaled before PCA is not said (Methods, Unsupervised trial-based classification of behaviors); both are run and give the same outcome. z-scoring is the reading adopted for the measured counts, since on the raw features 10 features carry all the variance of the 30 PCs and the counts change with the PCA solver and with changes of 1e-9 in the features.
- The criterion's "defaults of scikit-learn" are read as those of the installed release (1.9, PCA initialisation, automatic learning rate), as the criterion says; the defaults of the releases contemporary with tsfresh 0.16.0 (2020; random initialisation, learning rate 200) are run as a reading and give the same outcome. Under either set the tsfresh release is 0.21.2, not 0.16.0. The kernel density is seaborn's default (scipy gaussian_kde, Scott's bandwidth, a 200 by 200 grid reaching 3 bandwidths beyond the data); each local maximum is a watershed marker, so the count of maxima is the count of regions. Counting only maxima above 5% of the highest gives the same counts.