基因组组装基因组组装

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

2021-06-05  本文已影响0人  Jason数据分析生信教室

0605 Cloudy

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

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

1.1 首先生成假想序列

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)                   
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    
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 <- 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的意思了呢?

上一篇 下一篇

猜你喜欢

热点阅读