Cas d'utilisation Python et/ou situation(s) de traitement par lotsSalut l'équipe!
Nous avons rencontré des questions sur Python et les problèmes de conformité des licences (par lots) avec certains de nos clients high-tech que je souhaitais partager au sein de notre communauté interne. J'aimerais voir ce fil de discussion se transformer en une discussion contenant non seulement des réponses à mes questions, mais également des cas d'utilisation supplémentaires (Python et par lots) que vous avez tous rencontrés.
Remarque : je ne suis pas un expert en Python !
1) Appeler JMP à l'aide de Python (par opposition à appeler Python à l'aide de JMP). Nos clients souhaitent procéder ainsi. J'ai vu des documents en ligne (non liés à JMP) démontrant la faisabilité de cette solution.
A) Existe-t-il un cas d'utilisation acceptable dans lequel Python appelle JMP ? Cela me semble être une situation de traitement par lots.
S'il s'agit d'une situation de traitement par lots, quelqu'un a-t-il une réponse technique toute prête que nous pouvons fournir à nos clients ? J'ai entendu @Jeff_Perkinson dire « JMP n'a pas été conçu ni testé pour ce cas d'utilisation, nous ne pouvons donc pas garantir le travail effectué à l'aide de JMP de cette manière » (je paraphrase mal ici, désolé Jeff !).
2) JMP prend-il en charge la bibliothèque Python Pandas ? J'ai vu un article de @IkjuShin à ce sujet datant de 2018 et je me demande si du matériel supplémentaire a été produit ici ou si d'autres SE ont rencontré cette question.
J'ai trouvé cet exemple dans le guide de script JMP, ce qui me porte à croire qu'il s'agit d'un cas d'utilisation réalisable pour les intégrateurs JMP/Python.
3) Un client souhaite créer un script JSL contenant une boucle While pour une exécution continue. Le script serait exécuté sur un ordinateur essentiellement dédié à l'exécution de JMP. L'utilisateur lancerait l'exécution du script (et, théoriquement, la terminerait). Je n'ai pas de détails supplémentaires sur le cas d'utilisation mais, compte tenu du contexte de la conversation, imaginez que ce script envoie un ping à une base de données pour obtenir de nouvelles données et mettre à jour des rapports.
A) Est-ce conforme à notre contrat de licence de bureau ?
Cela a-t-il été testé et/ou quels sont les obstacles techniques à sa mise en œuvre de manière fiable ?
Long post... merci de votre écoute et de vos contributions !
Ré : Cas d'utilisation Python et/ou situation(s) de traitement par lotsMerci Martin. Il y a beaucoup de contenu intéressant ici, dont certains me dépassent ! Je devrai le relire plusieurs fois.
Ré : Cas d'utilisation Python et/ou situation(s) de traitement par lotsSalut Jeff,
UN.
Je pense que ce PDF sera une très bonne référence, même à partir de 2009 (https://www.lexjansen.com/nesug/nesug09/ap/AP09.pdf), je l'ai joint aussi.
Il fait référence à certains langages de script et à leurs appels :
COMPARE & CONTRAST
COM Syntax across scripting tools is more alike than different across: Tcl, Perl , Python, R, & VBScript. For example: Start up JMP, Open a Document, Launch a Platform, Run some JSL.
TCL:
package require tcom
set JMP [::tcom::ref createobject "JMP.Application"];
set JMPdoc [$JMP OpenDocument {C:\Big Class.JMP}]
set oneway [$JMPdoc CreateOneway]
$JMP RunCommand "Distribution(
Perl:
use OLE;
use Win32::OLE;
$jmp = Win32::OLE->new('JMP.Application')
my $doc = $jmp->OpenDocument("C:\\Big class.jmp");
$doc -> CreateOneway
$jmp->RunCommand("Distribution(…
Python:
from win32com.client import Dispatch
jmp = Dispatch("JMP.Application")
doc = jmp.OpenDocument("C:/Big class.jmp")
doc.CreateOneway
jmp.RunCommand("Distribution(…
R:
library(rcom)
jmp <- comCreateObject("JMP.Application")
bigclass <- comInvoke(jmp, "OpenDocument", "C:\\Big Class.jmp")
oneway <- comInvoke(bigclass, "CreateOneway")
comInvoke(jmp, "RunCommand",…
VBscript:
set jmp = Wscript.CreateObject("JMP.Application")
set jmpdoc = jmp.OpenDocument("C:/Big class.jmp")
Set Oneway = JMPDoc.CreateOneway
jmp.RunCommand("Distribution(…
B.
Cela semble également être lié (à partir d'une page Python) : https://stackoverflow.com/questions/17931476/how-to-call-a-jsl-script-from-python-script
Sur un Mac, il était mentionné :
import os
os.system('open /Applications/JMP\ Pro\ 13.app/Contents/MacOS/JMP /path/filename.jsl')
il y a un espace entre le chemin/exécutable et le chemin/nom.
Dans votre JSL, assurez-vous que la première ligne ne contient que //! Cela permettra au script de s'exécuter automatiquement à son ouverture. Utilisez également quit(); comme dernière ligne, de cette façon, l'instance de JMP qui est ouverte est fermée.
Notez également : assurez-vous que jmp.exe est disponible dans votre environnement système afin que si vous saisissez « jmp.exe » dans la ligne de commande, il lance jmp. Préparez ensuite votre fichier *.jsl. Utilisez les procédures Python pour exécuter cette commande « jmp.exe *.jsl » et cela ouvrira jmp et exécutera le script *.jsl, puis vous pourrez importer tout ce que vous générez à partir de jmp dans Python.
Et il y a un autre fil de discussion Python qui parle de l'appel d'autres applications à partir de Python : https://stackoverflow.com/questions/247724/how-can-i-launch-an-instance-of-an-application-using-python
Ce fil de discussion communautaire pourrait également vous intéresser : https://community.jmp.com/t5/Discussions/jsl-Script-call-from-Python/mp/206295#M41799
C.
Enfin, la référence d'automatisation (http://www.jmp.com/support/downloads/pdf/jmp1001/automation_reference.pdf) montre comment utiliser l'automatisation OLE. Ou http://www.jmp.com/support/downloads/pdf/vb_automation_reference.pdf
Je ne l'ai pas encore essayé, et je n'ai vu personne dans ma base de clients le faire. Ce que j'ai vu jusqu'à présent est le cas d'utilisation de la construction d'un modèle dans JMP, de la conversion du modèle final en script Python et de son utilisation dans une interface Web basée sur Python. Le cas d'utilisation était la planification des ressources dans un environnement automobile pour de nouveaux projets. Le modèle a fonctionné bien mieux que les recommandations du chef de projet. Cependant, cela pourrait également réduire le nombre d'utilisateurs ayant besoin de JMP Pro, si les autres peuvent s'appuyer sur le modèle de construction. Mais c'est toujours possible si vous avez des clients avec un groupe d'analyse 