Casi di utilizzo di Python e / o situazioni di elaborazione batchCiao gruppo!
Abbiamo incontrato domande su Python e problemi di conformità (batch) con alcuni dei nostri clienti high-tech che volevo condividere all'interno della nostra comunità interna. Mi piacerebbe vedere questo thread trasformarsi in una discussione che contiene non solo risposte alle mie domande, ma con casi d'uso aggiuntivi (Python e batch) che tutti voi avete incontrato.
Nota: non sono un esperto in Python!
1) Chiamare JMP usando Python (rispetto a chiamare Python usando JMP). I nostri clienti vogliono farlo. Ho visto alcuni materiali (non JMP) online che dimostrano la fattibilità.
A) Esiste un caso d'uso accettabile in cui Python chiama JMP? Sembra una situazione batch per me.
Se si tratta di una situazione batch, qualcuno ha una risposta tecnica in scatola che possiamo fornire ai nostri clienti? Ho sentito @Jeff_Perkinson Dite "JMP non è stato progettato o testato per questo caso d'uso, quindi non possiamo garantire alcun lavoro svolto usando JMP in questo modo" (mi dispiace parafrasare qui, mi dispiace Jeff!).
2) JMP supporta la libreria Pandas Python? Ho visto un post da @IkjuShin su questo dal 2018 e mi chiedo se è stato prodotto materiale aggiuntivo qui o se altri SE hanno incontrato questa domanda.
ho trovato questo esempio nella guida allo scripting JMP che mi porta a credere che questo sia un caso d'uso fattibile per gli integratori JMP / Python.
3) Un cliente vorrebbe creare uno script JSL contenente un ciclo While per l'esecuzione continua. Lo script verrebbe eseguito su un computer essenzialmente dedicato all'esecuzione di JMP. L'utente inizierà l'esecuzione dello script (e, in teoria, lo interromperà). Non ho ulteriori dettagli sul caso d'uso ma, fornito il contesto della conversazione, immagino che questo script esegua il ping di un database per i nuovi dati e l'aggiornamento dei report.
A) È conforme al nostro accordo di licenza desktop?
Questo è stato testato e / o quali sono gli ostacoli tecnici alla realizzazione di questo in modo affidabile?
Post lungo ... grazie per la messa a punto e per i tuoi contributi!
Ri: Caso (i) d'uso (i) Python e / o situazione (i) di elaborazione batchCiao Jeff,
UN.
Penso che questo PDF sarà un ottimo riferimento, anche se dal 2009 ( https://www.lexjansen.com/nesug/nesug09/ap/AP09.pdf ), L'ho allegato anch'io.
Fa riferimento ad alcuni linguaggi di scripting e alle loro chiamate:
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.
Anche questo sembra essere correlato (da una pagina Python): https://stackoverflow.com/questions/17931476/how-to-call-a-jsl-script-from-python-script
Su un mac ha menzionato:
import os
os.system('open /Applications/JMP\ Pro\ 13.app/Contents/MacOS/JMP /path/filename.jsl')
c'è uno spazio tra il percorso / eseguibile e il percorso / nome.
Nella tua JSL assicurati che la prima riga abbia solo //! Ciò renderà l'esecuzione automatica dello script una volta aperto. Inoltre, utilizzare quit (); come ultima riga, in questo modo viene chiusa l'istanza di JMP aperta.
Nota anche: Assicurarsi che jmp.exe sia disponibile nell'ambiente di sistema in modo che se si digita "jmp.exe" nella riga di comando, avvierà jmp. Quindi prepara il tuo * .jsl. usa i processi python per eseguire questo comando "jmp.exe * .jsl" e questo aprirà jmp ed eseguirà lo script * .jsl e quindi potrai importare tutto ciò che generi da jmp a python.
E c'è un altro thread di Python che parla di chiamare altre app da Python: https://stackoverflow.com/questions/247724/how-can-i-launch-an-instance-of-an-application-using-python
Anche questo thread della community potrebbe essere interessante: https://community.jmp.com/t5/Discussions/jsl-Script-call-from-Python/mp/206295#M41799
C.
Finalmente il riferimento di automazione (Http://www.jmp.com/support/downloads/pdf/jmp1001/automation_reference.pdf) mostra come utilizzare l'automazione OLE. O http://www.jmp.com/support/downloads/pdf/vb_automation_reference.pdf
Non l'ho ancora provato, né ho visto qualcuno nella mia base di clienti. Quello che ho visto finora è il caso d'uso della costruzione di un modello in JMP, convertire quello finale in uno script Python e usarlo in un'interfaccia Web basata su Python. Il caso d'uso era la pianificazione delle risorse in un ambiente automobilistico per nuovi progetti. Il modello ha funzionato molto meglio delle raccomandazioni del responsabile del progetto. Tuttavia, ciò potrebbe anche ridurre la quantità di utenti che devono disporre di JMP Pro, se gli altri possono fare affidamento sul modello di build. Ma questo è sempre possibile se hai clienti con un gruppo di analisi;)
Ri: Caso (i) d'uso (i) Python e / o situazione (i) di elaborazione batchGrazie Martin. Ci sono molti buoni contenuti qui, alcuni dei quali sono sopra la mia testa! Dovrò rileggerlo alcune volte.