Lecture 11-20

本地blast使用

  1. 下载及安装:
curl -O ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/ncbi-blast-2.6.0+-x64-linux.tar.gz
tar zxvf ncbi-blast-2.6.0+-x64-linux.tar.gz

#添加路径
echo 'export PATH=$PATH:~/src/ncbi-blast-2.6.0+/bin' >> ~/.bashrc
source ~/.bashrc
  1. 使用:
    blast与大多数序列比对软件一样,需要对参考序列创建一个哈希结构的数据库:
#参数:
# -dbtype <String, `nucl', `prot'>
#   Molecule type of target db
# -in <File_In>
#   Input file/database name
#   Default = `-'
makeblastdb -in ~/refs/KM233118.fa -dbtype nucl

序列比对

# 我们可以修改输出格式。 当碱基对碱基的比对信息不需要时,我们可以采用表格格式。
blastn -db refs/KM233118.fa -query query.fa -outfmt 6
# 你也可以自己定义输出格式。
blastn -db refs/KM233118.fa -query query.fa -outfmt '6 qseqid sseqid qlen length mismatch'

# blast有不同的搜索策略或task。
#*task里的参数有'blastn','blastn-short' ,'dc-megablast','megablast', 'rmblastn',默认的是'megablast'
#*使用不同的task,出来的结果内会有文献引用,有兴趣的朋友可以去看一下。
#*blastn:需要11bp以上的精确匹配。
#*blast-short:对于小于50bp的序列最优。
#*megablast:一般用于非常相似的序列。
#*dc-megablast:dc(discontiguous,不连续的),一般用于找距离远(相似性低的,比如种间同源)的序列。

blast可以对多条序列进行比对

# 你在目标数据库中,可以有多条序列。
esearch -db nucleotide -query PRJNA257197 | efetch -db nucleotide -format fasta > refs/all-genomes.fa

# 对所有的基因组创建blast数据库。
makeblastdb -in refs/all-genomes.fa -dbtype nucl

# 随意挑取基因组的任意区域。
efetch -db nucleotide -id KM233118 -format fasta -seq_start 1 -seq_stop 1000 > 1000.fa

#*大家可以试一下
#*blastn -db refs/all-genomes.fa -query 1000.fa -outfmt 6

blastdbcmd, blastp, blastx, tblastn 的用法

# blastdbcmd 有很多参数,可以对Blast数据库内容进行查询和格式设定。
# 列出数据库的所有内容。
blastdbcmd -db refs/NC_002549.fa -entry 'all' | head -3

# 获取数据库的特定条目。
blastdbcmd -db refs/NC_002549.fa -entry '10313991' | head -3
#*报错,暂未解决。

# 获取数据库中的一定范围的核苷酸条目。
blastdbcmd -db refs/NC_002549.fa -entry 'all' -outfmt '%a %s' -range 1-10 -strand minus
#*%a表示accession(访问号),%s 表示 sequence data(序列数据)

# 设定数据库内容的格式。
blastdbcmd -db refs/NC_002549.fa -entry 'all' -outfmt '%a %l'
#*%l 表示 sequence length(序列长度)

# 列出每个蛋白及其长度。
blastdbcmd -db refs/NC_002549-prot.fa -entry 'all' -outfmt '%a %l'

# 从蛋白数据库中提取一个条目并存到一个文件中。
blastdbcmd -db refs/NC_002549-prot.fa -entry 'NP_066243.1' > query-p.fa

blastp是蛋白序列比对蛋白数据库,与blastn用法类似,也是需要先进行数据库的构建,再进行比对:

blastp -db refs/NC_002549-prot.fa -query query-p.fa

tblastn是将蛋白序列比对到核苷酸数据库。

efetch -db protein -id NP_066243.1 -format fasta > NP_066243.fa
tblastn -db refs/NC_002549.fa -query NP_066243.fa  | more

blastx是核苷酸序列比对到蛋白数据库

blastx -db refs/NC_002549-prot.fa -query nucleotide.fa | more

BWA(Burrows-Wheeler Aligner)

BWA主要是将reads比对到大型基因组上,主要功能是:序列比对。首先通过BWT(Burrows-Wheeler Transformation,BWT压缩算法)为大型参考基因组建立索引,然后将reads比对到基因组。特点是快速、准确、省内存。由三种类似算法组成:BWA-backtrack,BWA-SW和BWA-MEM。首推BWA-MEM。

三种算法的适用范围
  • BWA-backtrack:reads长度<70bp时,推荐本算法,建议输入reads长度 < 100bp。
  • BWA-SW:在reads具有频繁的gap时,比对更敏感,推荐本算法。reads长度一般为70bp-1Mbp,支持long-reads,split alignment。
  • BWA-MEM(首推):在reads长度在70bp-1Mbp范围时,推荐本算法(除了上面两种情况)。支持long-reads,split alignment。
  1. 安装及下载
