标签:
在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
#!/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/, $_, 2; $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}->[0] <=> $unique{$a}->[0] } keys %unique) { my $id = $unique{$x}->[1]; my $size = $unique{$x}->[0]; next if $size = 1; print qq{>$id;size=$size;\n$x\n}; }
标签:
原文地址:http://www.cnblogs.com/xudongliang/p/5412649.html