就想把表达矩阵区分成为蛋白编码基因和非编码有这么难吗?

大家好,我是梦梦,以为自己半年前完成了数据挖掘培训学习,结果最近想看看自己是否够格成为优秀学徒,才发现自己与他们差距有多大,所以把自己思考过程分享一下,希望大家也都实践起来,不要自认为懂了就懂了!

前面生信技能树公众号优秀学徒发布了七步走纯R代码通过数据挖掘复现一篇实验文章(第1到6步),展现过分析过程了,但是自己由于没有实践,吸收和理解很差,所以自己再复现一次。

考核题的文章里面是自己测了8个TNBC病人的转录组然后分析,这里借助TCGA数据库,所以可以复现。我这里想展现的主要是TCGA的数据下载和基因的ID转换,分类,的理解。

文章中展示的第一张图片,文章将lncRNA和mRNA分别进行了差异基因的筛选,后面的分析也都是基于这张图片的基础上,因此我们能区分出是lncRNA和mRNA的GENEID,就可以做后面的差异分析以及功能注释了。

复现文章

一.下载数据

数据下载方式

技能树公众号里已经有很多关于TCGA数据的下载方式了,下面是其中的两个参考链接:

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

https://mp.weixin.qq.com/s/CJoq-Wz3b3y9GoHxmrNSkg

数据下载步骤

我用的是UCSC 的xena数据库下载,下载步骤如下:

1.下载网址:https://xenabrowser.net/datapages/

2.搜索brca,发现有两个数据集(这里选择了第一个数据集)

[GDC TCGA Breast Cancer (BRCA)]

[TCGA Breast Cancer (BRCA)]

image-20190917185034993

3.如上图,选择HTSeq-counts和Phenotype,下载到本地

image-20190917185139751
image-20190917185202060

4.将下载下来的文件保存到当前工作目录中

二.R处理数据

得到表达矩阵

######step1-getdata
rm(list = ls())
expr<-read.csv('TCGA-BRCA.htseq_counts .tsv',sep = '\t')
save(expr,file = 'TCGA-BRCA.htseq_counts .Rdata')
load('TCGA-BRCA.htseq_counts .Rdata')
colnames(expr)
rownames(expr)<-expr$Ensembl_ID
expr<-expr[,-1]
colnames(expr)<-gsub('.','-',colnames(expr),fixed = T)

phe<-read.csv('TCGA-BRCA.GDC_phenotype.tsv.gz',sep = '\t')
phe[1:4,1:4]
colnames(phe)
phe_tnbc<-phe[,c(1,20,25,67)]
er<-phe_tnbc[phe$breast_carcinoma_estrogen_receptor_status=='Negative',]
pr<-er[er$breast_carcinoma_progesterone_receptor_status=='Negative',]
her2<-pr[pr$lab_proc_her2_neu_immunohistochemistry_receptor_status=='Negative',]
phe_new<-her2
rownames(phe_new)<-phe_new$submitter_id.samples
phe_new<-phe_new[,-1]
phe_new$id<-c(1:118)
a<- which(duplicated(substr(rownames(phe_new),1,12)))
b<-which(duplicated(substr(rownames(phe_new),1,12)))-1
b<-as.integer(b)
normal<-phe_new[a,]
tumor<-phe_new[b,]
nt<-rbind(normal,tumor)
rownames(nt)
table(substr(rownames(nt),14,15))

expr_phe<-nt[(rownames(nt) %in% colnames(expr)),]
table(substr(rownames(expr_phe),14,15))
which(substr(rownames(expr_phe),14,15)=='06')#同一个病人,两个tumor编号,一个为01,一个为06,这里面为了保持整齐,去掉06.
expr_phe<-expr_phe[-9,]
rownames(expr_phe)
dim(expr_phe)
x<-substr(rownames(expr_phe),1,12)
x
table(x)
table(x)==2
table(x)[table(x)==2]
y<-names(table(x)[table(x)==2])
clini<-expr_phe[x %in% y,]
dat<-expr[,match(rownames(clini),colnames(expr))]

save(dat,clini,file = 'step1.Rdata')
load('step1.Rdata')

通过上面就得到了10个TNBC病人的既含有tumor又含有normal的表达矩阵,及他们的临床信息。值得注意的是,不同下载源,得到的病人数量不一样哦。

主成分分析看分组

