文獻閱讀:RNAseq在臨床應用的可能和挑戰(中)

原始論文:Byron, S. A., Van Keuren-Jensen, K. R., Engelthaler, D. M., Carpten, J. D., & Craig, D. W. (2016). Translating RNA sequencing into clinical diagnostics: opportunities and challenges. Nature Reviews Genetics, 17(5), 257–271. doi:10.1038/nrg.2016.10

文獻閱讀:RNAseq在臨床應用的可能和挑戰(中)

承襲上篇閱讀的內容,這邊談到論文的第二部分,即如何應用RNA sequencing於感染性疾病:

 可將RNAsequencing用來作為RNA-based相關病原體的診斷使用

目前臨床上重要的RNA virus如愛滋病(HIV)、伊波拉病毒(Ebola)、登革熱(Dengue)、肝炎(Hepatitis) 、流行性感冒等在醫院裡面都是使用qRT-PCR assay作為檢驗工具,這些都有可能在未來可直接用RNAsequencing來取代,除此之外,也可以用來追蹤某個疫情的爆發,像2014年的伊波拉病毒大爆發,便是使用amplicon sequencing的技術來追蹤

用來診斷傳統培養方式難以確診的細菌感染

一部份的感染疾病,其感染部位的不可性,再加上感染的細菌量少,用培養的方式通常要很久,且不一定正確,如臨床上腦膜炎的感染,確診的話會需要抽脊髓液且不一定能培養出東西,要是能從病人血液中檢驗到少許病原體的RNA便能解決,畢竟抽脊髓液本身在臨床處置上是很侵入式的,另一方面,如Mycobacterium tuberculosis的診斷用傳統方式會有問題,使用 RNAseq來提早確診外(這類細菌培養的時間都非常長,甚至幾週),也能從其transcriptome來判斷其抗藥性。

但目前來說,相對於傳統的 qt-PCR assay,使用RNAsequence在傳統的實驗中會有很大的分佈統計上的問題!

文獻閱讀:RNAseq在臨床應用的可能和挑戰(上)

原始論文:Byron, S. A., Van Keuren-Jensen, K. R., Engelthaler, D. M., Carpten, J. D., & Craig, D. W. (2016). Translating RNA sequencing into clinical diagnostics: opportunities and challenges. Nature Reviews Genetics, 17(5), 257–271. doi:10.1038/nrg.2016.10

screenshot.png

篇文章Translating RNA sequencing into clinical diagnostics: opportunities and challenges,鉅細彌遺地把RNAsequencing的應用與相關的疾病相連結,並且闡述其在臨床上的潛力,其主要分三大部分來談論RNAseq,第一部分先講利用RNAseq可以探討用來看哪些東西(轉錄變異transcript variant、non-codingRNA等),第二部份則是針對RNAseq在感染疾病的診斷和追蹤的應用,第三部份則是談論將RNAseq技術實際整合進目前的臨床情境中可能面臨的validation和法規問題。

 第一部分介紹從RNAseq可以用來看各式aberrant transcription

  • mRNA expression profile是最基本用RNAsequencing想看的,而其在臨床上實際的應用相對於DNAsequencing 可以有更多的空間,因為其可以看到動態的基因表現狀況,可用來監測、診斷疾病的狀態,如OncotypeDx 21-gene expression assay,其可以用在乳癌病患之基因檢測,用來預測癌細胞切除手術後復發的機率,或是化療及放射線治療的反應、AlloMap則是用來看心臟移植病患的急性細胞排斥,這項基因檢測服務非常完整,其臨床試驗結果還發表在NEJM上,主要使用11個基因作為signature來預測風險,收受檢體後2-3個工作天就有報告,除此之外,其他基因檢測如免疫系統的監測Adaptive Biotechnology,其主要看T-cell receptor的變異,不過也自己研發用來分析RNAseq的分析工具immunoSEQ。(雖然上述公司所發展的基因檢測商品並非直接使用RNAseq)
  • gene fusion所造成的transcripts異常,可用來區分癌細胞的subtype,不過最常見得還是在血液疾病,其中急性骨髓白血病(AML)最具有代表性,其在t(8;21)(q22;q22) translocation造成的AML1-ETO嵌合,在攝護腺癌細胞中也發現有TMPRSS2-ERG的嵌合現象,跟疾病預後相關。
  • alternative transcripts(由splicing或是structural variant造成)在發育疾病、神經退化疾病或是癌症中有角色存在,如AR-V7在頑固型攝護腺癌、EGFRvIII在glioblastoma、乳癌的BRCA1/BRCA2。
  • 特殊的RNA種類隨者技術的改善和推陳出新,開始有人研究nc-RNA或是extracelluar RNA在疾病中可用來診斷的機會。
    • extracellular RNA 是在biofluid中的胞外RNA,其被體內細胞分泌出後由extracellular vesicles 或是RNA-binding protein及lipoprotein。去量測exRNA的好處是其可以由血液中獲取(及最近很火俗稱的blood biopsy),但其lack of tissue specificity是目前的問題所在,因為所有的細胞都可能分泌出exRNA,而目前有科學家使用抽取特定組織間液的方式來解決這問題。而exRNA可以用來檢測或是追蹤癌症進展,ExoDx Lung 是今天2016年一月發表的商業基因檢測商品,其可以由血液檢體中檢測肺癌病人是否有EML4-ALK fusion transcripts或是T790M。

