スクリプトは、アドインによって呼び出されるまで機能します!<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />こんにちは、
ユーザー インターフェイスからデータを取得し、JMP で適合を実行し、生データ、計算されたデータ、さまざまなプロット、および JMP 出力から選択された情報を含むレポートを出力するスクリプトがあります。
暗号化されていても、スクリプトから実行するとうまく機能します。
ただし、暗号化されたファイルをこのスクリプトのみを含む単純なアドインに貼り付けると、JMP 出力から抽出した適合式が表示されなくなることを除いて、すべてが機能します。
私は困惑しています!
さらに不可解なことに、アドインを使用する前にスクリプト ウィンドウからスクリプトを一度実行すれば、JMP はアドインから完全に機能します。 何をすべきかを覚えているかのようです。
スクリプトは次の式を取得します。
nlr = nlModel << レポート;
pb = nlr[PictBox(1)];
modEq = pb << Get Image;
次に、次を使用して表示します。
V リストボックス(
Text Box("モデル方程式", << Set Font Size (12)),
ピクチャーボックス( modEq),
テキストボックス(" ")、
アドインに統合されると、このビットだけが機能しなくなる理由は何ですか?
スクリプト ウィンドウから実行した出力とアドインから実行した出力のスクリーン ダンプを添付します (JMP を開いた直後)。
ありがとう
Re: スクリプトは、アドインによって呼び出されるまで機能します。キャプチャしようとしているビットマップを実際に作成するには、式を保持する PictBox を画面に表示する必要があると思います。見えるうちに撮るのがベスト。
データテーブルで「プライベート」ではなく「非表示」を使用できる場合があります。非表示のテーブルには非表示のウィンドウがあります。プライベートテーブルには窓がありません。プライベート テーブルは、それらを指す変数が残っている間に閉じる必要があります (または、JMP が閉じられるまで蓄積され、メモリを使い果たします)。非表示のテーブルは、簡単に見失うことはありません。
Re: スクリプトは、アドインによって呼び出されるまで機能します。検証テストを実行できるようにするために、見苦しい回避策を使用する必要がありました。非線形 JMP 分析を呼び出す直前に、空のウィンドウを開き、スクリプトの最後で閉じます。
できます。 show then hide log も同様に機能すると思います。
なぜこれを行っているのか理解したいと思っています!
Re: スクリプトは、アドインによって呼び出されるまで機能します。クレイジさん、こんにちは。
すっごく... 私は newimage 関数 (私が知らなかった良いもの) を使用しようとしましたが、まだ運がありません。
レポートプラットフォームから抽出するときに追加しようとしました:
nlr = nlModel << レポート;
pb = nlr[PictBox(1)];
//modEq = pb << Get Image;
//ここ:modEq = pb << Get Image;
modEq = pb << Get Image;
modEq = NewImage(modEq);
私も自分のレポートウィンドウで試しました:
V リストボックス(
Text Box("モデル方程式", << Set Font Size (12)),
picturebox(newimage( modEq )),
そして、私は良い測定のために両方の場所で試しました!
違いがあります。バックグラウンドの JMP レポートにはまだ十字が表示されますが、私のレポートには何も表示されず、空のスペースも表示されません。
しかし、スクリプトに戻って実行する回数を減らしていくと、実際に失敗する場所が次の場所にあることに気付きました。
// データ分析
win3 = New Window( "非線形モデル レポート",
nlModel = dt << 非線形(
Y( :名前( "hGH" ) ),
X( :Name( "モデルの成長" ) ),
二階微分法( 1 ),
ニュートン、
終了、
信頼限界、
予測式を表示する( 1 )
)
);
win3 はスクリプトによって閉じられ、科学者が私に要求したすべてのものを備えた私自身のレポート ウィンドウに置き換えられます。 なんらかの理由で、JMP でホーム ウィンドウ以外のウィンドウが開かれていない場合、show Prediction Equation 命令は失敗します。 このスレッドで提案されたすべてのトリックは、NLR が実行された後に実行される操作に関係しているため、結果には影響しません。
そして、数か月前にアドインを書いたときにこのバグを特定できなかった理由は、その日の窓の先端をオンにしていたからです。 アドインが機能するには、これで十分だったに違いありません。開かれているすべての JMP ウィンドウでうまくいくようです。
背景: hGH は応答であり、値はユーザーによってさらに上に入力されます。モデルの成長は、時間を取って実際の成長に適合する「予想される成長」をモデル化する式としてとらえどころのないモデル式を使用する列です。
したがって、問題は、他の jmp ウィンドウが開かれていないときに、非線形関数がスクリプトで呼び出された pred 方程式を表示しないことです。
前にテーブルを作成します。
dt = New Table( "データ",
プライベート、
行を追加( 6 ),
New Column( "Time", Numeric, Set Values( lstTimes ) ),
New Column( "hGH", Numeric, Set Values( lsthGH ) )
);
私はプライベート命令を取り出し、もちろんアドインが機能するようになりました。
しかし、プライベートを使用した理由は、それが私の出力が機能する唯一の方法だったからです。 最後にデータ テーブルを閉じようとすると、待機してもレポートが作成されません。
とにかく、これは適切な解決策ではありませんが、レポートの作成時にデータ テーブルを開いて問題が発生しないようにし、スクリプトが失敗することなくデータ テーブルを閉じる方法があれば、それで解決します。
JMP 13 で動作するかどうか、それがバグなのか、それとも実際にスクリプトのどこかに間違いがあるのか ...
Re: スクリプトは、アドインによって呼び出されるまで機能します。これを試して:
ピクチャーボックス(新しいイメージ( modEq )))
赤いXは、ピクトボックスが画像の元のデータに接続されていることを意味すると思いますそしてそのデータはもう存在しません.画像を(newImageで)複製することで、ピクトボックスに独自のプライベートコピーが作成されると思います。
picturebox 関数を省略できる場合もあります。
V リストボックス(
Text Box("モデル方程式", << Set Font Size (12)),
modEq, // PictureBox 関数がなくても画像は機能すると思いますが、それでも newImage が必要になる場合があります
テキストボックス(" ")、
Re: スクリプトは、アドインによって呼び出されるまで機能します。こんにちは、
私は今、いくつかの異なるシナリオを試しました。
ノート
- アドインとスクリプトは両方とも、here 句のデフォルトの名前を使用します (ほとんどの場合、人々が JMP を同時に別の目的で使用する場合)。
- JMPレポートから私のものにインポートしたい方程式は、入力する式を使用するテーブルの列からのカスタムのものであり、オンにしました予測式を表示( 1 )
- ツリー構造では、クレイジが言ったように、これはピクトボックスとして表示されます。これは、JMP の方程式はテキストではなく画像であるためです。 それで、私の新しいスクリプトでは、Eric の提案を使用しました。
nlr = nlモデル<<報告;
pb = nlr [ピクトボックス( 1 )] ;
modEq = pb <<画像を取得;
未定= nlr [テーブルボックス( 5 )] ;
tblValues =未定<<データ テーブルにする;
- また、画像ボックスに集められたいくつかのビットで構成されるグラフも取得します。
bb = nlr [ピクチャーボックス( 1 )] ;
プロット= bb <<画像を取得;
自分のレポートに問題のないものを表示します。
シナリオ:
- 毎回スクリプトから動作します
- スクリプトが実行されていなくても、スクリプトを開いたときにアドインから機能します
- アドインが 2 回目に呼び出され、レポートが閉じられていない場合に機能します (方程式が表示されていないレポート)。
- アドインから初めて呼び出されたとき、またはレポート ウィンドウが閉じられている場合はいつでも機能しません。
- ログが開かれている場合に機能します
- ログウィンドウとレポートウィンドウの両方が事前に閉じられていても、ログが開かれると機能します
- JMP ウィンドウ (JMP アドイン編集ウィンドウ/任意のデータ テーブル/スクリプト ウィンドウ) が開いている限り機能しますが、それらを閉じると機能しなくなります
アドインが動作するにはフレンドが必要なようです
写真からわかるように、十字が表示されています。 また、スクリプトを実行すると、JMP は独自のレポート ウィンドウと、非線形フィットを実行するスクリプトを作成したテーブルを開きます。 それらを完全に非表示にする方法が見つからなかったため、バックグラウンドで開いたり閉じたりします。 それが起こると、JMP 分析レポートにも予測方程式の代わりにクロスが含まれているのを垣間見ることができます。
これが私の場合、私は気にしませんが、cGMP で使用するためにこれを検証する必要があり、正しい形式を取得するために毎回 2 回実行するように人々に伝えることはできません!
私はここで途方に暮れています...
さらに考えはありますか?
Re: スクリプトは、アドインによって呼び出されるまで機能します。PictBox と PictureBox は、2 つの異なるボックスです。内部的には、JMP は PictureBox をディスプレイボックス ツリーのマーカーとして使用します。このマーカーは、子ボックスを 1 つのチャンクにグループ化するタイミングを決定するために、さまざまな方法で使用されます。プラットフォームは通常、グラフとその軸の周りに PictureBox を配置します。これは、ツリー内で「写真を撮りたい」ことがよくあるポイントです。
PictBox は、ビットマップ画像を保持するボックスです。
残念ながら、PictureBox()関数ピクトボックスを作成します。PictureBox を作成する JSL 関数はありませんが、プラットフォームで作成されます。
レポートに画像を追加しない限り、おそらく PictBox は見つかりません。グラフがあれば、おそらく PictureBox が見つかります。
Re: スクリプトは、アドインによって呼び出されるまで機能します。Hardner さん、コメントありがとうございます。
トラブルシューティングのヒントもありがとうございます。 数か月前にこれを最初に書いたとき、ツリー構造が一致せず、推測するしかありませんでした。 私はこれを忘れていました。 それは本当に奇妙でした: ツリー構造は番号ボックス 18 を示しますが、それを取得してレポート ウィンドウに表示するには、たとえば番号ボックス 7 を呼び出す必要があります!!!
アドインは常に同じ分析を実行するため、その側の問題はありません。
Re: スクリプトは、アドインによって呼び出されるまで機能します。こんにちはエリックとこの答えに感謝します。
離れて考えてみると、スコープの問題も思い出し、それが問題に違いないと気づきました。
私はあなたの両方のソリューションを試しましたが、うまくいきませんでした...初めてです。
ただし、アドインを 2 回続けて実行すると、2 番目のレポート出力に予測方程式が表示されます。 2 つの会議の間ではないときに、もう一度試してみます。
この特定の画像ボックスで問題が発生したのに、jmp レポートから取得した他のビットが適切に表示されたのは興味深いことです。
ここでよく学びましょう!
再度、感謝します :)
Re: スクリプトは、アドインによって呼び出されるまで機能します。これがスコーピングのように見えることに同意します。
しかし、おそらく無関係ですが、これがうまくいくことにも驚いています。 pb = nlr[PictBox(1)];
[PictureBox(1)] を綴らないと、エラーが発生します。それはJMP版のものなのだろうか。
また、追加できることを提案するつもりでした
nlr<
繰り返しになりますが、この差し迫った問題とはおそらく関係ありませんが、アドインが毎回異なるデータを取得する場合 (または他の設定で他のユーザーが使用する場合) は、ボックスが常にそこにあり、常に PictureBox であることを確認することをお勧めします。 (1)。 あなたはそれをもっと求めたいかもしれません具体的にはそれが下にあるアウトラインボックス名に基づいて、またはそれを見つけるためのテスト。スクリプトは失敗せずにレポートを作成し続けるため、すでに後者を実行している可能性があります。PictBox で見られる失敗により、スクリプト全体が停止します。代わりに空白を使用することはありません。
Re: スクリプトは、アドインによって呼び出されるまで機能します。ねえ、グウェニキャット、
JMP ログにメッセージはありますか?
このタイプの問題のほとんどは、変数のスコープに帰着する傾向があります。アドインが実行されている可能性が最も高い名前のデフォルトはここ(1) 、しかし、アドインのコンテキスト外でスクリプトを実行すると、スクリプトはおそらくそれなしで実行されます。したがって、アドイン コンテキストの外では、変数はすべてグローバルですが、アドインのコンテキストでは、それらはここ代わりに名前空間。だから私は思うmodEq V List Box 内の は、アドイン バージョンでは見つかりません。最初にアドインの外でスクリプトを実行すると機能するという事実は、この理論をサポートします。 modEqグローバル名前空間に追加され、アドイン スクリプトがそれを見つけられるようになります。
次の 2 行を変更してみてください。
modEq = pb << Get Image;
ピクチャーボックス( modEq),
に
::modEq = pb << Get Image;
ピクチャーボックス( ::modEq )、
それがうまくいかないかどうかを確認します。それはそれを保証しますmodEqグローバル名前空間に配置されます。または、それを保持したい場合は、ここ名前空間 (おそらくより良い方法)、代わりにこれを行います:
ここに:modEq = pb << Get Image;
ピクチャーボックス(ここに:modEq )、
それが修正されるかどうか教えてください。
ありがとう、
エリック