2023 生物資訊學習資源彙整

最近在Twitter上看到Ming Tommy Tang的分享關於生物資訊學習資源,想說就稍微紀錄一下,這邊也順便把之前寫過的一些關於資源類的文章匯集一起。

次世代定序資料分析學習資源(NGS analysis learning material)

2021 鐵人賽-AI, Data和生物資訊

這邊是原始的Twitter連結,我們把內容轉化為中文資訊,方便有興趣的人可以搜索得到。

哈佛大學生物統計教授Rafael Irizarry所建立的HarvardX Biomedical Data Science Open Online Training,內容涵蓋由淺入手,由理論到實務,由桌面端到雲端,主要是以R和Python為主。

  • Data Analysis for the Life Sciences Series
    • Statistics and R
    • Introduction to Linear Models and Matrix Algebra
    • Statistical Interference and Modeling for High-throughput Experiments
    • High-Dimensional Data Analysis
  • Genomics Data Analysis Series
    • Introduction to Bioconductor: Annotation and Analysis of Genomes and Genomic assays
    • High-performance computing for reproducible genomics with Bioconductor
    • Case Studies in functional Genomics
    • Using Python for Research

猶他大學的人類基因體學教授Aaron Quinlan,本身是bedtools作者,他的課程Applied Computational Genomics,有教學影片和相關簡報。這邊可以稍微看一下他的上課大綱:

  • Course Overview and Intro to Unix
  • Pattern searching in the human genome
  • Data frames and Importing Data
  • Intro to the tidyverse
  • DNA sequencing technologies
  • FastQ format and tools
  • Sequence mapping and alignment
  • Samtools and IGV
  • Poisson Processes in Biology
  • An introduction to awk and bioawk
  • Genetic Variation
  • SNP and INDEL discovery
  • Rates and patterns of human germline variation
  • VCF format, Hardy Weinberg Equilibrium, VCF toolkits
  • VCF annotation and interpretation
  • Genome Annotation and Resources
  • Genome Annotation Formats
  • Genome arithmetic with bedtools
  • Monte Carlo simulations and more on UNIX
  • Descriptive plots. The Central Limit Theorem

猴子演算法課程Bioinformatic Algorithms,是由Carnegie Mellon University教授Phillip Compeau(本身也創辦Rosalind,有點像是生物資訊領域的leetcode)和UCSD教授Pavel Pevzner所一起規劃的,其內容有影片、Coursera課程、電子書、互動式網頁等等不同的媒介來學習,主要針對生物問題展開,並且討論背後所衍生的演算法,算是很棒的學習素材,另一方面,也能理解生物資訊的重點不是只有程式,而是如何問問題和做假設:

  • Origin of replication
  • DNA patterns related to Molecular Clocks
  • Assemble Genomes
  • Sequence Antibiotics
  • Compare Biological Sequences
  • Fragile Regions in the Human Genome
  • Which Animal Gave Us SARS
  • How Did Yeast Become a Wine Maker
  • How Do we Locate Disease-Causing Mutation
  • Why Have Biologists still not developed an HIV Vaccine
  • Was T. rex Just a Big Chicken

Biostar創辦人Istvan Albert教授其所規劃的一系列電子書和課程,相對上面的資源來說,算是比較輕量等級的素材,內容定位在淺顯實用。

  • The Biostar Handbook
  • The Art of Bioinformatics Scripting
  • RNA-Seq by Example
  • Corona Virus Genome Analysis
  • Biostar Workflows

約翰霍普金斯的教授Michael Schatz 其所開設的Computational Genomics : Applied Compaative Genomics,在2018年的版本有提供簡報,最近兩年的則是有提供課程大綱和推薦閱讀。

  • Genomic Technologies
  • Whole Genome Assembly
  • Whole Genome Assembly and Alignment
  • The human genome and intro to long reads
  • Genomics in the Cloud
  • Read mapping
  • Variant Analysis
  • Structural Variant Analysis and Pangenomics
  • Genome Arithmetic and Plane Sweep
  • Machine Learning Primer
  • Functional Analysis
  • Human Evolution
  • Huan Genetic Disease
  • Cancer Genomics
  • Microbiome and Metagenomics
  • Genomic Futures

麻省理工學院計算生物學領域的教授Manolis Kellis則是開始蠻多機器學習/深度學習在生物醫學應用的主題,內容以啟發為主,細節則是依賴課後的閱讀,其涵蓋範圍相當廣泛。Github連結

使用國網中心超級電腦台灣衫建置定序分析流程(二)

延續上一篇:使用國網中心超級電腦台灣衫建置定序分析流程(一)的內容,往下去記錄到伺服器裡面的一些小細節。目前國網中心裡面的三組超級電腦系統,其實可以發現在規劃上的一些差異性,可以因此用來作為要在哪邊運算的考量點。

思考整體流程的改動

