OSCR

PANDIA: Personalized neuro-symbolic multimodal fusion for interpretable neonatal pain assessment.

Code ↔ Paper

31 matches between paragraphs of the paper and lines of its authors' code, computed by the harvester (lexical-v1). Click a colored paragraph or line to see its counterpart.

The 31 matches
  1. [1] § 4. Experimentation and validation › 4.1 Datasets › 4.1.1 Dataset access and reproducibility. ↔ preprocessing/preprocess.py, lines 1–15 · score 0.96 · timestamp alignment, wavelet denoising, mel spectrogram, standardized preprocessing, face detection, linear interpolation
  2. [2] § 3. Methodology › 3.2 PANDIA architecture › 3.2.3 Concept bottleneck layer. ↔ pandia/models/concept_bottleneck.py, lines 1–28 · score 0.94 · eye squeeze, harmonic distortion, silence periods, mouth opening, cry intensity, brow lowering
  3. [3] § 3. Methodology › 3.2 PANDIA architecture › 3.2.3 Concept bottleneck layer. ↔ pandia/models/pandia.py, lines 149–186 · score 0.91 · eye squeeze, harmonic distortion, silence periods, mouth opening, cry intensity, brow lowering
  4. [4] § 3. Methodology › 3.2 PANDIA architecture › 3.2.7 Symbolic rule engine. ↔ pandia/models/symbolic_rules.py, lines 1–17 · score 0.88 · high confidence pain, conflicting indicator, NICU clinicians, pain baseline, moderate pain, escalation
  5. [5] § 3. Methodology › 3.2 PANDIA architecture › 3.2.7 Symbolic rule engine. ↔ pandia/models/symbolic_rules.py, lines 1–17 · score 0.88 · high confidence pain, NICU clinicians, pain baseline, moderate pain, gestational age, rule engine
  6. [6] § 3. Methodology › 3.2 PANDIA architecture › 3.2.4 Relational graph reasoner. ↔ pandia/models/graph_reasoner.py, lines 49–108 · score 0.85 · edges incident, absent modalities, concept nodes, missing modality, adjacency, zero
  7. [7] § 4. Experimentation and validation › 4.3 Evaluation metrics ↔ pandia/evaluation/metrics.py, lines 16–62 · score 0.84 · Brier Score, F1 macro, metrics, NPV, PPV, MCE
  8. [8] § 3. Methodology › 3.2 PANDIA architecture › 3.2.1 Module integration and data flow. ↔ pandia/models/symbolic_rules.py, lines 30–42 · score 0.81 · tier conflict resolution, human readable, Concept activations, rule engine, Algorithm, Symbolic
  9. [9] § 3. Methodology › 3.3 Training strategy › 3.3.3 Cybersecurity and deployment security. ↔ pandia/training/federated.py, lines 1–16 · score 0.80 · KL divergence, Anomaly detection, DP SGD, gradient, clipping, round
  10. [10] § 3. Methodology › 3.2 PANDIA architecture › 3.2.7 Symbolic rule engine. ↔ pandia/models/symbolic_rules.py, lines 30–42 · score 0.77 · tier conflict resolution, concept activations, rule engine, Algorithm, Symbolic, thresholds
  11. [11] § 3. Methodology › 3.2 PANDIA architecture › 3.2.5 Meta-learning personalization. ↔ pandia/models/meta_learner.py, lines 1–16 · score 0.77 · graph attention weights, concept bottleneck parameters, Meta learning, frozen, classifier, personalization
  12. [12] § 3. Methodology › 3.2 PANDIA architecture › 3.2.7 Symbolic rule engine. ↔ pandia/models/symbolic_rules.py, lines 101–147 · score 0.76 · High pain evidence, HR spike, intense crying, facial distress, Symbolic
  13. [13] § 4. Experimentation and validation › 4.2 Implementation details ↔ pandia/utils/data_utils.py, lines 17–103 · score 0.71 · random horizontal flipping, jittering, speed, Augmentation, noise, Temporal
  14. [14] § 3. Methodology › 3.2 PANDIA architecture › 3.2.5 Meta-learning personalization. ↔ pandia/utils/data_utils.py, lines 17–103 · score 0.70 · postnatal age, Contextual metadata, gestational age, 35 days, infant, weights
  15. [15] § 4. Experimentation and validation › 4.3 Evaluation metrics ↔ pandia/evaluation/metrics.py, lines 16–62 · score 0.68 · cohen kappa score, metrics, Quadratic, matrix, QWK, Weighted
  16. [16] § 3. Methodology › 3.2 PANDIA architecture ↔ pandia/training/losses.py, lines 113–150 · score 0.66 · graph sparsity, ordinal pain, concept supervision, Tensor, prediction, evidential
  17. [17] § 4. Experimentation and validation › 4.2 Implementation details ↔ pandia/training/trainer.py, lines 22–94 · score 0.65 · cosine annealing, AdamW, optimizer, batch, Training
  18. [18] § 3. Methodology › 3.2 PANDIA architecture › 3.2.1 Module integration and data flow. ↔ pandia/models/graph_reasoner.py, lines 49–108 · score 0.64 · GraphSAGE, learned adjacency, fused, nodes, layers, Module
  19. [19] § 3. Methodology › 3.2 PANDIA architecture › 3.2.1 Module integration and data flow. ↔ pandia/models/meta_learner.py, lines 1–16 · score 0.63 · graph attention weights, Meta learning, frozen, classifier, infant
  20. [20] § 3. Methodology › 3.2 PANDIA architecture ↔ pandia/training/trainer.py, lines 1–19 · score 0.61 · federated contrastive pretraining, multi task supervised, meta learning, PANDIA
  21. [21] § 3. Methodology › 3.2 PANDIA architecture › 3.2.1 Module integration and data flow. ↔ pandia/models/evidential_output.py, lines 1–12 · score 0.61 · epistemic uncertainty, system abstains, defers, Evidential, clinician, layer
  22. [22] § 3. Methodology › 3.3 Training strategy › 3.3.5 Multi-task supervised learning. ↔ pandia/training/losses.py, lines 113–150 · score 0.58 · ordinal loss, Concept supervision, prediction, weights, training, pain
  23. [23] § 3. Methodology › 3.3 Training strategy › 3.3.4 Federated infrastructure risk assessment (NIST CSF). ↔ pandia/training/federated.py, lines 78–197 · score 0.57 · global model, server, clients, aggregates, round, weighted
  24. [24] § 3. Methodology › 3.3 Training strategy › 3.3.4 Federated infrastructure risk assessment (NIST CSF). ↔ scripts/federated_train.py, lines 39–94 · score 0.57 · global model, server, clients, round, epochs, DP
  25. [25] § 3. Methodology › 3.2 PANDIA architecture › 3.2.2 Lightweight modality encoders. ↔ pandia/encoders/video_encoder.py, lines 48–69 · score 0.57 · Video Encoder, MobileNetV3, temporal, TCN
  26. [26] § 3. Methodology › 3.2 PANDIA architecture › 3.2.2 Lightweight modality encoders. ↔ pandia/encoders/audio_encoder.py, lines 1–9 · score 0.56 · mel spectrograms, Audio Encoder, TCN
  27. [27] § 3. Methodology › 3.2 PANDIA architecture › 3.2.3 Concept bottleneck layer. ↔ pandia/training/losses.py, lines 14–30 · score 0.56 · weak supervision, semi supervised, training
  28. [28] § 3. Methodology › 3.3 Training strategy › 3.3.4 Federated infrastructure risk assessment (NIST CSF). ↔ pandia/training/federated.py, lines 1–16 · score 0.54 · FedAvg, 1–3, IID, federated, training
  29. [29] § 3. Methodology › 3.3 Training strategy › 3.3.4 Federated infrastructure risk assessment (NIST CSF). ↔ scripts/federated_train.py, lines 39–94 · score 0.53 · global model, federated model, rounds, loss, device, PANDIA
  30. [30] § 4. Experimentation and validation › 4.2 Implementation details ↔ pandia/models/meta_learner.py, lines 37–79 · score 0.53 · inner loop, query, gradient, Meta, infant
  31. [31] § 4. Experimentation and validation › 4.2 Implementation details ↔ pandia/models/concept_bottleneck.py, lines 55–102 · score 0.51 · supervised concepts, concept bottleneck, dropout, hidden

