Hay varias características nuevas en JMP 14, muchas de las cuales amplían o mejoran las capacidades de JSL. En este blog cubriré solo algunas de las nuevas características para JSL y el índice de scripting.
Solicitud HTTP
¿Tiene un origen de datos que admita una API REST para acceder a los datos? ¿Le gustaría interactuar con los servicios públicos de la API REST, como las API de Twitter o Google? Ahora en JMP 14, puede acceder a esas API de forma nativa, utilizando la función Nueva solicitud HTTP ().
Aquí hay un pequeño ejemplo tomado del Índice de Scripting que usa un servicio público de API para probar una solicitud POST.
Names Default To Here( 1 );
request = New HTTP Request(
url( "http://httpbin.org/post" ),
Method( "POST" ),
JSON( "\[{"username":"bob","address":"12345"}]\" )
);
data = request << Send();
Después de guardar el resultado de la cadena en la variable de datos en un archivo JSON, puede ver los resultados en la nueva sintaxis JSON resaltada en el Editor de secuencias de comandos. Una vez que decida cómo desea manejar esta respuesta JSON, también puede usar cualquier número de funciones de manejo de JSON, como Parse JSON, JSON to List o JSON to Data Table.
Integración Python
¿Alguna vez has querido aprovechar el poder de Python desde una de tus aplicaciones JMP? Con la integración Python de JMP 14, ahora es más fácil que nunca.
A continuación se muestra un ejemplo que crea un diagrama de dispersión de peso en función de la altura, coloreado por edad, utilizando uno de los paquetes Python de matplotlib.
NamesDefaultToHere( 1 );
// Establish connection to Python
PythonConnection = PythonConnect();
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Send the data table to Python as a dataframe
PythonConnection << Send( dt );
Close( dt, NoSave ); // close the JMP data table
// Submit python program that uses our data table (dataframe in python)
ml = PythonConnection << Submit(
"\[
import matplotlib.pyplot as plt
plt.scatter(dt.weight, dt.height, c=dt.age)
plt.ylabel('Height')
plt.xlabel('Weight')
plt.title('Weight vs. Height for Big Class')
plt.show(block=False)
]\"
);
// Get the graphics added by 'plt.show(...)'
plot = PythonConnection << Get Graphics( png );
// Show the graphic in a new window
pngJMP = NewWindow( "Plot", PictureBox( plot ) );
// close the plot
PythonConnection << Submit( "plt.close()" );
// disconnect from python
PythonConnection << Disconnect;

Las clases
Si usted es un programador JSL con un fondo orientado a objetos, o si quiere probar cosas nuevas en su aplicación avanzada, podría interesarle la nueva funcionalidad para definir clases. Las clases son como espacios de nombres, pero puede tener varias instancias de ellas, conocidas como objetos. Esto le permite crear múltiples instancias de algo así como un grupo de cuadros de visualización, cada uno de los cuales tiene sus propios comportamientos.
Estos comportamientos en una clase se hacen usando lo que se llama un método. Un método es muy similar a lo que actualmente se conoce como una función, excepto que los métodos solo pueden existir dentro de una clase.
Este es un ejemplo de una calculadora simple que se puede agregar a una ventana varias veces, sin pisar los dedos de los demás.
// Define the class so we can create instances of it later
Define Class(
"Calculator",
// Define member variables
content = Empty();
num1_neb = Empty();
num2_neb = Empty();
operand_cmb = Empty();
calc_btn = Empty();
result_neb = Empty();
// _init_ is special method called when a new object is created
_init_ = Method( {},
content = H List Box(
num1_neb = Number Edit Box( 0 ),
operand_cmb = Combo Box( {"+", "- "} ),
num2_neb = Number Edit Box( 0 ),
calc_btn = Button Box( "=",
calc( operand_cmb << Get Selected(), num1_neb << Get(), num2_neb << Get() );
),
result_neb = Number Edit Box()
);
initializeValues();
);
// called from the _init_ method
initializeValues = Method( {},
num1_neb << Set( Random Integer( 10 ) );
num2_neb << Set( Random Integer( 10 ) );
);
// called when '=' button is clicked
calc = Method( {operand, n1, n2},
result = If( operand == "+",
addition( n1, n2 ),
subtraction( n1, n2 )
);
result_neb << set( result );
);
// methods called by calc
addition = Method( {n1, n2},
Return( n1 + n2 )
);
subtraction = Method( {n1, n2},
Return( n1 - n2 )
);
);
// Create multiple instances of the Calculator class
c1 = New Object( Calculator );
c2 = New Object( Calculator );
c3 = New Object( Calculator );
// Create a new window with the content of the three instances of Calculator
New Window( "Example", c1:content, c2:content, c3:content );

Usando un proyecto JMP como un IDE
Con los proyectos JMP 14, puede crear fácilmente una vista de pestañas de sus scripts, con un registro integrado y marcadores. Esto puede hacer que la administración del flujo de trabajo sea excelente con todos sus scripts para un complemento o proyecto en un solo lugar. Para obtener más ejemplos de cómo aprovechar las nuevas funciones de los proyectos JMP, consulte el blog Mantente organizado con JMP 14 .

Espero que disfrute de todas estas nuevas características en JSL para JMP 14. Para obtener más mejoras en JSL, consulte la sección de secuencias de comandos del documento Nuevas características, disponible en Ayuda> Nuevas características.