De novo组装#02 | 基因组survey (jellyfish+GenomeScope2)

基因组Survey 是对基因组的大小、杂合情况进行评估。我们de novo组装一个物种的基因组之前,一般要对所测物种基因组大小有一个估计,以便后续测三代数据的时候,确定大概需要测多少数据量(深度)以满足自身的组装要求。

公司一般会采用两种方式来综合估计基因组的大小:一是用流式细胞仪测DNA含量,根据一个已知基因组大小的物种为参考,分别测两个物种的DNA含量,来推算另一个物种的基因组大小;二是通过k-mer分析来估计基因组大小,通过k-mer估计基因组大小的原理这篇文章说得蛮通俗清楚(使用K-mer估计基因组大小 ),大致的原理就是:比如一个基因组大小为1000bp,如果用K=19bp的大小去逐碱基的去生成kmer,可以生成1000-19+1=981个唯一的19kmer序列,这个时候我们可以估计这个基因组大小为981bp,可想而知这种估计方式会随着基因组越大估计的误差越小。K的大小在20左右就能唯一对应到基因组的特定位置,和pcr引物大小一样。

##这里有几个实际情况需要考虑:

1#我们实际用于估计的测序数据并不是只测了1次,基因组每个位置他都测了多次(就是我们说的测序深度),我们用测序数据里的所有reads拆分得到kmer总数除以我们的测序深度就有得到了我们的基因组大小,这和上面说的1X的原理是一致的;
2我这里说的测序深度指的是绝大部分kmer的所测到/拆分到的kmer数量,事实上有序测序的偏向性会使得基因组各个的测序深度并不完全相同,所以我们的我们kmer频率分布图应该是一个泊松分布而非集中在一个深度,故我们取kmer数量最多的那个位置所对应的深度作为我们的测序深度来计算即可;
3#此外我们测序的那个个体,其重复序列,杂合度,倍性都会影响我们估计结果。
4#测序数据的准确性也会影响结果,一般选取二代测序数据或者pacbio的HIFI(CCS)数据等高质量测序数据,pacbio的CLR数据以及ont数据估计出的结果可能与实际大小想去甚远。

进行k-mer分析估计基因组大小大致分为两步:先用jellyfish生成kmer频数表,基于生成的kmer频数表使用GenomeScope2计算基因组大小。

#jellyfish生成kmer频数表

1.安装jellyfish

###手动安装
conda install -c bioconda jellyfish
wget https://github.com/gmarcais/Jellyfish/releases/download/v2.3.0/jellyfish-2.3.0.tar.gz
tar -zxvf jellyfish-2.3.0.tar.gz    ###解压
mkdir jellyfish     ###新建一个目录用于安装软件
cd jellyfish-2.3.0
./configure --prefix=$PWD/../jellyfish   ###配置安装路径,不要在当前路目录下安装,和win下安装软件指定路径一样
make -j 4   ###编译
make install  ###安装

###自动安装
conda install -c bioconda jellyfish

2.解压用于生成kmer的过滤后的.fastq.gz文件或者生成解压命令文件

###生成.fastq.gz解压脚本文件
mkdir jellyfish.out
ls ../fastp/liver.clean.CLEAN.R*.fastq.gz | awk '{print "gzip -dc "$0 }' > generate.file

###解压.fastq.gz
gunzip ../fastp/liver.clean.CLEAN.R*.fastq.gz  

3.用测序文件.fastq进行kmer计算 jellyfish count

/newlustre/home/jfgui/pengfang/wt/2.3/jellyfish/bin/jellyfish count \
   -t 8 \   ###线程数
   -C  \   ###help里注释“Count both strand, canonical representation”,大致意思是测序reads可能是方向互补的,划分的kmer要合并计算
   -m 21 \   ### kmer大小
   -s 1G \ # help里注释“*Initial hash size”,哈希大小,不太懂 \笑哭
   -g generate.file \    ### 解压脚本文件,用于指定输入的测序文件。这里可以直接用.fstaq文件名代替
   -G 2 \ ###解压并行任务数
   -o kmer21  ###输出kmer计算文件

4.kmer统计 jellyfish stats

/newlustre/home/jfgui/pengfang/wt/2.3/jellyfish/bin/jellyfish stats  -o kmer21.stat  kmer21    ### -0输出统计文件名+kmer文件
##查看结果
cat kmer21.stat
Unique:    1218936212      ###kmer只出现一次的kmer数
Distinct:  1955488355    ###kmer种数
Total:     40783077884    ###总kmer数(包括重复)
Max_count: 123674750   ###重复次数(depth)的kmer其次数

5.生成kmer频数表 jellyfish histo

/newlustre/home/jfgui/pengfang/wt/2.3/jellyfish/bin/jellyfish histo \
    -v  \   ###Verbose,日志信息
    -t 4 \   ###线程数
    -h 123674750  \    ### High count value of histogram,要≥ kmer21.stat里的Max_count值,设置小了确实会使基因组估计偏小
    -o kmer21.histo \   ### 输出文件名
    kmer21    ### kmer文件
