Simplot: graficador de tablas independiente de SCEPTRE
====================================================

Cierre de compatibilidad (11/10/2026): las 27 suites pasan con los lectores
del arbol actualizados. El dialogo -i para .ds/.d/.dat y PARAPLOT historico
ya usa el renderizador estructurado (nombres, indices, paneles y
superposicion de magnitudes compatibles). Esta nota actualiza las
referencias al dialogo pendiente que puedan quedar en documentos antiguos.
Estado de fuentes y paquetes, fallos corregidos y comprobaciones:
doc/VALIDACION-PAQUETES-2026-10-11.md. No confundir estas fuentes con los
paquetes anteriormente construidos o instalados.

Mapa global del proyecto (entradas, salidas, archivos, X y navegador): ../MAPA-FLUJOS.txt. Incluye todos los paquetes y distingue estado actual de interfaz objetivo.

Division acordada (11/10/2026): UNIDADES y RESULTADOS se interpretan en Slex (ds2dat/d2datdinc), al pasar del .ds al .dat, antes de simular con Siru. Los pedidos de salida quedan preparados para cuando existan los resultados. Simplot recibe la tabla y sus metadatos resueltos y usa PARAPLOT para dibujar. Al recibir un .ds directamente usa el mismo procesamiento previo, sin duplicar reglas fisicas. La migracion del codigo historico esta pendiente; ver ../slex/d2datdinc/doc/GRAMATICA.md, seccion 3.9, y doc/DAT-PARAPLOT.md.

Pendiente no prioritario, solo documentado: RESULTADO GRAFICO seria la unica excepcion que permitiria a Simplot cambiar unidades de presentacion, despues de Siru y solo para el grafico, sin modificar la tabla original ni el calculo. No esta implementado.

Regla comun acordada, pendiente de implementar: el archivo nuevo conserva
su nombre; el anterior pasa a NOMBRE_vN.EXT, sin sobrescribir respaldos.
Tambien alcanza los graficos. Ver ../POLITICA-ARCHIVOS.txt.

La misma politica exige recibir toda la informacion por stdin, mostrar los graficos en X por defecto y no generar archivos salvo con -save. -noX suprime la ventana; -save guarda SVG, con o sin ventana. Pendiente: el --stdin actual aun prepara archivos internos, las fuentes externas no viajan por el pipe y los motores todavia generan archivos sin -save. Las instrucciones siguientes describen ese estado actual, no el comportamiento futuro.

Lee tablas y descripciones PARAPLOT y usa Gnuplot para producir gráficos.
Tambien recibe descripcion y datos por entrada estandar con --stdin:
una cabecera JSON y la tabla completa, sin abrir el DS ni el SIMUL del
productor. Siru usa este pipe por defecto; -nosimplot lo desactiva.
Contrato, ejemplo y limites en doc/DAT-PARAPLOT.md, "Entrada estandar".
No simula el sistema ni necesita SCEPTRE instalado. El identificador histórico
"sceptrevars" del encabezado de las tablas solo nombra las columnas.

Manual integral actualizado: doc/manual/simplot.tex; generar el PDF con
make -C doc/manual. Incluye filosofia, instalacion, usos concretos, unidades,
calendario, API, Gnuplot, limites, extensiones y comparacion con otros programas.
Ejemplos verificables: make -C doc/manual check (tambien en make check).
El manual es posterior a los paquetes -3 publicados; no se republicaron.

Barras de error (fuentes desde r2760): puntos/lineas admiten columnas
limites_x=MIN:MAX y limites_y=MIN:MAX, con SIMPLOT_VERSION=2.
Simplot recibe los limites absolutos ya calculados y solo los dibuja.
Conversion de centros y extremos via Tabular2; no calcula incertidumbres.
Corpus: corpus/barras-error/; contrato: doc/DAT-SIMPLOT-V2.md.
Requiere actualizar tambien el traductor slex, no solo los modulos Perl.

Plan de ampliacion: el procesamiento numerico general se agregara a Tabular2
y Simplot consumira sus resultados para dibujar, sin duplicar algoritmos.
Funciones tipicas y pendientes: ../tabular2/doc/PLAN-PROCESAMIENTO-NUMERICO.md.
La seleccion/conversion historica v1 no cambia. El motor v2 ya usa Tabular2
para leer tablas y exportarlas con 17 cifras; no implementa calculos propios.

