Python の使用例および/またはバッチ処理の状況こんにちは、チーム!
ハイテク業界のお客様から、Python とライセンス コンプライアンス (バッチ) の問題に関する質問を受けており、社内コミュニティで共有したいと考えていました。このスレッドが、私の質問への回答だけでなく、皆さんが遭遇した追加のユース ケース (Python とバッチ) を含むディスカッションに発展することを期待しています。
注: 私は Python の専門家ではありません。
1) Python を使用して JMP を呼び出す (JMP を使用して Python を呼び出すのではなく)。お客様はこれを望んでいます。オンラインで実現可能性を示すいくつかの (JMP 以外の) 資料を見たことがあります。
A) Python が JMP を呼び出す許容可能なユースケースはありますか? バッチ状況のように思えます。
これがバッチ処理の場合、お客様に提供できる定型の技術的回答をお持ちの方はいらっしゃいますか? @Jeff_Perkinson が「JMP はこのユースケース用に設計またはテストされていないため、この方法で JMP を使用して行われた作業を保証することはできません」と言っているのを聞いたことがあります (ここではうまく言い換えていません。申し訳ありません、Jeff!)。
2) JMP は Pandas Python ライブラリをサポートしていますか? 2018 年に@IkjuShinからのこの件に関する投稿を見たのですが、ここで追加の資料が作成されているかどうか、または他の SE がこの質問に遭遇したかどうかが気になります。
私は JMP スクリプト ガイドでこの例を見つけました。これは JMP/Python インテグレーターにとって実現可能な使用例であると考えられます。
3) 顧客は、連続実行用の While ループを含む JSL スクリプトを作成したいと考えています。スクリプトは、基本的に JMP の実行専用のコンピュータで実行されます。ユーザーはスクリプトの実行を開始します (そして、理論的には終了します)。使用例についての詳細はわかりませんが、会話のコンテキストから判断すると、このスクリプトはデータベースに新しいデータを求めて ping し、レポートを更新するものと考えられます。
A) これは当社のデスクトップライセンス契約に準拠していますか?
これはテスト済みですか、またこれを信頼性の高い方法で実装するための技術的なハードルは何ですか?
長い投稿ですが、ご覧いただき、ご協力いただきありがとうございました。
Re: Python の使用例および/またはバッチ処理の状況ありがとう、マーティン。ここには素晴らしい内容がたくさんありますが、中には私には理解できないものもあります。何度か読み直さなければなりません。
Re: Python の使用例および/またはバッチ処理の状況こんにちは、ジェフさん
A.
このPDFは2009年からのものではありますが、非常に良い参考資料になると思います(https://www.lexjansen.com/nesug/nesug09/ap/AP09.pdf)も添付しておきます。
いくつかのスクリプト言語とその呼び出しを参照します。
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.
これも関連しているようです (Python ページから): https://stackoverflow.com/questions/17931476/how-to-call-a-jsl-script-from-python-script
Macでは次のように記載されています:
import os
os.system('open /Applications/JMP\ Pro\ 13.app/Contents/MacOS/JMP /path/filename.jsl')
パス/実行可能ファイルとパス/名前の間にスペースがあります。
JSL では、最初の行に //! のみが含まれていることを確認してください。これにより、スクリプトは開かれたときに自動的に実行されます。また、最後の行に quit(); を使用すると、開かれた JMP のインスタンスが閉じられます。
また、注意: コマンド ラインに「jmp.exe」と入力すると jmp が起動するように、システム環境で jmp.exe が使用可能であることを確認してください。次に、*.jsl を準備します。Python プロセスを使用してこのコマンド「jmp.exe *.jsl」を実行すると、jmp が開き、*.jsl スクリプトが実行され、jmp から生成したものを Python にインポートできます。
また、Python から他のアプリを呼び出す方法について話している別の Python スレッドがあります: https://stackoverflow.com/questions/247724/how-can-i-launch-an-instance-of-an-application-using-python
このコミュニティスレッドも興味深いかもしれません: https://community.jmp.com/t5/Discussions/jsl-Script-call-from-Python/mp/206295#M41799
C.
最後に、オートメーション リファレンス(http://www.jmp.com/support/downloads/pdf/jmp1001/automation_reference.pdf) では、 OLE オートメーションの使用方法が示されています。または、 http://www.jmp.com/support/downloads/pdf/vb_automation_reference.pdf
まだ試していませんし、顧客ベースで誰かに会ったこともありません。これまでに見たのは、JMP でモデルを構築し、最終的なモデルを Python スクリプトに変換して、それを Python ベースの Web インターフェイスで使用するというユースケースです。ユースケースは、新しいプロジェクトのための自動車環境のリソース プランニングでした。モデルは、プロジェクト リーダーの推奨よりもはるかにうまく機能しました。ただし、他のユーザーがビルド モデルに依存できる場合は、JMP Pro を必要とするユーザーの数も減る可能性があります。ただし、分析グループを持つ顧客がいる場合は、常に可能です 