JMP は Python です! JMP 18 での Python 統合の強化JMP 18 には、Python と統合する新しい方法があります。 JMP 18 インストールには、JMP で使用するように設計された独立した Python 環境が付属しています。さらに、JMP にはネイティブ Python エディターと JMP 固有の Python パッケージが追加されました。この JMP Python 環境では、JMP との接続性と対話性が強化されています。つまり、JMP での Python の使用がかつてないほど簡単になっています。
この一連のブログ投稿では、Python と JMP の統合における新機能を紹介します。この投稿では、JMP の新しい Python スクリプト エディターについて説明します。今後の投稿では、パッケージ管理だけでなく、統合の他の新機能についても取り上げます。
JMP Python スクリプト エディター
以前のバージョンの JMP では、Python コードを実行する唯一の方法は、外部にインストールされた Python 環境に接続し、JMP スクリプト言語 (JSL) ラッパー関数を使用して Python コードをその環境に送信することでした。 JMP で Python スクリプトを直接編集して送信できるようになりました。 JMP で Python スクリプトを開くか、[ファイル] メニューから新しいスクリプトを作成します ([ファイル] > [新規作成] > [Python スクリプト])。

新しい Python スクリプト エディターには構文の強調表示があり、より自然な方法で Python でコーディングできるようになります。 「スクリプトを実行」ボタンをクリックすると Python コードが実行され、Python で記録されたメッセージが JMP ログにリストされます。
jmpおよびjmputils Python パッケージ
新しい JMP Python 環境に加えて、jmp と jmputils という 2 つの新しい「JMP 対応」Python パッケージが追加されました。
jmp パッケージを使用すると、次のことが可能になります。
- jmp.run_jsl(''jsl script'') を使用して Python から JSL を実行します。
- データテーブルを開いたり、閉じたり、保存したりします。
- JMPで開いているテーブルの情報を取得します。
- JMP データ テーブルの作成、JMP データ テーブルの列の追加/削除/変更、および JMP データ テーブルの行の追加/削除を行います。
- データ テーブルで 0 から始まるインデックス付き配列演算子を使用して、メモリ内の JMP データ テーブルのデータに列またはセル レベルで直接アクセスします。このインデックス付けでは、列インデックスと行インデックスの両方で Python スライス演算子もサポートされます。
- JMP データ テーブルと JMP データ テーブル列を Python 反復のシーケンスとして使用します。
jmputils パッケージを使用すると、次のことが可能になります。
- jmputils.create_jmp(dir_path) を使用して、指定されたディレクトリにコマンド ライン JMP pip (jpip) スクリプトを作成します。このスクリプトを使用して、JMP Python 環境にパッケージをインストールできます。特定の Python パッケージでは、コマンド ラインからのインストールが必要な場合があることに注意してください。
- jmputils.jpip( ) 関数を使用して、JMP Python 環境に Python パッケージをインストールします。
これらすべての関数については、ヘルプ ドキュメント[リンク]で詳しく説明されています。また、JMP Scripting Index には、これらすべてのパッケージと関数をリストする新しい Python カテゴリもあります。

