Formatos de salida¶
get_MNV puede escribir archivos de metadatos TSV, VCF, BCF y JSON.
Salida TSV por defecto¶
Nombre de archivo por defecto:
<input_name>.MNV.tsv
Con --sample all se escribe un archivo por muestra, con la muestra en el
nombre:
<input_name>.sample_<MUESTRA>.MNV.tsv
Los caracteres que no pueden aparecer en un nombre de archivo se sustituyen, así
que una muestra llamada sample/1:bad pasa a ser sample_1_bad. Si dos muestras
quedan con el mismo nombre tras esa sustitución escribirían en un solo archivo,
así que la ejecución se detiene y las nombra en vez de dejar que una sobrescriba
a la otra.
Cada archivo contiene las variantes que lleva esa muestra, no todas las de la
cohorte. Un registro enumera todos los ALT vistos en ese sitio en el conjunto de
muestras, así que el GT de la muestra decide cuáles le corresponden: un
genotipo 0/0 no lleva ninguno, 1/2 lleva los dos alelos de un registro
multialélico, y un genotipo ausente o sin llamada (./.) conserva el alelo,
porque desconocido no es lo mismo que ausente. Una muestra que no lleva nada
recibe un archivo solo con la cabecera. Dos sustituciones contiguas se juntan en
un MNV únicamente para las muestras que llevan las dos.
Usa este formato para hojas de cálculo, análisis posteriores e inspección rápida.
Columnas principales:
| Columna | Significado |
|---|---|
Chromosome |
Nombre del contig |
Gene |
Nombre del gen o de la característica. Las variantes intergénicas se marcan como intergenic. |
Positions |
Una posición para los SNP y varias posiciones separadas por comas para los MNV, en orden genómico ascendente en ambas hebras. Las columnas por SNV (Reference Bases, Base Changes, SNP AA Changes, SNP Codon, Event Components y las de soporte de lecturas) son arrays paralelos en ese mismo orden. |
Reference Bases |
Bases de referencia en esas posiciones. |
Base Changes |
Bases alternativas. |
AA Changes |
Cambio de aminoácido tras combinar todos los SNV del codón. |
SNP AA Changes |
Cambio de aminoácido para cada SNV considerado por separado. |
Local AA Changes |
Numeración local al exón, que es lo que get_MNV reportaba antes de la 1.1.2. Idéntica a AA Changes cuando la característica no tiene contexto de transcrito (un TSV de genes, un CDS procariota o de un solo exón, y el primer exón de un modelo empalmado), y distinta en los exones posteriores de un transcrito empalmado, donde AA Changes cuenta desde el inicio de la proteína y esta desde el inicio del exón. |
Local SNP AA Changes |
Cambios de aminoácido por SNP en numeración local. |
Variant Type |
SNP, MNV, SNP/MNV o INDEL. |
Change Type |
Sinónimo, no sinónimo, codón de parada ganado/perdido, desconocido, etc. |
Reference Codon |
Codón original, en la orientación del propio transcrito: en un gen de hebra menos son las bases de la hebra codificante, no las genómicas, de modo que el codón siempre traduce al aminoácido que aparece a su lado. |
SNP Codon |
Codón con las sustituciones SNP individuales, misma orientación que Reference Codon. |
MNV Codon |
Codón con todas las sustituciones agrupadas, misma orientación que Reference Codon. |
Event Class |
Clase canónica del evento de alelo: snp, mnv, insertion, deletion, delins, complex_indel o symbolic. |
Event Components |
Descomposición REF/ALT como SNV:10:A>G, INS:10:+T o DEL:11-12:TG. |
SO Term |
Término de consecuencia Sequence Ontology (missense_variant, synonymous_variant, stop_gained, start_lost, frameshift_variant, inframe_deletion, intergenic_variant, …). Las variantes cerca de una unión exón-exón interna de un transcrito con splicing llevan además un término de splice: splice_donor_variant / splice_acceptor_variant (las dos bases intrónicas esenciales de cada extremo del intrón, HIGH) o splice_region_variant (las 3 primeras o las 3 últimas bases del exón, o las bases 3ª-8ª del intrón, LOW). Un cambio exónico cerca de una unión se combina con su consecuencia codificante, p. ej. missense_variant&splice_region_variant para una sustitución y frameshift_variant&splice_region_variant para un indel, en una sola fila y no en dos. Una unión exige un intrón real: los segmentos CDS contiguos o solapados (una unión por deslizamiento ribosómico, como ORF1ab de SARS-CoV-2) forman una pauta de lectura continua y no llevan términos de splice. Una variante dentro de un intrón pero lejos de sus sitios de splice es intron_variant (MODIFIER), reportada contra su gen y no como intergénica, y una variante en una feature declarada no codificante es non_coding_transcript_exon_variant (MODIFIER), sin cambio de aminoácido. |
Impact |
Impacto previsto según convenciones SnpEff/VEP: HIGH, MODERATE, LOW o MODIFIER. Una consecuencia combinada splice/codificante conserva el impacto más severo. |
Grantham |
Distancia de Grantham y categoría de conservación de un cambio missense (p. ej. 177 (radical)); - si es sinónimo, sin sentido o no codificante. |
MNV Consequence Shift |
Cómo compara el MNV combinado con sus SNV individuales: MNV-gained (más severo que cualquier SNV solo, que es lo que se pierden los anotadores por-SNV), MNV-masked (un SNV sin sentido rescatado por su vecino) o Concordant. - para SNV individuales. |
DBS Class |
Clase de sustitución de doblete (DBS) al estilo COSMIC para un MNV de dos sustituciones de una base adyacentes, p. ej. CC>TT (colapsado por complemento reverso, así que GG>AA se reporta como CC>TT). - para SNV individuales, indels y MNV no adyacentes o de 3 SNV. |
Declared Phase |
La fase que declaró el VCF de entrada para los alelos de esta fila, como cis:12345 (veredicto y conjunto de fase PS) o solo cis si el llamador faseó sin conjunto. Se lee de un GT separado por |; un genotipo con / es el llamador diciendo que no resolvió la fase, y sale como -. Se añade |contradicted-by-reads cuando el BAM no le deja sitio: un cis declarado que ni una sola lectura completa lleva, o un trans declarado que llevan todas las lecturas informativas. Es la afirmación del llamador, no una observación; las columnas de fasing de al lado son la evidencia. - para filas de una sola posición y para entrada sin fasear. |
MNV Phasing Support |
Soporte de fasing (ligamiento) derivado del BAM: entre las lecturas que observan todas las posiciones del codón y llevan el SNV constituyente menos soportado, la fracción que además lleva el haplotipo MNV completo. 1.0000 = co-ocurrencia perfecta (un haplotipo real); valores bajos indican que los SNV caen mayoritariamente en moléculas distintas (una coincidencia en el mismo codón, no un MNV real). 0.0000 es un hallazgo: hubo lecturas que cruzaron el codón y ninguna llevaba ambos. - significa que no se pudo responder: sin --bam, un SNV suelto, o ninguna lectura que alcance de un extremo a otro del codón (habitual cuando un codón cruza un intrón y los fragmentos son más cortos que él). |
Haplotype LD |
Desequilibrio de ligamiento (D') a nivel de lectura entre las variantes que esta fila afirma que van juntas, sobre las moléculas que las observaron. Cubre los dos tipos de fila con varias variantes: un MNV de codón y un haplotipo local de indel. Un ratio de co-ocurrencia no puede separar un haplotipo de una casualidad de frecuencias: dos sustituciones que están cada una en el 90% de las moléculas se encuentran juntas en el 81% por pura aritmética, y el ratio eso lo llama 0.9. D' mide el exceso sobre lo que predicen esas dos frecuencias, normalizado por el máximo que podría haber sido. +1 = van juntas todo lo que sus frecuencias permiten, así que el MNV es un haplotipo real. ~0 = co-ocurren exactamente lo que predice el azar, así que solo comparten codón. -1 = se excluyen: ambas presentes, nunca en la misma molécula, lo que en una población haploide son dos linajes en competencia y no una variante. Con tres o más variantes decide el par más débil, porque la fila afirma que una molécula las lleva todas. Responde a una pregunta distinta que el recuento de al lado: el recuento es cuántas moléculas son esa combinación, mientras que D' es si sus variantes co-ocurren más de lo que predicen sus propias frecuencias, así que un haplotipo con pocas moléculas puede estar perfectamente ligado y uno con muchas puede ser una casualidad. - cuando ninguna molécula observó las variantes juntas, o cuando una de ellas está en todas esas moléculas o en ninguna, que no deja nada que correlacionar. Solo aparece con --bam. |
Haplotype LD p |
Valor p exacto de Fisher a dos colas para esa tabla, para que un D' de 1.0 con cuatro moléculas no se lea igual que uno con cuatrocientas. - en los mismos casos que la columna anterior. Solo aparece con --bam. Mira Ligamiento. |
MNV Phasing Reads |
Sobre cuántas lecturas se calculó MNV Phasing Support, para que un 1.0000 con 3 lecturas no se lea igual que uno con 300. Sale - exactamente cuando esa columna sale -, que no es el mismo criterio que el de las dos columnas de ligamiento de al lado. Solo aparece con --bam. |
Frameshift Phasing |
Lo que dijeron las lecturas sobre si este codón comparte moléculas con cada indel aguas arriba, como trans:1234:0/18: el veredicto, la posición del indel, y las lecturas en cis sobre las que podían responder. Varios se unen con |. Un codón sin la marca de frameshift se ve igual tanto si las lecturas probaron que el indel está en otras moléculas como si nadie preguntó; - es el segundo caso. Solo aparece con --bam. |
NMD Prediction |
Predicción de decaimiento mediado por sin sentido (NMD) para un stop prematuro según la regla de los 50 nt: NMD-triggering cuando el PTC está a más de 50 nt aguas arriba de la última unión exón-exón, NMD-escaping cuando está en el último exón o a menos de 50 nt de esa unión. - para variantes sin stop prematuro y para transcritos sin unión exón-exón. Requiere un modelo de CDS con splicing (transcrito GFF/GTF) cuyos segmentos estén separados por intrones reales; un único segmento CDS, o segmentos unidos por deslizamiento ribosómico, no tiene unión. |
HGVS g. |
Descriptor HGVS genómico: g.100A>G para un SNV, el bracket de alelo g.[28G>T;30T>A] para un MNV, y g.101_102del / g.100_101insTG / g.101delinsC para indels. No hace 3'-shifting (usa la posición del alelo de entrada) y no lleva prefijo de accesión de referencia. |
HGVS c. |
Descriptor HGVS codificante para una sustitución codificante, numerado desde el inicio del CDS con bases de la hebra codificante: c.30A>G (SNV) o el bracket de alelo c.[28G>A;30T>C] (MNV). - para indels y variantes no codificantes; el cambio proteico (p.) en las columnas AA da la consecuencia de los indels. |
Columnas adicionales cuando se usa --bam:
| Columna | Significado |
|---|---|
SNP Reads |
Lecturas que llevan cada SNV individual sin el haplotipo MNV completo. En una fila donde todas las lecturas llevan el haplotipo entero esto vale 0 para cada constituyente y el recuento vive en MNV Reads, así que las dos columnas reparten el soporte en vez de contarlo dos veces. |
SNP Forward Reads |
Recuento en hebra directa de las lecturas de arriba. |
SNP Reverse Reads |
Recuento en hebra reversa de las lecturas de arriba. |
MNV Reads |
Lecturas que respaldan el haplotipo MNV completo. |
MNV Forward Reads |
Soporte de MNV en hebra directa. |
MNV Reverse Reads |
Soporte de MNV en hebra reversa. |
Total Reads |
Profundidad en las posiciones de la variante. |
SNP Frequencies |
Frecuencias de SNP por posición. |
MNV Frequencies |
Frecuencia del haplotipo MNV. |
Event Reads |
Lecturas exactas que respaldan un evento indel/complejo. |
Event Forward Reads |
Soporte exacto del evento en hebra directa. |
Event Reverse Reads |
Soporte exacto del evento en hebra reversa. |
Event Depth |
Lecturas con un alelo observado a lo largo del tramo del evento indel/complejo. |
Event Frequency |
Lecturas exactas del evento divididas por la profundidad del evento. |
El soporte exacto del evento tiene en cuenta el CIGAR. Una lectura debe reconstruir la misma secuencia ALT local y, en el caso de los haplotipos complejos, contener los componentes de inserción y deleción esperados. Esto evita que las combinaciones de inserción/deleción de efecto neutro se contabilicen como soporte solo porque su secuencia se parezca a un MNV.
Las columnas de frecuencia se calculan a partir del soporte de lecturas del BAM. --min-snp-frequency y
--min-mnv-frequency usan estos mismos valores derivados del BAM. Los filtros son
independientes: --min-snp-frequency se aplica a las observaciones de SNP individuales y
--min-mnv-frequency se aplica a los haplotipos MNV en fase. En las llamadas mixtas SNP/MNV,
una fila o registro VCF se conserva cuando cualquiera de los dos componentes supera su propio
umbral activo.
Los filtros de recuento de lecturas y de soporte de hebra (--snp, --mnv, --min-snp-strand
y --min-mnv-strand) siguen el mismo comportamiento independiente para SNP y MNV.
Cuando un MNV a nivel de codón se solapa con un indel, la fila del MNV se conserva como fila
de contexto posicional, pero su efecto a nivel de aminoácido se marca como Unknown con
Change Type = Indel overlap. Si las lecturas del BAM respaldan el evento combinado completo,
get_MNV emite una fila complex_indel exacta aparte con el REF/ALT combinado, los
componentes del evento y el soporte de lecturas del evento.
El solapamiento del indel sigue la semántica interbase de VCF. Las deleciones se solapan con una característica a lo largo del tramo de referencia eliminado. Las inserciones solo se solapan con una característica cuando la secuencia insertada cae entre dos bases de referencia situadas dentro de ella, de modo que una inserción anclada en la última base de la característica se reporta fuera de esta.
Ejemplo:
Chromosome Gene Positions Base Changes AA Changes Variant Type Change Type
MTB_anc Rv0095c_Rv0095c 104838 T Asp126Glu SNP Non-synonymous
MTB_anc Rv0095c_Rv0095c 104941, 104942 T, G Gly92Gln SNP/MNV Non-synonymous
Salida VCF¶
Escribe VCF con:
--convert
o escribe tanto TSV como VCF con:
--both
Nombre de archivo por defecto:
<input_name>.MNV.vcf
Usa --vcf-gz para obtener salida comprimida:
<input_name>.MNV.vcf.gz
Campos INFO comunes:
| Campo | Significado |
|---|---|
GENE |
Nombre del gen o de la característica |
AA |
Cambio de aminoácido |
CT |
Tipo de cambio |
TYPE |
Tipo de variante |
EC |
Clase canónica del evento de alelo |
COMP |
Componentes del evento REF/ALT |
ODP |
Profundidad original del archivo de variantes de entrada |
OFREQ |
Frecuencia alélica original del archivo de variantes de entrada |
SR, SRF, SRR |
Lecturas de SNP: total, forward, reverse |
MR, MRF, MRR |
Lecturas de MNV: total, forward, reverse |
DP |
Profundidad recalculada a partir del BAM |
FREQ |
Frecuencia recalculada a partir del BAM |
ER, ERF, ERR |
Lecturas exactas del evento indel/complejo: total, forward, reverse |
EDP |
Profundidad exacta del evento para alelos indel/complejos |
EFREQ |
Frecuencia exacta del evento para alelos indel/complejos |
SBP |
Valor p del sesgo de hebra de SNP, en notación científica (1.923e-7), que es el valor con el que comparó --min-strand-bias-p |
MSBP |
Valor p del sesgo de hebra de MNV, misma notación |
SO, IMPACT |
Término de consecuencia Sequence Ontology e impacto predicho |
GD |
Distancia de Grantham de un cambio missense |
MNVSHIFT |
Consecuencia del MNV combinado frente a sus SNV individuales |
DBS |
Clase de doblete estilo COSMIC para MNV de 2 SNV adyacentes (p. ej. CC>TT) |
MNVPS |
Soporte de fasing del MNV (de las lecturas que cruzan el codón y llevan el SNV limitante, la fracción que lleva el haplotipo completo) |
MNVPR |
Lecturas sobre las que se calculó ese ratio |
FSPH |
Fase con cada indel aguas arriba, como veredicto:posición:cis/informativas |
DPHASE |
Fase que declaró el VCF de entrada para esta fila, veredicto:conjunto |
LD |
Desequilibrio de ligamiento D-prime entre las sustituciones del codón |
LDP |
Valor p exacto de Fisher para esa tabla de ligamiento |
NMD |
Predicción de NMD para un stop prematuro (regla de los 50 nt) |
HGVSG |
Descriptor HGVS genómico (bracket de MNV con ; percent-encoded) |
HGVSC |
Descriptor HGVS codificante para una sustitución (; percent-encoded) |
La cabecera del VCF registra la versión de get_MNV, la línea de comandos y los umbrales usados.
Cuando --emit-filtered está habilitado, los registros VCF que quedan por debajo de los umbrales de
soporte de lecturas, frecuencia, soporte de hebra o sesgo de hebra se escriben con etiquetas FILTER como
LowSupport, LowFrequency, StrandSupport o StrandBias; de lo contrario, se omiten.
Salida BCF¶
Escribe BCF con:
--bcf
BCF requiere el modo de salida VCF, así que úsalo con --convert o --both.
Esto es solo conversión de salida; BCF no se acepta como formato de entrada.
La conversión la hace bcftools view, tomado del PATH. Sin bcftools instalado
la ejecución avisa, no escribe ningún BCF y aun así sale con 0, con su TSV y su
VCF intactos. --index-vcf-gz funciona igual, a través de tabix.
Nombre de archivo por defecto:
<input_name>.MNV.bcf
Archivos JSON¶
Tres flags escriben JSON, y todos los payloads llevan un schema_version para
que quien los consuma sepa qué forma está leyendo.
JSON de resumen¶
Escribe con:
--summary-json run.summary.json
Claves de primer nivel:
| Clave | Significado |
|---|---|
schema_version |
Versión del payload, ahora mismo 1.0.0 |
sample |
La muestra nombrada con --sample, o null si no se pasó el flag. null no significa que no se usara ninguna muestra: un VCF multimuestra sigue recayendo en la primera columna de muestra, y su genotipo y sus campos FORMAT siguen decidiendo las métricas |
dry_run |
Si estaba en vigor --dry-run |
bam_provided |
Si se leyó un BAM, que es lo que decide los campos de soporte de lecturas |
translation_table |
Número de tabla de traducción del NCBI utilizada |
inputs |
Las rutas de entrada: vcf, fasta, annotation, bam, y además checksums |
output_tsv, output_vcf, output_bcf |
Los archivos que escribió esta ejecución, null en cada uno que no escribió |
contigs |
Una entrada por contig, con sus propios recuentos |
timings |
parse_inputs_ms, process_ms, emit_ms, total_ms |
global |
Los recuentos de toda la ejecución, abajo |
Dentro de global:
| Clave | Significado |
|---|---|
contig_count |
Contigs vistos |
snp_records_in_vcf |
Entradas de variantes conservadas de la entrada en ese contig. No es el número de líneas del archivo: una entrada cuyo alelo no lleva el genotipo de la muestra elegida no se cuenta, así que el mismo archivo da otro número con otro --sample |
mapped_genes |
Genes con al menos una variante encima |
produced_variants |
Variantes anotadas, antes de los filtros de salida |
snp_variants, mnv_variants, snp_mnv_variants, indel_variants, intergenic_variants |
El mismo total desglosado por tipo |
region_cache_hits, region_cache_misses |
Caché de regiones del BAM, solo tiene sentido con --bam |
Estos recuentos son lo que produjo get_MNV, antes de los filtros de salida
produced_variants y los recuentos por tipo que lo acompañan se toman
después de la anotación y antes de los filtros de soporte de lecturas,
frecuencia y hebra que deciden qué llega al TSV. En una ejecución filtrada
los dos discrepan a propósito: el mismo comando puede registrar
produced variants=941 y escribir un TSV de una sola fila, y el informe
HTML, que cuenta filas, dirá 1. Lee el resumen como lo que encontró la
anotación y el TSV como lo que pasó los filtros.
--sample all escribe otro objeto, no uno más largo
Todas las claves de arriba se mueven. Un resumen de --sample all trae
mode con el valor sample_all, sample_count, sample_names, un objeto
aggregate con los totales de toda la ejecución, y un array samples con
un objeto por muestra. Cada uno de esos, y aggregate también, tiene la
forma de muestra única descrita arriba, así que
data["global"]["produced_variants"] pasa a ser
data["aggregate"]["global"]["produced_variants"].
aggregate suma los recuentos de todas las muestras y no nombra ningún
archivo de salida propio: aggregate.output_tsv es null, y las rutas de
cada muestra están en las entradas de samples. Su array contigs también
está siempre vacío, porque el desglose por contig es de cada muestra; léelo
de las entradas de samples. Bifurca por la clave que solo tiene una de las
dos formas:
import json
data = json.load(open("run.summary.json"))
if data.get("mode") == "sample_all":
totals = data["aggregate"]["global"]
per_sample = {s["sample"]: s["global"] for s in data["samples"]}
else:
totals = data["global"]
per_sample = {data["sample"]: data["global"]}
Manifiesto de la ejecución¶
Escribe con:
--run-manifest run.manifest.json
| Clave | Significado |
|---|---|
schema_version |
Versión del payload |
tool_version |
La versión de get_MNV que se ejecutó |
command_line |
El comando con cada ruta reducida a su nombre de archivo y el programa escrito como get_mnv, para que el manifiesto se pueda compartir sin publicar la estructura de directorios en la que se ejecutó. Registra qué se ejecutó, no una línea que se pueda pegar en un shell |
timestamp_unix |
Segundos desde la época Unix |
summary |
El payload de resumen entero, sin cambios |
output_checksums |
output_tsv_sha256, output_vcf_sha256, output_bcf_sha256, cada uno null para el archivo que esta ejecución no escribió |
Con --sample all el manifiesto sigue al resumen: mode, sample_names,
aggregate y samples, sin clave summary de primer nivel, y cada entrada de
samples lleva sus propias output_checksums.
JSON de errores¶
Escribe los errores como JSON con:
--error-json run.error.json
Se escribe solo cuando la ejecución falla, así que su presencia ya es la señal:
| Clave | Significado |
|---|---|
schema_version |
Versión del payload |
code |
El código de error estable, por ejemplo E002 |
exit_code |
El estado de salida del proceso, que coincide con la tabla de Solución de problemas |
message |
El mismo texto que imprimió la ejecución |
{
"schema_version": "1.0.0",
"code": "E002",
"exit_code": 3,
"message": "Cannot open VCF file '/no/such.vcf': No such file or directory (os error 2)"
}
Informe HTML interactivo¶
--report <FICHERO.html> escribe un único fichero HTML autocontenido para explorar
las variantes llamadas. Incrusta sus datos y no carga scripts ni fuentes externas,
así que se abre sin conexión con un doble clic y se puede adjuntar en un correo o
archivar junto a los resultados.
Abrir el informe de ejemplo: 941
variantes llamadas sobre el conjunto de una muestra incluido en example/, o sea la
salida real del comando de abajo y no una maqueta. Se regenera con
scripts/build_example_report.sh. Las vistas de cohorte (las filas de la matriz, la
recurrencia de haplotipos) se llenan con --sample all o --report-from sobre varias
muestras.
# Informe de un run
get_mnv --vcf muestra.vcf --fasta ref.fasta --gff ref.gff --report muestra.html
# Un informe que cubre todas las muestras de un VCF multi-muestra
get_mnv --vcf cohorte.vcf --fasta ref.fasta --gff ref.gff --sample all --report cohorte.html
# Cohorte procesada muestra a muestra: agrega los TSV al final
get_mnv --report-from resultados/*.MNV.tsv --report cohorte.html
Con --report-from no se ejecuta el pipeline: el informe se construye a partir de
TSV de get_MNV ya existentes, que es la forma habitual en un flujo de Nextflow o
Snakemake que llama a get_MNV una vez por muestra. Cada fichero es una muestra,
etiquetada con su nombre de archivo sin el sufijo .MNV.tsv (TB-001.MNV.tsv
pasa a ser TB-001).
El informe contiene:
- Una cifra principal de las variantes mostradas, con tarjetas de apoyo para muestras, genes, filas MNV y variantes de alto impacto, y la distribución de consecuencias por término de Sequence Ontology. Todo sigue los filtros activos.
-
Una matriz de variantes, dibujada como un pequeño navegador genómico: las muestras en el lateral, coordenadas genómicas reales arriba y color por la base alternativa. Rueda para hacer zoom alrededor del cursor, arrastrar para desplazarse, arrastrar sobre la tira del contig completo para saltar, y doble clic para volver al inicio. Arrastrar a lo largo de la tira del contig completo selecciona un rango; un clic simple sobre ella recentra. La caja de región acepta
inicio-fin,contig:inicio-fin, una coordenada suelta o un nombre de gen, y lo encuadra. Sobre la regla, una pista de densidad muestra las llamadas por bin genómico en carriles independientes: uno por cada métrica (todas las llamadas, SNP, MNV, indel, impacto HIGH y número de muestras distintas con llamada). Cada carril tiene su propia escala y su propio máximo, así una clase rara se lee al lado de una común en vez de quedar aplastada en la base de un apilado, y el controlTracksalterna entre todos los carriles, un conjunto compacto y ninguno. Una pista de genes marca la extensión de los sitios llamados de cada gen (que es donde hubo llamadas, no el límite anotado del gen, que el informe no lleva). Al acercarse lo suficiente aparece la letra de la base dentro de cada celda. Las muestras se pueden ordenar por perfil compartido (los patrones idénticos quedan juntos), por número de variantes o por nombre, y cada etiqueta de muestra lleva una barra con cuántas llamadas tiene en la ventana visible, por eso no hay un gráfico aparte por muestra. El color significa una sola cosa: los tonos de nucleótido son de las celdas de la matriz, toda magnitud va en neutro, y el color de estado reservado marca el impacto HIGH. Las posiciones llamadas juntas en las mismas lecturas (MNV de codón, indels complejos faseados) llevan una marca sobre sus columnas, y aparece un selector de contig con datos multi-contig, ya que un eje de coordenadas continuo no puede abarcar varios contigs.Una celda solo puede ser "llamada ALT" o "no llamada". La salida de get_MNV no distingue una base de referencia de una posición sin cobertura, así que una celda vacía nunca se presenta como referencia. Ese estado se lee como "referencia o sin cobertura".
-
Haplotipos respaldados por lecturas: las combinaciones de alelos que get_MNV observó realmente en las mismas lecturas, es decir MNV de codón e indels complejos faseados localmente, ordenados por cuántas muestras llevan cada uno y con su soporte de fasing cuando se usó un BAM. El fasing de largo alcance entre sitios distantes no se infiere ni se muestra nunca.
- Una tabla ordenable y filtrable con todas las variantes, virtualizada para que decenas de miles de filas sigan siendo fluidas. Cada columna tiene su propio filtro: lista de casillas para muestra, contig, gen, tipo de variante, consecuencia e impacto (varios valores a la vez, con buscador cuando la lista es larga), coincidencia por texto para posición, cambio de bases y cambio de aminoácido, y rango mínimo/máximo para Grantham y frecuencia. Los filtros de columna se combinan entre sí y con el buscador libre, y gobiernan toda la página: las cifras principales, los gráficos, la matriz y el panel de haplotipos siguen la misma selección.
- Un panel de detalle de la variante seleccionada con su localización,
consecuencia, descriptores HGVS
g./c./p., distancia de Grantham, clase DBS, predicción de NMD, codones, componentes del evento y soporte de lecturas. - Exportar TSV filtrado, que descarga exactamente las filas mostradas.
- Enlaces al repositorio y a la documentación en la cabecera. Son hiperenlaces normales: no se descarga nada al abrir el informe, así que sigue siendo autocontenido sin conexión.
El informe sigue el tema claro u oscuro del sistema operativo y tiene su propio
selector. Como se construye desde el TSV, --report necesita salida TSV: funciona
con el modo de salida por defecto y con --both, pero no con --convert a solas
ni con --dry-run. Las columnas de soporte de lecturas (frecuencia, profundidad)
solo se rellenan si el run usó --bam.
El tamaño escala con el número de variantes. Los campos repetidos se codifican con diccionario, así que una cohorte de decenas de miles de variantes se queda en pocos megabytes.
Notas¶
- Para los registros MNV, la profundidad y la frecuencia se calculan a partir de las lecturas que abarcan todas las posiciones del haplotipo agrupado.
- Las frecuencias se imprimen con 4 decimales.
--min-snp-frequencyy--min-mnv-frequencyson valores de0a1y requieren--bam.- Los filtros de frecuencia de SNP y MNV son independientes, de modo que un haplotipo MNV fuerte no se elimina por un umbral de frecuencia de SNP más estricto.
- Los filtros de soporte de lecturas y de soporte de hebra de SNP y MNV también son independientes.
--sample allescribe un conjunto de salida por cada muestra del VCF, con las variantes que lleva el genotipo de esa muestra.--keep-original-infoconserva los campos INFO del VCF de entrada que no son de get_MNV.