Skip to contents

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()) y bundle (insumos), las mismas con que se hizo el resumen; también valen los nombres ajuste, avd e insumos. 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

TRUE guarda las simulaciones por celda en draws/.

registrar

TRUE agrega la corrida al registro registro.

forzar

TRUE exporta 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 de prevalence, incidence y yld (las de dl_resumir(), con run_id), validadas contra el contrato estimates/v1 (dl_validar_estimaciones()).

  • draws/<medida>_<año>.csv.gz: las simulaciones por celda (con guardar_simulaciones = TRUE); con ellas dl_reresumir_corrida() y dl_sumar_hijas() trabajan sin volver a ajustar.

  • etiquetas/<run_id>.csv: las etiquetas de dl_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) y amplitud.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 tabla razones de dl_repartir_razon()). Con un proyecto que trae proxies_crudos, proxies_series.csv: las series de su calibración (el atributo series de dl_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.yaml va sin emr_prior.cota (el manifiesto sí declara params.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 en inputs$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. En betas.csv van 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, o avanzado: extraction: cause_id si la relación salía de subtipos), que dl_sumar_hijas() exige. La carpeta de severidad.particion se copia en inputs/contrato/particion/<corrida>/, con la ruta de la configuración congelada cambiada a ella y el sha256 de cada archivo en inputs$contrato (particion); la tabla severidad, que sale de ella, no se congela aparte. proxies_crudos se congela como vino (y covariables.csv sin 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)
# }