Python-Anwendungsfall(e) und/oder Stapelverarbeitungssituation(en)Hallo Team!
Einige unserer Hightech-Kunden haben Fragen zu Python und Lizenzkonformität (Batch) erhalten, die ich mit unserer internen Community teilen wollte. Ich würde mich freuen, wenn sich aus diesem Thread eine Diskussion entwickelt, die nicht nur Antworten auf meine Fragen enthält, sondern auch zusätzliche Anwendungsfälle (Python und Batch), die Sie alle kennengelernt haben.
Hinweis: Ich bin kein Python-Experte!
1) Aufrufen von JMP mit Python (im Gegensatz zum Aufrufen von Python mit JMP). Unsere Kunden möchten dies tun. Ich habe online einiges (nicht JMP-basiertes) Material gesehen, das die Machbarkeit demonstriert.
A) Gibt es einen akzeptablen Anwendungsfall, bei dem Python JMP aufruft? Für mich klingt das nach einer Batch-Situation.
Wenn es sich um eine Batch-Situation handelt, hat jemand eine vorgefertigte technische Antwort, die wir unseren Kunden anbieten können? Ich habe @Jeff_Perkinson sagen hören: „JMP wurde nicht für diesen Anwendungsfall entwickelt oder getestet, daher können wir für Arbeiten, die mit JMP auf diese Weise durchgeführt werden, keine Garantie übernehmen“ (ich paraphrasiere hier schlecht, entschuldige, Jeff!).
2) Unterstützt JMP die Pandas Python-Bibliothek? Ich habe einen Beitrag von @IkjuShin dazu aus dem Jahr 2018 gesehen und frage mich, ob hier weiteres Material erstellt wurde oder ob andere SEs auf diese Frage gestoßen sind.
Ich habe dieses Beispiel im JMP-Skripthandbuch gefunden, was mich zu der Annahme veranlasst, dass dies ein praktikabler Anwendungsfall für JMP/Python-Integratoren ist.
3) Ein Kunde möchte ein JSL-Skript erstellen, das eine While-Schleife zur kontinuierlichen Ausführung enthält. Das Skript würde auf einem Computer ausgeführt, der im Wesentlichen für die Ausführung von JMP vorgesehen ist. Der Benutzer würde die Ausführung des Skripts starten (und theoretisch beenden). Ich habe keine weiteren Details zum Anwendungsfall, aber angesichts des Gesprächskontexts stellen wir uns vor, dass dieses Skript eine Datenbank nach neuen Daten abfragt und Berichte aktualisiert.
A) Steht dies im Einklang mit unserer Desktop-Lizenzvereinbarung?
Wurde dies getestet und/oder welche technischen Hürden bestehen für eine zuverlässige Umsetzung?
Langer Beitrag ... danke fürs Einschalten und für Ihre Beiträge!
Betreff: Python-Anwendungsfall(e) und/oder Stapelverarbeitungssituation(en)Danke, Martin. Hier gibt es eine Menge guter Inhalte, von denen einige über meinen Horizont hinausgehen! Ich werde sie ein paar Mal erneut lesen müssen.
Betreff: Python-Anwendungsfall(e) und/oder Stapelverarbeitungssituation(en)Hallo Jeff,
A.
Ich denke, dieses PDF wird eine sehr gute Referenz sein, allerdings aus dem Jahr 2009 (https://www.lexjansen.com/nesug/nesug09/ap/AP09.pdf), ich habe es auch angehängt.
Es verweist auf einige Skriptsprachen und deren Aufrufe:
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.
Dies scheint auch damit zusammenzuhängen (von einer Python-Seite): https://stackoverflow.com/questions/17931476/how-to-call-a-jsl-script-from-python-script
Auf einem Mac wurde Folgendes erwähnt:
import os
os.system('open /Applications/JMP\ Pro\ 13.app/Contents/MacOS/JMP /path/filename.jsl')
Zwischen dem Pfad/der ausführbaren Datei und dem Pfad/dem Namen steht ein Leerzeichen.
Stellen Sie sicher, dass die erste Zeile Ihres JSL nur // enthält! Dadurch wird das Skript automatisch ausgeführt, wenn es geöffnet wird. Verwenden Sie außerdem quit(); als letzte Zeile, damit die geöffnete JMP-Instanz geschlossen wird.
Beachten Sie auch: Stellen Sie sicher, dass jmp.exe in Ihrer Systemumgebung verfügbar ist, sodass jmp gestartet wird, wenn Sie „jmp.exe“ in die Befehlszeile eingeben. Halten Sie dann Ihr *.jsl bereit. Verwenden Sie Python Procees, um diesen Befehl „jmp.exe *.jsl“ auszuführen. Dadurch wird jmp geöffnet und das *.jsl-Skript ausgeführt. Anschließend können Sie alles, was Sie aus jmp generieren, wieder in Python importieren.
Und es gibt einen weiteren Python-Thread, in dem es um das Aufrufen anderer Apps aus Python geht: https://stackoverflow.com/questions/247724/how-can-i-launch-an-instance-of-an-application-using-python
Auch dieser Community-Thread könnte von Interesse sein: https://community.jmp.com/t5/Discussions/jsl-Script-call-from-Python/mp/206295#M41799
C.
Schließlich zeigt die Automatisierungsreferenz (http://www.jmp.com/support/downloads/pdf/jmp1001/automation_reference.pdf), wie man OLE-Automatisierung verwendet. Oder http://www.jmp.com/support/downloads/pdf/vb_automation_reference.pdf
Ich habe es noch nicht ausprobiert und auch niemanden in meinem Kundenstamm gesehen. Was ich bisher gesehen habe, ist der Anwendungsfall, bei dem ein Modell in JMP erstellt wird, das endgültige Modell in ein Python-Skript konvertiert und dieses in einer Python-basierten Weboberfläche verwendet wird. Der Anwendungsfall war die Ressourcenplanung in einer Automobilumgebung für neue Projekte. Das Modell funktionierte viel besser als die Empfehlungen des Projektleiters. Dies könnte jedoch auch die Anzahl der Benutzer reduzieren, die JMP Pro benötigen, wenn sich die anderen auf das erstellte Modell verlassen können. Dies ist jedoch immer möglich, wenn Sie Kunden mit einer Analysegruppe haben 