f = open('../Data/cnmf/patients_5Kvargenes_cnmf_obj.pckl', 'rb')
cnmf_obj = pickle.load(f)
f.close()
selected_k = 5
cnmf_obj.consensus(k=selected_k, density_threshold=0.1)
usage_norm, gep_scores, gep_tpm, topgenes = cnmf_obj.load_results(K=selected_k, density_threshold=0.1)
#Add to seurat metadata:
library(reticulate)
all_metagenes= py$usage_norm
#Make metagene names
for (i in 1:ncol(all_metagenes)) {
colnames(all_metagenes)[i] = "metagene." %>% paste0(i)
}
#add each metagene to metadata
for (i in 1:ncol(all_metagenes)) {
metage_metadata = all_metagenes %>% select(i)
lung = AddMetaData(object = lung,metadata = metage_metadata)
}
FeaturePlot(object = lung,features = colnames(all_metagenes))

Enrichment analysis by top 200 genes of each program
gep_scores = py$gep_scores
# saveRDS(object = gep_scores,file = "../Data/models_harmony_gep_scores.rds")
#or:
# gep_scores = readRDS(file = "../Data/models_harmony_gep_scores.rds")
for (i in 1:ncol(gep_scores)) {
top_genes = gep_scores %>% arrange(gep_scores[i]) #sort by score a
top = head(rownames(top_genes),200) #take top top_genes_num
genes_vec_enrichment(genes = top,background = rownames(gep_scores),gene_sets = "homer_hallmark",title = i,convert_background = T,add_msigdb_to_set = T,add_bg = F)
}
[23%] Downloaded 7616 bytes...
[31%] Downloaded 10332 bytes...
[39%] Downloaded 13048 bytes...
[46%] Downloaded 15498 bytes...
[55%] Downloaded 18205 bytes...
[63%] Downloaded 20921 bytes...
[71%] Downloaded 23637 bytes...
[79%] Downloaded 26353 bytes...
[88%] Downloaded 29069 bytes...
[96%] Downloaded 31785 bytes...
[100%] Downloaded 32990 bytes...
[0%] Downloaded 16375 bytes...
[0%] Downloaded 32750 bytes...
[0%] Downloaded 49152 bytes...
[0%] Downloaded 65527 bytes...
[0%] Downloaded 81902 bytes...
[0%] Downloaded 98304 bytes...
[0%] Downloaded 114679 bytes...
[0%] Downloaded 131072 bytes...
[1%] Downloaded 147447 bytes...
[1%] Downloaded 163822 bytes...
[1%] Downloaded 180197 bytes...
[1%] Downloaded 196608 bytes...
[1%] Downloaded 212983 bytes...
[1%] Downloaded 229358 bytes...
[1%] Downloaded 245733 bytes...
[1%] Downloaded 262144 bytes...
[2%] Downloaded 278519 bytes...
[2%] Downloaded 294894 bytes...
[2%] Downloaded 311269 bytes...
[2%] Downloaded 344055 bytes...
[2%] Downloaded 360430 bytes...
[2%] Downloaded 376805 bytes...
[2%] Downloaded 393216 bytes...
[3%] Downloaded 425966 bytes...
[3%] Downloaded 442341 bytes...
[3%] Downloaded 458752 bytes...
[3%] Downloaded 475127 bytes...
[3%] Downloaded 491502 bytes...
[3%] Downloaded 524288 bytes...
[4%] Downloaded 606199 bytes...
[4%] Downloaded 655360 bytes...
[5%] Downloaded 720896 bytes...
[5%] Downloaded 737271 bytes...
[5%] Downloaded 753646 bytes...
[5%] Downloaded 770021 bytes...
[5%] Downloaded 819182 bytes...
[6%] Downloaded 835557 bytes...
[6%] Downloaded 884718 bytes...
[6%] Downloaded 917504 bytes...
[6%] Downloaded 950254 bytes...
[7%] Downloaded 983040 bytes...
[7%] Downloaded 1015790 bytes...
[7%] Downloaded 1048576 bytes...
[7%] Downloaded 1097701 bytes...
[8%] Downloaded 1161829 bytes...
[9%] Downloaded 1243776 bytes...
[9%] Downloaded 1292901 bytes...
[9%] Downloaded 1374848 bytes...
[10%] Downloaded 1489509 bytes...
[10%] Downloaded 1505920 bytes...
[11%] Downloaded 1636992 bytes...
[12%] Downloaded 1735278 bytes...
[13%] Downloaded 1899136 bytes...
[14%] Downloaded 1964672 bytes...
[14%] Downloaded 2030208 bytes...
[15%] Downloaded 2095744 bytes...
[16%] Downloaded 2259566 bytes...
[26%] Downloaded 3580151 bytes...
[29%] Downloaded 4104439 bytes...
[30%] Downloaded 4219136 bytes...
[33%] Downloaded 4612352 bytes...
[43%] Downloaded 5954222 bytes...
[49%] Downloaded 6813605 bytes...
[55%] Downloaded 7597413 bytes...
[64%] Downloaded 8934510 bytes...
[68%] Downloaded 9398208 bytes...
[77%] Downloaded 10730222 bytes...
[87%] Downloaded 12062053 bytes...
[89%] Downloaded 12258661 bytes...
[98%] Downloaded 13580654 bytes...
[100%] Downloaded 13762817 bytes...
|--------------------------------------------------|
|==================================================|
[100%] Downloaded 32990 bytes...
[7%] Downloaded 987959 bytes...
[7%] Downloaded 1020709 bytes...
[8%] Downloaded 1151781 bytes...
[9%] Downloaded 1299264 bytes...
[9%] Downloaded 1315639 bytes...
[10%] Downloaded 1381175 bytes...
[11%] Downloaded 1594158 bytes...
[12%] Downloaded 1708855 bytes...
[14%] Downloaded 1933111 bytes...
[14%] Downloaded 2015022 bytes...
[15%] Downloaded 2157349 bytes...
[16%] Downloaded 2206510 bytes...
[17%] Downloaded 2435904 bytes...
[17%] Downloaded 2468663 bytes...
[18%] Downloaded 2517815 bytes...
[24%] Downloaded 3425088 bytes...
[26%] Downloaded 3654464 bytes...
[26%] Downloaded 3670848 bytes...
[27%] Downloaded 3851072 bytes...
[28%] Downloaded 3916608 bytes...
[29%] Downloaded 4047680 bytes...
[31%] Downloaded 4293312 bytes...
[31%] Downloaded 4309696 bytes...
[31%] Downloaded 4342464 bytes...
[38%] Downloaded 5230894 bytes...
[45%] Downloaded 6271735 bytes...
[54%] Downloaded 7538204 bytes...
[62%] Downloaded 8629431 bytes...
[68%] Downloaded 9478775 bytes...
[69%] Downloaded 9560704 bytes...
[77%] Downloaded 10723968 bytes...
[87%] Downloaded 12067109 bytes...
[87%] Downloaded 12083520 bytes...
[97%] Downloaded 13416768 bytes...
[100%] Downloaded 13762817 bytes...
|--------------------------------------------------|
|==================================================|
[100%] Downloaded 32990 bytes...
[0%] Downloaded 81032 bytes...
[9%] Downloaded 1360942 bytes...
[19%] Downloaded 2661422 bytes...
[28%] Downloaded 3951836 bytes...
[37%] Downloaded 5213221 bytes...
[46%] Downloaded 6465847 bytes...
[54%] Downloaded 7505472 bytes...
[63%] Downloaded 8751644 bytes...
[72%] Downloaded 10019374 bytes...
[80%] Downloaded 11138432 bytes...
[87%] Downloaded 12104887 bytes...
[94%] Downloaded 12968119 bytes...
[100%] Downloaded 13762817 bytes...
|--------------------------------------------------|
|==================================================|
[100%] Downloaded 32990 bytes...
[8%] Downloaded 1216055 bytes...
[14%] Downloaded 1974656 bytes...
[15%] Downloaded 2154880 bytes...
[23%] Downloaded 3176805 bytes...
[30%] Downloaded 4207616 bytes...
[34%] Downloaded 4682725 bytes...
[35%] Downloaded 4846592 bytes...
[38%] Downloaded 5295104 bytes...
[47%] Downloaded 6469614 bytes...
[48%] Downloaded 6661120 bytes...
[49%] Downloaded 6824960 bytes...
[56%] Downloaded 7731008 bytes...
[63%] Downloaded 8676160 bytes...
[70%] Downloaded 9757504 bytes...
[80%] Downloaded 11084599 bytes...
[90%] Downloaded 12423717 bytes...
[99%] Downloaded 13701495 bytes...
[100%] Downloaded 13762817 bytes...
[100%] Downloaded 32990 bytes...
[8%] Downloaded 1135397 bytes...
[15%] Downloaded 2117056 bytes...
[22%] Downloaded 3062190 bytes...
[29%] Downloaded 4012288 bytes...
[38%] Downloaded 5238446 bytes...
[45%] Downloaded 6319607 bytes...
[52%] Downloaded 7283648 bytes...
[59%] Downloaded 8156910 bytes...
[66%] Downloaded 9120887 bytes...
[73%] Downloaded 10092471 bytes...
[80%] Downloaded 11028709 bytes...
[89%] Downloaded 12345710 bytes...
[99%] Downloaded 13685148 bytes...
[100%] Downloaded 13762817 bytes...





