JSL を介して多数の列を非表示および/または除外する効率的な方法ゲノミクスの例@Chris_Kirchberg発達した(参照https://community.jmp.com/t5/Technical-Reference-Library/C40-mRNA-Expression-Cattle-Follicle-Development/ta-p/519216 )、ワークフローの一部は、データ品質の問題のために分析から除外する必要がある列を特定することです。彼と私は、これを効率的に行うためのスクリプトに取り組んでいます。この例には 28000 の列があり、そのうち約 9000 の列を非表示にして除外する必要があります。現在JSLのループでこれを行っていますが、かなり遅いです(数秒かかります)
// collist is a list of column references
For( i = 1, i <= N Items( collist ), i++,
collist[i] << Hide( 1 ) << Exclude( 1 )
);
これを行うためのより速い方法があるはずです。これをより速くするための提案はありますか?
Re: JSL を介して多数の列を非表示および/または除外する効率的な方法フォローアップ: この問題を開発部門と共有し、この種の操作を高速化するためにいくつかの改善が行われました。列をループして非表示/除外すると、列の数が増えるにつれて速度が低下しますが、列を非表示および除外するための新しい JSL メッセージがいくつか利用可能になり、アクション レコーダーは適切な場合にそれらを使用します。 これは、JMP18 開発ビルドと 18 Early Adopter バージョンで利用できるはずです。
Jiraの問題から(JMP-13445)
データ テーブルに新しい [列を非表示] コマンドと [列を除外] コマンドを追加することで修正されました。 それらは次のように呼び出すことができます:
<SPAN class="">dt << 列を非表示; // 選択した列を非表示にします </SPAN>
dt << 非表示の列 (1|0); // 列を非表示または再表示します
dt << 列を非表示にする( COLUMN_LIST ); // リストされた列を非表示にします
dt << Hide Columns( 1|0, COLUMN_LIST ); // リストされた列を非表示または再表示します
列を除外同じ構文を使用します。
Re: JSL を介して多数の列を非表示および/または除外する効率的な方法クイック アップデート: これを大きなスクリプトに含めた場合、これは Mac では機能するようですが、Windows では機能しません。大きなスクリプト内で Main Menu () 呼び出しを機能させるために、JMP の Windows バージョンで何か特別なことをする必要がありますか?
Re: JSL を介して多数の列を非表示および/または除外する効率的な方法Main Menu( "Cols:Hide/Unhide" );
これをもう一度試してみましたが、コピーしてスクリプトに貼り付けたところ、動作するようになりました。 ガンダーソンの太陽! なぜ機能しないのに、今は機能するのでしょうか? 私が考えることができる唯一のことは、列を選択してその行のみを実行すると機能するということですが、列を選択するスクリプトを入れると、次の行はこれで、機能しません。
Re: JSL を介して多数の列を非表示および/または除外する効率的な方法@ブレイディ_ブレイディ、Windows 10 JMP 17 EA9 で、何らかの理由でメイン メニュー ("Cols:Hide/Unhide") が機能しません。 これが考えられる理由は何ですか? 少なくとも私にはうまくいきません。
Re: JSL を介して多数の列を非表示および/または除外する効率的な方法メイン メニュー コマンドは非常に高速で、ハックとは見なしませんが、JSL がメイン メニュー コマンドと同じコードをメッセージ経由で実行できると便利です。 または、スクリプト ガイドでメイン メッセージ構文を拡張し、メイン メニューが Mac と PC で同じに見えない場合に備えて、プラットフォーム間で標準化することもできます。
Re: JSL を介して多数の列を非表示および/または除外する効率的な方法ゲノム発現データを処理するワークフローの一部です。多くの場合、解析データ テーブル (列が特定のゲノム発現変数に対応する列) には、発現がほとんどまたはまったくない多数の列が存在するため、それらの列を特定して、それ以上の解析に使用したくない場合があります。非表示と除外は、後続の分析プラットフォーム ダイアログでそれらの列を表示しない便利な方法です。列を削除するか、使用したい列をサブセット化することもできますが、除外された/非表示の列をデータ テーブルに保持することにはいくつかの価値があります。
Re: JSL を介して多数の列を非表示および/または除外する効率的な方法for each() も使用してみましたが、それでも非常に遅かったです
for each({c, ii}, collist,
c << Hide(1) << Exclude(1)
)
それも同様に遅かった。
メインメニューコマンドを使用すると、非常に高速に動作します(ありがとう@yuichi_katsumura !)、しかし、それはハックのように感じます。これに関する提案と助けに感謝します。
Re: JSL を介して多数の列を非表示および/または除外する効率的な方法こんにちは、サムさん、
次のスクリプトはどうですか? それははるかに高速です。
dt << clear column selection();
dt << Select Columns( collist );
Wait( 0 );
Main Menu( "Cols:Hide/Unhide" );
Main Menu( "Cols:Exclude/Unexclude" );
dt << clear column selection();
Re: JSL を介して多数の列を非表示および/または除外する効率的な方法いくつかのトリックを試しましたが、どれもうまくいきませんでした。
・作品の封入
dt << Begin Data Update;
//work here...
dt << End Data Update;
-データテーブルを非表示にする
-データテーブルを非公開にする
このアプリケーションで列を隠したり除外したりする目的は何ですか? たぶん、回避策があります。
Re: JSL を介して多数の列を非表示および/または除外する効率的な方法
私も試しました
collist << Hide(1);
collist << Exclude(1);
それも非常に遅いです。