查看原文
其他

Biostar:课程15、16

2017-07-28 István Albert 生信媛

翻译:生物女博士

注:本系列课程翻译已获得原作者授权。


#为作者的注释

#*为译者的注释


Lecture 15 - 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


# 检查一下是否可以用。

wgsim


# 现在,下载和安装samtools。

# 把samtools链接到~/bin目录。

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/


# 检查一下是否可以用。

samtools


# 查看samtools的手册。

man ~/src/samtools-1.1/samtools.1


# 我们将会利用一个突变的参考基因组来生成一些短reads,并map(回贴?)回去。

mkdir ~/edu/lec15

cd ~/edu/lec15


# 生成一些数据,并把输出保存到一个文件。

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版本比较旧,新版本有的命令已经改变了。

samtools view -Sb results.sam > temp.bam


# 对比对结果进行排序。

samtools sort -f temp.bam results.bam


# 索引比对结果。

samtools index results.bam

#*做完了这一步,如果想方便查看一下比对结果,可以下载一个IGV软件,并将参考序列、bam文件和bam文件的索引后生成的一个文件导入IGV即可。


# 通常,我们会把所有的命令放到一个脚本中并运行。

# 查看文末的脚本。

#*原文并未将这个脚本放上来。但是后边的课程中会有更加完善的脚本。

#*本行命令暂时不运行:bash align.sh read1.fq read2.fq results.bam


# 使用samtools过滤。

# -f 匹配标识(flag)(保留匹配的标识对应的reads)

# -F 过滤标识(flag)(去除匹配标识对应的reads,保留剩余的)

#*在上两个lecture中有说过sam格式,sam每一列有不同含义,其中一列(第二列)叫标识(flag),不同数字有不同含义

#*下边内容引用自参考资料1


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


# 参考基因组的名字为 gi|10313991|ref|NC_002549.1|

# 总是手动输入会有些乏味,我们可以创建一个简称。

CHR='gi|10313991|ref|NC_002549.1|'


# 截取部分数据。

samtools view results.bam $CHR:1-100


# 查看文件的特定某列

samtools view results.bam $CHR:1-100 | cut -f 4 |  more



Lecture 16 - Converting data with ReadSeq


# 安装文件格式转换器。

# 为之创建一个目录。

mkdir -p x

cd ~/src/readseq

curl -OL http://iubio.bio.indiana.edu/soft/molbio/readseq/java/readseq.jar


# 跟调用trimmomatic很相似

# 将调用trimmomatic脚本修改一下。

#*在lecture8时,我们创建了一个文件叫trimmomatic来简化trimmomatic的命令执行。详情参见Biostar:课程7、8

cp ~/bin/trimmomatic ~/bin/readseq


# 用下边程序来替换:

# java -jar ~/src/readseq/readseq.jar $@

# 你也可以加上:

# java -cp ~/src/readseq/readseq.jar app $@

# 用图形用户界面来运行。


# 获取完整的GenBank记录的1999年的埃博拉基因组。

# http://www.ncbi.nlm.nih.gov/genome/4887


# 获取完整genbank文件。

mkdir -p ~/edu/lec16

cd -p ~/edu/lec16


# 获取完整数据。

#*efetch貌似有问题,可以用网页直接下载。详情参见Biostar:课程3、4

efetch -db nucleotide -id NC_002549.1 -format gb > NC.gb


# 提取数据未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


# 染色体坐标不匹配!我们需要去把它修复一下。

# 我们需要重做比对,或者交换现有比对或特征的坐标。

# 重新索引和比对数据。

cp NC.fa ~/refs/852/

bwa index ~/refs/852/NC.fa

cp ../lec15/*.fq .


# 编辑align.sh使其能用于新文件,并重新运行。

bash align.sh read1.fq read2.fq results.bam


# 把数据导入IGV并查看。

# 查看100-500bp区域的深度。

# 输出为序列号、基因组索引和覆盖度。

samtools depth -r NC_002549:100-500 results.bam



参考资料1:http://www.cnblogs.com


Biostar非常适合有生物学基础且想自学生信的这部分人入门。

Biostar课程文章系列:

【课程预告】手把手教你入门生信——The Biostar Handbook

Biostar:课程1、2

Biostar:课程3、4

Biostar:课程5、6

Biostar:课程7、8

Biostar:课程9、10

Biostar:课程11、12

Biostar:课程13、14


欢迎关注我们






您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存