AVPENet: Pain estimation from audio-visual fusion of non-speech sounds.
The 24 matches
- [1] § Methodology › Data preprocessing › Audio processing pipeline. ↔ avpenet/data/audio_preprocessing.py, lines 226 to 268 · score 0.91 · additive white noise, pitch shifting, 20–30 dB, 0.9–1.1, semitones, stretching · Report a mismatch
- [2] § Methodology › Visual Processing Pipeline ↔ avpenet/data/visual_preprocessing.py, lines 292 to 345 · score 0.87 · photometric transformations, geometric transformations, random rotation, 0.95–1.05, brightness, translation · Report a mismatch
- [3] § Proposed AVPENet architecture › Audio encoder architecture ↔ avpenet/models/audio_encoder.py, lines 46 to 142 · score 0.83 · residual blocks, spectrogram processing, ResNet, audio encoder, mel spectrogram, modified · Report a mismatch
- [4] § Proposed AVPENet architecture › Visual encoder architecture ↔ avpenet/models/visual_encoder.py, lines 1 to 15 · score 0.76 · spatial attention augmentation, RGB face image, ResNet, visual encoder, architecture · Report a mismatch
- [5] § Results › 0.1 Overall performance ↔ notebooks/quickstart_demo.ipynb, lines 101 to 141 · score 0.72 · ground truth pain, perfect prediction, fitted, Scatter, 0–3, 7–10 · Report a mismatch
- [6] § Proposed AVPENet architecture › Training protocol ↔ scripts/train.py, lines 1 to 25 · score 0.71 · 1–30, 31–100, unfreeze, epochs, protocol, Training · Report a mismatch
- [7] § Proposed AVPENet architecture › Pain regression head ↔ avpenet/models/regression_head.py, lines 1 to 13 · score 0.69 · regression head, fused representation, continuous pain score, transforms · Report a mismatch
- [8] § Proposed AVPENet architecture ↔ avpenet/models/avpenet.py, lines 25 to 39 · score 0.69 · bidirectional cross modal, Audio Visual Pain, continuous pain scores, parallel, AVPENet, Network · Report a mismatch
- [9] § Proposed AVPENet architecture › Cross-modal fusion module ↔ avpenet/models/fusion.py, lines 89 to 194 · score 0.67 · cross modal fusion, bidirectional cross attention, visual embeddings, module, audio · Report a mismatch
- [10] § Proposed AVPENet architecture › Evaluation metrics ↔ avpenet/metrics.py, lines 1 to 27 · score 0.67 · Pearson correlation coefficient, intraclass correlation coefficient, RMSE, PCC, ICC, metrics · Report a mismatch
- [11] § Proposed AVPENet architecture › Baseline methods and comparisons ↔ avpenet/models/avpenet.py, lines 1 to 22 · score 0.66 · ResNet, regression head, audio encoder, visual encoder, architecture, fusion · Report a mismatch
- [12] § Proposed AVPENet architecture › Evaluation metrics ↔ avpenet/metrics.py, lines 41 to 52 · score 0.64 · continuous pain scores, low pain, high pain, discretized, class, moderate · Report a mismatch
- [13] § Proposed AVPENet architecture › Loss function design ↔ avpenet/losses.py, lines 94 to 150 · score 0.62 · composite loss, predicted pain scores, ground truth · Report a mismatch
- [14] § Methodology › Data preprocessing › Audio processing pipeline. ↔ avpenet/data/audio_preprocessing.py, lines 83 to 111 · score 0.61 · power spectrum, spectral flatness, Audio · Report a mismatch
- [15] § Proposed AVPENet architecture › Experimental conditions and ablation studies ↔ avpenet/losses.py, lines 94 to 150 · score 0.61 · smoothness terms, composite loss, ordinal, components, module · Report a mismatch
- [16] § Results › 0.2 Age group stratification ↔ avpenet/metrics.py, lines 116 to 139 · score 0.60 · class pain categorization, confusion matrices, classification, accuracy · Report a mismatch
- [17] § Proposed AVPENet architecture › Cross-modal fusion module ↔ avpenet/models/fusion.py, lines 1 to 19 · score 0.59 · learnable positional encodings, fusion, module, modal, Cross · Report a mismatch
- [18] § Methodology › Data preprocessing › Audio processing pipeline. ↔ avpenet/data/audio_preprocessing.py, lines 40 to 78 · score 0.58 · spectral floor, noise suppression, Audio · Report a mismatch
- [19] § Proposed AVPENet architecture › Experimental conditions and ablation studies ↔ avpenet/models/audio_encoder.py, lines 46 to 142 · score 0.56 · ImageNet, audio encoder, modified, pretraining, architectural, module · Report a mismatch
- [20] § Proposed AVPENet architecture › Cross-modal fusion module ↔ avpenet/models/fusion.py, lines 89 to 194 · score 0.55 · feed forward network, concatenated, fusion, module, modal, Cross · Report a mismatch
- [21] § Results › 0.1 Overall performance ↔ notebooks/quickstart_demo.ipynb, lines 101 to 141 · score 0.55 · ground truth pain, perfect prediction, scatter, moderate, regression, scores · Report a mismatch
- [22] § Results › 0.2 Age group stratification ↔ avpenet/metrics.py, lines 116 to 139 · score 0.53 · class pain categorization, Confusion matrices, classification, accuracy, score · Report a mismatch
- [23] § Methodology › Pain annotation and ground truth establishment ↔ avpenet/metrics.py, lines 74 to 111 · score 0.51 · intraclass correlation coefficient, agreement, rater, ICC, scores · Report a mismatch
- [24] § Proposed AVPENet architecture › Training protocol ↔ scripts/train.py, lines 77 to 89 · score 0.50 · cosine annealing, schedule, optimizer, Training · Report a mismatch
Paper
Loaded from Europe PMC by your browser; OSCR does not store it: doi.org · Europe PMC
The paper is loaded when this pane is shown.
The authors' code
Python · 209 lines · 6.9 KB · MIT · 5 matches
- """
- Evaluation Metrics for AVPENet.
- Implements all metrics from the paper:
- - MAE (primary metric)
- - RMSE
- - PCC (Pearson correlation coefficient)
- - ICC (intraclass correlation coefficient)
- - Accuracy, F1, Kappa (3-class discretised)
- Reference: Section "Evaluation Metrics".
- """
- from __future__ import annotations
- import numpy as np
- import torch
- from scipy import stats
- from sklearn.metrics import (
- mean_absolute_error,
- mean_squared_error,
- accuracy_score,
- f1_score,
- cohen_kappa_score,
- confusion_matrix,
- )
- from typing import Union
- # ─────────────────────────── Helpers ──────────────────────────────────────────
- ArrayLike = Union[np.ndarray, torch.Tensor, list]
- def _to_numpy(x: ArrayLike) -> np.ndarray:
- if isinstance(x, torch.Tensor):
- return x.detach().cpu().numpy()
- return np.asarray(x, dtype=np.float32)
- def discretise_pain(scores: np.ndarray) -> np.ndarray:
- """Map continuous pain scores to 3-class labels.
- Classes (from the paper):
- 0 — Low pain : [0, 3]
- 1 — Moderate : (3, 6]
- 2 — High pain : (6, 10]
- """
- labels = np.zeros_like(scores, dtype=int)
- labels[(scores > 3) & (scores <= 6)] = 1
- labels[scores > 6] = 2
- return labels
- # ─────────────────────────── Regression Metrics ───────────────────────────────
- def compute_mae(pred: ArrayLike, target: ArrayLike) -> float:
- """Mean Absolute Error — primary metric."""
- return float(mean_absolute_error(_to_numpy(target), _to_numpy(pred)))
- def compute_rmse(pred: ArrayLike, target: ArrayLike) -> float:
- """Root Mean Squared Error."""
- return float(np.sqrt(mean_squared_error(_to_numpy(target), _to_numpy(pred))))
- def compute_pcc(pred: ArrayLike, target: ArrayLike) -> float:
- """Pearson Correlation Coefficient."""
- p, t = _to_numpy(pred), _to_numpy(target)
- r, _ = stats.pearsonr(p, t)
- return float(r)
- def compute_icc(pred: ArrayLike, target: ArrayLike) -> float:
- """Intraclass Correlation Coefficient (two-way random, absolute agreement).
- ICC(2,1) — measures absolute agreement between rater and reference.
- """
- try:
- import pingouin as pg
- import pandas as pd
- p, t = _to_numpy(pred), _to_numpy(target)
- n = len(p)
- data = pd.DataFrame({
- "targets": np.tile(np.arange(n), 2),
- "raters": ["pred"] * n + ["true"] * n,
- "scores": np.concatenate([p, t]),
- })
- icc_result = pg.intraclass_corr(
- data=data,
- targets="targets",
- raters="raters",
- ratings="scores",
- )
- # Return ICC(2,1) absolute agreement
- row = icc_result[icc_result["Type"] == "ICC2"]
- if len(row) > 0:
- return float(row.iloc[0]["ICC"])
- except Exception:
- pass
- # Fallback: simplified ICC computation
- p, t = _to_numpy(pred), _to_numpy(target)
- n = len(p)
- grand_mean = (p.mean() + t.mean()) / 2.0
- ss_total = np.sum((p - grand_mean) ** 2) + np.sum((t - grand_mean) ** 2)
- ss_within = np.sum((p - t) ** 2) / 2.0
- ms_between = (ss_total - 2 * ss_within) / (n - 1)
- ms_within = ss_within / n
- icc = (ms_between - ms_within) / (ms_between + ms_within)
- return float(icc)
- # ─────────────────────────── Classification Metrics ──────────────────────────
- def compute_classification_metrics(
- pred: ArrayLike,
- target: ArrayLike,
- ) -> dict:
- """Compute 3-class pain categorisation metrics.
- Returns:
- Dict with keys: accuracy, f1, kappa, confusion_matrix.
- """
- p, t = _to_numpy(pred), _to_numpy(target)
- pred_labels = discretise_pain(p)
- target_labels = discretise_pain(t)
- acc = float(accuracy_score(target_labels, pred_labels))
- f1 = float(f1_score(target_labels, pred_labels, average="macro", zero_division=0))
- kappa = float(cohen_kappa_score(target_labels, pred_labels))
- cm = confusion_matrix(target_labels, pred_labels, labels=[0, 1, 2])
- return {
- "accuracy": acc,
- "f1": f1,
- "kappa": kappa,
- "confusion_matrix": cm,
- }
- # ─────────────────────────── Comprehensive Evaluation ─────────────────────────
- def evaluate(
- pred: ArrayLike,
- target: ArrayLike,
- age_groups: ArrayLike = None,
- ) -> dict:
- """Compute all evaluation metrics reported in the paper.
- Args:
- pred: Predicted pain scores.
- target: Ground-truth pain scores.
- age_groups: Optional array of 'neonate'/'adult' labels
- for age-stratified evaluation.
- Returns:
- Nested dict with all metrics.
- """
- p, t = _to_numpy(pred), _to_numpy(target)
- results = {
- "mae": compute_mae(p, t),
- "rmse": compute_rmse(p, t),
- "pcc": compute_pcc(p, t),
- "icc": compute_icc(p, t),
- }
- results.update(compute_classification_metrics(p, t))
- # Age-stratified evaluation
- if age_groups is not None:
- groups = _to_numpy(age_groups) if not isinstance(age_groups, np.ndarray) else age_groups
- for group in ["neonate", "adult"]:
- mask = groups == group
- if mask.sum() > 0:
- sub = {
- "mae": compute_mae(p[mask], t[mask]),
- "rmse": compute_rmse(p[mask], t[mask]),
- "pcc": compute_pcc(p[mask], t[mask]),
- "n": int(mask.sum()),
- }
- sub.update(compute_classification_metrics(p[mask], t[mask]))
- results[group] = sub
- return results
- def print_results(results: dict, prefix: str = "") -> None:
- """Pretty-print evaluation results."""
- pad = f"[{prefix}] " if prefix else ""
- print(f"\n{'='*60}")
- print(f"{pad}Evaluation Results")
- print(f"{'='*60}")
- print(f" MAE: {results['mae']:.4f}")
- print(f" RMSE: {results['rmse']:.4f}")
- print(f" PCC: {results['pcc']:.4f}")
- print(f" ICC: {results['icc']:.4f}")
- print(f" Accuracy: {results['accuracy']*100:.1f}%")
- print(f" F1: {results['f1']:.4f}")
- print(f" Kappa: {results['kappa']:.4f}")
- for group in ["neonate", "adult"]:
- if group in results:
- g = results[group]
- print(f"\n [{group.capitalize()} (n={g['n']})]")
- print(f" MAE: {g['mae']:.4f}")
- print(f" PCC: {g['pcc']:.4f}")
- print(f" Accuracy: {g['accuracy']*100:.1f}%")
- print(f"{'='*60}\n")
metrics.py at commit 70b7093, under MIT · at the source
Overview
- Information Systems Department, College of Computer Science and Information Technology, King Faisal University, Al Ahsa, Saudi Arabia
- Computer Science Department, Military Academy of Fondouk Jedid, Nabeul, Tunisia
- Military Research Center, Aouina, Tunisia
Abstract
Pain assessment in non-verbal patients, including neonates and unconscious adults, remains a critical challenge in clinical practice. Current pain scales rely heavily on observer interpretation and may lack objectivity, introducing significant inter-rater variability. We propose a novel multimodal deep learning framework that estimates continuous pain intensity by fusing non-speech audio cues with facial expressions. Our approach addresses the critical need for objective pain assessment in vulnerable populations unable to self-report. We developed a cross-modal attention-based fusion network combining spectrogram-derived audio embeddings with facial action unit features. The model was trained and validated on 3,247 audio-visual recordings from 428 subjects, including 215 neonates and 213 adults, across three distinct pain intensity levels. We employed a ResNet-based audio encoder for mel-spectrogram processing and a facial landmark convolutional neural network for expression analysis, integrated through a transformer-based fusion module that learns complementary relationships between modalities. Our model achieved a mean absolute error of 0.89 on a 0–10 pain scale, significantly outperforming audio-only approaches (mean absolute error 1.47, 39% improvement) and visual-only baselines (mean absolute error 1.23, 28% improvement). Cross-age group validation demonstrated robust generalization with mean absolute errors of 0.94 for neonates and 0.91 for adults. The model maintained a Pearson correlation coefficient of 0.89 with ground truth annotations and achieved 81.4% accuracy for three-class pain categorization. Audio-visual fusion significantly enhances pain estimation accuracy across diverse age groups and clinical scenarios. This approach offers substantial potential for objective, automated pain monitoring in clinical settings, particularly for vulnerable populations unable to self-report pain.
Reproduced under the paper's license (CC BY), from the paper cited above.
Repository
Its files are read in the Code ↔ Paper reader above, with 24 matches between paragraphs and lines of code.
oussama123-ai/AVPENet
70b709306609e1c24e0e9c361fd3fbd391a8852a, 16 March 2026Availability: 1 check, the latest on 30 September 2026: the link answers
- 30 September 2026: the link answers
25 files
- avpenet/
__init__.py , Python, 15 lines - avpenet/
data/ , Python, 13 lines__init__.py - avpenet/
data/ , Python, 268 lines, 3 matchesaudio_preprocessing.py - avpenet/
data/ , Python, 180 linesdataset.py - avpenet/
data/ , Python, 345 lines, 1 matchvisual_preprocessing.py - avpenet/
inference.py , Python, 113 lines - avpenet/
losses.py , Python, 161 lines, 2 matches - avpenet/
metrics.py , Python, 209 lines, 5 matches - avpenet/
models/ , Python, 13 lines__init__.py - avpenet/
models/ , Python, 151 lines, 2 matchesaudio_encoder.py - avpenet/
models/ , Python, 209 lines, 2 matchesavpenet.py - avpenet/
models/ , Python, 204 lines, 3 matchesfusion.py - avpenet/
models/ , Python, 77 lines, 1 matchregression_head.py - avpenet/
models/ , Python, 148 lines, 1 matchvisual_encoder.py - notebooks/
quickstart_demo.ipynb , Jupyter, 141 lines, 2 matches - scripts/
__init__.py , Python, 1 line - scripts/
evaluate.py , Python, 150 lines - scripts/
preprocess_audio.py , Python, 83 lines - scripts/
preprocess_video.py , Python, 95 lines - scripts/
train.py , Python, 376 lines, 2 matches - setup.py, Python, 34 lines
- tests/
__init__.py , Python, 1 line - tests/
test_avpenet.py , Python, 311 lines - LICENSE, License, 21 lines
- README.md, Text, 298 lines
The paper's code and data availability statement is in the Data section.
Tracing map
Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.
What the map holds:
- 1 repository of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
- 23 scripts, each with its path and the digest of its content;
- 24 matches between paragraphs of the paper and lines of the code (method lexical-v1);
- neither the text of the paper nor the code itself.
Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.
Data
No dataset and no data link were found in the paper.
Data Availability
All data and code underlying the findings of this study are publicly available without restriction at: https://
Reproduced under the paper's license (CC BY), from the paper cited above.
Versions
The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.
Version 1, 30 September 2026: the first record
Recorded: type, language, journal, volume, issue, pages, dates, 2 authors, 2 funders, 25 references.
Cite
This paper
Naouali, S., & El Othmani, O. (2026). AVPENet: Pain estimation from audio-visual fusion of non-speech sounds. PLOS digital health, 5(3), e0001301. https://
BibTeX
@article{naouali2026avpe
author = {Naouali, Sami and El Othmani, Oussama},
title = {{AVPENet: Pain estimation from audio-visual fusion of non-speech sounds}},
journal = {PLOS digital health},
year = {2026},
month = mar,
volume = {5},
number = {3},
pages = {e0001301},
publisher = {PLOS},
issn = {2767-3170},
doi = {10.1371/
url = {https://
pmid = {41894538},
pmcid = {PMC13029810}
}
RIS
TY - JOUR
AU - Naouali, Sami
AU - El Othmani, Oussama
TI - AVPENet: Pain estimation from audio-visual fusion of non-speech sounds
T2 - PLOS digital health
J2 - PLOS Digit Health
PY - 2026
DA - 2026/
VL - 5
IS - 3
SP - e0001301
SN - 2767-3170
PB - PLOS
DO - 10.1371/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1371/
"type": "article-journal",
"title": "AVPENet: Pain estimation from audio-visual fusion of non-speech sounds",
"container-title": "PLOS digital health",
"author": [
{
"family": "Naouali",
"given": "Sami"
},
{
"family": "El Othmani",
"given": "Oussama"
}
],
"container-title-short":
"volume": "5",
"issue": "3",
"page": "e0001301",
"DOI": "10.1371/
"PMID": "41894538",
"PMCID": "PMC13029810",
"ISSN": "2767-3170",
"publisher": "PLOS",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
3,
27
]
]
}
}
The tracing map gets a citation of its own once an author has validated it and it has a DOI.
Similar papers
The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.
- [1] doi:10.1371/journal.pdig.0001442 [code]
- PANDIA: Personalized neuro-symbolic multimodal fusion for interpretable neonatal pain assessment.Journal: PLOS digital healthIn common: OpenCV, Pillow, PyTorch, 3 other tools, pain, author Sami Naouali
- [2] doi:10.7554/elife.107933 [code]
- Modality-agnostic decoding of vision and language from fMRI.Journal: eLifeIn common: OpenCV, Pillow, PyTorch, 5 other tools, cognitive, 1 reference
- [3] doi:10.1371/journal.pone.0344600 [code]
- Robust disease prognosis via diagnostic knowledge preservation: A sequential learning approach.Journal: PloS oneIn common: OpenCV, Pillow, PyTorch, 5 other tools, 1 reference
- [4] doi:10.1016/j.patter.2026.101538 [code]
- A multi-modal foundation model for brain disease diagnosis and medical imaging.Journal: Patterns (New York, N.Y.)In common: OpenCV, Pillow, PyTorch, 5 other tools, 1 reference
- [5] doi:10.1111/bpa.70029 [code]
- Pediatric brain tumor classification using digital pathology and deep learning: Evaluation of SOTA methods on a multi-center Swedish cohort.Journal: Brain pathology (Zurich, Switzerland)In common: OpenCV, Pillow, PyTorch, 5 other tools, 1 reference
- [6] doi:10.7554/elife.91685 [code]
- Factorized visual representations in the primate visual system and deep neural networks.Journal: eLifeIn common: OpenCV, Pillow, PyTorch, 5 other tools, 1 reference
- [7] doi:10.1117/1.nph.12.2.025012 [code]
- Brain-wide 3D neuron detection and mapping with deep learning.Journal: NeurophotonicsIn common: OpenCV, Pillow, PyTorch, 5 other tools, 1 reference
- [8] doi:10.7554/elife.79305 [code]
- Open-source tools for behavioral video analysis: Setup, methods, and best practices.Journal: eLifeIn common: OpenCV, Pillow, PyTorch, 5 other tools, 1 reference
- [9] doi:10.7554/elife.98117 [code]
- Human EEG and artificial neural networks reveal disentangled representations and processing timelines of object real-world size and depth in natural images.Journal: eLifeIn common: Pingouin, Pillow, PyTorch, 4 other tools, 1 reference
- [10] doi:10.3389/fneur.2023.1107957 [code]
- The value of convolutional neural networks-based deep learning model in differential diagnosis of space-occupying brain diseases.Journal: Frontiers in neurologyIn common: OpenCV, Pillow, PyTorch, 4 other tools, 1 reference
Contribute
The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.
Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.
Claim this paper
Correct its record
Say what each link of this record is, remove the ones that are not the paper's, add the ones that are missing. The correction becomes a new version of the record, in its Versions section.
Validate its tracing map
You validate the map as this page shows it: 1 repository of the authors' code, each at its verified commit and with its license, 23 scripts, and 24 matches between paragraphs and code (see the Code and Map sections). It then receives a DOI on Zenodo, with you (your ORCID iD) and OSCR as its creators; the code itself is not deposited.
The map's fingerprint: sha256:6102d458c9dbe3ba…
Add the badge to the code's README
If you are an author or a maintainer of this paper's code, you can add this badge. It says what OSCR knows of the paper (its code, its validated tracing map) and links the code to this page. Paste one of these snippets under the README's title. Keep the two marks around it, so that the badge can be replaced in place and is never added twice. OSCR changes nothing in your repository.
Markdown
<!-- oscr-badge:start -->
[](https://openscicode.org/badge/doi/10.1371/journal.pdig.0001301)
<!-- oscr-badge:end -->reStructuredText
.. oscr-badge:start
.. image:: https://openscicode.org/badge/doi/10.1371/journal.pdig.0001301.svg
:target: https://openscicode.org/badge/doi/10.1371/journal.pdig.0001301
:alt: OSCR
.. oscr-badge:endHTML
<!-- oscr-badge:start -->
<a href="https://openscicode.org/badge/doi/10.1371/journal.pdig.0001301"><img src="https://openscicode.org/badge/doi/10.1371/journal.pdig.0001301.svg" alt="OSCR"></a>
<!-- oscr-badge:end -->On GitHub, open the README, choose Edit (the pencil), paste the snippet under the title, then "Commit changes".
If you choose to, you can have the badge kept up to date for you, with oscr badge --write from the command line or with the GitHub Action in your repository's workflows. Every other form and option (a card, AsciiDoc, LaTeX, shields.io) is on the badge page.
Request its removal
To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).
Discussion, reproductions, activity
Discussion: code errors and mismatches between the code and the paper about this paper and its code, from readers and its authors, beside the paper and its tracing map.
Report a mismatch between the code and the paper · Report a code error (signed in)
Reproductions: reports from readers who ran the authors' code and did not get the paper's result, what they ran, with which environment, commit and data.
Report a reproduction failure (signed in)
Versions of its code: the releases of its code tied to a version of this paper (the preprint, the accepted manuscript, the version of record…), each with the tracing map versioned with it.
Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.