V2 admite RESULTADOS, UNIDADES y ANADIR_GRAFICOS: agrupa pedidos por
magnitud/unidad y delega las conversiones de presentacion a Tabular2 y
libunidades (GNU units). Usar tempC/tempF para temperaturas absolutas;
C significa coulomb. Tabular >= 2.0-16 incluye --unidad y --unidad-origen.
Paquetes coordinados construidos y probados: doc/PAQUETES.md.
Contrato y ejemplo: doc/DAT-SIMPLOT-V2.md. Un estado sin tiempo puede
graficarse con puntos X:Y; corpus/psicro-punto lo prueba en ambos motores.

Proyecciones por pares, sin tiempo ni interpolaciones inventadas:
    simplot --pares estado.simul
    simplot --pares --columnas TEMP,TBH,WWW --directorio dibujos estado.ds
Acepta tablas o DS/DAT v2; OUTPUTS sin PARAPLOT se completa mediante slex.
El DAT de calculo no se modifica. Entre 2 y 12 columnas, paneles de hasta
15 proyecciones; --fuente y --bloque seleccionan tablas no ambiguas.

Empaquetado: ./hacer-pkg usa simplot.summa, corre todas las pruebas y crea
deb, tgz, rpm (si hay rpmbuild) y fuentes. Requiere d2datdinc >= 1.0-25,
tabular >= 2.0-16 y las dependencias de BUILDDEPENDS. No instala ni publica.
Las variables SIMPLOT_D2DATDINC y SIMPLOT_INTERPOLA permiten seleccionar
ejecutables explicitamente al probar un prefijo aislado; por defecto usa
el arbol hermano compilado y, instalado, PATH.

Publicacion 09/10/2026: version 2017.0.2.R1017-3 en el canal inestable de
https://www.simusol.org/downloads/simplot/otros/ (DEB, RPM, TGZ, fuentes,
summa y MD5). Descarga HTTPS comparada con los cinco originales: identica.
DEB construido/probado en Ubuntu 22.04, sin instalar en el anfitrion.
Falta publicar las dependencias nuevas slex 1.0-25 y Tabular2 2.0-16 para
una instalacion publica completa. No se promovio a estable. doc/PAQUETES.md
registra los artefactos, los limites y la descarga de esta primera entrega.

Transferencias de paquetes con SummaPack (no instalan ni cambian la web):
    make subir PRUEBA=1
    make subir
    make bajar PARA=deb CANAL=inestable
    make bajar PARA=fuentes DESCARGAS=/ruta/de/descargas
subir exige los artefactos de la VERSION actual anotados en ../subir.lista,
con sus MD5; no publica paquetes antiguos ni de otros proyectos. PRUEBA=1
solo muestra el plan local, sin conectar. Configuracion SSH/HTTPS, requisitos,
construccion y promocion a estable: doc/PAQUETES.md. Herramientas en
../summapack/bin o PATH; se pueden seleccionar con SUMMAPACK_BIN.

Documentacion y analisis
-----------------------

API Perl: SimPlot::Contexto permite trabajos independientes en un proceso,
con rutas/configuracion por contexto y salida exclusiva por llamada.
El motor v2 trabaja directamente; el historico se aisla en un proceso nuevo.
No llamar sus globales directamente para alternar sesiones. Contrato,
ejemplo y limites: doc/REENTRANCIA.md.

Indice completo: doc/README.md. No contiene solo la copia de la web:
  doc/GUIA-USO.md              guia integrada, RESULTADOS/PARAPLOT y ejemplo v2
  doc/historico/README.md      originales trasladados de share, sin alterarlos
  doc/REVISION-GRAFICADORES.md  revision de Plot, SD2, Observable Plot y Plot2
  doc/PLAN-FUNCIONAL.md         comparacion de funciones y plan de ampliacion
  doc/DAT-PARAPLOT.md           lectura slex, DAT y uso compartido con Siru
  doc/DAT-SIMPLOT-V2.md         v2 operativo: sintaxis, dibujo y limites
  doc/PRUEBAS.md                resultados, correcciones y limites actuales
  doc/PAQUETES.md               versiones, artefactos y prueba instalada
  doc/manual-extraido/         fragmentos especificos del manual de Simusol
  corpus/README.md             ejemplos autonomos y expectativas