上面是处理好的数据,但是我们还有看看自己处理后的数据的分组情况,是不是没有问题的,因此用主成分分析。

######step2-PCA
rm(list = ls())
load('step1.Rdata')
library("FactoMineR")
library("factoextra") 
exprSet<-dat
#exprSet=exprSet[apply(exprSet,1,function(x) sum(x>0))>=20,]注释掉是因为一开始想这样筛选探针,但是是不对的,后面还要通过lncRNA和mRNA进行过滤探针
dim(exprSet)
group_list<-c(rep('tumor',10),rep('normal',10))
df.pca <- PCA(t(exprSet), graph = FALSE) 
fviz_pca_ind(df.pca,
 geom.ind = "point",
 col.ind = group_list, 
 addEllipses = TRUE, 
 legend.title = "Groups"
)

可以看到,tumor和normal可谓是泾渭分明!非常棒
image-20190919195559728

三.注释

1.从R包中注释

因为要区分lncRNA和蛋白编码基因,需要查看群主以前的教程,主要是需要仔细研读两个价值1000元的代码:

第一次是:TCGA的28篇教程-风险因子关联图-一个价值1000但是迟到的答案

第二次是:(重磅!价值一千元的R代码送给你)芯片探针序列的基因组注释

根据教程,我计划首先从R包中获得注释,需要下载对应的注释R包。从Bioconductor获得的AnnotationDbi Introduction To Bioconductor Annotation Packages文档中的代码。

######step3-id_convertion
BiocManager::install('EnsDb.Hsapiens.v75')
library(EnsDb.Hsapiens.v75)
edb <- EnsDb.Hsapiens.v75
edb
columns(edb)
keytypes(edb)
keys <- keys(edb, keytype="GENEID")
## Get the data
gene2sym<-select(edb, keys=keys, 
  columns=c("SYMBOL","ENTREZID","GENEBIOTYPE",'GENENAME'),
  keytype="GENEID")
table(gene2sym$GENEBIOTYPE)

image-20190919211129898

从图片中可以看到编码蛋白的protein_coding RNA,还有很多绿色框圈起来的RNA,文章中的mRNA可以通过对应protein_coding 的GENEID获得对应的gene symbol,那么lncRNA的GENEID是如何获得的?

除去我只知道的非编码RNA中的miRNA,其他还有哪些是lncRNA呢?貌似从这个R包中我并没有头绪了。于是打算再折腾一番。老大曾经告诉过,从GTF文件中可以获得lncRNA。因此继续要做的就是需要补充两个知识,就是:

  • 1.何为lncRNA(它和上图中的lincRNA什么关系?)

  • 2.如何获得GTF文件已经如何得到lncRNA对应的GENEID?

第一个问题:何为lncRNA(它和上图中的lincRNA什么关系?)

解决问题:

关于非蛋白编码基因(non-coding RNA,ncRNA)的一些概念

非蛋白质编码基因组在生物学和医学上的地位日益突出。下面的10句话帮助理解ncRNA。

1.人类基因组中约有93%的DNA序列转录生成RNA,然而只有约2%的DNA序列最终编码生成蛋白质。

2.那些能为蛋白质编码的RNA分子, 称为编码RNA(coding RNA),也就是protein-coding RNA。而那些不能编码蛋白质,但也能被转录生成RNA的RNA分子统称为非编码RNA(non-coding  RNA,ncRNA)。

3.ncRNA的功能主要是参与mRNA的稳定和翻译水平的调节、参与蛋白质的运输、参与RNA的加工和修饰、影响染色体的结构等。

4.ncRNA分为看家非编码RNA(housekeeping  non-coding  RNA)和调控非编码RNA(regulatory  non-coding  RNA),而后者主要包括主要包括长度大于200个核苷酸的长链非编码RNA(long non-coding RNA, lncRNA)和少于200个核苷酸的短链非编码RNA。

5.短链非编码RNA又分为微小RNA (mircoRNA,  miRNA)、内源性小干扰RNA (endogenous  small interfering RNA,  endo-siRNA)、PIWI相互作用RNA ( PIWI-interacting RNA , piRNA)、核仁小分子RNA(small nucleolar RNA, snoRNA)等。

6.研究最深入的短链非编码RNA是miRNA,但许多其他类型的ncRNA也在细胞稳态和疾病中发挥重要作用,比如lncRNA。

7.与具有调节功能的短链非编码RNA相比,长非编码RNA(long noncoding RNA,lncRNA)在数量上占大多数。

