OSCR

Investigating the effects of continuous theta-burst stimulation over the posterior parietal cortex on holistic processing of composite faces: evidence from cognitive modeling.

Code ↔ Paper

2 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 2 matches
  1. [1] § Materials and methods › Statistical analyses ↔ Code/Behavioral Analysis Scripts/CompFace_Behavioral-Report.ipynb, lines 10 to 48 · score 0.58 · interquartile range, low accuracy, corrupted, IQR, Q1, Q3 · Report a mismatch
  2. [2] § Materials and methods › Statistical analyses ↔ Code/Behavioral Analysis Scripts/Navon_Behavioral-Report.ipynb, lines 6 to 46 · score 0.57 · interquartile range, low accuracy, IQR, Q1, Q3, quartiles · 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

Jupyter notebook · 670 lines · 16 KB · no license · 1 match

  1. # %%
  2. # library(ggpubr)
  3. library(ggplot2)
  4. library(tidyverse)
  5. library (rstatix)
  6. # %%
  7. # %% [markdown]
  8. # # Demography
  9. # %% [markdown]
  10. # 3 Stimulation\
  11. # 2 Alignment\
  12. # 2 Congruency\
  13. # 36 Subject\
  14. # Each contains 40 trials
  15. # %% [markdown]
  16. # subject 9 and 10 are excluded because of low accuracy
  17. # %% [markdown]
  18. # subject 4 is excluded due to corrupted data in LPPC
  19. # %% [markdown]
  20. # Some Blocks were excluded because the ACC was below chance (chance level was determined by binomial test with p-value of 0.05).\
  21. # This resulted in exclusion of 1.77 percent of data.
  22. # %% [markdown]
  23. # All remaining RTs are above 240ms
  24. # %% [markdown]
  25. # We use median RT so there is no need to exclude outliers in RT.
  26. # %% [markdown]
  27. # All statistical analyses were on the data with excluded outliers based on:\
  28. # Values above Q3 + 1.5xIQR or below Q1 - 1.5xIQR are considered as outliers. \
  29. # Q1 and Q3 are the first and third quartile, respectively. IQR is the interquartile range (IQR = Q3 - Q1).
  30. # %%
  31. # %% [markdown]
  32. # # ACC
  33. # %%
  34. df <- read.csv("C:/Users/Hasan/Desktop/Haniye/Face_full_data.csv")
  35. # %%
  36. dat <- df %>% group_by(subject, stim, Alignment, Congruency) %>% summarise(ACC=mean(ACC)) %>% ungroup()
  37. # %%
  38. dat$stim <- factor(dat$stim, c('LPPC', 'CZ', 'RPPC'))
  39. # %%
  40. out <- dat %>%
  41. group_by(stim, Alignment, Congruency) %>%
  42. identify_outliers(ACC)
  43. # %%
  44. dat1 <- dat
  45. # %%
  46. dat <- dat %>% anti_join(out, by=c('subject'))
  47. # %%
  48. # %%
  49. anova_test (data = dat, dv = ACC, wid= subject, within = c(stim, Alignment, Congruency))$ANOVA
  50. # %% [markdown]
  51. # now we further analyse significancies above.
  52. # %% [markdown]
  53. # ## Congruency
  54. # %%
  55. options(repr.plot.width = 10, repr.plot.height = 5)
  56. ggplot(data=dat, mapping=aes(x=Congruency, y=ACC)) +
  57. geom_boxplot() +
  58. geom_line(color="blue", size=.5, mapping=aes(group=subject), alpha=.5) +
  59. facet_grid(
  60. cols = vars(stim), rows = vars(Alignment))
  61. # %%
  62. ?geom_point
  63. # %%
  64. options(repr.plot.width = 10, repr.plot.height = 3)
  65. png(file="C:/Users/Hasan/Desktop/Haniye/final report/images/f_ACC.png", width=2000, height=600, res=200)
  66. ggplot(data=dat, mapping=aes(x=Alignment, y=ACC, fill = Congruency)) +
  67. geom_violin(trim = TRUE, draw_quantiles=c(.5), bounds=c(0,1)) +
  68. # geom_jitter(aes(shape = Congruency)) +
  69. # geom_boxplot(add='jitter') +
  70. # geom_point(position = position_jitterdodge(dodge.width = 1)) +
  71. facet_grid(cols = vars(stim)) +
  72. theme_bw()
  73. dev.off()
  74. # %%
  75. d <- dat %>% group_by(Alignment,stim,Congruency) %>% summarise(mean=mean(ACC), sd=sd(ACC)/sqrt(n())) %>% ungroup()
  76. d
  77. # %%
  78. options(repr.plot.width = 10, repr.plot.height = 3)
  79. ggplot(data=dat, mapping=aes(x=Alignment, y=ACC, fill = Congruency)) +
  80. geom_violin(trim = TRUE, bounds=c(0,1), alpha=.3, width=.6, scale='width', position=position_dodge(.8), aes(colour=Congruency), linewidth=.1) +
  81. geom_quasirandom(dodge.width=.8, aes(colour=Congruency), width=.15, shape=1, stroke=1, size=1) +
  82. geom_boxplot(alpha=.6, data=d,aes(y=c(),ymin=mean-sd*1.96, lower=mean-sd*1.96, middle=mean, upper=mean+sd*1.96, ymax=mean+sd*1.96),
  83. stat = "identity", position=position_dodge(.8), width=.6) +
  84. geom_errorbar(data=d,aes(group=Congruency, fill=c(), y=c(), ymin=mean-sd, ymax=mean+sd), position=position_dodge(.8), width=.1, linewidth=1) +
  85. facet_grid(cols = vars(stim)) +
  86. theme_bw()
  87. # %%
  88. # %%
  89. dat %>% group_by(Congruency) %>% summarise(mean(ACC))
  90. # %%
  91. # %% [markdown]
  92. # ## Alignment:Congruency
  93. # %%
  94. dat %>% group_by(Alignment, Congruency) %>% summarise(mean(ACC))
  95. # %%
  96. dat %>% group_by(Alignment) %>% summarise(delta=mean(ACC[Congruency=='Cong'])-mean(ACC[Congruency=='inCong']))
  97. # %%
  98. anova_test(data=filter(dat, Alignment=='align'), dv = ACC, wid= subject, within = c(Congruency, stim))$ANOVA %>%
  99. filter(Effect=='Congruency')
  100. # %%
  101. anova_test(data=filter(dat, Alignment=='misalign'), dv = ACC, wid= subject, within = c(Congruency, stim))$ANOVA %>%
  102. filter(Effect=='Congruency')
  103. # %% [markdown]
  104. # Congruency effect is higher in align than misalign (This is also evident in the plot above).
  105. # %%
  106. # %%
  107. # %% [markdown]
  108. # ## stim
  109. # %% [markdown]
  110. # **the following analysis are not neccecary to report in the article as we did not see any main or interaction effect for stim.**
  111. # %%
  112. options(repr.plot.width = 10, repr.plot.height = 5)
  113. ggplot(data=dat, mapping=aes(x=stim, y=ACC)) +
  114. geom_boxplot() +
  115. geom_line(color="blue", size=.5, mapping=aes(group=subject), alpha=.5) +
  116. facet_grid(
  117. cols = vars(Congruency), rows = vars(Alignment))
  118. # %%
  119. t <- dat1 %>% anti_join(out, by=c('subject','Congruency','Alignment')) %>%
  120. group_by(Alignment, Congruency) %>% t_test(ACC ~ stim, paired=TRUE)
  121. e <- dat1 %>% anti_join(out, by=c('subject','Congruency','Alignment')) %>%
  122. group_by(Alignment, Congruency) %>% cohens_d(ACC ~ stim, paired=TRUE)
  123. t['effsize'] <- e['effsize']
  124. # %%
  125. t
  126. # %%
  127. # %% [markdown]
  128. # The results of ANOVA on seperate stim condition:
  129. # %%
  130. dat %>%
  131. group_by(stim) %>% anova_test(dv = ACC, wid= subject, within = c(Congruency, Alignment))
  132. # %%
  133. # %%
  134. dat %>% group_by(stim, Congruency) %>% summarise(mean(ACC))
  135. # %%
  136. dat %>% group_by(stim, Alignment) %>% summarise(mean(ACC))
  137. # %%
  138. # %% [markdown]
  139. # # A'
  140. # %% [markdown]
  141. # A' is a measure of accuracy which combines the results for two levels of stimulus beiong same or different.\
  142. # The results are expected to have no significant difference from the analysis of ACC above. so you may only report the results for one of them.
  143. # %%
  144. df <- read.csv("C:/Users/Hasan/Desktop/Haniye/Face_full_data.csv")
  145. # %%
  146. dat <- df %>%
  147. group_by(subject, stim, Alignment, Congruency) %>%
  148. summarize(H = mean(ACC[Condition==unique(Condition)[1]]), F=1-mean(ACC[Condition==unique(Condition)[2]]),
  149. A=.5+sign(H-F)*((H-F)**2+abs(H-F))/4/(max(H,F)-H*F), n = n()) %>% ungroup()
  150. # %%
  151. dat$stim <- factor(dat$stim, c('LPPC', 'CZ', 'RPPC'))
  152. # %%
  153. out <- dat %>%
  154. group_by(stim, Alignment, Congruency) %>%
  155. identify_outliers(A)
  156. # %%
  157. dat1 <- dat
  158. # %%
  159. dat <- dat %>% anti_join(out, by=c('subject'))
  160. # %%
  161. # %%
  162. anova_test (data = dat, dv = A, wid= subject, within = c(stim, Alignment, Congruency))$ANOVA
  163. # %% [markdown]
  164. # now we further analyse significancies above.
  165. # %% [markdown]
  166. # ## Congruency
  167. # %%
  168. options(repr.plot.width = 10, repr.plot.height = 5)
  169. ggplot(data=dat, mapping=aes(x=Congruency, y=A)) +
  170. geom_boxplot() +
  171. geom_line(color="blue", size=.5, mapping=aes(group=subject), alpha=.5) +
  172. facet_grid(
  173. cols = vars(stim), rows = vars(Alignment))
  174. # %%
  175. dat %>% group_by(Congruency) %>% summarise(mean(A))
  176. # %%
  177. # %% [markdown]
  178. # ## Alignment:Congruency
  179. # %%
  180. dat %>% group_by(Alignment, Congruency) %>% summarise(mean(A))
  181. # %%
  182. dat %>% group_by(Alignment) %>% summarise(delta=mean(A[Congruency=='Cong'])-mean(A[Congruency=='inCong']))
  183. # %%
  184. anova_test(data=filter(dat, Alignment=='align'), dv = A, wid= subject, within = c(Congruency, stim))$ANOVA %>%
  185. filter(Effect=='Congruency')
  186. # %%
  187. anova_test(data=filter(dat, Alignment=='misalign'), dv = A, wid= subject, within = c(Congruency, stim))$ANOVA %>%
  188. filter(Effect=='Congruency')
  189. # %% [markdown]
  190. # Congruency effect is higher in align than misalign (This is also evident in the plot above).
  191. # %% [markdown]
  192. # ### Holistic Processing
  193. # %%
  194. hol <- dat1 %>% group_by(subject, stim) %>% summarise(H = A[Alignment=='align'&Congruency=='Cong']-
  195. A[Alignment=='align'&Congruency=='inCong']-
  196. A[Alignment=='misalign'&Congruency=='Cong']+
  197. A[Alignment=='misalign'&Congruency=='inCong']) %>% ungroup()
  198. # %%
  199. h_out <- hol %>%
  200. group_by(stim) %>%
  201. identify_outliers(H)
  202. # %%
  203. hol <- anti_join(hol, h_out, by=c('subject'))
  204. # %%
  205. options(repr.plot.width = 10, repr.plot.height = 5)
  206. ggplot(data=hol, mapping=aes(x=stim, y=H)) +
  207. geom_boxplot() +
  208. geom_line(color="blue", size=.5, mapping=aes(group=subject), alpha=.5)
  209. # %%
  210. anova_test(data=hol, dv = H, wid= subject, within = c(stim))$ANOVA
  211. # %%
  212. t <- hol %>% t_test(H ~ stim, paired=TRUE)
  213. e <- hol %>% cohens_d(H ~ stim, paired=TRUE)
  214. t['effsize'] <- e['effsize']
  215. # %%
  216. t
  217. # %%
  218. # %% [markdown]
  219. # ## stim
  220. # %% [markdown]
  221. # **the following analysis are not neccecary to report in the article as we did not see any main or interaction effect for stim.**
  222. # %%
  223. options(repr.plot.width = 10, repr.plot.height = 5)
  224. ggplot(data=dat, mapping=aes(x=stim, y=A)) +
  225. geom_boxplot() +
  226. geom_line(color="blue", size=.5, mapping=aes(group=subject), alpha=.5) +
  227. facet_grid(
  228. cols = vars(Congruency), rows = vars(Alignment))
  229. # %%
  230. t <- dat1 %>% anti_join(out, by=c('subject','Congruency','Alignment')) %>%
  231. group_by(Alignment, Congruency) %>% t_test(A ~ stim, paired=TRUE)
  232. e <- dat1 %>% anti_join(out, by=c('subject','Congruency','Alignment')) %>%
  233. group_by(Alignment, Congruency) %>% cohens_d(A ~ stim, paired=TRUE)
  234. t['effsize'] <- e['effsize']
  235. # %%
  236. t
  237. # %%
  238. # %% [markdown]
  239. # The results of ANOVA on seperate stim condition:
  240. # %%
  241. dat %>%
  242. group_by(stim) %>% anova_test(dv = A, wid= subject, within = c(Congruency, Alignment))
  243. # %%
  244. # %%
  245. dat %>% group_by(stim, Congruency) %>% summarise(mean(A))
  246. # %%
  247. dat %>% group_by(stim, Alignment) %>% summarise(mean(A))
  248. # %%
  249. # %%
  250. # %%
  251. # %%
  252. # %%
  253. # %%
  254. # %% [markdown]
  255. # # median RT
  256. # %%
  257. df <- read.csv("C:/Users/Hasan/Desktop/Haniye/Face_full_data.csv")
  258. # %%
  259. dat <- df %>% group_by(subject, stim, Alignment, Congruency) %>% summarise(RT=median(RT)) %>% ungroup()
  260. # %%
  261. dat$stim <- factor(dat$stim, c('LPPC', 'CZ', 'RPPC'))
  262. # %%
  263. out <- dat %>%
  264. group_by(stim, Alignment, Congruency) %>%
  265. identify_outliers(RT)
  266. # %%
  267. dat1 <- dat
  268. # %%
  269. dat <- dat %>% anti_join(out, by=c('subject'))
  270. # %%
  271. # %%
  272. anova_test(data = dat, dv = RT, wid= subject, within = c(stim, Alignment, Congruency))$ANOVA
  273. # %% [markdown]
  274. # now we further analyse significancies above.
  275. # %% [markdown]
  276. # ## Congruency
  277. # %%
  278. options(repr.plot.width = 10, repr.plot.height = 5)
  279. ggplot(data=dat, mapping=aes(x=Congruency, y=RT)) +
  280. geom_boxplot() +
  281. geom_line(color="blue", size=.5, mapping=aes(group=subject), alpha=.5) +
  282. facet_grid(
  283. cols = vars(stim), rows = vars(Alignment))
  284. # %%
  285. dat %>% group_by(Congruency) %>% summarize(mean(RT))
  286. # %%
  287. # %% [markdown]
  288. # ## Alignment
  289. # %%
  290. options(repr.plot.width = 10, repr.plot.height = 5)
  291. ggplot(data=dat, mapping=aes(x=Alignment, y=RT)) +
  292. geom_boxplot() +
  293. geom_line(color="blue", size=.5, mapping=aes(group=subject), alpha=.5) +
  294. facet_grid(
  295. cols = vars(stim), rows = vars(Congruency))
  296. # %%
  297. dat %>% group_by(Alignment) %>% summarize(mean(RT))
  298. # %%
  299. # %%
  300. # %% [markdown]
  301. # ## Alignment:Congruency
  302. # %%
  303. dat %>% group_by(Alignment, Congruency) %>% summarise(mean(RT))
  304. # %%
  305. dat %>% group_by(Alignment) %>% summarise(delta=mean(RT[Congruency=='Cong'])-mean(RT[Congruency=='inCong']))
  306. # %%
  307. anova_test(data=filter(dat, Alignment=='align'), dv = RT, wid= subject, within = c(Congruency, stim))$ANOVA %>%
  308. filter(Effect=='Congruency')
  309. # %%
  310. anova_test(data=filter(dat, Alignment=='misalign'), dv = RT, wid= subject, within = c(Congruency, stim))$ANOVA %>%
  311. filter(Effect=='Congruency')
  312. # %% [markdown]
  313. # Congruency effect is higher in align than misalign (This is also evident in the plot above).
  314. # %%
  315. # %% [markdown]
  316. # ## stim
  317. # %% [markdown]
  318. # **the following analysis are not neccecary to report in the article as we did not see any main or interaction effect for stim.**
  319. # %%
  320. options(repr.plot.width = 10, repr.plot.height = 5)
  321. ggplot(data=dat, mapping=aes(x=stim, y=RT)) +
  322. geom_boxplot() +
  323. geom_line(color="blue", size=.5, mapping=aes(group=subject), alpha=.5) +
  324. facet_grid(
  325. cols = vars(Congruency), rows = vars(Alignment))
  326. # %%
  327. t <- dat1 %>% anti_join(out, by=c('subject','Congruency','Alignment')) %>%
  328. group_by(Alignment, Congruency) %>% t_test(RT ~ stim, paired=TRUE)
  329. e <- dat1 %>% anti_join(out, by=c('subject','Congruency','Alignment')) %>%
  330. group_by(Alignment, Congruency) %>% cohens_d(RT ~ stim, paired=TRUE)
  331. t['effsize'] <- e['effsize']
  332. # %%
  333. t
  334. # %%
  335. # %% [markdown]
  336. # The results of ANOVA on seperate stim condition:
  337. # %%
  338. dat %>%
  339. group_by(stim) %>% anova_test(dv = RT, wid= subject, within = c(Congruency, Alignment))
  340. # %%
  341. dat %>% group_by(stim, Congruency) %>% summarise(mean(RT))
  342. # %%
  343. dat %>% group_by(stim, Alignment) %>% summarise(mean(RT))
  344. # %%
  345. # %%
  346. # %%
  347. # %% [markdown]
  348. # # Mean RT
  349. # %% [markdown]
  350. # apart from exclusion based on ACC, we also excluded the RT outside 3sd (1.93 percent of data) as suggested in the following paper:\
  351. # Berger, A., & Kiefer, M. (2021). Comparison of different response time outlier exclusion methods: A simulation study. Frontiers in Psychology, 12, 675558.
  352. # %%
  353. df <- read.csv("C:/Users/Hasan/Desktop/Haniye/Face_full_data2.csv")
  354. # %%
  355. dat <- df %>% group_by(subject, stim, Alignment, Congruency) %>% summarise(RT=mean(RT)) %>% ungroup()
  356. # %%
  357. dat$stim <- factor(dat$stim, c('LPPC', 'CZ', 'RPPC'))
  358. # %%
  359. out <- dat %>%
  360. group_by(stim, Alignment, Congruency) %>%
  361. identify_outliers(RT)
  362. # %%
  363. dat1 <- dat
  364. # %%
  365. dat <- dat %>% anti_join(out, by=c('subject'))
  366. # %%
  367. # %%
  368. anova_test(data = dat, dv = RT, wid= subject, within = c(stim, Alignment, Congruency))$ANOVA
  369. # %% [markdown]
  370. # now we further analyse significancies above.
  371. # %% [markdown]
  372. # ## Congruency
  373. # %%
  374. options(repr.plot.width = 10, repr.plot.height = 5)
  375. ggplot(data=dat, mapping=aes(x=Congruency, y=RT)) +
  376. geom_boxplot() +
  377. geom_line(color="blue", size=.5, mapping=aes(group=subject), alpha=.5) +
  378. facet_grid(
  379. cols = vars(stim), rows = vars(Alignment))
  380. # %%
  381. png(file="C:/Users/Hasan/Desktop/Haniye/final report/images/f_RT.png", width=2000, height=600, res=200)
  382. ggplot(data=dat, mapping=aes(x=Alignment, y=RT, fill = Congruency)) +
  383. geom_violin(trim = TRUE, draw_quantiles=c(.5), bounds=c(0,1)) +
  384. # geom_jitter(aes(shape = Congruency)) +
  385. # geom_boxplot(add='jitter') +
  386. # geom_point(position = position_jitterdodge(dodge.width = 1)) +
  387. facet_grid(cols = vars(stim)) +
  388. theme_bw()
  389. dev.off()
  390. # %%
  391. dat %>% group_by(Congruency) %>% summarize(mean(RT))
  392. # %%
  393. # %% [markdown]
  394. # ## Alignment
  395. # %%
  396. options(repr.plot.width = 10, repr.plot.height = 5)
  397. ggplot(data=dat, mapping=aes(x=Alignment, y=RT)) +
  398. geom_boxplot() +
  399. geom_line(color="blue", size=.5, mapping=aes(group=subject), alpha=.5) +
  400. facet_grid(
  401. cols = vars(stim), rows = vars(Congruency))
  402. # %%
  403. dat %>% group_by(Alignment) %>% summarize(mean(RT))
  404. # %%
  405. # %%
  406. # %% [markdown]
  407. # ## Alignment:Congruency
  408. # %%
  409. dat %>% group_by(Alignment, Congruency) %>% summarise(mean(RT))
  410. # %%
  411. dat %>% group_by(Alignment) %>% summarise(delta=mean(RT[Congruency=='Cong'])-mean(RT[Congruency=='inCong']))
  412. # %%
  413. anova_test(data=filter(dat, Alignment=='align'), dv = RT, wid= subject, within = c(Congruency, stim))$ANOVA %>%
  414. filter(Effect=='Congruency')
  415. # %%
  416. anova_test(data=filter(dat, Alignment=='misalign'), dv = RT, wid= subject, within = c(Congruency, stim))$ANOVA %>%
  417. filter(Effect=='Congruency')
  418. # %% [markdown]
  419. # Congruency effect is higher in align than misalign (This is also evident in the plot above).
  420. # %%
  421. # %% [markdown]
  422. # ## stim
  423. # %% [markdown]
  424. # **the following analysis are not neccecary to report in the article as we did not see any main or interaction effect for stim.**
  425. # %%
  426. options(repr.plot.width = 10, repr.plot.height = 5)
  427. ggplot(data=dat, mapping=aes(x=stim, y=RT)) +
  428. geom_boxplot() +
  429. geom_line(color="blue", size=.5, mapping=aes(group=subject), alpha=.5) +
  430. facet_grid(
  431. cols = vars(Congruency), rows = vars(Alignment))
  432. # %%
  433. t <- dat1 %>% anti_join(out, by=c('subject','Congruency','Alignment')) %>%
  434. group_by(Alignment, Congruency) %>% t_test(RT ~ stim, paired=TRUE)
  435. e <- dat1 %>% anti_join(out, by=c('subject','Congruency','Alignment')) %>%
  436. group_by(Alignment, Congruency) %>% cohens_d(RT ~ stim, paired=TRUE)
  437. t['effsize'] <- e['effsize']
  438. # %%
  439. t
  440. # %%
  441. # %%
  442. # %%
  443. # %% [markdown]
  444. # The results of ANOVA on seperate stim condition:
  445. # %%
  446. dat %>%
  447. group_by(stim) %>% anova_test(dv = RT, wid= subject, within = c(Congruency, Alignment))
  448. # %%
  449. dat %>% group_by(stim, Congruency) %>% summarise(mean(RT))
  450. # %%
  451. dat %>% group_by(stim, Alignment) %>% summarise(mean(RT))
  452. # %%
  453. # %%

