JMP® 18: Más allá de simplemente satisfacer a los PythonistasHace un año, los usuarios de JMP que también usaban Python dejaron en claro que pensaban que nuestra interfaz Python no era óptima. ¡Ay! Pensamos que la integración de JMP y Python que presentamos hace más de cinco años estaba dando en el blanco. Al darnos cuenta de que era sólo satisfactorio (en otras palabras, que era lo suficientemente bueno pero no el mejor), decidimos afrontar el desafío de frente.
Paul Nelson, desarrollador principal de sistemas de JMP, encabezó el esfuerzo para crear un entorno de desarrollo integrado, consistente y con todas las funciones para escribir y ejecutar scripts de Python dentro de JMP en JMP 18.
Recientemente hablé con Paul sobre la integración mejorada de JMP y Python. Paul enfatizó que el objetivo era proporcionar un entorno significativamente más productivo para los desarrolladores de Python. Algunas mejoras clave incluyen:
Un entorno consistente que funcionará inmediatamente después de la instalación, sin necesidad de configuración. Python admite entornos Python de clientes ilimitados. Agregar nuevas capacidades de JMP y Python que no se podían probar en entornos Python de clientes ilimitados era insostenible. ¿La solución? JMP 18 incluye una versión integrada de Python que es la base para un entorno completamente probado que funcionará inmediatamente después de la instalación.
Acceso directo a la memoria de las tablas de datos de Python en un entorno en vivo. En versiones anteriores, los usuarios de Python accedían a una copia de una tabla de datos JMP. Ahora, JMP 18 proporciona acceso directo a las tablas de datos JMP desde el entorno Python, para que los usuarios de Python puedan acceder, crear y modificar tablas JMP desde scripts Python dentro de JMP.
Un nuevo editor de secuencias de comandos de Python que utiliza comentarios de Python y coloración de código, así como un registro integrado. La integración anterior utilizaba JMP Scripting Language (JSL). JSL era familiar para los desarrolladores de JSL, pero a menudo resultaba poco atractivo para los usuarios de JMP con experiencia en Python pero sin experiencia en JSL. En JMP 18, los usuarios pueden abrir y ejecutar scripts de Python directamente en el editor de scripts de JMP y ejecutar JSL desde sus scripts de Python. El JMP Scripting Index documenta y ofrece ejemplos de la nueva funcionalidad. Tener un entorno coherente para los scripts de Python también proporciona una base para escribir complementos utilizando Python y JSL.
Escuche más de Paul:
Paul Nelson, desarrollador principal de sistemas de JMP, encabezó el esfuerzo para crear un entorno de desarrollo integrado, consistente y con todas las funciones para escribir y ejecutar scripts de Python dentro de JMP en JMP 18. ¿El resultado? Un entorno más productivo para los desarrolladores de Python que funciona inmediatamente después de la instalación, brinda acceso directo a la memoria de las tablas de datos de Python en un entorno en vivo y un editor de secuencias de comandos de Python integrado que utiliza comentarios y colores de código de Python y un registro integrado.
Automatización y secuencias de comandosRe: JMP® 18: Ir más allá de simplemente satisfacer a los Pythonistas¡Guau, esto suena increíble!
Re: JMP® 18: Ir más allá de simplemente satisfacer a los PythonistasComentario/Pregunta sobre cómo devolver datos a JMP desde Python.
Actualmente podemos hacer esto:
dt = Python Get( df )
donde 'df' es un marco de datos de Python.
He notado que lo que realmente hace el comando anterior es escribir el marco de datos en un CSV en la carpeta $TEMP, luego invocar un JSL para leerlo y luego eliminar ese CSV temporal. Para archivos grandes, obviamente hay una sobrecarga tanto al escribir el archivo como al escanearlo o leerlo.
Sería muy bueno si esto pudiera ser una transferencia en memoria directa de Python a JMP.
Re: JMP® 18: Ir más allá de simplemente satisfacer a los PythonistasPor curiosidad, ¿JMP v18 admitirá columnas de fórmula con código Python?
Re: JMP® 18: Ir más allá de simplemente satisfacer a los PythonistasEn JMP 14-17, tanto Python Send (dt) como Python Get (df) operaban guardando CSV a través de un archivo temporal. Este es uno de los cambios más importantes en JMP 18. Con JMP 18, Python Send ( dt ) ahora crea un objeto jmp.DataTable en Python. Esto no es una copia, es una referencia viva en la memoria del tabla de datos. Se puede leer y modificar directamente desde Python. Desde JSL, si realiza un Get ( dt ) de Python, la tabla de datos obtendrá la referencia de la tabla de datos en memoria. Por cuestiones de compatibilidad se dejó el Python Get(df) original; método para obtener un marco de datos de pandas en una tabla de datos JMP como copia.
Ahora tiene el poder de tomar un marco de datos en Python y simplemente iterar en las columnas del marco de datos y crear en memoria la tabla de datos JMP equivalente. Consulte jmp.DataTable. en la nueva categoría Python en el índice de secuencias de comandos de JMP 18. También hay un subdirectorio de Python para scripts de muestra. Allí encontrará un script JMP2pandas.py que muestra dos formas de crear un pandas.DataFrame en memoria a partir de un objeto jmp.DataTable y un ejemplo de cómo crear el objeto jmp.DataTable a partir de pandas.DataFrame (en memoria).
# create JMP DataTable from pandas DataFrame
dt2 = jmp.DataTable('BC2',df.shape[0])
for j in range( df.shape[1] ):
dt2.new_column(dt[j].name, dt[j].dtype)
dt2[j] = list(df.iloc[:,j])
Donde df es un marco de datos de pandas y dt2 es la nueva tabla de datos JMP. (tenga en cuenta que dt también es un objeto JMP jmp.DataTable, el parámetro de tipo es un valor de enumeración jmp.DataType). El archivo de ejemplo abrió 'Big Class.jmp' como dt, crea un pandas.DataFrame, luego crea dt2 a partir del marco de datos.
Re: JMP® 18: Ir más allá de simplemente satisfacer a los PythonistasLas columnas de fórmula no admiten código Python en JMP 18. Es algo que se está investigando y sería una gran característica. Había que agregar una enorme cantidad de infraestructura para que JMP 18 fuera robusto, funcionara al inicio, admitiera un editor de secuencias de comandos compatible con Python, mejorara los informes de errores, agregara un índice de secuencias de comandos y abriera un puente de Python a JMP. Muchas cosas que faltaban durante algún tiempo ahora se han mejorado para crear lo que se cree que es un entorno Python atractivo y productivo dentro de JMP.
Ahora que se ha hecho el trabajo pesado, no vamos a dar por terminado el día. Mucho más por venir.