Skip to contents

Unlike R's .repro_docker_image_for() (which can match the paper's own DECLARED R version via rocker/r-ver:<version>), there is no equivalent Python version-pin detection built yet (code_check's .code_version_pin_check() is R-specific — an renv.lock/sessionInfo() concept, with no Python counterpart reading a runtime.txt/python_requires pin), so this always returns the one pre-built image.

Usage

.repro_docker_default_image_py

Value

the pre-built Python sandbox image reference, "ghcr.io/scienceverse/metacheck_py_small:latest" (see https://github.com/scienceverse/metacheck_docker_reproducibility for the Dockerfile/package list/build instructions — the same repo that builds the R images)

Details

Defaults to the SMALL image (45 packages seen in >=2 files of a 486-file corpus scan: numpy/pandas/scipy/matplotlib/seaborn/scikit-learn/ statsmodels and the rest of the common data-science/psychology-research stack) rather than the large one — same "smaller, more conservative default" choice the R side's README documents for metacheck_r_small/metacheck_r_large. The large image (metacheck_py_large, ~8.3GB) additionally bundles CPU-only torch and tensorflow (deliberately excluded from the small image despite being common in the scan — measured at ~700MB and ~450MB respectively, on top of several hundred MB more of their own transitive dependencies) plus ~70 more less-common packages. reproducibility_check() always uses the small image, and a paper needing an uncommon package installs it at run time (slower, needs network, same tradeoff the R side's install phase already makes for an uncommon CRAN package). The large image can only be used by calling repro_install_deps_py_docker() and repro_run_scripts_py_docker() directly, with image = "ghcr.io/scienceverse/metacheck_py_large:latest".

psychopy was deliberately EXCLUDED from both images despite appearing in 18 of 486 scanned files (tied with statsmodels for the most common package after the core data-science set): it is a live-experiment stimulus-presentation library (GUI display, audio/video playback, serial/ parallel port hardware I/O), and reproducibility_check only ever runs ANALYSIS code against already-collected data — a paper's psychopy-based experiment SCRIPT is not something this module runs, let alone "reproduces" (it requires a live display/participant). Its own install pulls in PyQt6 (261MB), ffmpeg/moviepy/pyglet (another ~250MB+), and more — confirmed as a real, measured ~700MB+ cost for a package this module's own execution path has no legitimate use for.

The option metacheck.docker_image_py names another image, such as "ghcr.io/scienceverse/metacheck_py_large:latest", which adds about 70 packages and torch and tensorflow for ordinary processors; the metacheck server uses that one.