CompFace_Behavioral-Report.ipynb, no license · at the source

Overview

Authors: Hanieh Sayadi1, Hasan Qarehdaghi1, Hamidreza Pouretemad1, Jamal Amani Rad2
  1. Institute for Cognitive and Brain Sciences, Shahid Beheshti University, Tehran, IRAN
  2. Choice Modelling Centre, University of Leeds, Leeds, United Kingdom
Institutions: Shahid Beheshti University (Iran); University of Leeds (United Kingdom)
Journal: PloS one, volume 21, issue 3, article e0343776
Dates: received 21 July 2025; accepted 10 February 2026; published online 23 March 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.1371/journal.pone.0343776 · PMID 41871057 · PMCID PMC13008110 · OpenAlex W7140072437
Open access: gold, a free copy (OpenAlex)
Status: code verified (how the code is found and verified)
Categories: human (organism), cognitive (subfield)
Methods: Statistics
MeSH: Cognition*, Parietal Lobe*, Theta Rhythm*, Transcranial Magnetic Stimulation*, Adult, Cross-Over Studies, Face, Female, Humans, Male, Reaction Time, Young Adult (* major topic)
Topic: Spatial Neglect and Hemispheric Dysfunction (Cognitive Neuroscience, Neuroscience), according to OpenAlex
Citations: not cited yet (Europe PMC); 172 references in the paper