第二部分則介紹將RNAseq使用在感染疾病的追蹤、診斷上,如RNA-virus相關的疾病登革熱、A肝、D肝、SARS等等,在感染疾病的追蹤上則可以利用RNAseq來做metagenomic的應用,看是哪種type的感染或是其可能的傳播路徑。

第三部份則是介紹實際將RNAseq導入臨床應用,撇開本身實驗及分析RNAseq結果的困難度外,最重要的是相關法規,如執行RNAseq的醫院實驗室要怎麼管理和通過驗證,都算有其難度。

The New Reddit Journal of Science

 

screenshot.pngReddit網站是美國鄉民重要聚集地,從2005年創立至今,裡面有各種最道地的話題包含娛樂、社交媒體、各式各樣,而reddit裡頭會有各個不同的subreddit,裡頭討論者不同的主題,而有一種形式的subreddit是非常熱門的,讓名人直接開版,讓鄉民問問題,分別是IAmA 或是 AMA (ask me anything)series,連歐巴馬總統也有開版回答中鄉民的問題,是其中有一系列有趣的專欄是專屬於科學宅的,那便是The New Reddit Journal of Science裡的AMA series

在這個系列中,論壇會邀請各個生醫領域“大老級”的人物直接在論壇中跟鄉民們互動,比如前陣子有Francis Collins(NIH Director, Human Genome Project director),The Cancer Genome Altas (TCGA) director Jean Claude Zenklusen 等等,在這邊獲得的資訊非常的多樣,且在論壇的右邊也會公告資訊說接下來哪個時段會有什麼科學家來駐版:

screenshot.png

所以有遇到自己喜愛的科學家,在特定的時間便能提出問題,即時地互動,且有的section會先票選問題,讓好的問題在那段時間內能被科學家回答,畢竟茫茫鄉民,不一定總是問好問題!

如何組織每次的分析專案檔案

每一次的資料分析,都會產生大量各式檔案,有原始資料、前處理過的、分析的程式碼,所以多花點心思在每個步驟都稍微整理回顧一下,長久來說會減少很多“災難”,讓自己能有reproducible research skill. (其實就算是wet實驗也都是如此,只是dry的分析,幾乎都在電腦上,所以好的習慣變得很重要)。

論壇上其實有不少人也有這樣的問題,故整理一些不錯的文章,雖然每一個人的做法些許不同,但重點是要建立自己一套流程。

screenshot.png

第一個重點是以project為單位來整理,不要用時間或是分散式的,所有跟某一次實驗或是分析相關的就用一組架構,架構裡最主要就分三類:資料、分析結果、分析程式碼,也是根據這三類來分,另外,可以用subproject來往下。而可以多多利用command line的技巧來減緩創建資料夾的麻煩(使用wild card),而在README文件要有良好的documentation,且可以用純文字撰寫,但可以用markdown的風格撰寫,可以在使用工具轉換成pdf、doc,使用像是pandoc的工具。

主要多花時間整理自己電腦裡的資料,整體分析的工作流程會進步更快,雖然一開始在資料量少的時候會比較煩!之後再分享用git來做版本控制!

Cancer Moonshot 2020

這或許是今年癌症相關領域最值得關注的計畫之一,在2016一月由醫師企業家Patrick Soon-Shiong所推動,今年4/4號其也被命名為美國副總統Biden所帶領之National Cancer Moonshot Initiative的Blue-Ribbon Panel(藍絲帶隊伍,有皇家顧問的感覺)。

screenshot.png

其計畫有六大主題想要推動:

  • validation of Big Science
  • Access to novel agents and approved drugs
  • FDA regulation
  • Care coordination and real-time monitoring of safety and outcome
  • Ability to measure outcomes and cost in realtime
  • Network infrastructure

