在 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 ✔
閱讀全文 »

為什麼想以鍵盤瀏覽網頁?滑鼠是為簡化繁瑣的鍵入指令而生,也與圖形介面的發展相輔相成。因此,當代網頁本來就適合以滑鼠瀏覽,純靠瀏覽器有限的快捷鍵反倒綁手綁腳。

然而,有時擁有自己的風格比起事情做的有效率還重要。本文就是我對於「用鍵盤瀏覽網頁」這項風格的探索與總結。

Style over Substance. It doesn’t matter how well you do something, as long as you look good doing it. (格調重於成效,只要你作風有形,事情幹得怎麼樣並不要緊。)

The core rulebook for Cyberpunk 2020

閱讀全文 »

若數列某項兩側各數字的總和相同,則該項為數列的樞紐 (pivot)。給定一整數數列,判斷其是否含樞紐項。若有,求樞紐之索引值;若無,則回傳 -1

閱讀全文 »
0%