# JHepWork

JHepWork es un marco de trabajo gratuito de análisis de datos para científicos, ingenieros y estudiantes escrito en Java. El programa está diseñado para áreas de gráficas científicas interactivas en 2D y 3D y contiene bibliotecas numéricas científicas implementadas en Java para funciones matemáticas, números aleatorios, análisis estadístico, ajuste de curvas de regresión y otras actividades de minería de datos. jHepWork se basa en un lenguaje de programación de alto nivel, Jython (Python implementado en Java), pero puede utilizarse también codificación Java para llamar a bibliotecas jHepWork numéricas y gráficas.
jHepWork es un intento de crear un entorno de análisis de datos usando paquetes de código abierto con una interfaz de usuario coherente y para crear una herramienta competitiva a los programas comerciales. La idea detrás del proyecto es la incorporación de código abierto paquetes de software matemático y numérico con interfaz de usuario de tipo gráfico en un programa coherente en el cual la interfaz de usuario principal se basa en clases de nombre corto llamado Java/Python. Esto es necesario para construir un ambiente de análisis utilizando el concepto de secuencias de comandos de Java. Un ejemplo típico se muestra más adelante.
HepWork funciona en cualquier plataforma (Windows, Macintosh, Linux, etc.) donde se pueda instalar Máquina virtual Java. Las secuencias de comandos (scripts) y el código de Java (en el caso de la programación Java) se puede ejecutar tanto en un editor de interfaz gráfica de usuario de jHepWork como en programas por lotes. Las bibliotecas gráficas de jHepWork se pueden utilizar para crear applets. Todas las gráficas (o "lienzos") utilizadas para la representación de datos pueden ser embebidos en navegadores web.
jHepWork se puede utilizar en todo lugar donde el análisis de grandes volúmenes de datos numéricos, de minería de datos, análisis de datos estadísticos y matemáticos son esenciales. El programa puede ser utilizado en ciencias naturales, ingeniería, y modelado y análisis de mercados financieros, entre otros. jHepWork es considerado entre los cinco mejores paquetes de software de minería de datos libre y código abierto. Hay varios comentarios (reseñas) más sobre jHepWork disponibles. Si bien el programa entra en la categoría de software de código abierto, no es completamente libre para uso comercial (ver más abajo).

## Resumen

jHepWork tiene varias características útiles para el análisis de datos:
* Puede utilizar secuencias de comandos Jython, BeanShell, o el estándar de Java;
* Al estar basado en Java, es verdaderamente multiplataforma;
* Puede ser integrado con la Web en forma de applets o aplicaciones Java Web Start, por lo que es adecuado para ambientes de análisis distribuido a través de Internet;
* jHepWork ha sido diseñado desde cero para aguantar la programación con varios subprocesos;
* Tiene un IDE multifuncional, con resaltado de sintaxis, verificador de sintaxis, completador de código y analizador.
* Incluye un sistema de ayuda con completado de código basado en la tecnología Java de reflexión;
* Utiliza una plataforma de I/O neutral basada en Protocol Buffers de Google. Los datos pueden ser escritos en C++ y

## Características de análisis de datos

El paquete es compatible con varias características matemáticas, de análisis de datos, y de minería de datos:
* Visualización interactiva de gráficos 2D y 3D de datos, funciones, histogramas, y diagramas.
* Histogramas en 2D y 3D, así como histogramas de perfil.
* Álgebra matricial.
* Generación de números aleatorios y muestras estadísticas.
* Trabajo con funciones, incluyendo ecuaciones paramétricas en 3D.
* Dibujo de gráficas de curvas de nivel, y de diagramas de dispersión.
* Redes neuronales.
* Regresión lineal y ajuste de curvas utilizando varias técnicas de minimización (optimización) matemáticas.
* Agrupación o clusterizado de análisis (algoritmo K-promedios, análisis de agrupamiento (de paso único o multipasos), Fuzzy (C-means) algoritmo de agrupamiento jerárquico aglomerativo).
* La entrada/salida de todos los objetos de datos (matrices, funciones, histogramas) se basa en serialización Java. También soporta E/S desde/a C++ y otros lenguajes de programación con el formato Google's Protocol buffer. Soporta varios tipos de bases de datos (son compatibles las bases de datos Java-objeto y las basadas en SQL).
* Autómata celular.
* Salida consistente en gráficos vectoriales de alta calidad. Soporta PostScript, EPS, PDF y formato raster.

## Términos de licencia

El código fuente del núcleo de jHepWork (jhplot) se encuentra bajo licencia GNU General Public License, pero el proyecto tiene algunas restricciones para el uso comercial dado que los archivos de idioma, los archivos de documentación, los ejemplos, el instalador, las bases de datos code-assist, y la ayuda interactiva tienen licencia para uso no comercial (licencias Creative Commons). Miembros del proyecto jHepWork tienen varias ventajas (licencia para uso comercial, acceso al repositorio de código fuente Doxygen, sistema de ayuda extendida, repositorio de scripts de usuario, etc).

## Ejemplos de scripts Jython

A continuación se muestra un ejemplo sencillo que ilustra cómo llenar un histograma 2D y mostrarlo en un lienzo o área de gráfica. El script (secuencia de comandos) también crea una figura en formato PDF. Este script muestra cómo pegar y mezclar clases Java nativas (del paquete java.util) y clases jHepWork (el paquete jhplot) dentro de un script escrito con la sintaxis de Python.
Este script puede ser ejecutado bien usando jHepWork IDE o un Jython independiente después de especificar la ruta de clases (classpath) a las bibliotecas jHepWork. En el sisguiente enlace se ve la salida que proporciona este script:
* https://web.archive.org/web/20110726212206/http://jwork.org/jhepwork/examples/jhplot3d.png

## Historia

jHepWork tiene sus raíces en la física de partículas, donde la minería de datos es una tarea primordial. jHepWork fue escrito inicialmente para el análisis de los datos de partículas físicas utilizando el concepto de software Java del Colisionador Lineal Internacional del proyecto desarrollado en SLAC. Las versiones posteriores de jHepWork fueron modificadas para uso público en general (es decir, para científicos, ingenieros, estudiantes con fines educativos, etc) ya que el proyecto del Colisionador Lineal Internacional se ha estancado. En la actualidad, jHepWork es un programa apoyado por la comunidad. La principal fuente de referencia es el libro "El análisis científico de datos mediante secuencias de comandos Jython y Java"(V.O. "Scientific Data analysis using Jython Scripting and Java"), que analiza en profundidad los métodos de análisis de datos usando scripts Java y Jython.