8.lncRNA一般是指大于200个核苷酸的非编码RNA。

9.lncRNA可分为正义lncRNA(sense  ln-cRNA)、反义lncRNA(antisense lncRNA)、双向lncRNA (bidirectional  lncRNA)、基因内lncRNA(intronic  ln-cRNA)及基因间lncRNA(intergenic, lincRNA)等5种类型。

10.长基因间非编码RNA (lincRNA)基因是lncRNA中的一类,具有重组染色质和基因组结构、RNA稳定和转录调控(包括增强相关活性)等功能。有一些lincRNAs含有小开放阅读框(smORFs)和编码功能肽,也被归类为编码RNA。lincRNAs可以广泛地通过多种基因来微调邻近基因的表达,具有显著的组织特异性。

第二个问题:如何获得GTF文件以及如何得到lncRNA对应的GENEID?

解决问题:如下,需要一定的linux基础知识

2.从GTF文件注释

想要获得GTF文件,又需要补充和回顾下下面的知识点

超精华生信ID总结,想踏入生信大门的你-值得拥有

https://github.com/jmzeng1314/bioinformatics123/blob/master/appendix/database.md

https://vip.biotrainee.com/d/165-gtf-gff

基因组注释文件(GFF,GTF)下载的四种方法

  • [NCBI]

  • [Ensembl]

  • [UCSC]

  • [GeneCode]

(1)不同注释版本之间的对应关系

hg19,GRCH37和ensembl75是三种国际生物信息学数据库资源收集存储单位,即NCBI,UCSC和ENSEMBL各自发布的人类基因组信息。

hg系列,hg18/19/38来自UCSC也是目前使用频率最高的基因组。hg38,是目前的最新版本。

基因组各种版本对应关系综合来看如下所示 :

NCBI (UCSC) : ENSEMBL

  • GRCh36 (hg18): ENSEMBL release_52.

  • GRCh37 (hg19): ENSEMBL release_59/61/64/68/69/75.

  • GRCh38 (hg38): ENSEMBL release_76/77/78/80/81/82.

ENSEMBL的版本特别复杂也很容易搞混,UCSC的版本就简单很多,常用的是hg19,最新版本为hg38。

==Ensembl,还有2个大名鼎鼎的计划就是ENCODE和GENCODE==

Ensembl与ENCODE以及GENCODE计划之间的关系
Ensembl是ENCODE计划的子项目。而GENCODE计划(由Sanger研究所维护)则是ENCODE项目的衍生品,它的目标是为ENCODE项目提供可用的人类基因组和小鼠基因组注释。Ensembl在ENCODE计划中的作用是,为人类基因组的组装提供计算机的自动注释信息,并且把这些自动注释的信息和来自HAVANA的人工注释信息进行合并。GENCODE中的人类和小鼠的基因组注释和Ensembl数据库是同步发行的。

GTF和GFF格式是Sanger研究所定义,是一种简单的、方便的对于DNA、RNA以及蛋白质序列的特征进行描述的一种数据格式。

==GFF==全称为general feature format,这种格式主要是用来注释基因组。

==GTF==全称为gene transfer format,主要是用来对基因进行注释。