Paper

Loaded from Europe PMC by your browser, not stored by OSCR: doi.org · Europe PMC

The paper is loaded when this pane is shown.

The authors' code

Python · 220 lines · 9.9 KB · MIT · 5 matches

  1. """
  2. Symbolic Rule Engine
  3. ────────────────────
  4. 18 hand-crafted rules (3 tiers) developed with NICU clinicians.
  5. Tier 1 (6 rules): High-confidence pain — all 3 primary indicators fire
  6. Tier 2 (5 rules): Moderate pain — any 2 indicators agree
  7. Tier 3 (7 rules): Conflicting indicators → uncertainty escalation / no-pain baseline
  8. Thresholds are gestational-age-adjusted:
  9. τ_b ∈ [0.60 (<28w) … 0.75 (≥37w)]
  10. Algorithm 1 & 2 from the paper.
  11. """
  12. from dataclasses import dataclass, field
  13. from typing import Optional
  14. import torch
  15. from pandia.models.concept_bottleneck import get_ga_stratum, GA_THRESHOLDS, CONCEPT_NAMES
  16. @dataclass
  17. class RuleOutput:
  18. pain_level: int # 0=none, 1=mild, 2=moderate, 3=severe
  19. confidence_tier: int # 1, 2, or 3
  20. abstain: bool
  21. explanation: str
  22. recommendation: str
  23. active_concepts: list = field(default_factory=list)
  24. class SymbolicRuleEngine:
  25. """
  26. Translates 12 concept activations → human-readable pain assessment.
  27. Implements the three-tier conflict-resolution mechanism (Algorithm 2).
  28. """
  29. # Default thresholds (term infant, ≥37w)
  30. TAU_DEFAULT = dict(
  31. brow_lower=0.70, cry_intensity=0.60, hr_accel=0.50,
  32. eye_squeeze=0.70, nasolabial=0.65, mouth_open=0.65,
  33. f0_elev=0.60, harmonic=0.55, silence=0.55,
  34. o2_desat=0.55, resp_irreg=0.55, bp_elev=0.55,
  35. )
  36. def __init__(self, abstain_u_threshold=0.50):
  37. self.abstain_u_threshold = abstain_u_threshold
  38. def _get_thresholds(self, gestational_age_weeks: float) -> dict:
  39. """Scale default thresholds by GA stratum (±0.15 range)."""
  40. s = get_ga_stratum(gestational_age_weeks)
  41. ga_row = GA_THRESHOLDS[s] # tensor (12,)
  42. base = GA_THRESHOLDS[3] # term baseline
  43. delta = ga_row - base # negative for preterm
  44. tau = dict(self.TAU_DEFAULT)
  45. for i, name in enumerate(CONCEPT_NAMES):
  46. key = name.replace("_acceleration", "_accel") \
  47. .replace("_desaturation", "_desat") \
  48. .replace("_irregularity", "_irreg") \
  49. .replace("_elevation", "_elev")
  50. if key in tau:
  51. tau[key] = float(tau[key] + delta[i].item())
  52. return tau
  53. def evaluate(self, concepts: torch.Tensor, uncertainty: float,
  54. gestational_age_weeks: float = 37.0,
  55. ventilated: bool = False) -> RuleOutput:
  56. """
  57. Args:
  58. concepts: (12,) tensor of concept activations ∈ [0,1]
  59. uncertainty: scalar epistemic uncertainty u
  60. gestational_age_weeks: float
  61. ventilated: suppress audio concepts C5-C8 if True
  62. Returns:
  63. RuleOutput
  64. """
  65. c = concepts.detach().cpu().float()
  66. tau = self._get_thresholds(gestational_age_weeks)
  67. # Named activations
  68. C = {name: float(c[i]) for i, name in enumerate(CONCEPT_NAMES)}
  69. # Ventilated infant protocol — suppress audio concepts
  70. if ventilated:
  71. for k in ["cry_intensity", "f0_elevation", "harmonic_distortion", "silence_periods"]:
  72. C[k] = 0.0
  73. # ── Tier 1: Physiological Override ───────────────────────────────
  74. tier1_fire = self._tier1_rules(C, tau, uncertainty)
  75. if tier1_fire:
  76. return tier1_fire
  77. # ── Tier 2: Symbolic Consensus ───────────────────────────────────
  78. tier2_fire = self._tier2_rules(C, tau, uncertainty)
  79. if tier2_fire:
  80. return tier2_fire
  81. # ── Tier 3: Uncertainty Escalation ───────────────────────────────
  82. return self._tier3_rules(C, tau, uncertainty)
  83. # ── Tier 1 Rules (6) ─────────────────────────────────────────────────
  84. def _tier1_rules(self, C, tau, u) -> Optional[RuleOutput]:
  85. """All 3 primary indicators exceed threshold → immediate high pain alert."""
  86. bl = C["brow_lowering"] > tau.get("brow_lower", 0.70)
  87. ci = C["cry_intensity"] > tau.get("cry_intensity", 0.60)
  88. hr = C["hr_acceleration"] > tau.get("hr_accel", 0.50)
  89. o2 = C["o2_desaturation"] > tau.get("o2_desat", 0.55)
  90. es = C["eye_squeeze"] > tau.get("eye_squeeze", 0.70)
  91. mo = C["mouth_opening"] > tau.get("mouth_open", 0.65)
  92. active = [n for n, v in [("brow_lowering", bl), ("cry_intensity", ci),
  93. ("hr_acceleration", hr), ("o2_desaturation", o2),
  94. ("eye_squeeze", es), ("mouth_opening", mo)] if v]
  95. # Rule T1-1: All three primary indicators
  96. if bl and ci and hr:
  97. return RuleOutput(3, 1, False,
  98. "High pain evidence: facial distress, intense crying, HR spike.",
  99. "Immediate clinical assessment required.", active)
  100. # Rule T1-2: Facial + O2
  101. if bl and es and o2:
  102. return RuleOutput(3, 1, False,
  103. "High pain evidence: facial grimacing, O2 desaturation.",
  104. "Immediate clinical assessment required.", active)
  105. # Rule T1-3: Cry + HR + O2
  106. if ci and hr and o2:
  107. return RuleOutput(3, 1, False,
  108. "High pain evidence: cry, HR spike, O2 drop.",
  109. "Immediate clinical assessment required.", active)
  110. # Rule T1-4: All facial
  111. if bl and es and mo:
  112. return RuleOutput(2, 1, False,
  113. "Moderate-high pain: complete facial pain expression.",
  114. "Prompt pain assessment recommended.", active)
  115. # Rule T1-5: HR + resp
  116. ri = C["resp_irregularity"] > tau.get("resp_irreg", 0.55)
  117. if hr and ri and o2:
  118. return RuleOutput(3, 1, False,
  119. "High pain: physiological triad (HR, RR, SpO2).",
  120. "Immediate clinical assessment required.", active)
  121. # Rule T1-6: F0 + harmonic + cry
  122. f0 = C["f0_elevation"] > tau.get("f0_elev", 0.60)
  123. hd = C["harmonic_distortion"] > tau.get("harmonic", 0.55)
  124. if ci and f0 and hd:
  125. return RuleOutput(2, 1, False,
  126. "High pain cry acoustics: intensity, F0, harmonic distortion.",
  127. "Prompt pain assessment recommended.", active)
  128. return None
  129. # ── Tier 2 Rules (5) ─────────────────────────────────────────────────
  130. def _tier2_rules(self, C, tau, u) -> Optional[RuleOutput]:
  131. bl = C["brow_lowering"] > tau.get("brow_lower", 0.70)
  132. ci = C["cry_intensity"] > tau.get("cry_intensity", 0.60)
  133. hr = C["hr_acceleration"]> tau.get("hr_accel", 0.50)
  134. mo = C["mouth_opening"] > tau.get("mouth_open", 0.65)
  135. ri = C["resp_irregularity"] > tau.get("resp_irreg", 0.55)
  136. active = [n for n, v in [("brow_lowering", bl), ("cry_intensity", ci),
  137. ("hr_acceleration", hr), ("mouth_opening", mo),
  138. ("resp_irregularity", ri)] if v]
  139. # Rule T2-1
  140. if bl and ci:
  141. return RuleOutput(2, 2, False,
  142. "Moderate pain: facial distress with crying.",
  143. "Pain assessment recommended within 5 minutes.", active)
  144. # Rule T2-2
  145. if bl and hr:
  146. return RuleOutput(2, 2, False,
  147. "Moderate pain: facial distress with HR elevation.",
  148. "Pain assessment recommended within 5 minutes.", active)
  149. # Rule T2-3
  150. if ci and hr:
  151. return RuleOutput(1, 2, False,
  152. "Mild-moderate pain: crying with HR response.",
  153. "Monitor closely; reassess in 10 minutes.", active)
  154. # Rule T2-4
  155. if mo and ci:
  156. return RuleOutput(1, 2, False,
  157. "Mild pain: mouth opening with vocalization.",
  158. "Monitor; non-pharmacological comfort measures.", active)
  159. # Rule T2-5
  160. if hr and ri:
  161. return RuleOutput(1, 2, False,
  162. "Mild pain: physiological indicators (HR, RR).",
  163. "Monitor; reassess in 15 minutes.", active)
  164. return None
  165. # ── Tier 3 Rules (7) ─────────────────────────────────────────────────
  166. def _tier3_rules(self, C, tau, u) -> RuleOutput:
  167. # Always increment uncertainty
  168. u_adjusted = min(u + 0.10, 1.0)
  169. if u_adjusted > self.abstain_u_threshold:
  170. return RuleOutput(0, 3, True,
  171. "Conflicting or insufficient signals.",
  172. "Clinician review required.", [])
  173. # Sub-rules T3-1…T3-4: single-indicator mild signals
  174. bl = C["brow_lowering"] > tau.get("brow_lower", 0.70) * 0.8
  175. ci = C["cry_intensity"] > tau.get("cry_intensity", 0.60) * 0.8
  176. hr = C["hr_acceleration"] > tau.get("hr_accel", 0.50) * 0.8
  177. if bl:
  178. return RuleOutput(1, 3, False,
  179. "Possible mild pain: isolated brow lowering.",
  180. "Observe; reassess in 15 minutes.", ["brow_lowering"])
  181. if ci:
  182. return RuleOutput(1, 3, False,
  183. "Possible mild pain: isolated cry signal.",
  184. "Observe; reassess in 15 minutes.", ["cry_intensity"])
  185. if hr:
  186. return RuleOutput(1, 3, False,
  187. "Possible mild pain: isolated HR response.",
  188. "Observe; reassess in 15 minutes.", ["hr_acceleration"])
  189. # No pain baseline
  190. return RuleOutput(0, 3, False,
  191. "No significant pain indicators detected.",
  192. "Continue routine monitoring.", [])

