Escribe la corrida en <carpeta>/mod/dismod_lite/<AAAA-MM-DD>_<nombre>_v<n>/: celdas por medida (cause/),
simulaciones (draws/), etiquetas, diagnósticos, insumos congelados (inputs/) y manifest.yaml. Antes de
escribir comprueba la convergencia (R-hat < 1.01 y ESS >= ess_minimo, salvo forzar = TRUE) y el error del
ancla, y valida las celdas contra el contrato. Con registro, agrega la corrida al registro de corridas.
Usage
dl_exportar_corrida(
piezas,
nombre,
carpeta = Sys.getenv("DATA_ROOT"),
etiquetas,
validacion = NULL,
sensibilidad = NULL,
guardar_simulaciones = TRUE,
registrar = !is.null(registro),
forzar = FALSE,
ess_minimo = 400,
registro = NULL,
rutas = NULL
)Arguments
- piezas
Lista con
resumen(dl_resumir()),fit(ajuste o cascada),yld(dl_avd()) ybundle(insumos), las mismas con que se hizo el resumen; también valen los nombresajuste,avdeinsumos. El reparto por razón (dl_repartir_razon()) va en el resumen: aquí no hace falta.- nombre
Nombre corto de la corrida: minúsculas sin tildes, números y guiones (por ejemplo
"acs-nacional").- carpeta
Carpeta raíz de las corridas.
- etiquetas
Etiquetas de
dl_etiquetas()(obligatorias).- validacion
Resultado de
dl_validar_ancla()(opcional).- sensibilidad
Resultado de
dl_sensibilidad()(opcional).- guardar_simulaciones
TRUEguarda las simulaciones por celda endraws/.- registrar
TRUEagrega la corrida al registroregistro.- forzar
TRUEexporta aunque falle la convergencia (queda declarado en el manifiesto).- ess_minimo
Tamaño efectivo de muestra mínimo.
- registro
Archivo YAML del registro de corridas, que ya existe (un registro nuevo es un archivo con la línea
datasets: []); opcional.- rutas
Rutas de
dl_rutas(); se usan los catálogos y la carpeta de covariables.NULL(por defecto) usa las de los insumos.
Value
Objeto de clase dl_run, una lista con run_id (el identificador de la corrida), dir (su carpeta),
manifest (el contenido de manifest.yaml, como lista) y files (las tablas de celdas escritas, una por
medida: path, relativa a carpeta, sha256 y rows).
Details
La carpeta de la corrida:
cause/<medida>/<run_id>.csv: las celdas deprevalence,incidenceyyld(las dedl_resumir(), conrun_id), validadas contra el contratoestimates/v1(dl_validar_estimaciones()).draws/<medida>_<año>.csv.gz: las simulaciones por celda (conguardar_simulaciones = TRUE); con ellasdl_reresumir_corrida()ydl_sumar_hijas()trabajan sin volver a ajustar.etiquetas/<run_id>.csv: las etiquetas dedl_etiquetas().diagnostics/:mcmc.csv(R-hat y ESS),aceptacion.csv,desplazamiento_splits.csv,validacion.csv(dl_validar_ancla()),sensibilidad.csv(dl_sensibilidad(), si se da) y, con una cascada,renorm.csv(los factores de renormalización),dx_bandas.csv(la mediana y el intervalo de dX por ubicación, sexo, covariable y banda) yamplitud.csv(la validación de la amplitud, si se calculó). Con el reparto por razón (subnacional.modo: razon),razon.csv: la razón aplicada por ubicación (la tablarazonesdedl_repartir_razon()). Con un proyecto que traeproxies_crudos,proxies_series.csv: las series de su calibración (el atributoseriesdedl_calibrar_proxies(): el gradiente observado y el suavizado por ubicación y edición).inputs/: los insumos congelados (dl_congelar_insumos()), la configuración usada (config_usado.yaml, en el formato completo) y las descargas de covariables (ghdx_cov/, solo con los insumos del formato completo). Con la mortalidad en exceso fija en 0 (emr_prior.tipo: cero),config_usado.yamlva sinemr_prior.cota(el manifiesto sí declaraparams.emr_cota: [0, 0]):dl_configuracion()no admite esa clave con ese prior. Con un proyecto de las tablas del contrato (dl_proyecto()),inputs/contrato/guarda las tablas que se usaron (<tabla>.csv, con las covariables nacionales; los números escritos exactos) y la configuración del proyecto tal como se leyó (config.yaml, con los nombres de clave de ahora), y el manifiesto registra el sha256 de cada archivo eninputs$contrato.inputs/contrato/es la carpeta de un proyecto:dl_proyecto(file.path(run$dir, "inputs", "contrato"))repite la corrida sin la carpeta original, también si las tablas o la configuración se dieron en R. Enbetas.csvvan las betas que usó la causa, bajo la causa de la corrida: las de su causa padre si es un subtipo sin betas propias, cuya configuración congelada declara además a la causa padre (subtipo_de, oavanzado: extraction: cause_idsi la relación salía desubtipos), quedl_sumar_hijas()exige. La carpeta deseveridad.particionse copia eninputs/contrato/particion/<corrida>/, con la ruta de la configuración congelada cambiada a ella y el sha256 de cada archivo eninputs$contrato(particion); la tablaseveridad, que sale de ella, no se congela aparte.proxies_crudosse congela como vino (ycovariables.csvsin las filas calibradas): el proyecto congelado vuelve a calibrar con la misma configuración y da los mismos insumos.manifest.yaml: la descripción de la corrida (abajo).
El identificador <AAAA-MM-DD>_<nombre>_v<n> lleva la fecha del día y la versión siguiente a la mayor de ese día
con ese nombre en carpeta: una corrida nunca reemplaza a otra. Si algo falla a mitad de la escritura, la carpeta
a medio escribir se borra.
manifest.yaml describe la corrida: identificación, causa, parámetros, insumos (con el sha256 de cada tabla
congelada), cascada, datos, decisiones (las de la configuración; una lista vacía si no hay), validación y
limitaciones; en un proyecto con las tablas del contrato de insumos, además, configuracion (el formato y las
claves que tomaron su valor por defecto) y, si el proyecto trae proxies_crudos, params.proxies: por covariable,
el método, la transformación, q, el borde de su intervalo en que quedó (si quedó en uno), las ediciones usadas y
las excluidas, cada una con su anio y su motivo. En la cascada, haqi_nacional se conserva por compatibilidad con la versión 0.2.2: es false solo si la
cascada aplicó un proxy subnacional de una covariable llamada haqi; si no (también en un proyecto sin esa
covariable), es true. Con el reparto por razón (subnacional.modo: razon), cascada.modo es razon y el
bloque razon trae la semilla del sorteo, cuántas ubicaciones, el rango de las razones de la tabla, cuántas son
cero, sus fuentes y la regla; las limitaciones declaran que la razón es la misma en todas las edades y sexos.
Si la configuración dice que la incidencia de la causa no se reporta (en un proyecto, exportar: {incidencia: no};
en el formato completo, exportar: {incidencia: {valor: false, procedencia}}), la corrida escribe la incidencia
igual, en cause/incidence/ y en draws/, y el manifiesto lleva causa.exporta_incidencia: false y una
limitación con la procedencia: dl_consolidar() omite la incidencia de esa corrida. Sin la clave, el manifiesto
no cambia.
forzar = TRUE salta la convergencia, no el error del ancla: si la prevalencia ajustada se aleja de la del ancla
(error relativo mediano mayor que anchor.gate_err_mediano, 0.05 por defecto), la corrida no se escribe. Ese
máximo se declara en la configuración (en un proyecto, ancla: {error_maximo: ...}; en el formato completo,
anchor: {gate_err_mediano: {valor, procedencia}}; ver dl_configuracion()).
See also
dl_correr() (todas las etapas en una llamada), dl_resumir() (el paso anterior),
dl_reresumir_corrida(), dl_sumar_hijas() y dl_consolidar() (lo que se hace con las corridas).
Corridas:
dl_reresumir_corrida(),
dl_resumir(),
dl_sumar_hijas()
Examples
# \donttest{
b <- dl_insumos(dl_proyecto(dl_ejemplo(), causa = 9100))
#> dl_insumos(): 25 fila(s) nacionales de la tabla datos quedan fuera del ajuste porque datos_en_ajuste está vacío en la configuración; las filas subnacionales se usan solo para validar la cascada
op <- dl_opciones_mcmc(simulaciones = 100, cadenas = 2, iteraciones = 2000, calentamiento = 1000)
f <- dl_ajustar(b, op, semilla = 1)
f0 <- dl_ajustar_solo_prior(b, op, semilla = 1, ajuste = f)
cas <- dl_cascada(f, b, semilla = 1)
y <- dl_avd(cas, b, comorbilidad = dl_factor_comorbilidad(b), semilla = 1)
et <- dl_etiquetas(f, f0, b, grilla_rho = 0.5, semilla = 1, cascada = cas)
v <- dl_validar_ancla(f, b, cascada = cas)
piezas <- list(ajuste = cas, avd = y, insumos = b)
piezas$resumen <- dl_resumir(piezas)
# cadenas cortas: forzar = TRUE escribe la corrida aunque no hayan convergido (el manifiesto
# lo declara); una corrida para publicar no lo usa
salida <- file.path(tempdir(), "corridas")
run <- dl_exportar_corrida(piezas, nombre = "ejemplo", carpeta = salida, etiquetas = et,
validacion = v, forzar = TRUE)
run
#> <dl_run> corrida 2026-10-15_ejemplo_v1 (cascada subnacional)
#> carpeta: /tmp/RtmpucVo2P/corridas/mod/dismod_lite/2026-10-15_ejemplo_v1
#> 3 particiones canónicas (una por medida) | exportada con forzar = TRUE
list.files(run$dir, recursive = TRUE)
#> [1] "cause/incidence/2026-10-15_ejemplo_v1.csv"
#> [2] "cause/prevalence/2026-10-15_ejemplo_v1.csv"
#> [3] "cause/yld/2026-10-15_ejemplo_v1.csv"
#> [4] "diagnostics/aceptacion.csv"
#> [5] "diagnostics/amplitud.csv"
#> [6] "diagnostics/desplazamiento_splits.csv"
#> [7] "diagnostics/dx_bandas.csv"
#> [8] "diagnostics/mcmc.csv"
#> [9] "diagnostics/proxies_series.csv"
#> [10] "diagnostics/renorm.csv"
#> [11] "diagnostics/validacion.csv"
#> [12] "draws/incidence_2023.csv.gz"
#> [13] "draws/prevalence_2023.csv.gz"
#> [14] "draws/yld_2023.csv.gz"
#> [15] "etiquetas/2026-10-15_ejemplo_v1.csv"
#> [16] "inputs/betas.csv"
#> [17] "inputs/config_usado.yaml"
#> [18] "inputs/contrato/ancla.csv"
#> [19] "inputs/contrato/betas.csv"
#> [20] "inputs/contrato/config.yaml"
#> [21] "inputs/contrato/covariables.csv"
#> [22] "inputs/contrato/datos.csv"
#> [23] "inputs/contrato/poblacion.csv"
#> [24] "inputs/contrato/proxies_crudos.csv"
#> [25] "inputs/contrato/severidad.csv"
#> [26] "inputs/contrato/ubicaciones.csv"
#> [27] "inputs/cov_proxy.csv"
#> [28] "inputs/cov_valores.csv"
#> [29] "inputs/crosswalks.csv"
#> [30] "inputs/datos.csv"
#> [31] "inputs/hash.json"
#> [32] "inputs/poblacion.csv"
#> [33] "inputs/prior_gbd.csv"
#> [34] "inputs/sequela_map.csv"
#> [35] "inputs/severidad.csv"
#> [36] "manifest.yaml"
run$manifest$validacion
#> $gates
#> $gates$rhat_max
#> [1] 2.305704
#>
#> $gates$ess_min
#> [1] 11.4
#>
#> $gates$force
#> [1] TRUE
#>
#>
#> $anchor_identity
#> $anchor_identity$err_rel_mediano
#> [1] 0.032515
#>
#> $anchor_identity$celdas_fuera_ic95
#> [1] 0
#>
#> $anchor_identity$gate_err_mediano
#> [1] 0.05
#>
#>
#> $implied_incidence
#> $implied_incidence$err_rel_mediano
#> [1] 0.033463
#>
#> $implied_incidence$cobertura
#> [1] 1
#>
#>
#> $amplitud_csmr
#> $amplitud_csmr$`1`
#> $amplitud_csmr$`1`$sex_id
#> [1] 1
#>
#> $amplitud_csmr$`1`$kappa
#> [1] 1
#>
#> $amplitud_csmr$`1`$pendiente
#> [1] 0.9867
#>
#> $amplitud_csmr$`1`$pendiente_lower
#> [1] 0.8288
#>
#> $amplitud_csmr$`1`$pendiente_upper
#> [1] 1.1446
#>
#> $amplitud_csmr$`1`$spearman
#> [1] 0.8121
#>
#> $amplitud_csmr$`1`$n_celdas_spearman
#> [1] 6
#>
#> $amplitud_csmr$`1`$n_celdas
#> [1] 60
#>
#> $amplitud_csmr$`1`$n_departamentos
#> [1] 10
#>
#> $amplitud_csmr$`1`$pendiente_std
#> [1] 0.9801
#>
#> $amplitud_csmr$`1`$pendiente_std_lower
#> [1] 0.7288
#>
#> $amplitud_csmr$`1`$pendiente_std_upper
#> [1] 1.2314
#>
#> $amplitud_csmr$`1`$spearman_std
#> [1] 0.9636
#>
#> $amplitud_csmr$`1`$n_departamentos_std
#> [1] 10
#>
#>
#> $amplitud_csmr$`2`
#> $amplitud_csmr$`2`$sex_id
#> [1] 2
#>
#> $amplitud_csmr$`2`$kappa
#> [1] 1
#>
#> $amplitud_csmr$`2`$pendiente
#> [1] 1.0759
#>
#> $amplitud_csmr$`2`$pendiente_lower
#> [1] 0.9385
#>
#> $amplitud_csmr$`2`$pendiente_upper
#> [1] 1.2133
#>
#> $amplitud_csmr$`2`$spearman
#> [1] 0.8061
#>
#> $amplitud_csmr$`2`$n_celdas_spearman
#> [1] 6
#>
#> $amplitud_csmr$`2`$n_celdas
#> [1] 60
#>
#> $amplitud_csmr$`2`$n_departamentos
#> [1] 10
#>
#> $amplitud_csmr$`2`$pendiente_std
#> [1] 1.0979
#>
#> $amplitud_csmr$`2`$pendiente_std_lower
#> [1] 0.9218
#>
#> $amplitud_csmr$`2`$pendiente_std_upper
#> [1] 1.2741
#>
#> $amplitud_csmr$`2`$spearman_std
#> [1] 0.9152
#>
#> $amplitud_csmr$`2`$n_departamentos_std
#> [1] 10
#>
#>
#>
unlink(salida, recursive = TRUE)
# }