#RNA-seq實(shí)戰(zhàn)代碼
#正常情況下公司給我們的數(shù)據(jù)就直接是fastq格式文件
#使用fastqc查看測序數(shù)據(jù)質(zhì)量,就會得到*.html文件
fastqc *.fastq.gz
#在html文件所在目錄下將*.html文件拷入一個單獨(dú)的文件夾:cp *.html 新建的單獨(dú)的文件夾所在的目錄
#將linux中的文件復(fù)制到桌面
cp -r 要復(fù)制的文件所在目錄 /mnt/c/Users/happy/Desktop/
#將所有的質(zhì)量報(bào)告合并:對html文件所在目錄跑一下multiqc:multiqc 新建的單獨(dú)的文件夾所在的目錄
multiqc 新建的單獨(dú)的文件夾所在的目錄 ? (要在rnaseq3.7環(huán)境中跑這個代碼)
#使用trim_galore 過濾fastq文件中質(zhì)量不好的reads和remove接頭序列
ls /home/happy/project/airway/raw/*_1.fastq.gz >1
ls /home/happy/project/airway/raw/*_2.fastq.gz >2
#生成只包含*—1.fastq.gz和*—1.fastq.gz文件的目錄
paste 1 2 >config
#過濾文件打算存儲的位置
dir='/home/happy/project/airway/clean/'
#循環(huán)如下:
cat config |while read id;
do
arr=($id)
fq1=${arr[0]}
fq2=${arr[1]}
nohup trim_galore -q 25 --phred33 --stringency 3 --length 36 -e 0.1 --paired $fq1 $fq2 --gzip -0 $dir &
done
#3、再次使用fastqc查看過濾后的文件
#比對,轉(zhuǎn)錄組比對主要是使用hisat2、subjunc、star;基因組主要是使用bwa和bowtie2
#比對首先要下載參考基因組構(gòu)建索引index,也可以直接在官網(wǎng)下載index,人類和小鼠的index有現(xiàn)成的
#方法一:直接在hisat2官網(wǎng)下載index,選擇合適的物種
#hisat2官網(wǎng):http://daehwankimlab.github.io/hisat2/download/
#構(gòu)建存儲索引的文件夾
mkdir index
cd index
wget 復(fù)制鏈接
#解壓index文件
tar -zxvf *.tar.gz
#刪除壓縮包
rm -rf *.tar.gz
#方法二:自己下載參考基因組和注釋文件構(gòu)建index
#下載基因組文件
wget 參考基因組鏈接
tar -zxvf ?*.tar.gz
#下載注釋文件
wget 注釋文件鏈接
gunzip *.gtf.gz
extract_exons.py hg19.ncbiRefSeq.gtf > genome.exon ? ? ? ?其中hg19.ncbiRefSeq.gtf是解壓后的注釋文件
extract_splice_sites.py hg19.ncbiRefSeq.gtf > genome.ss
#建立index
hisat2-build hg19.fa --ss genome.ss --exon genome.exon genome_tran
#4.比對
hisat2 --dta -t -x /data/RNAseq/mm10/genome -1 /data/RNAseq/cleandata/trim_galoredata/CK-4_1_val_1.fq.gz -2 /data/RNAseq/cleandata/trim_galoredata/CK-4_2_val_2.fq.gz -S cleandata/hisat2_mm10data/CK4.sam
#/data/RNAseq/mm10/ 是參考基因組文件所在目錄,genome這個不是文件夾,是index文件的前綴,mm10文件下并沒有這個文件,如果不加genome就會發(fā)生報(bào)錯
#-1和-2分別表示雙端測序的1個文件,后面跟的是文件路徑
#-S 后面跟的是輸出數(shù)據(jù)所在文件夾
#-x 后面接的是索引文件
#命令沒有問題的話,出現(xiàn)下面提示表示程序正在執(zhí)行,就去干其他的,等執(zhí)行結(jié)束再往下:
Time loading forward index: 00:02:51
Time loading reference: 00:00:16
#寫循環(huán)批量處理(for ?in 循環(huán)和while循環(huán)各寫一個)
#for in 循環(huán),創(chuàng)建腳本文件
vim hisat2_mm10_batch.sh
#輸入下面內(nèi)容:
for i in CK-7 CK-8 HGJ-10 HGJ-6 HGJ-9
do
hisat2 --dta -t -p 8 -x /data/RNAseq/mm10/genome
-1 /data/RNAseq/cleandata/trim_galoredata/"$i"_1_val_1.fq.gz
-2 /data/RNAseq/cleandata/trim_galoredata/"$i"_2_val_2.fq.gz
-S /data/RNAseq/cleandata/hisat2_mm10data/"$i".sam;done
#保存腳本,再運(yùn)行腳本
bash hisat2_mm10_batch.sh
#while 循環(huán)
#先創(chuàng)建存儲了SRR號的文件。例如sra.txt
less sra.txt|while read id ;
do
hisat2 --dta -t -p 8 -x /data/RNAseq/mm10/genome
-1 /data/RNAseq/cleandata/trim_galoredata/"$i"_1_val_1.fq.gz
-2 /data/RNAseq/cleandata/trim_galoredata/"$i"_2_val_2.fq.gz
-S /data/RNAseq/cleandata/hisat2_mm10data/"$i".sam;done
#subjunc比對會直接輸出bam文件,就不用后續(xù)的sam轉(zhuǎn)bam文件
subjunc -T 5 -i /home/happy/project/airway/reference/mm10/genome -r ${id}_1_val_1.fq.gz -R ${id}_2_val_2.fa.gz -o ${id}.subjunc.bam
#5.samtools將sam文件轉(zhuǎn)bam文件,samtools可以進(jìn)行格式轉(zhuǎn)換、排序、索引
#第一步:轉(zhuǎn)換
#SRR.txt為存儲了SRR號的文件
單樣本處理:samtools view -@8 -b SRR1039509.sam > SRR1039509.bam
多樣本處理:less /home/happy/project/airway/hisat2/SRR.txt|while read id ;do samtools view -@8 -b {$id}.sam > {$id}.bam done
#第二步:排序 samtools sort
#其中 -l是(-L的小寫)
單樣本處理:samtool sort -@ 8 -l -o SRR1039508.bam.sort SRR1039508.bam
多樣本批量處理:ls /home/happy/project/airway/SRR.txt |while read id ;do samtools sort -@ 8 -l {$id}.bam -o {$id}.bam.sort;done
#第三步:建立索引(index命令)在SRR1039508.bam.sort所在文件夾下操作
單樣本處理:samtools index ?SRR1039508.bam.sort SRR1039508.bam.index
查看sam文件直接用less,查看bam文件用samtools view SRR1039508.bam |less -S(分頁查看) 可以看出來是按pos排序還是按name排序,這里是按pos(染色體位置)
#第四步:查看reads比對情況(flagstat命令),輸出.falgstat文件
samtools flagstat -@ 8 SRR1039508.bam.sort > SRR1039508.bam.flagstat
#第五步:igv可視化比對結(jié)果
先將bam文件轉(zhuǎn)為bw文件,要先構(gòu)建索引 samtools index SRR1039508.bam.sort
再使用bamCoverage轉(zhuǎn)換格式:bamCoverage -b SRR1039508.bam.sort -o SRR1039508.sort.bw
再將bw文件復(fù)制到桌面:cp *.bw /mnt/c/Users/happy/Desktop/ ? ?(bw文件要指定文件所在目錄)
igv里面選擇file 載入bw文件
#6.計(jì)數(shù)(htseq、featureCounts )通常用featureCounts計(jì)數(shù)
htseq計(jì)數(shù)代碼(很慢)
htseq-count -f bam -r pos /home/happy/project/airway/hisat2data/SRR1039508.bam.sort /home/happy/project/airway/reference/gencode.v10.annotation.gtf.gz
#-f 指定bam文件格式
#-r 指定排序方式,這里是按位置position
#/home/happy/project/airway/hisat2data/SRR1039508.bam.sort ?進(jìn)行計(jì)數(shù)的bam文件
#/home/happy/project/airway/reference/gencode.v10.annotation.gtf.gz ?注釋文件所在目錄
featureCounts計(jì)數(shù)(很快):參考基因組和GTF/GFF/SAF注釋文件來自同一個網(wǎng)站,同一個版本
featureCounts 需要兩個輸入文件:比對產(chǎn)生的BAM/ SAM文件(一般會用bam文件,因?yàn)樗伎臻g小);區(qū)間注釋文件(GTF格式, SAF格式)
代碼1:featureCounts -T 10 -a ../reference/gencode.v10.annotation.gtf.gz -o count.txt -p -B -C -f -t exon -g gene_id /home/happy/project/airway/hisat2data/*sort
代碼2:featureCounts -T 10 -a ../reference/gencode.v10.annotation.gtf.gz -o count1.txt -p -B -C -t exon -g gene_name /home/happy/project/airway/hisat2data/*sort
-g ?后面也可以接gene_name
#如果代碼1比對率不高,說明不是全外顯子測序,則用代碼2
-T 指定線程數(shù) ? ?-f 如果-f被設(shè)置,那將會統(tǒng)計(jì)feature層面的數(shù)據(jù),如exon-level,否則會統(tǒng)計(jì)meta-feature層面的數(shù)據(jù),如gene-levels(feature數(shù)目指的是exon數(shù)目 ? meta-feature 指的是基因數(shù)目)
-a 參考GTF文件名 ? ? -F 參考文件的格式,一般為GTF/SAF ,默認(rèn)為GTF ? ?-p 雙端測序 ? ?-B ?在-p選擇的條件下,只有兩端reads都被比對上的fragment才會被統(tǒng)計(jì)
-t 設(shè)置feature-type,-t指定的必須是gtf中有的feature,同時(shí)read只有落到這些feature上才會被統(tǒng)計(jì)到,默認(rèn)是“exon”
-g 默認(rèn)為gene_id ? ?-o 輸出文件的名字,可輸出被統(tǒng)計(jì)數(shù)據(jù)的txt文本及summary文本
/home/happy/project/airway/hisat2data/*sort ?被統(tǒng)計(jì)的文件所在目錄及名稱
#featureCounts查看及結(jié)果解析:less -SN ?count.txt ?(-SN可以使查看是排版更好)
Geneid:基因的ensemble基因號; ? Chr:多個feature所在的染色體編號; ?Start:多個feature起始位點(diǎn),與前面一一對應(yīng); ?End:多個feature終止位點(diǎn),與前面一一對應(yīng)
Strand:正負(fù)鏈 ? Length:基因長度 ?sampleID:一列代表一個樣本,數(shù)值表示比對到該基因上的read數(shù)目
feature數(shù)目指的是exon數(shù)目 ? meta-feature 指的是基因數(shù)目
#7.表達(dá)矩陣探索
multiqc 要在3.7版本的python才不會報(bào)錯,所以要創(chuàng)建pyhton3.7環(huán)境下下載multiqc :conda create --name rnaseq3.7 python=3.7
conda activate rnaseq3.7
conda install -c bioconda -c conda-forge multiqc
multiqc count1.txt.summary ? ?就會得到一個html文件 ?復(fù)制到電腦桌面看