Este es el comando murasaki que se puede ejecutar en el proveedor de alojamiento gratuito de OnWorks utilizando una de nuestras múltiples estaciones de trabajo en línea gratuitas, como Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS.
PROGRAMA:
NOMBRE
murasaki - calcula anclajes entre múltiples secuencias
SINOPSIS
murasaki [OPCIONES] -p [patrón] seq1.fa seq2.gbk [seq3.raw ...] #calcular anclas entre seq1.fa y seq2.gbk usando [patrón]
mpirun murasaki [OPCIONES] -p [patrón] seq1.fa seq2.gbk [seq3.raw ...] #calcular anclas entre seq1.fa y seq2.gbk usando [patrón] en paralelo a través de MPI
DESCRIPCIÓN
Murasaki genera anclajes basados en todas las secuencias proporcionadas basadas en el usuario suministrado
patrón y tablas hash. Esencialmente, cada base de cada secuencia está enmascarada por el patrón,
formando un dispersores que se utiliza para generar un hash. La ubicación de la semilla se almacena en el
hachís mesa. Una vez que todas las semillas han sido hash y almacenadas, Murasaki escanea la tabla hash,
generando anclas para todas las semillas coincidentes. Un ancla se refiere a un conjunto de intervalos a través de un
subconjunto de las secuencias de entrada. Estos se almacenan en nombre .anchors archivos, y se describe en
"FORMATOS DE ARCHIVO". Por defecto, los anclajes se extienden al máximo hasta su mínimo por pares
La puntuación de alineación sin huecos cae por debajo de un umbral de la misma manera que el parámetro X-drop
en búsquedas BLAST y similares a BLAST.
PATRONES
Usos de Murasaki espaciado dispersores . a considerar semillas. A espaciado dispersores patrón is
normalmente se expresa como una cadena de unos y ceros que necesariamente comienzan y terminan con un 1. 0s
indican que esta base se considera parte de la semilla, mientras que las bases en las posiciones 0 son
no. Por ejemplo, con un patrón "1011", la secuencia "ACGT" coincidiría con las secuencias "AGGT"
y "ATGT" pero no "ACTT". El número de 1 en el patrón se conoce como el "peso" del
patrón, y el número de 1 y 0 combinados es la "longitud" del patrón. Murasaki
permite el uso de cualquier patrón arbitrario expresado como una cadena de 1 y 0, y también
interpreta patrones de la forma "x: y" en el sentido de un "patrón aleatorio de peso x y longitud y."
La elección del patrón obviamente tiene un impacto en la sensibilidad y la especificidad, pero si
un patrón es "mejor" que otro depende de la aplicación y las secuencias de entrada
bajo consideración. Calcular "patrones de semillas espaciados de máxima sensibilidad" es una
problema computacionalmente difícil y hay una serie de artículos de investigación que describen
varios métodos de aproximación ("LECTURA RELACIONADA"). En general, sin embargo, "más pesado"
Los patrones de semillas espaciados son menos sensibles, pero más específicos, que las semillas más ligeras.
Como anécdota, encontramos que las semillas con un peso de aproximadamente el 60% al 75% (con longitudes de alrededor de
24 para bacterias y 36 a 48 para mamíferos) son buenas para la mayoría de las aplicaciones. Extremadamente
especies similares (por ejemplo, humanos y chimpancés) se benefician de semillas más largas y pesadas.
Hachís Las funciones
Las funciones hash (así como los parámetros hash) se generan automáticamente en función del sistema.
entorno y secuencias de entrada. Básicamente, existen dos tipos de funciones hash
disponible en Murasaki: hashes adaptativos y criptoraficos. Los hashes adaptativos son XOR
combinaciones de varios cambios bit a bit de la semilla diseñada mediante el análisis de espaciado dispersores
patrón para maximizar la entropía del hash resultante. Hay hash criptográficos disponibles
a través de la biblioteca CryptoPP y utilice el toda patrón de semilla espaciado para generar un hash usando
uno de los hash criptográficos comunes como MD5 o SHA-1. Las funciones hash adaptativas son
casi siempre más rápido y más eficiente que MD5 y SHA-1, pero el criptográfico
Las funciones están disponibles para referencia y pueden ser útiles como alternativa en el improbable
caso de que se trate de un entorno en el que el hasher adaptativo no es adecuado (para
ejemplo, una secuencia que consta solo de A y T (dejando 1 de cada 2 bits unificado)).
MEMORIA ESCALADA
Murasaki puede llevar mucha memoria. Almacenar la ubicación de cada semilla en la tabla hash es
la parte más costosa de la operación, que requiere aproximadamente "ceil (log_2 (N))" bits por
semilla donde "N" es la longitud total de la secuencia. Las ubicaciones se almacenan, de forma predeterminada, en un
formato bitpacked para acercarse al mínimo teórico. El segundo elemento más costoso es el
estructura de tabla hash, donde cada cubo lleva una pequeña sobrecarga y no se utilizan simplemente
espacio desperdiciado. Más cubos de tabla hash (es decir, una tabla hash más larga) disminuye el esperado
número de colisiones, lo que lleva a un tiempo de ejecución más rápido. Por lo tanto, Murasaki intenta usar
tantos depósitos como sea posible inspeccionando la memoria del sistema disponible y usando tanto como sea posible
puede mientras aún almacena todas las ubicaciones de semillas. Si esta escala automática es
ineficaz, establecer el tamaño de la tabla hash directamente a través de las opciones --hashbits | -b puede forzar
un tamaño de tabla hash específico. Si la memoria de una computadora es insuficiente para almacenar el
tabla hash deseada, la PARALELIZACIÓN se puede utilizar para distribuir la tabla hash en
varias computadoras.
PARALELIZACIÓN
Murasaki está diseñado para ejecutarse en paralelo utilizando MPI. Consulte la documentación del
variaciones específicas de su implementación MPI, sin embargo, en general, el método de ejecución
parece:
mpirun [opciones de MPI] murasaki [opciones de murasaki] -p [patrón] [seq1 ...]
Murasaki en paralelo divide el número de procesadores disponibles (NP) en dos grupos:
nodos hasher y nodos de almacenamiento. Los nodos de almacenamiento dividen la tabla hash entre cada
ellos mismos, siendo cada uno responsable de una parte diferente de la mesa. Los nodos hasher se dividen
la secuencia de entrada entre ellos, cada uno con una parte separada de la entrada
secuencia y pasar la ubicación de la semilla al nodo de almacenamiento apropiado para su almacenamiento. Cuando
todos los nodos hasher han terminado de hacer hash, los nodos de almacenamiento escanean su porción de hash
tabla y pasar conjuntos coincidentes de semillas a un nodo hasher donde se ensamblan en
anclajes y extendidos. Finalmente, todos los nodos hasher combinan sus conjuntos de ancla independientes.
en un conjunto final en iteraciones "ceil (log_2 (H))" (donde "H" es el número de hasher
nodos), con cada hasher número de nodo 2h pasando sus anclas a hasher número 2h-1 en cada
iteración.
Debido a que casi ninguno de los pasos de paralelización requiere comunicación entre all nodos
y cada semilla y cada ancla se pueden procesar en paralelo, Murasaki escala muy bien en
paralelo, funcionando aproximadamente el doble de rápido cuando hay el doble de nodos disponibles.
Además, la tabla hash se hace crecer automáticamente para aprovechar la combinación
memoria de varias máquinas.
OPCIONES
La mayoría de las opciones se pueden especificar en su forma larga (por ejemplo, "--directory out" o
"--directory = out") o forma abreviada (por ejemplo, "-dout"). Opciones marcadas por esperar una cadena,
un entero un flotante y un valor booleano ("sí / activado / verdadero / 1" para verdadero,
"no / desactivado / falso / 0" para falso). La mayoría de los valores booleanos pueden omitir el valor, alternando el valor de
lo que fuera a lo contrario.
Murasaki tiene muchas opciones. Aquí los hemos separado en categorías para ayudar
distinguir el alcance de las diversas opciones, sin embargo, en determinadas situaciones, determinadas opciones
elecciones pueden tener consecuencias anticipadas y, por supuesto, en última instancia, si la salida especificada
is enorme, el tiempo de ejecución requerido será necesariamente long. Es un error pensar que
todo lo que esté fuera de las "opciones de ajuste" en la sección Rendimiento no tiene relación con
rendimiento.
Comercial parámetro relacionado opciones
Estas opciones dan forma a lo que se considera un "ancla".
--patrón | -p
especifica el patrón de semilla (por ejemplo, 11101001010011011). usando el formato
C <[ : ]> genera automáticamente un patrón de peso aleatorio
y longitud
--repeatmask | -r
Omita la repetición de datos enmascarados (es decir, atgc en minúsculas). Tenga en cuenta que algunos archivos de secuencia
distribuido puramente en minúsculas.
--filtro de semillas | -f
Omita las semillas que ocurren más de N veces. Excepcionalmente lento. Consulte --hashfilter para
aproximación más rápida.
--hashfilter | -m
Como --seedfilter pero funciona con claves hash en lugar de semillas. Puede causar alguna garantía
daño a semillas por lo demás únicas, pero es más rápido.
--skipfwd | -F
No haga hash / haga coincidir las hebras hacia adelante.
--skiprev | -R
No haga hash / haga coincidir las hebras del complemento inverso.
--skip1to1 | -1
Omitir coincidencias a lo largo de la línea 1: 1 (bueno para compararlo con uno mismo).
--hashonly | -Q
Solo hash. Sin salida de ancla, solo estadísticas.
--hashskip | -S
Hashes cada n bases. El valor predeterminado es 1 (es decir, hash en todas las posiciones). No suministrando ninguno
El argumento incrementa la cantidad omitida en 1.
--unir | -j
Unir anclajes dentro de n bases entre sí (predeterminado: 0). Especificar una D negativa implica
-D * longitud del patrón.
--bitscore | -B
alterna la computación de un puntaje de bits para todos los anclajes (por defecto está activado).
--seedterms | -T
alterna la retención de términos semilla (por defecto está desactivado). Estos son necesarios para la informática
Puntuaciones TF-IDF).
--sectime | -e
Mostrar siempre los tiempos en segundos en lugar del estilo "1d 3h 45m 5s" legible por humanos
veces.
--mergefilter | -Y
Filtrar coincidencias que causarían más de D muchas anclas por generar
de 1 semilla (por defecto -Y100). Use -Y0 para deshabilitar.
--scorefilter
Establezca una puntuación mínima sin huecos para las semillas.
--rifts | - /
Permitir que los anclajes omitan secuencias D (predeterminado 0).
- islas | -%
Igual que --rifts = SD (donde S es el número de secuencias de entrada).
--fuzzyextend | -z
Habilite (predeterminado) o deshabilite la extensión difusa (es decir, alineación sin espacios) de los anclajes.
--fuzzyextendlosslimit | -Z
Establezca el límite en el que dejar de extender los golpes difusos (es decir, el parámetro BLAST X).
--gappedanchors
Utilice anclajes con espacios (verdadero) o sin espacios (falso (predeterminado)).
--puntaje por par mínimo
Ancle la puntuación por par mínimo cuando sea apropiado (predeterminado). La alternativa es
media aritmática (rara vez útil, pero teóricamente más rápido). = artículo --rifts | - /
Permitir que los anclajes omitan secuencias D (predeterminado 0).
- islas | -%
Igual que --rifts = SD (donde S es el número de secuencias de entrada).
--fuzzyextend | -z
Habilite (predeterminado) o deshabilite la extensión difusa (es decir, alineación sin espacios) de los anclajes.
--fuzzyextendlosslimit | -Z
Establezca el límite en el que dejar de extender los golpes difusos (es decir, el parámetro BLAST X).
--gappedanchors
Utilice anclajes con espacios (verdadero) o sin espacios (falso (predeterminado)).
--puntaje por par mínimo
Ancle la puntuación por par mínimo cuando sea apropiado (predeterminado). La alternativa es
media aritmática (rara vez útil, pero teóricamente más rápido).
Salida opciones
Estas opciones afectan principalmente qué datos se generan y dónde.
--directorio | -d
directorio de salida (predeterminado: salida)
--nombre | -n
nombre de alineación (predeterminado: prueba)
--repeatmap | -i
Alterna el mantenimiento de un mapa repetido cuando se usa --mergefilter (predeterminado en yes).
--histograma | -H
Nivel de cálculo del histograma: (-H solo implica -H1)
0 - sin histograma (predeterminado)
1 - datos de histograma básico de tamaño de depósito / recuento de depósitos
2 - puntuaciones basadas en cubos para anchors.detils
3 - datos de recuento por cubeta
4 - datos de recuento por cubeta + por patrón
Cualquier valor por encima de 2 es puramente exploratorio y puede resultar en archivos de salida masivos.
--tfidf | -k
Realice una puntuación tfidf precisa desde dentro de murasaki (requiere memoria adicional en el ancla
tiempo generacional). El valor predeterminado es no.
La optimización del rendimiento opciones
Estas opciones afectan principalmente al rendimiento y no afectan (en general) a la producción.
--quickhash | -q
especificar una función hash:
0 - adaptable con S-boxes (predeterminado cuando hay suficiente tabla hash de sobra)
1 - no empaque bits para hacer hash (use solo la primera palabra)
2 - usa ingenuamente el primer patrón de hashbits
3 - adaptivevely encuentra un buen hash (predeterminado)
** hashes experimentales de CryptoPP **
4-MD5
5 - SHA1
6 - Hidromasaje
7 - CRC-32
8 - Adler-32
Nota: 3 y 0 son las únicas funciones hash "recomendadas" y las únicas
seleccionado automáticamente. Los demás se proporcionan simplemente como referencia. 1, 7 y 8
ni siquiera se espera que utilicen todo el espacio hash.
--hashbits | -b
use hash de bits D (para n de 1 a WORDSIZE. predeterminado 26)
--hashtype | -t
seleccione la estructura de datos de la tabla hash para usar:
OpenHash: empaquetado de subpalabras abiertas de hashbits (predeterminado cuando hay mucho hash
mesa de sobra)
EcoHash: empaquetado de subpalabras encadenadas de hashbits (predeterminado)
ArrayHash - malloc / realloc (rápido pero propenso a la fragmentación)
MSetHash: exorbitante de la memoria, casi inútil.
--sondeo
0 - lineal, 1 - cuadrático (predeterminado). Solo aplicable para --hashtype = OpenHash.
--hitfilter | -h
Número mínimo de visitas que se generarán como ancla (predeterminado 1). En PatternHunter esto
es 2.
--seed | -s
Semilla de números aleatorios para algoritmos no deterministas (es decir: función hash adativa
Generacion). Si está haciendo comparaciones de rendimiento, probablemente sea imperativo
que usa la misma semilla para cada ejecución de la misma configuración. Se obtiene el valor predeterminado
desde hora() (es decir, segundos desde 1970).
--memoria | -M [ | ]
Establezca la cantidad objetivo de memoria total (en gb o como% de memoria total).
--reverseotf | -o
Genere complemento inverso sobre la marcha (predeterminado en activado). Desactivar esto de las precomputaciones
todas las hebras del complemento inverso y las almacena en la memoria, que rara vez proporciona una
mejora del rendimiento mensurable.
--binaryseq
Habilitar (predeterminado) o deshabilitar la lectura / escritura de secuencia binaria
Adaptado hachís función relacionado:
Opciones de rendimiento relacionadas con la generación de funciones hash adaptativas.
--hasherFairEntropy
Utilice una estimación de entropía más equilibrada (predeterminado: sí).
--hasherCorrelationAdjust
Ajuste las estimaciones de entropía para fuentes cercanas asumiendo alguna correlación (predeterminado: sí).
--hasherTargetGACycles
Corte del ciclo del algoritmo genético de generación de función hash adaptativa.
--hasherEntropyAgro
Qué tan agresivo ser en la búsqueda de funciones hash de máxima entropía (requiere un valor real.
el predeterminado es 1).
MPI Específico:
--hashers | -A [ | ]
Especifique el número de procesos que se utilizarán como hashers (solo se aplica a MPI. Si un
número entre 0 y 1 se refiere a una relación de np).
--localhash | -K
Realice hash localmente en cada nodo de almacenamiento en lugar de enviarlo a través de la red
(útil para redes lentas).
--mpidistro | -L
Alterna el uso de MPI para distribuir datos de secuencia (si la secuencia está disponible en
disco local en cada nodo y luego apagar esto puede potencialmente acelerar la inicial
carga de secuencia).
--waittoanchor | -w
Posponer el cálculo del ancla real hasta que se hayan recibido todos los conjuntos de ubicaciones (como
opuesto a intentar trabajar entre recibir paquetes de semillas).
--buffers | -u
Número máximo de búferes sin terminar que se pueden permitir mientras se transmite el mensaje (0 significa
ilimitado). El valor predeterminado se establece en función del número de nodos que participan. MPI puede fallar
o realizar muy mal si este valor es demasiado alto.
--nobuffers | -U
Igual que --buffers = 1.
--bigfirst | -I
Primero, asigne hash a nodos de memoria grandes.
--hostbalance | -l
En caso afirmativo (predeterminado): distribuya los hash de manera uniforme entre todos los nodos.
Si no: ignore el nombre de host al asignar trabajos.
--memorybalance | -a
En caso afirmativo (predeterminado): equilibre el almacenamiento de hash entre nodos según la cantidad de
RAM.
Si la respuesta es no: distribuya el almacenamiento gradualmente. Esto es más probable que logre tiempos de ejecución óptimos, pero
puede que no utilice la memoria de manera tan eficiente.
--distmerge | - <
en caso afirmativo (predeterminado): durante el paso de fusión, los nodos de almacenamiento envían semillas a cualquier
picador.
si no: envíe todas las semillas a un solo nodo.
--distcollect | ->
en caso afirmativo (predeterminado): recopila datos de anclaje de todos los hashers.
si no: envíe todas las semillas solo al nodo de ensamblaje final.
- salida directa
si es así (predeterminado): cada rango redirige su stdout / stderr a un archivo separado
(murasaki-mpiout-N).
si no: haga lo que viene naturalmente (es decir: administrado por mpirun (para OpenMPI vea
--output-filename y --tag-output en mpirún(1))).
--keepstdoe
No borre los archivos murasaki-mpiout si tiene éxito.
--sysvipc | -V
Utilice System V IPC para negociar regiones de memoria compartida (ahorra memoria cuando se ejecuta un host
múltiples nodos). El valor predeterminado es verdadero.
Universal opciones:
--verbose | -v
Aumenta la verbosidad.
--versión | -V
Imprime la información de la versión y se cierra.
--ayuda | -?
Imprime un mensaje de ayuda y se cierra.
ARCHIVO FORMATOS
Murasaki tiene una amplia gama de archivos de salida, la mayoría de los cuales están diseñados para ser
intuitivo. Todos los archivos de salida tienen el prefijo del valor del parámetro --name. El primario
Los formatos de archivo de salida se describen aquí. Los archivos se basan en líneas y están delimitados por tabulaciones a menos que
especificado de otra manera.
.seqs
El .seqs muestra qué secuencias se usaron como entrada, 1 por línea. Este archivo es utilizado por
varios programas junto con el archivo .anchors, por lo que en general es importante que
el contenido refleja los archivos de secuencia correctos. Mover resultados de anclaje entre computadoras
puede resultar en un cambio de rutas, requiriendo que el usuario actualice el archivo .seqs. Como un
alternativa, usar siempre rutas relativas puede aliviar este problema.
.anclajes archivos
Estos archivos son 1 ancla por línea, con 3 tuplas por secuencia. Cada touple representa el
coordenadas de inicio y parada y hebra del intervalo anclado en cada secuencia. los
El orden de secuencia coincide con el del orden del archivo .seqs. Las coordenadas están estructuradas
tal que 1 se refiere a la primera base de la secuencia, 2 a la segunda, etc. Negativo
Los valores se refieren a la secuencia del complemento inverso donde -1 es el pasado base del reverso
secuencia del complemento (es decir, la primera base del complemento en la secuencia directa). La "hebra"
elemento es un '+' o '-' que simplemente coincide con el signo de las coordenadas (esto es redundante
información, pero se mantiene para simplificar el análisis o el filtrado).
Por ejemplo:
1 18 + -1-18 -
Esta línea describe un ancla donde las primeras 18 bases de la primera secuencia coinciden con el
primeras 18 bases del complemento inverso de la segunda secuencia.
.anchors.detalles
Este es un formato de archivo anticuado, pero utilizado por GMV para calcular estadísticas como TF-IDF
puntuaciones, y se ha mantenido por esa razón. El archivo .anchors.details tiene el mismo
formato e información como el archivo .anchors, sin embargo, después de los pares de anclaje hay dos
términos: una puntuación y una coma (,) lista delimitada de pares de términos y recuentos (escritos
"término: contar"). Los datos de puntuación y recuento pueden variar según el "--histograma"
opciones de opciones.
.anclas.bitscore
El término "bitscore" aquí es un nombre inapropiado, pero se mantiene por razones históricas. En realidad,
este archivo contiene el número medio de bases coincidentes y la longitud de cada ancla
(correspondiente línea por línea al archivo .anchors).
.stats.tfidf
Contiene puntuaciones de anclaje TF-IDF (correspondientes línea por línea al archivo .anchors).
.histograma
Contiene un histograma simple del uso de la tabla hash. El primer campo es el tamaño del depósito,
y el segundo es la frecuencia. Por ejemplo, un archivo .histogram como este:
1 24
2 1
Indicaría que había 24 cubos de hash que almacenaban solo 1 ubicación (es decir, 24 únicos
semillas) y 1 cubo de hash almacenado en 2 ubicaciones (es decir, 1 semilla que coincidió con 2 ubicaciones (o 2
semillas no coincidentes que resultaron en una colisión de hachís)).
.opciones
Mantiene un registro de las opciones utilizadas al ejecutar Murasaki.
repite
El archivo .repeats almacena un registro de "repeticiones" según lo definido por la opción --mergefilter
(es decir, semillas que habrían inducido más anclajes de los permitidos). En este archivo, cada
El registro de repetición está separado por una línea en blanco. Un registro repetido se ve así:
R: G.GCCTTT.T.ACT.CACAA..AT
0: 2145540494 -425039256-113794380 1998323403
1: 2480929222-1874514626 2543723555-2550045172
La primera línea (siempre con el prefijo "R:") muestra la semilla repetida en sí (donde. Son los
bases enmascaradas por el patrón). Las líneas siguientes muestran dónde se produjeron estas semillas en el
secuencias de entrada (en la primera (0) y segunda (1) secuencias). Tenga en cuenta que si no hay
hits en una secuencia particular, no incluye una línea en blanco para esa secuencia. Para
ejemplo:
R: G.GCCTTT.T.ACT.CACAA..AT
0: 2145540494 -425039256-113794380 1998323403
2: 2480929222-1874514626 2543723555-2550045172
también es un archivo .repeats válido.
Utilice murasaki en línea utilizando los servicios de onworks.net