Dado que estás leyendo esto, probablemente sepas que Python es una herramienta de código abierto muy utilizada por científicos e ingenieros (algunos con más entusiasmo que otros, debo agregar ) para abordar diversos problemas .
Hasta ahora, mis conversaciones con los usuarios de JMP® sugieren que la mayoría de ellos desarrollan flujos de trabajo de Python para abordar tareas previas de acceso a fuentes de datos, en lugar de usar Python para, por ejemplo, las tareas de aprendizaje automático para las que suele estar asociado. Teniendo en cuenta la vertiginosa variedad de tipos de archivos únicos de una avalancha de instrumentos diferentes en cualquier industria dada, Python reina como método de referencia para acceder a los datos porque, ¡afortunadamente!, es probable que alguien, en algún lugar, haya creado un marco para obligar a los archivos a revelar sus secretos.
Mi interés inicial en la integración de Python de JMP también estaba orientado al acceso a datos. Antes de unirme a JMP, trabajé en el departamento de cardiología de un hospital local. Cuando JMP lanzó por primera vez la plataforma Functional Data Explorer (FDE), los datos de ECG (también conocidos como EKG) de los latidos del corazón parecían ser perfectos para el análisis en la nueva herramienta: sin un modelo tradicional de arriba hacia abajo de su forma, un enfoque de abajo hacia arriba para capturar su variabilidad de forma común (es decir, dentro de la derivación del ECG, el "latido" que se ve) en todos los pacientes parecía una tarea perfecta para FDE.


Un pequeño inconveniente: todos los ejemplos que pude encontrar de datos de ECG utilizan estándares de archivos WFDB (por “Waveform Database”) que involucran formatos binarios que JMP no abre de forma nativa. Afortunadamente, la renovada integración de JMP y Python ahora complementa el menú de JMP con acceso a todo tipo de archivos, por lo que nuevamente agradezco la generosidad de los solucionadores de problemas que crean paquetes Python adecuados para la tarea.
Después de identificar los datos del ECG y el paquete Python wfdb de PhysioNet.org, las nuevas herramientas integradas en la integración de JMP y Python me permiten:
- Extraiga los datos de ECG de las estructuras de archivos WFDB a través de Python.
- Cree tablas de datos JMP y complételas mediante Python.
- Transfiera los esfuerzos restantes a JMP mediante la ejecución de un archivo JMP Scripting Language (JSL) de pasos creados utilizando JMP Workflow Builder , que captura el código de mis acciones de apuntar y hacer clic de JMP , para la preparación de datos, la visualización y el análisis FDE.
El enfoque “Python-in-a-box” de JMP incluye un editor Python integrado, así como paquetes preinstalados ( jmp y jmputils) con los que puedo:
- Instale otros paquetes de Python necesarios para la tarea utilizando el comando jmputils jpip (en paralelo al pip de Python),
- Luego utilice el método normal de script de Python para importar estos paquetes.
La instalación e importación del paquete wfdb ayudó a superar el primer obstáculo para obtener acceso a los datos en JMP.
################################################################
# let's get this party started - load up some Python packages
################################################################
import jmp
import jmputils
jmputils.jpip('install', 'numpy pandas')
jmputils.jpip('install', 'wfdb')
import numpy as np
import pandas as pd
import wfdb
import os
Si parece Python, es porque lo es. Todo dentro de JMP.
A partir de allí, además de algunos pasos de preparación de datos de Python, los obstáculos restantes se superaron con algunos elementos nuevos de integración de JMP y Python:
- Creación de la tabla de datos JMP mediante la función jmp.DataTable() de Python.
- Agregar columnas a la tabla de datos JMP a través de new_column() antes de pasar la lista de datos.
# migrate the signal data to a **JMP table**
# 'ecgall' is the pandas DataFrame containing 12 columns of ECG lead data
ecgdtname = "ECG Data"
ecgdt = jmp.DataTable(ecgdtname, rg*signal.shape[1]) #2nd argument assigns # of rows
for col in ecgall.columns:
#creating new column
ecgdt.new_column( col, jmp.DataType.Numeric )
#adding data
ecgdt[col] = ecgall[col].tolist()
Solo he mostrado una forma de crear y completar la nueva tabla JMP usando Python, pero existe una variedad de enfoques, incluida la validación de tipos de datos antes de completar o simplemente usar la fuerza bruta.
Por último, jmp.run_jsl() ofrece una forma práctica de hacer que Python ejecute algo de JSL por ti. Para mantener la cordura, mantuve "el lado caliente caliente y el lado frío frío" colocando el flujo de trabajo JSL, derivado del generador de flujo de trabajo que registra mis acciones, en otro archivo por completo y usé la función include() de JSL para hacer referencia a su contenido y ejecutarlo.
jmp.run_jsl('''
include("PTB-XL Post Python Workflow.jsl");
''')
Podría haber tomado la otra ruta y haber usado Python Submit() o Python Submit File() para ejecutar todo desde JSL, pero eso haría que explicar las cosas desde el lado de Python fuera un poco más confuso. Consulta el índice de secuencias de comandos en JMP en Ayuda para obtener más información.
Con las nuevas herramientas de integración de JMP y Python, el único obstáculo para lograr mi objetivo inicial de simplemente ver los datos fue mi falta de experiencia en Python (apenas había incursionado en él justo antes de unirme a JMP hace varios años); usar las herramientas de Python para JMP fue la parte fácil. En solo una breve tarde, pude corregir todos mis errores de codificación de Python para acceder a los datos y compartir la visualización de JMP (vea también el video y los archivos adjuntos a continuación). Es posible que incluso me haya comunicado directamente con el desarrollador (no se lo digan a mi jefe) para expresarle mi gratitud.

Comencé a trabajar en otras herramientas de acceso a datos como sugirió @Bill_Worley aquí y espero que pronto veas algunos de esos esfuerzos en JMP Marketplace . ¿Intentas navegar por tu propio flujo de trabajo de datos y análisis que abarca Python y JMP? Si no lo has visto, @yasmine_hajar ha reunido excelentes recursos para ayudarte a familiarizarte con algunas de las nuevas herramientas descritas anteriormente. Si tienes preguntas, puedes explorar la Comunidad de usuarios de JMP , publicar tu pregunta allí, comunicarte con tu equipo dedicado de JMP o escribir un mensaje a continuación.