O objetivo deste projeto é criar uma alternativa à ferramenta USEARCH desenvolvida por Robert C. Edgar (2010). A nova ferramenta deve:
Implementamos uma ferramenta chamada VSEARCH que suporta detecção de quimeras de novo e baseada em referência, clustering, desreplicação completa e de prefixo, re-replicação, complementação reversa, mascaramento, alinhamento global de pares todos contra todos, pesquisa de alinhamento exato e global, embaralhamento, subamostragem e classificação. Ele também suporta análise de arquivos FASTQ, filtragem, conversão e fusão de leituras emparelhadas.
VSEARCH significa pesquisa vetorizada, pois a ferramenta aproveita o paralelismo na forma de vetorização SIMD, bem como vários threads para realizar alinhamentos precisos em alta velocidade. VSEARCH usa um alinhador global ideal (programação dinâmica completa Needleman-Wunsch), em contraste com USEARCH que por padrão usa uma semente heurística e um alinhador estendido. Isso geralmente resulta em alinhamentos mais precisos e sensibilidade geral melhorada (recuperação) com VSEARCH, especialmente para alinhamentos com lacunas.
Binários VSEARCH são fornecidos para GNU/Linux em cinco arquiteturas de processador de 64 bits: x86_64, POWER8 (ppc64le), ARMv8 (aarch64), little-endian RISC-V de 64 bits (riscv64) e little-endian MIPS de 64 bits ( mips64el). Binários também são fornecidos para macOS (versão 10.9 Mavericks ou posterior) em Intel (x86_64) e Apple Silicon (ARMv8), bem como Windows (64 bits, versão 7 ou superior, em x86_64). VSEARCH contém código SIMD nativo para três arquiteturas de processador (SSE2/SSSE3, AltiVec/VMX/VSX, Neon). Além disso, o VSEARCH usa a biblioteca SIMD Everywhere (SIMDe) para permitir a construção em riscv64, mips64el e outras arquiteturas little-endian, mas o desempenho pode ser inferior ao de uma implementação nativa.
CPUSO | GNU/Linux | macOS | Windows |
---|---|---|---|
x86_64 | ✔ | ✔ | ✔ |
ARMv8 | ✔ | ✔ | |
POTÊNCIA8 | ✔ | ||
RISC-V 64 LE | ✔ | ||
MIPS 64 LE | não testado |
Vários pacotes, plugins e wrappers para VSEARCH também estão disponíveis em outras fontes - veja abaixo.
O código-fonte compila corretamente com gcc
(versões 4.8.5 a 14.0) e llvm-clang
(3.8 a 19.0). O código fonte também deve ser compilado em sistemas FreeBSD e NetBSD.
O VSEARCH pode ler diretamente os arquivos de consulta de entrada e de banco de dados compactados usando gzip (.gz) e bzip2 (.bz2) se as bibliotecas zlib e bzip2 estiverem disponíveis.
A maioria dos comandos e opções baseados em nucleotídeos no USEARCH versão 7 são suportados, bem como alguns na versão 8. Os mesmos nomes de opções do USEARCH versão 7 foram usados para tornar o VSEARCH um substituto quase imediato. VSEARCH não oferece suporte a sequências de aminoácidos ou alinhamentos locais. Esses recursos podem ser adicionados no futuro.
Se você não encontrar uma resposta na documentação do VSEARCH, visite o Fórum da Web do VSEARCH para postar uma pergunta ou iniciar uma discussão.
No exemplo abaixo, o VSEARCH identificará sequências no arquivo database.fsa que são pelo menos 90% idênticas na cadeia positiva às sequências de consulta no arquivo queries.fsa e gravará os resultados no arquivo alnout.txt.
./vsearch --usearch_global queries.fsa --db database.fsa --id 0.9 --alnout alnout.txt
Distribuição de código-fonte Para baixar a distribuição de código-fonte de uma versão e compilar o executável e a documentação, use os seguintes comandos:
wget https://github.com/torognes/vsearch/archive/v2.29.1.tar.gz
tar xzf v2.29.1.tar.gz
cd vsearch-2.29.1
./autogen.sh
./configure CFLAGS="-O3" CXXFLAGS="-O3"
make ARFLAGS="cr"
sudo make install
Você pode personalizar o diretório de instalação usando a opção --prefix=DIR
para configure
. Se as bibliotecas de compressão zlib e/ou bzip2 estiverem instaladas no sistema, elas serão detectadas automaticamente e o suporte para arquivos compactados será incluído no vsearch (veja a seção Dependências abaixo). O suporte para arquivos compactados pode ser desabilitado usando as opções --disable-zlib
e --disable-bzip2
para configure
. Uma versão em PDF do manual será criada a partir do arquivo de manual vsearch.1
se ps2pdf
estiver disponível, a menos que seja desativado usando a opção --disable-pdfman
para configure
. Recomenda-se executar o configure com as opções CFLAGS="-O3"
e CXXFLAGS="-O3"
. Outras opções também podem ser aplicadas a configure
, execute configure -h
para ver todas elas. GNU autoconf (versão 2.63 ou posterior), automake e o compilador GCC C++ ( g++
) são necessários para construir o vsearch. A versão 3.82 ou posterior do make
pode ser necessária no Linux, enquanto a versão 3.81 é suficiente no macOS.
Para construir o VSEARCH no Debian e distribuições Linux similares (Ubuntu etc), você precisará dos seguintes pacotes: autoconf, automake, g++, ghostscript, groff, libbz2-dev, make, zlib1g-dev. Inclua libsimde-dev para construir em riscv64 ou mips64el.
Para construir o VSEARCH no Fedora e distribuições Linux semelhantes (RHEL, Centos etc), você precisará dos seguintes pacotes: autoconf, automake, bzip2-devel, gcc-c++, ghostscript, groff-base, make, zlib-devel.
Em vez de baixar a distribuição fonte como um arquivo compactado, você pode clonar o repositório e construí-lo conforme mostrado abaixo. As opções de configure
descritas acima ainda são válidas.
git clone https://github.com/torognes/vsearch.git
cd vsearch
./autogen.sh
./configure CFLAGS="-O3" CXXFLAGS="-O3"
make ARFLAGS="cr"
sudo make install
Distribuição binária : A partir da versão 1.4.0, os arquivos de distribuição binária contendo binários pré-compilados, bem como a documentação, serão disponibilizados como parte de cada lançamento. Os executáveis incluídos incluem suporte para arquivos de entrada compactados por zlib e bzip2 (com arquivos geralmente terminando em .gz
ou .bz2
).
Distribuições binárias são fornecidas para sistemas x86-64 executando GNU/Linux, macOS (versão 10.7 ou superior) ou Windows (64 bits, versão 7 ou superior), sistemas AMDv8 (aarch64) de 64 bits executando GNU/Linux ou macOS, como bem como POWER8 (ppc64le), little-endian RISC-V de 64 bits (risv64) e little endian MIPS de 64 bits (mips64el) sistemas rodando GNU/Linux. Um binário universal do macOS também é fornecido. Além disso, é fornecido um binário x86_64 construído para as distribuições Linux descontinuadas RHEL 7 e CentOS 7. Os outros binários do Linux são construídos no Debian 11 (oldstable, Bullseye). Binários estáticos estão disponíveis para todas as arquiteturas Linux, exceto x86_64, e podem ser usados em sistemas que não possuem todas as bibliotecas necessárias instaladas. O binário do Windows foi construído com compilação cruzada usando Mingw-w64.
Baixe o executável apropriado para o seu sistema usando os seguintes comandos se você estiver usando um sistema Linux ou macOS:
wget https://github.com/torognes/vsearch/releases/download/v{VERSION}/vsearch-{VERSION}-{OS}-{ARCH}.tar.gz
tar xzf vsearch-{VERSION}-{OS}-{ARCH}.tar.gz
Substitua {VERSION}
pelo número da versão do VSEARCH (por exemplo, 2.29.1
), {OS}
pelo sistema operacional de destino ( linux
ou macos
) e {ARCH}
pela arquitetura ( x86_64
, aarch64
, ppc64le
, riscv64
ou mips64el
). Você pode adicionar -static
após {ARCH}
para obter uma versão compilada estaticamente para Linux (exceto x86_64). O nome do binário para as distribuições Linux RHEL 7 e CentOS 7 termina em -ubi7
.
Ou, se estiver usando Windows, baixe e extraia (descompacte) o conteúdo deste arquivo:
https://github.com/torognes/vsearch/releases/download/v{VERSION}/vsearch-{VERSION}-win-x86_64.zip
Linux e Mac : Agora você terá a distribuição binária em uma pasta chamada vsearch-{VERSION}-{OS}-{ARCH}
na qual encontrará três subpastas bin
, man
e doc
. Recomendamos fazer uma cópia ou um link simbólico para o binário vsearch bin/vsearch
em uma pasta incluída em seu $PATH
e uma cópia ou um link simbólico para a página man do vsearch man/vsearch.1
em uma pasta incluída em seu $MANPATH
. A versão PDF do manual está disponível em doc/vsearch_manual.pdf
.
Windows : Agora você terá a distribuição binária em uma pasta chamada vsearch-{VERSION}-win-x86_64
. O executável vsearch é chamado vsearch.exe
. O manual em formato PDF é denominado vsearch_manual.pdf
. Se quiser chamar vsearch.exe
de qualquer janela do prompt de comando, você pode colocar o executável VSEARCH em uma pasta (por exemplo C:Users<yourname>bin
) e adicionar a nova pasta ao Path
do usuário : abra a janela Environment Variables
procurando por ela no menu Iniciar, Edit
variáveis de usuário, adicione ;C:Users<yourname>bin
ao final da variável Path
e salve suas alterações. A distribuição do Windows também inclui os arquivos libbz2.dll
e zlib1.dll
necessários para a leitura de arquivos de entrada compactados. Essas DLLs foram obtidas para mingw-w64 da plataforma MSYS2.
Documentação: O manual do usuário VSEARCH está disponível na pasta man
na forma de uma página man. Uma versão em pdf (vsearch_manual.pdf) será gerada por make
. Para instalar a página de manual manualmente, copie o arquivo vsearch.1
ou crie um link simbólico para vsearch.1
em uma pasta incluída em seu $MANPATH
. O manual em ambos os formatos também está disponível na distribuição binária. O manual em formato PDF (vsearch_manual.pdf) também está anexado à versão mais recente.
Pacote Conda Graças à equipe BioConda, agora existe um pacote vsearch no Conda.
Pacote Debian Graças à equipe Debian Med, agora existe um pacote vsearch no Debian.
Pacote de ports do FreeBSD Graças a Jason Bacon, um pacote de ports vsearch do FreeBSD está disponível. Instale o pacote binário com pkg install vsearch
ou crie a partir do código-fonte com otimizações adicionais.
Galaxy wrapper Graças ao trabalho dos membros da Intergalactic Utilities Commission, o VSEARCH agora faz parte do Galaxy ToolShed.
Pacote Homebrew Graças a Torsten Seeman, um pacote vsearch para Homebrew foi criado.
Pacote Pkgsrc Graças a Jason Bacon, um pacote vsearch pkgsrc está disponível para NetBSD e outros sistemas do tipo UNIX. Instale o pacote binário com pkgin install vsearch
ou crie a partir do código-fonte com otimizações adicionais.
Plugin QIIME 2 Graças à equipe QIIME 2, existe agora um plugin chamado q2-vsearch para QIIME 2.
Com o comando from-uc
no biom 2.1.5 ou posterior, é possível converter dados em um arquivo .uc
produzido pelo vsearch em um arquivo biom que pode ser lido pelo QIIME e outro software. Está descrito aqui.
Observe que o VSEARCH versão 2.2.0 e posterior são capazes de gerar diretamente tabelas OTU no formato biom 1.0, bem como nos formatos clássico e mothur.
Por favor, consulte o documento para obter detalhes:
Rognes T, Flouri T, Nichols B, Quince C, Mahé F. (2016) VSEARCH: uma ferramenta versátil de código aberto para metagenômica. PeerJ 4:e2584 doi: 10.7717/peerj.2584
Compilar o VSEARCH requer GCC ( g++
) ou clang
, make
e as autotools ( ui-auto
em distribuições baseadas em Debian). Opcionalmente, os arquivos de cabeçalho para as duas bibliotecas opcionais a seguir serão necessários se for necessário suporte para arquivos de entrada FASTA e FASTQ compactados com gzip e bzip2:
zlib.h
, disponível como zlib1g-dev
em distribuições baseadas em Debian) (opcional)bzlib.h
, disponível como libbz2-dev
em distribuições baseadas em Debian) (opcional)O VSEARCH verificará automaticamente se essas bibliotecas estão disponíveis e as carregará dinamicamente.
No Windows, essas bibliotecas são chamadas zlib1.dll
e libbz2.dll
. Essas DLLs estão incluídas na distribuição lançada do vsearch 2.29.1 e posterior.
Para criar o arquivo PDF com o manual é necessária a ferramenta ps2pdf. Faz parte do pacote ghostscript
.
O código VSEARCH tem licença dupla sob a Licença Pública Geral GNU versão 3 ou sob a licença BSD de 2 cláusulas. Consulte LICENSE.txt para obter detalhes.
VSEARCH inclui código de vários outros projetos. Agradecemos aos autores por disponibilizarem seu código-fonte.
VSEARCH inclui código do projeto CityHash do Google, de Geoff Pike e Jyrki Alakuijala, fornecendo algumas funções hash excelentes disponíveis sob uma licença do MIT.
VSEARCH inclui código derivado do programa DUST de Tatusov e Lipman que é de domínio público.
VSEARCH inclui código de domínio público escrito por Alexander Peslyak para o algoritmo de resumo de mensagem MD5.
VSEARCH inclui código de domínio público escrito por Steve Reid e outros para o algoritmo de resumo de mensagens SHA1.
A distribuição VSEARCH inclui código do GNU Autoconf que normalmente está disponível sob a Licença Pública Geral GNU, mas pode ser distribuído com a exceção especial de script de configuração do autoconf.
VSEARCH pode incluir código da biblioteca zlib com direitos autorais de Jean-loup Gailly e Mark Adler, distribuído sob a licença zlib.
VSEARCH pode incluir código da biblioteca bzip2 com copyright de Julian R. Seward, distribuído sob uma licença estilo BSD.
O código é escrito principalmente em C++.
Arquivo | Descrição |
---|---|
alinhar_simd.cc | Alinhamento global paralelo SIMD de 1 consulta com 8 sequências de banco de dados |
todospares.cc | Alinhamento global ideal de todos contra todos (sem heurística) |
arco.cc | Código específico da arquitetura (Mac/Linux) |
atributos.cc | Extração e impressão de atributos em cabeçalhos FASTA |
bitmap.cc | Implementação de bitmaps |
quimera.cc | Detecção de quimera |
cidade.cc | Código CityHash |
cluster.cc | Clustering (cluster_fast e cluster_smallmem) |
cpu.cc | Código dependente de recursos específicos da CPU (por exemplo, ssse3) |
cortar.cc | Corte de local de restrição |
db.cc | Lida com a leitura, acesso, etc. do arquivo do banco de dados |
dbhash.cc | Hashing de banco de dados para pesquisas exatas |
dbindex.cc | Indexa o banco de dados identificando kmers únicos nas sequências |
derep.cc | Desreplicação, comprimento total |
derep_prefix.cc | Desreplicação, prefixo |
derep_smallmem.cc | Desreplicação, pequeno uso de memória |
dynlibs.cc | Carregamento dinâmico de bibliotecas de compactação |
eestats.cc | Produzir estatísticas para o comando fastq_estats |
fasta.cc | Analisador de arquivos FASTA |
fasta2fastq.cc | Conversão de FASTA para FASTQ |
fastq.cc | Analisador de arquivo FASTQ |
fastq_chars.cc | Estatísticas FASTQ |
fastq_join.cc | Junção de leituras emparelhadas FASTQ |
fastqops.cc | Estatísticas de arquivo FASTQ etc. |
fastx.cc | Detecção de arquivos FASTA e FASTQ, wrapper para analisadores FASTA e FASTQ |
filtro.cc | Corte e filtragem de sequências em arquivos FASTA e FASTQ |
getseq.cc | Extração de sequências com base em rótulos de cabeçalho |
kmerhash.cc | Hash para kmers usado por fusão de leitura emparelhada |
linmemalign.cc | Alinhador de sequência global de memória linear |
mapas.cc | Várias matrizes de mapeamento de caracteres |
máscara.cc | Mascaramento (PÓ) |
md5.c | Resumo da mensagem MD5 |
mergepairs.cc | Mesclagem de leitura emparelhada |
minheap.cc | Uma implementação minheap para a lista das principais correspondências do kmer |
msa.cc | Alinhamento simples de múltiplas sequências e cálculo de sequência de consenso para clusters |
orientar.cc | Orientar a direção das sequências com base no banco de dados de referência |
otutable.cc | Gere tabelas OTU em vários formatos |
replicar novamente.cc | Rereplicação |
resultados.cc | Resultados de saída em vários formatos (alnout, userout, blast6, uc) |
pesquisa.cc | Implementa pesquisa usando alinhamento global |
pesquisa_exata.cc | Funções de pesquisa exatas |
searchcore.cc | Funções básicas de pesquisa para pesquisa, agrupamento e detecção de quimeras |
sff_convert.cc | Conversão de arquivo de SFF para FASTQ |
sha1.c | Resumo da mensagem SHA1 |
showalign.cc | Produza um alinhamento de forma legível por humanos, dada uma string CIGAR e as sequências |
shuffle.cc | Sequências aleatórias |
sintaxe.cc | Classificação taxonômica usando o método Sintax |
sortbylength.cc | Código para classificação por comprimento |
classificarportamanho.cc | Código para classificação por tamanho (abundância) |
subamostra.cc | Leituras de subamostragem de um arquivo FASTA |
imposto.cc | Análise de informações de taxonomia |
udb.cc | Manipulação de arquivos de banco de dados UDB |
exclusivo.cc | Encontre kmers únicos em uma sequência |
campos de usuário.cc | Código para analisar o argumento da opção userfields |
utilitário.cc | Várias funções utilitárias comuns |
vsearch.cc | Arquivo principal do programa, inicialização geral, lê argumentos e analisa opções, grava informações. |
utilitários/maps.cc | Utilitários, mapas para codificação de nucleotídeos |
utilitários/seqcmp.cc | Utilitários, comparação de sequências |
VSEARCH pode ser compilado com integração zlib ou bzip2 que permite a leitura de arquivos FASTA compactados. As bibliotecas zlib e bzip2 são necessárias para isso.
Todos os relatórios de bugs são muito apreciados. Você pode enviar um relatório de bug aqui no GitHub como um problema (de preferência), postar uma mensagem no Fórum da Web VSEARCH ou enviar um e-mail para [email protected].
O VSEARCH foi projetado para sequências bastante curtas e será lento quando as sequências forem maiores que cerca de 5.000 pb. Isso ocorre porque ele sempre executa o alinhamento global ideal nas sequências selecionadas.
Os principais contribuidores do VSEARCH:
Agradecimentos especiais às seguintes pessoas pelos patches, sugestões, acesso ao computador, etc.:
Cite a seguinte publicação se você usa VSEARCH:
Rognes T, Flouri T, Nichols B, Quince C, Mahé F. (2016) VSEARCH: uma ferramenta versátil de código aberto para metagenômica. PeerJ 4:e2584. doi: 10.7717/peerj.2584
Observe que citar qualquer um dos algoritmos subjacentes, por exemplo, UCHIME, também pode ser apropriado.
Os conjuntos de dados de teste (encontrados no repositório vsearch-data separado) foram obtidos do projeto BioMarks (Logares et al. 2014), do projeto TARA OCEANS (Karsenti et al. 2011) e do Protist Ribosomal Reference Database (PR 2) (Guillou et al. 2011) e do Protist Ribosomal Reference Database (PR 2 ) (Guillou et al. 2011). al. 2013).
Edgar RC (2010) Pesquisa e agrupamento de ordens de magnitude mais rápido que o BLAST. Bioinformática , 26 (19): 2460-2461. doi:10.1093/bioinformática/btq461
Edgar RC (2016) SINTAX: um classificador de taxonomia não bayesiano simples para sequências 16S e ITS. bioRxiv . doi:10.1101/074161
Edgar RC (2016) UNOISE2: correção de erros aprimorada para sequenciamento de amplicon Illumina 16S e ITS. bioRxiv . doi:10.1101/081257
Edgar RC, Flyvbjerg H (2015) Filtragem de erros, montagem de pares e correção de erros para leituras de sequenciamento de próxima geração. Bioinformática , 31 (21): 3476-3482. doi:10.1093/bioinformática/btv401
Edgar RC, Haas BJ, Clemente JC, Quince C, Knight R (2011) UCHIME melhora a sensibilidade e a velocidade de detecção de quimeras. Bioinformática , 27 (16): 2194-2200. doi:10.1093/bioinformática/btr381
Guillou L, Bachar D, Audic S, Bass D, Berney C, Bittner L, Boutte C, Burgaud G, de Vargas C, Decelle J, del Campo J, Dolan J, Dunthorn M, Edvardsen B, Holzmann M, Kooistra W, Lara E, Lebescot N, Logares R, Mahé F, Massana R, Montresor M, Morard R, Not F, Pawlowski J, Probert I, Sauvadet AL, Siano R, Stoeck T, Vaulot D, Zimmermann P & Christen R (2013) O banco de dados Protist Ribosomal Reference (PR2): um catálogo de sequências de rRNA de pequenas subunidades de eucariotos unicelulares com taxonomia curada. Pesquisa de Ácidos Nucleicos , 41 (D1), D597-D604. doi:10.1093/nar/gks1160
Karsenti E, González Acinas S, Bork P, Bowler C, de Vargas C, Raes J, Sullivan MB, Arendt D, Benzoni F, Claverie JM, Follows M, Jaillon O, Gorsky G, Hingamp P, Iudicone D, Kandels-Lewis S, Krzic U, Not F, Ogata H, Pesant S, Reynaud EG, Sardet C, Sieracki ME, Speich S, Velayoudon D, Weissenbach J, Wincker P & the Tara Oceans Consortium (2011) Uma abordagem holística à biologia dos ecossistemas marinhos. PLoS Biologia , 9(10), e1001177. doi:10.1371/journal.pbio.1001177
Logares R, Audic S, Bass D, Bittner L, Boutte C, Christen R, Claverie JM, Decelle J, Dolan JR, Dunthorn M, Edvardsen B, Gobet A, Kooistra WHCF, Mahé F, Not F, Ogata H, Pawlowski J , Pernice MC, Romac S, Shalchian-Tabrizi K, Simon N, Stoeck T, Santini S, Siano R, Wincker P, Zingone A, Richards T, de Vargas C & Massana R (2014) A padronização de assembleias comunitárias raras e abundantes em eucariotos microbianos planctônicos marinhos costeiros. Biologia Atual , 24(8), 813-821. doi:10.1016/j.cub.2014.02.050
Rognes T (2011) Pesquisas mais rápidas no banco de dados Smith-Waterman por paralelização SIMD entre sequências. BMC Bioinformática , 12: 221. doi:10.1186/1471-2105-12-221