symbolic_rules.py at commit 60bfd15, under MIT · at the source

Overview

Authors: Oussama El Othmani1,2, Sami Naouali3
ORCID iDs: Sami Naouali
  1. Computer Science Department, Military Academy of Fondouk Jedid, Nabeul, Tunisia
  2. Military Research Center, Aouina, Tunisia
  3. Information Systems Department, College of Computer Science and Information Technology, King Faisal University, Al Ahsa, Saudi Arabia
Institutions: Military Academy, Tunisia (Tunisia); King Faisal University (Saudi Arabia)
Journal: PLOS digital health, volume 5, issue 5, article e0001442
Dates: received 28 January 2026; accepted 3 May 2026; published online 26 May 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.1371/journal.pdig.0001442 · PMID 42189831 · PMCID PMC13210372 · OpenAlex W7162465201
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: human (organism), pain (population), developmental (subfield)
Methods: Statistics, Spectral & time-frequency, Evoked potentials, Machine learning, fMRI & imaging, Physiology & signal measures
Topic: Pediatric Pain Management Techniques (Pediatrics, Perinatology and Child Health, Medicine), according to OpenAlex
Funding: Nvidia; King Faisal University; Medical Research Council
Citations: not cited yet (Europe PMC); 43 references in the paper

Abstract

