OSCR

Defective EV-mediated transport of SHH alters neural fate specification in EPM1 epilepsy.

Code ↔ Paper

7 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 7 matches
  1. [1] § MATERIALS AND METHODS › scRNA-seq sample preparation › scRNA-seq data analysis ↔ vCO_02_normalization.ipynb, lines 80–90 · score 0.73 · preliminary clustering, log1p, PCA, tl, pp, neighborhood
  2. [2] § MATERIALS AND METHODS › scRNA-seq sample preparation › scRNA-seq data analysis ↔ vCO_06_annotation.ipynb, lines 339–346 · score 0.68 · preliminary clustering, log1p, PCA, tl, pp, neighborhood
  3. [3] § RESULTS › EPM1 ventral progenitors and neurons change cell identity ↔ vCO_08_nomenclature_post_integration-PT2.ipynb, lines 166–170 · score 0.62 · THSD7A, CACNA2D1, NEUROG2, DLX2, EOMES, NEUROD1
  4. [4] § RESULTS › EPM1 ventral progenitors and neurons change cell identity ↔ vCO_08_nomenclature_post_integration-PT2.ipynb, lines 172–191 · score 0.62 · Neurons subclusters, THSD7A, CACNA2D1, NEUROG2, DLX2, NEUROD1
  5. [5] § MATERIALS AND METHODS › scRNA-seq sample preparation › scRNA-seq data analysis ↔ vCO_01_quality_control.ipynb, lines 220–230 · score 0.61 · scDblFinder, SingleCellExperiment, seed, doublets, cells
  6. [6] § RESULTS › EPM1 ventral progenitors and neurons change cell identity ↔ vCO_08_nomenclature_post_integration-PT2.ipynb, lines 295–297 · score 0.54 · Progenitor subclusters, vCTRL, vEPM1, UMAP, clustered
  7. [7] § MATERIALS AND METHODS › scRNA-seq sample preparation › scRNA-seq data analysis ↔ vCO_01_quality_control.ipynb, lines 110–119 · score 0.52 · mitochondrial gene, low quality, mt

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

