print_tab <- function(plt,title) {
cat("## ",title,"{.unnumbered }"," \n")
print(
plt
)
plot.new()
dev.off()
cat(' \n\n')
}
All cells combined
lung = SetIdent(object = lung,value = "program.assignment")
lung = RenameIdents(object = lung,"metagene.1" = "Hypoxia")
lung = RenameIdents(object = lung,"metagene.2" = "TNFa")
lung = RenameIdents(object = lung,"metagene.1" = "cell_cycle")
Error in RenameIdents.Seurat(object = lung, metagene.1 = "cell_cycle") :
Cannot find any of the provided identities
df = FetchData(object = lung,vars = c("program.assignment","time.point")) %>%
filter (program.assignment %in% c("Hypoxia","TNFa")) %>%
filter (time.point %in% c("pre-treatment","on-treatment")) %>%
droplevels()
test = fisher.test(table(df))
library(ggstatsplot)
print(
ggbarstats(
df, program.assignment, time.point,
results.subtitle = FALSE,
subtitle = paste0(
"Fisher's exact test", ", p-value = ",
ifelse(test$p.value < 0.001, "< 0.001", round(test$p.value, 3))
)
)
)

cell_percentage(dataset = lung,time.point_var = "time.point")

Per
patient fisher test
patients_vector = lung$patient.ident %>% unique()
for (patient_name in patients_vector) {
df = FetchData(object = lung,vars = c("program.assignment","patient.ident","time.point")) %>%
filter (patient.ident == patient_name) %>%
filter (program.assignment %in% c("Hypoxia","TNFa")) %>%
filter (time.point %in% c("pre-treatment","on-treatment")) %>%
select(-patient.ident) %>%
droplevels()
test = fisher.test(table(df))
library(ggstatsplot)
p = ggbarstats(
df, program.assignment, time.point,
results.subtitle = FALSE,
subtitle = paste0(
"Fisher's exact test", ", p-value = ",
ifelse(test$p.value < 0.001, "< 0.001", round(test$p.value, 3))
),title = patient_name
)
print_tab(plt = p,title = patient_name)
}
X1071

X1144

X1167

MGH088

MGH1066

X1155

NA
Per
patient programs ratio
cell_percentage = function(dataset,time.point_var) {
data =FetchData(object = dataset,vars = c("program.assignment",time.point_var))
data = data %>% dplyr::count(program.assignment, .[time.point_var]) %>% dplyr::add_count(program.assignment, wt = n, name = "overall")%>%
mutate(proportion = n / overall)
plt_list = list()
time.point_var = ensym(time.point_var)
for (program_name in unique(data$program.assignment)) {
program_data = data[data$program.assignment == program_name,]
p = ggplot(data=program_data, aes(x=!!time.point_var, y=proportion)) +geom_bar(stat="identity")+ylab("precentage") +
ggtitle("program" %>% paste(program_data$program.assignment %>% unique() %>% as.character()))+
scale_y_continuous(limits = c(0,1))
plt_list[[program_name]] = p
}
p = ggarrange(plotlist = plt_list )
return(p)
}
patients_vector = lung$patient.ident %>% unique()
for (patient_name in patients_vector) {
patient_data = subset(x = lung, subset = patient.ident == patient_name)
print_tab(plt = cell_percentage(dataset = patient_data,time.point_var = "time.point"),title = patient_name)
}
X1071

X1144

X1167

MGH088

MGH1066

X1155

