ツリー構造のオブジェクトを使用してプロット出力からデータを取得する際の質問<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />こんにちは、私はスペック制限のさまざまなシナリオのフォールアウトデータを取得したいです。 以前は別のスクリプトで列をループ処理し、各列をリストとして取得し、select_where()データが仕様の制限を上回ったり下回ったりしていましたが、今回はネイティブJMP情報を使用したいと思いました。
制限がある場合、JMPの配信プラットフォームはcpk分析とフォールアウトを表示します。 ツリー構造を調べると、フォールアウト情報は "numbercolbox(4)"というオブジェクト/リストに表示されます。 フォールアウトデータを取得する方法を私は考え出しました、そして私は私のそれぞれの限界セットのためにスペック限界を埋めて、分配を再実行することができます、しかし、私はこの解決策がどれほど信頼できるか知りたいです。 たとえば、他の誰かが異なる設定をしている場合、numbercolbox(4)は常にフォールアウトデータを取得するのでしょうか。
これに代わるものとしてxpathがあると思いますが、これに関する情報はあまりありません。これがまともな解決策であり、誰かがそれに関する文書を持っているならば、私に知らせてください。
添付されているのは、私がやりたいことをし、私のために働くスクリプトです。あなたはそれを実行し、私が話していることを見ることができます。サンプルデータを使用しています。
JMP出力(プロットなど)のツリー構造を確認するには、ウィンドウを本来のサイズよりも大きくしてから、一番下または一番右の領域をCtrl + Shift +右クリックして[ツリー構造の表示]を選択します。下記参照。
ありがとう、
-マイク

