美文网首页基因组组装基因组组装
基因组分析 K-mer 第1回 理解K-mer和Coverage

基因组分析 K-mer 第1回 理解K-mer和Coverage

作者: Jason数据分析生信教室 | 来源:发表于2021-06-05 16:28 被阅读0次

0605 Cloudy

K-mer是什么,举两个例子就知道了。

  • 例1:在碱基长度为20的序列里,设置k=19, 那么就会产生两个k-mer


  • 例2:在碱基长度为20的序列里,设置k=17,那么就会产生4个k-mer


  • 同理,长度为L的序列中,根据k-mer的k对序列进行分割,就会产生(L-k+1)个k-mer

知道这个原理就不难根据k-mer来对全序列长度来进行预测了。但是在此之前我们得了解一个概念,就是Coverage。我们根据基因组分析 K-mer 第0回 随机生成fasta文件的内容生成一些序列来进行简单的验证和计算。

1.1 首先生成假想序列

  • 首先生成一个长度为50的参照序列
out_f1 <- "sample32_ref.fasta"         
out_f2 <- "sample32_ngs.fasta"         
param_len_ref <- 50                    #指定参照序列长度
narabi <- c("A","C","G","T")           
param_composition <- c(22, 28, 28, 22) #指定A,C,G,T的比例
param_len_ngs <- 20                    #指定NGS短序列read序列的长度
param_num_ngs <- 10                    #指定NGS短序列read序列的断片数
param_desc <- "contig"                 #给fasta文件指定description的内容
  • 运行包
library(Biostrings)                   
  • 生成reference
set.seed(1010)                         
ACGTset <- rep(narabi, param_composition)#根据之前指定的比例进行生成
reference <- paste(sample(ACGTset, param_len_ref, replace=T), collapse="") 
reference <- DNAStringSet(reference)  
names(reference) <- param_desc     
reference    
  • 根据reference生成短序列
s_posi <- sample(1:(param_len_ref-param_len_ngs), param_num_ngs, replace=T)#通过长序列的长度剪掉NGS短序列的长度得到一个值,从1到这个值为止随机取样N个数字,N等同于短序列Read的序列数。其实就是等于随机在长序列上寻找N歌段序列的切入点           
hoge <- NULL                         
for(i in 1:length(s_posi)){            
  hoge <- append(hoge, subseq(reference, start=s_posi[i], width=param_len_ngs))#把N段段序列保存到hoge里
}
fasta <- hoge                          #这个hoge就是我们需要的fasta文件
  • 添加description,并且确认一下短序列
description <- paste(param_desc, s_posi, (s_posi+param_len_ngs-1), sep="_")
names(fasta) <- description           
fasta                                 
  • 最后保存文件
writeXStringSet(reference, file=out_f1, format="fasta", width=50)
writeXStringSet(fasta, file=out_f2, format="fasta", width=50)

1.2 计算Coverage

在用k-mer预测全长之前要理解一个概念,就是coverage。什么?你不知道coverage是什么?!在这里短序列一共有10段,每段20bp,这个就相当于NGS的下机数据已拥有10 x 20 = 200bp,另外一方面由于长序列是50bp, 这就相当于把长序列覆盖了 200 / 50 =4 遍,也就是coverage等于4。这样说有没有理解coverage的意思了呢?

相关文章

网友评论

    本文标题:基因组分析 K-mer 第1回 理解K-mer和Coverage

    本文链接:https://www.haomeiwen.com/subject/ifbxeltx.html