El objetivo de este proyecto es crear una alternativa a la herramienta USEARCH desarrollada por Robert C. Edgar (2010). La nueva herramienta debería:
Hemos implementado una herramienta llamada VSEARCH que admite detección de quimeras de novo y basada en referencias, agrupación, desreplicación de longitud completa y prefijo, rereplicación, complementación inversa, enmascaramiento, alineación global por pares todos contra todos, búsqueda de alineación exacta y global, barajado, submuestreo y clasificación. También admite análisis, filtrado, conversión y combinación de lecturas de extremos emparejados de archivos FASTQ.
VSEARCH significa búsqueda vectorizada, ya que la herramienta aprovecha el paralelismo en forma de vectorización SIMD, así como múltiples subprocesos para realizar alineaciones precisas a alta velocidad. VSEARCH utiliza un alineador global óptimo (programación dinámica completa Needleman-Wunsch), a diferencia de USEARCH, que de forma predeterminada utiliza una semilla heurística y un alineador extendido. Esto generalmente da como resultado alineaciones más precisas y una sensibilidad (recuperación) mejorada en general con VSEARCH, especialmente para alineaciones con espacios.
Los binarios de VSEARCH se proporcionan para GNU/Linux en cinco arquitecturas de procesador de 64 bits: x86_64, POWER8 (ppc64le), ARMv8 (aarch64), RISC-V little-endian de 64 bits (riscv64) y MIPS little-endian de 64 bits ( mips64el). También se proporcionan archivos binarios para macOS (versión 10.9 Mavericks o posterior) en Intel (x86_64) y Apple Silicon (ARMv8), así como para Windows (64 bits, versión 7 o superior, en x86_64). VSEARCH contiene código SIMD nativo para tres arquitecturas de procesador (SSE2/SSSE3, AltiVec/VMX/VSX, Neon). Además, VSEARCH utiliza la biblioteca SIMD Everywhere (SIMDe) para permitir la creación de arquitecturas riscv64, mips64el y otras arquitecturas little-endian, pero el rendimiento puede ser inferior al de una implementación nativa.
CPUSO | GNU/Linux | macos | ventanas |
---|---|---|---|
x86_64 | ✔ | ✔ | ✔ |
ARMv8 | ✔ | ✔ | |
PODER8 | ✔ | ||
RISC-V 64 LE | ✔ | ||
MIPS 64 LE | no probado |
Varios paquetes, complementos y contenedores para VSEARCH también están disponibles en otras fuentes; consulte a continuación.
El código fuente se compila correctamente con gcc
(versiones 4.8.5 a 14.0) y llvm-clang
(3.8 a 19.0). El código fuente también debería compilarse en sistemas FreeBSD y NetBSD.
VSEARCH puede leer directamente consultas de entrada y archivos de bases de datos comprimidos usando gzip (.gz) y bzip2 (.bz2) si las bibliotecas zlib y bzip2 están disponibles.
La mayoría de los comandos y opciones basados en nucleótidos en USEARCH versión 7 son compatibles, así como algunos en la versión 8. Se han utilizado los mismos nombres de opciones que en USEARCH versión 7 para hacer de VSEARCH un reemplazo casi directo. VSEARCH no admite secuencias de aminoácidos ni alineamientos locales. Es posible que estas funciones se agreguen en el futuro.
Si no puede encontrar una respuesta en la documentación de VSEARCH, visite el foro web de VSEARCH para publicar una pregunta o iniciar una discusión.
En el siguiente ejemplo, VSEARCH identificará secuencias en el archivo base de datos.fsa que son al menos 90% idénticas en el hilo positivo a las secuencias de consulta en el archivo queries.fsa y escribirá los resultados en el archivo alnout.txt.
./vsearch --usearch_global queries.fsa --db database.fsa --id 0.9 --alnout alnout.txt
Distribución fuente Para descargar la distribución fuente de una versión y compilar el ejecutable y la documentación, utilice los siguientes 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
Puede personalizar el directorio de instalación usando la opción --prefix=DIR
para configure
. Si las bibliotecas de compresión zlib y/o bzip2 están instaladas en el sistema, se detectarán automáticamente y se incluirá soporte para archivos comprimidos en vsearch (consulte la sección Dependencias a continuación). La compatibilidad con archivos comprimidos se puede desactivar utilizando las opciones --disable-zlib
y --disable-bzip2
para configure
. Se creará una versión PDF del manual a partir del archivo del manual vsearch.1
si ps2pdf
está disponible, a menos que se desactive mediante la opción --disable-pdfman
para configure
. Se recomienda ejecutar configure con las opciones CFLAGS="-O3"
y CXXFLAGS="-O3"
. También se pueden aplicar otras opciones para configure
; ejecute configure -h
para verlas todas. Se requiere GNU autoconf (versión 2.63 o posterior), automake y el compilador GCC C++ ( g++
) para compilar vsearch. Es posible que se requiera la versión 3.82 o posterior de make
en Linux, mientras que la versión 3.81 es suficiente en macOS.
Para compilar VSEARCH en Debian y distribuciones de Linux similares (Ubuntu, etc.), necesitará los siguientes paquetes: autoconf, automake, g++, ghostscript, groff, libbz2-dev, make, zlib1g-dev. Incluya libsimde-dev para construir sobre riscv64 o mips64el.
Para compilar VSEARCH en Fedora y distribuciones de Linux similares (RHEL, Centos, etc.), necesitará los siguientes paquetes: autoconf, automake, bzip2-devel, gcc-c++, ghostscript, groff-base, make, zlib-devel.
En lugar de descargar la distribución fuente como un archivo comprimido, puede clonar el repositorio y compilarlo como se muestra a continuación. Las opciones para configure
como se describe anteriormente siguen siendo 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
Distribución binaria : a partir de la versión 1.4.0, los archivos de distribución binaria que contienen archivos binarios precompilados, así como la documentación, estarán disponibles como parte de cada versión. Los ejecutables incluidos incluyen soporte para archivos de entrada comprimidos por zlib y bzip2 (los archivos generalmente terminan en .gz
o .bz2
).
Se proporcionan distribuciones binarias para sistemas x86-64 que ejecutan GNU/Linux, macOS (versión 10.7 o superior) o Windows (64 bits, versión 7 o superior), sistemas AMDv8 de 64 bits (aarch64) que ejecutan GNU/Linux o macOS, como así como POWER8 (ppc64le), RISC-V little-endian de 64 bits (risv64) y MIPS little endian de 64 bits (mips64el) sistemas que ejecutan GNU/Linux. También se proporciona un binario universal de macOS. Además, se proporciona un binario x86_64 creado para las distribuciones de Linux descontinuadas RHEL 7 y CentOS 7. Los otros binarios de Linux se basan en Debian 11 (oldstable, Bullseye). Los binarios estáticos están disponibles para todas las arquitecturas de Linux excepto x86_64, estos se pueden usar en sistemas que no tienen todas las bibliotecas necesarias instaladas. El binario de Windows se creó con compilación cruzada utilizando Mingw-w64.
Descargue el ejecutable apropiado para su sistema usando los siguientes comandos si está usando un sistema Linux o 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
Reemplace {VERSION}
con el número de versión de VSEARCH (por ejemplo, 2.29.1
), {OS}
con el sistema operativo de destino ( linux
o macos
) y {ARCH}
con la arquitectura ( x86_64
, aarch64
, ppc64le
, riscv64
o mips64el
). Puede agregar -static
después de {ARCH}
para obtener una versión compilada estáticamente para Linux (excepto x86_64). El nombre del binario para las distribuciones de Linux RHEL 7 y CentOS 7 termina en -ubi7
.
O, si está utilizando Windows, descargue y extraiga (descomprima) el contenido de este archivo:
https://github.com/torognes/vsearch/releases/download/v{VERSION}/vsearch-{VERSION}-win-x86_64.zip
Linux y Mac : Ahora tendrás la distribución binaria en una carpeta llamada vsearch-{VERSION}-{OS}-{ARCH}
en la que encontrarás tres subcarpetas bin
, man
y doc
. Recomendamos hacer una copia o un enlace simbólico al binario bin/vsearch
de vsearch en una carpeta incluida en su $PATH
, y una copia o un enlace simbólico a la página de manual de vsearch man/vsearch.1
en una carpeta incluida en su $MANPATH
. La versión PDF del manual está disponible en doc/vsearch_manual.pdf
.
Windows : Ahora tendrás la distribución binaria en una carpeta llamada vsearch-{VERSION}-win-x86_64
. El ejecutable de vsearch se llama vsearch.exe
. El manual en formato PDF se llama vsearch_manual.pdf
. Si desea poder llamar a vsearch.exe
desde cualquier ventana del símbolo del sistema, puede colocar el ejecutable de VSEARCH en una carpeta (por ejemplo, C:Users<yourname>bin
) y agregar la nueva carpeta a la Path
del usuario. : abra la ventana Environment Variables
buscándola en el menú Inicio, Edit
variables de usuario, agregue ;C:Users<yourname>bin
al final de la variable Path
y guarde los cambios. La distribución de Windows también incluye los archivos libbz2.dll
y zlib1.dll
necesarios para leer archivos de entrada comprimidos. Estas DLL se obtuvieron para mingw-w64 desde la plataforma MSYS2.
Documentación: El manual del usuario de VSEARCH está disponible en la carpeta man
en forma de página man. make
generará una versión en pdf (vsearch_manual.pdf). Para instalar la página de manual manualmente, copie el archivo vsearch.1
o cree un enlace simbólico a vsearch.1
en una carpeta incluida en su $MANPATH
. El manual en ambos formatos también está disponible con la distribución binaria. El manual en formato PDF (vsearch_manual.pdf) también se adjunta a la última versión.
Paquete Conda Gracias al equipo de BioConda, ahora hay un paquete vsearch en Conda.
Paquete Debian Gracias al equipo de Debian Med, ahora existe un paquete vsearch en Debian.
Paquete de ports de FreeBSD Gracias a Jason Bacon, está disponible un paquete de ports de FreeBSD vsearch. Instale el paquete binario con pkg install vsearch
o compílelo desde el código fuente con optimizaciones adicionales.
Galaxy wrapper Gracias al trabajo de los miembros de la Comisión de Servicios Públicos Intergalácticos, VSEARCH ahora es parte de Galaxy ToolShed.
Paquete Homebrew Gracias a Torsten Seeman, se ha creado un paquete vsearch para Homebrew.
Paquete pkgsrc Gracias a Jason Bacon, hay disponible un paquete vsearch pkgsrc para NetBSD y otros sistemas tipo UNIX. Instale el paquete binario con pkgin install vsearch
o compílelo desde el código fuente con optimizaciones adicionales.
Complemento QIIME 2 Gracias al equipo de QIIME 2, ahora existe un complemento llamado q2-vsearch para QIIME 2.
Con el comando from-uc
en biom 2.1.5 o posterior, es posible convertir datos en un archivo .uc
producido por vsearch en un archivo biom que puede ser leído por QIIME y otro software. Se describe aquí.
Tenga en cuenta que VSEARCH versión 2.2.0 y posteriores pueden generar directamente tablas OTU en formato biom 1.0, así como en los formatos clásico y mothur.
Consulte el documento para obtener más detalles:
Rognes T, Flouri T, Nichols B, Quince C, Mahé F. (2016) VSEARCH: una herramienta versátil de código abierto para metagenómica. PeerJ 4:e2584 doi: 10.7717/peerj.2584
La compilación de VSEARCH requiere GCC ( g++
) o clang
, make
y autotools ( ui-auto
en distribuciones basadas en Debian). Opcionalmente, se requieren los archivos de encabezado para las dos bibliotecas opcionales siguientes si se necesita compatibilidad con archivos de entrada FASTA y FASTQ comprimidos con gzip y bzip2:
zlib.h
, disponible como zlib1g-dev
en distribuciones basadas en Debian) (opcional)bzlib.h
, disponible como libbz2-dev
en distribuciones basadas en Debian) (opcional)VSEARCH comprobará automáticamente si estas bibliotecas están disponibles y las cargará dinámicamente.
En Windows, estas bibliotecas se denominan zlib1.dll
y libbz2.dll
. Estas DLL se incluyen con la distribución publicada de vsearch 2.29.1 y posteriores.
Para crear el archivo PDF con el manual se requiere la herramienta ps2pdf. Es parte del paquete ghostscript
.
El código VSEARCH tiene doble licencia, ya sea bajo la Licencia Pública General GNU versión 3 o bajo la licencia BSD de 2 cláusulas. Consulte LICENCIA.txt para obtener más detalles.
VSEARCH incluye código de varios otros proyectos. Agradecemos a los autores por hacer que su código fuente esté disponible.
VSEARCH incluye código del proyecto CityHash de Google de Geoff Pike y Jyrki Alakuijala, que proporciona algunas funciones hash excelentes disponibles bajo una licencia del MIT.
VSEARCH incluye código derivado del programa DUST de Tatusov y Lipman que es de dominio público.
VSEARCH incluye código de dominio público escrito por Alexander Peslyak para el algoritmo de resumen de mensajes MD5.
VSEARCH incluye código de dominio público escrito por Steve Reid y otros para el algoritmo de resumen de mensajes SHA1.
La distribución VSEARCH incluye código de GNU Autoconf que normalmente está disponible bajo la Licencia Pública General de GNU, pero puede distribuirse con la excepción especial del script de configuración de autoconf.
VSEARCH puede incluir código de la biblioteca zlib con derechos de autor de Jean-loup Gailly y Mark Adler, distribuido bajo la licencia zlib.
VSEARCH puede incluir código de la biblioteca bzip2 con derechos de autor de Julian R. Seward, distribuido bajo una licencia estilo BSD.
El código está escrito principalmente en C++.
Archivo | Descripción |
---|---|
align_simd.cc | Alineación global paralela SIMD de 1 consulta con 8 secuencias de base de datos |
todospares.cc | Alineación global óptima por pares de todos contra todos (sin heurísticas) |
arch.cc | Código específico de arquitectura (Mac/Linux) |
atributos.cc | Extracción e impresión de atributos en encabezados FASTA |
mapa de bits.cc | Implementación de mapas de bits. |
quimera.cc | Detección de quimeras |
ciudad.cc | código CityHash |
cluster.cc | Agrupación en clústeres (cluster_fast y cluster_smallmem) |
cpu.cc | Código que depende de características específicas de la CPU (por ejemplo, ssse3) |
corte.cc | Corte del sitio de restricción |
db.cc | Maneja la lectura, el acceso, etc. del archivo de la base de datos. |
dbhash.cc | Hash de base de datos para búsquedas exactas |
dbindex.cc | Indexa la base de datos identificando kmers únicos en las secuencias. |
derep.cc | Desreplicación, larga duración |
derep_prefix.cc | Desreplicación, prefijo |
derep_smallmem.cc | Desreplicación, uso reducido de memoria |
dynlibs.cc | Carga dinámica de bibliotecas de compresión. |
eestats.cc | Producir estadísticas para el comando fastq_eestats |
fasta.cc | Analizador de archivos FASTA |
fasta2fastq.cc | Conversión de FASTA a FASTQ |
fastq.cc | analizador de archivos FASTQ |
fastq_chars.cc | FASTQ estadísticas |
fastq_join.cc | Unión de lecturas de extremos emparejados FASTQ |
fastqops.cc | Estadísticas de archivos FASTQ, etc. |
fastx.cc | Detección de archivos FASTA y FASTQ, contenedor para analizadores FASTA y FASTQ |
filtro.cc | Recorte y filtrado de secuencias en archivos FASTA y FASTQ |
getseq.cc | Extracción de secuencias basadas en etiquetas de encabezado. |
kmerhash.cc | Hash para kmers utilizado por fusión de lectura de pares |
linmemalign.cc | Alineador de secuencia global de memoria lineal |
mapas.cc | Varias matrices de mapeo de caracteres |
máscara.cc | Enmascaramiento (POLVO) |
md5.c | resumen de mensajes MD5 |
fusionarpares.cc | Fusión de lectura de extremo emparejado |
minheap.cc | Una implementación minheap para la lista de las mejores coincidencias de kmer. |
msa.cc | Alineamiento de secuencias múltiples simple y cálculo de secuencia de consenso para grupos |
orientar.cc | Orientar la dirección de secuencias según la base de datos de referencia. |
otutable.cc | Genera tablas OTU en varios formatos. |
volver a replicar.cc | Replicación |
resultados.cc | Resultados de salida en varios formatos (alnout, userout, blast6, uc) |
buscar.cc | Implementa la búsqueda mediante alineación global. |
buscar_exact.cc | Funciones de búsqueda exacta |
searchcore.cc | Funciones de búsqueda principales para búsqueda, agrupación y detección de quimeras. |
sff_convert.cc | Conversión de archivos SFF a FASTQ |
sha1.c | Resumen de mensajes SHA1 |
showalign.cc | Genere una alineación de forma legible para humanos dada una cadena CIGAR y las secuencias |
barajar.cc | Secuencias aleatorias |
sintaxis.cc | Clasificación taxonómica mediante el método Sintax. |
ordenarporlongitud.cc | Código para ordenar por longitud |
sortbysize.cc | Código para ordenar por tamaño (abundancia) |
submuestra.cc | Lecturas de submuestreo de un archivo FASTA |
impuestos.cc | Análisis de información de taxonomía |
udb.cc | Manejo de archivos de base de datos UDB |
único.cc | Encuentra kmers únicos en una secuencia |
camposdeusuario.cc | Código para analizar el argumento de la opción de campos de usuario |
util.cc | Varias funciones de utilidad comunes |
vsearch.cc | Archivo de programa principal, inicialización general, lee argumentos y analiza opciones, escribe información. |
utils/maps.cc | Utilidades, mapas para codificación de nucleótidos. |
utilidades/seqcmp.cc | Utilidades, comparación de secuencias. |
VSEARCH se puede compilar con integración zlib o bzip2 que le permite leer archivos FASTA comprimidos. Para ello se necesitan las bibliotecas zlib y bzip2.
Todos los informes de errores son muy apreciados. Puede enviar un informe de error aquí en GitHub como problema (preferido), puede publicar un mensaje en el foro web de VSEARCH o puede enviar un correo electrónico a [email protected].
VSEARCH está diseñado para secuencias bastante cortas y será lento cuando las secuencias tengan más de aproximadamente 5000 pb. Esto se debe a que siempre realiza una alineación global óptima en secuencias seleccionadas.
Los principales contribuyentes a VSEARCH:
Un agradecimiento especial a las siguientes personas por parches, sugerencias, acceso a computadoras, etc.:
Cite la siguiente publicación si utiliza VSEARCH:
Rognes T, Flouri T, Nichols B, Quince C, Mahé F. (2016) VSEARCH: una herramienta versátil de código abierto para metagenómica. PeerJ 4:e2584. doi: 10.7717/peerj.2584
Tenga en cuenta que también puede ser apropiado citar cualquiera de los algoritmos subyacentes, por ejemplo, UCHIME.
Los conjuntos de datos de prueba (que se encuentran en el repositorio de datos vsearch separado) se obtuvieron del proyecto BioMarks (Logares et al. 2014), el proyecto TARA OCEANS (Karsenti et al. 2011) y la base de datos de referencia ribosómica Protist (PR 2 ) (Guillou et al. al. 2013).
Edgar RC (2010) Búsqueda y agrupación de órdenes de magnitud más rápido que BLAST. Bioinformática , 26 (19): 2460-2461. doi:10.1093/bioinformática/btq461
Edgar RC (2016) SINTAX: un clasificador de taxonomía no bayesiano simple para secuencias 16S e ITS. bioRxiv . doi:10.1101/074161
Edgar RC (2016) UNOISE2: corrección de errores mejorada para Illumina 16S y secuenciación de amplicones ITS. bioRxiv . doi:10.1101/081257
Edgar RC, Flyvbjerg H (2015) Filtrado de errores, ensamblaje de pares y corrección de errores para lecturas de secuenciación de próxima generación. Bioinformática , 31 (21): 3476-3482. doi:10.1093/bioinformática/btv401
Edgar RC, Haas BJ, Clemente JC, Quince C, Knight R (2011) UCHIME mejora la sensibilidad y la velocidad de detección 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 y Christen R (2013) La base de datos de referencia ribosómica protista (PR2): un catálogo de secuencias de ARNr de subunidades pequeñas de eucariotas unicelulares con taxonomía seleccionada. Investigación 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 y Tara Oceans Consortium (2011) Un enfoque holístico de la biología de los ecosistemas marinos. Biología PLoS , 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 y Massana R (2014) El patrón de conjuntos comunitarios raros y abundantes en eucariotas microbianos planctónicos marinos costeros. Biología actual , 24(8), 813-821. doi:10.1016/j.cub.2014.02.050
Rognes T (2011) Búsquedas más rápidas en bases de datos Smith-Waterman mediante paralelización SIMD entre secuencias. BMC Bioinformática , 12: 221. doi:10.1186/1471-2105-12-221