JSL をアドインまたはスクリプトとして実行すると、奇妙なエラーが発生しました。こんにちは、みんな、
私が書いたスクリプトをアドインに変換したものがあります。 2023 年 11 月頃に最後に使用したときは問題なく動作していました。再度実行していると、アドインとして実行すると非常に奇妙なエラー/間違いが発生しますが、問題は解決しません。 JSL ファイルを単独で実行した場合にはこのようなことは起こりません。
そのため、スクリプトはモデリングを実行し、各チューニング実行の結果をグラフと表として表示する出力ウィンドウを生成します。出力は次のようになります (これはスクリプト自体から実行されました)。

出力ウィンドウは、モデリング プラットフォームからすべての適合統計を収集するデータ テーブルから生成されます。

繰り返しになりますが、スクリプトはうまく機能し、期待どおりにすべてを実行します。それを jmpaddin ファイルとして作成して JMP にインストールすると、何かが起こってコードが混乱し、出力テーブルを参照する代わりに、使用している Y と X を含む元のデータ テーブルに戻ってしまいます。モデリング用に。その結果、出力ウィンドウのグラフ ビルダー部分が空白になり、:Tune Run 列が存在しないという JMP からのエラーが表示されます (元のデータ テーブルには存在しませんが、出力データ テーブルには存在します)。 )。
これは同じ種類のモデリングの出力ですが、グラフ ビルダーを使用せず、JSL ではなくアドインとして実行しています。

また、JMP ホーム ウィンドウのウィンドウ リストに移動すると、アドインとして実行したインスタンスでは、元のデータ テーブル T20-XL からブートストラップ フォレスト結果ウィンドウが生成されていることがわかります。したがって、当然のことながら、そのデータ テーブルには :Tune Run という列はありません。ただし、ストレート JSL として実行すると、意図したとおりに概要出力データ テーブルから出力ウィンドウ (ブートストラップ フォレスト結果 2) が正しく生成されます。

これは私が受け取るエラーです:

そして、ログレポートには次のことが示されます。


何が問題なのか、またアドイン バージョンが本来の概要出力データ テーブルではなく元のデータ テーブルを操作しようとする理由がわかりません。また、JSL ファイルから直接実行すると機能するのに、アドインとしてはまったく正しく機能しない理由もわかりません。
他にこの問題に遭遇した人はいますか?もしそうなら、それをどのように修正しましたか、そしてそもそもそれがどのように起こったのかを理解することができましたか?
ありがとう!、
DS
自動化とスクリプト作成データの探索と視覚化予測モデリングと機械学習ウィンドウズRe: JSL をアドインまたはスクリプトとして実行すると、奇妙なエラーが発生しました。グラフ ビルダー メッセージを特定のデータ テーブルに送信できますか?
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Variables(X(:weight), Y(:height), Overlay(:sex)),
Elements(Points(X, Y, Legend(9)), Line Of Fit(X, Y, Legend(11)))
);
dt << グラフビルダー(...
Re: JSL をアドインではなくスクリプトとして実行すると奇妙なエラーが発生します。こんにちは@jthi さん
はい、できますが、問題は何か別のこと、つまりメモリの割り当てと割り当てに関することだと思います。
そう思う理由は、私のマシンで JMP Pro のインスタンスを 2 つ実行しているためです。そのため、JMP ホーム ウィンドウが 2 つあります。1 つはオリジナルで、もう 1 つはホーム ウィンドウ名に [2] が追加されたものです。JMP の 2 番目のインスタンスでアドインを実行しようとするとエラーが発生しますが、JMP の最初のインスタンスで実行した場合はエラーになりません。JMP の 2 番目のインスタンスを実行するときに正しく処理されないバグがあると思います。
以前はこのようなことは起こりませんでした。私はよく JMP のインスタンスを 2 つ実行します。1 つはバックグラウンドでデータを処理するため、もう 1 つは人から提供された新しいデータを処理するため、という具合です。2 番目のインスタンスでモデリングを実行するようにすると、jmp ファイルをダブルクリックすると、JMP の最初のインスタンスで開き、モデリングが他のインスタンスのバックグラウンドで実行されている状態で作業できるようになります。JMP の最新のアップデートで何かが起こったのだと思います。以前はこの問題は発生しませんでした。
ありがとう!、
DS
Re: JSL をアドインではなくスクリプトとして実行すると奇妙なエラーが発生します。アドインをどのように構築していますか? ここで名前空間を強制すると、アドインとして失敗する可能性があります (ただし、以前に発生しなかった理由はわかりません)。

Re: JSL をアドインではなくスクリプトとして実行すると奇妙なエラーが発生します。こんにちは@jthi 、
いつもの方法でアドインを作成しています。.defファイルを作成してインストールし、アドインに合わせてツールバーを変更します。アドインはいつも通り実行しています。「Here」名前空間のチェックボックスのオン/オフを切り替えて変更してみましたが、状況は改善されませんでした。
再度確認したところ、JMPの単一インスタンスでアドインを実行できなくなりました。同じエラーが繰り返し発生します。 @Craige_Halesさんのコメントが原因かもしれませんが、もしそうだとしたら、どうすれば解決できるのか、あるいはアドインが突然動作しなくなるような状況になった理由が分かりません。前述の通り、JSLは問題なく動作しています。
ありがとう!、
DS
Re: JSL をアドインではなくスクリプトとして実行すると奇妙なエラーが発生します。バグか機能か?も参照してください。アドインの評価コンテキストが、後で使用されるものとは異なっている可能性があります。ただし、説明から判断すると確信はありません。JMPの現在のデータテーブルは、評価コンテキスト内で認識されます。通常、スクリプトが使用する評価コンテキストは1つあり、JSLウィンドウまたはプラットフォームウィンドウのいずれかに属します。アドインスクリプトはどちらも使用せずに実行されるため、一時的な評価コンテキストが提供されます。アドインスクリプトが終了すると(おそらくスクリプトの最後で実行されます)、一時的な評価コンテキストはなくなります。ウィンドウを開いたままにして、そのウィンドウ内のボタンでさらにスクリプトを実行すると、前の評価コンテキストを認識しないウィンドウの評価コンテキストが使用されます。
Re: JSL をアドインではなくスクリプトとして実行すると奇妙なエラーが発生します。こんにちは@Craige_Hales 、
問題はご説明いただいた内容から生じているのではないかと思います。私のコードが生成する最終的な結果ウィンドウには、モデルフィッティングの再実行やコードの再起動といった操作を実行するボタンがいくつかあります。また、JSLファイルはスムーズに動作するのに対し、アドインは動作しないので、おっしゃっていたeval処理の一部であると考えられます。
理解できないのは、以前は問題なかったのに、なぜ今になって不具合が起きているのかということです。そもそも何が原因なのかわからないので、どうすれば解決できるのかわかりません。前述の通り、2023年10月頃までは問題なく動作していました。
私のコードは基本的に、ユーザーインタラクションに基づいて呼び出され実行されるExpr()の羅列です。エラーを再現できるか確認していただける場合は、コードを共有いたします。
JMPの設定が変更されたことが、この問題の原因となっている可能性がありますか?JSLではなくアドインとして実行したいので、回避策が見つかると嬉しいです。
ありがとう!、
DS