Python JSL 関数
以前のバージョンの JMP と同様に、Python Execute( )、Python Submit( )、および Python Submit File( ) 関数を使用して、JSL から Python を実行できます。 Python Send( ) 関数と Python Get( ) 関数を使用して、JMP と Python の間でデータを転送することもできます。
Python JSL 関数への変更には次のものが含まれます。
- Python Connect() は、ローカル Python への JMP でのスクリプト可能オブジェクトの作成を引き続きサポートします。
- Python Send(data_table) は、Python でメモリ内でアクセス可能な JMP データ テーブルへのライブ参照である jmp.Datatable オブジェクトを作成するようになりました。以前は、テーブルを CSV ファイルとしてディスクにエクスポートし、pandas に CSV ファイルを読み取らせることで、data_table のコピーを pandas.DataFrame として作成していました。これは、大規模なデータ テーブルの場合は非常に遅くなり、バイナリによるデータの劣化を引き起こす可能性がありました。 ->テキスト->バイナリ変換。
- Python Get(オブジェクト名):
- object_name が Python で開かれている JMP データ テーブルを参照する変数名である場合、Python 変数名によって参照される JMP データ テーブルへの JSL スクリプト可能オブジェクト参照を返します。
- object_name が Python pandas データ フレームの場合、pandas データ フレームを CSV ファイルに書き込み、そのファイルを新しい JMP データ テーブルとして開きます。ただし、Python からメモリ内に JMP データ テーブルを作成して接続できる新しい機能を考慮すると、このアプローチは推奨されません。
不要になった非推奨の JSL Python 関数:
- Python グラフィックスを取得( )
- Python コントロール( )
- Python の初期化()
- Python が接続されました( )
- Python 用語( )
新しい JSL Python 関数には次のものがあります。
- Python Install Packages( ) を使用すると、JMP Python 環境に Python パッケージをインストールできます。
- Python Create JPIP( ) は、JMP jpip をラップし、オペレーティング システムのコマンド ラインから Python パッケージをインストールするために使用できるコマンド ライン スクリプトを作成します。スクリプトは、ディレクトリ ピッカー ダイアログで選択されたディレクターに書き込まれます。
自動化とスクリプト作成Re: JMP は Python です! JMP 18 で強化された Python 統合Workflow Builder が JSL コードの代替として Python を受け入れる予定はありますか?
Re: JMP は Python です! JMP 18 で強化された Python 統合この投稿に、2 つの「JMP 対応 Python パッケージ」のドキュメントへのリンクを提供すると役立ちます。
ありがとう!
エリック
Re: JMP は Python です! JMP 18 で強化された Python 統合ああ、記事内にそのようなドキュメントへのリンク用のプレースホルダーがあることがわかりました。それを実際のリンクに置き換えるだけです。
Re: JMP は Python です! JMP 18 で Python 統合が強化されました独自の Python インタープリターを使用できない場合、コードにスケジュールされたタスクを与えて、その Python コードを定期的に実行し、データを処理して自動的にチャートを生成するソリューションはありますか。
Re: JMP は Python っぽい! JMP 18 で Python 統合が強化されましたいいえ。
これは問題が多すぎました。一部のユーザーにとっては問題なく動作しましたが、多くの顧客は動作させるのに苦労しました。ほぼ同じくらい重要なことは、JMP で実行されている Python スクリプトが、別のユーザーのマシンで適切に動作するという保証がなかったことです。カスタム Python インストール場所があった場合は、おそらく正しく動作しないでしょう。ユーザーとしては、JMP が提供する Python を、自分の JMP 固有の Python 仮想環境として扱ってください。
JMP Python がシステム上の他の Python インストールから分離されるように、私たちは多大な努力を払ってきました。既存のパイプラインの使用を妨げるものは何もなく、JMP 環境にパッケージをインストールできます。そのワークフローを JMP 内に持ち込むことができるかもしれません。JMP 18 の追加機能により、必要に応じて JMP と外部 Python パイプライン間でのデータのインポート/エクスポートが容易になるはずです。
JMP の初回起動時に設定なしで動作する、テスト済みおよび検証済みの Python インストールの利点は、顧客エクスペリエンスの向上だと考えています。既知の Python バージョンと場所があることで、予測できない顧客の Python インストールによる問題の解決に苦戦することなく、機能と性能を提供することに集中できます。安定性と組み込み Python により、より深い統合を実現できます。Python からメモリ内で JMP データ テーブルを作成、変更、およびアクセスする新しい機能は、そのような機能の 1 つです。
これにより、JMP 14 から 17 への移行が必要になることは承知しています。JMP 18 では、機能が根本的に変わります。当初の設計上の決定の一部は、時の試練に耐えられませんでした。非互換性を最小限に抑えるよう努めましたが、いくつかの変更は必要でした。変更が必要な箇所は、JMP 18 が今後も安定した基盤を提供できるように、18 で変更されました。
Re: JMP は Python です! JMP 18 で Python 統合が強化されましたいいえ、近い将来ではありません。しかし、それは良い新機能のリクエストになるでしょう。
できることはたくさんあります。課題は、まず、全員に最大のメリットをもたらすものに焦点を合わせることです。現在、主な焦点は基礎的な問題、特にデータ アクセスと Python と JSL 間の相互運用性にあります。
Python からデータ テーブルに完全にアクセスできるようにするには、式の列、行の状態の列、列の書式設定など、やるべきことがまだたくさんあります。JSL と Python 間のデータのマーシャリングに、できるだけ多くの JMP データ型が含まれるようにします。
また、大規模なオーバーホールでは当然のことですが、バグや小さな見落としがいくつかあります。これらにも対処する必要があります。Python コードを使用する JMP アドインは問題なく動作しますが、アドイン ビルダーは Python ファイルを認識しないため、JMP アドイン ファイル (zip アーカイブ) を手動でパックする必要があります。また、プロジェクト内の Python ファイルは問題なく動作しますが、データ テーブル、その他のデータ ファイル、追加の Python スクリプトなど、プロジェクト ファイル内に含まれる他のファイルを見つける方法がまだわかりません。その他の制限事項に遭遇した場合は、テクニカル サポートに報告してください。JMP のパワーを向上できる新しい便利な機能があれば、機能リクエストとして送信してください。
Re: JMP は Python っぽい! JMP 18 で Python 統合が強化されましたこんにちは@Paul_Nelson 、
ワークフロー ビルダーで Python サポートを提供したいという要望を提出しました。
双方にメリットのある大きな出来事:
- JSL と Python コードのシームレスな連携
- すでにワークフロー ビルダーを使用しているユーザーにとって便利な機能強化です。
ワークフロービルダー + Python
Re: JMP は Python です! JMP 18 で Python 統合が強化されましたJMP は初めてなので、これは初心者向けの質問かもしれません。まだブログを探索中です。JMP で Python スクリプトを使用する方法について詳しく知るにはどうすればいいですか? Python コードを記述できますか? 参照できるブログはありますか? よろしくお願いします
Re: JMP は Python です! JMP 18 で Python 統合が強化されましたこんにちはフォロー 、
JMP で Python スクリプトを使用する方法を学ぶための、私のお気に入りのリソースをいくつか紹介します。
JMP 18 での Python 統合の開始
JMP で Python ゲームをレベルアップ
アカデミックウェビナー: JMP と Python の統合
@Paul_Nelson は、 JMPer ケーブル ブログにもいくつかのブログ記事を投稿しています。
Re: JMP は Python です! JMP 18 で Python 統合が強化されましたスクリプト インデックスを参照してください。機能のドキュメントとサンプルがあります。JSL から作業する場合、value = Python Get( py_var ); Python Send( jsl_var ); Python Submit( "python code"); などの関数が多数あります。
Python 側では、スクリプト インデックスに「Python」トップレベル カテゴリがあり、 ジャンプインポート パッケージとjmputilsパッケージの使用方法が詳細に説明されています。jmpパッケージでは、Python からのデータ テーブルの作成、読み取り、書き込み、Python スクリプトから JSL を実行する機能など、JMP 機能への Python インターフェイスを利用できます。jmp.run_jsl(' JSL code ') 。jmputilsには、Python の pip() のラッパーである jmputils.jpip( ) 関数が含まれており、インストールされたパッケージが JMP の Python 統合用の分離されたプライベート環境に配置されるようにします。
Re: JMPはPythonっぽい!JMP 18で強化されたPython統合追記ですが、JMPへのPython統合は、JMP v18で特に気に入っている機能の一つです。データ変換やその他の機能を実行するための独自のPythonパッケージをJMPで用意していますが、JMPではそれらの関数を簡単にインポートでき、既存のデータから新しい列データを作成してJMPに直接戻すことができます。つい先日、JMPデータテーブル内の特定のデータに対して特定の座標変換を行う必要があったのですが、JMPのPython機能を使って新しい列を作成するのに数分しかかかりませんでした。
Python 互換性へのこのように明確かつ印象的な第一歩を踏み出した Paul 氏らに敬意を表します。