RNA-seq下游数据分析-ballgown到报告。 以Rscript为主,对接PGx RNA-seq choppy现有pipeline,到生成RNA-seq分析报告所需的rds和csv文件。
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

README.md 18KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485
  1. # RNAseqDownstream2report
  2. [TOC]
  3. RNA-seq下游数据分析-ballgown到报告。 以Rscript为主,对接PGx RNA-seq choppy现有pipeline,到生成RNA-seq分析报告所需的rds和csv文件。
  4. ## 整体流程图
  5. 包括一下几个文件:
  6. 1. RNAseq_1_ballgown.R
  7. 2. RNAseq_2_PCA.R
  8. 3. RNAseq_3_cor.R
  9. 4. RNAseq_4_pwDEG.R
  10. 5. RNAseq_5_pwGSEA.R
  11. 6. RNAseq_6_enrichFunc.R
  12. 7. RNAseq_7_sexcheck.R
  13. ```mermaid
  14. graph LR;
  15. A(input: ballgown dir)-->B[RNAseq_1_ballgown.R];
  16. B-->C[RNAseq_2_PCA.R];
  17. B-->D[RNAseq_3_cor.R];
  18. B-->E[RNAseq_4_pwDEG.R];
  19. B-->F[RNAseq_5_pwGSEA.R];
  20. E-->G[RNAseq_6_enrichFunc.R];
  21. B-->J[RNAseq_7_sexcheck.R];
  22. ```
  23. ## RNAseq_1_ballgown.R
  24. ### 功能简介
  25. 从ballgown的文件夹到基因表达水平表格(每列为样本,每行为基因)
  26. ### 代码与参数
  27. ```shell
  28. Usage: Rscript RNAseq_1_ballgown.R [options]
  29. Options:
  30. -o OUT_DIR, --out_dir=OUT_DIR
  31. The output directory [default ~]
  32. -i INPUT, --input=INPUT
  33. The directory input of expression files. It is output from ballgown software.
  34. -f NUMBER, --floor_value=NUMBER
  35. A number to add to each value before log2 transformation to avoid infinite value.[default: 0.01]
  36. -l TRUE, --log2_norm=TRUE
  37. Perform log2 transformation on FPKM value. [default: TRUE]
  38. -p PROJECT_CODE, --project_code=PROJECT_CODE
  39. Project code, which is used as prefix of output file. [default: rnaseq]
  40. -h, --help
  41. Show this help message and exit
  42. ```
  43. 参数解释
  44. | 参数 | 取值类型 | 解释 | 例如 |
  45. | -------------------------------------------- | ---------- | ------------------------------------------------------------ | ----------- |
  46. | -o OUT_DIR, --out_dir=OUT_DIR | character | 输出路径,默认为./。可加“/”也可不加“/” | ./ |
  47. | -i INPUT, --input=INPUT | character | 输入路径, ballgown的文件夹,**必须输入**。要求ballgown文件夹中文件如下所示<http://www.bioconductor.org/packages/release/bioc/vignettes/ballgown/inst/doc/ballgown.html | ./ballgown/ |
  48. | -f NUMBER, --floor_value=NUMBER | number | 在log2转换时,需在0中加入一个底值。默认为0.01 | 0.01 |
  49. | -l TRUE, --log2_norm=TRUE | TRUE/FALSE | 是否进行log2转换 | TRUE |
  50. | -p PROJECT_CODE, --project_code=PROJECT_CODE | character | project代号,输出文件的前缀,默认rnaseq | rnaseq |
  51. | -h, --help | | 查看帮助文档并退出 | -h |
  52. ### 输出结果
  53. tab分隔的基因表达谱,文件名为:rnaseq_geneexp_fpkm_c4r58395_2019-04-30.txt
  54. 文件内容例如:
  55. > Gene P1 P2 P3
  56. > ENSG00000000003 2.951 5.085 3.592
  57. > ENSG00000000005 -6.644 -4.248 -3.085
  58. > ENSG00000000419 4.966 6.197 5.332
  59. > ENSG00000000457 0.854 1.838 0.665
  60. > ENSG00000000460 -0.19 1.693 0.145
  61. > ENSG00000000938 -6.644 -6.148 -6.644
  62. > ENSG00000000971 -5.919 -6.644 -6.644
  63. > ENSG00000001036 5.134 5.47 4.998
  64. > ENSG00000001084 2.676 2.303 2.638
  65. ### 运行示例
  66. ```shell
  67. #最少输入
  68. Rscript RNAseq_1_ballgown.R -i ./ballgown/
  69. # 其他输入
  70. Rscript RNAseq_1_ballgown.R -o /home/yuying/rnaseqreport_test -i ./ballgown/ -l FALSE -p test
  71. ```
  72. ## RNAseq_2_pca.R
  73. ### 功能简介
  74. 计算PCA,输出choppy report所需的scatterplot图的rds和csv文件。
  75. ### 代码与参数
  76. ```shell
  77. Usage: Rscript RNAseq_2_pca.R [options]
  78. Options:
  79. -o OUT_DIR, --out_dir=OUT_DIR
  80. The output directory [default ~]
  81. -i INPUT, --input=INPUT
  82. The input expression files. required!
  83. -g SAMPLE_GROUP, --sample_group=SAMPLE_GROUP
  84. File for sample group infomation.The input file containing sample name and group infomation. note colname must be like: sample group1 group2...
  85. -p PROJECT_CODE, --project_code=PROJECT_CODE
  86. Project code, which is used as prefix of output file. [default: rnaseq]
  87. -h, --help
  88. Show this help message and exit
  89. ```
  90. | 参数 | 取值类型 | 解释 | 例如 |
  91. | -------------------------------------------- | --------- | ------------------------------------------------------------ | ----------- |
  92. | -o OUT_DIR, --out_dir=OUT_DIR | character | 输出路径,默认为./。可加“/”也可不加“/” | ./ |
  93. | -i INPUT, --input=INPUT | character | 输入文件名,**必须输入。**输入表达谱必须是log scaled的tab分隔的表达谱,可以是RNAseq_1_ballgown.R的输出文件。 | example.txt |
  94. | -g SAMPLE_GROUP, --sample_group=SAMPLE_GROUP | character | 有tab分隔的样本的分组信息,一行为一个样本,每列为分组信息。分组信息可以是多列。如果没有,可以不输入。 | group.txt |
  95. | -p PROJECT_CODE, --project_code=PROJECT_CODE | character | project代号,输出文件的前缀,默认rnaseq | rnaseq |
  96. | -h, --help | | 查看帮助文档并退出 | -h |
  97. ### 输出结果
  98. 各样本的各PC值,choppy report所需的scatterplot图的rds和csv文件,(其中绘图时仅需rds文件,csv文件就看看):
  99. rnaseq_pca.csv:逗号分隔的文件
  100. rnaseq_pca.rds:R对象
  101. 内容如下:
  102. > "","PC1","PC2","PC3","sample","group1","group2"
  103. > "P1",-135.940,-151.769,-4.017e-15,"P1","A","test1"
  104. > "P2",259.848,-4.758,-1.906e-13,"P2","B","test2"
  105. > "P3",-123.908,156.528,2.464e-13,"P3","B","test1"
  106. ### 运行示例
  107. ```shell
  108. #最少输入
  109. Rscript RNAseq_2_pca.R -i ballgown_geneexp_log2fpkm_floor0p01_c3r58395_2019-04-29.txt
  110. #其他输入
  111. Rscript RNAseq_2_pca.R -o -i ballgown_geneexp_log2fpkm_floor0p01_c3r58395_2019-04-29.txt -g group2.txt -p test
  112. ```
  113. ### choppy report
  114. 有group信息:
  115. @scatter-plot(dataFile='/*yourdir*/data/rnaseq_pca.rds', dataType='rds', xAxis='PC1', xTitle="",yAxis='PC2',yTitle="",colorAttr="group1")
  116. 无group信息:
  117. @scatter-plot(dataFile='/*yourdir*/data/rnaseq_pca.rds', dataType='rds', xAxis='PC1', xTitle="",yAxis='PC2',yTitle="")
  118. ## RNAseq_3_cor.R
  119. ### 功能简介
  120. 计算correlation,输出choppy report所需的scatterplot图的rds和csv文件。
  121. ### 代码与参数
  122. ```shell
  123. Usage: Rscript RNAseq_3_cor.R [options]
  124. Options:
  125. -o OUT_DIR, --out_dir=OUT_DIR
  126. The output directory [default ./]
  127. -i INPUT, --input=INPUT
  128. The input expression files. required!
  129. -g SAMPLE_GROUP, --sample_group=SAMPLE_GROUP
  130. File for sample group infomation.The input file containing sample name and group infomation. note colname must be like: sample group1 group2...
  131. -p PROJECT_CODE, --project_code=PROJECT_CODE
  132. Project code, which is used as prefix of output file. [default: rnaseq]
  133. -h, --help
  134. Show this help message and exit
  135. ```
  136. | 参数 | 取值类型 | 解释 | 例如 |
  137. | -------------------------------------------- | --------- | ------------------------------------------------------------ | ----------- |
  138. | -o OUT_DIR, --out_dir=OUT_DIR | character | 输出路径,默认为./。可加“/”也可不加“/” | ./ |
  139. | -i INPUT, --input=INPUT | character | 输入文件名,**必须输入。**输入表达谱必须是log scaled的tab分隔的表达谱,可以是RNAseq_1_ballgown.R的输出文件。 | example.txt |
  140. | -g SAMPLE_GROUP, --sample_group=SAMPLE_GROUP | character | 有tab分隔的样本的分组信息,一行为一个样本,每列为分组信息。分组信息可以是多列。这项输入在该代码中与输出无关。该参数设置仅为串行的逻辑完整性。 | group.txt |
  141. | -p PROJECT_CODE, --project_code=PROJECT_CODE | character | project代号,输出文件的前缀,默认rnaseq | rnaseq |
  142. | -h, --help | | 查看帮助文档并退出 | -h |
  143. ### 输出结果
  144. 样本两两关系的peason correlation matrix,choppy report所需的heatmap图的rds和csv文件,(其中绘图时仅需rds文件,csv文件就看看)。
  145. rnaseq_cor.csv:逗号分隔的文件
  146. rnaseq_cor.rds:R对象
  147. 内容如下:
  148. > "","P1","P2","P3"
  149. > "P1",1,0.898,0.944
  150. > "P2",0.898,1,0.901
  151. > "P3",0.944,0.901,1
  152. ### 运行示例
  153. ```shell
  154. #最少输入
  155. Rscript RNAseq_3_cor.R -i ballgown_geneexp_log2fpkm_floor0p01_c3r58395_2019-04-29.txt
  156. #其他输入
  157. Rscript RNAseq_3_cor.R -o -i ballgown_geneexp_log2fpkm_floor0p01_c3r58395_2019-04-29.txt -g group2.txt -p test
  158. ```
  159. ### choppy report
  160. @heatmap-d3(dataFile='/*yourdir*/data/rnaseq_cor.rds', dataType='rds', labCol='TRUE')
  161. ## RNAseq_4_pwDEG.R
  162. ### 功能简介
  163. 根据sample_group的分组信息,两两计算差异基因,输出差异基因列表和火山图所需文件,用于choppy报告系统。差异基因的cutoff:t test p<0.05 同时 log2 fold change >=1 或<= (-1)
  164. ### 代码参数
  165. ```shell
  166. Usage: Rscript RNAseq_4_pwDEG.R [options]
  167. Options:
  168. -o OUT_DIR, --out_dir=OUT_DIR
  169. The output directory [default ./]
  170. -i INPUT, --input=INPUT
  171. The input expression files. required!
  172. -g SAMPLE_GROUP, --sample_group=SAMPLE_GROUP
  173. File for sample group infomation.The input file containing sample name and group infomation. note colname must be like: sample group1 group2...
  174. -p PROJECT_CODE, --project_code=PROJECT_CODE
  175. Project code, which is used as prefix of output file. [default: rnaseq]
  176. -a FALSE, --output_all_genes=FALSE
  177. Output rds files for choppy contains all genes. By default, only DEGs are listed in the output rds and csv for report. NOTE choppy report may not be availble to display correctly if too many points exit. [default: FALSE]
  178. -b FALSE, --low_expr_filter=FALSE
  179. Conduct low expression filtering before DEG analysis. [default: FALSE]
  180. -f NUMBER, --low_expr_filter_cutoff=NUMBER
  181. Genes across all samples with expreesion lower than this value will be filtered out [default: 0]
  182. -h, --help
  183. Show this help message and exit
  184. ```
  185. | 参数 | 取值类型 | 解释 | 例如 |
  186. | -------------------------------------------- | ---------- | ------------------------------------------------------------ | ----------- |
  187. | -o OUT_DIR, --out_dir=OUT_DIR | character | 输出路径,默认为./。可加“/”也可不加“/” | ./ |
  188. | -i INPUT, --input=INPUT | character | 输入文件名,**必须输入。**输入表达谱必须是log scaled的tab分隔的表达谱,可以是RNAseq_1_ballgown.R的输出文件。 | example.txt |
  189. | -g SAMPLE_GROUP, --sample_group=SAMPLE_GROUP | character | 有tab分隔的样本的分组信息,**必须输入**。格式为:每行一个样本,每列为分组信息。分组信息可以是多列。 | group.txt |
  190. | -p PROJECT_CODE, --project_code=PROJECT_CODE | character | project代号,输出文件的前缀,默认rnaseq | rnaseq |
  191. | -a FALSE, --output_all_genes=FALSE | TRUE/FALSE | 是否输出所有基因 | FALSE |
  192. | -b FALSE, --low_expr_filter=FALSE | TRUE/FALSE | 在差异其因寻找之前是否进行低表达基因过滤 | FALSE |
  193. | -f NUMBER, --low_expr_filter_cutoff=NUMBER | number | 在所有样本中,低于-f的表达水平的基因会作为低表达基因过滤掉 | 0 |
  194. | -h, --help | | 查看帮助文档并退出 | -h |
  195. ### 输出结果
  196. 该代码将输出一系列输出文件:
  197. 1. PROJECT_CODE_GROUPversus_deg.csv(rds)
  198. 根据分组情况进行两两比较,每次比较的结果输出1个PROJECT_CODE_GROUPversus_deg.csv,一个PROJECT_CODE_GROUPversus_deg.rds。因此根据比较次数,将输出比较次数*2个文件。
  199. choppy report所需的火山图的rds和csv文件,(其中绘图时仅需rds文件,csv文件就看看)。
  200. 例如:
  201. rnaseq_AvsB_degs.csv
  202. rnaseq_AvsB_degs.rds
  203. 文件内容为:每次比较的差异基因、比较的组别信息、log2FC、-log10 P value、是否为DEG。默认情况下只输出DEG,若计算时设置参数“-a TRUE”,则输出所有基因,sigene标记为nonDEG和DEG两类。
  204. > "gene","versus","logfc","log10p","sigene"
  205. > "ENSG00000004776","A vs B",-2.82273809523809,1.50125858539637,"DEG"
  206. > "ENSG00000007171","A vs B",3.06833333333333,1.62715851425345,"DEG"
  207. > "ENSG00000011347","A vs B",-1.10492857142857,1.31435980565864,"DEG"
  208. > "ENSG00000011677","A vs B",-2.19445238095238,1.55184587515544,"DEG"
  209. 2. PROJECT_CODE_deg_acrossgroups.csv
  210. 将1产生的所有差异基因(仅差异基因)集合到一起,用于差异基因清单表展示。
  211. > "gene","versus","pvalue","log2FC"
  212. > "ENSG00000004776","A vs B",0.03153,-2.823
  213. > "ENSG00000007171","A vs B",0.0236,3.068
  214. > "ENSG00000011347","A vs B",0.04849,-1.105
  215. > "ENSG00000011677","A vs B",0.02806,-2.194
  216. > "ENSG00000012504","A vs B",0.04607,3.357
  217. 3. PROJECT_CODE_GROUPversus_deg_stats.csv(rds)
  218. 差异基因统计,用于choppy报告系统中的barplot图。
  219. > "number","type","versus"
  220. > 65,"upregulated","A vs B"
  221. > 138,"downregulated","A vs B"
  222. ### 运行示例
  223. ```shell
  224. #最少输入
  225. Rscript RNAseq_4_pwDEG.R -i example_geneexp_log2fpkm_floor0p01_c13r58395_2019-04-30.txt -g group13_1.txt
  226. #其他输入
  227. Rscript RNAseq_4_pwDEG.R -i example_geneexp_log2fpkm_floor0p01_c13r58395_2019-04-30.txt -g group13_1.txt -p example_2 --low_expr_filter=TRUE -f -1
  228. ```
  229. ### choppy report
  230. 1. 火山图
  231. @scatter-plot(dataFile='/*yourdir*/data/rnaseq_AvsB_degs.rds', dataType='rds', xAxis='logfc', xTitle="log2FC",yAxis='log10p',yTitle="-log10 (p)", colorAttr="sigene")
  232. 2. 差异基因清单表
  233. @data-table-js(dataUrl=/*yourdir*/data/rnaseq_degs_acrossgroups.csv')
  234. 3. 整体差异基因数量
  235. @stack-barplot-r(dataFile='/*yourdir*/data/rnaseq_degs_stats.rds', dataType='rds', xAxis='versus', yAxis='number',labelAttr='type',barPos='stack')
  236. ## RNAseq_5_pwGSEA.R
  237. ## RNAseq_6_enrichfunc.R
  238. ### 功能简介
  239. 利用 clusterProfiler包对不同比较中的差异基因进行GO和KEGG通路分析。
  240. 输入:RNAseq_4_pwDEG.R输出的差异基因清单表(PROJECT_CODE_deg_acrossgroups.csv)。
  241. #注意联网
  242. ### 代码参数
  243. ```shell
  244. Usage: Rscript RNAseq_6_enrichfunc.R [options]
  245. Options:
  246. -o OUT_DIR, --out_dir=OUT_DIR
  247. The output directory [default ./]
  248. -i INPUT, --input=INPUT
  249. The input DEG list in csv format. The first column: gene; second column: group. Required!
  250. -e TYPE_GENE_ID, --type_gene_id=TYPE_GENE_ID
  251. The type of gene symbol. Could be either of EnsemblGID/EntrezID/GeneSymbol [default: EnsemblGID]
  252. -f NUMBER, --pvalueCutoff=NUMBER
  253. Cutoff value of p value. [default: 0.05]
  254. -m PADJUSTMETHOD, --pAdjustMethod=PADJUSTMETHOD
  255. Method of adjust p value. One of "holm", "hochberg", "hommel", "bonferroni", "BH", "BY", "fdr", "none". [default: BH]
  256. -q NUMBER, --qvalueCutoff=NUMBER
  257. Cutoff value of q value. [default: 0.2]
  258. -p PROJECT_CODE, --project_code=PROJECT_CODE
  259. Project code, which is used as prefix of output file. [default: rnaseq]
  260. -h, --help
  261. Show this help message and exit
  262. ```
  263. | 参数 | 取值类型 | 解释 | 例如 |
  264. | ----------------------------------------------- | --------- | ------------------------------------------------------------ | ----------- |
  265. | -o OUT_DIR, --out_dir=OUT_DIR | character | 输出路径,默认为./。可加“/”也可不加“/” | ./ |
  266. | -i INPUT, --input=INPUT | character | 输入文件名,**必须输入。**输入表达谱必须是log scaled的tab分隔的表达谱,可以是RNAseq_1_ballgown.R的输出文件。 | example.txt |
  267. | -e TYPE_GENE_ID, --type_gene_id=TYPE_GENE_ID | character | 基因ID类型,可以是:Ensembl gene ID (EnsemblGID)、Entrez Gene ID (EntrezID)或Gene Symbol (GeneSymbol)。[default: EnsemblGID] | EnsemblGID |
  268. | -f NUMBER, --pvalueCutoff=NUMBER | number | 富集分析p值 cutoff | 0.05 |
  269. | -m PADJUSTMETHOD, --pAdjustMethod=PADJUSTMETHOD | character | p adjust method | BH |
  270. | -q NUMBER, --qvalueCutoff=NUMBER | number | 富集分析q值 cutoff | 0.2 |
  271. | -p PROJECT_CODE, --project_code=PROJECT_CODE | character | project代号,输出文件的前缀,默认rnaseq | rnaseq |
  272. | -h, --help | | 查看帮助文档并退出 | -h |
  273. ### 输出结果
  274. GO和KEGG通路结果。
  275. ### 运行示例
  276. ```shell
  277. #最少输入
  278. Rscript RNAseq_6_enrichfunc.R -i example_3_degs_acrossgroups.csv
  279. ```
  280. ### choppy report
  281. @data-table-js(dataUrl=/*yourdir*/data/rnaseq_GOenrich.csv')
  282. @data-table-js(dataUrl=/*yourdir*/data/rnaseq_KEGGenrich.csv')
  283. ## RNAseq_7_sexcheck.R