OSCR

Distinct gradients of cortical architecture capture visual representations and behavior across the lifespan.

Code ↔ Paper

11 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 11 matches
  1. [1] § Methods › Data analysis › Behavioral relevance of the architectural gradients ↔ scripts/paper_figure/data_for_paper_20230720.ipynb, lines 917 to 970 · score 0.99 · nonverbal episodic memory, cognitive flexibility, spatial orientation processing, sustained attention, fluid intelligence, inhibitory control · Report a mismatch
  2. [2] § Methods › Data analysis › Definition of human visual cortex ↔ scripts/plot_tmp.ipynb, lines 912 to 960 · score 0.94 · V3CD, ProS, VMV2, DVT, IPS1, Pm · Report a mismatch
  3. [3] § Methods › Data analysis › Behavioral relevance of the architectural gradients ↔ lib/predefine.py, lines 47 to 84 · score 0.94 · episodic memory, fluid intelligence, emotional processes, working memory, contrast sensitivity, spatial orientation · Report a mismatch
  4. [4] § Results ↔ scripts/paper_figure/data_for_paper_20230720.ipynb, lines 917 to 970 · score 0.92 · nonverbal episodic memory, spatial orientation processing, vocabulary comprehension, fluid intelligence, inhibitory control, visual acuity · Report a mismatch
  5. [5] § Methods › Data analysis › Functional significance of the architectural gradients ↔ lib/algo.py, lines 738 to 782 · score 0.77 · Fourier transformed, low frequency band, fALFF, amplitudes, sum, power · Report a mismatch
  6. [6] § Results ↔ lib/predefine.py, lines 47 to 84 · score 0.77 · episodic memory, fluid intelligence, spatial orientation, visual acuity, vision, scores · Report a mismatch
  7. [7] § Methods › Data analysis › Functional significance of the architectural gradients ↔ scripts/calc_aff.py, lines 40 to 95 · score 0.67 · Fourier transformed, frequency band, amplitudes, sum, power, ratio · Report a mismatch
  8. [8] § Methods › Data analysis › The global hierarchy of architectural gradients ↔ lib/predefine.py, lines 438 to 474 · score 0.61 · PeEc, V8, FFC, VVC, PIT, TF · Report a mismatch
  9. [9] § Methods › Data analysis › Functional significance of the architectural gradients ↔ scripts/calc_predict.py, lines 728 to 828 · score 0.51 · Logistic regression, trained, accuracy, CV, classifiers, HCP MMP · Report a mismatch
  10. [10] § Results ↔ lib/algo.py, lines 738 to 782 · score 0.51 · low frequency fluctuation, fALFF, fractional, amplitude · Report a mismatch
  11. [11] § Results ↔ plotEntorhinalPrf.m, lines 20 to 77 · score 0.51 · pRFs, variance explained, hemispheres, eccentricity · 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 · 657 lines · 25 KB · GPL-3.0 · 3 matches

  1. import numpy as np
  2. import pandas as pd
  3. import nibabel as nib
  4. from scipy.io import loadmat
  5. from os.path import join as pjoin
  6. from magicbox.io.io import CiftiReader
  7. proj_dir = '/nfs/z1/userhome/ChenXiaYu/workingdir/study/visual_dev'
  8. meas2color = {
  9. 'Myelination': 'cornflowerblue', 'Thickness': 'limegreen',
  10. 'PC1': 'purple', 'PC2': 'orange'}
  11. beh_name2abbr = {
  12. 'CogFluidComp_Unadj': 'FluidCog', 'CogCrystalComp_Unadj': 'CrystalCog',
  13. 'CogTotalComp_Unadj': 'TotalCog', 'PicSeq_Unadj': 'PicSeq',
  14. 'CardSort_Unadj': 'CardSort', 'Flanker_Unadj': 'Flanker',
  15. 'ReadEng_Unadj': 'ReadEng', 'PicVocab_Unadj': 'PicVocab',
  16. 'ProcSpeed_Unadj': 'ProcSpeed', 'ListSort_Unadj': 'ListSort'}
  17. # 所有属于Cognition的测量变量
  18. cognition_cols = [
  19. 'PicSeq_Unadj', 'PicSeq_AgeAdj', 'CardSort_Unadj',
  20. 'CardSort_AgeAdj', 'Flanker_Unadj', 'Flanker_AgeAdj',
  21. 'PMAT24_A_CR', 'PMAT24_A_SI', 'PMAT24_A_RTCR', 'ReadEng_Unadj',
  22. 'ReadEng_AgeAdj', 'PicVocab_Unadj', 'PicVocab_AgeAdj',
  23. 'ProcSpeed_Unadj', 'ProcSpeed_AgeAdj', 'DDisc_SV_1mo_200',
  24. 'DDisc_SV_6mo_200', 'DDisc_SV_1yr_200', 'DDisc_SV_3yr_200',
  25. 'DDisc_SV_5yr_200', 'DDisc_SV_10yr_200', 'DDisc_SV_1mo_40K',
  26. 'DDisc_SV_6mo_40K', 'DDisc_SV_1yr_40K', 'DDisc_SV_3yr_40K',
  27. 'DDisc_SV_5yr_40K', 'DDisc_SV_10yr_40K', 'DDisc_AUC_200',
  28. 'DDisc_AUC_40K', 'VSPLOT_TC', 'VSPLOT_CRTE', 'VSPLOT_OFF',
  29. 'SCPT_TP', 'SCPT_TN', 'SCPT_FP', 'SCPT_FN', 'SCPT_TPRT',
  30. 'SCPT_SEN', 'SCPT_SPEC', 'SCPT_LRNR', 'IWRD_TOT', 'IWRD_RTC',
  31. 'ListSort_Unadj', 'ListSort_AgeAdj', 'CogFluidComp_Unadj',
  32. 'CogFluidComp_AgeAdj', 'CogEarlyComp_Unadj', 'CogEarlyComp_AgeAdj',
  33. 'CogTotalComp_Unadj', 'CogTotalComp_AgeAdj',
  34. 'CogCrystalComp_Unadj', 'CogCrystalComp_AgeAdj']
  35. # 所有属于Sensory的测量变量
  36. sensory_cols = [
  37. 'Noise_Comp', 'Odor_Unadj', 'Odor_AgeAdj', 'PainIntens_RawScore',
  38. 'PainInterf_Tscore', 'Taste_Unadj', 'Taste_AgeAdj', 'Color_Vision',
  39. 'Eye', 'EVA_Num', 'EVA_Denom', 'Correction', 'Mars_Log_Score',
  40. 'Mars_Errs', 'Mars_Final']
  41. # 视觉相关行为类型到其测量变量的映射
  42. vis_beh_domain2meas = {
  43. 'Episodic Memory': ['PicSeq_Unadj', 'PicSeq_AgeAdj'],
  44. 'Fluid Intelligence': ['PMAT24_A_CR', 'PMAT24_A_SI', 'PMAT24_A_RTCR',
  45. 'PMAT24_CR/RT', 'PMAT24_CR/SI'],
  46. 'Processing Speed': ['ProcSpeed_Unadj', 'ProcSpeed_AgeAdj'],
  47. 'Spatial Orientation': ['VSPLOT_TC', 'VSPLOT_CRTE', 'VSPLOT_OFF',
  48. 'VSPLOT_CR/RT', 'VSPLOT_CR/OFF'],
  49. 'Emotion Recognition': ['ER40_CR', 'ER40_CRT', 'ER40ANG', 'ER40FEAR',
  50. 'ER40HAP', 'ER40NOE', 'ER40SAD', 'ER40_CR/RT'],
  51. 'Color Vision': ['Color_Vision', 'Eye'],
  52. 'Contrast Sensitivity': ['Mars_Log_Score', 'Mars_Errs', 'Mars_Final'],
  53. 'Visual Acuity': ['EVA_Num', 'EVA_Denom', 'Correction'],
  54. 'Emotion Processing (MRI)': [
  55. 'Emotion_Task_Acc', 'Emotion_Task_Median_RT', 'Emotion_Task_CR/RT',
  56. 'Emotion_Task_Face_Acc', 'Emotion_Task_Face_Median_RT',
  57. 'Emotion_Task_Shape_Acc', 'Emotion_Task_Shape_Median_RT'],
  58. 'Working Memory (MRI)': [
  59. 'WM_Task_Acc', 'WM_Task_Median_RT', 'WM_Task_CR/RT',
  60. 'WM_Task_2bk_Acc', 'WM_Task_2bk_Median_RT', 'WM_Task_2bk_CR/RT',
  61. 'WM_Task_0bk_Acc', 'WM_Task_0bk_Median_RT', 'WM_Task_0bk_CR/RT',
  62. 'WM_Task_0bk_Body_Acc', 'WM_Task_0bk_Body_Acc_Target', 'WM_Task_0bk_Body_Acc_Nontarget',
  63. 'WM_Task_0bk_Face_Acc', 'WM_Task_0bk_Face_Acc_Target', 'WM_Task_0bk_Face_ACC_Nontarget',
  64. 'WM_Task_0bk_Place_Acc', 'WM_Task_0bk_Place_Acc_Target', 'WM_Task_0bk_Place_Acc_Nontarget',
  65. 'WM_Task_0bk_Tool_Acc', 'WM_Task_0bk_Tool_Acc_Target', 'WM_Task_0bk_Tool_Acc_Nontarget',
  66. 'WM_Task_2bk_Body_Acc', 'WM_Task_2bk_Body_Acc_Target', 'WM_Task_2bk_Body_Acc_Nontarget',
  67. 'WM_Task_2bk_Face_Acc', 'WM_Task_2bk_Face_Acc_Target', 'WM_Task_2bk_Face_Acc_Nontarget',
  68. 'WM_Task_2bk_Place_Acc', 'WM_Task_2bk_Place_Acc_Target', 'WM_Task_2bk_Place_Acc_Nontarget',
  69. 'WM_Task_2bk_Tool_Acc', 'WM_Task_2bk_Tool_Acc_Target', 'WM_Task_2bk_Tool_Acc_Nontarget',
  70. 'WM_Task_0bk_Body_Median_RT', 'WM_Task_0bk_Body_Median_RT_Target', 'WM_Task_0bk_Body_Median_RT_Nontarget',
  71. 'WM_Task_0bk_Face_Median_RT', 'WM_Task_0bk_Face_Median_RT_Target', 'WM_Task_0bk_Face_Median_RT_Nontarget',
  72. 'WM_Task_0bk_Place_Median_RT', 'WM_Task_0bk_Place_Median_RT_Target', 'WM_Task_0bk_Place_Median_RT_Nontarget',
  73. 'WM_Task_0bk_Tool_Median_RT', 'WM_Task_0bk_Tool_Median_RT_Target', 'WM_Task_0bk_Tool_Median_RT_Nontarget',
  74. 'WM_Task_2bk_Body_Median_RT', 'WM_Task_2bk_Body_Median_RT_Target', 'WM_Task_2bk_Body_Median_RT_Nontarget',
  75. 'WM_Task_2bk_Face_Median_RT', 'WM_Task_2bk_Face_Median_RT_Target', 'WM_Task_2bk_Face_Median_RT_Nontarget',
  76. 'WM_Task_2bk_Place_Median_RT', 'WM_Task_2bk_Place_Median_RT_Target', 'WM_Task_2bk_Place_Median_RT_Nontarget',
  77. 'WM_Task_2bk_Tool_Median_RT', 'WM_Task_2bk_Tool_Median_RT_Target', 'WM_Task_2bk_Tool_Median_RT_Nontarget']
  78. }
  79. # 行为正确率除以反应时的命名映射
  80. beh_CR_div_RT_dict = {
  81. 'PMAT24_CR/RT': ('PMAT24_A_CR', 'PMAT24_A_RTCR'),
  82. 'PMAT24_CR/SI': ('PMAT24_A_CR', 'PMAT24_A_SI'),
  83. 'VSPLOT_CR/RT': ('VSPLOT_TC', 'VSPLOT_CRTE'),
  84. 'VSPLOT_CR/OFF': ('VSPLOT_TC', 'VSPLOT_OFF'),
  85. 'ER40_CR/RT': ('ER40_CR', 'ER40_CRT'),
  86. 'Emotion_Task_CR/RT': ('Emotion_Task_Acc', 'Emotion_Task_Median_RT'),
  87. 'WM_Task_CR/RT': ('WM_Task_Acc', 'WM_Task_Median_RT'),
  88. 'WM_Task_2bk_CR/RT': ('WM_Task_2bk_Acc', 'WM_Task_2bk_Median_RT'),
  89. 'WM_Task_0bk_CR/RT': ('WM_Task_0bk_Acc', 'WM_Task_0bk_Median_RT')
  90. }
  91. # >>>CIFTI brain structure
  92. hemi2stru = {
  93. 'lh': 'CIFTI_STRUCTURE_CORTEX_LEFT',
  94. 'rh': 'CIFTI_STRUCTURE_CORTEX_RIGHT'
  95. }
  96. hemi2Hemi = {'lh': 'L', 'rh': 'R'}
  97. Hemi2stru = {
  98. 'L': 'CIFTI_STRUCTURE_CORTEX_LEFT',
  99. 'R': 'CIFTI_STRUCTURE_CORTEX_RIGHT'
  100. }
  101. # CIFTI brain structure<<<
  102. # >>>32k_fs_LR CIFTI
  103. All_count_32k = 91282
  104. LR_count_32k = 59412
  105. L_offset_32k = 0
  106. L_count_32k = 29696
  107. R_offset_32k = 29696
  108. R_count_32k = 29716
  109. # 左脑枕极的顶点号
  110. # 左脑枕极及其1阶近邻见data/L_OccipitalPole.label
  111. L_OccipitalPole_32k = 23908
  112. # 右脑枕极的顶点号
  113. # 右脑枕极及其1阶近邻见data/R_OccipitalPole.label
  114. R_OccipitalPole_32k = 23868
  115. # 左脑MT中心顶点号
  116. # 左脑MT中心及其1阶近邻见data/L_MT.label
  117. L_MT_32k = 15293
  118. # 右脑MT中心顶点号
  119. # 右脑MT中心及其1阶近邻见data/R_MT.label
  120. R_MT_32k = 15291
  121. # 32k_fs_LR CIFTI<<<
  122. # >>>HCP MMP1.0
  123. mmp_map_file = '/nfs/z1/atlas/multimodal_glasser/surface/'\
  124. 'MMP_mpmLR32k.dlabel.nii'
  125. mmp_roilbl_file = '/nfs/z1/atlas/multimodal_glasser/roilbl_mmp.csv'
  126. def get_name_label_of_MMP():
  127. """
  128. 获取HCP MMP1.0的ROI names和labels
  129. """
  130. df = pd.read_csv(mmp_roilbl_file, skiprows=1, header=None)
  131. n_roi = df.shape[0] * 2
  132. names = np.zeros(n_roi, dtype=np.object_)
  133. labels = np.zeros(n_roi, dtype=np.uint16)
  134. for idx in df.index:
  135. names[idx] = df.loc[idx, 1][:-4]
  136. names[idx+180] = df.loc[idx, 0][:-4]
  137. labels[idx] = idx + 1
  138. labels[idx+180] = idx + 181
  139. return names, labels
  140. mmp_name2label = {}
  141. mmp_label2name = {}
  142. for name, lbl in zip(*get_name_label_of_MMP()):
  143. mmp_name2label[name] = lbl
  144. mmp_label2name[lbl] = name
  145. # HCP MMP1.0<<<
  146. # >>>ColeAnticevicNetPartition
  147. cole_net_assignment_file = '/nfs/z1/atlases/ColeAnticevicNetPartition/'\
  148. 'cortex_parcel_network_assignments.mat'
  149. cole_names = ['Primary Visual', 'Secondary Visual', 'Somatomotor',
  150. 'Cingulo-Opercular', 'Dorsal-attention', 'Language',
  151. 'Frontoparietal', 'Auditory', 'Default', 'Posterior Multimodal',
  152. 'Ventral Multimodal', 'Orbito-Affective']
  153. cole_labels = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
  154. cole_name2label = {}
  155. cole_label2name = {}
  156. for name, lbl in zip(cole_names, cole_labels):
  157. cole_name2label[name] = lbl
  158. cole_label2name[lbl] = name
  159. def get_parcel2label_by_ColeName(net_names):
  160. """
  161. 根据Cole Network的名字提取所有包含的parcel及其label
  162. Args:
  163. net_names (str|list): ColeNet names
  164. If is str, one ColeNet name.
  165. If is list, a list of ColeNet names.
  166. 12 valid names: Primary Visual, Secondary Visual,
  167. Somatomotor, Cingulo-Opercular, Dorsal-attention,
  168. Language, Frontoparietal, Auditory, Default,
  169. Posterior Multimodal, Ventral Multimodal, Orbito-Affective
  170. """
  171. if isinstance(net_names, str):
  172. net_names = [net_names]
  173. elif isinstance(net_names, list):
  174. pass
  175. else:
  176. raise TypeError("Please input str or list!")
  177. net_labels = [cole_name2label[name] for name in net_names]
  178. net_lbl_vec = loadmat(cole_net_assignment_file)['netassignments'][:, 0]
  179. net_lbl_vec = np.r_[net_lbl_vec[180:], net_lbl_vec[:180]]
  180. idx_vec = np.zeros_like(net_lbl_vec, dtype=bool)
  181. for lbl in net_labels:
  182. idx_vec = np.logical_or(idx_vec, net_lbl_vec == lbl)
  183. mmp_labels = np.where(idx_vec)[0] + 1
  184. parcel2label = {}
  185. for lbl in mmp_labels:
  186. parcel2label[mmp_label2name[lbl]] = lbl
  187. return parcel2label
  188. # ColeAnticevicNetPartition<<<
  189. # >>>FFA MPM from my HCP-YA project
  190. ffa_names = ['R_pFus-face', 'R_mFus-face', 'L_pFus-face', 'L_mFus-face']
  191. ffa_labels = [2, 3, 5, 6]
  192. ffa_name2label = {}
  193. ffa_label2name = {}
  194. for name, lbl in zip(ffa_names, ffa_labels):
  195. ffa_name2label[name] = lbl
  196. ffa_label2name[lbl] = name
  197. # FFA MPM from my HCP-YA project<<<
  198. # >>>(Wang et al, 2015) visual ROIs
  199. wang2015_file = '/nfs/z1/HCP/HCPYA/S1200_7T_Retinotopy_Pr_9Zkk/'\
  200. 'S1200_7T_Retinotopy181/MNINonLinear/fsaverage_LR32k/'\
  201. 'lr.wang2015.32k_fs_LR.dlabel.nii'
  202. wang2015_name2label = {}
  203. wang2015_label2name = {}
  204. for k, v in CiftiReader(wang2015_file).label_tables()[0].items():
  205. if k == 0:
  206. continue
  207. wang2015_name2label[f'L_{v.label}'] = k + 25
  208. wang2015_name2label[f'R_{v.label}'] = k
  209. for k, v in wang2015_name2label.items():
  210. wang2015_label2name[v] = k
  211. # (Haak and Beckmann, 2018, Cortex)
  212. wang2015_early = ['V1v', 'V1d', 'V2v', 'V2d', 'V3v', 'V3d']
  213. wang2015_dorsal = ['V3A', 'V3B', 'IPS0', 'IPS1', 'IPS2', 'IPS3', 'IPS4', 'IPS5', 'SPL1']
  214. wang2015_lateral = ['LO1', 'LO2', 'TO1', 'TO2']
  215. wang2015_ventral = ['hV4', 'VO1', 'VO2', 'PHC1', 'PHC2']
  216. # (Wang et al, 2015) visual ROIs<<<
  217. # >>>S1200_7T_Retinotopy
  218. s1200_avg_eccentricity = '/nfs/z1/HCP/HCPYA/S1200_7T_Retinotopy_Pr_9Zkk/'\
  219. 'S1200_7T_Retinotopy181/MNINonLinear/fsaverage_LR32k/'\
  220. 'S1200_7T_Retinotopy181.Fit1_Eccentricity_MSMAll.32k_fs_LR.dscalar.nii'
  221. s1200_avg_angle = '/nfs/z1/HCP/HCPYA/S1200_7T_Retinotopy_Pr_9Zkk/'\
  222. 'S1200_7T_Retinotopy181/MNINonLinear/fsaverage_LR32k/'\
  223. 'S1200_7T_Retinotopy181.Fit1_PolarAngle_MSMAll.32k_fs_LR.dscalar.nii'
  224. s1200_avg_anglemirror = '/nfs/z1/HCP/HCPYA/S1200_7T_Retinotopy_Pr_9Zkk/'\
  225. 'S1200_7T_Retinotopy181/MNINonLinear/fsaverage_LR32k/'\
  226. 'S1200_7T_Retinotopy181.Fit1_PolarAngleMirror_MSMAll.32k_fs_LR.dscalar.nii'
  227. s1200_avg_RFsize = '/nfs/z1/HCP/HCPYA/S1200_7T_Retinotopy_Pr_9Zkk/'\
  228. 'S1200_7T_Retinotopy181/MNINonLinear/fsaverage_LR32k/'\
  229. 'S1200_7T_Retinotopy181.Fit1_ReceptiveFieldSize_MSMAll.32k_fs_LR.dscalar.nii'
  230. s1200_avg_R2 = '/nfs/z1/HCP/HCPYA/S1200_7T_Retinotopy_Pr_9Zkk/'\
  231. 'S1200_7T_Retinotopy181/MNINonLinear/fsaverage_LR32k/'\
  232. 'S1200_7T_Retinotopy181.Fit1_R2_MSMAll.32k_fs_LR.dscalar.nii'
  233. # S1200_7T_Retinotopy<<<
  234. # >>>dataset
  235. s1200_avg_dir = '/nfs/z1/HCP/HCPYA/HCP_S1200_GroupAvg_v1'
  236. s1200_avg_corrThickness = pjoin(
  237. s1200_avg_dir, 'S1200.corrThickness_MSMAll.32k_fs_LR.dscalar.nii'
  238. )
  239. s1200_avg_thickness = pjoin(
  240. s1200_avg_dir, 'S1200.thickness_MSMAll.32k_fs_LR.dscalar.nii'
  241. )
  242. s1200_avg_myelin = pjoin(
  243. s1200_avg_dir, 'S1200.MyelinMap_BC_MSMAll.32k_fs_LR.dscalar.nii'
  244. )
  245. s1200_avg_curv = pjoin(
  246. s1200_avg_dir, 'S1200.curvature_MSMAll.32k_fs_LR.dscalar.nii'
  247. )
  248. s1200_1096_corrThickness = pjoin(
  249. s1200_avg_dir, 'S1200.All.corrThickness_MSMAll.32k_fs_LR.dscalar.nii'
  250. )
  251. s1200_1096_thickness = pjoin(
  252. s1200_avg_dir, 'S1200.All.thickness_MSMAll.32k_fs_LR.dscalar.nii'
  253. )
  254. s1200_1096_myelin = pjoin(
  255. s1200_avg_dir, 'S1200.All.MyelinMap_BC_MSMAll.32k_fs_LR.dscalar.nii'
  256. )
  257. s1200_1096_curv = pjoin(
  258. s1200_avg_dir, 'S1200.All.curvature_MSMAll.32k_fs_LR.dscalar.nii'
  259. )
  260. s1200_1096_va = pjoin(
  261. s1200_avg_dir, 'S1200.All.midthickness_MSMAll_va.32k_fs_LR.dscalar.nii'
  262. )
  263. s1200_midthickness_L = pjoin(
  264. s1200_avg_dir, 'S1200.L.midthickness_MSMAll.32k_fs_LR.surf.gii'
  265. )
  266. s1200_midthickness_R = pjoin(
  267. s1200_avg_dir, 'S1200.R.midthickness_MSMAll.32k_fs_LR.surf.gii'
  268. )
  269. s1200_MedialWall = pjoin(
  270. s1200_avg_dir, 'Human.MedialWall_Conte69.32k_fs_LR.dlabel.nii'
  271. )
  272. s1200_group_rsfc_mat = '/nfs/z1/HCP/HCPYA/HCP_S1200_1003_rfMRI_MSMAll_'\
  273. 'groupPCA_d4500ROW_zcorr.dconn.nii'
  274. dataset_name2dir = {
  275. 'HCPD': '/nfs/z1/HCP/HCPD',
  276. 'HCPY': '/nfs/z1/HCP/HCPYA',
  277. 'HCPA': '/nfs/z1/HCP/HCPA'
  278. }
  279. # datatset<<<
  280. def get_rois(name):
  281. # >>>ColeAnticevicNetPartition
  282. if name == 'Cole-vis-L':
  283. # ColeNet中被选为视觉相关的网络的所有ROI(左脑)
  284. nets = ['Primary Visual', 'Secondary Visual',
  285. 'Posterior Multimodal', 'Ventral Multimodal']
  286. parcel2label = get_parcel2label_by_ColeName(nets)
  287. rois = [i for i in parcel2label.keys() if i.startswith('L_')]
  288. elif name == 'Cole-vis-R':
  289. # ColeNet中被选为视觉相关的网络的所有ROI(右脑)
  290. nets = ['Primary Visual', 'Secondary Visual',
  291. 'Posterior Multimodal', 'Ventral Multimodal']
  292. parcel2label = get_parcel2label_by_ColeName(nets)
  293. rois = [i for i in parcel2label.keys() if i.startswith('R_')]
  294. elif name == 'Cole-vis-L1':
  295. # ColeNet中被选为视觉相关的网络的所有ROI(左脑) + L_STV
  296. nets = ['Primary Visual', 'Secondary Visual',
  297. 'Posterior Multimodal', 'Ventral Multimodal']
  298. parcel2label = get_parcel2label_by_ColeName(nets)
  299. rois = [i for i in parcel2label.keys() if i.startswith('L_')]
  300. rois.append('L_STV')
  301. # ColeAnticevicNetPartition<<<
  302. # >>>HCP-MMP1_visual-cortex2
  303. elif name == 'MMP-vis2-L':
  304. # HCP-MMP1_visual-cortex2的所有ROI(左脑)
  305. df = pd.read_csv(pjoin(proj_dir, 'data/HCP/HCP-MMP1_visual-cortex2.csv'))
  306. rois = []
  307. for idx, rid in enumerate(df['ID_in_22Region']):
  308. if np.isnan(rid):
  309. continue
  310. rois.append(f"L_{df.loc[idx, 'area_name']}")
  311. elif name == 'MMP-vis2-R':
  312. # HCP-MMP1_visual-cortex2的所有ROI(右脑)
  313. df = pd.read_csv(pjoin(proj_dir, 'data/HCP/HCP-MMP1_visual-cortex2.csv'))
  314. rois = []
  315. for idx, rid in enumerate(df['ID_in_22Region']):
  316. if np.isnan(rid):
  317. continue
  318. rois.append(f"R_{df.loc[idx, 'area_name']}")
  319. elif name.startswith('MMP-vis2-G'):
  320. # name的格式是以MMP-vis2-G开头,后面跟的是Group的编号n
  321. # Group n在HCP-MMP1_visual-cortex2中的的所有ROI(不区分左右)
  322. trg = int(name[10:])
  323. df = pd.read_csv(pjoin(proj_dir, 'data/HCP/HCP-MMP1_visual-cortex2.csv'))
  324. rois = []
  325. for idx, rid in enumerate(df['ID_in_22Region']):
  326. if rid == trg:
  327. rois.append(df.loc[idx, 'area_name'])
  328. # HCP-MMP1_visual-cortex2<<<
  329. # >>>HCP-MMP1_visual-cortex3
  330. elif name == 'MMP-vis3-L':
  331. # HCP-MMP1_visual-cortex3的所有ROI(左脑)
  332. df = pd.read_csv(pjoin(proj_dir, 'data/HCP/HCP-MMP1_visual-cortex3.csv'))
  333. rois = []
  334. for idx, rid in enumerate(df['ID_in_22Region']):
  335. if np.isnan(rid):
  336. continue
  337. rois.append(f"L_{df.loc[idx, 'area_name']}")
  338. elif name == 'MMP-vis3-R':
  339. # HCP-MMP1_visual-cortex3的所有ROI(右脑)
  340. df = pd.read_csv(pjoin(proj_dir, 'data/HCP/HCP-MMP1_visual-cortex3.csv'))
  341. rois = []
  342. for idx, rid in enumerate(df['ID_in_22Region']):
  343. if np.isnan(rid):
  344. continue
  345. rois.append(f"R_{df.loc[idx, 'area_name']}")
  346. elif name.startswith('MMP-vis3-G'):
  347. # name的格式是以MMP-vis3-G开头,后面跟的是Group的编号n
  348. # Group n在HCP-MMP1_visual-cortex3中的的所有ROI(不区分左右)
  349. trg = int(name[10:])
  350. df = pd.read_csv(pjoin(proj_dir, 'data/HCP/HCP-MMP1_visual-cortex3.csv'))
  351. rois = []
  352. for idx, rid in enumerate(df['ID_in_22Region']):
  353. if rid == trg:
  354. rois.append(df.loc[idx, 'area_name'])
  355. # HCP-MMP1_visual-cortex3<<<
  356. # >>>(Wang et al, 2015) visual ROIs
  357. elif name == 'Wang2015-L':
  358. rois = [i for i in wang2015_name2label.keys() if i.startswith('L_')]
  359. elif name == 'Wang2015-R':
  360. rois = [i for i in wang2015_name2label.keys() if i.startswith('R_')]
  361. elif name == 'Wang2015-early-L':
  362. rois = [f'L_{i}' for i in wang2015_early]
  363. elif name == 'Wang2015-early-R':
  364. rois = [f'R_{i}' for i in wang2015_early]
  365. elif name == 'Wang2015-dorsal-L':
  366. rois = [f'L_{i}' for i in wang2015_dorsal]
  367. elif name == 'Wang2015-dorsal-R':
  368. rois = [f'R_{i}' for i in wang2015_dorsal]
  369. elif name == 'Wang2015-lateral-L':
  370. rois = [f'L_{i}' for i in wang2015_lateral]
  371. elif name == 'Wang2015-lateral-R':
  372. rois = [f'R_{i}' for i in wang2015_lateral]
  373. elif name == 'Wang2015-ventral-L':
  374. rois = [f'L_{i}' for i in wang2015_ventral]
  375. elif name == 'Wang2015-ventral-R':
  376. rois = [f'R_{i}' for i in wang2015_ventral]
  377. # (Wang et al, 2015) visual ROIs<<<
  378. # >>>visual path way
  379. elif name == 'rPath1':
  380. rois = ['R_V1', 'R_V2', 'R_V3', 'R_V4', 'R_PIT', 'R_FFC', 'R_TF', 'R_PeEc']
  381. elif name == 'rPath2':
  382. rois = ['R_V1', 'R_V2', 'R_V3', 'R_V4', 'R_V8', 'R_VVC', 'R_TF', 'R_PeEc']
  383. elif name == 'rPath3':
  384. rois = ['R_V1', 'R_V2', 'R_V3', 'R_V4', 'R_PIT', 'R_pFus-face', 'R_mFus-face', 'R_TF', 'R_PeEc']
  385. elif name == 'rPath4':
  386. rois = ['R_V1', 'R_V2', 'R_MT', 'R_STV', 'R_VIP']
  387. elif name == 'rPath5':
  388. rois = ['R_V1', 'R_V2', 'R_V3', 'R_STV', 'R_VIP']
  389. elif name == 'rPath6':
  390. rois = ['R_V1', 'R_MT', 'R_STV', 'R_VIP']
  391. elif name == 'rPath7':
  392. rois = ['R_V1', 'R_V2', 'R_V3', 'R_V3A', 'R_V7', 'R_IPS1', 'R_VIP']
  393. elif name == 'Hierarchy1':
  394. rois = ['V1', 'V2', 'V3', 'V3B', 'V4', 'MT', 'VIP', 'FST', 'TF']
  395. elif name == 'Hierarchy2':
  396. rois = ['V1', 'V2', 'V3', 'V4', 'PIT', 'VVC', 'FFC', 'TF', 'PeEc']
  397. elif name == 'Hierarchy3':
  398. rois = ['V1', 'V2', 'V3', 'V4', 'V8', 'PIT', 'VVC', 'FFC', 'TF', 'PeEc']
  399. elif name == 'Hierarchy4':
  400. rois = ['V1', 'V2', 'V3', 'V4', 'V8', 'PIT', 'VVC', 'FFA1', 'FFA2', 'TF', 'PeEc']
  401. elif name == 'Hierarchy5':
  402. rois = ['V1', 'V2', 'V3', 'V4', 'V8', 'PIT', 'VVC', 'pFFA', 'mFFA', 'TF', 'PeEc']
  403. # visual path way<<<
  404. else:
  405. raise ValueError('Not supported name')
  406. return rois
  407. class Atlas:
  408. """
  409. atlas_name: atlas name
  410. maps: (n_map, n_vtx) numpy array
  411. roi2label: key - ROI name; value - ROI label
  412. """
  413. def __init__(self, atlas_name=None):
  414. """
  415. Args:
  416. atlas_name (str, optional): atlas name.
  417. Defaults to None.
  418. """
  419. if atlas_name is None:
  420. self.atlas_name = None
  421. self.maps = None
  422. self.roi2label = None
  423. self.n_roi = None
  424. else:
  425. self.set(atlas_name)
  426. assert self.maps.shape == (1, LR_count_32k)
  427. def set(self, atlas_name):
  428. """
  429. Set atlas
  430. Args:
  431. atlas_name (str): atlas name
  432. 'cortex': 左右cortex分别作为两个大ROI
  433. 'HCP-MMP': HCP MMP1.0的所有ROI
  434. 'FFA': MPMs of pFus- and mFus-face from my HCP-YA FFA project
  435. 'Wang2015': (Wang et al., 2015)中定的视觉区
  436. """
  437. self.atlas_name = atlas_name
  438. if atlas_name == 'cortex':
  439. self.maps = np.ones((1, LR_count_32k), dtype=np.uint8)
  440. self.maps[0, R_offset_32k:(R_offset_32k+R_count_32k)] = 2
  441. self.roi2label = {'L_cortex': 1, 'R_cortex': 2}
  442. elif atlas_name == 'HCP-MMP':
  443. self.maps = nib.load(mmp_map_file).get_fdata()
  444. self.roi2label = mmp_name2label
  445. elif atlas_name == 'FFA':
  446. fsr_map = nib.load(
  447. pjoin(proj_dir, 'data/FFA_mpmLR32k.dlabel.nii')).get_fdata()
  448. self.maps = np.zeros_like(fsr_map, dtype=np.uint8)
  449. for lbl in ffa_name2label.values():
  450. self.maps[fsr_map == lbl] = lbl
  451. self.roi2label = ffa_name2label
  452. elif atlas_name == 'Wang2015':
  453. reader = CiftiReader(wang2015_file)
  454. map_L = reader.get_data(hemi2stru['lh'])
  455. map_R = reader.get_data(hemi2stru['rh'])
  456. lbl_tab = reader.label_tables()[0]
  457. for k in lbl_tab.keys():
  458. if k == 0:
  459. continue
  460. map_L[map_L == k] = k + 25
  461. self.maps = np.c_[map_L, map_R]
  462. self.roi2label = wang2015_name2label
  463. elif atlas_name == 'MMP-vis3-EDLV':
  464. reader = CiftiReader(pjoin(
  465. proj_dir, 'data/HCP/HCP-MMP1_visual-cortex3_EDLV.dlabel.nii'
  466. ))
  467. lbl_tab = reader.label_tables()[0]
  468. self.roi2label = {}
  469. for k in lbl_tab.keys():
  470. if k == 0:
  471. continue
  472. self.roi2label[lbl_tab[k].label] = k
  473. self.maps = reader.get_data()
  474. else:
  475. raise ValueError(f'{atlas_name} is not supported at present!')
  476. self.n_roi = len(self.roi2label)
  477. def get_mask(self, roi_names, stru_range='cortex'):
  478. """
  479. 制定mask,将roi_names指定的ROI都设置为True,其它地方为False
  480. Args:
  481. roi_names (str | strings):
  482. 'LR': 指代所有左右脑的ROI
  483. 'L': 指代所有左脑的ROI
  484. 'R': 指代所有右脑的ROI
  485. stru_range (str):
  486. 'cortex': limited in LR_count_32k
  487. 'grayordinate': limited in All_count_32k
  488. """
  489. if isinstance(roi_names, str):
  490. roi_names = [roi_names]
  491. mask = np.zeros_like(self.maps, bool)
  492. for roi in roi_names:
  493. if roi == 'LR':
  494. for r, l in self.roi2label.items():
  495. if r.startswith('L_') or r.startswith('R_'):
  496. mask = np.logical_or(mask, self.maps == l)
  497. elif roi in ('L', 'R'):
  498. for r, l in self.roi2label.items():
  499. if r.startswith(f'{roi}_'):
  500. mask = np.logical_or(mask, self.maps == l)
  501. else:
  502. mask = np.logical_or(
  503. mask, self.maps == self.roi2label[roi])
  504. if stru_range == 'cortex':
  505. pass
  506. elif stru_range == 'grayordinate':
  507. mask = np.c_[mask, np.zeros((1, All_count_32k-LR_count_32k), bool)]
  508. else:
  509. raise ValueError('not supported stru_range:', stru_range)
  510. return mask
  511. class MedialWall:
  512. """
  513. medial wall in 32k_fs_LR space
  514. """
  515. def __init__(self, method=1):
  516. """
  517. Initialize medial wall vertices
  518. Args:
  519. method (int, optional): Defaults to 1.
  520. 1: 直接从存有MedialWall的dlabel文件中提取顶点号
  521. 2:找到HCP MMP1.0 atlas dlabel文件中略去的顶点号
  522. 这两种方法的结果是一致的
  523. """
  524. if method == 1:
  525. reader = CiftiReader(s1200_MedialWall)
  526. self.L_vertices = np.where(
  527. reader.get_data(hemi2stru['lh'])[0] == 1
  528. )[0].tolist()
  529. self.R_vertices = np.where(
  530. reader.get_data(hemi2stru['rh'])[0] == 1
  531. )[0].tolist()
  532. elif method == 2:
  533. reader = CiftiReader(mmp_map_file)
  534. _, _, L_shape, L_idx2vtx = reader.get_stru_pos(hemi2stru['lh'])
  535. self.L_vertices = sorted(
  536. set(range(L_shape[0])).difference(L_idx2vtx)
  537. )
  538. _, _, R_shape, R_idx2vtx = reader.get_stru_pos(hemi2stru['rh'])
  539. self.R_vertices = sorted(
  540. set(range(R_shape[0])).difference(R_idx2vtx)
  541. )
  542. else:
  543. raise ValueError
  544. def remove_from_faces(self, hemi, faces):
  545. """
  546. 去除faces中的medial wall顶点
  547. Args:
  548. hemi (str): hemisphere
  549. lh: left hemisphere
  550. rh: right hemisphere
  551. faces (ndarray): n_face x 3
  552. surface mesh顶点的三角连边关系
  553. Returns:
  554. [ndarray]: 去除medial wall之后的faces
  555. """
  556. if hemi == 'lh':
  557. medial_wall = self.L_vertices
  558. elif hemi == 'rh':
  559. medial_wall = self.R_vertices
  560. else:
  561. raise ValueError('hemi must be lh or rh')
  562. row_indices = ~np.any(np.in1d(
  563. faces.ravel(), medial_wall).reshape(faces.shape), 1)
  564. faces = faces[row_indices]
  565. return faces

