通过简单数据熟悉Linux下生物信息学各种操作3

原地址
几点说明
1.非简单翻译,所有代码均可运行,为了辅助理解,基本每步代码都有结果,需要比较的进行了整合
2.原文中的软件都下载最新版本
3.原文中有少量代码是错误的,这里进行了修正
4.对于需要的一些知识背景,在这里进行了注释或链接到他人博客


一共4部分
通过简单数据熟悉Linux下生物信息学各种操作1
通过简单数据熟悉Linux下生物信息学各种操作2
通过简单数据熟悉Linux下生物信息学各种操作3
通过简单数据熟悉Linux下生物信息学各种操作4


15awk的简单使用

15.1提取Ebola的coding feature,genes和coding sequences

efetch -db nucleotide -id NC_002549.1 -format gb > NC.gb
 ~/bin/readseq -format=GFF -o NC.gff NC.gb

找到每个feature的长度

cat NC.gff |awk '{print $1,$2,$3}'|head -5
##gff-version 2 
# seqname source
NC_002549 - source
NC_002549 - 5'UTR
NC_002549 - gene
cat NC.gff|cut -f 1,2,3|head -5
##gff-version 2
# seqname   source  feature
NC_002549   -   source
NC_002549   -   5'UTR
NC_002549   -   gene

几乎等同于上个命令。
计算每个feature的长度

cat NC.gff | awk ' { print $3, $5-$4 + 1 } ' | head -5
 1
source 1
source 18959
5'UTR 55
gene 2971

仅提取CDS features

cat NC.gff|awk '$3=="CDS" {print $3,$5-$4+1,$9}'
CDS 2220 gene
CDS 1023 gene
CDS 981 gene
CDS 885 group
CDS 1146 group
CDS 1095 gene
CDS 884 group
CDS 10 group
CDS 867 gene
CDS 756 gene
CDS 6639 gene

计算所有gene的累积长度

cat NC.gff | awk '$3 =="gene" { len=$5-$4 + 1; size += len; print "Size:", size } '

size+=len代表size=size+len,也就是在第一个len的基础上依次递加。为了清楚表示,不用这个运算符,比对结果看

cat NC.gff | awk '$3 =="gene" { len=$5-$4 + 1; size += len; print "Size:", size } '
Size: 2971
Size: 4347
Size: 5852
Size: 8258
Size: 9711
Size: 11345
Size: 18127
cat NC.gff | awk '$3 =="gene" { print $3, $5-$4 + 1, $9 } '
gene 2971 gene
gene 1376 gene
gene 1505 gene
gene 2406 gene
gene 1453 gene
gene 1634 gene
gene 6782 gene

计算基因组有多大,有几种方式

samtools view -h results.bam |head -2
samtools view -h results.bam |head -2
@HD VN:1.6  SO:coordinate
@SQ SN:NC_002549.1  LN:18959

可见,大小是18959
基因占基因组的百分比
我的NC.gff文件出现问题了,重新做一个

readseq -format=GFF -o NC.gff NC.gb

原文的代码是

cat NC.gff | awk '$3 =="CDS" { len=$5-$4 + 1; size += len; perc=size/18959; print "Size:", size, perc } '

以下代码我稍作了改动,以更好的显示。

cat NC.gff |awk '$3=="CDS" {len=$5-$4+1; size+=len;perc=size*100/18959;print "Size:", size, perc,"%"}'
Size: 2220 11.7095 %
Size: 3243 17.1053 %
Size: 4224 22.2797 %
Size: 5109 26.9476 %
Size: 6255 32.9922 %
Size: 7350 38.7679 %
Size: 8234 43.4306 %
Size: 8244 43.4833 %
Size: 9111 48.0563 %
Size: 9867 52.0439 %
Size: 16506 87.0616 %

现在用genes和codings sequence做新的gff文件
首先,文件的首行定义file的类型