Jupyter notebook · 507 lines · 17 KB · MIT · 3 matches

  1. # %%
  2. #I would like to dissect better the Neurons cluster..
  3. # %%
  4. adata = sc.read_h5ad('02_Results/CSTB_annotated_09.h5ad')
  5. # %%
  6. adata
  7. # %%
  8. sc.pl.umap(adata, color=['DSCAM','type'], show=False,vmax=0.5,frameon=False, legend_loc='right margin', legend_fontsize=12, wspace=0.1)
  9. # %%
  10. adata.obs['annotated'].value_counts()
  11. # %%
  12. #Subcluster
  13. adata_MatNeurons = adata[adata.obs['annotated']=='Neurons'].copy()
  14. # %%
  15. sc.tl.leiden(adata_MatNeurons, resolution=0.2, restrict_to = ['annotated',['Neurons']], key_added='leiden_R1')
  16. # %%
  17. from pylab import rcParams
  18. sc.pl.umap(adata_MatNeurons, color='leiden_R1', legend_loc='right margin' , legend_fontsize = 8, frameon=False)
  19. # %%
  20. # Define your categories of interest
  21. neurons_categories = ['Mature Neurons,0', 'Neurons,1', 'Neurons,2']
  22. # Subset the adata to only include cells where 'annotated' is one of the progenitor categories
  23. adata_Neuro_clusters = adata_MatNeurons[adata_MatNeurons.obs['leiden_R1'].isin(neurons_categories)].copy()
  24. # %%
  25. num_tot_cells = adata_Neuro_clusters.obs.groupby(['sample']).count()
  26. num_tot_cells = dict(zip(num_tot_cells.index, num_tot_cells.scDblFinder_class))
  27. num_tot_cells
  28. # %%
  29. cell_type_counts = adata_Neuro_clusters.obs.groupby(['type','sample', 'leiden_R1']).count()
  30. cell_type_counts = cell_type_counts[cell_type_counts.sum(axis = 1) > 0].reset_index()
  31. cell_type_counts = cell_type_counts[cell_type_counts.columns[0:4]]
  32. cell_type_counts
  33. # %%
  34. cell_type_counts['total_cells'] = cell_type_counts['sample'].map(num_tot_cells).astype(int)
  35. cell_type_counts['frequency'] = cell_type_counts['experiment'] / cell_type_counts['total_cells']
  36. # Now, you can print the updated cell_type_counts DataFrame
  37. print(cell_type_counts)
  38. # %%
  39. import matplotlib.pyplot as plt
  40. import seaborn as sns
  41. plt.figure(figsize = (10,4))
  42. # Create a custom palette
  43. palette = {'vCTRL':'#6cb052','vEPM1':'#9652b0'}
  44. ax = sns.boxplot(data = cell_type_counts, x = 'leiden_R1', y = 'frequency', hue = 'type', palette=palette)
  45. plt.xticks(rotation = 35, rotation_mode = 'anchor', ha = 'right')
  46. # Save the figure as a PDF file
  47. plt.savefig('figures/FIG2_H.pdf', format='pdf', bbox_inches='tight')
  48. plt.show()
  49. # %%
  50. # Convert columns to string type and create a new column merging without underscore
  51. adata_Neuro_clusters.obs['leiden_R1'] = adata_Neuro_clusters.obs['leiden_R1'].astype(str) + ' ' + adata_Neuro_clusters.obs['type'].astype(str)
  52. # %%
  53. sc.pl.umap(adata_Neuro_clusters, color='leiden_R1', legend_loc='right margin' , legend_fontsize = 12, frameon=False,title="Neurons Subclusters",
  54. palette = { 'Neurons,0 vCTRL': '#00979f', # Original CTRL color
  55. 'Neurons,0 vEPM1': '#66b2b4', # Lightened shade for Neurons,0
  56. 'Neurons,1 vCTRL': '#00479f', # Original CTRL color
  57. 'Neurons,1 vEPM1': '#4da6ff', # Lightened shade for Neurons,1
  58. 'Neurons,2 vCTRL': '#007c9f', # Original CTRL color
  59. 'Neurons,2 vEPM1': '#33b5cc', # Lightened shade for Neurons,2
  60. },
  61. save="FIG2_G.pdf" )
  62. # %%
  63. sc.pl.umap(adata_Neuro_clusters,
  64. color='THSD7A',
  65. legend_loc='right margin',
  66. legend_fontsize = 12,
  67. frameon=False,
  68. save="FIG2_I_1.pdf")
  69. # %%
  70. sc.pl.umap(adata_Neuro_clusters,
  71. color='DLX1',
  72. legend_loc='right margin',
  73. legend_fontsize = 12,
  74. frameon=False,
  75. save="FIG2_I_2.pdf")
  76. # %%
  77. sc.pl.umap(adata_Neuro_clusters,
  78. color='TBR1',
  79. legend_loc='right margin',
  80. legend_fontsize = 12,
  81. frameon=False,
  82. save="FIG2_I_3.pdf")
  83. # %%
  84. sc.pl.umap(adata_Neuro_clusters, color='type', legend_loc='right margin' , legend_fontsize = 12, frameon=False,title="Neurons Subclusters - Genotype",
  85. palette={'vCTRL':'#6cb052','vEPM1':'#9652b0'}, save="Neurons_Subcluster_Genotype.pdf")
  86. # %%
  87. sc.pp.log1p(adata)
  88. sc.tl.rank_genes_groups(adata = adata_Neuro_clusters, groupby='leiden_R1', groups= ['Neurons,0','Neurons,1'],
  89. reference='Neurons,1', rankby_abs=True)
  90. # %%
  91. sc.pp.log1p(adata)
  92. sc.tl.rank_genes_groups(adata = adata_Neuro_clusters, groupby='leiden_R1', groups= ['Neurons,0','Neurons,2'],
  93. reference='Neurons,2', rankby_abs=True)
  94. # %%
  95. rcParams['figure.figsize']=(10,5)
  96. sc.pl.rank_genes_groups(adata_Neuro_clusters, size=10, n_genes=100)
  97. # %%
  98. adata_Neuro_clusters_0vs1=adata_Neuro_clusters[adata_Neuro_clusters.obs["leiden_R1"] != "Neurons,2"]
  99. # %%
  100. sc.pl.umap(
  101. adata_Neuro_clusters,
  102. color=['THSD7A', 'DLX1', 'TBR1'],
  103. show=False,
  104. frameon=False,
  105. legend_loc='right margin',
  106. legend_fontsize=12,
  107. wspace=0.1,
  108. ncols=3, # This will create 3 plots per row
  109. save="FIG2_I"
  110. )
  111. # %%
  112. sc.pl.umap(
  113. adata_Neuro_clusters,
  114. color=['CACNA2D1', 'NEUROD1',
  115. 'DLX1', 'GAD1',
  116. 'NEUROG2','EOMES'],
  117. show=False,
  118. frameon=False,
  119. legend_loc='right margin',
  120. legend_fontsize=12,
  121. wspace=0.1,
  122. ncols=2, # This will create 3 plots per row
  123. save="supplFIG2_F.pdf"
  124. )
  125. # %%
  126. sc.set_figure_params(dpi=150, dpi_save=300, fontsize=12)
  127. markers = ['NEUROD1','THSD7A', 'CACNA2D1','DLX1', 'DLX2', 'GAD1', 'NEUROG2', 'EOMES', 'TBR1']
  128. sc.pl.heatmap(adata_Neuro_clusters, markers, groupby='leiden_R1',swap_axes=True,
  129. figsize=[10,5],save="FIG2_J.pdf")
  130. # %%
  131. adata_Neuro_clusters_0vs1=adata_Neuro_clusters[adata_Neuro_clusters.obs["leiden_R1"] != "Neurons,2"]
  132. #rcParams['figure.figsize']=(9,5)
  133. df = sc.get.obs_df(adata_Neuro_clusters_0vs1, ['DLX1','DLX2', 'DLX5', 'THSD7A','CACNA2D1','NEUROD1','NEUROG2','leiden_R1'])
  134. df = df.set_index('leiden_R1').stack().reset_index()
  135. df.columns = ['leiden_R1', 'gene', 'value']
  136. import seaborn as sns
  137. g=sns.violinplot(data=df, x='gene', y='value', hue="leiden_R1", gap=.5,
  138. split=True, inner="quart", linewidth=.8, palette={'Neurons,0':'#00979f','Neurons,1':'#00479f'})
  139. g.set_xlabel("Genes")
  140. g.set_ylabel("Expression Levels")
  141. plt.setp(g.get_xticklabels(), rotation=45)
  142. # Put the legend out of the figure
  143. plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)
  144. plt.savefig('figures/Neurons Subclusters splitplot.pdf', bbox_inches='tight')
  145. # %%
  146. sc.pl.rank_genes_groups_violin(adata_Neuro_clusters, groups='Neurons,0', n_genes=20)
  147. # %%
  148. #Same for Progenitors
  149. # %%
  150. #Subcluster
  151. #a12006
  152. adata_Prog = adata[adata.obs['annotated']=='Progenitors'].copy()
  153. sc.pl.umap(adata_Prog, color='annotated', legend_loc='right margin' , legend_fontsize = 8, frameon=False)
  154. # %%
  155. sc.pl.umap(adata_Prog,
  156. color=['GSX2','ASCL1','PAX6','MEIS2'],
  157. legend_loc='right margin',
  158. legend_fontsize = 12,
  159. frameon=False)
  160. # %%
  161. adata.obs
  162. # %%
  163. print(type(adata_Prog.obs['type']))
  164. # %%
  165. genes = ['NKX2-1', 'SIX3', 'PAX6', 'GSX2','ASCL1']
  166. sc.pl.dotplot(adata_Prog, genes, groupby='type', dendrogram=True)
  167. # %%
  168. sc.tl.leiden(adata_Prog, resolution=0.4, restrict_to = ['annotated',['Progenitors']], key_added='leiden_Prog')
  169. # %%
  170. from pylab import rcParams
  171. rcParams['figure.figsize']=(5,5)
  172. sc.pl.umap(adata_Prog, color='leiden_Prog', legend_loc='right margin' , legend_fontsize = 8, frameon=False)
  173. # %%
  174. cluster_sizes = adata_Prog.obs['leiden_Prog'].value_counts()
  175. print(cluster_sizes)
  176. # %%
  177. # Define your categories of interest
  178. progenitor_categories = ['Progenitors,0', 'Progenitors,1', 'Progenitors,2', 'Progenitors,3', 'Progenitors,4']
  179. # Subset the adata to only include cells where 'annotated' is one of the progenitor categories
  180. adata_Prog_clusters = adata_Prog[adata_Prog.obs['leiden_Prog'].isin(progenitor_categories)].copy()
  181. # %%
  182. adata_Prog_clusters
  183. # %%
  184. num_tot_cells = adata_Prog_clusters.obs.groupby(['sample']).count()
  185. num_tot_cells = dict(zip(num_tot_cells.index, num_tot_cells.scDblFinder_class))
  186. num_tot_cells
  187. # %%
  188. cell_type_counts = adata_Prog_clusters.obs.groupby(['type','sample', 'leiden_Prog']).count()
  189. cell_type_counts = cell_type_counts[cell_type_counts.sum(axis = 1) > 0].reset_index()
  190. cell_type_counts = cell_type_counts[cell_type_counts.columns[0:4]]
  191. cell_type_counts
  192. # %%
  193. cell_type_counts['total_cells'] = cell_type_counts['sample'].map(num_tot_cells).astype(int)
  194. cell_type_counts['frequency'] = cell_type_counts['experiment'] / cell_type_counts['total_cells']
  195. # Now, you can print the updated cell_type_counts DataFrame
  196. print(cell_type_counts)
  197. # %%
  198. import matplotlib.pyplot as plt
  199. import seaborn as sns
  200. plt.figure(figsize=(10, 4))
  201. # Create a custom palette
  202. palette = {'vCTRL': '#6cb052', 'vEPM1': '#9652b0'}
  203. # Create the boxplot
  204. ax = sns.boxplot(data=cell_type_counts, x='leiden_Prog', y='frequency', hue='type', palette=palette)
  205. # Set x-axis title with extra padding
  206. plt.xlabel("Progenitors Subclusters", labelpad=15) # Adjust 'labelpad' for spacing
  207. # Rotate x-axis labels
  208. plt.xticks(rotation=35, rotation_mode='anchor', ha='right')
  209. # Save the figure as a PDF file
  210. plt.savefig('figures/FIG2_C.pdf', format='pdf', bbox_inches='tight')
  211. plt.show()
  212. # %%
  213. sc.pl.umap(adata_Prog_clusters, color='type', legend_loc='right margin' , legend_fontsize = 8, frameon=False,title="Progenitors Subclusters - Genotype",
  214. palette={'vCTRL':'#6cb052','vEPM1':'#9652b0'}, save="Progenitors_Subcluster_Genotype.pdf")
  215. # %%
  216. sc.pl.umap(adata_Prog_clusters, color='leiden_Prog', legend_loc='right margin' , legend_fontsize = 8, frameon=False,title="Progenitors Subcluster",
  217. palette={'Progenitors,0':'#eb0954','Progenitors,1':'#eb2f09','Progenitors,2':'#eba009','Progenitors,3':'#8e358b','Progenitors,4':'#d40062'}, save="Progenitors Subclusters.pdf")
  218. # %%
  219. sc.pl.umap(adata_Prog_clusters, color=['MEIS2','NKX2-1','PAX6'], show=False, frameon=False, legend_loc='right margin', legend_fontsize=12, wspace=0.5, save="FIG2_D.pdf")
  220. # %%
  221. # Convert columns to string type and create a new column merging without underscore
  222. adata_Prog_clusters.obs['leiden_type'] = adata_Prog_clusters.obs['leiden_Prog'].astype(str) + ' ' + adata_Prog_clusters.obs['type'].astype(str)
  223. # %%
  224. sc.pl.umap(adata_Prog_clusters, color='leiden_type', legend_loc='right margin' , legend_fontsize = 12, frameon=False,title="Progenitors Subclusters",
  225. palette = {
  226. 'Progenitors,0 vCTRL': '#eb0954', # Original color with slight modification
  227. 'Progenitors,0 vEPM1': '#ff8b94', # Lightened shade of original color
  228. 'Progenitors,1 vCTRL': '#eb2f09', # Original color with slight modification
  229. 'Progenitors,1 vEPM1': '#ff7e3b', # Lightened shade of original color
  230. 'Progenitors,2 vCTRL': '#eba009', # Original color with slight modification
  231. 'Progenitors,2 vEPM1': '#ffba33', # Lightened shade of original color
  232. 'Progenitors,3 vCTRL': '#8e358b', # Original color with slight modification
  233. 'Progenitors,3 vEPM1': '#ab6c9a', # Lightened shade of original color
  234. 'Progenitors,4 vCTRL': '#d40062', # Original color with slight modification
  235. 'Progenitors,4 vEPM1': '#f46b94', # Lightened shade of original color
  236. # Add more colors as needed
  237. },
  238. save="FIG2_B.pdf")
  239. # %%
  240. sc.pl.umap(adata_Prog_clusters,
  241. color='MEIS2',
  242. legend_loc='right margin',
  243. legend_fontsize = 12,
  244. frameon=False,
  245. save="FIG2_D_1")
  246. # %%
  247. sc.pl.umap(adata_Prog_clusters,
  248. color='PAX6',
  249. legend_loc='right margin',
  250. legend_fontsize = 12,
  251. frameon=False,
  252. save="FIG2_D_2")
  253. # %%
  254. sc.pl.umap(adata_Prog_clusters,
  255. color='NKX2-1',
  256. legend_loc='right margin',
  257. legend_fontsize = 12,
  258. frameon=False,
  259. save="FIG2_D_3")
  260. # %%
  261. sc.pl.umap(adata_Prog_clusters,
  262. color='SIX3',
  263. legend_loc='right margin',
  264. legend_fontsize = 12,
  265. frameon=False,
  266. save="FIG2_D_4")
  267. # %%
  268. sc.set_figure_params(dpi=300, dpi_save=300, fontsize=12)
  269. markers = ['MEIS2','PAX6','NKX2-1','SIX3']
  270. # Plot the heatmap using the new column with custom color mapping
  271. sc.pl.heatmap(
  272. adata_Prog_clusters,
  273. markers,
  274. figsize=[10,5],
  275. groupby='leiden_type', # Use the new combined column
  276. swap_axes=True,
  277. save="FIG2_E.pdf"
  278. )
  279. # %%
  280. adata_Prog_clusters_0vs2 = adata_Prog_clusters[~adata_Prog_clusters.obs["leiden_Prog"].isin(["Progenitors,1", "Progenitors,3", "Progenitors,4"])]
  281. adata_Prog_clusters_0vs2
  282. # %%
  283. rcParams['figure.figsize']=(9,5)
  284. df = sc.get.obs_df(adata_Prog_clusters_0vs2, ['NKX2-1','SIX3', 'PAX6', 'SOX2','leiden_Prog'])
  285. df = df.set_index('leiden_Prog').stack().reset_index()
  286. df.columns = ['leiden_Prog', 'gene', 'value']
  287. import seaborn as sns
  288. g=sns.violinplot(data=df, x='gene', y='value', hue="leiden_Prog", gap=.5,
  289. split=True, inner="quart", linewidth=.8, palette={'Progenitors,0':'#eb0954','Progenitors,2':'#eba009'})
  290. g.set_xlabel("Genes")
  291. g.set_ylabel("Expression Levels")
  292. plt.setp(g.get_xticklabels(), rotation=45)
  293. # Put the legend out of the figure
  294. plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)
  295. plt.savefig('figures/FIG2_C.pdf', bbox_inches='tight')
  296. # %%
  297. sc.pp.log1p(adata_Prog_clusters)
  298. sc.tl.rank_genes_groups(adata = adata_Prog_clusters, groupby='leiden_Prog', groups= ['Progenitors,0','Progenitors,2'],
  299. reference='Progenitors,2', rankby_abs=True)
  300. # %%
  301. rcParams['figure.figsize']=(5,5)
  302. sc.pl.rank_genes_groups(adata_Prog_clusters, size=10, n_genes=50)
  303. # %%
  304. sc.pl.rank_genes_groups_violin(adata_Prog_clusters, n_genes=15)
  305. # %%
  306. sc.pl.umap(adata_Prog_clusters, color=['MEIS2','PAX6','NKX2-1','FOXG1'], show=False, frameon=False, legend_loc='right margin', legend_fontsize=12, wspace=0.1)
  307. # %%
  308. sc.pl.umap(adata, color=['MEIS2','PAX6','NKX2-1','FOXG1'], show=False, frameon=False, legend_loc='right margin', legend_fontsize=12, wspace=0.1)
  309. # %%
  310. ax = sc.pl.umap(adata, size=25, show=False)
  311. sc.pl.umap(
  312. adata[(adata.obs["annotated"] == "Progenitors") | (adata.obs["annotated"] == "Newborn Neurons")| (adata.obs["annotated"] == "Progenitors/NKX2-1+")|
  313. (adata.obs["annotated"] == "Neurons")|(adata.obs["annotated"] == "Progenitors/MEIS2+")| (adata.obs["annotated"] == "Striatum Progenitors")|
  314. (adata.obs["annotated"] == "Striatum Neurons")],
  315. size=25,
  316. show=False,
  317. frameon=False,
  318. color=['CACNA2D1'],
  319. ax=ax
  320. )
  321. # Adjust figure size and layout
  322. fig = plt.gcf()
  323. fig.set_size_inches(8, 6) # Adjust the size as needed
  324. fig.tight_layout() # Adjust layout
  325. # Save the figure
  326. plt.savefig('03_Figures/Fig2_B_2.png') # Adjust the filename and dpi as needed
  327. plt.show() # Optional: Show the plot if you want to display it in the notebook
  328. # %%
  329. rcParams['figure.figsize']=(5,5)
  330. # %%
  331. sc.pl.umap(adata, color=['DLX1','DLX2','GAD1'], show=False, frameon=False, legend_loc='right margin', legend_fontsize=12, wspace=0.1, save="Inhibitory_Markers.pdf")
  332. # %%
  333. sc.pl.umap(adata, color=['NEUROD1','THSD7A','CACNA2D1'], show=False, frameon=False, legend_loc='right margin', legend_fontsize=12, wspace=0.1,save="Excitatory_Markers.pdf")
  334. # %%
  335. sc.pl.umap(adata, color=['NEUROG2','INSM1','TBR1'], show=False, frameon=False, legend_loc='right margin', legend_fontsize=12, wspace=0.1,save="Dorsal_Markers.pdf")
  336. # %%
  337. adata.obs['sample'].value_counts()
  338. # %%
  339. adata.write("02_Results/CSTB_annotated_09.h5ad")
  340. # %%
  341. adata = sc.read_h5ad('02_Results/CSTB_annotated_09.h5ad')
  342. # %%
  343. sc.pl.umap(adata, color=['type'], show=False, frameon=False, legend_loc='right margin', title="Genotype",
  344. legend_fontsize=12, save="Sfig2_A.pdf")
  345. # %%
  346. sc.pl.umap(adata, color=['SOX2'], show=False, frameon=False, legend_loc='right margin',
  347. legend_fontsize=12, save="Sfig2_B1.pdf")
  348. # %%
  349. sc.pl.umap(adata, color=['VIM'], show=False, frameon=False, legend_loc='right margin',
  350. vmax=0.8,
  351. legend_fontsize=12, save="Sfig2_B2.pdf")
  352. # %%
  353. sc.pl.umap(adata, color=['NES'], show=False, frameon=False, legend_loc='right margin',
  354. legend_fontsize=12, save="Sfig2_B3.pdf")
  355. # %%
  356. sc.pl.umap(adata_Prog_clusters, color=['type'], show=False, frameon=False, legend_loc='right margin', title="Progenitors Subclusters - Genotype",
  357. legend_fontsize=12, save="Sfig2_C.pdf")
  358. # %%
  359. sc.pl.umap(adata, color=['DCX'], show=False, frameon=False, legend_loc='right margin',
  360. legend_fontsize=12, save="Sfig2_E1.pdf")
  361. # %%
  362. sc.pl.umap(adata, color=['MAP2'], show=False, frameon=False, legend_loc='right margin',
  363. legend_fontsize=12, save="Sfig2_E2.pdf")
  364. # %%
  365. sc.pl.umap(adata_Neuro_clusters, color=['type'], show=False, frameon=False, legend_loc='right margin', title="Neurons Subclusters - Genotype",
  366. legend_fontsize=12, save="Sfig2_F.pdf")
  367. # %%
  368. sc.pl.umap(adata_Neuro_clusters, color=['CACNA2D1'], show=False, frameon=False, legend_loc='right margin',
  369. legend_fontsize=12, save="Sfig2_G1.pdf")
  370. sc.pl.umap(adata_Neuro_clusters, color=['NEUROD1'], show=False, frameon=False, legend_loc='right margin',
  371. legend_fontsize=12, save="Sfig2_G2.pdf")
  372. sc.pl.umap(adata_Neuro_clusters, color=['DLX2'], show=False, frameon=False, legend_loc='right margin',
  373. legend_fontsize=12, save="Sfig2_G3.pdf")
  374. sc.pl.umap(adata_Neuro_clusters, color=['GAD1'], show=False, frameon=False, legend_loc='right margin',
  375. legend_fontsize=12, save="Sfig2_G4.pdf")
  376. sc.pl.umap(adata_Neuro_clusters, color=['NEUROG2'], show=False, frameon=False, legend_loc='right margin',
  377. legend_fontsize=12, save="Sfig2_G5.pdf")
  378. sc.pl.umap(adata_Neuro_clusters, color=['EOMES'], show=False, frameon=False, legend_loc='right margin',
  379. legend_fontsize=12, save="Sfig2_G6.pdf")