##查看结果
$head -30 kmer21.histo
1 1218936212
2 99999484
3 20935249
4 8552091
5 4228422
6 2768580
7 2005243
8 1628162
9 1406755
10 1287171
11 1230652
12 1221860
13 1237472
14 1283545
15 1350410
16 1439661
17 1543166
18 1657552
19 1794506
20 1937804
21 2095848
22 2271979
23 2467633
24 2689394
25 2941122
26 3224341
27 3555004
28 3933669
29 4373807
30 4876443    ###前面深度较低的一些kmer一般是由于测序错误导致,一些碱基测错导致这些kmer只出现了一次或几次

$tail kmer21.histo
2440713 1
2519432 1
2530141 1
2547146 1
8864574 1
8886826 1
8890472 1
9021202 1
9138838 1
10000001 4      ###后面深度较高的一些kmer可能是一些重复序列
总之大致趋势就是先极速下降后面就是一个单峰
#GenomeScope2估计基因组大小

1#安装GenomeScope2

git clone https://github.com/tbenavi1/genomescope2.0.git
cd genomescope2.0/
Rscript install.R

2#运行程序

mkdir genomescope.k21.out  ###建个目录用于放输出文件
singularity exec ../../container/Assembly202306.sif genomescope.R \   ###用的基因课genek的服务器,实验室的超算没装上
   -i kmer21.histo \ ### 输入kmer频数表文件
   -o genomescope.k21.out \ ### 输出文件目录
   -p 2 \  ### 所测物种倍型
   -k 21 \  ### kmer大小
   -m 123674750 ### MAX_KMERCOV,kmer最大深度,即kmer21.stat里统计的Max_count值

3#查看估计结果
输出结果有4个png文件以及3个txt文档,这里主要看linear_plot.png和summary.txt这两个够了,

###输出结果有4个png文件以及3个txt文档,这里主要看linear_plot.png和summary.txt这两个够了,
$ll genomescope.k21.out/
-rw-r--r-- 1 ug1603 VIP 197622 Jul 28 22:40 linear_plot.png
-rw-r--r-- 1 ug1603 VIP 196220 Jul 28 22:40 log_plot.png
-rw-r--r-- 1 ug1603 VIP    565 Jul 28 22:40 model.txt
-rw-r--r-- 1 ug1603 VIP    349 Jul 28 22:40 progress.txt
-rw-r--r-- 1 ug1603 VIP    592 Jul 28 22:40 summary.txt
-rw-r--r-- 1 ug1603 VIP 212302 Jul 28 22:40 transformed_linear_plot.png
-rw-r--r-- 1 ug1603 VIP 204044 Jul 28 22:40 transformed_log_plot.png


###查看summary.txt, 基因组大小估计771Mb
cat summary.txt
GenomeScope version 2.0
input file = kmer21.histo
output directory = genomescope.k21.out
p = 2
k = 21
max_kmercov = 123674750

property                      min               max
Homozygous (aa)               99.7436%          99.762%
Heterozygous (ab)             0.237972%         0.256351%
Genome Haploid Length         770,470,462 bp    771,346,780 bp
Genome Repeat Length          227,617,245 bp    227,876,133 bp
Genome Unique Length          542,853,217 bp    543,470,648 bp
Model Fit                     71.4851%          97.4163%
Read Error Rate               0.195431%         0.195431%

###后面设置了kmer大小为17和19,19结果大差不差,k=17时只有384Mb,不知道时那里出问题了明明一样的操作
cat summary.txt
GenomeScope version 2.0
input file = kmer19.histo
output directory = genomescope.k19.out
p = 2
k = 19
max_kmercov = 134518629

property                      min               max
Homozygous (aa)               99.7264%          99.7508%
Heterozygous (ab)             0.249247%         0.273628%
Genome Haploid Length         774,637,484 bp    775,663,725 bp
Genome Repeat Length          266,158,351 bp    266,510,958 bp
Genome Unique Length          508,479,133 bp    509,152,767 bp
Model Fit                     68.5259%          97.4533%
Read Error Rate               0.18645%          0.18645%
########################################################################
cat summary.txt
GenomeScope version 2.0
input file = kmer17.histo
output directory = genomescopek17_out
p = 2
k = 17
max_kmercov = 146388861

property                      min               max
Homozygous (aa)               85.5287%          91.7584%
Heterozygous (ab)             8.24157%          14.4713%
Genome Haploid Length         383,488,328 bp    384,340,999 bp
Genome Repeat Length          197,557,658 bp    197,996,920 bp
Genome Unique Length          185,930,670 bp    186,344,079 bp
Model Fit                     61.2391%          90.5093%
Read Error Rate               0.237057%         0.237057%

输出的png图片结果:


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

推荐阅读更多精彩内容