OSCR

E/I imbalance and internal noise cause weak neural representations and face recognition challenges in ASD.

Code ↔ Paper

4 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 4 matches
  1. [1] § Methods › Training and testing procedures ↔ large-scale-cornet/src/models/cornet.py, lines 254–401 · score 0.79 · cross entropy loss, training epoch, Adam, optimizer, weights, loops
  2. [2] § Methods › General CNN model architecture ↔ large-scale-cornet/src/models/custom_layers.py, lines 11–35 · score 0.58 · standard deviation, Gaussian noise, ReLU, layer, activations, models
  3. [3] § Methods › General CNN model architecture ↔ large-scale-cornet/src/models/cornet.py, lines 162–251 · score 0.58 · dense Layer, ReLU, flattening, identity, dropout, architecture
  4. [4] § Results and discussions ↔ large-scale-cornet/src/models/custom_layers.py, lines 11–35 · score 0.54 · standard deviation, Gaussian noises, ReLU, internal noise, layers, activation

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 · 401 lines · 15 KB · MIT · 2 matches

  1. # src/models/cornet_wrapper.py
  2. import torch
  3. import torch.nn as nn
  4. import cornet
  5. from torchvision import transforms
  6. class CornetWithPathology(nn.Module):
  7. """
  8. A wrapper around CORnet (Z/S) that injects ASD-like pathology
  9. (E/I Imbalance and Internal Noise) without retraining the weights.
  10. """
  11. def __init__(self, model_name='Z', slope=1.0, noise_std=0.0, device='cuda'):
  12. super().__init__()
  13. self.device = device
  14. self.slope = slope # Corresponds to slope_positive (E/I gain)
  15. self.noise_std = noise_std
  16. self.model_name = model_name
  17. print(f"Loading CORnet-{model_name} (Pre-trained on ImageNet)...")
  18. # 1. Load pretrained model
  19. # map_location ensures direct loading to GPU or CPU
  20. if model_name == 'Z':
  21. self.core_model = cornet.cornet_z(pretrained=True, map_location=device)
  22. elif model_name == 'S':
  23. self.core_model = cornet.cornet_s(pretrained=True, map_location=device)
  24. elif model_name == 'RT':
  25. self.core_model = cornet.cornet_rt(pretrained=True, map_location=device)
  26. else:
  27. raise ValueError("Model must be Z, S, or RT")
  28. # Unwrap once (works for DataParallel or not)
  29. self.base = self.core_model.module if isinstance(self.core_model, nn.DataParallel) else self.core_model
  30. # 2. Freeze all parameters (Freeze Backbone)
  31. # Key for reviewers: No retraining - we want to see pretrained brain's response under pathology
  32. for param in self.core_model.parameters():
  33. param.requires_grad = False
  34. self.core_model.eval() # Critical: Lock BatchNorm and Dropout
  35. self.core_model.to(device)
  36. # 3. Register Hooks (Key step for injecting E/I and Noise)
  37. self.hooks = []
  38. self._register_pathology_hooks()
  39. def _pathology_hook(self, module, input, output):
  40. """
  41. This function automatically executes after forward propagation of each layer.
  42. Output is the raw output features of that layer (e.g., V1, V2...).
  43. """
  44. # A. Simulate E/I Imbalance (Gain Modulation)
  45. # If slope > 1.0, simulate E > I (ASD)
  46. # If slope < 1.0, simulate I > E
  47. modulated_output = output * self.slope
  48. # B. Simulate Internal Noise
  49. # Inject Gaussian noise into neural activity
  50. if self.noise_std > 0:
  51. noise = torch.randn_like(modulated_output) * self.noise_std
  52. modulated_output = modulated_output + noise
  53. return modulated_output
  54. def _register_pathology_hooks(self):
  55. """
  56. Attach hooks to nonlinearity outputs (more faithful E/I manipulation)
  57. Hooks inject pathology AFTER nonlinear activation, simulating altered E/I balance
  58. """
  59. # CORblock_Z has .nonlin attribute for nonlinearity
  60. target_modules = [
  61. self.base.V1.nonlin,
  62. self.base.V2.nonlin,
  63. self.base.V4.nonlin,
  64. self.base.IT.nonlin,
  65. ]
  66. for mod in target_modules:
  67. # register_forward_hook allows us to modify outputs
  68. h = mod.register_forward_hook(self._pathology_hook)
  69. self.hooks.append(h)
  70. print(f"Pathology Injected (nonlin hooks): Slope={self.slope}, Noise={self.noise_std}")
  71. def forward(self, x):
  72. return self.core_model(x)
  73. def close(self):
  74. """Remove hooks and clean up memory"""
  75. for h in self.hooks:
  76. h.remove()
  77. # ==========================================
  78. # Utility Functions: Data Preprocessing
  79. # ==========================================
  80. def get_cornet_transforms():
  81. """
  82. CORnet requires standard ImageNet preprocessing
  83. """
  84. return transforms.Compose([
  85. transforms.Resize(256),
  86. transforms.CenterCrop(224),
  87. transforms.ToTensor(),
  88. transforms.Normalize(mean=[0.485, 0.456, 0.406], # ImageNet standard mean
  89. std=[0.229, 0.224, 0.225]) # ImageNet standard std
  90. ])
  91. # ==========================================
  92. # Main Function (Corresponds to original build_cnn)
  93. # ==========================================
  94. def extract_features(data_tensor, model_name='Z', slope=1.0, noise_level=0.0, device='cuda'):
  95. """
  96. Extract IT-layer features from a CORnet model with pathology injection.
  97. Uses a forward hook on the IT area to capture internal representations
  98. rather than the final decoder logits.
  99. Inputs:
  100. data_tensor: PyTorch Tensor [Batch, 3, Height, Width] (already normalized)
  101. model_name: 'Z' or 'S'
  102. slope: E/I ratio
  103. noise_level: Noise std
  104. Outputs:
  105. features: numpy array of IT layer output (flattened)
  106. """
  107. # 1. Build model
  108. model = CornetWithPathology(model_name, slope=slope, noise_std=noise_level, device=device)
  109. # 2. Register a hook on the IT area to capture its output
  110. it_features = {}
  111. def _capture_it(module, input, output):
  112. it_features['out'] = output.detach()
  113. hook = model.base.IT.register_forward_hook(_capture_it)
  114. # 3. Inference — run the full forward pass so pathology hooks also fire
  115. with torch.no_grad():
  116. if device == 'cuda':
  117. data_tensor = data_tensor.cuda()
  118. model(data_tensor)
  119. hook.remove()
  120. # 4. Flatten spatial dims: (B, C, H, W) -> (B, C*H*W)
  121. feat = it_features['out'].cpu()
  122. if feat.dim() > 2:
  123. feat = feat.flatten(1)
  124. # Cleanup
  125. model.close()
  126. return feat.numpy()
  127. # ==========================================
  128. # Post-Training Functions
  129. # ==========================================
  130. def build_cornet_for_training(
  131. num_classes,
  132. alpha=1.0,
  133. noise_std=0.0,
  134. freeze_backbone=False,
  135. pretrained=True,
  136. penultimate_dim=64,
  137. penultimate_dropout=0.5
  138. ):
  139. """
  140. Build CORnet for post-training with custom activation and penultimate dense head.
  141. Parameters:
  142. num_classes: number of output classes
  143. alpha: E/I gain modulation
  144. noise_std: internal noise level
  145. freeze_backbone: if True, only train decoder
  146. pretrained: use ImageNet pretrained weights
  147. penultimate_dim: dimension of penultimate dense layer (default 64, like Keras CNN)
  148. penultimate_dropout: dropout rate for penultimate layer
  149. Returns:
  150. Modified CORnet model ready for training
  151. """
  152. import cornet
  153. from collections import OrderedDict
  154. from .custom_layers import EIRectifiedLinear
  155. print(f"Building CORnet for training: alpha={alpha}, noise={noise_std}")
  156. # Load pretrained CORnet-Z
  157. model = cornet.cornet_z(pretrained=pretrained)
  158. # Handle DataParallel wrapper robustly
  159. actual_model = model.module if isinstance(model, nn.DataParallel) else model
  160. # Replace all ReLU and existing EIRectifiedLinear with updated alpha/noise
  161. def replace_nonlin(module):
  162. for name, child in module.named_children():
  163. # Replace ReLU
  164. if isinstance(child, nn.ReLU):
  165. setattr(module, name, EIRectifiedLinear(alpha, noise_std))
  166. # Also replace existing EIRectifiedLinear to ensure alpha/noise take effect
  167. elif child.__class__.__name__ == "EIRectifiedLinear":
  168. setattr(module, name, EIRectifiedLinear(alpha, noise_std))
  169. else:
  170. replace_nonlin(child)
  171. replace_nonlin(actual_model)
  172. # Rebuild decoder
  173. in_features = actual_model.decoder.linear.in_features # 512
  174. old_avgpool = actual_model.decoder.avgpool
  175. old_flatten = actual_model.decoder.flatten
  176. if penultimate_dim == 0:
  177. # Use original architecture: 512 -> num_classes
  178. actual_model.decoder = nn.Sequential(OrderedDict([
  179. ("avgpool", old_avgpool),
  180. ("flatten", old_flatten),
  181. ("linear", nn.Linear(in_features, num_classes)),
  182. ("output", nn.Identity()),
  183. ]))
  184. print(f"Decoder rebuilt: 512 -> {num_classes} classes (original architecture)")
  185. else:
  186. # Use custom architecture with penultimate layer: 512 -> penultimate_dim -> num_classes
  187. actual_model.decoder = nn.Sequential(OrderedDict([
  188. ("avgpool", old_avgpool),
  189. ("flatten", old_flatten),
  190. # Penultimate dense: 512 -> penultimate_dim (matches your Keras Dense(64, relu))
  191. ("penultimate_dense", nn.Linear(in_features, penultimate_dim)),
  192. ("penultimate_dense_relu", nn.ReLU(inplace=True)),
  193. ("penultimate_dense_drop", nn.Dropout(p=penultimate_dropout)),
  194. # Logits layer: penultimate_dim -> num_classes
  195. ("linear", nn.Linear(penultimate_dim, num_classes)),
  196. ("output", nn.Identity()),
  197. ]))
  198. print(f"Decoder rebuilt: 512 -> {penultimate_dim} (ReLU + Dropout) -> {num_classes} classes")
  199. # Optionally freeze backbone
  200. if freeze_backbone:
  201. print("Freezing backbone (V1-V4/IT), training decoder only")
  202. for name, param in actual_model.named_parameters():
  203. if not name.startswith("decoder."):
  204. param.requires_grad = False
  205. else:
  206. print("Training full model")
  207. # Return the unwrapped model (we'll handle device placement in training)
  208. return actual_model
  209. def train_cornet(model, train_loader, val_loader=None, test_loader=None, epochs=10, lr=1e-4,
  210. device='cuda', weight_decay=1e-3, use_augmentation=True):
  211. """
  212. Train CORnet model with Validation and Testing steps.
  213. Enhanced with data augmentation and regularization to prevent overfitting.
  214. Parameters:
  215. model: CORnet model
  216. train_loader: Training DataLoader
  217. val_loader: Validation DataLoader (Optional, evaluated every epoch)
  218. test_loader: Test DataLoader (Optional, evaluated once at the end)
  219. epochs: number of training epochs
  220. lr: learning rate
  221. device: 'cuda' or 'cpu'
  222. weight_decay: L2 regularization strength (default: 1e-3)
  223. use_augmentation: whether to apply data augmentation during training (default: True)
  224. Returns:
  225. tuple: (trained_model, history)
  226. """
  227. import torch.optim as optim
  228. import torch.nn as nn
  229. import torchvision.transforms as transforms
  230. try:
  231. from tqdm.auto import tqdm
  232. except ImportError:
  233. from tqdm import tqdm
  234. model.to(device)
  235. # Add weight decay for strong regularization to prevent memorization
  236. optimizer = optim.Adam(model.parameters(), lr=lr, weight_decay=weight_decay)
  237. criterion = nn.CrossEntropyLoss()
  238. # Define batch-level data augmentation
  239. # Applied on GPU for efficiency
  240. if use_augmentation:
  241. batch_augmenter = nn.Sequential(
  242. transforms.RandomHorizontalFlip(p=0.5),
  243. transforms.RandomAffine(
  244. degrees=10, # Random rotation ±10 degrees
  245. translate=(0.1, 0.1), # Random translation ±10%
  246. scale=(0.9, 1.1) # Random zoom 90-110%
  247. ),
  248. transforms.ColorJitter(
  249. brightness=0.2, # Random brightness ±20%
  250. contrast=0.2, # Random contrast ±20%
  251. saturation=0.1, # Random saturation ±10%
  252. hue=0.05 # Random hue shift ±5%
  253. )
  254. ).to(device)
  255. print(f"Training with augmentation enabled (weight_decay={weight_decay})")
  256. else:
  257. batch_augmenter = None
  258. print(f"Training without augmentation (weight_decay={weight_decay})")
  259. # Initialize history with separate keys for train and val
  260. history = {
  261. 'train_loss': [], 'train_acc': [],
  262. 'val_loss': [], 'val_acc': []
  263. }
  264. print(f"Starting training for {epochs} epochs on {device}...")
  265. # Helper function for Evaluation
  266. def evaluate_pass(loader, description="Evaluating"):
  267. model.eval()
  268. running_loss = 0.0
  269. correct = 0
  270. total = 0
  271. with torch.no_grad():
  272. for images, labels, _ in loader:
  273. images, labels = images.to(device), labels.to(device)
  274. outputs = model(images)
  275. loss = criterion(outputs, labels)
  276. running_loss += loss.item()
  277. _, predicted = outputs.max(1)
  278. total += labels.size(0)
  279. correct += predicted.eq(labels).sum().item()
  280. avg_loss = running_loss / len(loader)
  281. avg_acc = 100. * correct / total
  282. return avg_loss, avg_acc
  283. # Main Training Loop
  284. for epoch in range(epochs):
  285. model.train()
  286. running_loss = 0.0
  287. correct = 0
  288. total = 0
  289. # Training Pass
  290. pbar = tqdm(train_loader, desc=f"Epoch {epoch+1}/{epochs}", leave=False)
  291. for images, labels, _ in pbar:
  292. images, labels = images.to(device), labels.to(device)
  293. # Apply data augmentation during training (no gradient computation needed)
  294. if use_augmentation and batch_augmenter is not None:
  295. with torch.no_grad():
  296. images = batch_augmenter(images)
  297. optimizer.zero_grad()
  298. outputs = model(images)
  299. loss = criterion(outputs, labels)
  300. loss.backward()
  301. optimizer.step()
  302. running_loss += loss.item()
  303. _, predicted = outputs.max(1)
  304. total += labels.size(0)
  305. correct += predicted.eq(labels).sum().item()
  306. pbar.set_postfix({'Loss': f'{running_loss/total:.4f}',
  307. 'Acc': f'{100.*correct/total:.1f}%'})
  308. # Calculate Train Metrics
  309. train_loss = running_loss / len(train_loader)
  310. train_acc = 100. * correct / total
  311. history['train_loss'].append(train_loss)
  312. history['train_acc'].append(train_acc)
  313. # Validation Pass (If val_loader provided)
  314. val_str = ""
  315. if val_loader:
  316. val_loss, val_acc = evaluate_pass(val_loader, description="Validating")
  317. history['val_loss'].append(val_loss)
  318. history['val_acc'].append(val_acc)
  319. val_str = f" | Val Loss: {val_loss:.4f} | Val Acc: {val_acc:.2f}%"
  320. print(f"Epoch {epoch+1}: Train Loss: {train_loss:.4f} | Train Acc: {train_acc:.2f}%{val_str}")
  321. # Final Test Pass (After all epochs)
  322. if test_loader:
  323. print("\nRunning Final Test Set Evaluation...")
  324. test_loss, test_acc = evaluate_pass(test_loader, description="Testing")
  325. print("="*60)
  326. print(f"FINAL TEST RESULT: Accuracy = {test_acc:.2f}% | Loss = {test_loss:.4f}")
  327. print("="*60)
  328. history['final_test_acc'] = test_acc
  329. history['final_test_loss'] = test_loss
  330. print("Training complete")
  331. return model, history