Enrichment analysis by selecting genes using “max” method
gep_scores = py$gep_scores
library(NMF)
top_features = extractFeatures(object = gep_scores %>% data.matrix(),method ="max")
for (i in 1:length(top_features)) {
top_features[[i]]= rownames(gep_scores)[top_features[[i]]]
}
for (i in 1:ncol(gep_scores)) {
top = top_features[i] %>% unlist()
try({ res = genes_vec_enrichment(genes = top,background = rownames(gep_scores),gene_sets = "homer_hallmark",title = i,convert_background = T,add_msigdb_to_set = T,add_bg = F)}, silent=TRUE)
print(res)
}





LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3B5dGhvbn0KZiA9IG9wZW4oJy4uL0RhdGEvY25tZi9wYXRpZW50c181S3ZhcmdlbmVzX2NubWZfb2JqLnBja2wnLCAncmInKQpjbm1mX29iaiA9IHBpY2tsZS5sb2FkKGYpCmYuY2xvc2UoKQpgYGAKCmBgYHtweXRob259CnNlbGVjdGVkX2sgPSA1CmNubWZfb2JqLmNvbnNlbnN1cyhrPXNlbGVjdGVkX2ssIGRlbnNpdHlfdGhyZXNob2xkPTAuMSkKdXNhZ2Vfbm9ybSwgZ2VwX3Njb3JlcywgZ2VwX3RwbSwgdG9wZ2VuZXMgPSBjbm1mX29iai5sb2FkX3Jlc3VsdHMoSz1zZWxlY3RlZF9rLCBkZW5zaXR5X3RocmVzaG9sZD0wLjEpCmBgYAoKCmBgYHtyIGZpZy5oZWlnaHQ9MTAsIGZpZy53aWR0aD0xMH0KI0FkZCB0byBzZXVyYXQgbWV0YWRhdGE6CgpsaWJyYXJ5KHJldGljdWxhdGUpCmFsbF9tZXRhZ2VuZXM9IHB5JHVzYWdlX25vcm0KI01ha2UgbWV0YWdlbmUgbmFtZXMKZm9yIChpIGluIDE6bmNvbChhbGxfbWV0YWdlbmVzKSkgewogIGNvbG5hbWVzKGFsbF9tZXRhZ2VuZXMpW2ldID0gIm1ldGFnZW5lLiIgJT4lIHBhc3RlMChpKQp9CgojYWRkIGVhY2ggbWV0YWdlbmUgdG8gbWV0YWRhdGEKZm9yIChpIGluIDE6bmNvbChhbGxfbWV0YWdlbmVzKSkgewogIG1ldGFnZV9tZXRhZGF0YSA9IGFsbF9tZXRhZ2VuZXMgJT4lIHNlbGVjdChpKQogIGx1bmcgPSBBZGRNZXRhRGF0YShvYmplY3QgPSBsdW5nLG1ldGFkYXRhID0gbWV0YWdlX21ldGFkYXRhKQp9CmBgYAoKCmBgYHtyIGZpZy5oZWlnaHQ9MTAsIGZpZy53aWR0aD0xMH0KRmVhdHVyZVBsb3Qob2JqZWN0ID0gbHVuZyxmZWF0dXJlcyA9IGNvbG5hbWVzKGFsbF9tZXRhZ2VuZXMpKQpgYGAKCiMjIEVucmljaG1lbnQgYW5hbHlzaXMgYnkgdG9wIDIwMCBnZW5lcyBvZiBlYWNoIHByb2dyYW0KYGBge3J9CmdlcF9zY29yZXMgPSBweSRnZXBfc2NvcmVzCiMgc2F2ZVJEUyhvYmplY3QgPSBnZXBfc2NvcmVzLGZpbGUgPSAiLi4vRGF0YS9tb2RlbHNfaGFybW9ueV9nZXBfc2NvcmVzLnJkcyIpCiNvcjoKIyBnZXBfc2NvcmVzID0gcmVhZFJEUyhmaWxlID0gIi4uL0RhdGEvbW9kZWxzX2hhcm1vbnlfZ2VwX3Njb3Jlcy5yZHMiKQoKZm9yIChpIGluIDE6bmNvbChnZXBfc2NvcmVzKSkgewogIHRvcF9nZW5lcyA9IGdlcF9zY29yZXMgICU+JSAgYXJyYW5nZShnZXBfc2NvcmVzW2ldKSAjc29ydCBieSBzY29yZSBhCiAgIHRvcCA9IGhlYWQocm93bmFtZXModG9wX2dlbmVzKSwyMDApICN0YWtlIHRvcCB0b3BfZ2VuZXNfbnVtCiAgIGdlbmVzX3ZlY19lbnJpY2htZW50KGdlbmVzID0gdG9wLGJhY2tncm91bmQgPSByb3duYW1lcyhnZXBfc2NvcmVzKSxnZW5lX3NldHMgPSAiaG9tZXJfaGFsbG1hcmsiLHRpdGxlID0gaSxjb252ZXJ0X2JhY2tncm91bmQgPSBULGFkZF9tc2lnZGJfdG9fc2V0ID0gVCxhZGRfYmcgPSBGKQp9CmBgYAojIyBFbnJpY2htZW50IGFuYWx5c2lzIGJ5IHNlbGVjdGluZyBnZW5lcyB1c2luZyAibWF4IiBtZXRob2QKYGBge3IgcmVzdWx0cz0naGlkZSd9CmdlcF9zY29yZXMgPSBweSRnZXBfc2NvcmVzCgpsaWJyYXJ5KE5NRikKdG9wX2ZlYXR1cmVzID0gZXh0cmFjdEZlYXR1cmVzKG9iamVjdCA9IGdlcF9zY29yZXMgJT4lIGRhdGEubWF0cml4KCksbWV0aG9kID0ibWF4IikKZm9yIChpIGluIDE6bGVuZ3RoKHRvcF9mZWF0dXJlcykpIHsKICB0b3BfZmVhdHVyZXNbW2ldXT0gcm93bmFtZXMoZ2VwX3Njb3JlcylbdG9wX2ZlYXR1cmVzW1tpXV1dCn0KCmZvciAoaSBpbiAxOm5jb2woZ2VwX3Njb3JlcykpIHsKdG9wID0gdG9wX2ZlYXR1cmVzW2ldICU+JSB1bmxpc3QoKQp0cnkoeyByZXMgPSBnZW5lc192ZWNfZW5yaWNobWVudChnZW5lcyA9IHRvcCxiYWNrZ3JvdW5kID0gcm93bmFtZXMoZ2VwX3Njb3JlcyksZ2VuZV9zZXRzID0gImhvbWVyX2hhbGxtYXJrIix0aXRsZSA9IGksY29udmVydF9iYWNrZ3JvdW5kID0gVCxhZGRfbXNpZ2RiX3RvX3NldCA9IFQsYWRkX2JnID0gRil9LCBzaWxlbnQ9VFJVRSkKcHJpbnQocmVzKQp9CmBgYAoK