通過 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 )
);
似乎應該有更快的方法來做到這一點。有什麼建議可以加快速度嗎?
回复:通過 JSL 隱藏和/或排除大量列的有效方法追問:我把這個issue分享給了開發,並且做了一些改進來加速這種操作。隨著列數的增加,循環遍歷列以隱藏/排除的速度仍然會變慢,但是一些用於隱藏和排除列的新 JSL 消息將可用,並且操作記錄器將在適當的地方使用它們。 這應該在 JMP18 開發版本和 18 早期採用者版本中可用。
來自 Jira 問題 (JMP-13445)
通過在數據表上添加新的隱藏列和排除列命令進行修復。 他們可以這樣稱呼:
<SPAN class="">dt << 隱藏列; // 隱藏選中的列 </SPAN>
dt << 隱藏列(1|0); // 隱藏或取消隱藏列
dt << 隱藏列( COLUMN_LIST ); // 隱藏列出的列
dt << 隱藏列( 1|0, COLUMN_LIST ); // 隱藏或取消隱藏列出的列
排除列使用相同的語法。
回复:通過 JSL 隱藏和/或排除大量列的有效方法快速更新:如果我將它包含在一個更大的腳本中,這似乎在 Mac 上工作,但在 Windows 上不起作用。我需要為 Windows 版本的 JMP 做一些特別的事情才能讓 Main Menu () 調用在更大的腳本中工作嗎?
回复:通過 JSL 隱藏和/或排除大量列的有效方法Main Menu( "Cols:Hide/Unhide" );
再次嘗試此操作,但將其複制並粘貼到我的腳本中,現在可以使用了。 甘德森的太陽! 為什麼它不起作用,現在卻起作用了? 我唯一能想到的是,如果我只運行選擇列的那一行,它就可以工作,但是當放入一個選擇列的腳本時,下一行就是這個,它不起作用。
回复:通過 JSL 隱藏和/或排除大量列的有效方法@brady_brady ,出於某種原因,主菜單(“列:隱藏/取消隱藏”)在 Windows 10 JMP 17 EA9 上不起作用。 這可能是什麼原因? 至少它對我不起作用。
回复:通過 JSL 隱藏和/或排除大量列的有效方法主菜單命令非常快,我不認為它們是 hack,但如果 JSL 可以通過消息運行與主菜單命令相同的代碼,那就太好了。 或者,可以在腳本指南中擴展主消息語法,並在主菜單在 Mac 和 PC 之間看起來不一樣的情況下跨平台標準化。
回复:通過 JSL 隱藏和/或排除大量列的有效方法它是處理基因組表達數據的工作流程的一部分。分析數據表中通常有許多列(其中該列對應於特定的基因組表達變量)幾乎沒有表達,因此您希望識別這些列,然後不在進一步分析中使用它們。隱藏和排除是一種不在後續分析平台對話框中顯示這些列的便捷方式。雖然我們也可以只刪除要使用的列或對列進行子集化,但將排除/隱藏的列保留在數據表中還是有一些價值的。
回复:通過 JSL 隱藏和/或排除大量列的有效方法我也嘗試使用 for each() 但它仍然很慢
for each({c, ii}, collist,
c << Hide(1) << Exclude(1)
)
那同樣很慢。
使用主菜單命令運行速度超快(感謝@yuichi_katsumur !),但感覺就像一個 hack。我很欣賞這方面的建議和幫助。
回复:通過 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();
回复:通過 JSL 隱藏和/或排除大量列的有效方法我嘗試了一些技巧,但沒有一個奏效。
- 將作品封裝在
dt << Begin Data Update;
//work here...
dt << End Data Update;
- 使數據表不可見
- 將數據表設為私有
隱藏和排除此應用程序中的列的目的是什麼? 也許有一個解決方法。
回复:通過 JSL 隱藏和/或排除大量列的有效方法
我也試過
collist << Hide(1);
collist << Exclude(1);
這也很慢。