vCO_08_nomenclature_post_integration-PT2.ipynb at commit 4c22f86, under MIT · at the source

Overview

Authors: Andrea Forero1, Veronica Pravata1, Fabrizia Pipicelli2, Elisa Frenna1,2,3,4, Alessandro Soloperto2, Marta Ianni1,5, Natalia Abate1,5, Francesco Di Matteo2, Zagorka Bekjarova2, Laura Canafoglia6, Francesca Ragona6, Giuseppina Maccarrone2, Mariano Gonzalez Pisfil7, Christian Wahl-Schott8, Filippo M Cernilogar9,10, Matthias Eder2, Rossella Di Giaimo1,2,5, Silvia Cappello1,2,11
  1. Physiological Genomics, Biomedical Center (BMC), LMU Medizin, LMU Munich, Munich, Germany
  2. Max Planck Institute of Psychiatry, Munich, Germany
  3. International Max Planck Research School for Translational Psychiatry, Max Planck Institute of Psychiatry, Munich, Germany
  4. Graduate School of Systemic Neurosciences (GSN), Ludwig-Maximilians-University, Munich, Germany
  5. Department of Biology, University of Naples Federico II, Naples, Italy
  6. Fondazione IRCCS Istituto Neurologico Carlo Besta, Milan, Italy
  7. Core Facility Bioimaging and Walter-Brendel-Centre of Experimental Medicine, Biomedical Center, Ludwig Maximilian University, Munich, Germany
  8. Division of Cardiovascular Physiology and Pathophysiology, Biomedical Center (BMC), LMU Medizin, LMU Munich, Munich, Germany
  9. Division of Molecular Biology, Biomedical Center (BMC), LMU Medizin, LMU Munich, Munich, Germany
  10. Department of Science and Technological Innovation, University of Piemonte Orientale, Alessandria, Italy
  11. Munich Cluster for Systems Neurology (SyNergy), Munich, Germany