predefine.py at commit 5544d58, under GPL-3.0 · at the source

Overview

Authors: Xiayu Chen1,2, Xingyu Liu1,3, Patricia Maria Hoyos4, Edan Daniel Hertz4, Jewelia K Yao4, Zonglei Zhen1,5, Jesse Gomez4,6
  1. Beijing Key Laboratory of Applied Experimental Psychology, Faculty of Psychology, Beijing Normal University, Beijing, China
  2. BGI-Shenzhen, Shenzhen, China
  3. Department of Psychology, School of Arts and Sciences, University of Pennsylvania, Philadelphia, United States
  4. Princeton Neuroscience Institute, Princeton University, Princeton, United States
  5. State Key Laboratory of Cognitive Neuroscience and Learning & IDG/McGovern Institute for Brain Research, Beijing Normal University, Beijing, China
  6. Psychology Department, Princeton University, Princeton, United States
Journal: eLife, volume 13, article RP102095
Dates: published online 30 October 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.7554/elife.102095 · PMID 42960830 · PMCID PMC13722415 · OpenAlex W4403647685
Open access: gold, a free copy (OpenAlex)
Status: code verified (how the code is found and verified)
Categories: structural MRI / diffusion (modality), human (organism), systems (subfield)
Methods: Spectral & time-frequency, Connectivity, Smoothing, state filtering, decompositions, Machine learning, Statistics, Preprocessing, fMRI & imaging
Keywords: Human
MeSH: Visual Cortex*, Adolescent, Adult, Aged, Child, Female, Humans, Magnetic Resonance Imaging, Male, Middle Aged, Young Adult (* major topic)
Topic: Visual perception and processing mechanisms (Cognitive Neuroscience, Neuroscience), according to OpenAlex
Funding: Brain Science and Brain-like Intelligence Technology - National Science and Technology Major Project (2021ZD0200500); National Natural Science Foundation of China (32571230); Princeton Neuroscience Institute (start-up funds)
Citations: not cited yet (Europe PMC); 111 references in the paper