Effective pain assessment in infants aged 0–3 months is a critical challenge in neonatal intensive care units (NICUs) and family medicine clinics, where self-reporting is impossible and current observational tools remain subjective and inconsistent. This paper presents PANDIA (Personalized Adaptive Neuro-symbolic Data-fusion for Infant Assessment), a novel multimodal AI system that combines hierarchical representation learning, graph-based inter-modal reasoning, meta-learning personalization, and symbolic concept-bottleneck explanations for robust infant pain assessment. Unlike transformer-centric approaches, PANDIA employs lightweight CNN/TCN backbones with a graph neural network for inter-modal fusion, achieving clinical interpretability through explicit concept bottlenecks and symbolic reasoning. Our federated learning framework enables privacy-preserving multi-site collaboration while meta-learning adaptation provides personalized assessment with minimal per-infant data. Evaluated on 2,847 infants across four datasets, PANDIA achieves 87.3% accuracy with 92.1% clinician acceptance rate for explanations, achieving a 12.4% accuracy improvement over the best baseline, consistent across all four datasets and an independent out-of-distribution test set, while maintaining fewer than 30M parameters for edge deployment. The proposed system offers a structured and interpretable step toward deploying explainable AI in early-life pain management, with potential to improve care quality and support medical decision-making. Key limitations include the retrospective validation design, dataset heterogeneity across collection sites, and the need for prospective clinical trials before deployment in live clinical settings. All code, trained models, preprocessing pipelines, and supplementary materials are fully publicly available without restriction at: https://github.com/oussama123-ai/pandia. The NICU-MM dataset is available upon request subject to an ethical data use agreement; the access procedure is detailed in Section 4.1.1.

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 31 matches between paragraphs and lines of code.

