Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
custom
Zonari_mPBHSCexp_2025
Zonari_mPBHSCexp_2025_scRNAseq
Commits
c3d53536
Commit
c3d53536
authored
Apr 14, 2026
by
Matteo Barcella
Browse files
Adding supplemental 2C figure script
parent
83bb9f88
Changes
2
Hide whitespace changes
Inline
Side-by-side
Senescence_HSC_Bulk_Focus_fig2C_dataset.R
0 → 100644
View file @
c3d53536
library
(
Seurat
)
library
(
ggplot2
)
library
(
dittoSeq
)
library
(
UCell
)
library
(
openxlsx
)
library
(
ggpubr
)
library
(
dplyr
)
library
(
tidyr
)
library
(
purrr
)
library
(
clusterProfiler
)
library
(
ComplexHeatmap
)
library
(
circlize
)
outdir
<-
"HSC_vs_Bulk_Focus_Supplemental_2C/"
dir.create
(
outdir
)
obj_fig2C
<-
readRDS
(
"Fig2C_Dataset.rds"
)
senmayo_file
<-
"https://static-content.springer.com/esm/art%3A10.1038%2Fs41467-022-32552-1/MediaObjects/41467_2022_32552_MOESM4_ESM.xlsx"
Senmayo_df
<-
read.xlsx
(
xlsxFile
=
senmayo_file
,
sheet
=
1
)
SenMayo_list
<-
list
(
SenMayo
=
Senmayo_df
$
`Gene(human)`
)
senescence_custom
<-
read.gmt
(
gmtfile
=
"senescence_signatures_mod.gmt"
)
senescence_custom_list
<-
split
(
senescence_custom
$
gene
,
senescence_custom
$
term
)
senescence_custom_list
<-
lapply
(
senescence_custom_list
,
unique
)
senescence_custom_list
$
SenMayo
<-
NULL
# merging lists
senescence_list
<-
c
(
SenMayo_list
,
senescence_custom_list
)
# missing gene list
missing_genes
<-
lapply
(
senescence_list
,
function
(
gens
)
{
setdiff
(
gens
,
rownames
(
obj_fig2C
@
assays
$
RNA
@
counts
))
})
# Visualizza (solo gruppi con missing)
print
(
missing_genes
[
sapply
(
missing_genes
,
length
)
>
0
])
# Salva in un file CSV per ogni gruppo (opzionale)
for
(
nome_gruppo
in
names
(
missing_genes
))
{
if
(
length
(
missing_genes
[[
nome_gruppo
]])
>
0
)
{
write.csv
(
data.frame
(
Missing_Genes
=
missing_genes
[[
nome_gruppo
]]),
file
=
paste0
(
outdir
,
nome_gruppo
,
"_obj_2C_missing_genes.csv"
),
row.names
=
FALSE
)
}
}
# subsetting
obj_fig2C_Cs
<-
AddModuleScore_UCell
(
obj
=
subset
(
obj_fig2C
,
idents
=
c
(
"C04"
,
"C02"
,
"C03"
)),
features
=
senescence_list
,
ncores
=
1
)
# Warning: The following genes were not found and will be
# imputed to exp=0:
# * ANGPTL4,BMP2,C3,CCL1,CCL13,CCL16,CCL20,CCL24,CCL26,CCL4,CCL7,CCL8,CSF2,CST4,CXCL10,CXCL12,CXCL16,CXCR2,EGFR,ESM1,
# FGF2,IGF1,IGFBP1,IGFBP3,IGFBP5,IL13,IL1A,IL2,IL32,IL6,INHA,KITLG,MMP10,MMP12,MMP13,MMP3,MMP9,PTGES,SEMA3F,SERPINB4,
# TNFRSF11B,WNT16,WNT2,ELMOD1,RND3,CLSTN2,CLDN1,SMCO3,BMS1P9,MT-TA,MT-TN,MT-TC,MT-TY,DIO2,AC002480.1,LINC02154,TM4SF1-AS1,
# PTCHD4,PURPL,FAM129A,CBS,AC074135.1,P16,P21,EFNB3,GDNF,BATF2,C9ORF47,CCDC80,CD163L1,COL17A1,MIR936,IDO1,IFI27,IL1RN,
# MIR4632,ODZ2,RSPO3,0CST1,CST2,KLK5,SAA1,SAA2,CRYAB,LUM,ACE2,CXCL11,EBI3,CLCA2,SBSN,CH3L2,TCN1,IGFL2,CILP,TAC3,COL10A1,
# EPYC,PSG6,PSG2,PSG7,FOLR3,MXRA5,IL368,TREM2,JCHAN,C5ORF46,SLAMF1,IGFL1,MUC17,RPTN,IGHG1,BPIFC,ALDH1A3,CCN2,CDKN2B,COL1A2,
# IFNG,TFAP2A,CCDC33,CPA2,CPE,CXCL5,CXCL9,FAIM2,HAMP,HIF3A,IGF2BP1,IL1F9,IL8,LASS3,LPO,LSG15,MCP2,MCP4,MSX2,PLA2G2A,PLA2G2F,PRSS22,SOX17
# releveling and rename levels across timepoint ##
obj_fig2C_Cs
$
orig.ident.f
<-
factor
(
obj_fig2C_Cs
$
orig.ident
,
levels
=
c
(
"C04"
,
"C02"
,
"C03"
),
labels
=
c
(
"NC"
,
"Day4"
,
"Day7"
))
obj_fig2C_Cs
$
Timepoint.f
<-
obj_fig2C_Cs
$
orig.ident.f
obj_fig2C_Cs
$
PopTimepoint
<-
paste0
(
obj_fig2C_Cs
$
Population
,
"_"
,
obj_fig2C_Cs
$
Timepoint.f
)
obj_fig2C_Cs
$
PopTimepoint
<-
factor
(
obj_fig2C_Cs
$
PopTimepoint
,
levels
=
with
(
expand.grid
(
levels
(
obj_fig2C_Cs
$
Timepoint.f
)
,
levels
(
obj_fig2C_Cs
$
Population
)),
paste0
(
Var2
,
"_"
,
Var1
)))
fig2C_terms
<-
grep
(
x
=
colnames
(
obj_fig2C_Cs
@
meta.data
),
pattern
=
"UCell"
,
value
=
T
)
# subsetting dataset looking only at HSC or Bulk #
obj_fig2C_Cs
$
Group
<-
ifelse
(
test
=
obj_fig2C_Cs
$
Population
!=
"HSC"
,
"Bulk"
,
"HSC"
)
obj_fig2C_Cs
$
Group
<-
factor
(
obj_fig2C_Cs
$
Group
,
levels
=
c
(
"HSC"
,
"Bulk"
))
obj_fig2C_Cs
$
GroupTimepoint
<-
paste0
(
obj_fig2C_Cs
$
Group
,
"_"
,
obj_fig2C_Cs
$
Timepoint.f
)
obj_fig2C_Cs
$
GroupTimepoint
<-
factor
(
obj_fig2C_Cs
$
GroupTimepoint
,
levels
=
c
(
"HSC_NC"
,
"Bulk_NC"
,
"HSC_Day4"
,
"Bulk_Day4"
,
"HSC_Day7"
,
"Bulk_Day7"
))
datasets
<-
list
(
fig2C
=
list
(
object
=
obj_fig2C_Cs
,
var1
=
"Timepoint.f"
,
var2
=
"Group"
,
var3
=
"GroupTimepoint"
,
reduction
=
"umap.harmony.orig.ident"
,
sigterms
=
fig2C_terms
)
)
### Custom plot fig2c ###
pdf
(
file
=
paste0
(
outdir
,
"Fig2C_Heatmap_Senescence_terms_Group_x_TP_with_legend.pdf"
),
width
=
6
,
height
=
3
)
datasetid
<-
names
(
datasets
)[
1
]
idvar
<-
"var3"
meta_df
<-
datasets
[[
datasetid
]][[
"object"
]]
@
meta.data
%>%
select
(
all_of
(
c
(
datasets
[[
datasetid
]][[
idvar
]],
datasets
[[
datasetid
]][[
"sigterms"
]])))
%>%
group_by
(
!!
sym
(
datasets
[[
datasetid
]][[
idvar
]]))
%>%
summarise
(
across
(
all_of
(
datasets
[[
datasetid
]][[
"sigterms"
]]),
~
median
(
.x
,
na.rm
=
TRUE
),
.names
=
"{.col}"
),
.groups
=
'drop'
)
meta_df
<-
as.data.frame
(
meta_df
)
rownames
(
meta_df
)
<-
meta_df
$
GroupTimepoint
meta_df
$
GroupTimepoint
<-
NULL
meta_df
<-
meta_df
[,
colSums
(
abs
(
meta_df
))
>
0
,
drop
=
FALSE
]
# traspose dmatrix
heatmap_mat
<-
as.matrix
(
t
(
meta_df
))
colnames
(
heatmap_mat
)
<-
rownames
(
meta_df
)
# Scaling (z-score for row) - needed for complexheatmap
heatmap_mat_t
<-
t
(
scale
(
t
(
heatmap_mat
)))
# Custom palette
col_fun
<-
colorRamp2
(
c
(
-2
,
0
,
2
),
c
(
"#00B4D8"
,
"white"
,
"#FF2E35"
))
# "#00B4D8" #FF2E35
ncol_total
<-
ncol
(
heatmap_mat_t
)
col_split
<-
c
(
rep
(
"NC"
,
2
),
rep
(
"Day4"
,
2
),
rep
(
"Day7"
,
ncol_total
-
4
))
rownames
(
heatmap_mat_t
)
<-
gsub
(
x
=
rownames
(
heatmap_mat_t
),
pattern
=
"_UCell"
,
replacement
=
""
)
p
<-
Heatmap
(
heatmap_mat_t
,
name
=
"Median Z-score"
,
col
=
col_fun
,
cluster_rows
=
TRUE
,
cluster_columns
=
FALSE
,
show_row_names
=
TRUE
,
show_column_names
=
TRUE
,
row_names_gp
=
gpar
(
fontsize
=
8
),
column_names_gp
=
gpar
(
fontsize
=
8
),
width
=
unit
(
4
,
"cm"
),
column_split
=
factor
(
col_split
,
levels
=
unique
(
col_split
)),
show_heatmap_legend
=
TRUE
)
#show_heatmap_legend = FALSE)
draw
(
p
,
padding
=
unit
(
c
(
2
,
2
,
2
,
10
),
"mm"
))
# c(bottom, left, top, right)
dev.off
()
senescence_signatures_mod.gmt
0 → 100755
View file @
c3d53536
Casella https://doi.org/10.1093/nar/gkz555 TMEM159 CHPF2 SLC9A7 PLOD1 FAM234B DHRS7 SRPX SRPX2 TNFSF13B PDLIM1 ELMOD1 CCND3 TMEM30A STAT1 RND3 TMEM59 SARAF SLCO2B1 ARRDC4 PAM WDR78 CLSTN2 WDR63 NCSTN SLC16A14 GPR155 CLDN1 JCAD BLCAP FILIP1L TAP1 TNFRSF10C SAMD9L SMCO3 POFUT2 KIAA1671 LRP10 BMS1P9 MT-TA MT-TN MT-TC MT-TY DIO2 MAP4K3-DT AC002480.1 LINC02154 TM4SF1-AS1 PTCHD4 H2AFJ PURPL MCUB FBL HIST1H1D HIST1H1A FAM129A ANP32B PARP1 LBR SSRP1 TMSB15A CBS CDCA7L HIST1H1E CBX2 HIST2H2AB PTMA ITPRIPL1 AC074135.1 P16 P21 TP53
Hernandez https://doi.org/10.1016/j.cub.2017.07.033 ACADVL ADPGK ARHGAP35 ARID2 ASCC1 B4GALT7 BCL2L2 C2CD5 CCND1 CHMP5 CNTLN CREBBP DDA1 DGKA DYNLT3 EFNB3 FAM214B GBE1 GDNF GSTM4 ICE1 KCTD3 KLC1 MEIS1 MT-CYB NFIA NOL3 P4HA2 PATZ1 PCIF1 PDLIM4 PDS5B PLK3 PLXNA3 POFUT2 RAI14 RHNO1 SCOC SLC10A3 SLC16A3 SMO SPATA6 SPIN4 STAG1 SUSD6 TAF13 TMEM87B TOLLIP TRDMT1 TSPAN13 UFM1 USP6NL ZBTB7A ZC3H4 ZNHIT1
Purcell 10.4161/15384101.2014.973327 APOL1 APOL3 ATF3 BATF2 BIRC3 C3 C9ORF47 S1PR3 CCDC80 CD163L1 CD82 CLDN1 COL17A1 MIR936 CTSS CXCL2 CYP1A1 DUSP6 EPSTI1 GBP4 GCA GMPR GNG11 HERC5 ICAM1 IDO1 IFI27 IFI30 IL1A IL1B IL1RN IL32 ISG20 ITGB3 LCP1 LGALS9 MIR4632 TNFRSF1B MLKL MMP12 MYD88 NEGR1 OASL ODZ2 PLAU PMAIP1 RSPO3 RTP4 SCN3A TNFAIP3 TNFAIP6
SenMayo https://www.biorxiv.org/content/10.1101/2021.12.10.472095v1.full ACVR1B ANG ANGPT1 ANGPTL4 AREG AXL BEX3 BMP2 BMP2 C3 CCL1 CCL13 CCL16 CCL2 CCL20 CCL24 CCL26 CCL3 CCL3L1 CCL4 CCL5 CCL7 CCL8 CD55 CD9 CSF1 CSF2 CSF2RB CST4 CTNNB1 CTSB CXCL1 CXCL10 CXCL12 CXCL16 CXCL2 CXCL3 CXCL8 CXCR2 DKK1 EDN1 EGF EGFR EREG ESM1 ETS2 FAS FGF1 FGF2 FGF7 GDF15 GEM GMFG HGF HMGB1 ICAM1 ICAM3 IGF1 IGFBP1 IGFBP2 IGFBP3 IGFB4 IGFBP5 IGFBP6 IGFBP7 IL10 IL13 IL15 IL18 IL1A IL1B IL2 IL32 IL6 IL6ST IL7 INHA IQGAP2 ITGA2 ITPKA JUN KITLG LCP1 MIF MMP1 MMP10 MMP12 MMP13 MMP14 MMP2 MMP3 MMP9 NAP1L4 NRG1 PAPPA PEMA1 PGF PIGF PLAT PLAU PLAUR PTNP1 PTGER2 PTGES RPS6KA5 SCAMP4 SELPLG SEMA3F SERPINB4 SERPUNINE1 SERPINE2 SPP1 SPX TIMP2 TNF TNFRSF10C TNFRSF11B TNFRSF1A TNFRSF1B TUBGCP2 VEGFA VEGFC VGF WNT16 WNT2
Sencan Sencan LCN2 0CST1 CST2 KLK5 MMP1 IL6 SAA1 SAA2 CRYAB LUM ACE2 CXCL10 CXCL11 EBI3 MMP10 IL1B IL1A CSF2 SERPINB2 MMP3 CLCA2 SBSN CH3L2 TCN1 IGFL2 CILP TAC3 COL10A1 ADAMTS6 EPYC PSG6 PSG2 PSG7 CCL3 FOLR3 MXRA5 MMP12 IL368 TREM2 CD163 JCHAN C5ORF46 SLAMF1 IGFL1 PPBP MUC17 COL6A5 RPTN IGHG1 BPIFC
FRIDMAN_SENESCENCE_UP FRIDMAN_SENESCENCE_UP ALDH1A3 AOPEP CCN2 CCND1 CD44 CDKN1A CDKN1C CDKN2A CDKN2B CDKN2D CITED2 CLTB COL1A2 CREG1 CRYAB CXCL14 CYP1B1 EIF2S2 ESM1 F3 FILIP1L FN1 GSN GUK1 HBS1L HPS5 HSPA2 HTATIP2 IFI16 IFNG IGFBP1 IGFBP2 IGFBP3 IGFBP4 IGFBP5 IGFBP6 IGFBP7 IGSF3 ING1 IRF5 IRF7 ISG15 MAP1LC3B MAP2K3 MDM2 MMP1 NDN NME2 NRG1 OPTN PEA15 RAB13 RAB31 RAB5B RABGGTA RAC1 RBL2 RGL2 RHOB RRAS S100A11 SERPINB2 SERPINE1 SMPD1 SMURF2 SOD1 SPARC STAT1 TES TFAP2A TGFB1I1 THBS1 TNFAIP2 TNFAIP3 TP53 TSPYL5 VIM
Pribluda Pribluda ANG ATF4 ATF5 AXL BHLHE40 CCDC33 CCL20 CCL3 CD14 CD276 CD40 CD55 CD9 CDKN1A CDKN1B CDKN2B CPA2 CPE CSF2 CSF2RB CXCL1 CXCL10 CXCL2 CXCL3 CXCL5 CXCL9 ETS1 ETS2 ETV5 FAIM2 FAM129A FAS GEM GMFG HAMP HGF HIF3A ICAM1 ID1 IFIT1 IFIT2 IFIT3 IFITM3 IGF1 IGF2BP1 IGF2R IGFBP1 IGFBP3 IGFBP4 IGFBP5 IGFBP6 IGFBP7 IL1A IL1B IL1F9 IL1RN IL6 IL7 IL8 IL13 IL15 IQGAP2 ITGA2 ITPKA JUN LASS3 LPO LSG15 MAPK11 MCP2 MCP4 MIF MSX2 MX1 MX2 NXN OAS2 OAS3 OLR1 PECAM1 PHLDA1 PIGF PLA2G2A PLA2G2F PRSS22 PTGES REL RPS6KA5 RUNX1 SERPINE1 SLC7A11 SOX17 SOX4 TGFB1 TIMP2 TIRAP TLR2 TNFRSF10B TNFRSF19 TNFRSF8 TNIP2 USP18 WWC2 XAF1
Senescence_Demaria Senescence_Demaria PLK3 SPATA6 NFIA TAF13 GSTM4 KCTD3 MEIS1 TMEM87B GBE1 STAG1 SCOC ICE1 RAI14 GDNF P4HA2 PDLIM4 B4GALT7 TSPAN13 ZNHIT1 SMO CNTLN CHMP5 FAM214B USP6NL TRDMT1 ASCC1 TOLLIP CCND1 RHNO1 C2CD5 ARID2 DGKA PDS5B UFM1 BCL2L2 SUSD6 KLC1 ADPGK CREBBP NOL3 ACADVL EFNB3 SLC16A3 ZBTB7A DDA1 ARHGAP35 ZC3H4 PCIF1 POFUT2 PATZ1 DYNLT3 SPIN4 PLXNA3 SLC10A3 MT-CYB
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment