JMP® 18 : Aller au-delà de la simple satisfaction des PythonistasIl y a un an, les utilisateurs de JMP qui utilisaient également Python ont clairement indiqué qu'ils pensaient que notre interface Python n'était pas optimale. Aie! Nous pensions que l'intégration JMP et Python que nous avions introduite il y a plus de cinq ans faisait mouche. Réalisant que ce n’était que satisfaisant (en d’autres termes, que c’était assez bon mais pas le meilleur), nous avons décidé de relever le défi de front.
Paul Nelson, développeur principal de systèmes chez JMP, a dirigé les efforts visant à créer un environnement de développement cohérent, complet et intégré pour l'écriture et l'exécution de scripts Python au sein de JMP dans JMP 18.
J'ai récemment parlé avec Paul de l'intégration améliorée de JMP et Python. Paul a souligné que l'objectif était de fournir un environnement nettement plus productif aux développeurs Python. Certaines améliorations clés incluent :
Un environnement cohérent qui fonctionnera immédiatement une fois installé, sans configuration. Python prend en charge un nombre illimité d'environnements Python clients. L'ajout de nouvelles fonctionnalités JMP et Python qui ne pouvaient pas être testées dans un nombre illimité d'environnements Python clients était intenable. La solution? JMP 18 inclut une version intégrée de Python qui constitue la base d'un environnement entièrement testé qui fonctionnera immédiatement après l'installation.
Accès direct à la mémoire aux tables de données Python dans un environnement réel. Dans les versions précédentes, les utilisateurs de Python accédaient à une copie d'une table de données JMP. Désormais, JMP 18 offre un accès direct aux tables de données JMP depuis l'environnement Python, afin que les utilisateurs Python puissent accéder, créer et modifier des tables JMP à partir de scripts Python dans JMP.
Un nouvel éditeur de script Python qui utilise les commentaires Python et la coloration du code, ainsi qu'un journal intégré. L'intégration précédente utilisait JMP Scripting Language (JSL). JSL était familier aux développeurs JSL mais était souvent peu attrayant pour les utilisateurs JMP ayant une expérience Python mais aucune expérience JSL. Dans JMP 18, les utilisateurs peuvent ouvrir et exécuter des scripts Python directement dans l'éditeur de script JMP et exécuter JSL à partir de leurs scripts Python. L'index de script JMP documente et donne des exemples de la nouvelle fonctionnalité. Disposer d'un environnement cohérent pour les scripts Python constitue également une base pour l'écriture de compléments à l'aide de Python ainsi que de JSL.
Écoutez-en davantage sur Paul :
Pensez à vous inscrire au webinaire en direct de Paul, le 21 mars , Tutoriel du développeur : Nouvelles fonctionnalités d'intégration et de script Python dans JMP 18 pour l'entendre fournir tous les détails et démontrer l'interface. Et si vous assistez au JMP Discovery Summit à Manchester, au Royaume-Uni , vous pourrez entendre Paul parler lors de la séance plénière du matin du 6 mars.
D'ailleurs, n'étant pas un programmeur Python, je n'avais pas entendu la rumeur selon laquelle le créateur de Python, Guido van Rossum, lisait des scripts du « Monty Python's Flying Circus » lorsqu'il a commencé à travailler sur le nouveau langage. Il voulait un nom court, unique et intrigant, alors il a décidé de l'appeler Python. Cela semble plausible !
Paul Nelson, développeur principal des systèmes chez JMP, a dirigé les efforts visant à créer un environnement de développement cohérent, complet et intégré pour l'écriture et l'exécution de scripts Python au sein de JMP dans JMP 18. Le résultat ? Un environnement plus productif pour les développeurs Python qui fonctionne immédiatement une fois installé, donne un accès direct à la mémoire aux tables de données Python dans un environnement en direct, ainsi qu'un éditeur de script Python intégré qui utilise les commentaires Python, la coloration du code et un journal intégré.
Automatisation et scriptsRe: JMP® 18 : Aller au-delà de la simple satisfaction des PythonistasWow, ça a l'air génial !
Re: JMP® 18 : Aller au-delà de la simple satisfaction des PythonistasCommentaire/Question sur le retour des données vers JMP depuis Python.
Actuellement, nous pouvons faire ceci :
dt = Python Get( df )
où 'df' est une trame de données Python.
J'ai remarqué que la commande ci-dessus fait réellement écrire la trame de données dans un CSV dans le dossier $TEMP, puis appeler un JSL pour la lire, puis supprimer ce CSV temporaire. Pour les fichiers volumineux, il y a évidemment une surcharge à la fois pour écrire le fichier et pour l'analyser/le lire.
Ce serait très bien s'il pouvait s'agir d'un transfert en mémoire directement de Python vers JMP
Re: JMP® 18 : Aller au-delà de la simple satisfaction des PythonistasPar curiosité, JMP v18 prendra-t-il en charge les colonnes de formules avec du code python ?
Re: JMP® 18 : Aller au-delà de la simple satisfaction des PythonistasDans JMP 14-17, Python Send ( dt ) et Python Get ( df ) fonctionnaient en enregistrant le CSV via un fichier temporaire. C'est l'un des changements majeurs de JMP 18. Avec JMP 18, Python Send ( dt ) crée désormais un objet jmp.DataTable en Python. Ceci n'est pas une copie, c'est une référence en mémoire au tableau de données. Il peut être lu et modifié directement depuis Python. Depuis JSL, si vous effectuez un Python Get ( dt ), la table de données, vous obtiendrez la référence de la table de données en mémoire. Le Python Get( df ) original restait pour des raisons de compatibilité ; méthode pour obtenir une trame de données pandas dans une table de données JMP en tant que copie.
Vous avez désormais le pouvoir de prendre un bloc de données en Python, de simplement parcourir les colonnes du bloc de données et de créer en mémoire la table de données JMP équivalente. Voir jmp.DataTable. dans la nouvelle catégorie Python de l'index de script de JMP 18. Il existe également un sous-répertoire Python pour les exemples de scripts. Vous y trouverez un script JMP2pandas.py qui montre deux façons de créer en mémoire un pandas.DataFrame à partir d'un objet jmp.DataTable, et un exemple de création de l'objet jmp.DataTable à partir de pandas.DataFrame (in-memory)
# 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])
Où df est une trame de données pandas et dt2 est le nouveau DataTable JMP. (notez que dt est également un objet JMP jmp.DataTable, le paramètre type est une valeur d'énumération jmp.DataType. ). Le fichier d'exemple ouvert 'Big Class.jmp' en tant que dt, crée un pandas.DataFrame, puis crée dt2 à partir du bloc de données.
Re: JMP® 18 : Aller au-delà de la simple satisfaction des PythonistasLes colonnes de formule ne prennent pas en charge le code Python dans JMP 18. C'est quelque chose qui est à l'étude et qui constituerait une fonctionnalité intéressante. Il fallait ajouter une énorme quantité d'infrastructures pour rendre JMP 18 robuste, fonctionner au démarrage, prendre en charge un éditeur de script prenant en charge Python, améliorer les rapports d'erreurs, ajouter un index de script et ouvrir un pont entre Python et JMP. De nombreuses choses qui manquaient depuis un certain temps ont maintenant été améliorées pour créer ce que nous considérons comme un environnement Python invitant et productif au sein de JMP.
Maintenant que le gros du travail a été fait, nous ne mettons pas fin à cette période. Beaucoup plus à venir.