Abstract

Efficient interaction with complex visual environments depends on the balance between global and local processing, with a natural tendency to prioritize global information—a phenomenon known as the global advantage. This study investigates how non-invasive brain stimulation using continuous theta-burst stimulation (cTBS) over the posterior parietal cortex (PPC) affects this balance, with a focus on holistic face processing. We conducted a within-subject, crossover, sham-controlled experiment involving 36 participants who completed Navon and composite face tasks before and after cTBS stimulation over the left and right PPC. Cognitive modeling using the Diffusion Model of Conflict (DMC) was employed to examine the cognitive mechanisms involved and compare global and local processing in experimental versus sham conditions. The results confirmed the expected global precedence effect and holistic processing in both tasks but revealed no significant impact of cTBS over the right PPC on task performance in terms of accuracy or response time. However, under incongruent conditions, cTBS over the left PPC led to slower responses to local targets, particularly when compared with the sham condition. Despite these localized effects, no significant changes were observed in composite face task performance following either left or right PPC stimulation. Overall, our findings highlight the complexity of the neural mechanisms governing global-local processing and the limited impact of single-session cTBS over the PPC in altering the cognitive mechanisms underlying these processes. Further research is needed to better understand the role of the PPC in holistic and hierarchical visual processing.

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

OSF d96pg