head -1 NC.gff  > NC-genes.gff
head -1 NC.gff  > NC-cds.gff

然后以不同的feature(这里是gene和cds)进行区分

cat NC.gff | awk -F '\t' -v OFS='\t'  '$3=="gene" { print $0 }' >> NC-genes.gff
cat NC.gff | awk -F '\t' -v OFS='\t' '$3=="CDS" { print $0 }'  >> NC-cds.gff

这里我试了下,不用-F '\t' -v OFS='\t'参数也一样
还需要细看,暂留个

记号

sam files是tab分隔的,可以awk处理
多少数据有超过50的coverage

samtools depth results.bam |awk '$3>50 {print $0}'|wc -l
18053

有多少templates长度大于500bp,注意其长度可以为负

samtools view results.bam |awk '$9>500 {print $0}'|wc -l
5065

分隔GFF文件获取gene name

18 比较比对工具

下载安装bowtie2

curl -OL https://sourceforge.net/projects/bowtie-bio/files/bowtie2/2.3.5.1/bowtie2-2.3.5.1-macos-x86_64.zip/download
unzip bowtie2-2.3.5.1-macos-x86_64.zip 
#做链接
ln -s ~/src/bowtie2-2.3.5.1-macos-x86_64/bowtie2 ~/bin/
ln -s ~/src/bowtie2-2.3.5.1-macos-x86_64/bowtie2-align-l ~/bin/
ln -s ~/src/bowtie2-2.3.5.1-macos-x86_64/bowtie2-build ~/bin/

为参考genome建立索引

bowtie2-build ~/refs/852/NC.fa NC.fa

格式化mutations,以便在浏览器展示,做成gff文件
先看一下mutation files

NC_002549.1 165 A   C   -
NC_002549.1 1164    T   K   +
NC_002549.1 2691    T   Y   +
NC_002549.1 4436    A   R   +
NC_002549.1 6620    C   G   -
NC_002549.1 7709    T   Y   +
NC_002549.1 10864   G   A   -
NC_002549.1 11216   TT  -   -
NC_002549.1 11490   G   R   +
NC_002549.1 11677   T   Y   +
NC_002549.1 12430   C   S   +
NC_002549.1 12887   C   T   -
NC_002549.1 13155   C   Y   +
NC_002549.1 13767   T   W   +
NC_002549.1 17580   G   R   +
cat mutations.txt | awk ' {print $1, "wgsim", "mutation", $2, $2, ".", "+",  ".", "." }' > mutations.gff

查看mutations.gff

NC_002549.1 wgsim mutation 165 165 . + . .
NC_002549.1 wgsim mutation 1164 1164 . + . .
NC_002549.1 wgsim mutation 2691 2691 . + . .
NC_002549.1 wgsim mutation 4436 4436 . + . .
NC_002549.1 wgsim mutation 6620 6620 . + . .
NC_002549.1 wgsim mutation 7709 7709 . + . .
NC_002549.1 wgsim mutation 10864 10864 . + . .
NC_002549.1 wgsim mutation 11216 11216 . + . .
NC_002549.1 wgsim mutation 11490 11490 . + . .
NC_002549.1 wgsim mutation 11677 11677 . + . .
NC_002549.1 wgsim mutation 12430 12430 . + . .
NC_002549.1 wgsim mutation 12887 12887 . + . .
NC_002549.1 wgsim mutation 13155 13155 . + . .
NC_002549.1 wgsim mutation 13767 13767 . + . .
NC_002549.1 wgsim mutation 17580 17580 . + . .

原文中接着进行比较,然后samtools view查看bwa和bowtie2产生的文件,可以直接看下面的最终脚本


下面是最终脚本(比较bwa和bowtie2的比对结果),注意索引不一样

READ1=read1.fq
READ2=read2.fq
#bwa的索引
REFS=~/refs/852/NC.fa
#bowtie2的索引
~/src/bowtie2-2.3.5.1-macos-x86_64/bowtie2-build ~/refs/852/NC.fa NC_bow.fa

