Transcriptomic analysis of spinal V1 interneurons informs their multifunctional role in motor output.
The 5 matches
- [1] § Methods › Immunohistochemistry, RNAscope in situ hybridization, and confocal imaging ↔ 02_Data_Processing/Code_Replicate1.py, lines 264–275 · score 0.58 · Bcl11a, Pou6f2, Rnf220, Calb1, Sp8, St18
- [2] § Methods › Immunohistochemistry, RNAscope in situ hybridization, and confocal imaging ↔ 02_Data_Processing/Code_Replicate2.py, lines 242–253 · score 0.58 · Bcl11a, Pou6f2, Rnf220, Calb1, Sp8, St18
- [3] § Methods › Immunohistochemistry, RNAscope in situ hybridization, and confocal imaging ↔ 02_Data_Processing/Code_Replicate1.py, lines 264–275 · score 0.52 · Nr5a2, Pou6f2, Rnf220, Sp8, St18, Foxp2
- [4] § Methods › Immunohistochemistry, RNAscope in situ hybridization, and confocal imaging ↔ 02_Data_Processing/Code_Replicate2.py, lines 242–253 · score 0.52 · Nr5a2, Pou6f2, Rnf220, Sp8, St18, Foxp2
- [5] § Methods › snRNA-seq analysis › Data preprocessing and quality control ↔ 01_cellranger/CellRangerAutoScriptGFP.py, lines 5–17 · score 0.52 · force cells, CellRanger, mm10, RNA, transcripts
Paper
Loaded from Europe PMC by your browser, not stored by OSCR: doi.org · Europe PMC
The paper is loaded when this pane is shown.
The authors' code
Python · 543 lines · 16 KB · MIT · 2 matches
- #!/usr/bin/env python
- # coding: utf-8
- # # P0 Het and Ko analysis Replicate 1
- # AT Updated 8/8/24
- # ## Section 1: Load in data and concatenate datasets if applicable
- # Import libraries
- import numpy as np
- import pandas as pd
- import scanpy as sc
- from sklearn.cluster import KMeans
- from sklearn.metrics import silhouette_score
- import matplotlib.pyplot as plt
- from scipy import stats
- import warnings
- warnings.filterwarnings("ignore") # suppress warnings
- get_ipython().run_line_magic('matplotlib', 'inline')
- sc.settings.verbosity = 3
- sc.logging.print_header()
- sc.settings.set_figure_params(format = "pdf", vector_friendly = False, dpi_save = 80, transparent = True)
- sc.set_figure_params(vector_friendly = False, format = "eps", dpi = 80, dpi_save = 80, transparent = True)
- plt.rcParams['svg.fonttype'] = 'none'
- results_file = 'write/P0KOR1.h5ad'
- # Read in control data from replicate 1
- adata_het = sc.read_10x_mtx('/Users/atrevisa/Desktop/KO_sc/ForceCells/P0HetR1_filtered_feature_bc_matrix',
- var_names='gene_symbols',cache=True)
- adata_het.var_names_make_unique()
- adata_het
- # Read in Ko data from replicate 1
- adata_ko = sc.read_10x_mtx('/Users/atrevisa/Desktop/KO_sc/ForceCells/P0KoR1_filtered_feature_bc_matrix',
- var_names='gene_symbols',cache=True)
- adata_ko.var_names_make_unique()
- adata_ko
- # Merge the data (no batch correction)
- adata_all = adata_het.concatenate(adata_ko, batch_categories=['het', 'ko'])
- adata_all
- # ## Section 2: Define functions used for analaysis
- def QC_graphs (adata):
- # QC graphs generates graphs of basic QC data including the highest expressing genes, total counts, genes, % mt genes
- # example
- # Q_graphs(adata_all)
- # if you have not yet run preprocessing1 you will only see the top genes and then get an error
- # run preprocessing1 on the data to get the other QC graphs
- # Graph highest expressing genes overall
- sc.pl.highest_expr_genes (adata, n_top = 20)
- # If you have not yet run preprocessing1 the following will give an error because these values have not been calculated yet
- if 'batch' in adata.obs.columns:
- sc.pl.violin(adata, ['n_genes_by_counts', 'total_counts', 'pct_counts_mt'], groupby = 'batch',jitter=0.4, multi_panel=True, size = 0)
- sc.pl.scatter(adata, x='log1p_total_counts', y='log1p_pct_counts_mt', color = 'batch')
- sc.pl.scatter(adata, x='total_counts', y='pct_counts_mt', color = 'batch')
- sc.pl.scatter(adata, x='total_counts', y='n_genes_by_counts', color = 'batch')
- sc.pl.scatter(adata, x='log1p_total_counts', y='log1p_n_genes_by_counts', color = 'batch')
- else:
- sc.pl.violin(adata, ['n_genes_by_counts', 'total_counts', 'pct_counts_mt'], jitter=0.4, multi_panel=True, size = 0)
- sc.pl.scatter(adata, x='log1p_total_counts', y='log1p_pct_counts_mt')
- sc.pl.scatter(adata, x='total_counts', y='pct_counts_mt')
- sc.pl.scatter(adata, x='total_counts', y='n_genes_by_counts')
- sc.pl.scatter(adata, x='log1p_total_counts', y='log1p_n_genes_by_counts')
- def preprocessing1 (adata):
- # preprocessing 1 elimates genes with less than 3 counts and cells with less than 200 reads
- # preprocessing 1 also calculates QC stats
- # example
- # preprocessing(adata_all)
- # First compute the number of genes per cell and add to adata.obs in a column called 'n_genes'
- sc.pp.filter_cells(adata, min_genes=0, inplace = True)
- # Manually filter
- adata_copy = adata[adata.obs['n_genes'] >= 1000, :]
- # First compute the number of cells expressing each gene and add to adata.var in a column called 'n_cells'
- sc.pp.filter_genes(adata_copy, min_cells=0, inplace = True)
- # Manually filter
- adata_copy = adata_copy[:, adata_copy.var['n_cells'] >= 10]
- # Calculate qc statistics
- # note that log1p is the natural log
- adata_copy.var['mt'] = adata_copy.var_names.str.startswith('mt-') # annotate the group of mitochondrial genes as 'mt'
- sc.pp.calculate_qc_metrics(adata_copy, qc_vars=['mt'], percent_top=None, log1p=True, inplace=True)
- adata_copy.obs['log1p_pct_counts_mt'] = np.log1p(adata_copy.obs.pct_counts_mt)
- return(adata_copy)
- def preprocessing2 (adata):
- # preprocessing2 eleminates cells above and below 2 MADs from the median of the natiral log total counts and genes
- # preprocessing2 also gets rid of cells with > 5% mt genes expressed
- # example
- # adata_filtered = preprocessing2(adata_all)
- if 'batch' in adata.obs.columns:
- cell_ID2 = []
- for batch in adata.obs.batch.unique():
- print(batch)
- currentbatch = adata[adata.obs.batch == batch]
- print(currentbatch)
- upper_counts = currentbatch.obs.log1p_total_counts.median() + 2.5*stats.median_abs_deviation(currentbatch.obs.log1p_total_counts)
- lower_counts = currentbatch.obs.log1p_total_counts.median() - 2.5*stats.median_abs_deviation(currentbatch.obs.log1p_total_counts)
- upper_genes = currentbatch.obs.log1p_n_genes_by_counts.median() + 2.5*stats.median_abs_deviation(currentbatch.obs.log1p_n_genes_by_counts)
- lower_genes = currentbatch.obs.log1p_n_genes_by_counts.median() - 2.5*stats.median_abs_deviation(currentbatch.obs.log1p_n_genes_by_counts)
- currentbatch = currentbatch[currentbatch.obs.log1p_total_counts < upper_counts, :]
- currentbatch = currentbatch[currentbatch.obs.log1p_total_counts > lower_counts, :]
- currentbatch = currentbatch[currentbatch.obs.log1p_n_genes_by_counts > lower_genes, :]
- currentbatch = currentbatch[currentbatch.obs.log1p_n_genes_by_counts < upper_genes, :]
- currentbatch = currentbatch[currentbatch.obs.pct_counts_mt < 5, :]
- cell_ID2.extend(currentbatch.obs.index.tolist())
- #len(cell_ID2)
- cell_ID2_series = pd.Series(cell_ID2)
- adata = adata[cell_ID2_series]
- return(adata)
- # use the following code for only 1 batch - significantly simpler
- else:
- upper_counts = adata.obs.log1p_total_counts.median() + 2.5*stats.median_abs_deviation(adata.obs.log1p_total_counts)
- lower_counts = adata.obs.log1p_total_counts.median() - 2.5*stats.median_abs_deviation(adata.obs.log1p_total_counts)
- upper_genes = adata.obs.log1p_n_genes_by_counts.median() + 2.5*stats.median_abs_deviation(adata.obs.log1p_n_genes_by_counts)
- lower_genes = adata.obs.log1p_n_genes_by_counts.median() - 2.5*stats.median_abs_deviation(adata.obs.log1p_n_genes_by_counts)
- adata = adata[adata.obs.log1p_total_counts < upper_counts, :]
- adata = adata[adata.obs.log1p_total_counts > lower_counts, :]
- adata = adata[adata.obs.log1p_n_genes_by_counts > lower_genes, :]
- adata = adata[adata.obs.log1p_n_genes_by_counts < upper_genes, :]
- adata = adata[adata.obs.pct_counts_mt < 5, :]
- return(adata)
- def normalization (adata, regress=None):
- # normalization normalizes reads to total counts per cell, logarithmizes the data, identifies HVG, and scales the data
- # optionally, normalization can regress out variables of choice using the optional argument regress
- # options for regression
- # Continuous variables: ['total_counts', 'pct_counts_mt', 'n_genes_by_counts']
- # Categorical variable such as ['batch'] but this cannot be combined with continuous variables
- # you cannot run normalization twice on the same dataset
- # examples
- # adata_filtered = normalization(adata_filtered) # no regression
- # adata_filtered = normalization(adata_filtered, ['batch'])
- # adata_filtered = normalization(adata_filtered, ['total_counts', 'pct_counts_mt', 'n_genes_by_counts'])
- sc.pp.normalize_total(adata, target_sum=1e4)
- sc.pp.log1p(adata)
- sc.pp.highly_variable_genes(adata, min_mean=0.0125, max_mean=3, min_disp=0.5)
- # IF YOU HAVE ERRORS DO NOT RUN THE NEXT LINE
- adata.raw = adata # this may mess up some heatmaps later
- adata = adata[:, adata.var.highly_variable]
- if regress is not None:
- sc.pp.regress_out(adata, regress)
- sc.pp.scale(adata, max_value=10)
- return(adata)
- def pca (adata):
- # pca performs pca dimensionality reduction on the data and outputs several graphs to reflect this
- # example
- # pca(adata_filtered)
- sc.tl.pca(adata, svd_solver='arpack')
- sc.pl.pca(adata, color='total_counts')
- sc.pl.pca(adata, color='batch')
- sc.pl.pca_variance_ratio(adata, log=True)
- sc.pl.pca_loadings(adata) # genes contributing to each PC
- def cluster (adata, neighbors, pcs, res):
- # cluster performs non-linear dimensionality reduction and clustering
- # example
- # cluster(adata_filtered, neighbors = 30, pcs = 15, res = 1)
- sc.pp.neighbors(adata, n_neighbors=neighbors, n_pcs=pcs)
- # sc.tl.paga(adata_all_all)
- # sc.pl.paga(adata_all_all, plot=False) # remove `plot=False` if you want to see the coarse-grained graph
- # sc.tl.umap(adata_all_all, init_pos='paga')
- sc.tl.umap(adata)
- #sc.pl.umap(adata)
- sc.tl.leiden(adata, resolution = res) # Default resolution is 1
- sc.pl.umap(adata, color=['leiden'], legend_loc='on data')
- sc.pl.umap(adata, color=['leiden'])
- def filtering (adata):
- # filtering shows some basic info need for getting rid of non-V1 cells
- # example
- # filtering(adata)
- sc.pl.umap(adata, color=['total_counts', 'pct_counts_mt', 'n_genes_by_counts',
- 'log1p_total_counts', 'log1p_pct_counts_mt', 'log1p_n_genes_by_counts'], ncols=3)
- sc.pl.umap(adata, color=['Foxp2', 'St18', 'Calb1', 'Pou6f2', 'Sall3', 'Nr5a2', 'Rnf220', 'Bcl11a', 'Nos1', 'Piezo2', 'Ntn1', 'Sp8'], ncols=3)
- sc.pl.umap(adata, color=['leiden'], legend_loc='on data')
- # ## Section 3: Preliminary analysis -1
- adata_all
- adata_filtered = preprocessing1(adata_all)
- adata_filtered
- QC_graphs(adata_filtered)
- adata_filtered = preprocessing2(adata_filtered)
- adata_filtered
- QC_graphs(adata_filtered)
- adata_filtered = normalization(adata_filtered)
- adata_filtered
- # ## Negative Selection 1
- pca(adata_filtered)
- cluster(adata_filtered, neighbors = 30, pcs = 15, res = 1)
- sc.pl.umap(adata_filtered, color = 'batch')
- filtering(adata_filtered)
- # Glia
- # General
- # Astrocytes
- # Oligodendrocyte-lineage
- # Microglia
- sc.pl.umap(adata_filtered, color=["Sox6",
- "Aldh1l1", "Fgfr3", "Aqp4", "Gfap", "Glul", "Gja1", "Slc1a3", "Slc4a4", "Sox2", "Slc1a2", "S100b", "Ndrg2", "Nkx6-1", "Sox9",
- "Olig2", "Mbp", "Mog", "Mag", "Bcas1", "Pdgfra", "Mbp", "Plp1", "Pmp22", "Prx", "Cspg4", "Gpr17", "Cnp", "Sox10", "Olig1", "Cd9", "Zfp488", "Zfp536", "Nkx6-2", "Nkx2-2", "Cd82", "Mal", "Bmp4", "Aspa", "St18",
- "Aif1", "Trem2", "Inpp5d", "Ctss", "Itgam", "Ptprc", "Cx3cr1", "Cd68", "Adgre1", "Mertk", "Fcer1g", "Fcrls", "Hexb"], ncols = 3)
- # Other non-neuronal cells
- # Vasculature
- # CSF-contacting cells
- # Meninges
- # Ependymal cells
- sc.pl.umap(adata_filtered, color=["Cldn5", "Rgs5", "Flt1", 'Slco1c1', 'Fli1', "Sox17", "Fermt3", "Klf1", "Car2", "Pecam1", "Tek", "Egflam", "Dlc1", "Cald1", "Rapgef5", "Flt4",
- "Pkd2l1", "Pkd1l2", "Myo3b",
- "Dcn", "Col3a1", "Igf2",
- "Sox9", "Sox2",
- "Dnah12", "Spef2", "Ccdc114", "Ddo", "Cfap65", "Ak9", "Fam216b", "Zfp474", "Wdr63", "Ccdc180",
- "Lmx1a", "Msx1", "Pax3", "Wnt1"], ncols = 3)
- # Neurons
- # General excitatory markers
- # Cholinergic markers
- # Neural Crest derived
- sc.pl.umap(adata_filtered, color=["Slc17a6", "Lmx1b", "Ebf2", "Sox5", "Slc17a7", "Ebf1", "Ebf3", "Cacna2d1",
- "Chat", "Slc5a7", "Slc18a3", "Isl1", "Ret", "Slit3", "Prph", "Lhx3", "Isl2", "Mnx1", "Slc8a3",
- "Sox10", "Sox2",
- "Enc1", "Dlg4", "Eno2",
- "Lhx1", "Lhx5", "Pax8", "Lbx1", "Pax2", "Gbx1", "Bhlhe22", "Sall3",
- "Gad1", "Gad2", "Slc32a1",
- "Tal1", "Gata2", "Gata3",
- "Evx1", "Evx2",
- "Dmrt3", "Wt1", "En1"], ncols = 3)
- # dI4
- # dIlA
- sc.pl.umap(adata_filtered, color=["Lhx1", "Lhx5", "Pax8", "Lbx1", "Gbx1", "Bhlhe22",
- "Gbx1", "Pax2","Sall3", "Rorb", "Pdzd2"], ncols = 3)
- # remove clusters
- # First round contaminants
- adata_filtered = adata_filtered[~adata_filtered.obs.leiden.isin(["11", "6", "17", "15", "8", "16", "13", "10", "7", "12", "8", "18", "5", "9"])]
- adata_filtered
- filtering(adata_filtered)
- # ## Negative Selection 2
- pca(adata_filtered)
- cluster(adata_filtered, neighbors = 30, pcs = 15, res = 1)
- sc.pl.umap(adata_filtered, color = 'batch')
- filtering(adata_filtered)
- # Glia
- # General
- # Astrocytes
- # Oligodendrocyte-lineage
- # Microglia
- sc.pl.umap(adata_filtered, color=["Sox6",
- "Aldh1l1", "Fgfr3", "Aqp4", "Gfap", "Glul", "Gja1", "Slc1a3", "Slc4a4", "Sox2", "Slc1a2", "S100b", "Ndrg2", "Nkx6-1", "Sox9",
- "Olig2", "Mbp", "Mog", "Mag", "Bcas1", "Pdgfra", "Mbp", "Plp1", "Pmp22", "Prx", "Cspg4", "Gpr17", "Cnp", "Sox10", "Olig1", "Cd9", "Zfp488", "Zfp536", "Nkx6-2", "Nkx2-2", "Cd82", "Mal", "Bmp4", "Aspa", "St18",
- "Aif1", "Trem2", "Inpp5d", "Ctss", "Itgam", "Ptprc", "Cx3cr1", "Cd68", "Adgre1", "Mertk", "Fcer1g", "Fcrls", "Hexb"], ncols = 3)
- # other non-neuronal
- # Vasculature
- # CSF-contacting cells
- # Meninges
- # Ependymal cells
- sc.pl.umap(adata_filtered, color=["Cldn5", "Rgs5", "Flt1", 'Slco1c1', 'Fli1', "Sox17", "Fermt3", "Klf1", "Car2", "Pecam1", "Tek", "Egflam", "Dlc1", "Cald1", "Rapgef5", "Flt4",
- "Pkd2l1", "Pkd1l2", "Myo3b",
- "Dcn", "Col3a1", "Igf2",
- "Sox9", "Sox2",
- "Dnah12", "Spef2", "Ccdc114", "Ddo", "Cfap65", "Ak9", "Fam216b", "Zfp474", "Wdr63", "Ccdc180",
- "Lmx1a", "Msx1", "Pax3", "Wnt1"], ncols = 3)
- # neurons
- # General excitatory markers
- # Cholinergic markers
- # NC derived
- #
- sc.pl.umap(adata_filtered, color=["Slc17a6", "Lmx1b", "Ebf2", "Sox5", "Slc17a7", "Ebf1", "Ebf3", "Cacna2d1",
- "Chat", "Slc5a7", "Slc18a3", "Isl1", "Ret", "Slit3", "Prph", "Lhx3", "Isl2", "Mnx1", "Slc8a3",
- "Sox10", "Sox2",
- "Enc1", "Dlg4", "Eno2",
- "Lhx1", "Lhx5", "Pax8", "Lbx1", "Pax2", "Gbx1", "Bhlhe22", "Sall3",
- "Gad1", "Gad2", "Slc32a1",
- "Tal1", "Gata2", "Gata3",
- "Evx1", "Evx2",
- "Dmrt3", "Wt1", "En1"], ncols = 3)
- # dI4
- # dIlA
- sc.pl.umap(adata_filtered, color=["Lhx1", "Lhx5", "Pax8", "Lbx1", "Gbx1", "Bhlhe22",
- "Gbx1", "Pax2","Sall3", "Rorb", "Pdzd2"], ncols = 3)
- adata_filtered # before removing contaminates
- # remove clusters
- # Second round
- adata_filtered = adata_filtered[~adata_filtered.obs.leiden.isin(["9", "13", "0", "14"])]
- adata_filtered
- filtering(adata_filtered)
- # ## Select for V1's and perform analysis again
- adata_filtered
- V1 = pd.DataFrame(adata_filtered.obs.index)
- V1_ID = V1[0]
- len(V1_ID)
- adata_all
- adata_V1 = adata_all[V1_ID]
- adata_V1
- adata_V1 = preprocessing1(adata_V1)
- adata_V1
- QC_graphs(adata_V1)
- adata_V1 = normalization(adata_V1, ['batch']) # regress out batch effects`
- adata_V1
- pca(adata_V1)
- cluster(adata_V1, neighbors = 50, pcs = 12, res = 1)
- sc.pl.umap(adata_V1, color = 'batch') # optional
- for batch in ['het', 'ko']:
- sc.pl.umap(adata_V1, color='batch', groups=[batch])
- filtering(adata_V1)
Code_Replicate1.py at commit b6e8214, under MIT · at the source
Overview
- Department of Developmental Neurobiology, St. Jude Children’s Research Hospital,Memphis, TN USA
- Department of Neurology, University Hospital of Cologne,Cologne, Germany
- Center for Pediatric Neurological Disease Research, St. Jude Children’s Research Hospital,Memphis, TN USA
- Allen Institute for Brain Science,Seattle, WA USA
- Department of Statistics, University of Washington,Seattle, WA USA
- Department of Neurology, Center for Translational and Computational Neuroimmunology, Columbia University,New York, NY USA
Abstract
Neural circuits in the spinal cord are composed of diverse populations of interneurons that play crucial roles in shaping motor output. However, the extent of interneuron heterogeneity and how this diversity relates to functional aspects of movement remain unclear. Here, through a focus on mouse spinal V1 interneurons, we show that loss of the V1 transcription factor En1 selectively disrupts the frequency of rhythmic locomotor output but does not disrupt flexion/
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 5 matches between paragraphs and lines of code.
Bikoff-Lab
Availability: 1 check, the latest on 27 September 2026: the link answers (HTTP 200)
- 27 September 2026: the link answers (HTTP 200)
Bikoff-Lab/V1_KO_analysis
b6e8214879b477eaa7f784633160005cbb8a909b, 10 August 2026Availability: 1 check, the latest on 27 September 2026: the link answers
- 27 September 2026: the link answers
5 files
- 01_cellranger/
CellRangerAutoScriptGFP. , Python, 19 lines, 1 matchpy - 02_Data_Processing/
Code_Replicate1.py , Python, 543 lines, 2 matches - 02_Data_Processing/
Code_Replicate2.py , Python, 517 lines, 2 matches - LICENSE, License, 21 lines
- README.md, Text, 132 lines
Code availability
The code used for analysis of sequencing data is available at Github (https://
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;
- 3 scripts, each with its path and the digest of its content;
- 5 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
- geo:GSE275595, at NCBI GEO; found in “Data availability”
Data availability
Raw sequencing data, counts tables, and associated metadata generated in this study have been deposited in the Gene Expression Omnibus (GEO) under accession number GEO: GSE275595 (https://
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, 27 September 2026: the first record
Recorded: type, language, journal, volume, issue, pages, dates, 12 authors, 3 keywords, 11 MeSH terms, 5 funders, 114 references.
Cite
This paper
Trevisan, A. J., Han, K., Chapman, P. D., Kulkarni, A. S., Hinton, J. M., Klein, I., Ramirez, C., Lavado, A., Gatto, G., Gabitto, M. I., Menon, V., & Bikoff, J. B. (2026). Transcriptomic analysis of spinal V1 interneurons informs their multifunctional role in motor output. Nature communications, 17(1), 9614. https://
BibTeX
@article{trevisan2026tra
author = {Trevisan, Alexandra J. and Han, Katie and Chapman, Phillip D. and Kulkarni, Anand S. and Hinton, Jennifer M. and Klein, Ines and Ramirez, Cody and Lavado, Alfonso and Gatto, Graziana and Gabitto, Mariano I. and Menon, Vilas and Bikoff, Jay B.},
title = {{Transcriptomic analysis of spinal V1 interneurons informs their multifunctional role in motor output}},
journal = {Nature communications},
year = {2026},
month = aug,
volume = {17},
number = {1},
pages = {9614},
publisher = {Nature Publishing Group},
issn = {2041-1723},
doi = {10.1038/
url = {https://
pmid = {42711323},
pmcid = {PMC13554063}
}
RIS
TY - JOUR
AU - Trevisan, Alexandra J.
AU - Han, Katie
AU - Chapman, Phillip D.
AU - Kulkarni, Anand S.
AU - Hinton, Jennifer M.
AU - Klein, Ines
AU - Ramirez, Cody
AU - Lavado, Alfonso
AU - Gatto, Graziana
AU - Gabitto, Mariano I.
AU - Menon, Vilas
AU - Bikoff, Jay B.
TI - Transcriptomic analysis of spinal V1 interneurons informs their multifunctional role in motor output
T2 - Nature communications
J2 - Nat Commun
PY - 2026
DA - 2026/
VL - 17
IS - 1
SP - 9614
SN - 2041-1723
PB - Nature Publishing Group
DO - 10.1038/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1038/
"type": "article-journal",
"title": "Transcriptomic analysis of spinal V1 interneurons informs their multifunctional role in motor output",
"container-title": "Nature communications",
"author": [
{
"family": "Trevisan",
"given": "Alexandra J."
},
{
"family": "Han",
"given": "Katie"
},
{
"family": "Chapman",
"given": "Phillip D."
},
{
"family": "Kulkarni",
"given": "Anand S."
},
{
"family": "Hinton",
"given": "Jennifer M."
},
{
"family": "Klein",
"given": "Ines"
},
{
"family": "Ramirez",
"given": "Cody"
},
{
"family": "Lavado",
"given": "Alfonso"
},
{
"family": "Gatto",
"given": "Graziana"
},
{
"family": "Gabitto",
"given": "Mariano I."
},
{
"family": "Menon",
"given": "Vilas"
},
{
"family": "Bikoff",
"given": "Jay B."
}
],
"container-title-short":
"volume": "17",
"issue": "1",
"page": "9614",
"DOI": "10.1038/
"PMID": "42711323",
"PMCID": "PMC13554063",
"ISSN": "2041-1723",
"publisher": "Nature Publishing Group",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
8,
10
]
]
}
}
The tracing map gets a citation of its own once an author has validated it and it has a DOI.
Similar papers
The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.
- [1] doi:10.1038/s41467-026-74228-0 [code]
- Spatial and network principles behind neural generation of locomotion.Journal: Nature communicationsIn common: NumPy, genetics / omics, mouse, cellular / molecular, 19 references
- [2] doi:10.1016/j.cell.2026.05.047 [code]
- An emergent disease-associated motor neuron state precedes cell death in ALS.Journal: CellIn common: Scanpy, pandas, SciPy, 2 other tools, genetics / omics, mouse, cellular / molecular, 7 references
- [3] doi:10.1016/j.isci.2026.115196 [code]
- Transcriptional and cellular maturation of the chick spinal cord in the context of distinct neuromuscular circuits.Journal: iScienceIn common: 10 references
- [4] doi:10.1038/s41467-026-76054-w [code]
- Distinct differentiation trajectories leave lasting impacts on gene regulation and function of V2a neurons.Journal: Nature communicationsIn common: Scanpy, pandas, Matplotlib, 1 other tool, cellular / molecular, 4 references
- [5] doi:10.7554/elife.106347 [code]
- Esr1-dependent signaling and transcriptional maturation in the medial preoptic area of the hypothalamus shape the development of mating behavior during adolescence.Journal: eLifeIn common: Scanpy, scikit-learn, pandas, 3 other tools, genetics / omics, mouse, 4 references
- [6] doi:10.1038/s41467-026-69944-6 [code]
- Multi-modal dissection of cell-type specific TDP-43 pathology in the motor cortex.Journal: Nature communicationsIn common: Scanpy, pandas, SciPy, 2 other tools, genetics / omics, 5 references
- [7] doi:10.1038/s41467-026-73883-7 [code]
- In situ graphene-seq: spatial transcriptomics and chronic electrophysiological characterization of tissue microenvironments.Journal: Nature communicationsIn common: Scanpy, scikit-learn, pandas, 3 other tools, genetics / omics, cellular / molecular, 3 references
- [8] doi:10.1038/s42003-026-10034-0 [code]
- Region- and cell type-specific changes in gene expression in the cerebellum after classical fear conditioning.Journal: Communications biologyIn common: Scanpy, pandas, SciPy, 2 other tools, genetics / omics, mouse, cellular / molecular, 4 references
- [9] doi:10.1038/s41467-026-74171-0 [code]
- Cluster replicability in single-cell and single-nucleus atlases of the mouse brain.Journal: Nature communicationsIn common: Scanpy, pandas, SciPy, 1 other tool, genetics / omics, mouse, cellular / molecular, 4 references
- [10] doi:10.1016/j.celrep.2026.117073 [code]
- Single-cell epigenomics uncovers heterochromatin instability and transcription factor dysfunction during mouse brain aging.Journal: Cell reportsIn common: Scanpy, pandas, SciPy, 2 other tools, genetics / omics, mouse, cellular / molecular, 4 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.
Claim this paper
Correct its record
Say what each link of this record is, remove the ones that are not the paper's, add the ones that are missing. The correction becomes a new version of the record, in its Versions section.
Validate its tracing map
You validate the map as this page shows it: 2 repositories of the authors' code, each at its verified commit and with its license, 3 scripts, and 5 matches between paragraphs and code (see the Code and Map sections). It then receives a DOI on Zenodo, with you (your ORCID iD) and OSCR as its creators; the code itself is not deposited.
The map's fingerprint: sha256:e8ce3de3629de6f0…
Add the badge to its README
The badge links the code to this page. Copy one of these into the README of the paper's code: only you decide where it goes, and nothing is changed for you.
Markdown
[, paste the snippet at the top, then “Commit changes…” and, to review it first, “Create a new branch and start a pull request”. You open the pull request; OSCR asks for no permission.
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.