Los calculos generales se planifican en Tabular2; Simplot los consumira.

Codigo historico: viejos/README.md describe los paquetes archivados y los
cuatro archivos retirados del arbol activo. Las variantes sin llamadas en
AuxiliaresPP, AyudasPP y GlobalesSP se conservan en bloques POD comentados
(=begin comment ... =cut), no ejecutables. No agregar viejos a PERL5LIB.
Se retiro de inicio la limpieza antigua de /tmp/simusol.*; el graficador
no consume esos temporarios de Dia. tests/historicos.t comprueba el retiro
y la depuracion sin referencias al modulo GlobalesSimusol archivado.

Dependencias (Debian/Ubuntu)
---------------------------

  sudo apt install perl gnuplot libpath-class-perl libcapture-tiny-perl d2datdinc tabular

El lector d2datdinc debe incluir el contrato GLOBAL.simplot (fuentes del
08/10/2026, r2611 y siguientes); un paquete anterior no basta. Para trabajar
desde el árbol compilar ../slex/d2datdinc. Simplot lo encuentra allí, sin
instalarlo. Para generar v2 se requiere r2653 o posterior del lector.
Se requiere d2datdinc >= 1.0-25 y Tabular >= 2.0-16; desde el arbol se
usan los ejecutables hermanos compilados. JSON::PP viene con Perl.
Un DAT con descripcion grafica no invoca slex; uno con solo OUTPUTS si.

Para ventanas X11: gnuplot-x11 y una sesión gráfica. Para PNG/EPS no hace falta
pantalla: usar -graf=4. Las dependencias Perl también figuran en Makefile.PL
y simplot.summa. El empaquetado actual no usa los instaladores de 2017;
debian/control y rules se regeneran desde el manifiesto en la copia limpia.

Instalacion desde fuentes: make install
-------------------------------------

Con las dependencias anteriores instaladas, desde este directorio:

  make
  make check
  sudo make install

El destino predeterminado es /usr/local. No hace falta configure ni ejecutar
perl Makefile.PL: ese archivo pertenece al sistema antiguo y sobrescribiria
el Makefile actual. make comprueba herramientas y sintaxis; make check
ejecuta las pruebas. make install solo copia archivos: no descarga, no
instala dependencias ni ejecuta pruebas como root.

Para instalar sin sudo, en un prefijo propio:

  make install PREFIX="$HOME/.local"
  "$HOME/.local/bin/simplot" --pares /ruta/estado.simul

Para preparar un arbol de instalacion sin tocar el sistema:

  make install PREFIX=/usr DESTDIR=/tmp/simplot-preparado

Se instalan bin/simplot (y alias simplot.pl), share/perl5/{SimPlot,Simusol},
share/simplot/{corpus,examples} y share/doc/simplot. El ejecutable carga los
modulos del propio prefijo sin configurar PERL5LIB; agregar PREFIX/bin al
PATH para invocarlo por nombre. DESTDIR no queda incrustado en los archivos.
No se copian metadatos SVN ni respaldos/estado de sincronizacion de la web.

Desinstalar con los mismos PREFIX y DESTDIR usados al instalar:

  make uninstall PREFIX="$HOME/.local"
  make uninstall PREFIX=/usr DESTDIR=/tmp/simplot-preparado

El instalador guarda share/simplot/install-manifest.json, con rutas relativas,
SHA256/modos de archivos, enlaces y directorios creados. uninstall conserva
archivos ajenos y modificados; si quedan modificados, devuelve error y conserva
el manifiesto para reintentar tras revisarlos. Solo quita directorios propios
vacios; nunca borra el prefijo. No atraviesa directorios enlazados. No ejecutar
install/uninstall simultaneos sobre el mismo destino ni editar el manifiesto.
Las instalaciones anteriores sin manifiesto no se desinstalan automaticamente.
Para instalaciones DEB usar apt remove simplot, no make uninstall.

  make distcheck

