【生信分析】clusterProfiler: universal enrichment tool for functional and comparative study(2)
clusterProfiler: universal enrichment tool for functional and comparative study
- ClusterProfiler: 用于功能和比较研究的通用富集工具
- 4. 疾病分析(Disease analysis)
- 4.1 enrichDO函数
- 4.2 enrichNCG函数
- 4.3 enrichDGN和enrichDGNv函数
- 4.4 gseDO函数
- 4.5 gseNCG函数
- 4.6 gseDGN函数
- 参考资料
- 5. 基因同源分析(Gene Ontology Analysis)
- 5.1 支持的生物
- 5.2 GO 分类
- 5.3 GO过表达检验(GO over-representation test)
- 5.3.1 删除特定的 GO 术语或级别(drop specific GO terms or level)
- 5.3.2 在特定级别测试 GO(test GO at sepcific level)
- 5.3.3 减少丰富的 GO 术语的冗余(reduce redundancy of enriched GO terms)
- 5.4 GO基因集富集分析(GO Gene Set Enrichment Analysis)
- 5.5 GO语义相似度分析(GO Semantic Similarity Analysis)
- 5.5.1 非模式生物的GO分析(GO analysis for non-model organisms)
- 参考资料
- 6. KEGG分析
- 6.1 KEGG过表达检验(KEGG over-representation test)
- 6.2 KEGG基因集富集分析(KEGG Gene Set Enrichment Analysis)
- 6.3 KEGG模块过表达检测(KEGG Module over-representation test)
- 6.4 KEGG模块基因集富集分析(KEGG Module Gene Set Enrichment Analysis)
- 参考资料
ClusterProfiler: 用于功能和比较研究的通用富集工具
4. 疾病分析(Disease analysis)
DOSE
(Yu et al. 2015)支持Disease Ontology(DO)语义和富集分析。 enrichDO
函数对于识别感兴趣基因的疾病关联非常有用,函数gseDO
函数专为DO的基因集富集分析而设计。
此外,DOSE
还支持对癌症基因网络 (NCG)(A. et al. 2016) 和疾病基因网络 (Janet et al. 2015) 的富集分析,请参阅 DOSE 其他资料。
4.1 enrichDO函数
在以下示例中,我们选择 1.5 以上的倍数变化(fold change)作为差异基因并分析它们的疾病关联。
> library(DOSE)
> data(geneList)
> gene = names(geneList)[abs(geneList)>1.5]
> head(gene)
[1] "4312" "8318" "10874" "55143" "55388" "991"
> x = enrichDO(gene = gene, ont = "DO", pvalueCutoff = 0.05, pAdjustMethod = "BH", universe = names(geneList), minGSSize = 5, maxGSSize = 500, qvalueCutoff = 0.05, readable = FALSE)
> head(x)ID Description GeneRatio BgRatio pvalue p.adjust qvalue
DOID:170 DOID:170 endocrine gland cancer 48/331 472/6268 5.662129e-06 0.004784499 0.003826407
DOID:10283 DOID:10283 prostate cancer 40/331 394/6268 3.859157e-05 0.013921739 0.011133923
DOID:3459 DOID:3459 breast carcinoma 37/331 357/6268 4.942629e-05 0.013921739 0.011133923
DOID:3856 DOID:3856 male reproductive organ cancer 40/331 404/6268 6.821467e-05 0.014410349 0.011524689
DOID:824 DOID:824 periodontitis 16/331 109/6268 1.699304e-04 0.018859464 0.015082872
DOID:3905 DOID:3905 lung carcinoma 43/331 465/6268 1.749754e-04 0.018859464 0.015082872geneID
DOID:170 10874/7153/1381/6241/11065/10232/332/6286/2146/10112/891/9232/4171/993/5347/4318/3576/1515/4821/8836/3159/7980/5888/333/898/9768/4288/3551/2152/9590/185/7043/3357/2952/5327/3667/1634/1287/4582/7122/3479/4680/6424/80310/652/8839/9547/1524
DOID:10283 4312/6280/6279/597/3627/332/6286/2146/4321/4521/891/5347/4102/4318/701/3576/79852/10321/6352/4288/3551/2152/247/2952/3487/367/3667/4128/4582/563/3679/4117/7031/3479/6424/10451/80310/652/4036/10551
DOID:3459 4312/6280/6279/7153/4751/890/4085/332/6286/6790/891/9232/10855/4171/5347/4318/701/2633/3576/9636/898/8792/4288/2952/4982/4128/4582/7031/3479/771/4250/2066/3169/10647/5304/5241/10551
DOID:3856 4312/6280/6279/597/3627/332/6286/2146/4321/4521/891/5347/4102/4318/701/3576/79852/10321/6352/4288/3551/2152/247/2952/3487/367/3667/4128/4582/563/3679/4117/7031/3479/6424/10451/80310/652/4036/10551
DOID:824 4312/6279/820/7850/4321/3595/4318/4069/3576/1493/6352/8842/185/2952/5327/4982
DOID:3905 4312/6280/2305/9133/6279/7153/6278/6241/55165/11065/8140/10232/332/6286/3002/9212/4521/891/4171/9928/8061/4318/3576/1978/1894/7980/7083/898/6352/8842/4288/2152/2697/2952/3572/4582/7049/563/3479/1846/3117/2532/2922Count
DOID:170 48
DOID:10283 40
DOID:3459 37
DOID:3856 40
DOID:824 16
DOID:3905 43
enrichDO
函数需要一个entrezgene ID向量作为输入,主要是基因表达谱研究的差异基因列表。 如果用户需要将其他基因 ID 类型转换为 entrezgene ID,我们建议使用 clusterProfiler 提供的 bitr
函数。
ont
参数可以是“DO”或“DOLite”,DOLite(Du et al. 2009) 被构造来聚合冗余的 DO 项。 DOLite 数据未更新,我们建议用户使用 ont=“DO”。 pvalueCutoff
设置p值的截止值和p值调整; pAdjustMethod
设置p值校正方法,包括Bonferroni校正
(“bonferroni”)、Holm
(“holm”)、Hochberg
(“hochberg”)、Hommel
(“hommel”)、Benjamini
& Hochberg
(“BH”)和Benjamini & Yekutieli
(“BY”) 而 qvalueCutoff
用于控制 q 值。
universe
设置用于测试的背景基因universe。 如果用户没有明确设置这个参数,enrichDO 会将全域设置为所有具有 DO 注释的人类基因。
minGSSize
(和 maxGSSize
)表示只有注释了大于 minGSSize(和小于 maxGSSize)基因的 DO 项才会被测试。
readable是一个逻辑参数,表示 entrezgene ID 是否会映射到基因符号。
我们还实现了 setReadable
函数,帮助用户将 entrezgene ID
转换为基因符号。
> x = setReadable(x, 'org.Hs.eg.db')
> head(x)ID Description GeneRatio BgRatio pvalue p.adjust qvalue
DOID:170 DOID:170 endocrine gland cancer 48/331 472/6268 5.662129e-06 0.004784499 0.003826407
DOID:10283 DOID:10283 prostate cancer 40/331 394/6268 3.859157e-05 0.013921739 0.011133923
DOID:3459 DOID:3459 breast carcinoma 37/331 357/6268 4.942629e-05 0.013921739 0.011133923
DOID:3856 DOID:3856 male reproductive organ cancer 40/331 404/6268 6.821467e-05 0.014410349 0.011524689
DOID:824 DOID:824 periodontitis 16/331 109/6268 1.699304e-04 0.018859464 0.015082872
DOID:3905 DOID:3905 lung carcinoma 43/331 465/6268 1.749754e-04 0.018859464 0.015082872geneID
DOID:170 NMU/TOP2A/CRABP1/RRM2/UBE2C/MSLN/BIRC5/S100P/EZH2/KIF20A/CCNB1/PTTG1/MCM2/CDC25A/PLK1/MMP9/CXCL8/CTSV/NKX2-2/GGH/HMGA1/TFPI2/RAD51/APLP1/CCNE1/PCLAF/MKI67/IKBKB/F3/AKAP12/AGTR1/TGFB3/HTR2B/GSTT1/PLAT/IRS1/DCN/COL4A5/MUC1/CLDN5/IGF1/CEACAM6/SFRP4/PDGFD/BMP4/CCN5/CXCL14/CX3CR1
DOID:10283 MMP1/S100A9/S100A8/BCL2A1/CXCL10/BIRC5/S100P/EZH2/MMP12/NUDT1/CCNB1/PLK1/MAGEA3/MMP9/BUB1B/CXCL8/EPHX3/CRISP3/CCL5/MKI67/IKBKB/F3/ALOX15B/GSTT1/IGFBP4/AR/IRS1/MAOA/MUC1/AZGP1/ITGA7/MAK/TFF1/IGF1/SFRP4/VAV3/PDGFD/BMP4/LRP2/AGR2
DOID:3459 MMP1/S100A9/S100A8/TOP2A/NEK2/CCNA2/MAD2L1/BIRC5/S100P/AURKA/CCNB1/PTTG1/HPSE/MCM2/PLK1/MMP9/BUB1B/GBP1/CXCL8/ISG15/CCNE1/TNFRSF11A/MKI67/GSTT1/TNFRSF11B/MAOA/MUC1/TFF1/IGF1/CA12/SCGB2A2/ERBB4/FOXA1/SCGB1D2/PIP/PGR/AGR2
DOID:3856 MMP1/S100A9/S100A8/BCL2A1/CXCL10/BIRC5/S100P/EZH2/MMP12/NUDT1/CCNB1/PLK1/MAGEA3/MMP9/BUB1B/CXCL8/EPHX3/CRISP3/CCL5/MKI67/IKBKB/F3/ALOX15B/GSTT1/IGFBP4/AR/IRS1/MAOA/MUC1/AZGP1/ITGA7/MAK/TFF1/IGF1/SFRP4/VAV3/PDGFD/BMP4/LRP2/AGR2
DOID:824 MMP1/S100A8/CAMP/IL1R2/MMP12/IL12RB2/MMP9/LYZ/CXCL8/CTLA4/CCL5/PROM1/AGTR1/GSTT1/PLAT/TNFRSF11B
DOID:3905 MMP1/S100A9/FOXM1/CCNB2/S100A8/TOP2A/S100A7/RRM2/CEP55/UBE2C/SLC7A5/MSLN/BIRC5/S100P/GZMB/AURKB/NUDT1/CCNB1/MCM2/KIF14/FOSL1/MMP9/CXCL8/EIF4EBP1/ECT2/TFPI2/TK1/CCNE1/CCL5/PROM1/MKI67/F3/GJA1/GSTT1/IL6ST/MUC1/TGFBR3/AZGP1/IGF1/DUSP4/HLA-DQA1/ACKR1/GRPCount
DOID:170 48
DOID:10283 40
DOID:3459 37
DOID:3856 40
DOID:824 16
DOID:3905 43
4.2 enrichNCG函数
癌症基因网络 (Network of Cancer Gene,NCG)(A. et al. 2016) 是一个手动管理的癌症基因库。 NCG 5.0 版(2015 年 8 月)从 175 项已发表的研究中收集了 1,571 个癌症基因。 DOSE 支持分析基因列表并确定它们是否富集在已知给定癌症类型中发生突变的基因。
> gene2 = names(geneList)[abs(geneList)<3]
> ncg = enrichNCG(gene2)
> head(ncg)ID Description GeneRatio BgRatio pvalue p.adjust qvalue
soft_tissue_sarcomas soft_tissue_sarcomas soft_tissue_sarcomas 28/1172 28/1571 0.0002517511 0.008056037 0.006360029
bladder bladder bladder 61/1172 67/1571 0.0005108168 0.008173069 0.006452423
glioma glioma glioma 68/1172 76/1571 0.0008511747 0.009079196 0.007167787geneID
soft_tissue_sarcomas 1029/999/6850/4914/4342/2185/55294/2041/4851/23512/2044/4058/5290/8726/4486/5297/5728/3815/2324/7403/5925/4763/1499/7157/5159/2045/3667/2066
bladder 9700/2175/9603/1029/8997/688/1026/896/677/6256/55294/8085/4851/3265/1999/3845/8243/10605/8295/4854/5290/2033/4780/23224/23217/2064/23385/55252/10735/4853/387/288/30849/9794/7403/287/463/472/4297/2065/2262/8289/9611/5925/2068/4763/7157/2186/1387/3910/2261/7248/23037/23345/7832/79633/10628/22906/388/4036/3169
glioma 4603/4609/1029/3418/8877/1019/7027/4613/1030/1956/1106/2264/3417/6597/4914/55359/896/894/2321/3954/5335/5781/8439/673/9444/4851/8087/2050/8493/3845/3482/667/56999/5290/2033/4233/577/5894/5156/80036/9407/3020/1021/5598/5728/8621/1828/63035/23592/8880/2260/54880/4916/2263/1639/90/546/8289/4763/7157/23152/5295/4602/595/2261/6938/4915/26137Count
soft_tissue_sarcomas 28
bladder 61
glioma 68
4.3 enrichDGN和enrichDGNv函数
[DisGeNET](http://disgenet.org/)
(Janet et al. 2015) 是来自多个公共数据源和文献的基因-疾病关联的综合性综合资源。 它包含基因-疾病关联
和snp-基因-疾病关联
。
疾病-基因关联的富集分析得到了enrichDGN函数的支持,而snp-基因-疾病关联的分析得到了enrichDGNv功能的支持。
> dgn = enrichDGN(gene)
> head(dgn)ID Description GeneRatio BgRatio pvalue p.adjust qvalue
umls:C1134719 umls:C1134719 Invasive Ductal Breast Carcinoma 28/476 231/17381 4.312190e-11 1.225524e-07 9.164539e-08
umls:C0032460 umls:C0032460 Polycystic Ovary Syndrome 38/476 434/17381 2.819624e-10 3.521620e-07 2.633487e-07
umls:C0206698 umls:C0206698 Cholangiocarcinoma 36/476 399/17381 3.717403e-10 3.521620e-07 2.633487e-07
umls:C0007138 umls:C0007138 Carcinoma, Transitional Cell 35/476 389/17381 7.093837e-10 5.040171e-07 3.769068e-07
umls:C0031099 umls:C0031099 Periodontitis 28/476 270/17381 1.634417e-09 9.290027e-07 6.947133e-07
umls:C0005695 umls:C0005695 Bladder Neoplasm 36/476 442/17381 5.871618e-09 2.781190e-06 2.079789e-06geneID
umls:C1134719 9133/7153/6241/55165/11065/51203/22974/4751/5080/332/2568/3902/6790/891/24137/9232/10855/79801/4318/55635/5888/1493/9768/3070/4288/367/4582/5241
umls:C0032460 4312/6280/6279/7153/259266/6241/55165/55872/4085/6286/7272/366/891/4171/7941/1164/3161/4603/990/29127/4318/53335/3294/3070/2952/5327/367/3667/4582/563/27324/3479/114899/9370/2167/652/5346/5241
umls:C0206698 4312/2305/55872/4751/8140/10635/10232/5918/332/6286/2146/4521/891/10855/2921/7941/1164/4318/3576/1978/79852/8842/4485/214/65982/6863/1036/6935/4128/3572/4582/7031/7166/4680/80310/9
umls:C0007138 4312/991/6280/6241/55165/10460/6373/8140/890/10232/4085/332/6286/2146/4171/1033/6364/5347/4318/3576/8836/9700/898/4288/2952/367/8382/2947/3479/9338/23158/2167/2066/2625/9
umls:C0031099 4312/6279/3669/820/7850/332/4321/6364/3595/4318/3576/3898/8792/1493/4485/10472/185/6863/2205/2952/5327/4982/23261/2200/3572/2006/1308/2625
umls:C0005695 4312/10874/6280/3868/6279/597/7153/6241/9582/10460/4085/5080/332/2146/6790/10855/4171/5347/4318/3576/8836/9636/9700/898/4288/214/2952/367/2947/4582/3479/6424/9338/2066/1580/9Count
umls:C1134719 28
umls:C0032460 38
umls:C0206698 36
umls:C0007138 35
umls:C0031099 28
umls:C0005695 36> snp <- c("rs1401296", "rs9315050", "rs5498", "rs1524668", "rs147377392",
+ "rs841", "rs909253", "rs7193343", "rs3918232", "rs3760396",
+ "rs2231137", "rs10947803", "rs17222919", "rs386602276", "rs11053646",
+ "rs1805192", "rs139564723", "rs2230806", "rs20417", "rs966221")
> dgnv = enrichDGNv(snp)
> head(dgnv)ID Description GeneRatio BgRatio pvalue p.adjust qvalue
umls:C3272363 umls:C3272363 Ischemic Cerebrovascular Accident 20/20 141/46589 1.014503e-51 1.379725e-49 1.922217e-50
umls:C0948008 umls:C0948008 Ischemic stroke 20/20 148/46589 2.867870e-51 1.950151e-49 2.716929e-50
umls:C0038454 umls:C0038454 Cerebrovascular accident 7/20 243/46589 7.045680e-12 3.194042e-10 4.449903e-11
umls:C0027051 umls:C0027051 Myocardial Infarction 6/20 163/46589 6.222154e-11 1.889883e-09 2.632964e-10
umls:C0010054 umls:C0010054 Coronary Arteriosclerosis 6/20 166/46589 6.948100e-11 1.889883e-09 2.632964e-10
umls:C0010068 umls:C0010068 Coronary heart disease 6/20 314/46589 3.198889e-09 7.250815e-08 1.010175e-08geneID
umls:C3272363 rs1401296/rs9315050/rs5498/rs1524668/rs147377392/rs841/rs909253/rs7193343/rs3918232/rs3760396/rs2231137/rs10947803/rs17222919/rs386602276/rs11053646/rs1805192/rs139564723/rs2230806/rs20417/rs966221
umls:C0948008 rs1401296/rs9315050/rs5498/rs1524668/rs147377392/rs841/rs909253/rs7193343/rs3918232/rs3760396/rs2231137/rs10947803/rs17222919/rs386602276/rs11053646/rs1805192/rs139564723/rs2230806/rs20417/rs966221
umls:C0038454 rs1524668/rs147377392/rs2231137/rs10947803/rs386602276/rs2230806/rs20417
umls:C0027051 rs5498/rs147377392/rs909253/rs11053646/rs1805192/rs20417
umls:C0010054 rs5498/rs147377392/rs11053646/rs1805192/rs2230806/rs20417
umls:C0010068 rs5498/rs147377392/rs11053646/rs1805192/rs2230806/rs20417Count
umls:C3272363 20
umls:C0948008 20
umls:C0038454 7
umls:C0027051 6
umls:C0010054 6
umls:C0010068 6
4.4 gseDO函数
在下面的例子中,为了加快本文档的编译速度,只测试了大小在120以上的基因集,并且只进行了100次排列。
> library(DOSE)
> data(geneList)
> y = gseDO(geneList, nPerm = 100, minGSSize = 120, pvalueCutoff = 0.2, pAdjustMethod = "BH", verbose = FALSE)
> head(y,3)ID Description setSize enrichmentScore NES pvalue p.adjust qvalues rank
DOID:0060037 DOID:0060037 developmental disorder of mental health 315 -0.3407349 -1.459210 0.01234568 0.08271865 0.03993123 2313
DOID:374 DOID:374 nutrition disease 313 -0.3421127 -1.452639 0.01282051 0.08271865 0.03993123 1464
DOID:5679 DOID:5679 retinal disease 299 -0.3676313 -1.563074 0.01298701 0.08271865 0.03993123 1768leading_edge
DOID:0060037 tags=24%, list=19%, signal=20%
DOID:374 tags=22%, list=12%, signal=20%
DOID:5679 tags=24%, list=14%, signal=21%core_enrichment
DOID:0060037 10585/154/1760/9732/7337/5175/6532/4763/54806/9759/6326/1499/7157/221037/627/2908/3399/2571/3082/23503/3791/51265/27347/55650/596/3067/51185/7552/22829/23426/324/5021/4885/7248/8910/8604/3397/4208/3400/26470/553/3953/6812/64221/80208/5172/9037/3952/477/93664/3625/2944/6925/6594/7102/3908/2550/4915/4922/26960/1746/2697/6863/3913/2891/367/4128/150/7166/6505/5348/18/4129/9370/57502/4137/79083
DOID:374 1843/2169/1490/7840/4887/4314/595/4018/6403/590/3087/866/66036/5919/5176/3953/164656/5950/2638/2166/5243/5468/5108/10560/4023/3485/7350/3952/1149/585/1513/3489/79068/4671/477/4313/3625/9369/6720/7494/2099/3480/3991/23446/6678/4915/5167/8228/165/2152/185/367/4982/3667/4128/9607/3572/150/563/1489/3479/9370/9122/5105/2167/5346/79689/5241
DOID:5679 3371/2878/3791/23247/80184/6750/7450/596/9187/2034/482/948/1490/1280/5737/4314/4881/3426/187/629/6403/6785/2934/5176/7078/5950/727/10516/4311/2247/1295/358/10203/582/10218/57125/585/1675/6310/2202/4313/2944/4254/3075/2099/3480/4653/6387/1471/857/4016/1909/4053/6678/1296/4915/55812/1191/5654/10631/2697/2952/6935/2200/3479/2006/10451/9370/771/652/4693/5346/1524
4.5 gseNCG函数
> ncg = gseNCG(geneList, nPerm = 100, minGSSize = 120, pvalueCutoff = 0.2, pAdjustMethod = "BH", verbose = FALSE)
> ncg = setReadable(ncg,'org.Hs.eg.db')
> head(ncg,3)ID Description setSize enrichmentScore NES pvalue p.adjust qvalues rank leading_edge
breast breast breast 133 -0.4869070 -1.882363 0.01282051 0.03846154 0.02699055 2930 tags=33%, list=23%, signal=26%
lung lung lung 173 -0.3880662 -1.570552 0.01282051 0.03846154 0.02699055 2775 tags=31%, list=22%, signal=25%
lymphoma lymphoma lymphoma 188 0.2999589 1.334098 0.08333333 0.16666667 0.11695906 2087 tags=21%, list=17%, signal=18%core_enrichment
breast PTPRD/KMT2A/ERBB3/SETD2/ARID1A/GPS2/NCOR1/RB1/MAP2K4/NF1/TP53/PIK3R1/STK11/CDKN1B/PTGFR/APC/CCND1/TRAF5/MAP3K1/ESR1/TBX3/FOXA1/GATA3
lung PIK3C2B/SETD2/ATXN3L/LRP1B/BRD3/ARID1A/INHBA/RB1/ADCY1/LYRM9/NF1/CTNNB1/TP53/SATB2/STK11/CTIF/CTNNA3/KDR/COL11A1/FLT3/APC/ADGRL3/FGFR3/NCAM2/DIP2C/APLNR/SLIT2/EPHA3/RUNX1T1/ZMYND10/ZFHX4/GLI3/TNN/PLSCR4/DACH1/ERBB4
lymphoma DUSP2/EZH2/PRDM1/MYC/ZWILCH/IKZF3/PLCG2/IDH2/H1-2/MAGEC3/CD79B/ETV6/H1-4/H1-5/IRF8/CD28/SLC29A2/DUSP9/TNFAIP3/DNMT3A/SYK/TNF/BCR/H1-3/DSC3/UBE2A/PABPC1
4.6 gseDGN函数
> dgn = gseDGN(geneList, nPerm = 100, minGSSize = 120, pvalueCutoff = 0.2, pAdjustMethod = "BH", verbose = FALSE)
> dgn = setReadable(dgn, 'org.Hs.eg.db')
> head(dgn, 3)ID Description setSize enrichmentScore NES pvalue p.adjust qvalues rank
umls:C0021655 umls:C0021655 Insulin Resistance 256 -0.3744074 -1.614202 0.01298701 0.09057971 0.04767353 1971
umls:C0029456 umls:C0029456 Osteoporosis 375 -0.3439046 -1.516537 0.01298701 0.09057971 0.04767353 1766
umls:C0085580 umls:C0085580 Essential Hypertension 256 -0.3652907 -1.574896 0.01298701 0.09057971 0.04767353 1971leading_edge
umls:C0021655 tags=26%, list=16%, signal=22%
umls:C0029456 tags=23%, list=14%, signal=20%
umls:C0085580 tags=26%, list=16%, signal=22%core_enrichment
umls:C0021655 NR3C1/IRS2/PRKAA2/CAPN10/PIK3R1/STK11/UGT2B15/SSTR2/RXRG/GPX3/MBL2/CD93/INSR/GAS1/VWA8/FABP2/CD36/LCAT/AHR/TSC22D1/IGFALS/SELP/LRRTM4/HHEX/FOXO1/SERPINF1/COL1A1/LEPR/RBP4/SLC5A12/SELENOP/PPARG/LPL/TRPS1/RHOBTB1/IGFBP2/LEP/FTO/ABCB4/TMEM144/SREBF1/ESR1/ABCC8/LIPE/CAV1/PCDH9/CPE/CLU/ACACB/ENPP1/PNPLA4/IKBKB/APOD/AGTR1/AR/IRS1/COX7A1/CTF1/IGF1/CACNA1D/ADIPOQ/EBLN2/PDZK1/FABP4/TFAP2B/STEAP4
umls:C0029456 RXRG/HGF/PTH1R/CYP1A1/JAG1/ROR2/FLT3/CUL9/EEF1A2/THSD4/BCL2/ITGAV/WIF1/GREM2/COL15A1/HPGDS/VGLL3/SLIT3/NRIP1/TMEM135/MGP/PLCL1/OSBPL1A/PIBF1/SELP/SPRY1/MMP13/ID4/SPP2/COL1A2/AOX1/ARHGEF3/GSN/TSC22D3/ATP1B1/NR5A2/ANKH/COL1A1/LEPR/THSD7A/GC/FGF2/PPARG/NOX4/ZNF266/GHRH/BHLHE40/SLC19A2/THBD/FLNB/KL/LEP/HSD17B4/CTSK/FTO/MMP2/ESR1/IGF1R/PTN/IRAK3/HSPA1L/CST3/GHR/SPARC/KDM4B/LRP1/INPP4B/BMPR1B/PTHLH/DPT/FRZB/GSTT1/AR/TNFRSF11B/IRS1/WLS/GSTM3/TGFBR3/TPH1/IGF1/SFRP4/CORIN/BMP4/CHAD/FOXA1/PGR
umls:C0085580 NR3C1/ATP2B1/CAPN10/SOD3/NPR2/SLC9A1/HGF/GPX3/SCNN1A/STK39/INSR/TESC/TRHR/HP/CD36/HPGDS/DBH/PTGFR/NPR1/LPA/TSC1/APLNR/SELP/GJA4/P2RY2/LPAR1/EDN2/TGFBR2/SULT1A1/ATP1B1/LEPR/FKBP1B/ABCB1/NEFH/PPARG/SYNE1/GRK4/CALCRL/LPL/KL/LEP/KCNMA1/FTO/GSTM1/IGF1R/NEDD4L/HSPA1L/EMILIN1/CACNA1C/EDNRA/NR3C2/BGN/ALB/AGTR1/GSTT1/PLAT/TNFRSF11B/IRS1/FBN1/ACADSB/RGS5/CTF1/IGF1/ELN/CACNA1D/ADIPOQ
参考资料
- http://yulab-smu.top/clusterProfiler-book/chapter4.html
5. 基因同源分析(Gene Ontology Analysis)
5.1 支持的生物
GO 分析(groupGO()
、enrichGO()
和 gseGO()
)支持具有可用 OrgDb
对象的生物体。
Bioconductor
已经为大约 20 个物种提供了 OrgDb
。 用户可以通过 AnnotationHub 在线查询 OrgDb
,也可以通过 AnnotationForge 构建自己的 OrgDb
。 一个例子可以在 GOSemSim 的相关资料中找到。
如果用户有GO注释数据(data.frame格式,第一列基因ID,第二列GO ID),可以使用enricher()
和gseGO()
函数进行过度表征测试(over-representation test)和基因集富集分析(gene set enrichment analysis)。
如果基因通过直接注释方式进行注释,则还应通过其祖先GO节点进行注释(间接注释)。 如果用户只有直接注解,他们可以将他们的注解传递给 buildGOmap
函数,该函数将推断间接注解并生成一个适用于enricher()
和gseGO()
的data.frame
。
5.2 GO 分类
在 clusterProfiler
中,groupGO
被设计用于基于特定级别的 GO 分布进行基因分类。 这里我们使用 DOSE 提供的数据集geneList
。 有关详细信息,请参阅 DOSE 相关资料。
> library(clusterProfiler)
> data(geneList, package="DOSE")
> gene <- names(geneList)[abs(geneList) > 2]
> gene.df <- bitr(gene, fromType = "ENTREZID",
+ toType = c("ENSEMBL", "SYMBOL"),
+ OrgDb = org.Hs.eg.db)
'select()' returned 1:many mapping between keys and columns
> head(gene.df)ENTREZID ENSEMBL SYMBOL
1 4312 ENSG00000196611 MMP1
2 8318 ENSG00000093009 CDC45
3 10874 ENSG00000109255 NMU
4 55143 ENSG00000134690 CDCA8
5 55388 ENSG00000065328 MCM10
6 991 ENSG00000117399 CDC20> ggo <- groupGO(gene = gene, OrgDb = org.Hs.eg.db, ont = "CC", level = 3, readable = TRUE)
> head(ggo)ID Description Count GeneRatio
GO:0005886 GO:0005886 plasma membrane 55 55/207
GO:0005628 GO:0005628 prospore membrane 0 0/207
GO:0005789 GO:0005789 endoplasmic reticulum membrane 8 8/207
GO:0019867 GO:0019867 outer membrane 3 3/207
GO:0031090 GO:0031090 organelle membrane 16 16/207
GO:0034357 GO:0034357 photosynthetic membrane 0 0/207geneID
GO:0005886 S100A9/MELK/S100A8/MARCO/ASPM/CXCL10/LAMP3/CEP55/UGT8/UBE2C/SLC7A5/CXCL9/FADS2/MSLN/IL1R2/KIF18A/S100P/GZMB/TRAT1/GABRP/AQP9/GPR19/SLC2A6/KIF20A/LAG3/NUDT1/CACNA1D/VSTM4/ITPR1/SYT17/SLC16A4/CORIN/KCNK15/CA12/KCNE4/HLA-DQA1/ADH1B/PDZK1/C7/ACKR1/COL17A1/PSD3/EMCN/SLC44A4/LRP2/NLGN4X/MAPT/ERBB4/CX3CR1/LAMP5/ABCA8/STEAP4/PTPRT/TMC5/CYBRD1
GO:0005628
GO:0005789 FADS2/CDK1/CHODL/ITPR1/HLA-DQA1/CYP4F8/CYP4B1/FMO5
GO:0019867 BCL2A1/MAOB/PGR
GO:0031090 MARCO/BCL2A1/LAMP3/DUSP2/SLC2A6/DTL/NUDT1/MAOB/ITPR1/GASK1B/HLA-DQA1/LRP2/LAMP5/STEAP4/PGR/CYBRD1
GO:0034357
gene的输入参数是一个基因ID向量(可以是对应OrgDb
支持的任何ID类型)。如果 readable 设置为 TRUE,则输入的基因 ID 将被转换为基因符号(gene symbols)。
5.3 GO过表达检验(GO over-representation test)
在 clusterProfiler 中实现了过表示检验(Over-representation test)(Boyle 等人,2004 年)。 计算细节和参数说明请参考 DOSE 文档。
> ego = enrichGO(gene = gene, universe = names(geneList), OrgDb = org.Hs.eg.db, ont = "CC", pAdjustMethod = "BH", pvalueCutoff = 0.01, qvalueCutoff = 0.05,readable = TRUE)
> head(ego)ID Description GeneRatio BgRatio pvalue p.adjust qvalue
GO:0005819 GO:0005819 spindle 25/200 272/11816 4.695505e-12 1.493171e-09 1.378996e-09
GO:0005876 GO:0005876 spindle microtubule 12/200 48/11816 1.623758e-11 2.581776e-09 2.384361e-09
GO:0000779 GO:0000779 condensed chromosome, centromeric region 15/200 91/11816 2.808998e-11 2.628919e-09 2.427899e-09
GO:0072686 GO:0072686 mitotic spindle 15/200 92/11816 3.306816e-11 2.628919e-09 2.427899e-09
GO:0000775 GO:0000775 chromosome, centromeric region 18/200 154/11816 1.061302e-10 6.749884e-09 6.233756e-09
GO:0000776 GO:0000776 kinetochore 15/200 107/11816 3.047081e-10 1.614953e-08 1.491466e-08geneID
GO:0005819 CDCA8/CDC20/KIF23/CENPE/ASPM/DLGAP5/SKA1/NUSAP1/TPX2/TACC3/NEK2/CDK1/MAD2L1/KIF18A/BIRC5/KIF11/TTK/AURKB/PRC1/KIFC1/KIF18B/KIF20A/AURKA/CCNB1/KIF4A
GO:0005876 CENPE/SKA1/NUSAP1/CDK1/KIF18A/BIRC5/KIF11/AURKB/PRC1/KIF18B/AURKA/KIF4A
GO:0000779 CENPE/NDC80/HJURP/SKA1/NEK2/CENPM/CENPN/ERCC6L/MAD2L1/CDT1/BIRC5/NCAPG/AURKB/AURKA/CCNB1
GO:0072686 KIF23/CENPE/ASPM/SKA1/NUSAP1/TPX2/TACC3/CDK1/MAD2L1/KIF18A/KIF11/AURKB/KIFC1/KIF18B/AURKA
GO:0000775 CDCA8/CENPE/NDC80/HJURP/SKA1/NEK2/CENPM/CENPN/ERCC6L/MAD2L1/KIF18A/CDT1/BIRC5/TTK/NCAPG/AURKB/AURKA/CCNB1
GO:0000776 CENPE/NDC80/HJURP/SKA1/NEK2/CENPM/CENPN/ERCC6L/MAD2L1/KIF18A/CDT1/BIRC5/TTK/AURKB/CCNB1Count
GO:0005819 25
GO:0005876 12
GO:0000779 15
GO:0072686 15
GO:0000775 18
GO:0000776 15
正如之前提到的,OrgDb 支持的任何基因 ID 类型都可以直接用于 GO 分析。 用户需要指定keyType参数来指定输入的基因ID类型。
> ego2 = enrichGO(gene = gene.df$ENSEMBL,OrgDb = org.Hs.eg.db,keyType = "ENSEMBL", ont = "CC", pAdjustMethod = "BH", pvalueCutoff = 0.01, qvalueCutoff = 0.05)
> ego2 <- setReadable(ego2, OrgDb = org.Hs.eg.db)
可以使用参数 readable=TRUE 或 setReadable 函数将基因 ID 映射到基因符号(gene Symbol)。
5.3.1 删除特定的 GO 术语或级别(drop specific GO terms or level)
enrichGO
测试整个GO语料库,富集的结果可能包含非常笼统的terms。 使用 dropGO
函数,用户可以从从enrichGO
和 compareCluster
获得的结果中删除特定的 GO terms或 GO level。
5.3.2 在特定级别测试 GO(test GO at sepcific level)
enrichGO 不包含限制特定 GO level测试的参数。 相反,我们提供了一个函数 gofilter
来限制特定 GO level的结果。 它适用于从 enrichGO
和 compareCluster
获得的结果。
5.3.3 减少丰富的 GO 术语的冗余(reduce redundancy of enriched GO terms)
GO 是按父子(parent-child)结构组织的,因此一个父项可以与它的所有子项有很大比例的重叠。 这可能会导致多余的发现。 为了解决这个问题,clusterProfiler 实现了简化方法来减少来自enrichGO 和 gseGO 输出的冗余 GO terms。 该函数在内部调用 GOSemSim (Yu et al. 2010) 来计算 GO terms之间的语义相似度,并通过保留一个代表性term来删除那些高度相似的term。 可以在博客文章中找到一个示例。
5.4 GO基因集富集分析(GO Gene Set Enrichment Analysis)
分析基因表达谱的一种常见方法是识别被认为有趣的差异表达基因。 我们之前展示的富集分析是基于这些差异表达的基因。 这种方法会发现差异较大的基因,但不会检测差异较小的情况,而是在一组相关基因中以协调的方式证明。 基因集富集分析 (GSEA)(Subramanian 等人,2005 年)直接解决了这一限制。 所有基因均可用于GSEA; GSEA 汇总了一个基因组内基因的每个基因统计数据,因此可以检测预定义组中的所有基因以小而协调的方式发生变化的情况。 因为很可能许多相关的表型差异是由一组基因的微小但一致的变化表现出来的。
算法细节请参考 DOSE 。
> ego3 <- gseGO(geneList = geneList,
+ OrgDb = org.Hs.eg.db,
+ ont = "CC",
+ nPerm = 1000,
+ minGSSize = 100,
+ maxGSSize = 500,
+ pvalueCutoff = 0.05,
+ verbose = FALSE)
GSEA 使用permutation test,用户可以为permutations数设置 nPerm。 仅测试 [minGSSize, maxGSSize]
中的基因集大小。
如果您在准备自己的geneList
时遇到问题,请参阅 wiki 页面。
5.5 GO语义相似度分析(GO Semantic Similarity Analysis)
GO语义相似度可以通过GOSemSim
(Yu et al. 2010)计算。 我们可以使用它根据功能相似性将基因/蛋白质聚类到不同的簇中,也可以使用它来衡量 GO 术语之间的相似性,以减少 GO 富集结果的冗余。
5.5.1 非模式生物的GO分析(GO analysis for non-model organisms)
enrichGO
和 gseGO
函数都需要一个 OrgDb
对象作为背景注释。 对于没有 Bioconductor
提供的 OrgDb
的生物,用户可以通过 [AnnotationHub](http://bioconductor.org/packages/AnnotationHub)
在线查询一个(如果有)。 如果没有可用的 OrgDb,用户可以从其他来源获取 GO 注释,例如 来自 [biomaRt](http://bioconductor.org/packages/biomaRt)
或 [Blast2GO](https://www.blast2go.com/)
。 然后使用enricher
或者GSEA
函数进行分析,类似于使用wikiPathways
和MSigDB
的例子。 另一种解决方案是使用 [AnnotationForge](http://bioconductor.org/packages/AnnotationForge)
包自行创建 OrgDb
。
参考资料
- http://yulab-smu.top/clusterProfiler-book/chapter5.html
6. KEGG分析
注释包 KEGG.db
自 2012 年以来没有更新。它现在已经很老了,在 clusterProfiler
中,enrichKEGG
(用于 KEGG 通路)和enrichMKEGG
(用于 KEGG 模块)支持下载最新的在线版本的 KEGG 数据进行富集分析。 通过将 use_internal_data
参数显式设置为 TRUE
也支持使用 KEGG.db
,但不建议这样做。
有了这个新功能,生物体不仅限于先前版本支持的那些,它可以是在 KEGG 数据库中具有可用 KEGG 注释数据的任何物种。 用户应将学术名称的缩写传递给organism参数。 KEGG 支持的生物体的完整列表可以通过 http://www.genome.jp/kegg/catalog/org_list.html 访问。 KEGG Orthology (KO)
数据库也通过指定organism = "ko"
来支持。
clusterProfiler 提供search_kegg_organism()
函数来帮助搜索支持的生物体。
> library(clusterProfiler)
> search_kegg_organism("ece",by='kegg_code')kegg_code scientific_name common_name
366 ece Escherichia coli O157:H7 EDL933 (EHEC) <NA>> ecoli = search_kegg_organism("Escherichia coli", by='scientific_name')
> dim(ecoli)
[1] 65 3
> head(ecoli)kegg_code scientific_name common_name
361 eco Escherichia coli K-12 MG1655 <NA>
362 ecj Escherichia coli K-12 W3110 <NA>
363 ecd Escherichia coli K-12 DH10B <NA>
364 ebw Escherichia coli BW2952 <NA>
365 ecok Escherichia coli K-12 MDS42 <NA>
366 ece Escherichia coli O157:H7 EDL933 (EHEC) <NA
6.1 KEGG过表达检验(KEGG over-representation test)
> data(geneList, package = 'DOSE')
> gene = names(geneList)[abs(geneList)>2]
> kk = enrichKEGG(gene = gene, organism = 'hsa', pvalueCutoff = 0.05)
> head(kk)ID Description GeneRatio BgRatio pvalue p.adjust qvalue
hsa04110 hsa04110 Cell cycle 11/94 124/8096 1.641616e-07 3.398145e-05 3.335072e-05
hsa04114 hsa04114 Oocyte meiosis 10/94 129/8096 2.164005e-06 2.239745e-04 2.198174e-04
hsa04218 hsa04218 Cellular senescence 10/94 156/8096 1.192454e-05 8.227933e-04 8.075215e-04
hsa04061 hsa04061 Viral protein interaction with cytokine and cytokine receptor 8/94 100/8096 1.896541e-05 9.814601e-04 9.632434e-04
hsa03320 hsa03320 PPAR signaling pathway 7/94 76/8096 2.585814e-05 1.070527e-03 1.050657e-03
hsa04914 hsa04914 Progesterone-mediated oocyte maturation 7/94 100/8096 1.510470e-04 5.211122e-03 5.114399e-03geneID Count
hsa04110 8318/991/9133/890/983/4085/7272/1111/891/4174/9232 11
hsa04114 991/9133/983/4085/51806/6790/891/9232/3708/5241 10
hsa04218 2305/4605/9133/890/983/51806/1111/891/776/3708 10
hsa04061 3627/10563/6373/4283/6362/6355/9547/1524 8
hsa03320 4312/9415/9370/5105/2167/3158/5346 7
hsa04914 9133/890/983/4085/6790/891/5241 7
输入 ID 类型可以是 kegg
、ncbi-geneid
、ncbi-proteinid
或 uniprot
,示例可以在帖子中找到。
6.2 KEGG基因集富集分析(KEGG Gene Set Enrichment Analysis)
> kk2 = gseKEGG(geneList = geneList, organism = 'hsa', nPerm = 1000, minGSSize = 120, pvalueCutoff = 0.05, verbose = FALSE)
> head(kk2)ID Description setSize enrichmentScore NES pvalue p.adjust qvalues rank
hsa04151 hsa04151 PI3K-Akt signaling pathway 322 -0.3482755 -1.508478 0.001310616 0.03015873 0.02046784 1997
hsa04510 hsa04510 Focal adhesion 190 -0.4169068 -1.718323 0.001390821 0.03015873 0.02046784 2183
hsa04613 hsa04613 Neutrophil extracellular trap formation 130 0.4496569 1.906111 0.003039514 0.03015873 0.02046784 2575
hsa04218 hsa04218 Cellular senescence 141 0.4115945 1.755197 0.003194888 0.03015873 0.02046784 1155
hsa04062 hsa04062 Chemokine signaling pathway 168 0.3769719 1.650487 0.003333333 0.03015873 0.02046784 1298
hsa05152 hsa05152 Tuberculosis 162 0.3745153 1.632920 0.003333333 0.03015873 0.02046784 2823leading_edge
hsa04151 tags=23%, list=16%, signal=20%
hsa04510 tags=27%, list=17%, signal=22%
hsa04613 tags=37%, list=21%, signal=30%
hsa04218 tags=17%, list=9%, signal=16%
hsa04062 tags=21%, list=10%, signal=19%
hsa05152 tags=34%, list=23%, signal=27%core_enrichment
hsa04151 627/2252/7059/92579/5563/5295/6794/1288/7010/3910/3371/3082/1291/4602/3791/1027/90993/3441/3643/1129/2322/1975/7450/596/3685/1942/2149/1280/4804/3675/595/2261/7248/2246/4803/3912/1902/1278/1277/2846/2057/1293/2247/55970/5618/7058/10161/56034/3693/4254/3480/4908/5159/1292/3908/2690/3909/8817/9223/4915/3551/2791/63923/3913/9863/3667/1287/3679/7060/3479/80310/1311/5105/2066/1101
hsa04510 5595/5228/7424/1499/4636/83660/7059/5295/1288/23396/3910/3371/3082/1291/394/3791/7450/596/3685/1280/3675/595/2318/3912/1793/1278/1277/1293/10398/55742/2317/7058/25759/56034/3693/3480/5159/857/1292/3908/3909/63923/3913/1287/3679/7060/3479/10451/80310/1311/1101
hsa04613 820/366/51311/64581/3015/85236/55506/8970/8357/1535/2359/5336/4688/92815/3066/8336/292/1991/3689/8345/5603/4689/5880/10105/1184/6404/3018/6850/5604/3014/7097/1378/8290/1536/834/5605/1183/728/2215/8335/5594/9734/3674/5578/5582/7417/8331/6300
hsa04218 2305/4605/9133/890/983/51806/1111/891/993/3576/1978/898/9134/4609/1869/1029/22808/1871/5499/91860/292/1019/11200/1875
hsa04062 3627/10563/6373/4283/6362/6355/2921/6364/3576/6352/10663/1230/6772/6347/6351/3055/1237/1236/4067/6354/114/5336/3702/6361/1794/1234/6367/6375/6374/2919/409/4793/2792/6360/5880
hsa05152 820/51806/6772/64581/3126/3112/8767/3654/1054/1051/3458/1520/11151/1594/50617/54205/91860/8877/3329/637/3689/7096/2207/3929/4360/5603/929/533/3452/6850/7124/1509/3569/7097/1378/8772/64170/3119/843/2213/8625/3920/2215/3587/5594/3593/9103/3592/6300/9114/10333/3109/3108/1432/3552
6.3 KEGG模块过表达检测(KEGG Module over-representation test)
KEGG Module 是手动定义的功能单元的集合。 在某些情况下,KEGG 模块有更直接的解释。
> mkk = enrichMKEGG(gene = gene, organism = 'hsa')
> head(mkk)ID Description GeneRatio BgRatio pvalue p.adjust qvalue geneID Count
M00912 M00912 NAD biosynthesis, tryptophan => quinolinate => NAD 2/9 12/830 0.00652644 0.03915864 0.03434969 23475/3620 2
6.4 KEGG模块基因集富集分析(KEGG Module Gene Set Enrichment Analysis)
> mkk2 <- gseMKEGG(geneList = geneList, organism = 'hsa')
参考资料
- http://yulab-smu.top/clusterProfiler-book/chapter6.html
【生信分析】clusterProfiler: universal enrichment tool for functional and comparative study(2)相关推荐
- 【生信分析】clusterProfiler: universal enrichment tool for functional and comparative study(3)
clusterProfiler: universal enrichment tool for functional and comparative study ClusterProfiler: 用于功 ...
- 生信分析流程构建的几大流派
导言 构建生信分析流程是生物信息学从业人员必备的技能之一,对该项能力的评估常常是各大公司招录人员的参考项目之一. 在进行 ngsjs 项目时,我做了一张示意图来表示一些高通量测序数据分析项目重现性的要 ...
- docker卸载命令_使用docker完成生信分析环境搭建
生信开发人员最头疼的问题,可能就是平台搭建和软件安装了.部署和迁移上要费很大力气.本文讲述使用docker制作一个镜像,后续通过导入自己定制的镜像,复制文件完成分析流程的部署和迁移. 如何使用dock ...
- 在B站学习大名鼎鼎的StatQuest 系列统计和生信分析视频(中文字幕)- 也见证助理教授到创业者的华丽转身...
生物信息学习的正确姿势 NGS系列文章包括NGS基础.在线绘图.转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这).ChIP-seq分析 (ChIP-seq基本分析流程).单细胞 ...
- 生信分析R语言助力作图----单基因批量相关性分析
单基因批量相关性分析 嘻嘻嘻~~~,晚上秒变生信分析小白,一个游走在生物学和计算机变成之间的小白,享受着里面的快乐和痛苦.不停的挣扎,不停的成长,多学习,多尝试,一定会有意想不到的收获.加油!!! 首 ...
- 生信分析(1):单变量+多变量COX分析
从TCGA上下载数据库和临床数据之后,往往需要进行COX分析,一般的分析思路是先进行单变量,在进行多变量的分析.然而,当关注的基因比较多是,手动输入就会比较麻烦.接下来介绍一种利用循环的方法,快速的对 ...
- 肿瘤/非肿瘤/单基因/单细胞/非编码:史上最全生信分析攻略!!!
解读生信之美,探讨每篇文献背后的逻辑 非肿瘤专栏:条条大路通罗马 1.4+非肿瘤生信分析+铁死亡/焦亡/自噬/代谢/免疫的万能钥匙 短评:适合一些热门机制如铁死亡/焦亡/自噬等在非肿瘤疾病中的研究 2 ...
- 面向生信分析的高性 RStudio 服务器
因需要超大内存的拼接/比对/表达量计算发愁? 为了使用组里的服务器而被困在实验室? 浪费大量的时间龟速下载 NCBI 的数据? 快来看看云筏 HPC 吧! https://my.cloudraft.c ...
- 福建农林大学朱方捷组招聘讲师/副教授/助理——生信分析方向
福建农林大学转录系统生物学课题组招聘(生信分析.组培转化) 工作地点: 福建农林大学海峡联合研究院 薪金: 18-30万 招聘岗位: 讲师/副教授/助理 实验室网址: http://hbmcsysbi ...
- 生信分析平台方案推介,助力科研
生信分析平台方案推介,助力科研 专注 专业 共赢 目前生信分析对计算性能和存储高并发性能都提出来新的要求,例如在基因测序分析中,基因序列数目庞大,对基因进行同源性搜寻.比对.分析.系统发育分析等需要对 ...
最新文章
- 【shell 大系】Linux Shell常用技巧
- WordPress免费精美主题分享系列之简洁风格篇
- 浅谈CMMI几个过程概念流程管理 (转)
- ubuntu 14.04 安装 cuda 6.5
- loj2538 「PKUWC2018」Slay the Spire 【dp】
- 锐捷网费和锐捷网络缴费_教育信息化领域多位专家出席锐捷“三个课堂”应用展示研讨会...
- Java IO: 流
- MSPA安装与生态源地提取
- linux下chkConfig的用法,mysqld开机自启动
- 很多人认为自己赚不到钱是因为没钱,真的是这样吗?
- SQL vs NoSQL:异同比较
- bootstarp怎么使盒子到最右边_基于Android血统的NAS+盒子共生体——零刻GS-king X 开箱初体验...
- ES6学习:Map结构的目的和基本用法
- asp.net 打印html文件,关于ASP.NET页面打印技术的常用方法总结
- 程序员什么时候适合创业呢?
- Canvas实用库收藏
- 2021年新高考八省联考成绩查询江苏省,江苏2021八省联考分数线、位次汇总-附江苏新高考改革方案解读...
- Linux基本工具(上)
- 如何查看网站的收录与排名
- 对于‘用C#编写一个员工工资计算’问题的代码编写风格和结构设计考虑的比较【发现自己还是太弱,大家可以在评论区中提出我代码中的不足】