Journal: Science advances, volume 12, issue 36, article eadu3955
Dates: received 5 November 2024; accepted 23 July 2026; published online 2 September 2026; in print September 2026
Type: Research article · Language: English
License: CC BY-NC
Identifiers: DOI 10.1126/sciadv.adu3955 · PMID 42685196 · PMCID PMC13537273 · OpenAlex W7206171561
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: human (organism), epilepsy (population), cellular / molecular (subfield)
Methods: Statistics, Smoothing, state filtering, decompositions, Machine learning, Preprocessing, Evoked potentials
MeSH: Epilepsies, Myoclonic*, Hedgehog Proteins*, Neurons*, Animals, Humans, Mutation, Organoids, Protein Transport, Signal Transduction (* major topic)
Topic: Neurogenesis and neuroplasticity mechanisms (Developmental Neuroscience, Neuroscience), according to OpenAlex
Funding: European Research Council (101043959)
Citations: not cited yet (Europe PMC); 81 references in the paper
Research resources: Pegtel RRID:Addgene_130901, RRID:SCR_025745

Abstract

The extracellular milieu, including extracellular vesicles (EVs), plays a pivotal role in brain development. In this study, we sought to elucidate the pathogenesis of progressive myoclonus epilepsy type 1 (EPM1), a disease caused by mutations in the CSTB gene, using cerebral organoids (COs) derived from patient cells. The results demonstrate that EPM1 COs display increased electrophysiological activity and disrupted excitatory/inhibitory (E/I) balance. Single-cell RNA sequencing analysis of ventral EPM1-COs revealed an abnormal specification of progenitor fate, with a shift toward dorsal neuron identities. We demonstrated that this misspecification is driven by a functional alteration of the ventral signaling niche, resulting from impaired EV dynamics and altered protein cargo. Mechanistically, we identified Sonic Hedgehog (SHH) as a direct physical interactor of CSTB and demonstrated that CSTB deficiency leads to reduced SHH content and secretion. Our findings establish CSTB as a safeguard of ventral patterning and identify the CSTB-SHH-EV axis as a potential therapeutic target for mitigating the E/I imbalance associated with EPM1.

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

