waitakere.txt:
这只是一部分数据,只是为了示例噪音数据
1 0 3 2 0 3
4 0 1 0 0 0
0 0 0 1 0 0
0 0 0 0 7 0
0 8 9 0 9 0
0 6 0 5 0 3
6 0 7 0 1 0
......
登录后复制
解题思路:首先读入数据到列表里,然后对数据进行排序,将数据划分到10个箱中。对于箱均值光滑,箱中每一个值都被替换为箱中的均值。对于箱中位数光滑,箱中每一个值都被替换为箱中的中位数。对于箱边界光滑,箱中每一个值都被替换为最近的边界值。
以下为python代码实现部分:
import numpy as np
def binning(filename,box_num):
my_list=[]
my_list1=[]
noise_data = open(filename)
for line in noise_data.readlines():
dataline=line.strip()
my_list.append(dataline)
for i in range(0,len(my_list)):
my_list[i]=int(my_list[i])
if (i+1) % 2==0 and my_list[i]==0:
my_list[i]=1
my_list1=sorted(my_list)
#print my_list1
box_list=[]
len_box=int(np.ceil(len(my_list1)/float(box_num)))
for i in range(0,10):
each_box=my_list1[i*len_box:(i+1)*len_box]
box_list.append(each_box)
return box_list
def box_mean_smooth(box_list):
for i in range(0,len(box_list)):
box_avg=int(np.average(box_list[i]))
for j in range(0,len(box_list[i])):
box_list[i][j]=box_avg
return box_list
def box_mid_smooth(box_list):
for i in range(0,len(box_list)):
box_mid=int(np.median(box_list[i]))
for j in range(0,len(box_list[i])):
box_list[i][j]=box_mid
return box_list
def box_boundary_smooth(box_list):
for i in range(0,len(box_list)):
left_bdy=box_list[i][0]
right_bdy=box_list[i][-1]
for j in range(0,len(box_list[i])):
if abs(box_list[i][j]-left_bdy)<abs(box_list[i][j]-right_bdy):
box_list[i][j]=left_bdy
else:
box_list[i][j]=right_bdy
return box_list
filename='waitakere.txt'
box_list=binning(filename,10)
print box_list
print box_mean_smooth(box_list)
print box_mid_smooth(box_list)
print box_boundary_smooth(box_list)
登录后复制
下图为实验结果截图:
由于数据较多,截图只是一部分
python
数据
银川旅游景点攻略,这个地方驴友必去之一!良心推荐
精选推荐
广告
python 等深分箱法(均值平滑技术、边界值平滑技术)
1.3W阅读·6评论·24点赞
2020年12月10日
数据挖掘概念与技术(第三版)课后答案——第三章
2.2W阅读·201评论·119点赞
2020年7月3日
python S-G (Savitzky–Golay filter) 平滑滤波和kalman滤波滤掉噪声实现实例,有可视化结果
357阅读·0评论·0点赞
2022年11月10日
R语言数据挖掘(2) 数据预处理
2292阅读·0评论·1点赞
2017年10月10日
数据认知与数据预处理--数据预处理
348阅读·0评论·0点赞
2022年6月23日
数据挖掘复习
815阅读·0评论·0点赞
2021年12月20日
美人鱼公主参加聚会装扮美人鱼游戏
精选推荐
广告
python 数据、曲线平滑处理
9904阅读·0评论·16点赞
2022年4月21日
数据挖掘如何分箱以及如何对每个箱子中的数据进行平滑处理
2.0W阅读·2评论·38点赞
2019年6月24日
数据挖掘概念与技术(原书第三版)范明 孟小峰译-----第三章课后习题答案
2.6W阅读·13评论·21点赞
2017年5月21日
python 数据可视化 -- 真实数据的噪声平滑处理
2779阅读·0评论·2点赞
2019年2月11日
【6】python生成数据曲线平滑处理——(Savitzky-Golay 滤波器、convolve滑动平均滤波)方法介绍,推荐玩强化学习的小伙伴收藏
2612阅读·2评论·3点赞
2021年8月12日
数据挖掘理论与算法笔记
368阅读·0评论·0点赞
2021年6月10日
《数据挖掘概念与技术》学习笔记-第三章
3957阅读·0评论·6点赞
2020年2月14日
这个神奇的库,可以将数据平滑化并找到异常点
135阅读·0评论·0点赞
2022年6月9日
python数据平滑处理,numpy之数据平滑处理
3253阅读·0评论·0点赞
2021年4月27日
python 数据平滑_数据平滑方法的原理和应用
1394阅读·0评论·0点赞
2020年12月9日
python使曲线变得平滑_如何在Python中平滑数据?
3234阅读·0评论·1点赞
2020年12月4日
numpy模块的使用(二)
257阅读·0评论·2点赞
2020年10月3日
去首页
看看更多热门内容
评论1
扣尼奇哇
赞
写得好
境或人体微生物中广泛存在着菌株水平的差异,这些菌株个体水平的基因差异决定了其功能执行上的显著不同。宏基因组测序是对人体或自然环境样品进行菌株水平研究的唯一途径[1]。而环境样品惊人的复杂性为菌株重建带来了极大的挑战,各种新的实验方法、测序策略和技术工具应运而生,基于宏基因组进行种水平乃至菌株水平研究的分析方法也日渐完善[2]。
Binning的含义是分箱、聚类,指从微生物群体序列中将不同个体的序列(reads或contigs等)分离开来的过程。简单来说就是把宏基因组数据中来自同一菌株的序列聚到一起,得到一个菌株的基因组。根据基于聚类的序列类型的不同,分为reads binning,contig binning 和 genes binning。近年来高分文章(表1)中多使用Contig Binning,即将组成相似或丰度一致的Contigs聚类到同一物种从而完成单菌的草图组装,进一步解析菌株的功能特性。
表1 近年来 Contig Binning 高分文献
1. Contig Binning 原理
利用核酸组成信息( Nucleotide composition )进行 binning :来自同一菌株的序列,其核酸组成是相似的,于是可以根据核酸组成信息来进行binning,例如根据核酸使用频率(通常是四核苷酸频率),GC含量和必需的单拷贝基因等。
利用基因丰度( Nucleotide abundance ) 变化 :研究发现来自同一个菌株的基因在不同的样品中 ( 不同时间或不同病理程度 ) 的丰度分布模式是相似的。因此可以根据丰度信息来进行binning,即在不同样品中的丰度变化模式。
同时利用核酸组成信息及基因丰度变化 :即核酸组成与丰度(NCA-Nucleotide composition and abundance)。NCA策略,既能保证binning效果,也能相对节约计算资源,因此目前主流软件多为NCA算法[3]。
2. 常用的 Contig Binning 软件
下图[3]对常见的一些NCA-based contig binning软件进行了比较。其中MetaBAT[4]是历史引用量最高,且2019年又推出了MetaBAT2[5]。下面利用真实宏基因组数据对使用较为广泛的MaxBin[6],CONCOCT[7],及MetaBAT2软件进行测试比较。
基于相同的contigs进行binning,三个软件资源消耗分别如下表2,CONCOCT软件binning速度快,MetaBAT2相对来说消耗时间较长。
表2 不同软件资源消耗比较
基于15个样本,统计各软件binning结果。并利用 CheckM[13]软件来评估 binning 的质量,综合考虑 binners 的完整度,污染度及大小等方面。表3基于 CheckM 对各软件 binning 结果评估,并统计污染度<10%时,完整度>95%,>70%,>50%的 binners 的个数。发现MetaBAT2 获得的 binners 结果较好。
表3 基于 CheckM 对各软件的 binning 结果进行评估
综上,CONCOCT软件binning速度快,并且得到的binner结果也相对较好,MetaBAT2相对来说消耗时间略长,但得到的binning结果最好。但是由于环境中物种多样性十分丰富,使用一个软件binning可能会丢掉一些物种,如果时间及资源允许,我们可以使用多个软件进行binning,得到结果之后利用ANI>95%(ANI被定义为两个微生物基因组同源片段之间平均的碱基相似度,在近缘物种之间有较高的区分度)去重复。
3. Binning 结果优化
得到高质量的 binners 之后,还可将其进行优化,通常的方法是将样本的高质量reads 比对回各 binners,再通过 SOAPdenovo[8],Spades [9]等软件重新组装。但是如果环境的复杂度很高,mapping得到的reads可能并不都来源于同一个物种,这种情况会严重影响重新组装的效果,可能重新组装后得到的结果比之前更差。另外,mapping及重新组装消耗时间、内存、存储等资源很大。
因此,我们尝试通过 三代 meta 对二代 contig binning 结果进行优化,其过程是利用基因组延伸软件(sspace[10]、pScarf[11]、OPERA-LG[12]等)和三代 reads 对二代 binning 结果进行延伸。延伸后的 binners(表4)在包含序列数,N50,组装总长度,最长 scaftigs 都有明显提升。
表4 延伸后 binners 参数指标
以N50为例,延伸前后N50长度如下图所示,可以看到延伸后N50长度得到明显提升。
4. 高质量 Binners 分析
最终得到高质量的Binners即MAG(metagenome assembled genomes)之后,既可以基于单个MAG进行单菌基因组草图分析,也可以统计MAG丰度进行分组或样本层面的分析。
Contig Binning是研究微生物群落结构及功能的新方法,利用三代宏基因组数据优化,不仅能提升物种组装完整度,同时还能提升物种注释的准确度,挖掘更多的低丰度物种。
参考文献:
[1] Marx V, Microbiology: the road to strain-level identification[J]. Nature methods, 2016. 13(5): p. 401-404.
[2] Donati C, et al., Uncovering oral Neisseria tropism and persistence using metagenomic sequencing[J]. Nature microbiology, 2016. 1: p. 16070.
[3] Sangwan N, Xia F, Gilbert J A. Recovering complete and draft population genomes from metagenome datasets[J]. Microbiome, 2016, 4(1):8.
[4] Kang, Dongwan D, Froula, et al. MetaBAT, an efficient tool for accurately reconstructing single genomes from complex microbial communities[J]. United States: N. p., 2015. doi:10.7717/peerj.1165.
[5] Kang DD, Li F, Kirton E, Thomas A, Egan R, An H, Wang Z. MetaBAT 2: an adaptive binning algorithm for robust and efficient genome reconstruction from metagenome assemblies[J]. PeerJ. 2019 Jul 267:e7359.
[6] Wu Y W, Tang Y H, Tringe S G, et al. MaxBin: an automated binning method to recover individual genomes from metagenomes using an expectation-maximization algorithm[J]. Microbiome, 2014, 2.
[7] Johannes Alneberg, Brynjar Smári Bjarnason, Ino de Bruijn, et al. Binning metagenomic contigs by coverage and composition[J]. Nature Methods, 2014, doi: 10.1038/nmeth.3103.
[8] Luo R, Liu B, Xie Y, et al. SOAPdenovo2: an empirically improved memory-efficient short-read de novo assembler[J]. Gigascience, 2012 ,1(1):18. doi: 10.1186/2047-217X-1-18.
[9] Bankevich A, Nurk S, Antipov D, et al.. SPAdes: A New Genome Assembly Algorithm and Its Applications to Single-Cell Sequencing[J]. Journal of Computational Biology, 2012.
[10] Boetzer M, Pirovano W. SSPACE-LongRead: scaffolding bacterial draft genomes using long read sequence information[J]. BMC Bioinformatics, 2014, 15, 211.
[11] Cao MD, Nguyen HS, et al. Scaffolding and Completing Genome Assemblies in Real-time with Nanopore Sequencing[J]. Nature Communications, 2017, Article number: 14515. doi:[10.1038/ncomms14515].
[12] Gao S, Bertrand D, Chia BKH, et al. OPERA-LG: efficient and exact scaffolding of large, repeat-rich eukaryotic genomes with performance guarantees[J]. Genome Biology, 2016, 17, 102.
[13] Parks DH, Imelfort M, Skennerton CT, et al.. CheckM: assessing the quality of microbial genomes recovered from isolates, single cells, and metagenomes[J]. Genome Research, 2015, 25(7):1043-55. doi: 10.1101/gr.186072.114.
将定量变量转换为定性变量的方法为:分区间(Binning),包括等宽分区间以及自适应分区间。
1、等宽分区间(Fixed-Width Binning):可以用pandas的cut()方法自己设定区间范围。
等宽分区间的缺点是:落在某个区间中的数据点的数目不一定是均匀的,因此可能会得到不规则的区间。一些区间中的数据可能会非常的密集,一些区间则会非常稀疏甚至是空的。因此,自适应分区间方法是一个更安全的策略。
2、自适应分区间(Adptive Binning):使用数据的四分位数来确定区间范围,这样确保每个区间内的数据个数是相同的。
扩展资料
要对定量变量进行转换的原因:大多数情况下,可以直接使用定量变量。但是有时候,特征和目标之间不呈线性关系。比如说年龄和收入之间的关系,当人年轻时,收入通常会稳步上升,但到了一定年纪之后,收入便开始降低。
当然可以用非线性模型来拟合数据,但是这样会把模型弄得很复杂。因此比较好的做法是在数据准备的阶段就对定量变量做分箱处理(Binning,也称为分区间)。在对定量变量分箱处理之后,还要再将其转换为虚拟变量或对其进行WOE转换
参考资料来源:
百度百科——定性变量
百度百科——定量变量