oussama123-ai/pandia

License: MIT
State: the link answers, verified on 28 September 2026
Evidence: files inventoried
Commit: 60bfd153f3c7389f907072ebdf32a88d6322b86d, 16 March 2026
Languages: Python (33)
Size: 43 files, 33 scripts
Software Heritage: not archived
Found in: “4.1.1 Dataset access and reproducibility.”
Holds: README, license file, environment (Dockerfile, environment.yml, requirements.txt, setup.py), tests
Not found: CITATION.cff, continuous integration, documentation
Tools: PyTorch (21 files), NumPy (6 files), OpenCV (1 file), Pillow (1 file), PyWavelets (1 file), scikit-learn (1 file), SciPy (1 file)
Availability: 1 check, the latest on 28 September 2026: the link answers
  • 28 September 2026: the link answers
35 files

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;
  • 33 scripts, each with its path and the digest of its content;
  • 31 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

Datasets cited

Data Availability

All code, trained models, preprocessing pipelines, and evaluation scripts required to reproduce the findings of this study are fully publicly available without restriction at: https://github.com/oussama123-ai/pandia. No registration, data use agreement, or institutional approval is required to access these materials. The iCOPE, NPAD, and APN datasets are publicly available or accessible via the sources described in Section 4.1.1. In particular, the NPAD dataset [42] is available at https://rpal.cse.usf.edu/project_neonatal_pain/dataset.html. To support transparency and reproducibility, an anonymized subset of processed data, including representative feature embeddings, model outputs, and evaluation splits, is publicly available at: https://doi.org/10.5281/zenodo.19727881. These data enable independent verification of the reported results without requiring access to sensitive raw recordings. Due to the sensitive nature of neonatal video and audio recordings involving minor participants and multi-jurisdictional ethical oversight (HIPAA, GDPR, IRB-MRC-MHT-2022-001, KFU-REC-2023-10-28), the NICU-MM dataset cannot be made fully publicly available. This restriction is consistent with the PLOS Digital Health exception policy for ethically restricted data [43]. Researchers may request access to the NICU-MM dataset for legitimate scientific purposes by contacting the Military Research Center Ethics Committee, Military Hospital of Tunis, Tunisia (IRB-MRC-MHT-2022-001; ). The committee is independent of the authors and is responsible for data governance. Requests should include a description of the intended use and appropriate data protection measures and will be reviewed within 30 business days.

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 2, 28 September 2026

  • Funding: added Nvidia; King Faisal University; Medical Research Council