Abstract

The microstructure of cells within the human cerebral cortex varies across the cortical ribbon, where changes in cytoarchitecture and myeloarchitecture are thought to endow each region of the cortex with its unique function. While fine-scale relative to a cell, these changes at the population level impact architectural properties of the cortex measurable in vivo by noninvasive MRI, such as the thickness and myelin content of the cortex. This raises the question of whether or not we can use these in vivo architectural measures to understand cortical organization, function, and development more broadly. Using the human visual cortex as a test bed, we demonstrated two architectural gradients, one in which cytoarchitecture and myeloarchitecture converge and another in which they diverge. These two gradients underlie the structural and functional topography of the visual cortex, even predicting the presence of new visual representations. Moreover, the two gradients show distinct visual behavior relevance and lifespan trajectory. These findings provide a more general framework for understanding the human cortex, showing that architectural gradients are a measurable fingerprint of functional organization and ontogenetic routines in the human brain.

Reproduced under the paper's license (CC BY), from the paper cited above.

Repositories

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

BNUCNL/VisualCortexGradient

License: GPL-3.0
State: the link answers, verified on 31 October 2026
Evidence: files inventoried
Commit: 5544d589dd0f8ed23b33c6b612cdc1653e6465fc, 26 November 2023
Languages: Python (36), Jupyter (14)
Size: 58 files, 50 scripts
Software Heritage: not archived
Found in: “Code availability”
Holds: README, license file, 14 notebooks
Not found: CITATION.cff, environment file, tests, continuous integration, documentation
Tools: NumPy (46 files), NiBabel (36 files), SciPy (30 files), pandas (28 files), Matplotlib (24 files), scikit-learn (10 files), statsmodels (5 files), seaborn (2 files), Connectome Workbench (2 files)
Availability: 1 check, the latest on 31 October 2026: the link answers
  • 31 October 2026: the link answers