Repositories

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

coolbutuseless/ggpattern

License: MIT
State: the link answers, verified on 26 September 2026
Evidence: files inventoried
Commit: 14e1355d38f35566c21a23b76bf2417285beb9ac, 24 June 2026
Languages: R (93)
Size: 238 files, 93 scripts
Software Heritage: archived
Found in: the text, “Bulk RNA-seq analysis”
Holds: README, license file, environment (DESCRIPTION), tests, continuous integration, documentation, 12 notebooks
Not found: CITATION.cff
Tools: ggplot2 (19 files), tidyverse (7 files)
Availability: 1 check, the latest on 26 September 2026: the link answers
  • 26 September 2026: the link answers
96 files, not copied: shown from their source

OSCR keeps no copy of these files: the license of this repository (MIT) is not one it has verified to allow it. The reader above shows each one from its source, fetched by your browser at commit 14e1355, when its fingerprint is the one OSCR verified. How this works.

VeronicaMP/Defective-EV-Mediated-Transport-of-SHH-Alters-Neural-Fate-Specification-in-EPM1-epilepsy

License: MIT
State: the link answers, verified on 26 September 2026
Evidence: files inventoried
Commit: 4c22f863f350fa0a1844f76f2d9d723f46a6c011, 19 July 2026
Languages: Jupyter (14), R (1)
Size: 18 files, 15 scripts
Software Heritage: not archived
Found in: “Data, code, and materials availability:”
Holds: README, license file, 14 notebooks
Not found: CITATION.cff, environment file, tests, continuous integration, documentation
Tools: Scanpy (7 files), Matplotlib (5 files), NumPy (5 files), seaborn (5 files), rpy2 (4 files), SciPy (3 files), pandas (2 files), DESeq2 (1 file), ggplot2 (1 file), Numba (1 file), reshape2 (1 file), Seurat (1 file), tidyverse (1 file)
Availability: 1 check, the latest on 26 September 2026: the link answers
  • 26 September 2026: the link answers
