彈出視窗是以鍵盤瀏覽網頁的最大阻礙。這些視窗的內容不外乎會員邀請、推薦連結、蓋板廣告與網站公告等,是網站而定,通常沒辦法以 tab 來點擊,之前介紹的 Vimium 功能也沒辦法為這些視窗上的連結打標籤。由於彈出視窗並非廣告,所以下載 adblock 也無法阻擋之。所以往往只能乖乖移動滑鼠關閉之。

因為這些彈出視窗設計有別於html 內建的元素,所以有些更糟糕的案例是連關閉按鈕都沒有顯示在頁面上,強迫使用這點開網頁才能關閉之。

在得知 Vimium 點擊連結的方便之後,我嘗試修改 Vimium 的程式碼,讓他可以為原先沒辦法點擊的連結標註標籤

閱讀全文 »

Nextflow 透過 channel 媒介 process 間的檔案傳遞,讓輸出入檔案以軟連結集中到 process 的工作目錄。不過若想從工作目錄取出分析的最終結果,有賴 publishDir directive 的協助。

閱讀全文 »

在 Nextflow 的框架,channel 媒介了 process 間的資料傳遞。雖然資料進出 channel 遵循先進先出 (first-in, first out, FIFO) 原則,但隨後 nextflow 會平行處理這些資料,所以 process 釋出資料的順序取決於執行速率,而不是原先輸入的順序(見下例)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// demoEmitOrder.nf
process A {
input:
val num
output:
stdout
"""
echo "${num}"
"""
}

workflow {
nums = channel.of("1", "2", "3")
nums.view()
A(nums).view()
}
1
2
3
4
5
6
7
8
9
$ nextflow run demoEmitOrder.nf
1
2
3
1

3

2

Nextflow 這項特性使得輸入彼此相依的資料時要格外留意,因為可能在定序產物品管時,發生不同樣本的順逆序列(例如:a_r1.fa 與 b_r2.fa 合併)的狀況;又或是使用 GATK 這類需要參考基因體的工具時,無法為 .fasta 找到對應 .dict.fai 檔的情形。

因此,本文將介紹如何將想要一起輸入的檔案以及其辨識碼組合成 tuple (例如:["ID", "ID_r1.fastq", "ID_r2.fastq"]),確保成對資料同進同出,還能透過辨識碼與其它資料合併。

閱讀全文 »

狀況描述

原本在 Windows 都能正常用 VSCode Remote SSH 連線伺服器,但一早卻發現連線失敗。當時,VSCode 不斷要求輸入密碼卻無法登入,”OUTPUT” 頁面提示的訊息節錄如下:

Failed to parse remote port from server output

Acquiring lock on /home/username/.vscode-server/bin/some-hash-code-here/vscode-remote-lock.username.some-hash-code-here

版本資訊:windows 21H2, VSCode 1.74.2

閱讀全文 »

Process 是 nextflow 管理分析流程的基本單位,可包含能在 linux shell 執行的程式碼(例如 linux command, python code)、腳本(例如自訂的 hello-world.sh)與軟體(例如 GATK 或 FastQC)。 Process 之間彼此獨立,各有各的工作目錄,也可以分別設定其執行環境(例如 docker container 或 conda environment)。

Channel 則媒介了 process 間的資料交流,若不透過 channels 串接,process 間的檔案或變項無法共享。舉凡字串、數值、檔案路徑乃至標準輸出等,皆有對應的 qualifier 讓 nextflow 知道怎麼處理得自於 channel 的各式資料。

閱讀全文 »

Vimium 是 Chrome 的一款擴充套件,它借鑒了 Vim 的鍵位設計與操作邏輯,讓用戶只需要鍵盤便能執行分頁管理、連結點擊與頁面瀏覽等操作。

由於瀏覽器終究不等同編輯器,所以 Vimium 並沒有移植 Vim 所有的功能與指令。然而,即使只納入 Vim 的部分性質,Vimium 仍顯著改善了 Chrome 的鍵盤瀏覽體驗。以點擊連結為例,Chrome 的預設作法是慢慢用 Tab 切到連結位置;Vimium 則會自動標記視窗內的連結,用戶只要鍵入標記字符即可開啟連結。因為最多輸入三個字即可開啟連結,所以有時甚至比滑鼠點擊還迅速。

對於習慣鍵鼠操作卻有心學習 Vim 的用戶而言,一時要以 Vim 取代既有的工作流程,可能是繁瑣且費時的過程。若先從 Vimium 著手,在體驗鍵盤瀏覽網頁的流暢感之餘,也能讓 Vim 操作的抽象性質融入日常生活(例如:查資料與逛論壇)。待初探了 Vim 的設計緣由,再逐步精進其他操作模式,也不失為一種學習 Vim 的可行策略。

閱讀全文 »

上週碰到一個離奇的 bug,有支 nextflow 腳本可以順利執行,但會無聲無息地略過其中一個 process。該腳本執行後於終端吐出的訊息類似以下形式:

1
2
3
4
5
$ nextflow run workflow.nf
[3c/9ab742] process > a1 [100%] 1 of 1 ✔
[8e/4eg429] process > a2 [100%] 1 of 1 ✔
[- ] process > b1
[2f/0c0b71] process > c1 [100%] 1 of 1 ✔
閱讀全文 »
0%