基因组组装---基因组大小评估(genome survey)

  • 1. 估算基因组大小原理
  • 2. Jellyfish软件
  • 3. GenomeScope计算杂合度
  • 4. GCE软件
  • 5. 估算拟南芥基因组大小
    • (1)使用 jellyfish + genomescope
    • (2)使用 GCE
  • 6. 总结

1. 估算基因组大小原理

kmer(k)是一段固定长度的短序列,因为对于长度为L的序列(L>k),每次移动一个字符,共有L - k +1个kmer序列。
此外,发现kmer在基因组大小评估和组装中为奇数,这是因为基因组的序列中存在回文序列(palindromic sequence),若为偶数的情况, 如,CGCGCGCG, kmer=4,这样他的互补链仍然是他的自身,这样产生的 de Bruijn graph很困难,不能区分这个序列是来自哪。总不能一会将他的正义链贴到基因组上,一会又将他的反义链再次贴到相同的位置上,也会造成组装困难。

举例:

L:GATCCTACTGATGC ( L = 14 )
kmer:8
L序列中kmer的总个数:
N = ( L - k ) + 1= (14 - 8 ) + 1= 7GATCCTACTGATGC ( L = 14 )
GATCCTAC,   ATCCTACT,     TCCTACTG,    CCTACTGA,    CTACTGAT,     TACTGATG,    ACTGATGC

对于下面表格中的基因组而言,可以看到基因组只是覆盖了一次(整体覆盖,N=L - k + 1),对于1Mb基因组,估算误差已经很小了;假定测了多次(10 ×),那么就要计算总的kmer数然后除以覆盖度(10 ×)。

那么由此可推,对于更大的基因组序列,kmer的数值是设定的固定值,每个覆盖度(Coverage)对应着不同的数量(Number),这时,Total_kmer_number = Coverage (column) * Number (column),找到覆盖度的最大值(Expeacted_coverage,不算起初的error),也就是期望的平均覆盖度:
Genome_size = Total_kmer_number / Expected_coverage

2. Jellyfish软件