相對於National Cancer Moonshot Initiative計畫,由Patirck Soon-Shiong所帶領的Cancer Moonshot 2020專注在immunotherapy治療癌症,要建立一個國家級的infrastructure扭轉傳統的醫療照護,從治療方法、醫療數據的量測儲存分析、治療給付的制度這三大方向去整合。

治療方法上,藉由調節身體的免疫系統,發展出cancer vaccine的方式來治療目前的癌症,其重要的計畫叫QUILT(Quantitative Integrative Lifelong Trial),藉由監測病人身體的免疫系統(dendritic cell, T cell 和 natural killer cell)對於各式各樣治療的反應(使用NGS,RNAseq和Proteomics)來建立整套治療背後的科學驗證。

醫療數據的處理上,Cancer Moonshot 2020 project的pipeline會將病人的genome sequencing、RNAseq、Proteomics和vital sign資訊記錄下來,這牽涉下巨量的數據,所以需要建構好的數據傳輸和儲存,而Patrick也打造了這樣全國的網絡。

screenshot.png

在治療給付上,因為有良好的病人realtime數據監測,所以後續的給付上就能根據outcome的追縱設計更合理的給付,所以整體來說這moonshots計畫會扭轉現今美國癌症治療的方式!

後記:在2017/2月著名醫療新聞STAT開始報導一系列針對Patrick Soon-Shiong的新聞,大致都是負面的,可以作為評估一些“風潮”的case來省思
He vowed to cure cancer. But this billionaire’s moonshot is falling far short of the hype

使用ggplot2: stat_function 簡化函數畫圖

在R裡面有很多可以用來畫函數的方法,像是curve就是一個簡單懶人函式,其實ggplot2裡頭有一個超好用的函式,不需要像一般ggplot2必須輸入一個data.frame的data.set,只要把想要畫圖的function定義好即可。這邊有documentation的連結

ggplot()+stat_function( aes(x=0:2), fun = 自訂函式,  args = list())

aes內的x設定要帶入函數的範圍,也是圖x軸的邊界,fun後面則放入想要畫圖的函式,args裡面可以把原本function中其他的參數指定好,這樣就可以開始畫圖了,下面用簡單的例子展現一下他的方便!

 

screenshot.png

screenshot.png

寫出漂亮的R程式碼

就像文章會有固定的寫法,程式語言也是,練習寫得簡潔易讀,是需要多加練習的,可以參考Hadley Wicham在Advance R裡寫關於寫作style的建議,另一個則是google 的 R style rule。整體來說是很簡單的。

分成以下幾類來改善R code 的撰寫:

  • 檔案名稱
    • 將檔案名稱以底線連接,且最好檔名要讓人一眼知道裡面是什麼
      • 好的命名
        • predict_ad_revenue.R
      • 壞的命名
        • foo.R
  • 變數(identifiers)的名字
    • 可以分成兩種,函數的名稱或是其他一般的變數名稱
      • 一般變數:盡量不要用底線連接,而是用逗點來連接
        • 好的命名
          • variable.name
        • 壞的命名
          • variable_name
      • 函數名稱:加入大寫,不要用逗點或是底線
        • 好的命名
          • CalculateAvgClicks
        • 壞的命名
          • calculate_avg_clicks
  • 每行的長度
    • 不要超過80個字碼
  • 縮進(indentation)
    • 不要混用tab和space,最好的方式是使用 2 spaces
  • 空白格(spacing)
    • 在所有運算符號前面加上一個空白格如(=+<-..etc.)

Ensembl API(二):安裝 API

假如不害怕英文的話,這邊有很詳細的官方安裝簡介還有影片

screenshot.png

Ensembl資料主要是用MySQL所搭建的關聯資料庫,而Ensembl API則是寫好的各種Perl package來讀取裡頭儲存之資料,在上一篇有介紹過,Ensembl資料庫有三大主要資料庫:Core、Compara和Variation,每個資料庫都有不同的API需要安裝,當然,Ensembl團隊有準備好可以直接全部API安裝的方式,這邊的API不只是單純可以用來Query Ensembl資料庫,也可以用來搭建自己資料庫使用Ensembl的Schema來管理和運作,這部分又更進階了些。

 

