rcicr 1.3.0 (2026-08-18)

Behaviour changes

Reproducibility impact

Bug fixes

Documentation

Internal

rcicr 1.2.3 (2026-08-07)

Documentation only. Nothing this package computes has changed — no function, argument, return value or number differs from 1.2.2, and no analysis script needs revisiting.

The release exists because the package-level help page, ?rcicr, had gone stale enough to contradict the release before it. It was a hand-maintained .Rd file that roxygen never touched, so the sweeps behind 1.2.2 — which all worked from R/ — went straight past it. Every code snippet on it was wrong:

The page is now generated by roxygen from R/rcicr-package.R, so its title, description, author and URLs come from DESCRIPTION and cannot drift from it again. The version and date table is gone rather than corrected — the way to keep a fact current is to stop writing it down twice. What remains is a short pointer to vignette("reverse-correlation-walkthrough") and to the three functions a new user starts with; the walkthrough itself lives in the vignette and README.md, which are tested on every build.

The page also now lists all three key references — Dotsch & Todorov (2012), Brinkman, Todorov & Dotsch (2017), and Dotsch, Wigboldus, Langner & Van Knippenberg (2008) — each with a DOI. The 2008 paper had been on the old page and was the only one not carried anywhere else.

?rcicr and package?rcicr both still work.

rcicr 1.2.2 (2026-08-07)

This release exists to answer the changes CRAN asked for when reviewing the previous submission. Nothing it changes affects a number this package computes: classification images, scaling, z-maps and informational value are identical to 1.2.1, and the release gate confirms that against both 1.2.1 and 1.0.1.

Breaking changes

Bug fixes

Documentation

Internal

rcicr 1.2.1 (2026-07-28)

No user-facing changes. Nothing this package computes differs from 1.2.0 — no function, argument, return value or number has changed, and no analysis script needs revisiting.

The release exists because the 1.2.0 source tree does not pass R CMD check on macOS. The fault was in the package’s own test suite, not in the package: a test asserted properties of a rendered PNG that belong to the graphics device rather than to what was drawn, and those properties differ between macOS and Linux. No released function was ever affected. A package still has to pass its own checks on the platforms CRAN builds for, which is what this release restores.

Documentation

Internal

rcicr 1.2.0 (2026-07-28)

Upgrading from the CRAN version? The last release on CRAN was 0.3.4.1, before the package was archived in 2021. 1.0.1 and 1.1.0 were GitHub-only releases made in the meantime, so the 1.1.0 section below applies to you too — it is where the bulk of the bug fixes are.

Reproducibility impact

Behaviour change

New features

Bug fixes

Documentation

rcicr 1.1.0 (2026-07-27)

First release since 1.0.1, and the version submitted to CRAN to reinstate the package after its 2021 archival. The minor bump rather than 1.0.2 is deliberate: some of the changes below alter behaviour rather than only repairing it. The public API is unchanged — no function, argument or argument meaning was removed or redefined — so a 2.0.0 is not warranted. Anyone re-running an old analysis script should read the “Reproducibility impact” section below.

Bug fixes

Performance and dependencies

Reproducibility impact — read this if you have published or in-progress results

This release fixes several long-standing bugs. Most of them turn a crash into working behaviour, and therefore cannot change any result you already have — if the old code errored, there was no number to change.

Only two fixes can change a value you may already have reported. Both are listed first, with the exact conditions under which they apply.

A golden-master test (tests/testthat/test-regression-baseline.R) pins the numeric output of the default pipeline — noise basis, classification image, scaling, and infoVal — to the values produced before these fixes. It passes, which is the evidence for the claim that default-configuration results are unchanged.

Results CAN differ

1. infoVal, if you used a non-default nscales (issue #81)

generateStimuli2IFC() did not save nscales or sigma into the .Rdata file. generateReferenceDistribution2IFC() re-generates the stimulus set from that file to build the infoVal null distribution, so with nscales missing it silently fell back to the default nscales = 5 — building the reference distribution on a different noise basis than the stimuli participants actually saw.

2. infoVal, if you passed force_gen_ref_dist = TRUE (issue #113)

The flag was silently ignored whenever a reference_norms vector already existed in the .Rdata file, so the reference distribution was reused rather than recomputed.

Results cannot differ

These fixes only affect code paths that previously errored out, so no previously obtained result changes:

Changed, but below any scale that can matter: the patch average

generateNoiseImage() now averages patch layers with rowMeans(..., dims = 2) rather than apply(..., 1:2, mean). These compute the same quantity but sum in a different order, so they are not bit-identical: they differ by about one unit in the last place, ~1e-19 in absolute terms on pixel values of order 0.01.

This is a different class of thing from the rbernoulli case below. That one would have changed the random stream — a large, systematic divergence. This is floating-point summation order, and it was checked against an independent oracle (the average written as an explicit triple loop, using neither apply() nor rowMeans()) across noise types, spatial scales and seeds: both the old and new forms sit ~5.6e-17 from that oracle. Neither is “more correct” than the other.

Deliberately unchanged: the random number stream

purrr::rbernoulli(n, p) (deprecated) is internally runif(n) > (1 - p). The obvious modern replacement, rbinom(n, 1, p), draws from the stream differently — verified across 150 seed/probability combinations that the two diverge. Swapping it in would have silently changed every reference distribution, and therefore every infoVal, computed from a given seed. The runif form is used instead, verified bit-identical to the old behaviour.

Unchanged and verified


Older changes are recorded in ChangeLog.