cd ~/src
curl -OL http://downloads.sourceforge.net/project/bio-bwa/bwa-0.7.15.tar.bz2
tar jxvf bwa.0.7.15.tar.bz2 #bzip2压缩,需要加-j 解压
cd bwa-0.7.15/
make

#建立软链接
ln -s ~/src/bwa-0.7.15/bwa ~/bin
  1. 使用
# 对基因组创建索引,这样bwa就可以进行基因组搜索。
bwa index ~/refs/852/ebola-1999.fa

# 获取埃博拉基因组序列的第一行。
head -2 ~/refs/852/ebola-1999.fa > query.fa

# 用bwa-mem命令将其map回它的基因组。
bwa mem ~/refs/852/ebola-1999.fa query.fa > results.sam

SAM文件格式

主要细节参照该网址:https://www.cnblogs.com/zdwu/p/6801063.html

# 有两种输出流。它们被称为:标准输出(standard out)和标准错误输出(standard error)。
# 下边的代码是告诉你,你可以如何重定向这两个输出到文件中。
bwa mem ~/refs/852/ebola-1999.fa query.fa 1> results.sam 2> errors.txt

BAM文件和samtools

# 安装一个短read模拟器。Heng Li写的wgsim。
cd ~/src
git clone https://github.com/lh3/wgsim.git
cd wgsim
gcc -g -O2 -Wall -o wgsim wgsim.c -lz -lm
ln -s ~/src/wgsim/wgsim ~/bin/wgsim
  1. 下载和安装samtools。
cd ~/src
curl -OL http://sourceforge.net/projects/samtools/files/samtools/1.1/samtools-1.1.tar.bz2
tar jxvf samtools-1.1.tar.bz2
cd samtools-1.1
make
ln -s ~/src/samtools-1.1/samtools ~/bin/
  1. 使用
# 生成一些数据,并把输出保存到一个文件。
wgsim -N 10000 ~/refs/852/ebola-1999.fa read1.fq read2.fq > mutations.txt

# 运行比对。
bwa mem ~/refs/852/ebola-1999.fa read1.fq read2.fq > results.sam

# 开始转换成BAM文件。
samtools view -Sb results.sam > temp.bam

# 对比对结果进行排序。
samtools sort -f temp.bam results.bam

# 使用samtools过滤。
# -f 匹配标识(flag)(保留匹配的标识对应的reads)
# -F 过滤标识(flag)(去除匹配标识对应的reads,保留剩余的)
#*在上两个lecture中有说过sam格式,sam每一列有不同含义,其中一列(第二列)叫标识(flag),不同数字有不同含义

FLAG, 概括出一个合适的标记,各个数字分别代表
1 序列是一对序列中的一个
2 比对结果是一个pair-end比对的末端
4 没有找到位点
8 这个序列是pair中的一个但是没有找到位点
16 在这个比对上的位点,序列与参考序列反向互补
32 这个序列在pair-end中的的mate序列与参考序列反响互补
64 序列是 mate 1
128 序列是 mate 2
假如说标记为以上列举出的数目,就可以直接推断出匹配的情况。假如说标记不是以上列举出的数字,比如说83=(64+16+2+1),就是这几种情况值和。

# 比对到反向互补链的reads。
samtools view -f 16 results.bam

# 比对到正向链的reads。
samtools view -F 16 results.bam

# -c 可以用来计数
samtools view -F 16 results.bam | wc -l
samtools view -c -F 16 results.bam

# 用质量来过滤。BWA 的mapping质量为0时,表示reads是map到多个位置。而 q>=1表示该reads是单一mapping。
samtools view -c -q 1 results.bam

# 统计高质量的比对数目。
samtools view -c -q 40 results.bam

ReadSeq:格式转换软件

  1. 下载与安装
cd ~/src/readseq
curl -OL http://iubio.bio.indiana.edu/soft/molbio/readseq/java/readseq.jar
  1. 使用
# 提取数据未GFF(Generic Feature Format)格式。
# 自动获取输入文件的格式。
readseq -format=GFF NC.gb

# 你也可以设置输出文件的名字。
readseq -format=GFF -o NC-all.gff NC.gb

# 提取为fasta文件。
readseq -format=FASTA -o NC.fa NC.gb

# 从GFF文件中提取“gene”的行
#* \t表示的是tab分隔符
cat NC-all.gff | egrep '\tgene\t'

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

推荐阅读更多精彩内容