Crea y extrae un tar de fuentes en un temporal, ejecuta make check, instala
en un prefijo con espacios, genera proyecciones PNG y desinstala sin restos.
Repite install/uninstall con PREFIX=/usr y DESTDIR temporal. Requiere tar y
las dependencias de prueba instaladas en PATH; no necesita SVN ni sudo.
El temporal se elimina si todo pasa y se conserva, con su ruta, si falla.
No genera paquetes publicables ni instala en /usr o /usr/local.

Si ya se usa el paquete DEB, no hace falta ejecutar sudo make install:
la copia en /usr/local tendria prioridad en muchos PATH. Para probar,
usar un prefijo temporal o DESTDIR y ejecutar su ruta completa.

SummaPack: simplot.summa declara FUENTES_CONSTRUIR='make && make check' y
FUENTES_INSTALAR='make install PREFIX="$PREFIX"'. El empaquetado invoca
este mismo instalador con PREFIX=/usr y DESTDIR, sin duplicar la copia.
La revision -3 del manifiesto identifica este cambio; los paquetes -2
ya generados no se reescriben ni contienen este nuevo recorrido de fuentes.
Verificacion actual con transferencias: make check, 567 comprobaciones en 21
archivos, incluidas 25 de subida/bajada con servidor local. distcheck PASS;
en la copia aislada se omiten dos comparaciones con Siru y cinco integraciones
con SummaPack, porque no se copian esos proyectos vecinos.
Antecedente con uninstall: 542 comprobaciones en 20 archivos, incluidas 36
de desinstalacion segura; distcheck tambien PASS.
Antecedente de la integracion documental: 506 comprobaciones en 19 archivos,
incluido el ejemplo extraido de la guia.
Antecedente del instalador: 383 pruebas en arbol/exportacion limpia y un
DEB -3 de prueba; ese paquete no incluye los cambios posteriores.
Esas etapas no instalaron sobre el DEB actual. La publicacion posterior -3
y su prueba instalada en contenedor se registran en doc/PAQUETES.md.

Dependencias del paquete fuente
------------------------------

Declaradas en BUILDDEPENDS de simplot.summa; de alli se genera Build-Depends
de debian/control en la copia de construccion:

  debhelper-compat (= 13), perl, make, d2datdinc (>= 1.0-25),
  tabular (>= 2.0-16), libpath-class-perl, libcapture-tiny-perl,
  gnuplot-nox (>= 5) o gnuplot (>= 5), coreutils

Perl aporta Test::More y prove. Module::Install viene incluido en inc/,
pero no participa en el empaquetado actual. Gnuplot y coreutils
(timeout) permiten ejecutar las pruebas del fuente sin servidor gráfico.
Test::More queda como dependencia de pruebas en Makefile.PL, no de ejecución.
No se requieren SCEPTRE, SWIG ni encabezados de Perl. Compilar Simplot no
requiere C/C++; compilar desde fuentes su lector slex sí requiere las
herramientas y bibliotecas declaradas por ese paquete.

Para preparar las herramientas del empaquetado Debian y verificar lo pedido:

  sudo apt install dpkg-dev debhelper make perl gnuplot \
       libpath-class-perl libcapture-tiny-perl coreutils d2datdinc tabular
  ./hacer-pkg

hacer-pkg verifica las dependencias contra el control recien generado,
no contra el debian/control historico conservado en el arbol.
El 09/10/2026 se construyeron los tres proyectos en Ubuntu 22.04 aislado
y se verifico su instalacion limpia; no se instalaron en el host.

