生信學(xué)習(xí)筆記
linux部分功能
查看文件夾
工具 選項 可以設(shè)置鼠標(biāo)功能 可以設(shè)置右鍵粘貼
雙擊這個窗口可以再打開一個窗口 互不干擾
Rnaseq數(shù)據(jù)挖掘
觀看陳魏學(xué)視頻 了解RNAseq?
測序技術(shù)介紹及基本流程
我們能做什么:火山圖 熱圖差異基因分析
? ? ? ? ? ? ? ? ? ? ? ? ? 蛋白互作圖
? ? ? ? ? ? ? ? ? ? ? ? ? ?kegg
? ? ? ? ? ? ? ? ? ? ? ? ? ?GO? ? ? ? ? 生物學(xué)功能和表達(dá)位置
? ? ? ? ? ? ? ? ? ? ? ? ? ?泡泡圖 分析結(jié)構(gòu)差異
這幾個圖回頭還得再好好研究研究?
學(xué)習(xí)材料:簡書原創(chuàng)10000+生信教程大神給你的RNA實戰(zhàn)視頻演練
實例分析
安裝conda?
https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/? 下載需要的版本(conda2 linux版本)
更改鏡像 翻墻也行應(yīng)該
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda
conda config --set show_channel_urls yes
安裝軟件
創(chuàng)建一個軟件安裝環(huán)境? 放置污染大環(huán)境?
conda create -n rna python=2 # 環(huán)境名字是rna 可以自己隨便改別的?
查看conda環(huán)境?conda info --envs
工作時候載入環(huán)境source activate rna
安裝軟件
質(zhì)控?
fastqc 查看fastq文件質(zhì)量
multiqc 合成不同樣本的質(zhì)控報告 一起查看
trim-galore 過濾低質(zhì)量數(shù)據(jù)
trimmomatic, cutadapt 好像沒用到
比對
star, hisat2(這個最好), bowtie2, tophat, bwa, subread
計數(shù)
htseq, bedtools, deeptools, salmon
https://bioconda.github.io/recipes.html?這個地址可以查看conda是否有你要安裝的軟件
conda安裝成功后? 以下是安裝RNAseq用到的軟件的代碼
conda install -y sra-tools
conda install -y trimmomatic
conda install -y cutadapt multiqc
conda install -y trim-galore
conda install -y star hisat2 bowtie2
conda install -y subread tophat htseq bedtools deeptools
conda install -y salmon
轉(zhuǎn)錄組流程
1. 下載sra數(shù)據(jù)
NCBI可以下載SRR list? 里面有SRR號碼? ?一個一排? 也可以新建一個SRR_Acc_List.txt文檔? 也是一個號碼一行。這個list是讓代碼讀取SRR號碼以在網(wǎng)上下載用的
下載SRA數(shù)據(jù)代碼
wkd=/home/zhaowei/project/airway/ #設(shè)置工作目錄
source activate rna? 載入工作環(huán)境
cat SRR_Acc_List.txt | while read id; do (prefetch ${id} &);done
ps -ef | grep prefetch | awk '{print $2}' | while read id; do kill ${id}; done #沒太看懂這個 prefetch是下載SRA用的
2.將SRA格式轉(zhuǎn)成fastq格式
用fastq-dump軟件
單個文件轉(zhuǎn)換
nohup fastq-dump --split-3 --skip-technical --clip --gzip $i &? ?#把$i換成文件名
批量轉(zhuǎn)換(循環(huán))
for i in $wkd/*sra
do
? ? ? ? echo $i
? ? ? ? nohup fastq-dump --split-3 --skip-technical --clip --gzip $i &?
? ? ? ? done? ? ?# 循環(huán)代碼沒看懂 nohup可以讓進(jìn)程在后臺運行 不影響前臺操作
因為現(xiàn)在大部分原始數(shù)據(jù)為雙端測序 即從3和5兩端測序? 所以一個SRA文件可以轉(zhuǎn)換成兩個fastq文件即_1和_2,--split-3 這個參數(shù)就是轉(zhuǎn)換雙端測序文件用的? 如果是單端測序文件 就不加這參數(shù)
生成的文件格式例子:SRR1039522_1.fastq.gz? ? SRR1039522_2.fastq.gz
3.數(shù)據(jù)的質(zhì)量檢查
ls *gz | xargs fastqc -t 10 # 用fastqc進(jìn)行檢查 并且生成一個html的報告? 用打開文件夾的那個按鈕打開查看
multiqc ./? ?#整合生成的質(zhì)控報告 html結(jié)果查看方法同上
4.過濾低質(zhì)量數(shù)據(jù)
mkdir $wkd/clean
cd $wkd/clean
ls /home/jmzeng/project/airway/raw/*_1.fastq.gz >1
ls /home/jmzeng/project/airway/raw/*_2.fastq.gz >2
paste 1 2? > config?
#把兩個fastq.gz文件賦值? ?粘貼到config中并形成2列
用trim_galore過濾
source activate rna
bin_trim_galore=trim_galore #把bin_trim_galore賦值? 下面有代碼
dir='/home/zhaowei/project/airway/clean'? ?#輸出文件夾 自己設(shè)定
cat $1 |while read id
do
? ? ? ? arr=(${id})
? ? ? ? fq1=${arr[0]}? # 如果fq1在第二列? 把0換成1
? ? ? ? fq2=${arr[1]}? #道理同上
nohup $bin_trim_galore -q 25 --phred33 --length 36 --stringency 3 --paired -o $dir? $fq1 $fq2 &
done
source deactivate #退出環(huán)境? 也可以不退
#以上代碼可以保存成 .sh結(jié)尾的文件 下次用bash一下就行? ?不用總寫了? vim進(jìn)去改改就行
5.比對
實際用時候感覺用一個軟件就行 hisat2
1.運行單個樣本 測試
mkdir $wkd/test
cd $wkd/test
source activate rna
ls $wkd/clean/*gz |while read id;do (zcat ${id}|head -1000>? $(basename ${id} ".gz"));done
id=SRR1039508 # id寫成需要的id
hisat2 -p 10 -x /public/reference/index/hisat/hg38/genome -1 ${id}_1_val_1.fq? -2 ${id}_2_val_2.fq? -S ${id}.hisat.sam #注意看軟件說明書 輸出的是sam還是bam 這里寫的只是我們自己起的名.sam 線程分配的數(shù)字可以改(-p 10那地方) 如果只用一個軟件比對下面就不用了
subjunc -T 5? -i /public/reference/index/subread/hg38 -r ${id}_1_val_1.fq -R ${id}_2_val_2.fq -o ${id}.subjunc.sam?
bowtie2 -p 10 -x /public/reference/index/bowtie/hg38? -1 ${id}_1_val_1.fq? -2 ${id}_2_val_2.fq? -S ${id}.bowtie.sam
bwa mem -t 5 -M? /public/reference/index/bwa/hg38? ${id}_1_val_1.fq? ${id}_2_val_2.fq > ${id}.bwa.sam
2.批量代碼
cd $wkd/clean
ls *gz|cut -d"_" -f 1 |sort -u |while read id;do
ls -lh ${id}_1_val_1.fq.gz? ${id}_2_val_2.fq.gz
hisat2 -p 10 -x /public/reference/index/hisat/hg38/genome -1 ${id}_1_val_1.fq.gz? -2 ${id}_2_val_2.fq.gz? -S ${id}.hisat.sam
subjunc -T 5? -i /public/reference/index/subread/hg38 -r ${id}_1_val_1.fq.gz -R ${id}_2_val_2.fq.gz -o ${id}.subjunc.sam
bowtie2 -p 10 -x /public/reference/index/bowtie/hg38? -1 ${id}_1_val_1.fq.gz? -2 ${id}_2_val_2.fq.gz? -S ${id}.bowtie.sam
bwa mem -t 5 -M? /public/reference/index/bwa/hg38? ${id}_1_val_1.fq.gz? ${id}_2_val_2.fq.gz > ${id}.bwa.sam
done
6.sam文件轉(zhuǎn)換成bam
ls *.sam|while read id ;do (samtools sort -O bam -@ 5 -o $(basename ${id} ".sam").bam ${id});done
rm *.sam
#報錯時候看看sam文件到底轉(zhuǎn)完沒有? 我這次就是比對到一半就運行了這個命令結(jié)果失敗
7.建立bam文件索引
ls *.bam |xargs -i samtools index {}? ?#每個文件都有索引喲
8.reads比對情況統(tǒng)計
ls *.bam |xargs -i samtools flagstat -@ 10 {} >
ls *.bam |while read id ;do ( nohup samtools flagstat -@ 1 $id >? $(basename ${id} ".bam").flagstat & );done
source deactivate
最終結(jié)果示例:
9.計數(shù)
mkdir $wkd/align
cd $wkd/align
source activate rna #建文件夾 激活環(huán)境 (好像是可選)
一個一個樣本計數(shù)? 輸出多個文件
for fn in {508..523}
do
featureCounts -T 5 -p -t exon -g gene_id? -a /public/reference/gtf/gencode/gencode.v25.annotation.gtf.gz -o $fn.counts.txt SRR1039$fn.bam? ? ? ? ? #SRR這地方似乎可以根據(jù)實際情況改一下
done
一起計數(shù) 輸出一個文件
mkdir $wkd/align
cd $wkd/align
source activate rna
gtf="/public/reference/gtf/gencode/gencode.v25.annotation.gtf.gz"?
featureCounts -T 5 -p -t exon -g gene_id? -a $gtf -o? all.id.txt? *.bam? 1>counts.id.log 2>&1 &
# 代碼看不懂? ?輸出的all.id.txt文件就是表達(dá)矩陣? 可以用來進(jìn)行下一步差異分析畫圖等等? 用R
count后文件示例
10.數(shù)據(jù)檢查
rm(list = ls())options(stringsAsFactors =F)a=read.table('all.id.txt',header =T)tmp=a[1:14,1:7]meta=a[,1:6]exprSet=a[,7:ncol(a)]colnames(exprSet)a2=exprSet[,'SRR1039516.hisat.bam']library(airway)data(airway)exprSet=assay(airway)colnames(exprSet)a1=exprSet[,'SRR1039516']group_list=colData(airway)[,3]a2=data.frame(id=meta[,1],a2=a2)a1=data.frame(id=names(a1),a1=as.numeric(a1))library(stringr)a2$id <- str_split(a2$id,'\\.',simplify =T)[,1]tmp=merge(a1,a2,by='id')png('tmp.png')plot(tmp[,2:3])dev.off()library(corrplot)png('cor.png')corrplot(cor(log2(exprSet+1)))dev.off()library(pheatmap)png('heatmap.png')m=cor(log2(exprSet+1))pheatmap(scale(cor(log2(exprSet+1))))dev.off()? ? #一點也看不懂? SRR應(yīng)該是能改的
小TIPS
軟鏈接 ln -s /路徑/文件 ./? ? ? ? ? 這個./別忘了打了? ?表示鏈接到當(dāng)前文件夾
vim后點i 可以編輯? ?退出時候 用shift:qw? ?退出并保存
每次用軟件命令之前 看看自己文件是不是那么回事 less -SN 整齊的看? 別用cat 太大了
設(shè)置好變量用echo $看一看 對不對?
vim用 :set paste命令可以用粘貼模式? 格式無損