cornet.py at commit f768ce1, under MIT · at the source

Overview

Authors: Xijing Wang1, Emily Rios2, Lang Chen2,3
  1. Mathematics and Computer Science, Santa Clara University, Santa Clara, CA USA
  2. Neuroscience Program, Santa Clara University, Santa Clara, CA USA
  3. Psychology, Santa Clara University, Santa Clara, CA USA
Institutions: Santa Clara University (United States)
Journal: Communications biology, volume 9, issue 1, article 872
Dates: received 9 April 2025; accepted 9 April 2026; published online 24 April 2026
Type: Research article · Language: English
License: CC BY-NC-ND
Identifiers: DOI 10.1038/s42003-026-10094-2 · PMID 42031948 · PMCID PMC13316099 · OpenAlex W7155534404
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: computational modeling (no new data) (modality), human (organism), autism (population)
Methods: Connectivity, Machine learning
Keywords: Cognitive neuroscience, Autism spectrum disorders, Network models
MeSH: Autism Spectrum Disorder*, Facial Recognition*, Convolutional Neural Networks, Female, Humans, Male (* major topic)
Topic: Autism Spectrum Disorder Research (Cognitive Neuroscience, Neuroscience), according to OpenAlex
Citations: not cited yet (Europe PMC); 91 references in the paper

