RNA-seq入门实战(二):上游数据的比对计数——Hisat2+ featureCounts 与 Salmon

本节概览:

  1. hisat2 + featureCounts:
    获取hisat2索引文件,hisat2比对和samtools格式转化,featureCounts计数得到counts表达矩阵
  2. Salmon:
    salmon index 用cdna.fa建立索引,salmon quant对clean fastq文件直接进行基因定量
  3. 获取ensembl_id或transcript_id转化的对应文件

承接上节RNA-seq入门实战(一)
本节介绍使用hisat2salmon这两种方法进行转录组上游数据的比对和计数。
39个转录组分析工具,120种组合评估
(https://www.nature.com/articles/s41467-017-00050-4)
表明基于hisat2salmon进行转录本定量都比较优秀。

[Gaining comprehensive biological insight into the transcriptome by performing a broad-spectrum RNA-seq analysis | Nature Communications]


一、hisat2 + featureCounts

1. 获取hisat2比对索引文件

index官网下载地址Download | HISAT2 (daehwankimlab.github.io),下载并解压所需的 mm10 或 grcm38 的index文件

mkdir -p ~/reference/index/hisat/
cd ~/reference/index/hisat/
wget https://genome-idx.s3.amazonaws.com/hisat/mm10_genome.tar.gz
tar -zxvf *tar.gz 
rm *tar.gz 

2. hisat2比对和samtools转化格式

先用hisat2比对基因组得到sam文件,再用samtools sort将sam文件格式转化与排序为bam文件(bam相当于二进制版的sam),之后samtools index建立索引(用于后续IGV内可视化),最后samtools flag 统计文件比对情况保存在文本中。其中samtools index与samtools flag为非必须步骤,可略过。sam相当于是中间文件比较占存储空间,可在转化为bam后便删除。




代码如下:

vim  3_align2sam2bam_hisat2.sh
############################
echo -e  " \n \n \n 333#  Align !!! hisat2 !!!\n \n \n "
date
########set#### ###set#### ###set####   
index='/home/reference/index/hisat/mm10/genome'

mkdir  -p   ~/test/align/flag
cd ~/test/align/
pwd
cat ~/test/idname | while read id
do
         echo "333#  ${id} ${id} ${id}  is on the hisat2 Working !!!"
################ paired ###############################         
            hisat2 -t -p 12 -x  $index \
       -1 ~/test/clean/${id}_*1*gz  \
       -2  ~/test/clean/${id}_*2*gz  -S  ${id}.sam
######################################################
################Single################################
#              hisat2 -t -p 12 -x  $index  \
#                     -U ~/test/clean/${id}_trimmed.fq.gz \
#                     -S  ./${id}.sam  
########################################################           

### sam2bam and remove sam ###
    echo -e  " ${id} sam2bam and remove sam   "
    samtools sort -@ 12 -o  ~/test/align/${id}_sorted.bam  ${id}.sam
    rm ${id}.sam
done

#### samtools index and flagstat ####
echo -e  " \n \n \n samtools index and flagstat \n  " 
cd   ~/test/align/flag
pwd
#ls ~/test/align/*.bam | xargs  -i  samtools index  -@  12  {}    
ls ~/test/align/*.bam  | while read id ;\
do
        samtools flagstat -@ 12 $id > $(basename $id '.bam').flagstat
done
multiqc ./

echo -e " \n \n \n  333# ALL  Work Done !!!\n \n \n "
date
nohup bash 3_align2sam2bam_hisat2.sh >log_3 2>&1 &

比对结果如下:


3. featureCounts 计数得到counts表达矩阵

计数首先要获取gtf注释文件,注意要和hisat2的index文件的基因组版本相对应,如本次为mm10,则gtf文件也必须为mm10或grcm38。
研究人和鼠推荐用gencode数据库的文件GENCODE ,比较常用的还有UCSC的refGene.gtf文件,下载地址在https://hgdownload.soe.ucsc.edu/ (若想下载其他gtf文件则将网址中mm10替换即可,如hg38)。
featureCounts详细使用方法见转录组定量可以用替换featureCounts代替HTSeq-count (qq.com),常用参数如下:


代码如下:

vim 4_counts_featurecounts.sh
###########################################
echo -e "\n \n \n444# Count #featureCounts !!! \n \n \n"
date
#####set####set###set
gtf='/home/reference/gtf/gencode/gencode.vM25.chr_patch_hapl_scaff.annotation.gtf'
#gtf='/home/reference/gtf/UCSC/mm10.refGene.gtf.gz'

mkdir  -p  ~/test/counts
cd  ~/test/counts/
pwd
######## single##########################################################################
#featureCounts -T 12 -a $gtf  -o counts.txt  ~/test/align/*.bam        
#######paired###########################################################################
featureCounts -T  12  -p  -a  $gtf  -o  counts.txt  ~/test/align/*.bam
#######################################################################################            
###生成网页版统计情况
multiqc ./

echo -e " \n \n \n ALL WORK DONE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  \n "
date

nohup bash 4_counts_featurecounts.sh >log_4 2>&1 &

查看计数的统计情况,匹配率在71-80%左右,还可以



运行结果保存在counts文件夹下,里面的counts.txt就是我们下游分析所需要的文件啦


二、Salmon——直接对基因进行定量的工具

与hisat2不同,salmon不经过比对计数步骤而是直接对基因进行定量,如果不研究新转录本,用salmon方法可以更快更方便得到基因定量信息。


1. 建立salmon索引

先下载参考转录本序列cDNA.fa文件,在ensembl官网选择相应文件 Index of /pub/release-102/fasta/mus_musculus/cdna/ (ensembl.org),使用salmon index 建立索引文件,salmon index常用参数:

mkdir ~/reference/index/salmon/grcm38
cd ~/reference/index/salmon/grcm38
salmon index -p 12 -t  ~/reference/ensembl/grcm38.cdna.fa.gz  -i  ./

2. salmon定量基因

使用salmon quant命令对clean fastq文件直接进行基因定量,主要参数如下:


vim 3333_salmon.sh
###################################################
echo -e  '\n \n \n ### salmon quant is Working !!! \n \n'
###set##set###set#############
index="/home/reference/index/salmon/grcm38/"

mkdir ~/test/salmon
cd ~/test/salmon
pwd
cat ~/test/idname | while read id 
do
            echo " '\n  !!!!!! Processing sample $id !!!!! '\n" 
########single#############################################
# salmon quant -i $index -l A \
#             -r ~/test/clean/$(basename $id)_trimmed.fq.gz \
#             -p 12  -o  $(basename $id)_quant
#######paired#############################################
salmon quant -i $index -l A \
 -1 ~/test/clean/${id}_*1*gz \
 -2 ~/test/clean/${id}_*2*gz  \
 -p 12  --output ${id}_quant
###############################################################     
done

multiqc ./

echo -e " \n \n \n !!!!ALL WORK DONE !!!!!!!!!!!!!!!!!!!!! \n"
date
nohup bash 3333_salmon.sh  >log_333salmon  2>&1 &

运行结果存放在salmon文件夹下,里面的quant.sf即为下游分析所需要的文件


三、获取基因ID转化的对应文件

由于本次使用的为gencode或ensembl的gtf与cdna文件,因此最后得到的为ensembl_id (gene_id)和 transcript_id,形式为:ENSMUSG00000000001.1 ,而我们下游常用gene symbol进行展示,因此还需要从gtf注释文件中获取ensembl_id 、transcript_id与gene symbol的对应关系文件。
方法如下:

vim gtf_geneid2symbol_gencode.sh
#提取gtf注释文件中gene_id等与gene_name的对应关系,便于下游id转换
gtf="gencode.vM25.chr_patch_hapl_scaff.annotation.gtf"

### gene_id to gene_name
grep 'gene_id' $gtf | awk -F 'gene_id \"' '{print $2}' |awk -F '\"' '{print $1}' >gene_id_tmp
grep 'gene_id' $gtf | awk -F 'gene_name \"' '{print $2}' |awk -F '\"' '{print $1}' >gene_name_tmp
paste gene_id_tmp gene_name_tmp >last_tmp
uniq last_tmp >g2s_vm25_gencode.txt
rm *_tmp

### transcript_id to gene_name
grep 'transcript_id' $gtf | awk -F 'transcript_id \"' '{print $2}' |awk -F '\"' '{print $1}' >gene_id_tmp
grep 'transcript_id' $gtf | awk -F 'gene_name \"' '{print $2}' |awk -F '\"' '{print $1}' >gene_name_tmp
paste gene_id_tmp gene_name_tmp >last_tmp
uniq last_tmp >t2s_vm25_gencode.txt
rm *_tmp
bash gtf_geneid2symbol_gencode.sh

所得文件如下所示



上游流程到此就结束了,将最后得到的counts文件夹与g2s_vm25_gencode.txt 或 salmon文件夹与t2s_vm25_gencode.txt下载到本地就可以愉快地进行下游分析了

参考资料
39个转录组分析工具,120种组合评估
(https://www.nature.com/articles/s41467-017-00050-4)
转录组定量可以用替换featureCounts代替HTSeq-count (qq.com)
本实战教程基于以下生信技能树分享的视频:
【生信技能树】转录组测序数据分析_哔哩哔哩_bilibili
【生信技能树】GEO数据库挖掘_哔哩哔哩_bilibili


RNA-seq实战系列文章:
RNA-seq入门实战(零):RNA-seq流程前的准备——Linux与R的环境创建
RNA-seq入门实战(一):上游数据下载、格式转化和质控清洗
RNA-seq入门实战(二):上游数据的比对计数——Hisat2+ featureCounts 与 Salmon
RNA-seq入门实战(三):从featureCounts与Salmon输出文件获取counts矩阵
RNA-seq入门实战(四):差异分析前的准备——数据检查
RNA-seq入门实战(五):差异分析——DESeq2 edgeR limma的使用与比较
RNA-seq入门实战(六):GO、KEGG富集分析与enrichplot超全可视化攻略
RNA-seq入门实战(七):GSEA——基因集富集分析
RNA-seq入门实战(八):GSVA——基因集变异分析
RNA-seq入门实战(九):PPI蛋白互作网络构建(上)——STRING数据库的使用
RNA-seq入门实战(十):PPI蛋白互作网络构建(下)——Cytoscape软件的使用
RNA-seq入门实战(十一):WGCNA加权基因共表达网络分析——关联基因模块与表型

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,313评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,369评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,916评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,333评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,425评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,481评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,491评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,268评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,719评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,004评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,179评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,832评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,510评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,153评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,402评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,045评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,071评论 2 352

推荐阅读更多精彩内容