Version 1, 28 September 2026: the first record

Recorded: type, language, journal, volume, issue, pages, dates, 2 authors, 23 references.

Cite

This paper

El Othmani, O., & Naouali, S. (2026). PANDIA: Personalized neuro-symbolic multimodal fusion for interpretable neonatal pain assessment. PLOS digital health, 5(5), e0001442. https://doi.org/10.1371/journal.pdig.0001442

BibTeX

@article{elothmani2026pandia,
author = {El Othmani, Oussama and Naouali, Sami},
title = {{PANDIA: Personalized neuro-symbolic multimodal fusion for interpretable neonatal pain assessment}},
journal = {PLOS digital health},
year = {2026},
month = may,
volume = {5},
number = {5},
pages = {e0001442},
publisher = {PLOS},
issn = {2767-3170},
doi = {10.1371/journal.pdig.0001442},
url = {https://doi.org/10.1371/journal.pdig.0001442},
pmid = {42189831},
pmcid = {PMC13210372}
}

RIS

TY - JOUR
AU - El Othmani, Oussama
AU - Naouali, Sami
TI - PANDIA: Personalized neuro-symbolic multimodal fusion for interpretable neonatal pain assessment
T2 - PLOS digital health
J2 - PLOS Digit Health
PY - 2026
DA - 2026/05/26
VL - 5
IS - 5
SP - e0001442
SN - 2767-3170
PB - PLOS
DO - 10.1371/journal.pdig.0001442
UR - https://doi.org/10.1371/journal.pdig.0001442
LA - en
ER -

CSL-JSON

{
"id": "10.1371/journal.pdig.0001442",
"type": "article-journal",
"title": "PANDIA: Personalized neuro-symbolic multimodal fusion for interpretable neonatal pain assessment",
"container-title": "PLOS digital health",
"author": [
{
"family": "El Othmani",
"given": "Oussama"
},
{
"family": "Naouali",
"given": "Sami"
}
],
"container-title-short": "PLOS Digit Health",
"volume": "5",
"issue": "5",
"page": "e0001442",
"DOI": "10.1371/journal.pdig.0001442",
"PMID": "42189831",
"PMCID": "PMC13210372",
"ISSN": "2767-3170",
"publisher": "PLOS",
"URL": "https://doi.org/10.1371/journal.pdig.0001442",
"language": "en",
"issued": {
"date-parts": [
[
2026,
5,
26
]
]
}
}

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.1038/s41467-026-72057-9 [code]
Sex-specific behavioral feedback modulates sensorimotor processing and drives flexible social behavior.
Journal: Nature communications
In common: PyWavelets, OpenCV, Pillow, 4 other tools
[2] doi:10.1038/s41467-026-72214-0 [code]
Auricular vagus nerve stimulation drives analgesia via an auricle-brain axis in a mouse model of neuropathic pain.
Journal: Nature communications
In common: PyWavelets, OpenCV, PyTorch, 3 other tools, pain
[3] doi:10.1038/s43856-026-01817-x [code]
Visual prompt engineering for multimodal and irregularly sampled medical data.
Journal: Communications medicine
In common: OpenCV, Pillow, PyTorch, 3 other tools, 1 reference
[4] doi:10.1117/1.nph.13.2.025001 [code]
Surface-based image reconstruction optimization for high-density functional near-infrared spectroscopy.
Journal: Neurophotonics
In common: PyWavelets, OpenCV, Pillow, 3 other tools
[5] doi:10.1038/s42003-026-10011-7 [code]
Learning brain dynamics across distinct scaling regimes reveals psychiatric signatures.
Journal: Communications biology
In common: PyWavelets, Pillow, PyTorch, 3 other tools
[6] doi:10.1038/s41592-026-03057-2 [code]
CREsted: modeling genomic and synthetic cell-type-specific enhancers across tissues and species.
Journal: Nature methods
In common: PyWavelets, Pillow, PyTorch, 3 other tools
[7] doi:10.1038/s41598-026-52298-w [code]
RAN: A randomness-anchored watermark attacking network with stealth and effectiveness.
Journal: Scientific reports
In common: PyWavelets, OpenCV, Pillow, 2 other tools
[8] doi:10.1002/mrm.70496 [code]
A Deep Nonlinear Subspace Modeling and Reconstruction for Diffusion-Weighted Imaging Using Denoising Auto-Encoder.
Journal: Magnetic resonance in medicine
In common: PyWavelets, Pillow, PyTorch, 2 other tools
[9] doi:10.1038/s42003-026-10957-8 [code]
Brain defence by the extracellular matrix protein Cochlin.
Journal: Communications biology
In common: OpenCV, Pillow, PyTorch, 3 other tools
[10] doi:10.1038/s41467-026-76837-1 [code]
Drug screen and machine learning predict neuroprotective agents in a preclinical human model of childhood dementia.
Journal: Nature communications
In common: OpenCV, Pillow, PyTorch, 3 other tools

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.

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: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.

Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.

Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.