11 files

Zenodo 21453507

License: MIT
State: the link answers, verified on 26 September 2026
Evidence: files inventoried
Size: 1 file
Software Heritage: not checked
Found in: “Data, code, and materials availability:”
Not found: README, license file, CITATION.cff, environment file, tests, continuous integration, documentation
Tools: Scanpy (7 files), Matplotlib (5 files), NumPy (5 files), seaborn (5 files), rpy2 (4 files), SciPy (3 files), pandas (2 files), DESeq2 (1 file), ggplot2 (1 file), Numba (1 file), reshape2 (1 file), Seurat (1 file), tidyverse (1 file)
Availability: 1 check, the latest on 26 September 2026: the link answers (HTTP 200)
  • 26 September 2026: the link answers (HTTP 200)
11 files

The paper's code and data availability statement is in the Data section.

Tracing map

Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.

What the map holds:

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

Raw sequencing data have been deposited in the Gene Expression Omnibus (GEO) database under accession codes GSE188219 (https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE188219) and GSE282281 (https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE282281), and proteomics data have been deposited in PRIDE under the accession code PXD072599. All custom code used in this study is available via Zenodo at https://doi.org/10.5281/zenodo.21453507 (archived from the GitHub repository https://github.com/VeronicaMP/Defective-EV-Mediated-Transport-of-SHH-Alters-Neural-Fate-Specification-in-EPM1-epilepsy). All other data needed to evaluate and reproduce the results are present in the paper and/or the Supplementary Materials. This study did not generate new materials.

