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

原地址

几点说明

1.非简单翻译,所有代码均可运行,为了辅助理解,基本每步代码都有结果,需要比较的进行了整合

2.原文中的软件都下载最新版本

3.原文中有少量代码是错误的,这里进行了修正

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

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

3ca0ca5ca871

左无右有

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值