再:木構造のオブジェクトを使用してプロット出力からデータを取得することについての質問私は(少なくとも私にとっては)それをより簡単にするためにxpathコードを変更しました、そしてこれは私がそれをする必要があることのために働きます。 しかしながら、あなたが持っているより一般的な使用法の構造/コードが本当に役に立つだろうとして、私が上に掲載したコードがなぜうまくいかないのか私はまだ興味がありません。
ありがとう、
マイク
デフォルトの名前はここ ( 1 ) ;
testVar = 0 ;
testVar = 1 ; //以降の実行でコメントアウトする
もし ( testVar 、
開いた ( "$ SAMPLE_DATA \ Semiconductor Capability.jmp" ) ;
myDist = 分布 (
スタック ( 1 ) 、
連続配布 (
カラム ( : NPN1 ) 、
要約統計をカスタマイズする (
ロバスト平均 ( 1 ) 、
堅牢な標準偏差 ( 1 )
)
) 、
連続配布 (
カラム ( : PNP1 ) 、
要約統計をカスタマイズする (
ロバスト平均 ( 1 ) 、
堅牢な標準偏差 ( 1 )
)
) 、
連続配布 (
カラム ( : PNP2 ) 、
要約統計をカスタマイズする (
ロバスト平均 ( 1 ) 、
堅牢な標準偏差 ( 1 )
)
)
) ;
) ;
reportObj = myDist << xpath ( "// OutlineBox [text()= '要約統計量']" ) ;
にとって ( 私 = 1 、私 <= ナイテム ( reportObj ) 、私 ++、見せる ( reportObj [ 私 ] << タイトルを取得 ) ; ) ;
strList = {} ;
reportObj = myDist << xpath ( "// OutlineBox [text()= '要約統計量'] // StringColBox" ) ;
//(i = 1、i <= nitems(reportObj)、i ++、show(reportObj)の場合 << get); strList = reportObj << get;);
見せる ( reportObj [ 1 ] << 取得する ) ;
strList = reportObj [ 1 ] << 取得する ;
やってみる ( rMnIndx = loc ( strList 、 「頑強な意味」 ) 、 rMnIndx = - 1 ) ;
やってみる ( rStdIndx = loc ( strList 、 「ロバスト標準偏差」 ) 、 rStdIndx = - 1 ) ;
statList = {} ;
reportObj = myDist << xpath ( "// OutlineBox [text()= '要約統計量'] // NumberColBox" ) ;
//(i = 1、i <= nitems(reportObj)、i ++、show(reportObj)の場合 << get); statList = reportObj << get;);
見せる ( reportObj [ 1 ] << 取得する ) ;
statList = reportObj [ 1 ] << 取得する ;
もし ( rMnIndx > 0 & rStdIndx > 0 、
robustMean = statList [ rMnIndx ] ;
robustStd = statList [ rStdIndx ] ;
、
robustMean = - 999 ;
robustStd = - 999 ;
) ;
見せる ( robustMean 、 robustStd ) ;
再:木構造のオブジェクトを使用してプロット出力からデータを取得することについての質問こんにちはPhilip、
私はついにxpathコードをチェックアウトすることにしました、そして私はそれで問題を抱えています。あなたのポスターを参考にしました。 あなたは私が間違っていることを理解するのを手伝ってくれる?
また、私は以前にこれを見たことがあると思いますが、私は思い出しません… 何ですか? 。 ' の中に " list_testSS.Key "変数名は?
Cの構造を彷彿とさせるようですが、私はそれに関するjslのドキュメントを見つけることができませんでした。私のコードでそれが正しく設定されているかどうかはわかりませんでした。
ありがとう、
マイク
デフォルトの名前はここ ( 1 ) ;
開いた ( "$ SAMPLE_DATA \ Semiconductor Capability.jmp" ) ;
myDist =
分布 (
スタック ( 1 ) 、
連続配布 (
カラム ( : NPN1 ) 、
水平レイアウト ( 1 ) 、
垂直 ( 0 ) 、
左側の軸 ( 1 ) 、
要約統計をカスタマイズする (
標準エラー平均 ( 0 ) 、
上限信頼区間 ( 0 ) 、
平均信頼区間の下限 ( 0 ) 、
Nがありません ( 1 ) 、
範囲 ( 1 ) 、
ロバスト平均 ( 1 ) 、
堅牢な標準偏差 ( 1 )
)
)
) ;
reportObj = myDist << xpath ( "// OutlineBox [text()= '要約統計量'] / ancestor :: OutlineBox [last()]" ) ;
list_groupName = reportObj << GetTitle ;
list_testSS.Key = ( reportObj << xpath ( "// * [(contains(text()、'Summary Statistics')] / following-sibling :: * // StringColBox"を含む) )) << 取得する ;
list_testSS.Val = ( reportObj << xpath ( "// * [(contains(text()、'Summary Statistics')] / following-sibling :: * // NumberColBox"を含む) )) << 取得する ;
list_levelString = ( reportObj << xpath ( "// OutlineBox [text()= '長期シグマ'] // StringColBoxHeader [text()= '機能'] / .." )) << 取得する ;
list_levelMeans = ( reportObj << xpath ( "// OutlineBox [text()= '長期シグマ'] // NumberColBoxHeader [text()= 'インデックス'] / .." )) << 取得する ;
再:木構造のオブジェクトを使用してプロット出力からデータを取得することについての質問xpathの明らかな利点の1つは、JMPレポートウィンドウに複数のディスプレイボックスオブジェクトがあるときです。例えば、あなたがいくつかの分析をして、結局終わったとしましょう。
100個のアウトラインボックスで、xpathを使えば、次のことができます。
rpt << xpath( "// OutlineBox")
そして、すべてのアウトラインボックスへの参照のリストが返されます。(rptが JMPレポートウィンドウ)
従来のディスプレイボックススクリプティングでは、最初に生成された数を知り、次に1からNまでループし、インデックスを使って各アウトラインボックスにアクセスする必要がありました。特に順序が明確でない場合(例えばネストされたアウトラインボックス)、インデックス付けは問題になる可能性があります。これは、コーディングのより多くのステップになります。
スピードに関しては、特に大規模なグループでは、XPathの実行速度がはるかに速くなるという点で、私には明らかな違いがありました。私がそれがあなたが説明する「単発」シナリオと違いを生むとは思いません、しかし正式なタイミング研究は行われなければならないでしょう。
再:木構造のオブジェクトを使用してプロット出力からデータを取得することについての質問ありがとう、私はしばらくの間そのような文書を探していました。私はそれを少し試してみて、それがどのようになるかを見ていきます。簡単ですが言語にも依存します。
なぜxpathはディスプレイツリースクリプトよりも効率的ですか?コーディングがより効率的なのは、情報をより早く取り戻せるということですか。この質問の目的のために、それが配布されている画像ボックスのように返されているただ1つのオブジェクトであり、あなたがその名前または番号を知っていると仮定しよう。これを100回または1000回実行すると、1つは他よりも著しく速いですか?(オブジェクトを抽出して戻す前に)レポート自体を生成しているように見えるのは、実行時間です。
再:木構造のオブジェクトを使用してプロット出力からデータを取得することについての質問今年のカンファレンスでは、XPathに関するかなり良いポスターがありました。
https://community.jmp.com/docs/DOC-8116
彼らはJMPの構造を持ついくつかの実生活の例を通過します。
再:木構造のオブジェクトを使用してプロット出力からデータを取得することについての質問ありがとうございます。それは今私には明白です。;-)他の言語を使用しているユーザーがいるかどうかを確認し、使用されている他の言語用にフックを追加します。 それは防弾ではありませんが、それは私たちの目的のために問題ないはずです。 ありがとう。
再:木構造のオブジェクトを使用してプロット出力からデータを取得することについての質問おそらく明白なことを述べますが、スクリプトを複数のロケールで実行する必要がある場合は、表示ボックスの名前でインデックスを付けるときには注意が必要です。
再:木構造のオブジェクトを使用してプロット出力からデータを取得することについての質問ありがとう、その数(私の場合は4)が変わる可能性があるという事実は、私が期待していたことと同じです。あなたの解決策は完璧に機能します。
変数(リスト)を使用して仕様の上限と下限を設定する際にも問題があります。 例のようにハードコード化されたリストを使用しても問題なく動作しますが、単純なリスト要素を使用することはできません。私はおそらくeval(replacement())を正しく使用していませんが、私の経験ではこれはJSLの最も紛らわしい部分の1つです。
これを修正する方法について何か提案はありますか?
。
| | | mySpecsExpr = expr(列として(yParamNames )<< set property( "Spec Limits"、{aaa、bbb})); |
| | | show(eval(dList [1]) 、eval(dList [2]) ; // < - これらはログウィンドウで正常に評価されます |
| | | eval(代入(mySpecsExpr、expr(aaa)、eval(dList [1])) 、expr(bbb)、eval(dList [2]) ;); |
編集:実際に私はこの方法に基づいてそれを把握することができました: 46953 - 変数を使用して列のプロパティをスクリプト化する方法
これはうまくいきます。 誰かがもっと簡単な答えを持っているなら、私はそれをいただければ幸いです。
| | | | 評価( |
| | | | | 評価指数( |
| | | | | | 列として(yParamNames <<プロパティの設定( |
| | | | | | | "仕様の制限"、 |
| | | | | | | {LSL(Expr(eval(dList [1])) )、USL(Expr(eval(dList [2])) //)、ターゲット(Expr(tLimit))、制限の表示(0)} |
| | | | | | ) |
| | | | | ) |
| | | | ; |
再:木構造のオブジェクトを使用してプロット出力からデータを取得することについての質問この特定のプラットフォームまたはノードの番号付けがどれほど堅牢になるかわかりません。しかし、一般的に、番号付けは固定されていませんが、レポートの全体的な複雑さによって変わる可能性があります。
特定のディスプレイボックスを表示するための代替方法は、その名前を使用することです。ワイルドカードもサポートされています。JMPバージョン間で名前が変わることはめったにないので、名前は番号付けよりも堅牢だと思います。デフォルトオプションの数はバージョンと好みによって変わるかもしれません。
私サンプルスクリプトのコンテキスト、すべて以下の3行はすべて同じ結果を返します。
報告書 ( distObj )[ ナンバーコルボックス ( 4 )] << 取得する ;
報告書 ( distObj )[ ナンバーコルボックス ( 「実際の割合」 )] << 取得する ;
報告書 ( distObj )[ ナンバーコルボックス ( "%?" )] << 取得する ;