使用二代测序寻找T-DNA插入

本文接着每日文献:2018-02-27,上文探讨方法,本文是具体代码

为了解基因组存在T-DNA插入时,即基因组构成为AC而样本基因组为ABC的情况得到的测序结果在序列比对的时候的可能情况,因此需要先要使用模拟数据进行探索。

第一步:构建参考序列和实际序列。这一部分会用到samtools,embossentrez-direct, 都可以通过conda安装

用efecth下载参考基因组

mkdir -p refs
efetch -db=nuccore -format=fasta -id=AF086833 | seqret --filter -sid AF086833 > refs/AF086833.
fa

从参考基因组提取其中部分序列用作参考序列,而下载的参考基因组则被当成实际的基因组

# 提取1~5000, 8000~
cat refs/AF086833.fa | seqret -filter -sbegin 1 -send 5000 > part1.fa
cat refs/AF086833.fa | seqret -filter -sbegin 8000  > part2.fa
# 合并
cat part1.fa part2.fa| union -filter > refs/ref.fa

第二步:模拟测序结果。这一步用到dwgsim,也可以用conda安装

mkdir data
dwgsim -e 0.02 -E 0.02 -d 350 -1 100 -2 100 -s 50 -r 0 -R 0  -N 10000 -c 0 refs/AF086833.fa data/data

解释dwgsim的参数,-e-E为测序仪的系统错误率, -d表示文库大小, -1-2表示短读长度(这里就是文库大小350bp,PE100), 而-s则表示文库大小的波动情况,-r-R表示基因组的突变率, -N表示输出的短读数, -c表示输出数据类型(0为illumina, 1为SOLiD,2为Ion Torrent)。最后会在data文件下生成以data为前缀的几个文件。

第三步:回贴到参考序列。所用工具为bwasamtools

# 建立索引
bwa index refs/ref.fa
# 比对
mkdir align
bwa mem refs/ref.fa data/data.bwa.read1.fastq.gz data/data.bwa.read2.fastq.gz| samtools sort > align/data.bwa.bam
samtools index align/data.bwa.bam

第四步:使用IGV和samtools探索比对结果. samtools是处理SAM/BAM格式的常用工具,而IGV则是可视化利器。首先用samtools的flagstat统计比对的总体情况:

$ samtools flagstat align/data.bwa.bam
20000 + 0 in total (QC-passed reads + QC-failed reads)
0 + 0 secondary
0 + 0 supplementary
0 + 0 duplicates
15906 + 0 mapped (79.53% : N/A)
20000 + 0 paired in sequencing
10000 + 0 read1
10000 + 0 read2
15662 + 0 properly paired (78.31% : N/A)
15662 + 0 with itself and mate mapped
244 + 0 singletons (1.22% : N/A)
0 + 0 with mate mapped to a different chr
0 + 0 with mate mapped to a different chr (mapQ>=5)

不难大部分序列(~80%)都是正确成对(properly paired),其中properly paired的解释为"0x2 PROPER_PAIR .. each segment properly aligned according to the aligner",也就是两个序列都能在基因组上找到自己的位置,最常见的两类flags就是"83,163"和"99和147",也就是和参考序列反向互补

flags为83和163的结果

那么余下的20%序列是什么情况?我们可以通过管道的方式进行简单的统计

$ samtools view -F 0x2 align/data.bwa.bam | cut -f 2 | sort | uniq -c | sort -k1,1nr
   1925 141
   1925 77
     65 137
     65 69
     62 121
     62 181
     59 117
     59 185
     58 133
     58 73

其中大部分序列是77141,也就是说两条reads都没有比对到参考基因组上, 也就是SAM格式中的第3,6,7列为"*",第4,5,8,9列表示为"0"

141和77表示完全没有比对

剩下的"69,137","117,185"和"73,133","121,181"表示两条reads中只有一条,即flags为137,185和73,121的reads能比对到参考基因组上。

其中一条read比对到参考序列

如果统计这些单边比对reads的位置信息,就会发现他们的位置是在4651~5214, 也就缩小搜索区间,因为通过IGV你会发现区间刚好存在一个breakpoint,所有双端联配在这里都出现不同程度的soft-clip。

samtools view -b  -F 0x2  align/data.bwa.bam | samtools view -b  -G 141 | samtools view -G 77 | cut -f 4 | sort | head -n2
samtools view -b  -F 0x2  align/data.bwa.bam | samtools view -b  -G 141 | samtools view -G 77 | cut -f 4 | sort | tail -n2
5000bp处就是插入位置

进一步寻找插入的具体位点可以有两种策略,一种是不知道插入的序列信息,一种是已知插入序列的序列信息。

未知序列信息

一种方案是将不完美比对序列进行组装,得到的较长序列通过BLASTN确定位置。组装可以使用velvet,用起来比较容易,而且可以用bioconda安装。

samtools view -b -F 0x2 align/data.bwa.bam | samtools sort -n | samtools fastq -1 read_1.fq -2 read_2.fq -
velveth velvet31 31 -fastq -separate -shortPaired read_1.fq read_2.fq
velvetg velvet31 -exp_cov auto -ins_length 350
# -ins_length表示插入文库大小

最后会在velvet31文件夹下生成contigs.fa,这里面的N50肯定是看不了的,我们只是需要一个比较长一点的序列而已。最后使用BLAST找到可能的位点。只需要建立索引数据库,然后用BLASTN去搜索组装的contigs.fa的可能位置。

cd refs
# 建立索引
makeblastdb -dbtype nucl -in ref.fa
# 搜索
blastn -query ../velvet31/contigs.fa -db ref.fa -outfmt 8
BLASTN结果

已知序列信息

如果序列已知,那么在找个基础上可以先按照未知序列信息的策略组装,只不过可以分别对T-DNA插入和参考基因组分别BLAST, 于是可以找到一个覆盖插入位点的contig。或者将这条插入序列加入参考序列中,从比对结果中过滤处配对的两个reads中,一个比对到原来的参考序列,一个比对到插入序列的结果。

建立索引并比对:

cat refs/AF086833.fa| seqret -filter -sbegin 5000 -send 8000 > refs/insertion.fas
bioawk -c fastx '{print ">insertion\n" $seq}' insertion.fas >> ref.fa
bwa index refs/ref.fa
bwa mem refs/ref.fa data/data.bwa.read1.fastq.gz data/data.bwa.read2.fastq.gz | samtools sort > align/data.bwa.new.bam
samtools index align/data.bwa.new.bam

从符合要求的序列中找到可能的插入位置

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

推荐阅读更多精彩内容