Training-free acquisition audit — sickle cell blood film corpusData and code supporting:> Jenifer, A.P., Rishi, P. (2026). A training-free audit of acquisition> confounding in medical image corpora, with a case study on public sickle cell> blood films.Licence: CC BY 4.0---ContentsCorpus structureFile Description`source_groups_v3.csv` 4,109 distributed images mapped to 1,666 independent source photographs. Columns: class, filename, group_id, source, md5. The unit of allocation for all cross-validation.`srcA_name_map.json` Maps merged-corpus filenames to their originating Source A filenames, allowing the unlabelled distribution to be substituted (see note below).`capture_times.csv` Capture date and hour parsed from Source B filenames. No image is decoded to produce this.Extracted featuresFile Description`clean_features_all_levels.csv` Metadata, geometry and colour features for all 4,109 images at four standardisation levels (L0 raw, L1 resize, L2 + re-encode, L3 + strip metadata). Primary feature set.`features_clean.csv` Level-0 features using the unlabelled Source A distribution. Used for all results reported in the paper.`features_labelled.csv` Level-0 features using the labelled Source A distribution, for the comparison in Section 3.10 only.ResultsFile Manuscript`clean_probe_main.csv` Table 4 — metadata probe and controls`clean_ablation.csv` Table 5 — channel ablation, 21 combinations × 2 targets`clean_standardisation.csv` Table 6 — standardisation stress test`clean_architectures.csv` Table 7 — architecture comparison`clean_within_source.csv` Table 8 — within-archive analysis`clean_thresholds.txt` Decision rules and file-size band composition (Fig. 4C)`clean_perclass_report.txt` Per-class precision, recall and F1 for the metadata probe`clean_summary.json` Headline values and baselines`resnet_clean.csv` Reference classifier: per-fold, shuffled-label control, held-out`manescu_features.csv` Features for the single-session control corpus`negative_control.json` Negative control summary (Table 9)CodeFile Description`audit_code.py` Complete analysis, ten functions in run order, each annotated with its manuscript section. This is the reproducible artefact.`working_notebook.ipynb` The working notebook as executed, including exploratory cells and superseded attempts. Provided as a record of how the analysis developed.---Important: which Source A distributionThe originating deposit of Source A distributes the same 422 positive photographsin two folders, one with expert bounding boxes drawn around the sickle cells andone without. The two are encoded at different JPEG quality, with mean file sizesof 182 kB and 425 kB respectively.All results in the paper use the UNLABELLED folder. Reproducing the analysisfrom the labelled folder gives a file-size probe accuracy of 82.5% rather than76.3%, and a reference-classifier accuracy of 100.00% rather than 99.18%. Thisdiscrepancy is itself reported and discussed in Section 3.10.`features_labelled.csv` is provided so that comparison can be verified directly.---Source corpora (not redistributed here)These are available from their original repositories and are not duplicated inthis deposit.Source A — Tushabe, F., Mwesige, S., Vicent, K., Othieno, E., Nsiimire, E.,Mutabazi, P., Musani, S., Areu, D., 2024. A dataset of microscopic images ofsickle and normal red blood cells. Acta Scientific Microbiology 7 (12), 22–29.
doi.org on Kaggle. 422 positive and 147 negative fields, captured on mobilephone cameras through a microscope eyepiece in Soroti and Kumi districts, Uganda.Source B — hahaha (username), 2024. ResNet-50 dataset, version 2(14 September 2024). Roboflow Universe, CC BY 4.0.
universe.roboflow.com images in two folder-annotated classes. The export manifest distributedwith the images declares threefold augmentation and a stretch-resize to224 × 224.Control corpus — Manescu, P., Bendkowski, C., Claveau, R., Elmi, M.,Brown, B.J., Pawar, V., Shaw, M.J., Fernandez-Reyes, D., 2020.UCL Research Data Repository.
doi.org thin blood films with electrophoresis-confirmed phenotype.Acquisition dates 080119 and 101017 contain both phenotypes and were used here.---Reproducing the analysis`audit_code.py` contains ten functions corresponding to the numbered sections ofthe manuscript. Run in the order given in the module docstring.The path constants at the top of the file point to the directory layout usedduring the original analysis. Adapt these to your own layout before running.Requirements: Python 3.12, scikit-learn 1.2, PyTorch 2.10, pandas 2.2,NumPy 1.26, Pillow 11.0, imagehash 4.3, SciPy 1.14. Sections 6 and 7 require aCUDA GPU; all probe experiments run on CPU in under twenty minutes.Random seeds are fixed at 42 for partitioning and 0 for probe models.---Headline resultsProbe Accuracy Baseline IndexFile size → class (two-node stump) 76.3% 41.5% 0.60File size → source archive 100.0% 60.5% 1.00Capture hour → class 96.8% 56.2% 0.93Colour → class 92.8% 41.5% 0.88Colour → class, after full standardisation 92.2% 41.5% 0.87Reference classifier (held-out) 99.18% 41.5% —Negative control, metadata 61.1% 66.7% −0.17Negative control, colour 50.0% 66.7% −0.50The confounding index is (accuracy − baseline) / (100 − baseline).---ContactCorresponding author: Priti Rishi, pritir@srmist.edu.inSRM Institute of Science and Technology, Vadapalani Campus, Chennai, India