當開始使用高級電腦系統時,其實就會在現有的流程中,多了一段在伺服器的過程,這樣就代表要重新規劃分析的架構和想法,比如哪一個階段上雲,哪一個階段下雲,中間檔案要儲存在哪邊等等的問題。甚至在定序成本降低的時候,可以思考所謂的濕儲存,就是直接把檢體凍起來,有需要再定序。

  • 在超級電腦上分析,再將結果轉移到本地桌機進行最後的視覺化
  • 先在本地電腦將資料分類或註釋候,上傳到超級電腦中進行接下來的分析
  • 直接把整個分析流程架在超級電腦中,在遠端連進去伺服器來看資料
  • 將分析結果串接進去一般商用的雲端服務如google cloud、亞馬遜AWS或是微軟的Azure,方便後續的分享和儲存

規劃平行之架構

  • 任務平行
    • 在整個生物資訊分析流程中,其實是由不同軟體所組成的,每個軟體對於硬體的需求都不同,如何選擇正確的部分來平行運算,可以大大加速流程又節省資源。以分析三代定序的細菌基因組資料來說,就可以簡單分成幾塊,再根據特性來安排運算。
      • Basecalling => GPU需求大
      • Assembly => CPU需求大
      • Annotation => 資料庫整合需求大
      • Genotyping => 彈性分析需求大
      • Functional comparison => 匯聚分析結果需要
  • 資料平行
    • 分析流程中會有需多的中間產物,怎麼讓平行的程式輸入和輸出的資料能平順的接在一起,或是分散式的共用部分註解資料等等
  • I/O優化
    • 在本地機器上傳檔案,或是超級電腦間資料傳輸,或是超級電腦與雲端服務商如google cloud、AWS或是Azure的串接,這些都會大幅影響整個流程的時間

所需要的相關背景知識

通常阻擋一般人想要嘗試使用這類超級電腦的其實不是經費,反而使用超級電腦的經費需求遠遠小於你所想像的,1000元就可以處理小的細菌組裝,大概100個檢體了,所以覺得比自己花費維護硬體的門檻還低,主要是知識門檻,這邊是相關需要使用超級電腦的背經知識需求:

  • 命令行知識
    • shellscript: cd、mkdir、ls、cat、grep、awk、sed、ssh、scp、echo
  • 叢集電腦指定語法
    • PBS
    • Slurm
  • 基礎編成知識
    • python, R
  • 版本管理工具
    • git, conda, module
  • 基本網路協定工具
    • putty,
  • 基本伺服器環境
    • 節點架構

起手式:登入

  • 先在windows或是Mac系統中開啟命令行程式
  • 輸入以下指令,利用ssh進入節點

下面是成功登入台灣杉三號的畫面,不同超級電腦的登入畫面都不一樣,上面其實都有蠻多重要使用說明,建議都可以記錄或是好好閱讀一下,比如在台灣杉三這邊,可以看到他會把重要指令介紹,比如超級電腦環境中如何去裝載模組,以及提交需要超級電腦運行的代碼,大概只需要知道這些就可以運作了。

登入後,就可以使用模組系統的指令來看當前環境中有哪些可以使用的軟體,每個叢集電腦去處理隔離環境的方式都不同,這部分可能就是每次使用不同叢集電腦都要特別確認一下。在台灣杉則是使用Environment Modules系統來處理環境變數與全局城程式的管理,Envornment Module算是已有20年歷史在linux系統中幫助管理環境變數的工具。

可以先使用

module available

就會顯示如下的列表,展示當前環境中可以使用的工具,有時候在資料夾結構中有看到自己要用的軟體,在使用module available沒有看到,這時候就需要進一步去聯繫台灣杉這邊的工作人員來幫忙。

最常見的一個使用場景是使用Anaconda來做軟體版本的管理,這時候就可以先用module load來讀入Anaconda,接者便可以用conda來做環境管理以及安裝軟體,之後將程式丟到運算節點上時候,也可以用這方式來運作。如下的代碼:

# load library with module load
module load pkg/Anaconda3

# able to use conda for environmnenet manage
conda create -n set_upENv

提交代碼至叢集電腦

再來比較讓多數人困惑的是怎麼調用叢集電腦來做運算,其實相當簡單,主要就是提交一份shellscrip代碼,代碼前半部有註明針對叢集電腦運算的需求,比如所用的佇列、使用的代號、需要的記憶體、需要的CPU數量等等,提交後,節點電腦則在區分配相關資源用來執行這個shellscrip代碼。但台灣杉一號三號的叢集電腦指令不太一樣,台灣杉一號是使用比較傳統的PBS系統,而台灣杉三號則是Slurm系統。

PBS版本

# Shell 說明
#!/bin/bash
# PBS 指令
#PBS -l walltime=00:30:00
#PBS -l select=2:ncpus=16:mpiprocs=16
#PBS -N sample_job
#PBS –q ctest
#PBS –P TRI654321
#PBS –j oe
# 程式與指令
cd $PBS_O_WORKDIR

Slurm版本