NA
NA
LS0tCnRpdGxlOiAnYHIgcnN0dWRpb2FwaTo6Z2V0U291cmNlRWRpdG9yQ29udGV4dCgpJHBhdGggJT4lIGJhc2VuYW1lKCkgJT4lIGdzdWIocGF0dGVybiA9ICJcXC5SbWQiLHJlcGxhY2VtZW50ID0gIiIpYCcgCmF1dGhvcjogIkF2aXNoYWkgV2l6ZWwiCmRhdGU6ICdgciBTeXMuRGF0ZSgpYCcKb3V0cHV0OiAKICBodG1sX25vdGVib29rOiAKICAgIGNvZGVfZm9sZGluZzogaGlkZQogICAgdG9jOiB5ZXMKICAgIHRvY19jb2xsYXBzZTogeWVzCiAgICB0b2NfZmxvYXQ6IAogICAgICBjb2xsYXBzZWQ6IEZBTFNFCiAgICBudW1iZXJfc2VjdGlvbnM6IHRydWUKICAgIHRvY19kZXB0aDogMQotLS0KCmBgYHtyfQpwcmludF90YWIgPC0gZnVuY3Rpb24ocGx0LHRpdGxlKSB7CiAgIGNhdCgiIyMgIix0aXRsZSwiey51bm51bWJlcmVkIH0iLCIgXG4iKQogIHByaW50KAogICAgcGx0CiAgICApCiAgcGxvdC5uZXcoKQogIGRldi5vZmYoKQogIGNhdCgnIFxuXG4nKQp9CmBgYAoKIyBBbGwgY2VsbHMgY29tYmluZWQgCioqKgpgYGB7cn0KbHVuZyA9IFNldElkZW50KG9iamVjdCA9IGx1bmcsdmFsdWUgPSAicHJvZ3JhbS5hc3NpZ25tZW50IikKbHVuZyAgPSBSZW5hbWVJZGVudHMob2JqZWN0ID0gbHVuZywibWV0YWdlbmUuMSIgPSAiSHlwb3hpYSIpCmx1bmcgID0gUmVuYW1lSWRlbnRzKG9iamVjdCA9IGx1bmcsIm1ldGFnZW5lLjIiID0gIlRORmEiKQpsdW5nICA9IFJlbmFtZUlkZW50cyhvYmplY3QgPSBsdW5nLCJtZXRhZ2VuZS4zIiA9ICJjZWxsX2N5Y2xlIikKCmx1bmckcHJvZ3JhbS5hc3NpZ25tZW50ID0gSWRlbnRzKG9iamVjdCA9IGx1bmcpCmBgYAoKYGBge3J9CiBkZiAgPSBGZXRjaERhdGEob2JqZWN0ID0gbHVuZyx2YXJzID0gYygicHJvZ3JhbS5hc3NpZ25tZW50IiwidGltZS5wb2ludCIpKSAlPiUgCiAgICBmaWx0ZXIgKHByb2dyYW0uYXNzaWdubWVudCAlaW4lIGMoIkh5cG94aWEiLCJUTkZhIikpICU+JSAKICAgIGZpbHRlciAodGltZS5wb2ludCAlaW4lIGMoInByZS10cmVhdG1lbnQiLCJvbi10cmVhdG1lbnQiKSkgJT4lIAogICAgZHJvcGxldmVscygpIAogIHRlc3QgPSBmaXNoZXIudGVzdCh0YWJsZShkZikpCiAgICAKICBsaWJyYXJ5KGdnc3RhdHNwbG90KQpwcmludCgKICAgIGdnYmFyc3RhdHMoCiAgICBkZiwgcHJvZ3JhbS5hc3NpZ25tZW50LCB0aW1lLnBvaW50LAogICAgcmVzdWx0cy5zdWJ0aXRsZSA9IEZBTFNFLAogICAgc3VidGl0bGUgPSBwYXN0ZTAoCiAgICAgICJGaXNoZXIncyBleGFjdCB0ZXN0IiwgIiwgcC12YWx1ZSA9ICIsCiAgICAgIGlmZWxzZSh0ZXN0JHAudmFsdWUgPCAwLjAwMSwgIjwgMC4wMDEiLCByb3VuZCh0ZXN0JHAudmFsdWUsIDMpKQogICAgKQogICkKKQpgYGAKYGBge3J9CmNlbGxfcGVyY2VudGFnZShkYXRhc2V0ID0gbHVuZyx0aW1lLnBvaW50X3ZhciA9ICJ0aW1lLnBvaW50IikKYGBgCgojIFBlciBwYXRpZW50IGZpc2hlciB0ZXN0IHsudGFic2V0IH0KKioqCgpgYGB7ciByZXN1bHRzPSdhc2lzJ30KcGF0aWVudHNfdmVjdG9yID0gbHVuZyRwYXRpZW50LmlkZW50ICU+JSB1bmlxdWUoKQpmb3IgKHBhdGllbnRfbmFtZSBpbiBwYXRpZW50c192ZWN0b3IpIHsKICBkZiAgPSBGZXRjaERhdGEob2JqZWN0ID0gbHVuZyx2YXJzID0gYygicHJvZ3JhbS5hc3NpZ25tZW50IiwicGF0aWVudC5pZGVudCIsInRpbWUucG9pbnQiKSkgJT4lIAogICAgZmlsdGVyIChwYXRpZW50LmlkZW50ID09IHBhdGllbnRfbmFtZSkgJT4lIAogICAgZmlsdGVyIChwcm9ncmFtLmFzc2lnbm1lbnQgJWluJSBjKCJIeXBveGlhIiwiVE5GYSIpKSAlPiUgCiAgICBmaWx0ZXIgKHRpbWUucG9pbnQgJWluJSBjKCJwcmUtdHJlYXRtZW50Iiwib24tdHJlYXRtZW50IikpICU+JSAKICAgIHNlbGVjdCgtcGF0aWVudC5pZGVudCkgJT4lIAogICAgZHJvcGxldmVscygpIAogIHRlc3QgPSBmaXNoZXIudGVzdCh0YWJsZShkZikpCiAgICAKICBsaWJyYXJ5KGdnc3RhdHNwbG90KQoKICAgcCA9ICBnZ2JhcnN0YXRzKAogICAgZGYsIHByb2dyYW0uYXNzaWdubWVudCwgdGltZS5wb2ludCwKICAgIHJlc3VsdHMuc3VidGl0bGUgPSBGQUxTRSwKICAgIHN1YnRpdGxlID0gcGFzdGUwKAogICAgICAiRmlzaGVyJ3MgZXhhY3QgdGVzdCIsICIsIHAtdmFsdWUgPSAiLAogICAgICBpZmVsc2UodGVzdCRwLnZhbHVlIDwgMC4wMDEsICI8IDAuMDAxIiwgcm91bmQodGVzdCRwLnZhbHVlLCAzKSkKICAgICksdGl0bGUgPSBwYXRpZW50X25hbWUKICApCnByaW50X3RhYihwbHQgPSBwLHRpdGxlID0gcGF0aWVudF9uYW1lKQp9CmBgYAoKIyBQZXIgcGF0aWVudCBwcm9ncmFtcyByYXRpbyB7LnRhYnNldH0KKioqCgpgYGB7cn0KY2VsbF9wZXJjZW50YWdlID0gZnVuY3Rpb24oZGF0YXNldCx0aW1lLnBvaW50X3ZhcikgewogICAgZGF0YSA9RmV0Y2hEYXRhKG9iamVjdCA9IGRhdGFzZXQsdmFycyA9IGMoInByb2dyYW0uYXNzaWdubWVudCIsdGltZS5wb2ludF92YXIpKQogIGRhdGEgPSBkYXRhICU+JSBkcGx5cjo6Y291bnQocHJvZ3JhbS5hc3NpZ25tZW50LCAuW3RpbWUucG9pbnRfdmFyXSkgJT4lICBkcGx5cjo6YWRkX2NvdW50KHByb2dyYW0uYXNzaWdubWVudCwgd3QgPSBuLCBuYW1lID0gIm92ZXJhbGwiKSU+JSAKICBtdXRhdGUocHJvcG9ydGlvbiA9IG4gLyBvdmVyYWxsKSAgIAogIAogIHBsdF9saXN0ID0gbGlzdCgpCiAgICB0aW1lLnBvaW50X3ZhciA9IGVuc3ltKHRpbWUucG9pbnRfdmFyKQogIGZvciAocHJvZ3JhbV9uYW1lIGluIHVuaXF1ZShkYXRhJHByb2dyYW0uYXNzaWdubWVudCkpIHsKICAgIHByb2dyYW1fZGF0YSA9IGRhdGFbZGF0YSRwcm9ncmFtLmFzc2lnbm1lbnQgPT0gcHJvZ3JhbV9uYW1lLF0KICAgIHAgPSBnZ3Bsb3QoZGF0YT1wcm9ncmFtX2RhdGEsIGFlcyh4PSEhdGltZS5wb2ludF92YXIsIHk9cHJvcG9ydGlvbikpICtnZW9tX2JhcihzdGF0PSJpZGVudGl0eSIpK3lsYWIoInByZWNlbnRhZ2UiKSArCiAgICAgIGdndGl0bGUoInByb2dyYW0iICU+JSBwYXN0ZShwcm9ncmFtX2RhdGEkcHJvZ3JhbS5hc3NpZ25tZW50ICU+JSB1bmlxdWUoKSAlPiUgYXMuY2hhcmFjdGVyKCkpKSsKICAgICAgc2NhbGVfeV9jb250aW51b3VzKGxpbWl0cyA9IGMoMCwxKSkgICAKICAgICAgcGx0X2xpc3RbW3Byb2dyYW1fbmFtZV1dID0gcAogIH0KICBwID0gZ2dhcnJhbmdlKHBsb3RsaXN0ID0gcGx0X2xpc3QgKQoKICByZXR1cm4ocCkKfQpgYGAKCgoKCmBgYHtyIHJlc3VsdHM9J2FzaXMnfQpwYXRpZW50c192ZWN0b3IgPSBsdW5nJHBhdGllbnQuaWRlbnQgJT4lIHVuaXF1ZSgpCmZvciAocGF0aWVudF9uYW1lIGluIHBhdGllbnRzX3ZlY3RvcikgewogIHBhdGllbnRfZGF0YSA9IHN1YnNldCh4ID0gbHVuZywgc3Vic2V0ID0gcGF0aWVudC5pZGVudCA9PSBwYXRpZW50X25hbWUpCiAgcHJpbnRfdGFiKHBsdCA9IGNlbGxfcGVyY2VudGFnZShkYXRhc2V0ID0gcGF0aWVudF9kYXRhLHRpbWUucG9pbnRfdmFyID0gInRpbWUucG9pbnQiKSx0aXRsZSA9IHBhdGllbnRfbmFtZSkKCn0KICAKYGBg