Reproduced under the paper's license (CC BY-NC), 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, 27 September 2026: the first record

Recorded: type, language, journal, volume, issue, pages, dates, 18 authors, 9 MeSH terms, 1 funder, 78 references, 2 RRIDs.

Cite

This paper

Forero, A., Pravata, V., Pipicelli, F., Frenna, E., Soloperto, A., Ianni, M., Abate, N., Di Matteo, F., Bekjarova, Z., Canafoglia, L., Ragona, F., Maccarrone, G., Pisfil, M. G., Wahl-Schott, C., Cernilogar, F. M., Eder, M., Di Giaimo, R., & Cappello, S. (2026). Defective EV-mediated transport of SHH alters neural fate specification in EPM1 epilepsy. Science advances, 12(36), eadu3955. https://doi.org/10.1126/sciadv.adu3955

BibTeX

@article{forero2026defective,
author = {Forero, Andrea and Pravata, Veronica and Pipicelli, Fabrizia and Frenna, Elisa and Soloperto, Alessandro and Ianni, Marta and Abate, Natalia and Di Matteo, Francesco and Bekjarova, Zagorka and Canafoglia, Laura and Ragona, Francesca and Maccarrone, Giuseppina and Pisfil, Mariano Gonzalez and Wahl-Schott, Christian and Cernilogar, Filippo M and Eder, Matthias and Di Giaimo, Rossella and Cappello, Silvia},
title = {{Defective EV-mediated transport of SHH alters neural fate specification in EPM1 epilepsy}},
journal = {Science advances},
year = {2026},
month = sep,
volume = {12},
number = {36},
pages = {eadu3955},
publisher = {American Association for the Advancement of Science},
issn = {2375-2548},
doi = {10.1126/sciadv.adu3955},
url = {https://doi.org/10.1126/sciadv.adu3955},
pmid = {42685196},
pmcid = {PMC13537273}
}

RIS

TY - JOUR
AU - Forero, Andrea
AU - Pravata, Veronica
AU - Pipicelli, Fabrizia
AU - Frenna, Elisa
AU - Soloperto, Alessandro
AU - Ianni, Marta
AU - Abate, Natalia
AU - Di Matteo, Francesco
AU - Bekjarova, Zagorka
AU - Canafoglia, Laura
AU - Ragona, Francesca
AU - Maccarrone, Giuseppina
AU - Pisfil, Mariano Gonzalez
AU - Wahl-Schott, Christian
AU - Cernilogar, Filippo M
AU - Eder, Matthias
AU - Di Giaimo, Rossella
AU - Cappello, Silvia
TI - Defective EV-mediated transport of SHH alters neural fate specification in EPM1 epilepsy
T2 - Science advances
J2 - Sci Adv
PY - 2026
DA - 2026/09/02
VL - 12
IS - 36
SP - eadu3955
SN - 2375-2548
PB - American Association for the Advancement of Science
DO - 10.1126/sciadv.adu3955
UR - https://doi.org/10.1126/sciadv.adu3955
LA - en
ER -

CSL-JSON

{
"id": "10.1126/sciadv.adu3955",
"type": "article-journal",
"title": "Defective EV-mediated transport of SHH alters neural fate specification in EPM1 epilepsy",
"container-title": "Science advances",
"author": [
{
"family": "Forero",
"given": "Andrea"
},
{
"family": "Pravata",
"given": "Veronica"
},
{
"family": "Pipicelli",
"given": "Fabrizia"
},
{
"family": "Frenna",
"given": "Elisa"
},
{
"family": "Soloperto",
"given": "Alessandro"
},
{
"family": "Ianni",
"given": "Marta"
},
{
"family": "Abate",
"given": "Natalia"
},
{
"family": "Di Matteo",
"given": "Francesco"
},
{
"family": "Bekjarova",
"given": "Zagorka"
},
{
"family": "Canafoglia",
"given": "Laura"
},
{
"family": "Ragona",
"given": "Francesca"
},
{
"family": "Maccarrone",
"given": "Giuseppina"
},
{
"family": "Pisfil",
"given": "Mariano Gonzalez"
},
{
"family": "Wahl-Schott",
"given": "Christian"
},
{
"family": "Cernilogar",
"given": "Filippo M"
},
{
"family": "Eder",
"given": "Matthias"
},
{
"family": "Di Giaimo",
"given": "Rossella"
},
{
"family": "Cappello",
"given": "Silvia"
}
],
"container-title-short": "Sci Adv",
"volume": "12",
"issue": "36",
"page": "eadu3955",
"DOI": "10.1126/sciadv.adu3955",
"PMID": "42685196",
"PMCID": "PMC13537273",
"ISSN": "2375-2548",
"publisher": "American Association for the Advancement of Science",
"URL": "https://doi.org/10.1126/sciadv.adu3955",
"language": "en",
"issued": {
"date-parts": [
[
2026,
9,
2
]
]
}
}

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.1016/j.xcrm.2026.102766 [code]
A longitudinal single-cell and spatial multiomic atlas of pediatric high-grade glioma.
Journal: Cell reports. Medicine
In common: rpy2, DESeq2, Numba, 10 other tools, cellular / molecular, 1 reference
[2] doi:10.1038/s41593-026-02367-0 [code]
A reproducible three-dimensional model of human brain tissue to investigate physiological and disease-associated microglia phenotypes.
Journal: Nature neuroscience
In common: DESeq2, Seurat, reshape2, 2 other tools, cellular / molecular, 4 references, author Veronica Pravata
[3] doi:10.1038/s41592-026-03194-8 [code]
Beyond benchmarking: an expert-guided consensus approach to spatially aware clustering.
Journal: Nature methods
In common: rpy2, Scanpy, Seurat, 8 other tools, 3 references
[4] doi:10.1038/s41467-026-71803-3 [code]
Charting the transition from in vitro gliogenesis to the in vivo maturation of human glial progenitor cells transplanted into the hypomyelinated mouse brain.
Journal: Nature communications
In common: DESeq2, Numba, Scanpy, 8 other tools, cellular / molecular, 3 references
[5] doi:10.1038/s41467-026-73796-5 [code]
Cross-species transcriptomic analysis of rodent model fidelity to human mesial temporal lobe epilepsy.
Journal: Nature communications
In common: DESeq2, Scanpy, Seurat, 8 other tools, epilepsy, cellular / molecular, 2 references
[6] doi:10.1038/s41586-026-10629-x [code]
Whole-genome duplication shaped cell-type evolution in the vertebrate brain.
Journal: Nature
In common: DESeq2, Numba, Scanpy, 9 other tools, cellular / molecular, 1 reference
[7] doi:10.1242/dmm.052681
Transcriptomic and proteomic insights into progressive myoclonus epilepsy type 1.
Journal: Disease models & mechanisms
In common: epilepsy, 8 references
[8] doi:10.1126/sciadv.aeg3223 [code]
The extreme diversity of retinal amacrine cells has deep evolutionary roots.
Journal: Science advances
In common: DESeq2, Scanpy, Seurat, 8 other tools, cellular / molecular, 2 references
[9] doi:10.1038/s41514-026-00391-9 [code]
Region-specific transcriptional signatures of brain aging in the absence of neuropathology at the single-cell level.
Journal: npj aging
In common: Numba, Scanpy, Seurat, 8 other tools, cellular / molecular, 2 references
[10] doi:10.1038/s44318-026-00818-9 [code]
FAM134B-mediated ER-phagy degrades APP and suppresses Alzheimer's disease pathology.
Journal: The EMBO journal
In common: DESeq2, Numba, Scanpy, 9 other tools, cellular / molecular

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.