Abstract

The abstract is not reproduced here: the paper's license (CC BY-NC-ND) does not allow it. Read it in the paper, at the publisher or on Europe PMC.

Repository

Its files are read in the Code ↔ Paper reader above, with 4 matches between paragraphs and lines of code.

xthomaswang/ASD_FaceReg_Modeling_CNN

License: MIT
State: the link answers, verified on 30 September 2026
Evidence: files inventoried
Commit: f768ce15ace9b82e24d52ca7afe632ebfbc56d50, 30 April 2026
Languages: Python (20), Jupyter (9), R (8)
Size: 1,808 files, 37 scripts
Software Heritage: not archived
Found in: “Code availability”
Holds: README, license file, CITATION.cff, environment (large-scale-cornet/requirements.txt, small-scale-custom-cnn/requirements.txt), documentation, 9 notebooks
Not found: tests, continuous integration
Tools: ggplot2 (8 files), NumPy (8 files), rstatix (8 files), ggpubr (7 files), PyTorch (6 files), reshape2 (6 files), Matplotlib (4 files), pandas (4 files), seaborn (4 files), tidyverse (4 files), Pillow (2 files), scikit-learn (2 files), SciPy (1 file)
Availability: 1 check, the latest on 30 September 2026: the link answers
  • 30 September 2026: the link answers