License: none: the authors keep all their rights
State: the link answers, verified on 30 September 2026
Evidence: files inventoried
Languages: Jupyter (6)
Size: 24 files, 6 scripts
Software Heritage: not checked
Found in: “Data Availability”
Holds: README, 6 notebooks
Not found: license file, CITATION.cff, environment file, tests, continuous integration, documentation
Tools: PsychoPy (21 files), rstatix (6 files), tidyverse (6 files), ggpubr (3 files), ggplot2 (1 file), pandas (1 file)
Availability: 1 check, the latest on 30 September 2026: the link answers (HTTP 200)
  • 30 September 2026: the link answers (HTTP 200)
33 files
At the source: osf.io/d96pg/

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;
  • 32 scripts, each with its path and the digest of its content;
  • 2 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 codes supporting the findings of this study are freely accessible on the Open Science Framework (OSF) at https://osf.io/d96pg/.

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, 4 authors, 12 MeSH terms, 170 references.

Cite

This paper

Sayadi, H., Qarehdaghi, H., Pouretemad, H., & Amani Rad, J. (2026). Investigating the effects of continuous theta-burst stimulation over the posterior parietal cortex on holistic processing of composite faces: evidence from cognitive modeling. PloS one, 21(3), e0343776. https://doi.org/10.1371/journal.pone.0343776

