Cuando trabaja en su propio proyecto genómico o utiliza genomas disponibles públicamente para análisis comparativos, es fundamental evaluar la calidad de sus datos. En los últimos años, se han desarrollado varias herramientas y propuesto diversas métricas para evaluar la calidad del ensamblaje y la anotación de un genoma.
El paquete cogeqc ayuda a los usuarios a interpretar las
estadísticas de ensamblaje de su genoma comparándolas con estadísticas
de genomas disponibles públicamente en el NCBI. Además,
cogeqc también proporciona una interfaz para BUSCO, una
herramienta popular para evaluar la integridad del espacio génico. Están
disponibles funciones gráficas para crear gráficos listos para
publicación que resumen los resultados del control de calidad.
Puede instalar cogeqc desde Bioconductor con el
siguiente código:
if(!requireNamespace('BiocManager', quietly = TRUE))
install.packages('BiocManager')
BiocManager::install("cogeqc")
Una vez instalado, cargue el paquete:
library(cogeqc)
Al analizar e interpretar las estadísticas del ensamblaje del genoma,
a menudo es útil poner sus estadísticas en contexto comparándolas con
las de genomas de especies estrechamente relacionadas o incluso la misma
especie. cogeqc proporciona a los usuarios una interfaz
para la API de NCBI Datasets, que se puede utilizar para recuperar
estadísticas resumidas de los genomas en NCBI.
Para obtener un data frame de estadísticas resumidas para genomas
NCBI de un taxón en particular, se utiliza la función
get_genome_stats(). En el parámetro taxon,
debe especificar el taxón del cual se extraerán los datos. Esto se puede
hacer pasando el nombre del taxón (carácter) o su ID de taxonomía de
NCBI (numérico).
Por ejemplo, el siguiente código muestra cómo extraer estadísticas sobre los genomas de maíz (Zea mays):
# Ejemplo 1: obtener estadísticas para todos los genomas de maíz usando el nombre del taxón
maize_stats <- get_genome_stats(taxon = "Zea mays")
head(maize_stats)
## accession source species_taxid species_name species_common_name
## 1 GCA_902167145.1 GENBANK 4577 Zea mays <NA>
## 2 GCF_902167145.1 REFSEQ 4577 Zea mays <NA>
## 3 GCA_022117705.1 GENBANK 4577 Zea mays <NA>
## 4 GCA_051912235.1 GENBANK 4577 Zea mays <NA>
## 5 GCA_029775835.1 GENBANK 4577 Zea mays <NA>
## 6 GCA_965287125.1 GENBANK 4577 Zea mays <NA>
## species_ecotype species_strain species_isolate species_cultivar
## 1 <NA> NA <NA> B73
## 2 <NA> NA <NA> B73
## 3 <NA> NA <NA> Mo17-2021
## 4 <NA> NA <NA> LH244
## 5 <NA> NA <NA> LT2357
## 6 <NA> NA <NA> <NA>
## assembly_level assembly_status assembly_name
## 1 Chromosome current Zm-B73-REFERENCE-NAM-5.0
## 2 Chromosome current Zm-B73-REFERENCE-NAM-5.0
## 3 <NA> current Zm-Mo17-REFERENCE-CAU-T2T-assembly
## 4 Chromosome current ASM5191223v1
## 5 Chromosome current ASM2977583v1
## 6 Chromosome current Zm-EA1197-AMZ-1.0
## assembly_type submission_date
## 1 haploid NA
## 2 haploid NA
## 3 haploid NA
## 4 haploid NA
## 5 haploid NA
## 6 haploid NA
## submitter
## 1 MaizeGDB
## 2 MaizeGDB
## 3 China Agriculture University
## 4 China Agriculture University
## 5 Beijing Lantron Seed Co., LTD.
## 6 Institut national de recherche pour l'agriculture, l'alimentation et l'environnement
## sequencing_technology atypical refseq_category
## 1 PacBio SEQUEL FALSE reference genome
## 2 PacBio SEQUEL FALSE reference genome
## 3 Oxford Nanopore PromethION; PacBio FALSE <NA>
## 4 Oxford Nanopore PromethION; PacBio Sequel FALSE <NA>
## 5 PacBio Sequel FALSE <NA>
## 6 Illumina HiSeq 2500 FALSE <NA>
## chromosome_count sequence_length ungapped_length contig_count contig_N50
## 1 10 2182075994 2178268108 1393 47037903
## 2 10 2182075994 2178268108 1393 47037903
## 3 10 2178604320 2178604320 10 220303002
## 4 10 2286149880 2286149380 15 210418674
## 5 10 2106865080 2106637080 460 15883073
## 6 10 2226752758 2214060529 41618 119671
## contig_L50 scaffold_count scaffold_N50 scaffold_L50 GC_percent
## 1 16 685 226353449 5 47.0
## 2 16 685 226353449 5 47.0
## 3 5 10 220303002 5 47.0
## 4 5 10 228666739 5 46.5
## 5 41 10 222005600 5 47.0
## 6 5706 10 239478437 5 46.5
## annotation_provider annotation_release_date gene_count_total
## 1 <NA> <NA> NA
## 2 NCBI RefSeq 2025-02-14 49888
## 3 <NA> <NA> NA
## 4 <NA> <NA> NA
## 5 <NA> <NA> NA
## 6 <NA> <NA> NA
## gene_count_coding gene_count_noncoding gene_count_pseudogene gene_count_other
## 1 NA NA NA NA
## 2 34313 10353 5222 NA
## 3 NA NA NA NA
## 4 NA NA NA NA
## 5 NA NA NA NA
## 6 NA NA NA NA
## CC_ratio
## 1 139.3
## 2 139.3
## 3 1.0
## 4 1.5
## 5 46.0
## 6 4161.8
También puede incluir filtros en sus búsquedas pasando una lista de pares clave-valor. Por ejemplo, para obtener solo genomas de maíz a escala cromosómica y anotados, ejecutaría:
# Obtener genomas de maíz a escala cromosómica con anotación
## Crear lista de filtros
filt <- list(
filters.has_annotation = "true",
filters.assembly_level = "chromosome"
)
## Obtener datos filtrados
filtered_maize_genomes <- get_genome_stats(taxon = "Zea mays", filters = filt)
head(filtered_maize_genomes)
## accession source species_taxid species_name species_common_name
## 1 GCF_902167145.1 REFSEQ 4577 Zea mays NA
## 2 GCA_049266015.1 GENBANK 4577 Zea mays NA
## 3 GCA_003185045.1 GENBANK 4577 Zea mays NA
## 4 GCA_000005005.6 GENBANK 4577 Zea mays NA
## 5 GCF_000005005.2 REFSEQ 4577 Zea mays NA
## species_ecotype species_strain species_isolate species_cultivar
## 1 NA NA <NA> B73
## 2 NA NA B73plus2B B73
## 3 NA NA <NA> inbred line Mo17
## 4 NA NA <NA> B73
## 5 NA NA <NA> B73
## assembly_level assembly_status assembly_name assembly_type
## 1 Chromosome current Zm-B73-REFERENCE-NAM-5.0 haploid
## 2 Chromosome current ASM4926601v1 haploid
## 3 Chromosome current Zm-Mo17-REFERENCE-CAU-1.0 haploid
## 4 Chromosome current B73 RefGen_v4 haploid
## 5 Chromosome suppressed B73 RefGen_v4 haploid
## submission_date submitter sequencing_technology atypical
## 1 NA MaizeGDB PacBio SEQUEL FALSE
## 2 NA Chinese Academy of Sciences HiFi; Hi-C FALSE
## 3 NA China Agricultural University PacBio FALSE
## 4 NA maizesequence PacBio FALSE
## 5 NA maizesequence PacBio FALSE
## refseq_category chromosome_count sequence_length ungapped_length
## 1 reference genome 10 2182075994 2178268108
## 2 <NA> 11 2378498113 2378478313
## 3 <NA> 10 2182605176 2147450341
## 4 <NA> 10 2134373047 2103640169
## 5 <NA> 10 2134373047 2103640169
## contig_count contig_N50 contig_L50 scaffold_count scaffold_N50 scaffold_L50
## 1 1393 47037903 16 685 226353449 5
## 2 1305 45343449 17 1206 229238952 5
## 3 9040 1491782 455 2203 220382597 5
## 4 2787 1279870 506 596 10679170 62
## 5 2787 1279870 506 596 10679170 62
## GC_percent annotation_provider annotation_release_date
## 1 47.0 NCBI RefSeq 2025-02-14
## 2 46.5 Chinese Academy of Sciences 2025-04-03
## 3 47.0 China Agricultural University 2018-06-13
## 4 47.0 maizesequence 2017-02-07
## 5 NA NCBI RefSeq 2020-04-23
## gene_count_total gene_count_coding gene_count_noncoding gene_count_pseudogene
## 1 49888 34313 10353 5222
## 2 42607 42607 NA NA
## 3 38620 38620 NA NA
## 4 39320 39320 NA NA
## 5 45960 33461 7556 4939
## gene_count_other CC_ratio
## 1 NA 139.3000
## 2 NA 118.6364
## 3 NA 904.0000
## 4 NA 278.7000
## 5 4 278.7000
Supongamos que secuenció un nuevo genoma y desea comparar sus estadísticas con las de NCBI para identificar posibles problemas (por ejemplo, si el tamaño del genoma parece erróneo o el número de genes es inusual).
Utilice la función compare_genome_stats(). Esta función
incluirá sus valores observados en la distribución de los genomas de
NCBI y devolverá el percentil y el rango de sus valores.
Ejemplo con un genoma de maíz hipotético: *Tamaño del genoma = 2.4 Gb* Número de genes = 50,000 * Relación CC (CC ratio) = 2
Nota: La relación CC es la proporción entre el número de contigs y el número de pares de cromosomas, propuesta como una medida de contigüidad comparable entre especies.
# Primero asegúrese de tener los datos de referencia (si no los cargó antes)
# maize_stats <- get_genome_stats(taxon = "Zea mays")
# Crear un data frame con sus estadísticas personalizadas
# La columna 'accession' es obligatoria.
my_stats <- data.frame(
accession = "mi_maiz_personalizado",
sequence_length = 2.4 * 1e9,
gene_count_total = 50000,
CC_ratio = 2
)
# Comparar estadísticas
compare_genome_stats(ncbi_stats = maize_stats, user_stats = my_stats)
## accession variable percentile rank
## 1 mi_maiz_personalizado sequence_length 0.96875000 7
## 2 mi_maiz_personalizado gene_count_total 1.00000000 1
## 3 mi_maiz_personalizado CC_ratio 0.02521008 3
Para tener una representación visual de las estadísticas resumidas
obtenidas, utilizará la función plot_genome_stats().
# Generar gráficos resumen
# Requiere que el objeto 'maize_stats' esté cargado en el entorno.
plot_genome_stats(ncbi_stats = maize_stats)
Finalmente, puedes pasar tu marco de datos (data frame) de estadísticas observadas para resaltar tus valores (como puntos rojos) en las distribuciones.
plot_genome_stats(ncbi_stats = maize_stats, user_stats = my_stats)
Una de las métricas más comunes para evaluar la integridad del
espacio génico es BUSCO (Best Universal Single-Copy Orthologs)
(Simão et al. 2015). cogeqc permite a los usuarios ejecutar
BUSCO desde una sesión de R y visualizar los resultados gráficamente.
Las estadísticas resumidas de BUSCO le ayudarán a evaluar qué
ensamblajes tienen alta calidad en función del porcentaje de BUSCOs
completos.
Para ejecutar BUSCO desde R, utilizará la función
run_busco().
Nota: Debe tener BUSCO instalado y en su PATH para usar
run_busco(). Puede verificar si BUSCO está instalado ejecutandobusco_is_installed(). Si aún no lo tiene, puede instalarlo manualmente o usar un entorno virtual de conda con el paquete de BioconductorHerper(Paul, Carroll, and Barrows 2021).
Aquí, usaremos un archivo FASTA de ejemplo que contiene las primeras
1,000 líneas del genoma de Herbaspirillum seropedicae SmR1
(GCA_000143225), que se descargó de Ensembl Bacteria. Ejecutaremos BUSCO
utilizando burkholderiales_odb10 como el conjunto de datos
de linaje. Para ver todos los conjuntos de datos disponibles, ejecute
list_busco_datasets().
# Path to FASTA file
sequence <- system.file("extdata", "Hse_subset.fa", package = "cogeqc")
# Path to directory where BUSCO datasets will be stored
download_path <- paste0(tempdir(), "/datasets")
# Run BUSCO if it is installed
if(busco_is_installed()) {
run_busco(sequence, outlabel = "Hse", mode = "genome",
lineage = "burkholderiales_odb10",
outpath = tempdir(), download_path = download_path)
}
# Path to output directory
output_dir <- system.file("extdata", package = "cogeqc")
busco_summary <- read_busco(output_dir)
busco_summary
## Class Frequency Lineage
## 1 Complete_SC 1412 chlorophyta_odb10
## 2 Complete_duplicate 4 chlorophyta_odb10
## 3 Fragmented 35 chlorophyta_odb10
## 4 Missing 68 chlorophyta_odb10
#> Class Frequency Lineage
#> 1 Complete_SC 1412 chlorophyta_odb10
#> 2 Complete_duplicate 4 chlorophyta_odb10
#> 3 Fragmented 35 chlorophyta_odb10
#> 4 Missing 68 chlorophyta_odb10
Este es un ejemplo de salida para una ejecución de BUSCO con un solo
archivo FASTA. También puedes especificar un directorio que contenga
múltiples archivos FASTA en el argumento sequence de
run_busco(). De esta manera, BUSCO se ejecutará en modo por
lotes (batch mode). Veamos cómo es la salida de BUSCO en modo
por lotes:
data(batch_summary)
batch_summary
## Class Frequency Lineage File
## 1 Complete_SC 98.5 burkholderiales_odb10 Hse.fa
## 2 Complete_SC 98.8 burkholderiales_odb10 Hru.fa
## 3 Complete_duplicate 0.7 burkholderiales_odb10 Hse.fa
## 4 Complete_duplicate 0.7 burkholderiales_odb10 Hru.fa
## 5 Fragmented 0.4 burkholderiales_odb10 Hse.fa
## 6 Fragmented 0.3 burkholderiales_odb10 Hru.fa
## 7 Missing 0.4 burkholderiales_odb10 Hse.fa
## 8 Missing 0.2 burkholderiales_odb10 Hru.fa
La única diferencia entre este marco de datos (data frame) y
el anterior es la columna File, que contiene información
sobre el archivo FASTA. El conjunto de datos de ejemplo
batch_summary contiene la salida de
run_busco() utilizando un directorio que contenía dos
genomas (Herbaspirillum seropedicae SmR1 y Herbaspirillum
rubrisubalbicans M1) como parámetro para el argumento
sequence.
Después de usar run_busco() y analizar su salida con
read_busco(), los usuarios pueden visualizar estadísticas
resumidas con plot_busco().
# Single FASTA file - Ostreococcus tauri
plot_busco(busco_summary)
# Batch mode - Herbaspirillum seropedicae and H. rubrisubalbicans
plot_busco(batch_summary)
Por lo general, consideramos que los genomas con más del 90% de BUSCO completos tienen una alta calidad. Por lo tanto, podemos concluir que los tres genomas analizados aquí son genomas de alta calidad.
Adaptado y traducido de.
Este documento fue creado bajo las siguientes condiciones:
sessioninfo::session_info()
## ─ Session info ───────────────────────────────────────────────────────────────
## setting value
## version R version 4.5.2 Patched (2025-11-19 r89053)
## os macOS Tahoe 26.2
## system aarch64, darwin20
## ui X11
## language (EN)
## collate en_US.UTF-8
## ctype en_US.UTF-8
## tz America/Mexico_City
## date 2026-07-09
## pandoc 3.6.3 @ /Applications/RStudio.app/Contents/Resources/app/quarto/bin/tools/aarch64/ (via rmarkdown)
## quarto 1.7.32 @ /Applications/RStudio.app/Contents/Resources/app/quarto/bin/quarto
##
## ─ Packages ───────────────────────────────────────────────────────────────────
## package * version date (UTC) lib source
## ape 5.8-1 2024-12-16 [1] CRAN (R 4.5.0)
## aplot 0.3.1 2026-07-07 [1] CRAN (R 4.5.2)
## beeswarm 0.4.0 2021-06-01 [1] CRAN (R 4.5.0)
## BiocGenerics 0.56.0 2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
## BiocManager 1.30.27 2025-11-14 [1] CRAN (R 4.5.2)
## Biostrings 2.78.0 2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
## bslib 0.11.0 2026-05-16 [1] CRAN (R 4.5.2)
## cachem 1.1.0 2024-05-16 [1] CRAN (R 4.5.0)
## cli 3.6.6 2026-04-09 [1] CRAN (R 4.5.2)
## cogeqc * 1.14.1 2026-03-05 [1] https://bioc-release.r-universe.dev (R 4.5.2)
## crayon 1.5.3 2024-06-20 [1] CRAN (R 4.5.0)
## dichromat 2.0-0.1 2022-05-02 [1] CRAN (R 4.5.0)
## digest 0.6.39 2025-11-19 [1] CRAN (R 4.5.2)
## dplyr 1.2.1 2026-04-03 [1] CRAN (R 4.5.2)
## evaluate 1.0.5 2025-08-27 [1] CRAN (R 4.5.0)
## farver 2.1.2 2024-05-13 [1] CRAN (R 4.5.0)
## fastmap 1.2.0 2024-05-15 [1] CRAN (R 4.5.0)
## fontBitstreamVera 0.1.1 2017-02-01 [1] CRAN (R 4.5.0)
## fontLiberation 0.1.0 2016-10-15 [1] CRAN (R 4.5.0)
## fontquiver 0.2.1 2017-02-01 [1] CRAN (R 4.5.0)
## fs 2.1.0 2026-04-18 [1] CRAN (R 4.5.2)
## gdtools 0.5.1 2026-05-25 [1] CRAN (R 4.5.2)
## generics 0.1.4 2025-05-09 [1] CRAN (R 4.5.0)
## ggbeeswarm 0.7.3 2025-11-29 [1] CRAN (R 4.5.2)
## ggfun 0.2.1 2026-07-02 [1] CRAN (R 4.5.2)
## ggiraph 0.9.6 2026-02-21 [1] CRAN (R 4.5.2)
## ggplot2 4.0.3 2026-04-22 [1] CRAN (R 4.5.2)
## ggplotify 0.1.3 2025-09-20 [1] CRAN (R 4.5.0)
## ggtree 4.0.5 2026-03-17 [1] https://bioc-release.r-universe.dev (R 4.5.3)
## glue 1.8.1 2026-04-17 [1] CRAN (R 4.5.2)
## gridGraphics 0.5-1 2020-12-13 [1] CRAN (R 4.5.0)
## gtable 0.3.6 2024-10-25 [1] CRAN (R 4.5.0)
## htmltools 0.5.9 2025-12-04 [1] CRAN (R 4.5.2)
## htmlwidgets 1.6.4 2023-12-06 [1] CRAN (R 4.5.0)
## igraph 2.3.3 2026-06-26 [1] CRAN (R 4.5.2)
## IRanges 2.44.0 2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
## jquerylib 0.1.4 2021-04-26 [1] CRAN (R 4.5.0)
## jsonlite 2.0.0 2025-03-27 [1] CRAN (R 4.5.0)
## knitr 1.51 2025-12-20 [1] CRAN (R 4.5.2)
## labeling 0.4.3 2023-08-29 [1] CRAN (R 4.5.0)
## lattice 0.22-7 2025-04-02 [2] CRAN (R 4.5.2)
## lazyeval 0.2.3 2026-04-04 [1] CRAN (R 4.5.2)
## lifecycle 1.0.5 2026-01-08 [1] CRAN (R 4.5.2)
## magrittr 2.0.5 2026-04-04 [1] CRAN (R 4.5.2)
## MASS 7.3-65 2025-02-28 [2] CRAN (R 4.5.2)
## nlme 3.1-168 2025-03-31 [2] CRAN (R 4.5.2)
## otel 0.2.0 2025-08-29 [1] CRAN (R 4.5.0)
## patchwork 1.3.2 2025-08-25 [1] CRAN (R 4.5.0)
## pillar 1.11.1 2025-09-17 [1] CRAN (R 4.5.0)
## pkgconfig 2.0.3 2019-09-22 [1] CRAN (R 4.5.0)
## plyr 1.8.9 2023-10-02 [1] CRAN (R 4.5.0)
## purrr 1.2.2 2026-04-10 [1] CRAN (R 4.5.2)
## R6 2.6.1 2025-02-15 [1] CRAN (R 4.5.0)
## rappdirs 0.3.4 2026-01-17 [1] CRAN (R 4.5.2)
## RColorBrewer 1.1-3 2022-04-03 [1] CRAN (R 4.5.0)
## Rcpp 1.1.2 2026-07-05 [1] CRAN (R 4.5.2)
## reshape2 1.4.5 2025-11-12 [1] CRAN (R 4.5.0)
## rlang 1.3.0 2026-07-05 [1] CRAN (R 4.5.2)
## rmarkdown 2.31 2026-03-26 [1] CRAN (R 4.5.2)
## rstudioapi 0.19.0 2026-06-11 [1] CRAN (R 4.5.2)
## S4Vectors 0.48.1 2026-04-04 [1] https://bioc-release.r-universe.dev (R 4.5.3)
## S7 0.2.2 2026-04-22 [1] CRAN (R 4.5.2)
## sass 0.4.10 2025-04-11 [1] CRAN (R 4.5.0)
## scales 1.4.0 2025-04-24 [1] CRAN (R 4.5.0)
## Seqinfo 1.0.0 2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
## sessioninfo 1.2.4 2026-06-04 [1] CRAN (R 4.5.2)
## stringi 1.8.7 2025-03-27 [1] CRAN (R 4.5.0)
## stringr 1.6.0 2025-11-04 [1] CRAN (R 4.5.0)
## systemfonts 1.3.2 2026-03-05 [1] CRAN (R 4.5.2)
## tibble 3.3.1 2026-01-11 [1] CRAN (R 4.5.2)
## tidyr 1.3.2 2025-12-19 [1] CRAN (R 4.5.2)
## tidyselect 1.2.1 2024-03-11 [1] CRAN (R 4.5.0)
## tidytree 0.4.8 2026-07-02 [1] CRAN (R 4.5.2)
## treeio 1.34.0 2025-10-30 [1] Bioconductor 3.22 (R 4.5.1)
## vctrs 0.7.3 2026-04-11 [1] CRAN (R 4.5.2)
## vipor 0.4.7 2023-12-18 [1] CRAN (R 4.5.0)
## withr 3.0.3 2026-06-19 [1] CRAN (R 4.5.2)
## xfun 0.60 2026-07-09 [1] CRAN (R 4.5.2)
## XVector 0.50.0 2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
## yaml 2.3.12 2025-12-10 [1] CRAN (R 4.5.2)
## yulab.utils 0.2.4 2026-02-02 [1] CRAN (R 4.5.2)
##
## [1] /Users/niko.cruz/Library/R/arm64/4.5/library
## [2] /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library
## * ── Packages attached to the search path.
##
## ──────────────────────────────────────────────────────────────────────────────