最近這周幫助組內(nèi)成員完成一些高重復(fù)性基本濕實(shí)驗(yàn)、下地收集果實(shí),以及自己的一小部分分子生物學(xué)實(shí)驗(yàn)外,花了些時(shí)間進(jìn)行了Biostar Handbook課程的部分學(xué)習(xí),同時(shí),今天跟課題組長(zhǎng)溝通了300份核心種質(zhì)資源的重測(cè)序打算,明年準(zhǔn)備開(kāi)展這項(xiàng)工作,以及后面的數(shù)據(jù)分析。
盡管沒(méi)有完全看完,但就目前學(xué)習(xí)到SNP calling這個(gè)階段來(lái)說(shuō),這本書(shū)寫(xiě)的還是非常有實(shí)操性,適合于新手拿來(lái)進(jìn)行找感覺(jué)。
下面就本書(shū)1-10章所涉及的知識(shí)點(diǎn),做一些總結(jié)(部分摘抄了生信媛公眾號(hào)中的內(nèi)容):
Linux部分
- 常用命令:
#這部分內(nèi)容都是非常基本的操作命令,包括:
pwd
mkdir
ls
ls -l
cd
touch <filename> #新建文件
mv
cp
rm -f #強(qiáng)制刪除
rm -r #刪除文件夾
curl <鏈接> -o <filename> #用curl命令把URL下載下來(lái),并存儲(chǔ)一個(gè)叫 filename 的文件中.
curl -O <url> #使得curl 命令去識(shí)別url上的文件名(作為下載后的文件名字)
wc -l
head
tail
more
less
grep
grep gene sc.gff | wc -l #管道操作
#cut 在不指定分隔符的時(shí)候,默認(rèn)是tab分割。如果是其他分隔符,可以用-d指定分隔符類型,以逗號(hào)分隔(比如csv格式)為例:
cut -d "," -f 1,2,3 features.gff | head
#計(jì)算某個(gè)詞有多少個(gè)重復(fù)(uniq 加-c后顯示重復(fù)個(gè)數(shù))
cut -f 3 features.gff |sort | uniq -c | head
#模式匹配,是否存在pattern TATA?
gzcat illumina-data.fq.gz | head -10000 | grep 'ATG' --color=always | head
gzcat illumina-data.fq.gz | head -10000 | grep 'TATA' --color=always | head
# 搜索開(kāi)頭為ATG的行
#*在正則表達(dá)式里,行開(kāi)頭用^表示
cat SRR519926_1.fastq | egrep "^ATG" --color=always | head
#搜索行末尾是ATG的行
#*在正則表達(dá)式里,$表示匹配輸入字符串的結(jié)束位置
cat SRR519926_1.fastq | egrep "ATG\$" --color=always | head
#*egrep表示擴(kuò)展正則表達(dá)式,用法上grep –E等同于egrep
#*上文中的"\"是轉(zhuǎn)義的作用,這里去除或者保留并不影響匹配結(jié)果。
# 搜索TAATA或TATTA模式,這是一個(gè)字符范圍
cat SRR519926_1.fastq | egrep "TA[A,T]TA" --color=always | head
# 搜索TAAATA 或者 TACCTA, 這些是一些分組
cat SRR519926_1.fastq | egrep "TA(AA|CC)TA" --color=always | head
# 搜索“ TA后有2個(gè)或5個(gè)A,然后是TA”
cat SRR519926_1.fastq | egrep "TAA{2,5}TA" --color=always | head
# 在任何位置匹配AGATCGG,AGATCGG后可以跟著任何數(shù)目的堿基。
cat SRR519926_1.fastq | egrep "AGATCGG.*" --color=always | head
- 環(huán)境變量的設(shè)置
Linux中的PATH是一個(gè)字符串變量,里面記錄了一系列目錄,當(dāng)運(yùn)行一個(gè)程序時(shí),Linux在這些目錄下進(jìn)行搜尋編譯鏈接。
對(duì)PATH進(jìn)行編輯時(shí),其格式為:
PATH=$PATH:<PATH1>:<PATH2>:<PATH3>:------:<PATHN>
export命令用于設(shè)置或顯示環(huán)境變量,可新增,修改或刪除環(huán)境變量,供后續(xù)執(zhí)行的程序使用。export的效力僅及于該次登陸操作。
語(yǔ)法:
export [-fnp][變量名稱]=[變量設(shè)置值]
查看PATH可使用:
echo $PATH
在Linux中進(jìn)行環(huán)境變量的添加可用三種方法(以添加blast+2.7.1為例):
方法一:
直接用export命令:
export PATH=$PATH:~/src/ncbi-blast-2.7.1+/bin
配置完后可以通過(guò)echo $PATH查看配置結(jié)果。
生效方法:立即生效
有效期限:臨時(shí)改變,只能在當(dāng)前的終端窗口中有效,當(dāng)前窗口關(guān)閉后就會(huì)恢復(fù)原有的path配置
用戶局限:僅對(duì)當(dāng)前用戶
方法二:
通過(guò)修改.bashrc文件:
vim ~/.bashrc
#在最后一行添上:
export PATH=$PATH: ~/src/ncbi-blast-2.7.1+/bin
#或者在之前的PATH變量聲明后添加:
export PATH=$PATH:~/src/edirect:~/src/ncbi-blast-2.7.1+/bin
生效方法:(有以下兩種)
1、關(guān)閉當(dāng)前終端窗口,重新打開(kāi)一個(gè)新終端窗口就能生效
2、輸入“source ~/.bashrc”命令,立即生效
有效期限:永久有效
用戶局限:僅對(duì)當(dāng)前用戶
方法三:
通過(guò)修改profile文件:
vim /etc/profile
#在最后一行添上:
export PATH=$PATH: ~/src/ncbi-blast-2.7.1+/bin
#或者在之前的PATH變量聲明后添加:
export PATH=$PATH:~/src/edirect:~/src/ncbi-blast-2.7.1+/bin
生效方法:(有以下兩種)
1、關(guān)閉當(dāng)前終端窗口,重新打開(kāi)一個(gè)新終端窗口就能生效
2、輸入“source /etc/profile”命令,立即生效
有效期限:永久有效
用戶局限:對(duì)所有用戶
一個(gè)栗子:
# 將~/bin 文件夾加到PATH
echo 'export PATH=~/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
# 在~/bin生成fastqc快捷方式
ln -s ~/src/FastQC/fastqc ~/bin/fastqc
軟件使用部分
1. Entrez Direct
edirect 全稱 EntrezDirect,是 NCBI 開(kāi)發(fā)的用于 linux 命令行界面的快速檢索和下載工具,使用它可以很方便的在服務(wù)器上進(jìn)行 Entrez 的檢索和抓取。
1.1 下載與安裝:
wget ftp://ftp.ncbi.nlm.nih.gov/entrez/entrezdirect/edirect.tar.gz
tar zxvf edirect.tar.gz
sh ~/app/edirect/setup.sh
echo "export PATH=\$PATH:\$HOME/src/edirect" >> $HOME/.bashrc
1.2 主要工具與用途
工具名稱 | 用途 |
efetch | 下載 NCBI 數(shù)據(jù)庫(kù)中的記錄和報(bào)告并以相應(yīng)格式打印輸出 |
einfo | 獲取目標(biāo)結(jié)果在數(shù)據(jù)庫(kù)中的信息 |
elink | 對(duì)目標(biāo)結(jié)果在其他數(shù)據(jù)庫(kù)中比配結(jié)果 |
epost | 上傳 UIDs 或者 序列登記號(hào) |
esearch | 在 Entrez 中執(zhí)行搜索命令 |
efilter | 對(duì)之前的檢索結(jié)果進(jìn)行過(guò)濾或限制 |
xtract | converts XML into a table of data values. |
nquire | sends a URL request to a web page or CGI service. |
運(yùn)行實(shí)例:
#抓取nucleotides數(shù)據(jù)。
esearch -db nucleotide -query PRJNA257197 | efetch -format fasta > ebola.fasta
# 以GenBank格式獲取數(shù)據(jù)
esearch -db nucleotide -query PRJNA257197 | efetch -format gb > ebola.gb
# 通過(guò)locus號(hào)來(lái)獲取一條序列。
efetch -db nucleotide -id KM233090 -format fasta > KM233090.fa
#一次性獲取多個(gè)id下的序列。
efetch -db nucleotide -id KM233090,KM233066,KM233113.1 -format fasta > multi.fa
#從數(shù)據(jù)中只獲取一個(gè)子集。
efetch -db nucleotide -id KM233090,KM233066,KM233113.1 -format fasta -seq_start 1 -seq_stop 10 > multi.fa
2. SRA toolkit
2.1 下載與安裝:
curl -O https://ftp-trace.ncbi.nlm.nih.gov/sra/sdk/2.8.2/sratoolkit.2.8.2-ubuntu64.tar.gz
tar xzvf sratoolkit.2.8.2-ubuntu64.tar.gz
echo export PATH=$PATH:~/src/edirect:~/src/sratoolkit.2.8.2-ubuntu64/bin >> ~/.bashrc
source ~/.bashrc
2.2 使用
#獲取文件
prefetch SRR1553610
#該文件放置在~/ncbi文件夾下
#用程序fastq-dump來(lái)把文件拆包(針對(duì)雙端測(cè)序pair-end)
fastq-dump --split-files SRR1553610
# 如何下載多個(gè)文件?創(chuàng)建一個(gè)含有SRR runs的文件。
echo SRR1553608 > sra.ids
echo SRR1553605 >> sra.ids
prefetch --option-file sra.ids
#只拆包sra.ids里指定的文件,用到sed (字符流編輯器) 工具來(lái)提取文件并替換其中的模式“SRR”
cat sra.ids | sed 's/SRR/fastq-dump --split-files SRR/' | bash
#sed中的"s"表示substitute,用于替換緊跟/ /內(nèi)的內(nèi)容
3. FastQC與trimmomatic
3.1下載與安裝
#安裝FastQC:
cd ~/src
curl -O http://www.bioinformatics.babraham.ac.uk/projects/fastqc/fastqc_v0.11.5.zip
unzip fastqc_v0.11.5.zip
cd FastQC
chmod +x fastqc #設(shè)置可執(zhí)行。
# 安裝trimmomatic
cd ~/src
curl -O http://www.usadellab.org/cms/uploads/supplementary/Trimmomatic/Trimmomatic-0.32.zip
unzip Trimmomatic-0.32.zip
cd Trimmomatic-0.32
java -jar trimmomatic-0.32.jar #運(yùn)行需要java
# 我們寫(xiě)一個(gè)腳本來(lái)替代我們運(yùn)行。
echo '#!/bin/bash' > ~/bin/trimmomatic
echo 'java -jar ~/src/Trimmomatic-0.32/trimmomatic-0.32.jar $@' >> ~/bin/trimmomatic
chmod +x ~/bin/trimmomatic
# 看,成功了!
trimmomatic
3.2 運(yùn)行
#!/bin/bash
# 這個(gè)腳本會(huì)把目錄下的所有fastq文件進(jìn)行修剪。
for name in *.fastq
do
echo "*** currently processing file $name, saving to trimmed-$name"
trimmomatic SE -phred33 $name trimmed-$name SLIDINGWINDOW:4:30 MINLEN:35 TRAILING:3
echo "*** done"
done
# 現(xiàn)在,運(yùn)行fastqc報(bào)告。
# 你可以在這添加更多的命令。
fastqc trimmed-*.fastq
# 查看FastQC 和Trimmomatic的污染序列和接頭序列文件。
ls ~/src/FastQC/Configuration/
# 文件內(nèi)容涵蓋一些已知的接頭序列。
more ~/src/FastQC/Configuration/adapter_list.txt
# 文件內(nèi)容涵蓋已知的污染序列。
more ~/src/FastQC/Configuration/contaminant_list.txt
# 進(jìn)行接頭切除時(shí),我們需要找到含有接頭序列的文件。
# 你可以自己創(chuàng)建自己的接頭文件,或者使用Trimmomatic自帶的
# 我們來(lái)創(chuàng)建一個(gè)Illummina的接頭文件吧。
echo ">adapter" > adapter.fa
echo "AGATCGGAAGAG" >> adapter.fa
# 我們來(lái)進(jìn)行質(zhì)量和接頭的修剪。
trimmomatic SE SRR519926_1.fastq trimmed.fq ILLUMINACLIP:adapter.fa:2:30:10 SLIDINGWINDOW:4:30 TRAILING:30 ILLUMINACLIP:adapter.fa:2:30:5
# Trimmomatic自帶了一些接頭,我們可以來(lái)用一下。
# 依據(jù)文件內(nèi)容不同,可能有不同的操作模式。
# 這是一個(gè)palindromic接頭。 Trimmomatic通過(guò)接頭名字來(lái)確定操作模式。
#*留意你的安裝版本號(hào)。如果安裝了更新版本,需要對(duì)應(yīng)改一下路徑名稱。
ln -s ~/src/Trimmomatic-0.32/adapters/TruSeq3-PE.fa
# 這是一個(gè)擴(kuò)展的palindromic接頭文件,它也列出了單個(gè)接頭。
ln -s ~/src/Trimmomatic-0.32/adapters/TruSeq3-PE-2.fa
# 這些是一些經(jīng)典的接頭。
ln -s ~/src/Trimmomatic-0.32/adapters/TruSeq3-SE.fa
trimmomatic SE SRR519926_1.fastq trimmed.fq ILLUMINACLIP:adapter.fa:2:30:10 SLIDINGWINDOW:4:30 TRAILING:30 ILLUMINACLIP:TruSeq3-SE.fa:2:30:5
# 在雙端(paired end)模式下運(yùn)行時(shí),兩個(gè)測(cè)序文件需要被同時(shí)過(guò)濾和剪切。
# 命令行混亂隨之而來(lái)。
trimmomatic PE SRR519926_1.fastq SRR519926_2.fastq trim_1P.fq trim_1U.fq trim_2P.fq trim_2U.fq ILLUMINACLIP:TruSeq3-PE-2.fa:2:10:10 SLIDINGWINDOW:4:30 TRAILING:20
# 一個(gè)稍微簡(jiǎn)單的選擇是,加一個(gè) -baseout