BibTeX

@article{sayadi2026investigating,
author = {Sayadi, Hanieh and Qarehdaghi, Hasan and Pouretemad, Hamidreza and Amani Rad, Jamal},
title = {{Investigating the effects of continuous theta-burst stimulation over the posterior parietal cortex on holistic processing of composite faces: evidence from cognitive modeling}},
journal = {PloS one},
year = {2026},
month = mar,
volume = {21},
number = {3},
pages = {e0343776},
publisher = {PLOS},
issn = {1932-6203},
doi = {10.1371/journal.pone.0343776},
url = {https://doi.org/10.1371/journal.pone.0343776},
pmid = {41871057},
pmcid = {PMC13008110}
}

RIS

TY - JOUR
AU - Sayadi, Hanieh
AU - Qarehdaghi, Hasan
AU - Pouretemad, Hamidreza
AU - Amani Rad, Jamal
TI - Investigating the effects of continuous theta-burst stimulation over the posterior parietal cortex on holistic processing of composite faces: evidence from cognitive modeling
T2 - PloS one
J2 - PLoS One
PY - 2026
DA - 2026/03/23
VL - 21
IS - 3
SP - e0343776
SN - 1932-6203
PB - PLOS
DO - 10.1371/journal.pone.0343776
UR - https://doi.org/10.1371/journal.pone.0343776
LA - en
ER -

CSL-JSON

{
"id": "10.1371/journal.pone.0343776",
"type": "article-journal",
"title": "Investigating the effects of continuous theta-burst stimulation over the posterior parietal cortex on holistic processing of composite faces: evidence from cognitive modeling",
"container-title": "PloS one",
"author": [
{
"family": "Sayadi",
"given": "Hanieh"
},
{
"family": "Qarehdaghi",
"given": "Hasan"
},
{
"family": "Pouretemad",
"given": "Hamidreza"
},
{
"family": "Amani Rad",
"given": "Jamal"
}
],
"container-title-short": "PLoS One",
"volume": "21",
"issue": "3",
"page": "e0343776",
"DOI": "10.1371/journal.pone.0343776",
"PMID": "41871057",
"PMCID": "PMC13008110",
"ISSN": "1932-6203",
"publisher": "PLOS",
"URL": "https://doi.org/10.1371/journal.pone.0343776",
"language": "en",
"issued": {
"date-parts": [
[
2026,
3,
23
]
]
}
}

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.1111/psyp.70032 [code]
Spatio-Temporal Decoding of the Navon Task Challenges Rigid Hemispheric Asymmetries in Global-Local Processing.
Journal: Psychophysiology
In common: ggplot2, tidyverse, cognitive, 11 references
[2] doi:10.1186/s12993-024-00233-2 [code]
Beyond visual integration: sensitivity of the temporal-parietal junction for objects, places, and faces.
Journal: Behavioral and brain functions : BBF
In common: cognitive, 10 references
[3] doi:10.3390/brainsci13081204
Skilled Performers Show Right Parietal Lateralization during Anticipation of Volleyball Attacks.
Journal: Brain sciences
In common: cognitive, 8 references
[4] doi:10.1162/imag.a.1345
Causal evidence for dorsal stream involvement in object shape recognition: A tractography-guided ccPAS Registered Report study.
Journal: Imaging neuroscience (Cambridge, Mass.)
In common: 8 references
[5] doi:10.7554/elife.98351 [code]
An image-computable model of speeded decision-making.
Journal: eLife
In common: PsychoPy, pandas, cognitive, 6 references
[6] doi:10.1371/journal.pone.0303796
Neural correlates underlying local and global processing during visual search across adulthood.
Journal: PloS one
In common: cognitive, 6 references
[7] doi:10.3390/brainsci14020146
Extensive Visual Training in Adulthood Reduces an Implicit Neural Marker of the Face Inversion Effect.
Journal: Brain sciences
In common: 6 references
[8] doi:10.3389/fpsyg.2022.1039172 [code]
A practical introduction to using the drift diffusion model of decision-making in cognitive psychology, neuroscience, and health sciences.
Journal: Frontiers in psychology
In common: ggplot2, tidyverse, cognitive, 6 references
[9] doi:10.1038/s41467-022-33240-w [code]
Local features drive identity responses in macaque anterior face patches.
Journal: Nature communications
In common: 5 references
[10] doi:10.1162/imag_a_00106 [code]
Electric-field-based dosing for TMS.
Journal: Imaging neuroscience (Cambridge, Mass.)
In common: cognitive, 5 references

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.

Add the badge to the code's README

OSCR: the badge of this paper

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 -->
[![OSCR](https://openscicode.org/badge/doi/10.1371/journal.pone.0343776.svg)](https://openscicode.org/badge/doi/10.1371/journal.pone.0343776)
<!-- oscr-badge:end -->
reStructuredText
.. oscr-badge:start

.. image:: https://openscicode.org/badge/doi/10.1371/journal.pone.0343776.svg
   :target: https://openscicode.org/badge/doi/10.1371/journal.pone.0343776
   :alt: OSCR

.. oscr-badge:end
HTML
<!-- oscr-badge:start -->
<a href="https://openscicode.org/badge/doi/10.1371/journal.pone.0343776"><img src="https://openscicode.org/badge/doi/10.1371/journal.pone.0343776.svg" alt="OSCR"></a>
<!-- oscr-badge:end -->

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)

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