比如序列的哪里到哪里是基因,是转录本,是外显子,内含子或者CDS等等,已经成为序列注释的通用格式,许多软件都支持输入或者输出gff格式。gff是由tab键隔开的9列组成,以下是各列的说明:

  1. seq_id:序列的编号,一般为chr或者contig ID;

  2. source: 注释的来源,一般为数据库或者注释的机构,如果未知,则用点“.”代替

  3. type: 注释信息的类型,比如Gene、cDNA、mRNA、CDS等;

  4. start: 该基因或转录本在参考序列上的起始位置;

  5. end: 该基因或转录本在参考序列上的终止位置;

  6. score: 得分,数字,是注释信息可能性的说明,可以是序列相似性比对时的E-values值或者基因预测是的P-values值,.表示为空;

  7. strand: 该基因或转录本位于参考序列的正链(+)或负链(-)上;

  8. phase: 仅对注释类型为“CDS”有效,表示起始编码的位置,有效值为0、12. (对于编码蛋白质的CDS来说,本列指定下一个密码子开始的位置。每3个核苷酸翻译一个氨基酸,从0开始,CDS的起始位置,除以3,余数就是这个值,,表示到达下一个密码子需要跳过的碱基个数。该编码区第一个密码子的位置,取值0,1,2。0表示该编码框的第一个密码子第一个碱基位于其5’末端;1表示该编码框的第一个密码子的第一个碱基位于该编码区外;2表示该编码框的第一个密码子的第一、二个碱基位于该编码区外;如果Feature为CDS时,必须指明具体值;

  9. attributes: 一个包含众多属性的列表,格式为“标签=值”(tag=value),以多个键值对组成的注释信息描述,键与值之间用“=”,不同的键值用“;”隔开,一个键可以有多个值,不同值用“,”分割。如果描述中包括tab键以及“,= ;”,要用URL转义规则进行转义。

(2)GFF示例==

gff-version 3
description: evidence-based annotation of the human genome (GRCh38), version 31 (Ensembl 97) - long non-coding RNAs
provider: GENCODE
contact: gencode-help@ebi.ac.uk
format: gff3
date: 2019-06-27
sequence-region chr1 1 248956422
chr1 HAVANA  gene 29554   31109   . + . ID=ENSG00000243485.5;gene_id=ENSG00000243485.5;gene_type=lncRNA;gene_name=MIR1302-2HG;level=2;hgnc_id=HGNC:52482;tag=ncRNA_host;havana_gene=OTTHUMG0000000095
chr1 HAVANA  transcript   29554   31097   . + . ID=ENST00000473358.1;Parent=ENSG00000243485.5;gene_id=ENSG00000243485.5;transcript_id=ENST00000473358.1;gene_type=lncRNA;gene_name=MIR1302-2HG;transc
chr1 HAVANA  exon 29554   30039   . + . ID=exon:ENST00000473358.1:1;Parent=ENST00000473358.1;gene_id=ENSG00000243485.5;transcript_id=ENST00000473358.1;gene_type=lncRNA;gene_name=MIR1302-2HG;transcr

gencode.v31.long_noncoding_RNAs.gff3.gz

可以看到第9列其实是可以无限扩展的,==只需要以;进行分割即可==。

(3)GTF 与GFF的差异==

GTF文件以及GFF文件都由9列数据组成,这两种文件的前8列都是相同的(一些小的差别),它们的差别重点在第9列。

GTF文件的第9列同GFF文件不同,虽然同样是标签与值配对的情况,但标签与值之间以空格分开,而不是GFF里面的=号。相同的是每个特征之后都要有分号;分割。

(4)GTF示例==

##description: evidence-based annotation of the human genome (GRCh38), version 31 (Ensembl 97) - long non-coding RNAs
##provider: GENCODE
##contact: gencode-help@ebi.ac.uk
##format: gtf
##date: 2019-06-27
chr1 HAVANA  gene 29554   31109   . + . gene_id "ENSG00000243485.5"; gene_type "lncRNA"; gene_name "MIR1302-2HG"; level 2; hgnc_id "HGNC:52482"; tag "ncRNA_host"; havana_gene "OTTHUMG00000000959.2"
chr1 HAVANA  transcript   29554   31097   . + . gene_id "ENSG00000243485.5"; transcript_id "ENST00000473358.1"; gene_type "lncRNA"; gene_name "MIR1302-2HG"; transcript_type "lncRNA"; transcript_nam
chr1 HAVANA  exon 29554   30039   . + . gene_id "ENSG00000243485.5"; transcript_id "ENST00000473358.1"; gene_type "lncRNA"; gene_name "MIR1302-2HG"; transcript_type "lncRNA"; transcript_name "MIR13

gencode.v31.long_noncoding_RNAs.gtf.gz
(5)基本概念的理解

参考一些网络教程,当然推荐大家看书咯。

基于转录本上的概念

==外显子和内含子==:

基因 DNA 分为编码区和非编码区,编码区包含外显子和内含子,一般非编码区具有基因表达的调控功能,如启动子在非编码区。编码区则转录为 mRNA 并最终翻译成蛋白质。
外显子和内含子都被转录到 mRNA 前体 hnRNA 中,当 hnRNA 进行剪接变为成熟的 mRNA 时,内含子被切除,而外显子保留。实际上真正编码蛋白质的是外显子,而内含子则无编码功能。
内含子存在于DNA 中,在转录的过程中,DNA 上的内含子也会被转录到前体 RNA 中,但前体 RNA 上的内含子会在 RNA 离开细胞核进行翻译前被切除。

promoter不属于intron和exon的任何一个,属于noncoding sequence.

==开放读码框====ORF==

开放读码框是从一个起始密码子开始到一个终止密码子结束的一段序列;不是所有读码框都能被表达出蛋白产物,或者能表达出占有优势或者能产生生物学功能的蛋白。内含子和外显子指的就是一个开放阅读框(ORF)内编码的部分和不编码的部分。

基于翻译上的概念

mRNA 包括 UTR 和 CDS

==UTR==:UTR,Untranslated Regions一班指的是一个转录本(transcript)3'和5'不参与编码的区域即非翻译区,是信使RNA(mRNA)分子两端的非编码片段。UTR区不参与编码,但是不是说他们没有功能,只是不被翻译成具有功能的蛋白质。多数基因都有UTR,它们也是外显子拼接的产物。UTR在DNA序列中是算外显子的区域。

==CDS==:CDS,Sequencecodingfor aminoacids in protein 蛋白质编码区 ,CDS 是 Coding sequence的缩写,是编码一段蛋白产物的序列,CDS 必定是一个 ORF 。但也可能包括很多 ORF 。反之,每个 ORF 不一定都是 CDS 。

外显子与 CDS 区不是完全一致的,CDS 区一定属于外显子,但是外显子不一定是 CDS 区,也就是说外显子不一定都能翻译成蛋白。

三张图片帮助理解

图1
图2
图3

外显子和内含子是转录本上面的概念,是基于转录这个行为的定义。

而5端UTR区域和CDS区域,还有3端UTR区域,是基于翻译这种行为的定义!

(6)如何获得GTF、GFF文件

上面是关于基本概念的理解,那么从哪里下载GFF文件和GTF文件?

这边是从gencode官网,步骤如下:

登录gencode官网:https://www.gencodegenes.org/

1.点击How to access data

2.点击human

3.选择最新的版本version 31

4.下载GTF或GFF文件

image-20190919220221450
image-20190919220040796
image-20190919215951706
image-20190919215854889

接下来就可以解决上面的第二个问题,即如何获得GTF文件以及如何得到lncRNA对应的GENEID?

(7)获得lncRNA对应的GENEID

下载的gencode.v31.long_noncoding_RNAs.gtf.gz文件用FileZilla上传到服务器,输入如下

zless -S gencode.v31.long_noncoding_RNAs.gtf.gz|grep -w 'gene'|cut -f 9|cut -d ';' -f 1-3|tr ';' ' '|awk '{print $2 $4 $6}'|less -S > anno.txt

再将anno.txt用FileZilla传到本地。

(8)在R里读取id注释文件

######step3-id_convertion
options(stringsAsFactors = F)
lncRNA_genecode<-read.table('anno.txt')
tmp<-sapply(strsplit(lncRNA_genecode$V1,'.',fixed = T),function(x)x[1])
lncRNA_genecode$GENEID<-tmp
colnames(lncRNA_genecode)[2]<-'GENEBIOTYPE'
colnames(lncRNA_genecode)[3]<-'gene_name'
table(lncRNA_genecode$GENEID %in% gene2sym$GENEID)
tmp1<-lncRNA_genecode[lncRNA_genecode$GENEID %in% gene2sym$GENEID,]
lncRNA<-gene2sym[match(tmp1$GENEID,gene2sym$GENEID),]

tmp<-sapply(strsplit(rownames(dat),'.',fixed = T),function(x)x[1])
rownames(dat)<-tmp
mRNA<-gene2sym[which(gene2sym$GENEBIOTYPE=="protein_coding"),]
dim(mRNA)

最终得到的mRNA和lncRNA的GENEID(也就是ENSG开头的)和SYMBOL的对应关系矩阵就得到了,如下图

image-20190919221857112
image-20190919222053870

最后,得到上面的mRNA和lncRNA的GENEID和symbol的对应关系,在通过GENEID对应到表达矩阵——step1得到的dat,分别走标准差异分析流程,就可以分别获得mRNA和lncRNA中的差异基因啦!这样就可以很容易得到文章中的第一张图片啦

后记

可以看到,仅仅是复现文章的第一章图表就已经非常的不容易了,说起来仅仅是把基因分类,实际上要理解背后的生物学知识,数据库来源知识,需要linux和R能力,以前我觉得学习很简单,但是看到了太多的零基础和负基础,负起点的朋友的挣扎才发现完全不是那么一回事。

当然了,共数据库挖掘需要的基础linux和r技巧好好掌握。

书籍+视频+习题配套练习

视频都在B站,大家把R语言和linux一起学习,十万人观看的教学视频,你值得拥有:

书籍我推荐两本:

如果你也想利用公共数据库开启你的课题,而不是纯粹的灌水,那么下面的课程你可能会需要!

(0)

相关推荐

  • TBtools | 全基因组 - 基因密度统计,充实你的图片

    摘要 两张图总结本文,以方便大家确定是否还有看下去的兴趣 写在前面 Emmm... 今天开放一个旧功能,全基因组基因密度统计.虽然是早前就写好的,但我一直没开放,主要是考虑到这个功能感兴趣或者用得上的 ...

  • 完美 | GXF Fix 修复 / 优化基因结构注释信息文件 - GTF/GFF3

    写在前面 目前基因组测序和组装成本几乎已经到任何一个课题组都可以单独负担的价码,大量物种的基因组序列被测定和释放.与此同时,对应的基因结构注释信息文件,如GTF或GFF3文件等,也可公开下载. 对于绝 ...

  • GFF和GTF的异同及相互转换

    GFF(gff)全称为:general feature format GTF(gtf)全称为:gene transfer format 前者用来注释基因组,后者用来注释基因. 异同点: GTF文件和G ...

  • 三阴性乳腺癌表达矩阵探索笔记之差异基因富集分析

    学徒和学员已经陆续出师,是时候把生信技能树的舞台交给后辈了! 下面是学徒写的<GEO数据挖掘课程>的配套笔记(第3篇) B站课程<三阴性乳腺癌表达矩阵探索>笔记之文献解读 三阴 ...

  • 女人说对你没感觉了,她内心到底想要表达什么?

    Hello,大家好,我是情圣老司机. 在众多女人给出的分手理由中,没感觉,不合适应该是最让男人无语的,这实在是太抽象了,老司机就想着专门来聊聊看女人在说这两句话的时候到底是在说什么,不少直男听到这样的 ...

  • 罗大佑歌曲《恋曲1990》想要表达什么意思?

    是一首对人生有所感悟的歌,开头段和中间部分是回忆旧情人在一起的事情,相爱后一个追求太多,一个偏向于平淡顾家的生活,所以选择分开. 在分开之后又重新寻找另一半,在时间过去后,对以前的事情有了感悟,最后面 ...

  • 红楼梦到底想要表达什么?并不是男痴女怨,风月宝鉴早已点明主旨

    原创2020-06-27 18:03·大白话红楼 众所周知,红楼梦是中国四大名著之首.相较于其他文学作品,它不但具有极高的文学价值,它更隐含了极深的哲学价值.因为红楼梦的不完整性,更让它拥有极多的不确 ...

  • 《也不是非要得到什么,只是想简单表达快乐》

    或许,风景早已褪色,可我们眼里的斑斓总在告诉自己,世界没有探索的尽头.        如果,你说,今天你要离开去探索未知的世界.我一定会让你走,我也不想再冒充什么救世主,紧紧锁住你的目光,因为我也想知 ...

  • 新发现!要想延年益寿,多摄入植物蛋白!

    导语:摄入较多植物性蛋白的老年女性或过早死亡及发生痴呆症相关死亡的风险会下降. 过去大量的随机试验和观察性研究表明,红肉和加工红肉吃太多,可增加死亡率及慢性病发病风险,甚至还会致癌.早在前几年,红肉就 ...

  • 想让表达更加有条理和逻辑,你只需掌握“三点式”表达结构

    很多人在表达观点时,都会出现表达不清的情况. 例如有一些人,尽管他们经常侃侃而谈,但说了一大堆,听者都不知道他们表达的重点是什么. 由于无法掌握你表达的中心点,别人无法接话,那么彼此的对话自然就会中止 ...

  • 表达矩阵可视化大全

    貌代码被折叠了,大家需要阅读原文才能复制粘贴我代码在Rstudio里面直接运行,几分钟就可以学会15个图的制作! basic visualization for expression matrix j ...

  • lncRNA实战项目-第四步-得到表达矩阵的流程

    响应生信技能树的号召:lncRNA数据分析传送门 , 一起来一个lncRNA数据分析实战! SRA->FASTQ->BAM->COUNTS 这几个步骤而已,中间穿插一些质控的手段,每 ...