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
Rossari_SciTraMed_2025
Commits
89afeb84
Commit
89afeb84
authored
Feb 25, 2025
by
Stefano Beretta
Browse files
Upload New File
parent
9633af8b
Changes
1
Hide whitespace changes
Inline
Side-by-side
ProjectTILs/ProjectTILS_CART.R
0 → 100644
View file @
89afeb84
library
(
ProjecTILs
)
library
(
Seurat
)
library
(
ggplot2
)
library
(
patchwork
)
library
(
SignatuR
)
library
(
UCell
)
# Load Referece
wdir
<-
"./ProjectTILs"
ref
<-
load.reference.map
(
paste
(
wdir
,
"ref_TILAtlas_mouse_v1.rds"
,
sep
=
"/"
))
####################
#### CART MAGIC ####
####################
obj
<-
readRDS
(
paste
(
wdir
,
"Full_CART.rds"
,
sep
=
"/"
))
# Project data by subject (two mice separately)
query.list
<-
SplitObject
(
obj
,
split.by
=
"orig.ident"
)
query.projected
<-
make.projection
(
query.list
,
ref
=
ref
,
ncores
=
2
)
query.projected.merged
<-
Reduce
(
f
=
merge.Seurat.embeddings
,
x
=
query.projected
)
query.projected
<-
SplitObject
(
query.projected.merged
,
split.by
=
"PROP.Condition"
)
plots
<-
list
()
lgt
<-
length
(
query.projected
)
palette
<-
ref
@
misc
$
atlas.palette
for
(
i
in
seq_along
(
query.projected
))
{
sample
<-
names
(
query.projected
)[
i
]
plots
[[
i
]]
<-
plot.projection
(
ref
,
query.projected
[[
i
]],
linesize
=
0.5
,
pointsize
=
0
)
+
ggtitle
(
sample
)
+
NoLegend
()
+
ylim
(
-10
,
10
)
}
png
(
file
=
paste
(
wdir
,
"Full_WPRE_CART_TILs.png"
,
sep
=
"/"
),
width
=
1400
,
height
=
400
)
wrap_plots
(
plots
,
ncol
=
4
)
dev.off
()
#### Barplot
tb.full
<-
data.frame
()
palette
<-
ref
@
misc
$
atlas.palette
for
(
i
in
seq_along
(
query.projected
))
{
sample
<-
names
(
query.projected
)[
i
]
print
(
sample
)
query.projected
[[
i
]]
<-
cellstate.predict
(
ref
=
ref
,
query
=
query.projected
[[
i
]],
reduction
=
"umap"
)
metric
<-
"percent"
labels.col
<-
"functional.cluster"
labels
<-
ref
[[
labels.col
]][,
1
]
states_all
<-
levels
(
factor
(
labels
))
query
=
query.projected
[[
i
]]
tb
<-
table
(
factor
(
query
[[
labels.col
]][,
1
],
levels
=
states_all
))
if
(
metric
==
"percent"
)
{
#normalize
tb
<-
tb
*
100
/
sum
(
tb
)
tb.m
<-
reshape2
::
melt
(
tb
)
colnames
(
tb.m
)
<-
c
(
"Cell_state"
,
"Perc_cells"
)
}
else
if
(
metric
==
"count"
)
{
tb.m
<-
reshape2
::
melt
(
tb
)
colnames
(
tb.m
)
<-
c
(
"Cell_state"
,
"Ncells"
)
}
else
{
stop
(
"Unknown metric specified (Must be either 'count' or 'percent')"
)
}
tb.m
$
Group
<-
sample
tb.full
<-
rbind
(
tb.full
,
tb.m
)
}
tb.full
$
Group
<-
factor
(
tb.full
$
Group
,
levels
=
c
(
"Empty"
,
"Ortho"
,
"IFN"
,
"P2A"
))
p
<-
ggplot
(
data
=
tb.full
,
mapping
=
aes
(
x
=
Group
,
y
=
Perc_cells
,
fill
=
Cell_state
))
+
theme_bw
(
base_size
=
18
)
+
theme
(
axis.text.x
=
element_blank
(),
axis.ticks.x
=
element_blank
(),
strip.background
=
element_rect
(
fill
=
"white"
,
color
=
"white"
))
+
geom_bar
(
stat
=
"identity"
,
position
=
"stack"
,
width
=
1
)
+
scale_fill_manual
(
values
=
palette
,
name
=
"Treatment"
)
+
scale_y_continuous
(
n.breaks
=
10
)
+
ggtitle
(
"Cd8+ WPRE+"
)
+
ylab
(
"% Cells"
)
+
xlab
(
""
)
+
facet_grid
(
.
~
Group
,
scales
=
"free_x"
)
ggsave
(
filename
=
paste
(
wdir
,
"Full_WPRE_CART_TILs_barplot.png"
,
sep
=
"/"
),
width
=
7
,
height
=
7
)
########################
#### CART MAGIC Neg ####
########################
obj
<-
readRDS
(
paste
(
wdir
,
"Full_CART_Neg_final.rds"
,
sep
=
"/"
))
# Project data by subject (two mice separately)
query.list
<-
SplitObject
(
obj
,
split.by
=
"orig.ident"
)
query.projected
<-
make.projection
(
query.list
,
ref
=
ref
,
ncores
=
2
)
query.projected.merged
<-
Reduce
(
f
=
merge.Seurat.embeddings
,
x
=
query.projected
)
query.projected
<-
SplitObject
(
query.projected.merged
,
split.by
=
"PROP.Condition"
)
plots
<-
list
()
lgt
<-
length
(
query.projected
)
palette
<-
ref
@
misc
$
atlas.palette
for
(
i
in
seq_along
(
query.projected
))
{
sample
<-
names
(
query.projected
)[
i
]
plots
[[
i
]]
<-
plot.projection
(
ref
,
query.projected
[[
i
]],
linesize
=
0.5
,
pointsize
=
0
)
+
ggtitle
(
sample
)
+
NoLegend
()
+
ylim
(
-10
,
10
)
}
png
(
file
=
paste
(
wdir
,
"Full_WPRE_CART_Neg_TILs.png"
,
sep
=
"/"
),
width
=
1400
,
height
=
400
)
wrap_plots
(
plots
,
ncol
=
4
)
dev.off
()
#### Barplot
tb.full
<-
data.frame
()
palette
<-
ref
@
misc
$
atlas.palette
for
(
i
in
seq_along
(
query.projected
))
{
sample
<-
names
(
query.projected
)[
i
]
print
(
sample
)
query.projected
[[
i
]]
<-
cellstate.predict
(
ref
=
ref
,
query
=
query.projected
[[
i
]],
reduction
=
"umap"
)
metric
<-
"percent"
labels.col
<-
"functional.cluster"
labels
<-
ref
[[
labels.col
]][,
1
]
states_all
<-
levels
(
factor
(
labels
))
query
=
query.projected
[[
i
]]
tb
<-
table
(
factor
(
query
[[
labels.col
]][,
1
],
levels
=
states_all
))
if
(
metric
==
"percent"
)
{
#normalize
tb
<-
tb
*
100
/
sum
(
tb
)
tb.m
<-
reshape2
::
melt
(
tb
)
colnames
(
tb.m
)
<-
c
(
"Cell_state"
,
"Perc_cells"
)
}
else
if
(
metric
==
"count"
)
{
tb.m
<-
reshape2
::
melt
(
tb
)
colnames
(
tb.m
)
<-
c
(
"Cell_state"
,
"Ncells"
)
}
else
{
stop
(
"Unknown metric specified (Must be either 'count' or 'percent')"
)
}
tb.m
$
Group
<-
sample
tb.full
<-
rbind
(
tb.full
,
tb.m
)
}
tb.full
$
Group
<-
factor
(
tb.full
$
Group
,
levels
=
c
(
"Empty"
,
"Ortho"
,
"IFN"
,
"P2A"
))
p
<-
ggplot
(
data
=
tb.full
,
mapping
=
aes
(
x
=
Group
,
y
=
Perc_cells
,
fill
=
Cell_state
))
+
theme_bw
(
base_size
=
18
)
+
theme
(
axis.text.x
=
element_blank
(),
axis.ticks.x
=
element_blank
(),
strip.background
=
element_rect
(
fill
=
"white"
,
color
=
"white"
))
+
geom_bar
(
stat
=
"identity"
,
position
=
"stack"
,
width
=
1
)
+
scale_fill_manual
(
values
=
palette
,
name
=
"Treatment"
)
+
scale_y_continuous
(
n.breaks
=
10
)
+
ggtitle
(
"Cd8+ WPRE-"
)
+
ylab
(
"% Cells"
)
+
xlab
(
""
)
+
facet_grid
(
.
~
Group
,
scales
=
"free_x"
)
ggsave
(
filename
=
paste
(
wdir
,
"Full_WPRE_CART_Neg_TILs_barplot.png"
,
sep
=
"/"
),
width
=
7
,
height
=
7
)
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