拆分,合并染色体序列

1. 什么情况下需要拆分染色体

拆分序列长度大于512Mb的染色体,原因前面我略微讲了一下,见bedtools的一个报错:Received illegal bin number xxxxx from getBin call,更权威的说法如下,即比对软件可以生成sam/bam,但在给其建立索引samtools index时会失败。

read mapping with mappers such as BWA, Tophat or STAR as the BAM output format used by these mappers limits the reference contig size to (2^29 - 1) bp (512 MB). Strictly speaking, the BAM files will be valid, however they cannot by indexed with "samtools index" so that random access to chromosomal regions is not possible.

为了验证以上的说法,我用bwa, bowtie测试了一下。

1.1 bwa
#得到bam文件
-rw-r--r-- 1 huangsiyuan s2pnh 302M Feb 25 23:12 SRR1222469.bam
-rw-r--r-- 1 huangsiyuan s2pnh 300M Feb 25 23:07 test_chr.fasta.sa
-rw-r--r-- 1 huangsiyuan s2pnh 215K Feb 25 23:03 test_chr.fasta.amb
-rw-r--r-- 1 huangsiyuan s2pnh   65 Feb 25 23:03 test_chr.fasta.ann
-rw-r--r-- 1 huangsiyuan s2pnh 150M Feb 25 23:03 test_chr.fasta.pac
-rw-r--r-- 1 huangsiyuan s2pnh 599M Feb 25 23:03 test_chr.fasta.bwt
-rw-r--r-- 1 huangsiyuan s2pnh 276M Feb 25 22:38 out.SRR1222469.fastq.gz
-rw-r--r-- 1 huangsiyuan s2pnh 606M Feb 25 22:34 test_chr.fasta
#得到上面结果的命令如下
$cat align_bwa.sh
bwa index test_chr.fasta
bwa mem -t 4 -M -R "@RG\tID:test\tPL:illumina\tLB:lib\tSM:test" test_chr.fasta out.SRR1222469.fastq.gz | samtools view -Sb - >  SRR1222469.bam
#接下来建立索引
$ cat index.sh
samtools sort -@ 4 SRR1222469.bam -o SRR1222469.s.bam
samtools index SRR1222469.s.bam
#但是却报错了
[E::hts_idx_push] Region 538655237..538655267 cannot be stored in a bai index. Try using a csi index with min_shift = 14, n_lvls >= 6
samtools index: failed to create index for "SRR1222469.s.bam": Numerical result out of range

染色体长度超出范围!

1.2 bowtie
-rw-r--r-- 1 huangsiyuan s2pnh 301M Feb 25 23:47 SRR1222469_bowtie.s.bam
-rw-r--r-- 1 huangsiyuan s2pnh 1.4G Feb 25 23:40 SRR1222469_bowtie.s.sam
-rw-r--r-- 1 huangsiyuan s2pnh 1.4G Feb 25 23:33 SRR1222469_bowtie.sam
-rw-r--r-- 1 huangsiyuan s2pnh 173M Feb 25 23:32 test_chr.fasta.rev.1.ebwt
-rw-r--r-- 1 huangsiyuan s2pnh  74M Feb 25 23:32 test_chr.fasta.rev.2.ebwt
-rw-r--r-- 1 huangsiyuan s2pnh 173M Feb 25 23:19 test_chr.fasta.1.ebwt
-rw-r--r-- 1 huangsiyuan s2pnh  74M Feb 25 23:18 test_chr.fasta.2.ebwt
-rw-r--r-- 1 huangsiyuan s2pnh 127K Feb 25 23:06 test_chr.fasta.3.ebwt
-rw-r--r-- 1 huangsiyuan s2pnh 147M Feb 25 23:06 test_chr.fasta.4.ebwt
-rw-r--r-- 1 huangsiyuan s2pnh 276M Feb 25 22:38 out.SRR1222469.fastq.gz
-rw-r--r-- 1 huangsiyuan s2pnh 606M Feb 25 22:34 test_chr.fasta

#命令如下
bowtie-build test_chr.fasta test_chr.fasta
bowtie -q -v 1 -m 6 -p 4 --sam test_chr.fasta out.SRR1222469.fastq.gz SRR1222469_bowtie.sam
samtools sort -@ 4 SRR1222469_bowtie.sam -o SRR1222469_bowtie.s.sam
samtools view -Sb SRR1222469_bowtie.s.sam > SRR1222469_bowtie.s.bam
samtools index SRR1222469_bowtie.s.bam

#最终得到的报错信息和上面一模一样
[E::hts_idx_push] Region 536880316..536880340 cannot be stored in a bai index. Try using a csi index with min_shift = 14, n_lvls >= 6
samtools index: failed to create index for "SRR1222469_bowtie.s.bam": Numerical result out of range

报错信息说换一种建立索引的方式,csi index,但下游分析的软件有的并不支持这种csi index。

2. 什么情况下需要合并染色体

这里说染色体并不准确,应该是Scaffold序列。
合并许多Unplaced序列到chrUn中去。

3. 举个例子

比如这个参考基因组:GCA_002162155.2_WEW_v2.0_genomic.fna.gz
其中unplaced的Scaffold有148382个;
14个染色体中最小的也是609.5Mb,准备将每个染色体分成两个parts。

4. 演练

准备这两个文件

$ head -n 4 chr14_2parts.bed #这里每条染色体从哪里断开是随意设置的,有一点点不严谨
CM007921.2  0   471304005
CM007921.2  471304005   609493238
CM007922.2  0   438720154
CM007922.2  438720154   712626289

$ head -n 5 chrun.bed #每条Scaffold的长度信息,一般基因组注释文件gff含有这些信息
LSYQ02000015.1  0   883
LSYQ02000087.1  0   653
LSYQ02000702.1  0   1044
LSYQ02070967.1  0   1746
LSYQ02070968.1  0   649
4.1 合并多条Scaffold序列

使用bedtools根据上面的bed区间,提取染色体序列

先解压fna.gz到fasta,getfasta不直接处理fna.gz
$ cat extrict_fasta.sh
bedtools getfasta -fi GCA_002162155.2_WEW_v2.0_genomic.fasta -bed chr14_2parts.bed -fo chr14_2parts.fasta
bedtools getfasta -fi GCA_002162155.2_WEW_v2.0_genomic.fasta -bed chrun.bed -fo chrun.fasta

提取出的每一个区间的序列都是单行的,如下

接下来将以上所有的序列去掉序列名称合并成一行

grep "^>" -v chrun.fasta | awk '{ ORS = ""; $1 = $1; print $0}' > chrUn.fasta

查看长度,与NCBI上查询到的组装信息比较,可以看出是一致的。

awk '{ print length($0) }' chrUn.fasta > chrUn.len

$ cat chrUn.len 
347377395

此时千万不要用less等命令查看chrUn.fasta文件,会卡死的,这是一行长达几百万的字符串。
正确的做法是用fold, 控制行宽。

fold -w 80 chrUn.fasta > chrUnplaced.fasta

最后再在最前面一行加上名称

sed -i '1 i\>chrUn' chrUnplaced.fasta #注意这里是如何在第一行前面加名称的
rm -f chrun.fasta chrUn.fasta chrUn.len
4.2 拆分长染色体序列

28个parts也是单行的

先fold,便于查看

fold -w 80 chr14_2parts.fasta > chr_to_parts.fasta

改名字,这一步用Perl脚本比Shell命令行快很多。

改为类似下面这种
>chr1A_part1
>chr1A_part2

最后再来检查一下

grep "^>" chr_to_two_parts.fasta > chr_to_two_parts_chr_info

合并

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

推荐阅读更多精彩内容