52 files

gomezj/entorhinal_prf

License: none: the authors keep all their rights
State: the link answers, verified on 31 October 2026
Evidence: files inventoried
Commit: 6d64d29d02d09ef5c536998b4d1e6147380d7390, 20 November 2023
Languages: MATLAB (2)
Size: 5 files, 2 scripts
Software Heritage: archived
Found in: “Code availability”
Holds: README
Not found: license file, CITATION.cff, environment file, tests, continuous integration, documentation
Availability: 1 check, the latest on 31 October 2026: the link answers
  • 31 October 2026: the link answers
3 files

Code availability

The HCP data were preprocessed using the HCP-Pipeline analyses (https://github.com/Washington-University/HCPpipelines, Brown et al., 2026). Custom code for gradient analysis can be found at https://github.com/BNUCNL/VisualCortexGradient (copy archived at Chen, 2026). Code to reproduce pRF mapping figures can be found at https://github.com/gomezj/entorhinal_prf (copy archived at Gomez, 2023).

Reproduced under the paper's license (CC BY), from the paper cited above.

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:

  • 2 repositories of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
  • 52 scripts, each with its path and the digest of its content;
  • 11 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

The HCP datasets supporting this study are publicly available. HCP-YA (S1200) data are accessible via ConnectomeDB powered by BALSA (https://db.humanconnectome.org). Open-access data can be downloaded directly after creating a free ConnectomeDB account and accepting the Data Use Terms; no application, research proposal, or committee review is required. The HCP-D and HCP-A data (Lifespan HCP Release 2.0) are publicly available through the NIMH Data Archive (NDA) at https://nda.nih.gov (HCP-D: Collection 2846; HCP-A: Collection 2847). Detailed access instructions are provided in the Lifespan HCP Release 2.0 Data Access Instructions (https://www.humanconnectome.org/storage/app/media/documentation/LS2.0/LS_Release_2.0_Access_Instructions_June2022.pdf).

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, 31 October 2026: the first record

Recorded: type, language, journal, volume, pages, dates, 7 authors, 1 keyword, 11 MeSH terms, 3 funders, 105 references.

Cite

This paper

Chen, X., Liu, X., Hoyos, P. M., Daniel Hertz, E., Yao, J. K., Zhen, Z., & Gomez, J. (2026). Distinct gradients of cortical architecture capture visual representations and behavior across the lifespan. eLife, 13, RP102095. https://doi.org/10.7554/elife.102095

BibTeX

@article{chen2026distinct,
author = {Chen, Xiayu and Liu, Xingyu and Hoyos, Patricia Maria and Daniel Hertz, Edan and Yao, Jewelia K and Zhen, Zonglei and Gomez, Jesse},
title = {{Distinct gradients of cortical architecture capture visual representations and behavior across the lifespan}},
journal = {eLife},
year = {2026},
month = oct,
volume = {13},
pages = {RP102095},
publisher = {eLife Sciences Publications, Ltd},
issn = {2050-084X},
doi = {10.7554/elife.102095},
url = {https://doi.org/10.7554/elife.102095},
pmid = {42960830},
pmcid = {PMC13722415}
}

RIS

TY - JOUR
AU - Chen, Xiayu
AU - Liu, Xingyu
AU - Hoyos, Patricia Maria
AU - Daniel Hertz, Edan
AU - Yao, Jewelia K
AU - Zhen, Zonglei
AU - Gomez, Jesse
TI - Distinct gradients of cortical architecture capture visual representations and behavior across the lifespan
T2 - eLife
J2 - eLife
PY - 2026
DA - 2026/10/30
VL - 13
SP - RP102095
SN - 2050-084X
PB - eLife Sciences Publications, Ltd
DO - 10.7554/elife.102095
UR - https://doi.org/10.7554/elife.102095
LA - en
ER -

CSL-JSON

{
"id": "10.7554/elife.102095",
"type": "article-journal",
"title": "Distinct gradients of cortical architecture capture visual representations and behavior across the lifespan",
"container-title": "eLife",
"author": [
{
"family": "Chen",
"given": "Xiayu"
},
{
"family": "Liu",
"given": "Xingyu"
},
{
"family": "Hoyos",
"given": "Patricia Maria"
},
{
"family": "Daniel Hertz",
"given": "Edan"
},
{
"family": "Yao",
"given": "Jewelia K"
},
{
"family": "Zhen",
"given": "Zonglei"
},
{
"family": "Gomez",
"given": "Jesse"
}
],
"container-title-short": "eLife",
"volume": "13",
"page": "RP102095",
"DOI": "10.7554/elife.102095",
"PMID": "42960830",
"PMCID": "PMC13722415",
"ISSN": "2050-084X",
"publisher": "eLife Sciences Publications, Ltd",
"URL": "https://doi.org/10.7554/elife.102095",
"language": "en",
"issued": {
"date-parts": [
[
2026,
10,
30
]
]
}
}

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.1523/jneurosci.0809-24.2024 [code]
An Eccentricity Gradient Reversal across High-Level Visual Cortex.
Journal: The Journal of neuroscience : the official journal of the Society for Neuroscience
In common: Statistics and Machine Learning Toolbox, systems, 24 references, author Jewelia K Yao
[2] doi:10.1371/journal.pcbi.1012507 [code]
Distributed network flows generate localized category selectivity in human visual cortex.
Journal: PLoS computational biology
In common: Connectome Workbench, statsmodels, NiBabel, 7 other tools, systems, 11 references
[3] doi:10.1371/journal.pbio.3003277 [code]
Mapping cerebral blood perfusion and its links to multi-scale brain organization across the human lifespan.
Journal: PLoS biology
In common: statsmodels, NiBabel, seaborn, 6 other tools, structural MRI / diffusion, 13 references
[4] doi:10.1038/s41597-023-02471-x [code]
A large-scale fMRI dataset for the visual processing of naturalistic scenes.
Journal: Scientific data
In common: Connectome Workbench, NiBabel, seaborn, 5 other tools, 8 references, author Zonglei Zhen
[5] doi:10.1038/s41467-025-62812-9 [code]
Mapping the coupling between tract reachability and cortical geometry of the human brain.
Journal: Nature communications
In common: Connectome Workbench, statsmodels, NiBabel, 7 other tools, structural MRI / diffusion, 10 references
[6] doi:10.1371/journal.pbio.3002710 [code]
The multiscale brain structural re-organization that occurs from childhood to adolescence correlates with cortical morphology maturation and functional specialization.
Journal: PLoS biology
In common: statsmodels, NiBabel, seaborn, 6 other tools, structural MRI / diffusion, 10 references
[7] doi:10.1371/journal.pbio.3003378 [code]
Humans have a longer period of cortical maturation across depth and hierarchy than macaques.
Journal: PLoS biology
In common: statsmodels, NiBabel, seaborn, 5 other tools, structural MRI / diffusion, 11 references
[8] doi:10.1016/j.neuroimage.2023.120010 [code]
Homotopic local-global parcellation of the human cerebral cortex from resting-state functional connectivity.
Journal: NeuroImage
In common: Connectome Workbench, NiBabel, Statistics and Machine Learning Toolbox, 4 other tools, 11 references
[9] 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: statsmodels, NiBabel, seaborn, 6 other tools, 9 references
[10] doi:10.1038/s41467-025-61395-9 [code]
Double dissociation of dynamic and static face perception provides causal evidence for a third visual pathway.
Journal: Nature communications
In common: NiBabel, seaborn, scikit-learn, 4 other tools, 9 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.7554/elife.102095.svg)](https://openscicode.org/badge/doi/10.7554/elife.102095)
<!-- oscr-badge:end -->
reStructuredText
.. oscr-badge:start

.. image:: https://openscicode.org/badge/doi/10.7554/elife.102095.svg
   :target: https://openscicode.org/badge/doi/10.7554/elife.102095
   :alt: OSCR

.. oscr-badge:end
HTML
<!-- oscr-badge:start -->
<a href="https://openscicode.org/badge/doi/10.7554/elife.102095"><img src="https://openscicode.org/badge/doi/10.7554/elife.102095.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.