Prueba automática desde este directorio
---------------------------------------

  prove -v tests/*.t

Usa temporales y el ejemplo propio examples/temperatura.simul. Comprueba carga
sin SCEPTRE, tres PNG y tres EPS completos, ausencia de X11 con -graf=4, modos
clasificado, -noclas y -ncgf, y propagación de errores de Gnuplot.
Incluye los cinco modos de entrada, selección interactiva y combinaciones.
El detalle y los límites de la verificación están en doc/PRUEBAS.md.
La comparación funcional con otros graficadores y las etapas pendientes
están en doc/PLAN-FUNCIONAL.md, con avances y pendientes separados.
No usar scripts/tests.sh como prueba actual: depende de archivos y rutas viejos.

Ejemplo manual aislado (Bash)
----------------------------

  simplot_fuentes="$HOME/svn/siru/simplot"
  simplot_salida=$(mktemp -d /tmp/simplot-ejemplo.XXXXXX)
  cp "$simplot_fuentes/examples/temperatura.simul" "$simplot_salida/"
  cd "$simplot_salida"
  perl -I"$simplot_fuentes/lib" "$simplot_fuentes/scripts/simplot.pl" \
       -nokill -graf=4 temperatura.simul

Resultados: png/ (imágenes), eps/ (PostScript), results/ (*.gnu),
gra/ (guion para repetir), tests/ (PARAPLOT y registros). Se crean también
registros auxiliares en el directorio de trabajo; por eso el ejemplo usa
un temporal. El modo -noclas deja las salidas sin separar por tipo.

Para ver ventanas además de guardar archivos, reemplazar -graf=4 por -graf=3.
La opción -sinventana permite también responder a las preguntas con -i
sin abrir ventanas: se conservan los PNG/EPS de los gráficos seleccionados.
Ya no cierra ventanas ajenas al iniciar. -nokill se acepta por compatibilidad;
-kill se rechaza con estado 2 porque no hay registro de procesos propios.

Al terminar la generación normal, los PNG/EPS ya están escritos; los errores
de Gnuplot se muestran y producen una salida distinta de cero.

Alcance de esta recuperación
---------------------------

Motor tipado v2: SIMPLOT_VERSION = 2 en RUN_CONTROLS del .ds activa la
generacion de fuentes, series, ejes y paneles en el DAT. Simplot lee DS o
DAT; Siru conserva la misma seccion grafica. V1 sigue siendo el defecto.
V2 dibuja lineas/puntos y paneles, escalas lineales/log/epoch e inversion,
PNG/EPS/PDF/SVG y bloques por indice mediante Tabular2. Crea un directorio
de salida exclusivo por corrida, sin escribir junto al documento de entrada.
No traduce aun todo PARAPLOT: las ordenes no implementadas fallan claramente.
Uso, ejemplo y limites: doc/DAT-SIMPLOT-V2.md; corpus/modelo-v2/.

Comprobados LISTA y RESULTADOS en .ds, PARAPLOT manual, tablas .simul,
tablas numéricas sin encabezado e interacción por índices y nombres, con
multiplot y superposición. Una tabla sin metadatos usa COL1..COLn, no se
interpreta como tiempo y produce n-1 gráficos contra la primera columna.
Con metadatos .simul se conserva el agrupamiento por magnitud y unidad.

T A B y # T A B reciben el mismo tratamiento. RESULTADOS explicito sin
magnitud/unidad agrupa las series cuando tampoco hay metadatos que las
distingan; sin instrucciones se conserva la generacion automatica separada.

Falta ampliar las pruebas a .hashplot, variantes de .gra antiguos, todas las
variantes de PARAPLOT y ventanas X11 automatizadas. No se declara completa
la recuperación de todo el paquete. ArchSimulV.pm contiene el lector activo.
Las páginas históricas descargadas del sitio están indexadas en doc/README.md.

Actualización: corpus y lector compartido (08/10/2026)
-----------------------------------------------------

Ya se prueban los CAJ, las corridas arch_var y selec; ArchSimulV.pm se corrigió y Plot fue
revisado y archivado con historia en viejos/plot. El corpus autónomo está en
corpus/; contiene datos calculados y no necesita SCEPTRE.

DS, DS2 y PARAPLOT usan ahora d2datdinc/slex. Simplot acepta además DAT,
sin requerir el DS original. Siru conserva el mismo GLOBAL.simplot.
Contrato, comandos, rutas y límites: doc/DAT-PARAPLOT.md.
Extractos específicos de los manuales: doc/manual-extraido/.
Revisión de Plot, sd2 nuevo, Observable Plot y Plot2:
doc/REVISION-GRAFICADORES.md.