舉例如何安裝Ensembl API

  • 下載他們的壓縮檔

           mkdir src
           cd src
           wget  ftp://ftp.ensembl.org/pub/ensembl-api.tar.gz
           wget  http://bioperl.org/DIST/BioPerl-1.6.1.tar.gz

  • 解壓縮

            tar zvxf ftp://ftp.ensembl.org/pub/ensembl-api.tar.gz 
            tar zvxf  http://bioperl.org/DIST/BioPerl-1.6.1.tar.gz

  • 重設環境變數
    PERL5LIB=${PERL5LIB}:${HOME}/src/bioperl-1.6.1
    PERL5LIB=${PERL5LIB}:${HOME}/src/ensembl/modules
    PERL5LIB=${PERL5LIB}:${HOME}/src/ensembl-compara/modules
    PERL5LIB=${PERL5LIB}:${HOME}/src/ensembl-variation/modules
    PERL5LIB=${PERL5LIB}:${HOME}/src/ensembl-funcgen/modules
    export PERL5LIB
    

另外一種安裝方式,可以使用git來安裝,這種方式比較scalable,是可以來練習一下!

Ensembl API(一):簡介

Ensembl是一個由European Bioinformatics Institute和Wellcome Trust Sanger Institute 的科學家所推動的計畫,從1999年便開始參與人類基因體計畫的執行,其致力於統整基因註釋和定序資料的整合,讓其他科學家可以輕易地使用網路來獲取需要的資料,這計畫下面主要分成8個小組(Genebuild小組產生基因定序資料、 Core Softward小組發展核心資料庫的api、 Compara小組負責進行各物種間比較計算、 Variation小組處理基因變異的資料、Regulation小組處理整體工作準則的制定、Web team小組建構網站和網路應用、Production小組打造一些分之的軟體和版本的維持、 Outreach推展ensembl計畫)約莫50人在進行。

為何要學習如何使用Ensembl API

Ensembl資料庫跟NCBI以及UCSC並列目前三大資料庫,相對於NCBI和UCSC的資料庫,Ensembl在處理個版本和註釋的處理比較一致,另外,理解Ensembl API可以讓我們將原本的資料處理workflow更好的整合在一起

Ensembl 資料庫的基本架構

Ensembl的資料庫主要是以MySQL來儲存資料的,所以基本上也可以用MySQL的語法來query裡頭的資料,基本上,在Ensembl的架構下有很多不同種類的資料庫,最主要的為Core database,儲存基因體的序列、基因註釋等等,而每一種物種都有一個獨立的Core Database,除了Core database,還有Variation database裡頭置放SNP、strains等等資料、Compara database則是放由ensembl團隊將各物種core database裡的基因序列比較後的資訊。

Ensembl資料庫幾乎每三個月都會更新一次,而直接使用Ensembl API就可以設定固定版本的database來獲取其資料,且ensembl資料庫裡放的所有資料都由實驗結果整理而成,有一套嚴謹的歸類方式。

Ensembl API主要以Perl所撰寫

Ensembl API是以物件導向的方式來撰寫(object-oriented perl),裡頭的documentation非常仔細,大觀念就是其分為Data object,和Data adaptor兩大類,Data object就是把資料連起來的集合,而Data adaptor就是取的這個方法,之後再仔細介紹其撰寫的細節。

HTSeq:Counting Reads per Genes with DESeq

在之前有討論過RNAseq的分析中,基因表現的分析有很多不同的策略,一種採用定序片段(reads)對應到基因區域的數量代表基因表現(counting reads per genes),另一種則是使用RPKM(Reads Per Kilobase per Million mapped reads) ,兩種方式都有相對應針對資料正規化(normalization)的想法,可以參考這篇

HTSeq 是用來處理alignment好的bam檔,將其產生counting reads table。而之後便可以把這資料丟到DESeq做基因表現分析(gene expression analysis),DESeq是R語言的package,可以用來做基因表現分析,其中用的原理便是採用counting reads per genes來做分析。

首先,HTSeq是一款python的軟體,除了計算reads count per genes 也可以用來處理基本的bam file writing 或是genomic interval的處理,其必須搭配安裝python 的一些週邊package,如PyPI、pysam,在MacOS X 上則先安裝xcodeMacPort(套件管理程式,用來安裝SciPy的套件),另外要注意其支援的為python2.7版本。

在使用htseq-count時最重要的是他用三種mode,關於他如何定義reads對到genes的關係,一般defaut為union。官網說明連結screenshot.png

 

使用counting reads功能的簡單語法如下:

screenshot.png

 

 

基本上,輸入的bam檔必須經過sorting,最好是by reads names的sort setting,可以節省記憶體的要求,另外,annotation上,使用ensembl的annotation其gene ID和transcripts ID有區別性,對於程式來說比較好。

輸出會呈現如下:

screenshot.png