Présentateurs : @martindemel et @jthi
Vous pouvez également regarder l'enregistrement de la session du West Coast Scripter's Club sur l'intégration de Python dans JMP 18 par Paul Nelson.
Quelques commentaires de mes exemples
La démo HDBSCAN que j'ai réalisée nécessite JMP Pro en raison de l'utilisation de la plateforme d'intégration multivariée de JMP.
Les parties orange sont pour JMP et bleues pour Python

Je commence principalement par l'intégration de Python dans JMP, donc mon code Python n'est certainement pas le plus propre, mais pour un exemple rapide, cela devrait être bon.
J'utilise Python Send() pour envoyer des variables côté Python
Python Send(dt);<BR />Python Send(cluster_cols);<BR />Python Send(clustersize);<BR />Python Send(samples);<BR />Python Send(epsilon);
puis Python Submit() pour exécuter le code ci-dessous
import hdbscan
import jmp
import numpy as np
import pandas as pd
df = pd.DataFrame()
for colname in cluster_cols:
df[colname] = np.array(dt[colname])
clusterer = hdbscan.HDBSCAN(min_cluster_size=int(clustersize), min_samples=int(samples), cluster_selection_epsilon=epsilon)
cluster_labels = clusterer.fit_predict(df)
df['Clusters'] = cluster_labels
col = dt.new_column("CLUSTERS", jmp.DataType.Numeric, jmp.ModelingType.Nominal)
dt[col.name] = list(df.iloc[:,2])
new_col = col.name
del df
L'exemple exécute d'abord la réduction de dimension (tsne ou umap), hdbscan sur les deux colonnes créées, affiche le graphique, définit le script de table pour recréer le tracé, regroupe les colonnes et définit les paramètres HDBSCAN sur les propriétés de colonne de note CLUSTERS.

Comme Python Get Graphics() est obsolète, vous devez trouver d'autres moyens d' obtenir des images de Python vers JMP. L'exemple de JMP montre comment procéder en enregistrant d'abord l'image, puis en utilisant Open() de JMP pour charger l'image dans JMP. J'ai montré comment utiliser les modules Python io et base64 pour charger l'image dans JMP.
Names Default To Here(1);
Python Submit("\[
import base64
import io
import matplotlib.pyplot as plt
plt.clf()
plt.plot([1, 2, 3, 4])
plt.ylabel('some numbers')
plt.draw()
my_iobytes = io.BytesIO()
plt.savefig(my_iobytes, format='png', bbox_inches='tight')
my_iobytes.seek(0)
base64data = base64.b64encode(my_iobytes.read()).decode()
]\");
img = Open(Char To Blob(Python Get(base64data), "base64"), "png");
nw = New Window("test", img);
Enfin, je tiens à noter qu'il existe de nombreuses façons d'effectuer la transformation entre le dataframe pandas et le datatable JMP. Vous pouvez par exemple effectuer une transformation "directe" à l'aide de fichiers .csv, utiliser list(df.iloc[:,2]) ou df[col].values.tolist(). Il existe des exemples de tout cela et je ne me suis pas encore familiarisé avec les différentes méthodes pour pouvoir faire des recommandations sur ce que vous devriez utiliser.
@Ressel vient d'ajouter les fichiers !