JMP 14 comporte plusieurs nouvelles fonctionnalités, dont beaucoup élargissent ou améliorent les fonctionnalités de JSL. Dans ce blog, je ne couvrirai que quelques-unes des nouvelles fonctionnalités de JSL et de l'index de script.
Requête HTTP
Avez-vous une source de données prenant en charge une API REST pour accéder aux données? Souhaitez-vous interagir avec les services publics d'API REST, tels que les API Twitter ou Google? Désormais, dans JMP 14, vous pouvez accéder à ces API de manière native, à l'aide de la fonction New HTTP Request ().
Voici un petit exemple tiré de l'index de script qui utilise un service d'API public pour tester une demande 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();
Après avoir enregistré le résultat de la chaîne dans la variable de données dans un fichier JSON, vous pouvez afficher les résultats dans la nouvelle syntaxe JSON mise en surbrillance Editeur de script. Une fois que vous avez décidé comment vous souhaitez gérer cette réponse JSON, vous pouvez également utiliser un nombre quelconque de fonctions de gestion JSON, telles que Parse JSON, JSON dans la liste ou JSON dans la table de données.
Intégration Python
Avez-vous déjà voulu exploiter la puissance de Python à partir d’une de vos applications JMP? Grâce à l'intégration Python de JMP 14, c'est plus simple que jamais.
Vous trouverez ci-dessous un exemple qui crée un diagramme de dispersion poids / taille, coloré en fonction de l’âge, à l’aide du package matplotlib Python.
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;

Des classes
Si vous êtes un programmeur JSL avec un arrière-plan orienté objet, ou si vous souhaitez essayer de nouvelles choses dans votre application avancée, la nouvelle fonctionnalité de définition des classes pourrait vous intéresser. Les classes sont comme des espaces de noms, mais vous pouvez en avoir plusieurs occurrences, appelées objets. Cela vous permet de créer plusieurs instances de quelque chose comme un groupe de zones d'affichage, chacune ayant son propre comportement.
Ces comportements dans une classe sont effectués à l'aide de ce qu'on appelle une méthode. Une méthode est très similaire à ce que l’on appelle actuellement une fonction, sauf que les méthodes ne peuvent exister que dans une classe.
Voici un exemple de calculatrice simple qui peut être ajoutée à une fenêtre plusieurs fois, sans se marcher sur les pieds.
// 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 );

Utilisation d'un projet JMP en tant qu'EDI
Avec les projets JMP 14, vous pouvez facilement créer une vue à onglets de vos scripts, avec un journal et des signets intégrés. Cela peut permettre une excellente gestion du flux de travail avec tous vos scripts pour un complément ou un projet en un seul endroit. Pour plus d'exemples d'utilisation des nouvelles fonctionnalités de projets JMP, consultez le blog. Restez organisé avec JMP 14 .

J'espère que vous apprécierez toutes ces nouvelles fonctionnalités de JSL for JMP 14. Pour plus d'améliorations dans JSL, consultez la section Script du document Nouvelles fonctionnalités, disponible via Aide> Nouvelles fonctionnalités.