# Shell 說明
#!/bin/bash
# Slurm 指令
#SBATCH -A ACD110078        # Account name/project number
#SBATCH -J hello_world      # Job name
#SBATCH -p test             # Partiotion name
#SBATCH -n 24               # Number of MPI tasks (i.e. processes)
#SBATCH -c 1                # Number of cores per MPI task
#SBATCH -N 3                # Maximum number of nodes to be allocated
#SBATCH -o %j.out           # Path to the standard output file
#SBATCH -e %j.err           # Path to the standard error ouput file
#程式與指令
module load compiler/intel/2020u4 IntelMPI/2020
mpiexec.hydra -bootstrap slurm -n 24 /home/user/bin/intel-hello

這邊比較重要的是兩個,一個是PBS -P參數和SBATCH -A參數,這邊就是用來放計畫編號的,會決定所運行的程式費用,扣在哪一個帳號下面,另一個則是佇列參數PBS -q 和SBATCH -p,這邊則是決定所使用的運行環境資源,下面分別有台灣杉一號和三號的佇列類別。

台灣杉一號

台灣杉三號

閱讀參考

[台灣杉] 善用module切換python環境

使用國網中心超級電腦台灣衫建置定序分析流程(一)

隨者二代定序主流方法的專利過期,相關廠商百花齊放,三代定序也逐漸成熟,定序本身的價錢再逐漸降低,之後的成本將會是分析和計算,以及儲存。可以看去年Nave Whiteford在他部落格41J Blog於去前九月有整理相關資訊

不過上面那個表格可能對一般人來說,只代表一件事就是定序技術有很多“工程”面會影響到價格和輸出。

那撇開實驗端,後續生物資訊流程如何保有彈性是一個很重要的問題。直接購買大型相關的電腦設備是一個好的方式嗎?或許要看能夠承擔的相關維護人力,以及相配套的需求,初期或許使用在地入門的設備搭配雲端分析資源是一個不錯的方式。

國家高速網路與計算中心在2017年開始逐步建置對外服務的超級電腦,在2018年台灣扇杉一號開始提供服務,緊接者陸續台灣杉二號和三號都上線服務,在世界超級電腦排名TOP500中,都排在前兩百名,且費用本身會比直接部署在Google雲端或是亞馬遜雲服務AWS便宜十倍以上,甚至特定情境下,對於學術領域還有折購,核銷上,其實對於國科會計畫經費或是廠商儲值都蠻方便的。

三座超級電腦在設計上有許多不同的地方,台灣杉一號以CPU計算為主,具有30000計算核心,檔案系統總容量為3.4PB,台灣杉二號的特色則是GPU計算上,有2016個NVIDIA Tesla V100 32GB GPU,算力排名目前最突出的,目前常聽到的台灣雲TWCC(Taiwan Computing Cloud)主要就是在台灣杉二號上面,有提供容器化服務的架構,台灣杉三號則是最新架構,算是針對多元科學計算做規劃,國網生科雲也是在台灣杉三號上面,不過以不同節點登入。

對於一開始沒有使用過HPC的人,其實在理解上會需要一些時間,但絕對是值回票價的技能投資。這邊簡單介紹入手的流程,可以簡單分成兩個部分:(1). 申請使用帳號與資格。(2). 實際登入使用

申請使用帳號iService

不管你是要這些系統的哪一個,不論是台灣杉一號、台灣杉二號、台灣杉三號、台灣雲TWCC或是國網生科雲,最簡單的方式其實是直接在iService計算資源服務網開通所有系統。

建置好會員帳號後,就可以開始使用相關服務。

第一個最重要的資訊就是你的主機帳號和OPT認證碼,這邊就在會員中心,再點選會員資訊,在主機帳號資訊這邊點進去,就會顯示自己被配置的主機帳號和OTP認證碼,這邊其實除了會員帳密外,還會設置主機帳密,這組帳密就是你登入超級電腦的帳密。

上面的主機帳號,就是你之後要登入超級電腦時的帳號名稱,是由系統自動給你的,下面則有一些OTP認證碼的產生機制,這則是每次登入超級電腦都會有的認證機制。

每個人在建置帳號後,其實都會有一個免費試用額度,在台灣杉系統中的運行方式,都是綁定所謂的計畫來作為計價和相關權限管理。

這部分則是可以點選會員中心->計畫管理->我的計畫,在還沒有另外儲值時,就會有一個試用計畫。如下面的列表,每個計畫都會有個計畫系統代號,這就會是你跑運算時,要提交的代號,這代號會決定你在哪個超級電腦和佇列有運算的權限。

超級電腦名稱台灣杉一號台灣杉二號台灣杉三號
操作資料使用說明使用說明使用說明
登入節點140.110.148.11
140.110.148.12
使用TWCC CLItwnia3.nchc.org.tw
生科雲登入節點(可調用GPU)
t3-c3.nchc.org.tw
資料傳輸節點140.110.148.21
140.110.148.22
使用TWCC CLIt3-x1.nchc.org.tw
t3-x2.nchc.org.tw
系統架構PBS
API
(像是Docker用法)
Slurm
登入範例ssh 主機帳號@140.110.148.11ssh 主機帳號@twnia3.nchc.org.tw
計價方式計畫預儲值
(最便宜)
隨用隨付
(整體最貴)
計畫預儲值
(彈性最多)