从基因组模拟reads

wgsim -N 10000 -e 0.1 $REFS $READ1 $READ2 > mutations.txt

mutation file转变为gff文件

cat mutations.txt | awk -F '\t' ' BEGIN { OFS="\t"; print "##gff-version 2" } { print $1, "wgsim", "mutation", $2, $2, ".", "+",  ".", "name " $3 "/" $4 }' > mutations.gff

增加read group to the mapping

GROUP='@RG\tID:123\tSM:liver\tLB:library1'

分别运行bwa和bowtie2分别产生bwa.sam和bow.sam
bwa

bwa mem -R $GROUP $REFS $READ1 $READ2 > bwa.sam

bowtie2
一定记得index和bam的不一样

~/src/bowtie2-2.3.5.1-macos-x86_64/bowtie2 -x NC_bow.fa -1 $READ1 -2 $READ2 >bow.sam
10000 reads; of these:
  10000 (100.00%) were paired; of these:
    5107 (51.07%) aligned concordantly 0 times
    4893 (48.93%) aligned concordantly exactly 1 time
    0 (0.00%) aligned concordantly >1 times
    ----
    5107 pairs aligned concordantly 0 times; of these:
      4830 (94.58%) aligned discordantly 1 time
    ----
    277 pairs aligned 0 times concordantly or discordantly; of these:
      554 mates make up the pairs; of these:
        391 (70.58%) aligned 0 times
        163 (29.42%) aligned exactly 1 time
        0 (0.00%) aligned >1 times
98.05% overall alignment rate

我这个地方bwa比对没问题,但是一到bowtie2就报下面的错误

Saw ASCII character 10 but expeacted 33-based Phred qual. libc++abi.dylib: terminating with uncaught exception of type int

后来查看read1和read2的大小和序列,完全一致。问题不在这里
最后发现竟然是因为read1和read2没有写权限。增加后即可正常运行。

把sam文件转换为bam文件

samtools view -Sb bow.sam >tmp.bam
samtools sort tmp.bam bow.bam
samtools sort tmp.bam -o bow.bam

同样对bow.sam进行转换
以上可以写成脚本(原文此处有错)

for name in *.sam;
do
    samtools view -Sb $name > $name.tmp.bam
    samtools sort -f $name.tmp.bam -o $name.bam
done

建立索引

for name in *.bam
do
    samtools index $name
done

最后结果如下

-rw-r--r--  1 ucco  staff   768K  7  2 23:14 bow.bam
-rw-r--r--  1 ucco  staff   152B  7  2 23:22 bow.bam.bai
-rw-r--r--  1 ucco  staff   5.8M  7  2 23:06 bow.sam
-rw-r--r--  1 ucco  staff   741K  7  2 23:19 bwa.bam
-rw-r--r--  1 ucco  staff   152B  7  2 23:22 bwa.bam.bai
-rw-r--r--  1 ucco  staff   5.5M  7  2 23:18 bwa.sam

19 samtools faidx和pileups

用samtools对fasta文件进行索引

samtools faidx ~/refs/852/NC.fa

查询

samtools faidx ~/refs/852/NC.fa NC_002549:1-10
>NC_002549:1-10
cggacacaca

可以同时查询多个范围

samtools faidx ~/refs/852/NC.fa NC_002549:1-10 NC_002549:100-110
>NC_002549:1-10
cggacacaca
>NC_002549:100-110
tttaaattgaa

用samtools的mpileup命令看有参考基因组和没有参考基因组的差异
关于mpileup的用法见[samtools]mpileup命令简介

#没有参考基因组
samtools mpileup -Q 0 bwa.bam | less
#有参考基因组
samtools mpileup -f ~/refs/852/NC.fa -Q 0 bwa.bam | less

为了只管显示,结果放一起

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

推荐阅读更多精彩内容