Genome survey的软件比较常用的有Jellyfish,其中子命令可以参看官网(https://github.com/gmarcais/Jellyfish/blob/master/doc/Readme.md)。
使用也很简单:
(1)统计kmer的命令是:

size=200M
kmer=17
fq1=/home/debian/data/08.arabidopsis_t2t_genome/CRR302670/CRR302670_r1.fastq.gz
fq2=/home/debian/data/08.arabidopsis_t2t_genome/CRR302670/CRR302670_r2.fastq.gzjellyfish  count -s ${size}  -t 10 -m ${kmer}  \-C  -o jellyfish_kmer${kmer}.count.txt\--min-quality=20\--quality-start=33\<(zcat ${fq1})\<(zcat ${fq2})

(2)根据(1)中统计结果计算kmer的histogram

jellyfish histo -t 10 jellyfish_kmer${kmer}.count.txt  -o  jellyfish_kmer$kmer.hist.txt

得到的结果可以使用genomescope软件汇总和绘图。

3. GenomeScope计算杂合度

GenomeScope软件可以将jellyfish结果拟合计算基因组杂合度信息:
(genomescope web网页http://qb.cshl.edu/genomescope/

## 150 是PE read length
##  ./genomescope_${kmer}_out 是输出文件夹
kmer=17
Rscript /home/debian/bin/genomescope-1.0.0/genomescope.R jellyfish_kmer${kmer}.hist.txt  \${kmer}   150  ./genomescope_${kmer}_out

4. GCE软件

GCE软件也是可以达到jellyfish的功能。

## 统计kmer
echo `date`;~/bin/GCE-master/gce-1.0.2/kmerfreq   -k 17 -t 10 -p gce_kmer17 read.list; echo `date`## 输出kmer统计
cat gce_kmer17.kmer.freq.stat| grep "#Kmer indivdual number"
cat gce_kmer17.kmer.freq.stat | perl -ne 'next if(/^#/ || /^\s/); print; ' | awk '{print $1"\t"$2}' >
kmer17.freq.stat.2colum## 输出拟合估算基因组结果
~/bin/GCE-master/gce-1.0.2/gce -g 12235478628 -f kmer17.freq.stat.2colum  >gce.table 2>gce.log

5. 估算拟南芥基因组大小

使用的二代测序数据是Illumina Novaseq 6000 PE 150(数据来源BIG GSA: CRA004538

CRR302670_r1.fastq.gz   ## 3.0 Gb
CRR302670_r2.fastq.gz   ## 3.3 Gb
(1)使用 jellyfish + genomescope

设置jellyfish参数:

kmer=17 #($1),
size=200M  #($2)
## genomescope目前只适用于二倍体基因组数据

整体代码为:

#!/usr/bin/env bash
# date: 2022.8.28 (22:55:03)####################################################
############### INSTALL SOFTWARE ###################
####################################################
## Install new R (original R had png error...)
# mamba install -c conda-forge/label/cf202003 r-base## Install genomescope
# wget -c https://github.com/schatzlab/genomescope/archive/refs/tags/v1.0.0.zip
# genomescope-1.0.0.zip
# unzip genomescope-1.0.0.zip## Jellyfish count
## Install jellyfish
# mamba install -c bioconda kmer-jellyfish
# jellyfish 2.3.0####################################################
########### Run jellyfish and genomescope ##########
###################################################### set Illumina DNA fileskmer=$1 ## kmer number
size=$2 ## hash size (100M, 1G)fq1=/home/debian/data/08.arabidopsis_t2t_genome/CRR302670/CRR302670_r1.fastq.gz
fq2=/home/debian/data/08.arabidopsis_t2t_genome/CRR302670/CRR302670_r2.fastq.gz ## run main process
echo `date` "count start"
## note `<()` had no space
jellyfish  count -s ${size}  -t 10 -m ${kmer}  \-C  -o jellyfish_kmer${kmer}.count.txt\--min-quality=20\--quality-start=33\<(zcat ${fq1})\<(zcat ${fq2})
echo `date` "count end"## jellyfish hist
echo `date` "histo start"
jellyfish histo -t 10 jellyfish_kmer${kmer}.count.txt  -o  jellyfish_kmer$kmer.hist.txt
echo `date` "histo end"## GenomeScope estimate heterozygous rateecho `date` "Genomescope start"
Rscript /home/debian/bin/genomescope-1.0.0/genomescope.R jellyfish_kmer${kmer}.hist.txt  \${kmer}   150  ./genomescope_${kmer}_out
echo `date` "Genomescope end"

查看评估结果信息:

cat ./genomescope_17_out/summary.txt
GenomeScope version 1.0
k = 17property                                                   min                      max
Heterozygosity                                0.106724%         0.109489%
Genome Haploid Length         137,917,082 bp   137,964,725 bp
Genome Repeat Length          44,864,650 bp      44,880,148 bp
Genome Unique Length          93,052,432 bp      93,084,577 bp
Model Fit                                             95.205%              97.5522%
Read Error Rate                             0.174374%           0.174374%

genomescope统计杂合度结果和绘图:
绘图结果为plot.pngplot.log.png,前者为下图展示结果。
从下图可以看出明显的单峰分布,说明杂合度很低,仅有0.108%,估算基因组大小为 137,964,725 bp,基本复合预期。

(2)使用 GCE

GCE软件的整体命令在上面有提到,分开看kmer统计结果,其中12235478628需要用到gce主命令中:

head  gce_kmer17.kmer.freq.stat
#Kmer size: 17
#Maximum Kmer frequency: 65535
#Kmer indivdual number: 12235478628
#Kmer species number: 604346515
#Theoretic space of Kmer species: 17179869184  occupied ratio: 0.0351776

GCE软件的结果可以查看gce.log

Final estimation table:
raw_peak    effective_kmer_species  effective_kmer_individuals  coverage_depth  genome_size a[1]    b[1]
62                       101912174                             11436641691                                 62.8413          1.81993e+08    0.906038    0.63522Discrete mode estimation finished!

本GCE结果中估算的拟南芥基因组结果偏大 1.81993e+08 bp,为182Mb,可能是统计时候未进行过滤吧。

重新使用fastp软件过滤:

#!/usr/bin/bash#### Run fastp version 0.22.0
kmerfreq=~/bin/GCE-master/gce-1.0.2/kmerfreq
gce=~/bin/GCE-master/gce-1.0.2/gce
echo `date` fastp start
fastp -i /home/debian/data/08.arabidopsis_t2t_genome/CRR302670/CRR302670_r1.fastq.gz\-I /home/debian/data/08.arabidopsis_t2t_genome/CRR302670/CRR302670_r2.fastq.gz\-o  CRR302670.clean.R1.fq.gz -O  CRR302670.clean.R2.fq.gz\-q 20 -w 10  -h CRR302670.fastp_filter.html
echo `date` fastp end#### Run GCE version 1.0.2
ls CRR302670.clean.R*.fq.gz  > read_file
$kmerfreq -k 17 -t 20 -p mucao_k17 read_file
less mucao_k17.kmer.freq.stat | grep "#Kmer indivdual number"
less mucao_k17.kmer.freq.stat | perl -ne 'next if(/^#/ || /^\s/); print; ' | awk '{print $1"\t"$2}' > mucao.kmer.freq.stat.2colum## Get kmer number
num=`head -n 3 mucao_k17.kmer.freq.stat | tail -n1 | cut -f 4 -d " "`## Common first 10 lines contains much error results
depth=`sed '1,10d' kmer17.freq.stat.2colum |awk 'NR==1{max=$2;next}{max=max>$2?max:$2}END{print max}'`
$gce -g $num -f ./mucao.kmer.freq.stat.2colum -c $depth >gce.table 2>gce.log

估算基因组大小结果查看(gce.log),此时基因组大小为179 Mb,还是较大。

Final estimation table:
raw_peak    effective_kmer_species  effective_kmer_individuals  coverage_depth  genome_size a[1]b[1]
62                         101924949                           11259729986                                    62.7518                 1.79433e+08     0.907537     0.626289
Discrete mode estimation finished!

使用mucao.kmer.freq.stat.2colum数据,可以绘制kmer分布图(jellyfish的histo结果也可以绘制):

data=read.table("mucao.kmer.freq.stat.2colum",header=F)
a1=data[5:100,]
a2=data[20:100,]
peakNum=a2[a2$V2==max(a2$V2),][,1]
d=a1
pdf(file = "GCE_kmer_dis.pdf")
plot(d[,1],d[,2],type="l",xlab="Kmer Depth", ylab="Frequency")
points(d[,1],d[,2],col="blue")
abline(v=peakNum,col="red")
dev.off()

6. 总结

(1)就测试数据而言,jellyfish + genomescope使用体验更好,估算基因组大小更符合实际(ensemble plants arabidopsis ~ 135Mb);本数据GCE结果偏大, GCE中参数还特别设定纯和和杂和模式,更加人性化。

(2)kmer估算基因组大小,通过上面方法外,还可以使用初步组装结果表征,或者通过流式细胞仪实验估计。

参考:
https://bioinformatics.uconn.edu/genome-size-estimation-tutorial/ (kmer估算基因组大小原理)
https://bioinformatics.stackexchange.com/questions/156/why-do-some-assemblers-require-an-odd-length-kmer-for-the-construction-of-de-bru (kmer是奇数)
https://github.com/gmarcais/Jellyfish/blob/master/doc/Readme.md (Jellyfish软件)
https://github.com/schatzlab/genomescope (GenomeScope软件)
https://bioinformaticsworkbook.org/dataAnalysis/GenomeAssembly/genomescope.html#gsc.tab=0 (GenomeScope 软件说明)
https://github.com/fanagislab/GCE (GCE软件)

基因组组装---基因组大小评估(genome survey)相关推荐

  1. 宏基因组组装质量评估新方法-MAGISTA

    谷禾健康 尽管地球上微生物类群的繁多,但只有一小部分得到了培养和有效命名.因为大多数菌无法在非常特定的条件下培养分离鉴定. 在过去十年中,宏基因组研究的重要性已经凸显,因为它能够评估细菌基因库并发现当 ...

  2. The impact of third generation genomic technologies on plant genome assembly 第三代基因组技术对植物基因组组装的影响

    题目:The impact of third generation genomic technologies on plant genome assembly 第三代基因组技术  对植物  基因组组装 ...

  3. 全基因组组装,注释与评估软件

    全基因组组装,注释与评估软件集锦(更新于2020.03.20) 1.Assembly 1.1质体基因组 1.1.1NOVOPlasty program language:Perl Reference: ...

  4. 基因组组装---Nanopore数据评估(nanoqc和NanoPlot套件工具)

    基因组组装---Nanopore数据评估(拟南芥nanopore) 1. 下载软件 2. 软件使用 (1)nanoQC (2)NanoPlot 1. 下载软件 使用conda创建环境,下载nanoqc ...

  5. 基因组组装(Genome Assembly)

    基因组组装(Genome assembly)是指使用测序方法将待测物种的基因组生成序列片段(即read),并根据reads 之间的重叠区域对片段进行拼接,先拼接成较长的连续序列(contig),再将c ...

  6. NBT:牛瘤胃微生物组的4941个宏基因组组装基因组(MAG)

    牛瘤胃微生物组的参考基因组集 用于瘤胃微生物组生物学和酶发现的4,941个瘤胃宏基因组组装基因组集 Compendium of 4,941 rumen metagenome-assembled gen ...

  7. NC:MetaSort通过降低微生物群落复杂度以突破宏基因组组装难题

    点评:目前本领域研究最大的问题是缺少大量细菌基因组作为参考宏基因组序列.这一问题严重限制了研究的准确度和进一步功能研究.而目前的研究还主要集中在扩增子和宏基因组数据的宏观描述上,即使发布了大量宏基因组 ...

  8. 辽东楤木的高质量参考基因组组装和遗传转化体系开发

    文章信息 题目:A High-Quality Reference Genome Sequence and Genetic Transformation System of Aralia elata 刊 ...

  9. MPB:微生物所蔡磊组-​​基于二代测序的真菌基因组组装和注释

    为进一步提高<微生物组实验手册>稿件质量,本项目新增大众评审环节.文章在通过同行评审后,采用公众号推送方式分享全文,任何人均可在线提交修改意见.公众号格式显示略有问题,建议电脑端点击文末阅 ...

  10. 中国科学家研发新的全基因组组装算法

    重磅!中国科学家研发新的全基因组组装算法 2019-12-10 00:01 北京时间12月10日0时,<自然-方法学>在线发表了第一个能够跟上基因组测序产生速度的组装算法. 这篇论文只有两 ...

最新文章

  1. Codeforces Round #406 (Div. 1) B. Legacy(线段树上优化建图)
  2. xmake入门,构建项目原来可以如此简单
  3. LayerDate渲染多个class出现闪现问题的解决
  4. list集合去重的三种方式
  5. 欧文分校计算机新sat多少分录取,加州大学欧文分校SAT成绩要求
  6. qt qss设置字体大小_Qt编写自定义控件70-扁平化flatui
  7. Python使用笔记总结目录
  8. 让你不富都难的28个理财习惯
  9. JavaWeb——servlet介绍
  10. docker安装部署和常用命令
  11. 超像素分割算法研究:SLIC分割算法原理讲解
  12. windows环境下tensorflow手把手安装教程-pip安装
  13. Spark入门(一篇就够了)
  14. 数据不平衡问题——SMOTE算法赏析
  15. python去除图片上的文字_python读取图片里面的文字
  16. ACO 蚁群算法(算法流程,TSP例子解析)
  17. 开源构建知识库体系的工具——Trilium使用方法
  18. Power BI DAX 编写利器 —— DaxStudio 的简单用法
  19. java科技说明文范文800_说明文范文:生活因成功而精彩
  20. wincc历史数据库_wincc查询历史报警记录,归档数据

热门文章

  1. 智能化工厂数字化管理系统软件解决方案
  2. eslint 无法格式化ts_vscode 使用ESLint 自动检查,保存时自动格式化
  3. Word 紧贴表格之后添加新行
  4. 删除桌面无法删除的网页快捷方式
  5. 网络安全学习路线是怎样的?
  6. Linux 压缩(打包)文件夹 tar/zip
  7. html和js根据年份计算年龄,JS实现根据出生年月计算年龄
  8. python国际象棋的价值_python – 国际象棋negamax功能
  9. 【笔记】用Python写百度翻译网络爬虫
  10. 图像处理的Alpha通道