Python-Anwendungsfälle und / oder Stapelverarbeitungssituation (en)Hallo Team!
Wir haben mit einigen unserer High-Tech-Kunden, die ich in unserer internen Community teilen wollte, Fragen zu Python und zu Lizenzierungsproblemen (Batch) gestellt. Ich würde lieben, dass dieser Thread zu einer Diskussion wird, die nicht nur Antworten auf meine Fragen enthält, sondern auch zusätzliche Anwendungsfälle (Python und Batch) enthält, die Sie alle kennengelernt haben.
Hinweis: Ich bin kein Python-Experte!
1) Aufruf von JMP mit Python (im Gegensatz zum Aufruf von Python mit JMP). Unsere Kunden wollen das tun. Ich habe Online-Material (Nicht-JMP) gesehen, das die Machbarkeit demonstriert.
A) Gibt es einen akzeptablen Anwendungsfall, in dem Python JMP aufruft? Es klingt für mich wie eine Batch-Situation.
Wenn dies eine Batch-Situation ist, hat jemand eine technische Reaktion, die wir unseren Kunden anbieten können? Ich habe gehört @ Jeff_Perkinson sagen "JMP wurde nicht für diesen Anwendungsfall entwickelt oder getestet, daher können wir auf diese Weise keine Arbeit garantieren, die mit JMP ausgeführt wird" (Ich umschreibe hier schlecht, sorry Jeff!).
2) Unterstützt JMP die Pandas Python-Bibliothek? Ich habe einen Beitrag von gesehen @IkjuShin ab 2018 und fragen Sie sich, ob hier zusätzliches Material produziert wurde oder ob andere SE auf diese Frage gestoßen sind.
ich habe das gefunden Beispiel Im JMP-Skripthandbuch, von dem ich glaube, dass dies ein praktikabler Anwendungsfall für JMP / Python-Integratoren ist.
3) Ein Kunde möchte ein JSL-Skript erstellen, das eine While-Schleife für die fortlaufende 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 mit der Ausführung des Skripts beginnen (und es theoretisch beenden). Ich habe keine zusätzlichen Details zum Anwendungsfall, aber wenn der Kontext der Konversation gegeben ist, kann man davon ausgehen, dass dieses Skript eine Datenbank nach neuen Daten durchsucht und Berichte aktualisiert.
A) Entspricht dies unserer Desktop-Lizenzvereinbarung?
Wurde dies getestet und / oder was sind die technischen Hürden, um dies zuverlässig umzusetzen?
Langer Beitrag ... vielen Dank für das Einstimmen und für Ihre Beiträge!
Betreff: Python-Anwendungsfall (e) und / oder Stapelverarbeitungssituation (en)Hallo Jeff,
EIN.
Ich denke, dieses PDF wird eine sehr gute Referenz sein, obwohl ab 2009 ( https://www.lexjansen.com/nesug/nesug09/ap/AP09.pdf ) Habe ich 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 zu tun zu haben (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 befindet sich ein Leerzeichen.
Stellen Sie in Ihrer JSL sicher, dass die erste Zeile nur // enthält! Dadurch wird das Skript beim Öffnen automatisch ausgeführt. Verwenden Sie auch quit (); Als letzte Zeile wird auf diese Weise die geöffnete JMP-Instanz geschlossen.
Beachten Sie auch: Stellen Sie sicher, dass jmp.exe in Ihrer Systemumgebung verfügbar ist. Wenn Sie also "jmp.exe" in die Befehlszeile eingeben, wird jmp gestartet. Dann halten Sie Ihre * .jsl bereit. Verwenden Sie Python-Verfahren, um diesen Befehl "jmp.exe * .jsl" auszuführen. Dadurch wird jmp geöffnet und das Skript * .jsl wird ausgeführt. Anschließend können Sie alles, was Sie aus jmp generieren, wieder in Python importieren.
Und es gibt einen anderen Python-Thread, in dem es darum geht, andere Apps von Python aus aufzurufen: 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.
Zum Schluss die Automatisierungsreferenz (http://www.jmp.com/support/downloads/pdf/jmp1001/automation_reference.pdf) zeigt, wie die OLE-Automatisierung verwendet wird. Oder http://www.jmp.com/support/downloads/pdf/vb_automation_reference.pdf
Ich habe es noch nicht ausprobiert oder jemanden in meinem Kundenstamm gesehen. Was ich bisher gesehen habe, ist der Anwendungsfall, ein Modell in JMP zu erstellen, das das endgültige in ein Python-Skript konvertiert und dieses in einer Python-basierten Web-Oberfläche verwendet. Der Anwendungsfall war die Ressourcenplanung in einer Automobilumgebung für neue Projekte. Das Modell funktionierte viel besser als die Empfehlungen des Projektleiters. Dies kann jedoch auch die Anzahl der Benutzer verringern, die JMP Pro benötigen, wenn sich die anderen auf das Build-Modell verlassen können. Dies ist jedoch immer möglich, wenn Sie Kunden mit einer Analytics-Gruppe haben;)
Betreff: Python-Anwendungsfall (e) und / oder Stapelverarbeitungssituation (en)Vielen Dank, Martin. Hier gibt es eine Menge guter Inhalte, von denen einige über meinem Kopf liegen! Ich muss es ein paar Mal nachlesen.