Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GTF文件有什么用啊?别的不谈,最起码能提lncRNA #6080

Closed
ixxmu opened this issue Dec 3, 2024 · 1 comment
Closed

GTF文件有什么用啊?别的不谈,最起码能提lncRNA #6080

ixxmu opened this issue Dec 3, 2024 · 1 comment

Comments

@ixxmu
Copy link
Owner

ixxmu commented Dec 3, 2024

https://mp.weixin.qq.com/s/v8HCQgewWq9VKN8xwfrGjg

@ixxmu
Copy link
Owner Author

ixxmu commented Dec 3, 2024

GTF文件有什么用啊?别的不谈,最起码能提lncRNA by 果子学生信

我们直接去下载他, http://asia.ensembl.org/index.html


解压缩后,使用R语言可以读取,有多中方案,最终我选择的是rtracklayer::import,而且我认为这是最好的方法。

首先我们来安装rtracklayer这个包

  1. if(length(getOption("CRAN"))==0) options(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/")

  2. if(!require("rtracklayer")) BiocManager::install("rtracklayer")

直接读取,大概要2分钟,然后转换成data.frame格式

  1. gtf1 <- rtracklayer::import('Homo_sapiens.GRCh38.94.chr.gtf')

  2. gtf_df <- as.data.frame(gtf1)

这是一行270万行,27列的文件,可能是普通人接触到的最大数据,里面记录了基因的构成信息,每个基因有在基因组上的位置,有多少转录本,是否编码。

  1. dim(gtf_df)

  2. [1] 2736845      27

我们把这个数据保存成Rdata格式,这就是课堂上抽取lncRNA,mRNA以及名称转换需要的gtf文件,使用的时候load即可

  1. save(gtf_df,file = "gtf_df.Rda")

我们通过行名来了解一下他,有27个。

  1. colnames <- data.frame(colnames=colnames(gtf_df))

  2. colnames

  3. 1 seqnames

  4. 2 start

  5. 3 end

  6. 4 width

  7. 5 strand

  8. 6 source

  9. 7 type

  10. 8 score

  11. 9 phase

  12. 10 gene_id

  13. 11 gene_version

  14. 12 gene_name

  15. 13 gene_source

  16. 14 gene_biotype

  17. 15 transcript_id

  18. 16 transcript_version

  19. 17 transcript_name

  20. 18 transcript_source

  21. 19 transcript_biotype

  22. 20 tag

  23. 21 transcript_support_level

  24. 22 exon_number

  25. 23 exon_id

  26. 24 exon_version

  27. 25 protein_id

  28. 26 protein_version

  29. 27 ccds_id

然后我们就可以利用这个文件结合读取好的TCGA counts文件,抽离出mRNA和lncRNA 其中exprdfnopoint就是去掉ensemble id后面小数点的表达文件,ensemble id是第一列,每个样本是一列。大概是这样的:

获取mRNA

  1. library(dplyr)

  2. library(tidyr)

  3. ## mRNA

  4. mRNA_exprSet <- gtf_df %>%

  5.  dplyr::filter(type=="gene",gene_biotype=="protein_coding") %>% #筛选gene,和编码指标

  6.  dplyr::select(c(gene_name,gene_id,gene_biotype)) %>%

  7.  dplyr::inner_join(expr_df_nopoint,by ="gene_id") %>%

  8.  tidyr::unite(gene_id,gene_name,gene_id,gene_biotype,sep = " | ")

获取lncRNA

  1. library(dplyr)

  2. library(tidyr)

  3. # lncRNA

  4. ncRNA <- c("sense_overlapping","lincRNA","3prime_overlapping_ncRNA",

  5.           "processed_transcript","sense_intronic",

  6.           "bidirectional_promoter_lncRNA","non_coding",

  7.           "antisense_RNA")

  8. LncRNA_exprSet <- gtf_df %>%

  9.  dplyr::filter(type=="transcript",transcript_biotype %in% ncRNA) %>% #注意这里是transcript_biotype

  10.  dplyr::select(c(gene_name,gene_id,transcript_biotype)) %>%

  11.  dplyr::distinct() %>% #删除多余行

  12.  dplyr::inner_join(expr_df_nopoint,by ="gene_id") %>%

  13.  tidyr::unite(gene_id,gene_name,gene_id,transcript_biotype,sep = " | ")

除此以外,还能干什么呢? 比如我想知道21号染色体上有多少个基因?可以的

  1. ## 21号染色体上的编码基因

  2. gene21 <- gtf_df %>%

  3.  dplyr::filter(seqnames=="21",type=="gene",gene_biotype=="protein_coding") %>%

  4.  dplyr::select(c(gene_name,gene_id))

我们发现有231个编码基因

人类基因组上每个染色体上有多少个基因,知道么?可以的。

  1. ## 每个染色体上有多少个基因

  2. gene_chr <- gtf_df %>%

  3.  dplyr::filter(type=="gene")

  4. data <- table(gene_chr$seqnames)

  5. barplot(data,col = data)

好了,明天见。


@ixxmu ixxmu changed the title archive_request GTF文件有什么用啊?别的不谈,最起码能提lncRNA Dec 3, 2024
@ixxmu ixxmu closed this as completed Dec 3, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant