在16S数据分析中,为了减少聚类的时间,提高准确度,需要去除重复序列,而singleton序列因为没有其他的序列作为验证,可信度不是很高,也需要去除,通常情况下使用usearch 完成这2项任务,但是usearch 64位是收费的,而32为的usearch 在64位的red hat 上测试时,去除重复序列时报错了,libgomp: Thread creation failed: Resource temporarily unavailable

百度之后了解到是由于进程数达到上限,修改了上限后还是报错,就放弃使用usearch 来去除重复序列,使用vsearch 来去除重复序列

源代码:

  https://github.com/torognes/vsearch/releases

安装:

  wget https://github.com/torognes/vsearch/archive/v1.11.1.tar.gz

      tar xzvf v1.11.1
      cd vsearch-1.11.1/
      ./autogen.sh
      ./configure
      make      
      make install
 
测试:
  # 去除重复序列

      vsearch --derep_fulllength raw.reads.fasta  --output test.fasta --sizeout        
            
      # 去除singleton序列
      vsearch --sortbysize test.fasta  --output desingleton.fasta --minsize 2
 
vsearch 和 mothur 去除重复序列的结果完全一致,其实去除重复序列就是就将那些序列完全一致的序列只取一条就可以了,去除singleton 序列就是将那些只出现一次的序列去除,为了加深理解,我写了个perl脚本
来完成这2个任务,经过测试和vsearch的结果一致,代码如下:
#!/usr/bin/perl

use warnings;
use strict; my ($fasta) = @ARGV; my %unique = ();
local $/ = ">";
open FASTA, $fasta or die "Can't open $fasta\n";
while (<FASTA>) {
chomp;
next if /^\s*$/;
my ($id, $seq) = split /\n/, $_, ;
$seq =~ s/\s+//;
push @{$unique{$seq}}, $id;
}
close FASTA; foreach my $x (keys %unique) {
my $size = scalar @{$unique{$x}};
unshift @{$unique{$x}}, $size;
} foreach my $x (sort {$unique{$b}->[] <=> $unique{$a}->[] } keys %unique) {
my $id = $unique{$x}->[];
my $size = $unique{$x}->[];
next if $size = ;
print qq{>$id;size=$size;\n$x\n}; }
 

 

vsearch 去除重复序列和singleton 序列的更多相关文章

  1. GATK--数据预处理,质控,检测变异

    版权声明:本文源自 解螺旋的矿工, 由 XP 整理发表,共 13781 字. 转载请注明:从零开始完整学习全基因组测序(WGS)数据分析:第4节 构建WGS主流程 | Public Library o ...

  2. cutadapt 的安装与使用

    cutadapt 是一款质量过滤的软件, 它可以删除adapter, primer. polyA尾等序列:也可以用来去除低质量序列 源代码: https://github.com/marcelm/cu ...

  3. DNA甲基化及其测量方法(转)

    转自声明的奥秘 www.lifeomics.com DNA甲基化与肿瘤发生:         DNA甲基化水平和模式的改变是肿瘤发生的一个重要因素.这些变化包括CpG岛局部的高甲基化和基因组DNA低甲 ...

  4. 《BI那点儿事》数据流转换——排序

    排序转换允许对数据流中的数据按照某一列进行排序.这是五个常用的转换之一.连接数据源打开编辑界面,编辑这种任务.不想设置为排序列的字段不要选中,默认情况下所有列都会选中.如图所示,按照TotalSuga ...

  5. Linq专题之查询操作

    前面我们主要讲解的是Linq的查询表达式,Linq不但提供了一些基本的查询表达式,还提供了数十个查询操作.比如筛选操作.聚合操作.投影操作等等.通过这些查询操作可以更方便的对数据源进行处理. Linq ...

  6. 转载SSIS中的容器和数据流—数据转换(Transformations)续

    数据挖掘请求 数据挖掘任务是SSIS中一个很重要的任务,它的思想来源于一些算法.数据挖掘请求运行数据挖掘请求,并将结果输出到数据流.它还可以添加一些预测新列,一些应用场合如下列举: 根据已知的一些列, ...

  7. Git中的merge命令实现和工作方式

    想象一下有例如以下情形:代码库中存在两个分支,而且每一个分支都进行了改动.最后你想要将当中的一个分支合并到其它的分支中.个人博客网址 http://swinghu.github.com/ 那么要问合并 ...

  8. 时序分解算法:STL

    1. 详解 STL (Seasonal-Trend decomposition procedure based on Loess) [1] 为时序分解中一种常见的算法,将某时刻的数据\(Y_v\)分解 ...

  9. 时间序列分解算法:STL

    1. 详解 STL (Seasonal-Trend decomposition procedure based on Loess) [1] 为时序分解中一种常见的算法,基于LOESS将某时刻的数据\( ...

随机推荐

  1. Extjs DateTime 日期时间选择控件 (非点击日期强制选择) 支持4.0以上

    Extjs的日期控件,仅仅能支持到日期选择,对时间的选择并不完好.而网上下载的控件,都是基于Ext.form.dateField 开发.在选中日期后自己主动选择,并隐藏此选择窗体. 在经过一番改造后, ...

  2. vim+cscope简易教程

    Cscope具有纯正的Unix血统,它最早是由贝尔实验室为PDP-11计算机开发的,后来成为商用的AT&T Unix发行版的组成部分.直到2000年4月,这个工具才由SCO公司以BSD lic ...

  3. 【Android】17.0 第17章 服务绑定—本章示例主界面

    分类:C#.Android.VS2015: 创建日期:2016-03-03 一.简介 通过服务绑定(Bound Services),可以轻松实现后台服务与界面(UI)的交互. 二.本章示例主界面 1. ...

  4. 【Android】3.14 公交线路查询功能

    分类:C#.Android.VS2015.百度地图应用: 创建日期:2016-02-04 一.简介 利用BusLineSearch方法可查询公交线路的详情信息. 二.运行截图 简介:介绍查询公交线路功 ...

  5. 学习笔记之gethostbyaddr函数

    刚才学了gethostbyname函数,这个gethostbyaddr函数的作用是通过一个IPv4的地址来获取主机信息,并放在hostent结构体中. #include <netdb.h> ...

  6. posix多线程--条件变量

    条件变量是用来通知共享数据状态信息的. 1.条件变量初始化两种方式:(1)静态初始化pthread_cond_t cond = PTHREAD_COND_INITIALIZER;代码示例如下: #in ...

  7. destoon的如何显示tag生成的sql语句

    destoon 如何显示tag生成的sql语句 在tag.func.php中第117行加入 echo $query;  就只可以了

  8. SQLSERVER NULL值判断

    sqlserver 在判断数据条件时,如果数据包含null的话则永远为false,null不参与判断,可以使用isnull(列,默认值)来判断null值的数据列,或者列 is null or 列的条件 ...

  9. iOS网络NSURLSession使用详解

    一.整体介绍 NSURLSession在2013年随着iOS7的发布一起面世,苹果对它的定位是作为NSURLConnection的替代者,然后逐步将NSURLConnection退出历史舞台.现在使用 ...

  10. 一款纯css3实现的数字统计游戏

    今天给大家分享一款纯css3实现的数字统计游戏.这款游戏的规则的是将所有的数字相加等于72.这款游戏的数字按钮做得很美观,需要的时候可以借用下.一起看下效果图: 在线预览   源码下载 实现的代码. ...