29 files

Code availability statement

The paper has a code availability statement. Its license (CC BY-NC-ND) does not allow reproducing it here; in short, from what the harvester recognized in it:

Read it in the paper: doi.org/10.1038/s42003-026-10094-2.

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

Code and data availability statement

The paper has a code and data availability statement. Its license (CC BY-NC-ND) does not allow reproducing it here; in short, from what the harvester recognized in it:

Read it in the paper: doi.org/10.1038/s42003-026-10094-2.

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, 3 authors, 3 keywords, 6 MeSH terms, 82 references.

Cite

This paper

Wang, X., Rios, E., & Chen, L. (2026). E/I imbalance and internal noise cause weak neural representations and face recognition challenges in ASD. Communications biology, 9(1), 872. https://doi.org/10.1038/s42003-026-10094-2

BibTeX

@article{wang2026e,
author = {Wang, Xijing and Rios, Emily and Chen, Lang},
title = {{E/I imbalance and internal noise cause weak neural representations and face recognition challenges in ASD}},
journal = {Communications biology},
year = {2026},
month = apr,
volume = {9},
number = {1},
pages = {872},
publisher = {Nature Publishing Group},
issn = {2399-3642},
doi = {10.1038/s42003-026-10094-2},
url = {https://doi.org/10.1038/s42003-026-10094-2},
pmid = {42031948},
pmcid = {PMC13316099}
}

RIS

TY - JOUR
AU - Wang, Xijing
AU - Rios, Emily
AU - Chen, Lang
TI - E/I imbalance and internal noise cause weak neural representations and face recognition challenges in ASD
T2 - Communications biology
J2 - Commun Biol
PY - 2026
DA - 2026/04/24
VL - 9
IS - 1
SP - 872
SN - 2399-3642
PB - Nature Publishing Group
DO - 10.1038/s42003-026-10094-2
UR - https://doi.org/10.1038/s42003-026-10094-2
LA - en
ER -

CSL-JSON

{
"id": "10.1038/s42003-026-10094-2",
"type": "article-journal",
"title": "E/I imbalance and internal noise cause weak neural representations and face recognition challenges in ASD",
"container-title": "Communications biology",
"author": [
{
"family": "Wang",
"given": "Xijing"
},
{
"family": "Rios",
"given": "Emily"
},
{
"family": "Chen",
"given": "Lang"
}
],
"container-title-short": "Commun Biol",
"volume": "9",
"issue": "1",
"page": "872",
"DOI": "10.1038/s42003-026-10094-2",
"PMID": "42031948",
"PMCID": "PMC13316099",
"ISSN": "2399-3642",
"publisher": "Nature Publishing Group",
"URL": "https://doi.org/10.1038/s42003-026-10094-2",
"language": "en",
"issued": {
"date-parts": [
[
2026,
4,
24
]
]
}
}

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-76098-y [code]
A single computational objective can produce specialization of streams in visual cortex.
Journal: Nature communications
In common: Pillow, PyTorch, seaborn, 5 other tools, 5 references
[2] doi:10.1126/sciadv.aec9291 [code]
Computational mechanisms of perception in autism revealed using games inspired by rodent operant tasks.
Journal: Science advances
In common: rstatix, reshape2, ggpubr, 2 other tools, autism, 4 references
[3] doi:10.1186/s13059-026-04177-w [code]
Genomic sequence evolution underlying human neocortical interareal diversification.
Journal: Genome biology
In common: rstatix, reshape2, ggpubr, 9 other tools
[4] doi:10.7554/elife.107933 [code]
Modality-agnostic decoding of vision and language from fMRI.
Journal: eLife
In common: Pillow, PyTorch, seaborn, 5 other tools, 4 references
[5] doi:10.1002/imt2.70163 [code]
Spatial multi-omics unveils sphingolipid metabolic reprogramming within the retinal pathological niche.
Journal: iMeta
In common: rstatix, reshape2, ggpubr, 9 other tools
[6] doi:10.1038/s42003-026-10169-0 [code]
Shared representations in brains and models reveal a two-route cortical organization during scene perception.
Journal: Communications biology
In common: Pillow, PyTorch, seaborn, 5 other tools, 4 references
[7] doi:10.1038/s41467-026-76675-1 [code]
Long-read proteogenomic atlas of human neuronal differentiation reveals isoform diversity informing neurodevelopmental risk mechanisms.
Journal: Nature communications
In common: rstatix, reshape2, ggpubr, 8 other tools, autism
[8] doi:10.1038/s42003-026-10957-8 [code]
Brain defence by the extracellular matrix protein Cochlin.
Journal: Communications biology
In common: reshape2, ggpubr, Pillow, 9 other tools
[9] doi:10.1038/s41592-026-03194-8 [code]
Beyond benchmarking: an expert-guided consensus approach to spatially aware clustering.
Journal: Nature methods
In common: reshape2, ggpubr, Pillow, 9 other tools
[10] doi:10.1186/s13229-026-00730-3 [code]
Predicting emotional valence in autism: a preregistered study in the Bayesian Brain framework.
Journal: Molecular autism
In common: rstatix, reshape2, ggpubr, 6 other tools, autism, 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.

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.