使用Google App Script導入自動化流程,稍稍減輕你的行政勞務

這邊先打個預防針,再如何導入自動化管理,始終還是需要人的介入,所以最終還是會需要花些時間參與其中,但至少可以從部分重複性的勞動中解放出來,隨者我們很多行為都在電腦中操作,有時候我們會發現我們做的事情就是重複性的點擊和寄件,這時候其實這些行為也可以被自動化,這就是所謂的機器人流程自動化(Robotic Process Automation)(P.S: 假如要很…技術宅的來說明的話),從簡單的點擊自動化到判讀發報告工具等等都是這類的概念。

這是開始接手一點點行政工作的夥伴常常會遇到的情境,這邊就以醫院總醫師業務為例。

“新學期開始,你的科又要迎來新的Clerk,每週都有不同梯次的人,你也要提醒帶的醫師記得上課,又要在課後收集Clerk的作業和評分,光處理這些事物,大概就佔用到你一半以上的時間”

令人崩潰的迷因

相信身邊很多開始需要處理行政雜務的朋友,常需要做的事情就是各種提醒和收集評分表或是報告,一部分的人慢慢的會使用如Gmail, Google Form, Google doc, Google sheet等等工具導入電子化,但最煩的是日期到了你必須自己來寄信、彙整、收集。

但其實可以再往下多自動化一步。(假如你是Google工具重度使用者的話)

這邊分享一下你可以使用Google App Script來讓這些工具自動化完成,做到如下:

特定日期發信提醒上課講師,給予講師當天課程學生名單,且將評分表附在信中寄給學生或是相對應的老師!

什麼是Google App Script?

我們常常在用的如Gmail, Google Slides, Google Sheet, Google Form等等都是所謂的Google Apps,而我們使用的時候都是使用圖形化介面,在瀏覽器中開啟信箱,寫信和收信,附上郵件,在google doc上面協作,撰寫草稿,或是利用Google Slides來做簡報,使用Google Form來設計問券,這些工具就是所謂的Google App,正常情況下你就是利用滑鼠來使用,但其實最近兩年Google為了讓企業或是個人能更高效地利用,導入了所謂的Google App Script工具,讓你使用簡單的代碼,便能輕鬆的自動化這些當初用滑鼠來使用的情節,且可以輕鬆地串接每個App,讓工作流程自動化且排程化。

簡單來說,你每個建立的google doc, google slide, googlde sheet, googlde form都是一個可以用程式來調用的檔案,具有唯一的物件Id。很酷吧!

如何建立一個Google App Script檔案?

那會不會很麻煩,假如想要使用Google App Script來操控我們在google Apps裡的檔案?一點也不,你不需要安裝任何程式,或是建立整個編程環境,流程就像是你建立一個Google Doc檔案一樣。

直接在你的googld drive中,就能建立一個Google App Script檔案

編輯和撰寫Google Apps Scripts

點開你建立的Google Apps Script就會自動進入他的編輯器中,如同下面的畫面:

整個畫面就如同一個簡單的編輯器,裡面可以直接撰寫代碼來控制你的文件,主要是使用Javascript的語法,所以相對容易,你不用在自己學習新的語法和觀念,只需要搞懂Google App Scrip裡面調用Gmail, Google Sheet, Google Form的函式即可,以及你想要怎麼去串接資料來達成你想要的任務。

基本邏輯,每個Google檔案都是可以被取用的物件

第一個重要觀念在使用Google App Scripts是每一個你的google檔案,都有一串獨一無二的Id,且都是顯示在網址之中,非常一清二楚。

這邊是我每封信件的一個範本,這邊一點開,你從瀏覽器就能看到這個文件的Id,這就可以在App Script中調用,另一方面,因為Google在權限管理做得很好,所以不同帳號的人基本上是不能調用彼此文件的,所以我這邊露出這Id基本上不會讓別人可以任意修改(希望我的理解沒錯,不然….我的檔案就有危險惹)

基本範例:一個自動寄出提醒當天上課教師的Email

這個功能在做什麼呢?簡單描述一下,每天這個函數會被排程在早上八點的時候執行,執行時,他會去檢查我們的課程排程google sheet表單,看今天的日期是哪個老師上課,有老師上課的話,就是檢查另一個學生組別的google sheet,看這老師帶的組別,裡面有哪些學生,接者他再去抓取我們的問券範本google form,把這些學生的姓名和上課資料放進去問券,接者在抓取我們設計的Email範本,把相關老師姓名、學生姓名以及問券連結放上去,接者邊把這封信寄給這位老師,同時CC給我。

他會長什麼樣子呢?

基本的撰寫方式就是以寫一個函數(javascript function)的模式,然後函數內完成你想要的功能,這邊可以看到Google Apps Scripts的編輯器會自動抓取這份文件中定義的所有函數,你點選執行便能測試這些你自己撰寫的代碼。

你可以把所有要用到的檔案都放在同一個地方,這樣其實就可以很輕鬆的管理和建置你的流程,之後要交接給學弟妹也會非常方便,或是用舊的代碼來完成新的工作!

這邊分享原始代碼,給有興趣的人使用:



// 使用的代碼
// reference usage: http://www.eion.com.tw/Blogger/?Pid=1148
function autosentDOC(){
    // ======================== Basic 參數設置 ================================

    let today = new Date(); // 讀取今天的日期
    Logger.log(today); 
    Logger.log(today.toDateString()); 
    // 設定google drive中檔案的id
    // 問券:一份google form問券:用來打分數
    const form_id = '1XvhpcCV_UXDCJpIOsdaksjfo9LDwWKrkxP16sMvs' ;
    // 資料:一份google spread sheet:裡面有所有clerk的資訊,包含:姓名、梯數、開始的日期、結束的日期等等
    const sheetTeacher_id = '1tquDwugwMsy5al20f_hGChdfdsafdsGsCoXHUJF0';
    const sheetStu_id = '1EdySuvRHo3iPqdfsdfsfdsfB9Cx3sRcmFnPfdsfdo';
    // 文本:一份google doc:裡面有email的範本
    const docmd_id  = '11QphDQkYe8rdfsdfsdfeOfKlXhfQdH6bj5g';  // 內容:提醒有clerk,且要評分
    
   
    
    //const email = 'dontellyou@gmail.com' // 測試時使用自己的信箱
    // 寄信函數的參數
    const param = {
        method:'get',
        headers: {
          "Authorization":"Bearer "+ScriptApp.getOAuthToken()
        },
        muteHttpExceptions:true
      }
    // ======================== 今天上課的教學醫師 =============================
    // 讀取教學醫師的排程
    const gs_MT = SpreadsheetApp.openById(sheetTeacher_id);

    const gs_MT_sheet = gs_MT.getSheetByName('schedule');

    const gs_data = gs_MT_sheet.getDataRange().getValues();
    // 讀取學生組別資料

    const gs_Stu = SpreadsheetApp.openById(sheetStu_id);

    const gs_Stu_sheet = gs_Stu.getSheetByName('member');

    const gs_Stu_data = gs_Stu_sheet.getDataRange().getValues();
    // ======================== 從google sheet取得 Clerk的名單資料 ======

    // 讀取google drive中的google sheet 檔案
    //const ss = SpreadsheetApp.openById(sheet_id);
    // 讀取這個google sheet中的分頁,分頁名稱為2021_2022_Clerk_CPcourse
    //const sheet = ss.getSheetByName('2021_2022_Clerk_CPcourse');
    // 讀取這個分頁中的所有資料
    //const data = sheet.getDataRange().getValues();
    
    // 將資料中,所有clerk課程開始日期比今天小且clerk課程結束日期比今天晚的“所有”資料
    let currentTeachers = gs_data.filter(function(item, index, array){
      //Logger.log(item[0]); 
      let tmpDate = new Date(item[0]);
      return tmpDate.toDateString() == today.toDateString()   
      });
    // 將資料中,clerk課程開始日期比今天小且clerk課程結束日期比今天晚的“第一筆”資料
    let currentTeacher = gs_data.find(function(item, index, array){
      let tmpDate = new Date(item[0]);
      return tmpDate.toDateString() == today.toDateString()     
      });
    
  
 
    // 判斷今天有組別的話,組別名單
    
    if(currentTeachers.length == 0){
       Logger.log('今天沒有老師要上課');
    }else{
      // 假如本兩週有clerk學生,則執行下面的代碼來建立問券
        //看一下currentClerk物件內容(debug使用)
    Logger.log("todayTeacher"); 
    Logger.log(currentTeacher[3]);
    Logger.log("today group");  
    Logger.log(currentTeacher[2]); 
    Logger.log(currentTeachers); 
      // 這週有clerk,看是否是第一週
      // 這梯有clerk,且本週為要上課的日子gs_Stu_data
      const currentClerksNamesArray = gs_Stu_data.filter(function(item, index, array){
      //Logger.log(item[0]); 
      return item[0] == currentTeacher[2]   
      });

      const currentClerksNames = Array.from(currentClerksNamesArray, item => item[2]);
      Logger.log("today group names");  
      Logger.log(currentClerksNamesArray); 
      Logger.log(currentClerksNames); 
      // ======================== 修改問券的資料,根據今天之clerk名單 ==============
      // 讀取google drive中事先建立的google form
      const form = FormApp.openById(form_id) ;
      // 讀取這個google form的問題
      const items = form.getItems();
      // 一個個確認這問券中的問題
      items.forEach((item)=>{
        
        if(item.getIndex() == 0){
        // 假如是這問券的第一個問題
          const nameItem = item.asMultipleChoiceItem();
        // 將這梯的醫學生名字放進去問券第一題的選項之中
          nameItem.setChoiceValues(currentClerksNames);
          Logger.log(currentClerksNames,'名字放入問券!');
         }
        if(item.getIndex() == 1){
        // 假如是這問券的第二個問題
          const nameItem = item.asMultipleChoiceItem();
        // 將這梯的日期放到問券之中 
          nameItem.setChoiceValues([today.toDateString()]);
          Logger.log([today.toDateString()],'日期放入問券!');
        }
  
      })
      // 這梯有一學生
       //讀取email範本:有clerk學生的版本
       //const form = FormApp.openById(form_id) ; 
       const url = 'https://docs.google.com/document/d/'+docmd_id+'/export?format=html';
       let html = UrlFetchApp.fetch(url, param);
       html = html.getContentText();
       // 將信件放入老師名稱
       html = html.replace(/#teacher/g, currentTeacher[3]);
       // 將信件放入clerk名稱
       html = html.replace(/#name/g, currentClerksNames);
       // 將信件放入google form的連結
       html = html.replace(/#link/g, form.getPublishedUrl());
       // 將信件放入這梯clerk的名字
       html = html.replace(/#time/g, currentTeacher[2]);
       // 信件的主旨
       const subject = 2022 + ' 第'+currentTeacher[2]+'組'+' 檢驗醫學部-實診暨臨診-案例討論課當日評核';

       const prop = {
        htmlBody:html,
        cc:'testemail@gmail.com'
       };
       // 寄信
       GmailApp.sendEmail(currentTeacher[4], subject,'',prop);
    }
    
  }

GenomesDAO:定序你的基因,鑄造一個NFT

延續前一篇的內容社群、區塊鏈、NFT和新型態生技開源模式,但又有點展開,來分享最近看到的一個基因定序服務跟NFT結合的項目,他們初衷很單純,但卻直指目前許多DTC基因檢測產品的問題:

如何確保你的基因資料不被幫你定序的公司自由使用且販售,但又能讓你決定你是否要提供你的基因資訊給予如研究組織、藥廠、生技公司有償或是無償地使用

GenomesDAO便是最近看到一個想要解決這個問題的公司,且以一個NFT項目發行的模式來參與Web3.0的世界。他的模式蠻有趣的,整個使用流程如下:

藉由購買或是鑄造一個Geneticats的NFT後,可以使用這個NFT來兌換實體的定序採檢套組,這個套組可以寄到世界各地,你只要用這個採檢棒刮取口腔中的粘膜,把一些細胞刮下來,再寄回去,經過約14-16周的檢體處理和定序,基因資訊會完成處理,將你的序列用AMD加密的方式儲存,此時便能利用你的資料來挖礦(售予藥廠、生技公司、研究機構使用你的資訊,並且給予你$GENE幣),同時可以使用你的資料再來鑄造成另外一個生成式的藝術作品。

這類將科學主題使用NFT的風潮,其實不算少見,甚至在Narure上面還有文章再分享這個現象:

How scientists are embracing NFTs, Nicola Jones, Nature

比如哈佛大學的George Church,就把自己的基因鑄造成NFT,在去年跟他實驗室創建的基因定序公司Nebula策劃了一場NFT拍賣,這場活動則是為了要激起大家對於基因數據的意識,宣傳大於實際的意義,因為事實上Goerge Church教授的基因序列已經是共享的資訊了,他早在2005年推動的Personal Genome Project就把它自己的基因序列也一起放在這個資料庫之中。

相信未來會有越來越多新型態的生技創業模式,尤其是打破原本募資想法的流程,讓民眾參與其中!

社群、區塊鏈、NFT和新型態生技開源模式

這篇想探討的方向初看會頗奇怪,蛤,區塊鏈、NFT跟開源生技發展有什麼關係,但實際上不然,用此篇來總結最近一些關於 Web 3.0和生技產業的可能關聯和想法。

先看一下這個Twitter上仰慕許久的生技創業前輩喬納森·羅斯伯格 (Jonathan Rothberg),他一系列的生技公司從454定序儀、賣給Thermo的Iron Torrent技術、手機式手持超音波儀ButterFlyHQ、移動式MRI的Hyperfine、這兩年建立的Detest居家核酸檢測公司等等,最近他在Twitter上的Handler:

這邊有幾個有趣的地方,第一個是Rothberg購買了在以太坊上的網址並且放在他的Twitter名字上,這是常見參與區塊鏈領域的人之習慣,再來可以看到他的介紹上面有寫到Web3、DAO和NFT,因為對基因體領域的前輩多多少少都有追蹤,所以對其Twitter的變化也是很驚訝,但另一方面也是好奇這位生技前輩看到了什麼有趣的趨勢!

再往下,可以發現Jonathan Rothberg已經開始下手進入這個領域,希望使用區塊鏈的架構來進行生技領域的創業,到這邊再來分享一下最近對區塊鏈、NFT和生技領域的看法,可能就顯得合情合理了!

一開始理解Web 3.0,算是老弟的分享(他在Solana鏈經營項目,早期比特幣投資者,常常聽他分享),畢竟區塊鏈跟我之前的背景知識和日常暴露差距有點遠,但保持開放的心態去理解和學習,慢慢體會到區塊鏈技術是如網路一樣的底層技術,可以對各行各業提供支持和改變。

這一年來參與的跨國課程How to grow almost everything(HTGAA), diyBio, global biocommunity, auto open lab等等,都越發激起對於這件事的好奇和體悟,就是如何能建立一個好的社群,而區塊鏈技術對社群營造的幫助也是我專注的重點之一,如今發現基於區塊鏈所創造的Decentralized Automonous Organization, DAO(去中心化自治組織)在生技開發中的應用會是很有趣的一個模式,比如專利的授權能否結合區塊鏈等等,也有一些實際在運作的組織再以此為手段如LabDAO, VitalDAO等等。

社群是賦能單一人類重要的實體

社群的價值在科技時代完全沒有降低,反而越顯重要,且直接上升到超越傳統的標籤如職業、年紀等等,雖然新聞常常在談論AI取代人類等等,科技公司壟斷世界,但實際上人依舊是整個經濟體系中的關鍵,且比以往更容易打破壟斷和封閉,以及改變社會的某個層面,所以當某個工具能很好的聚集人群和建立社群,就會產生巨大的價值。

回過頭來思考這件事,可以發現社群模式的改變是逐步迭代的,如扶輪社、學會、協會、人民團體都是近50年來出現的社群模式,人們也因為經營或是參與這類社群而獲取或創造價值,這件事也隨者技術的改變持續演進,Kevin Kelly在2008年撰寫的這篇1000 true fans,這件事就在談論網路的出現提供創作者一個新型態的生存模式,在2008年的時候,可能連網路電商都還沒有普及,但如今2022年這類圍繞個人創作者的商業模式已經讓人們能接受,比如露天電商、社群電商、Youtuber等等,都是某種社群型態藉由科技進步而促成的。

所有賦能社群的工具都會改變人類的行為模式

回顧這十年,以台灣來說,就經歷了多個社群工具的演進,如部落格、無名、噗浪、Line群組、臉書、Instagram到現在的Discord,一個個浪潮,漸漸讓人們社群行為轉往數位,因為網路的普及,人們很容易能建立自我的內容,進而形塑群體,且網路的聊天工具,讓溝通變得非常可擴展,網路支付機制讓這個溝通及社群能形成商業閉環,甚至因網路頻寬和速度的進步,甚至能以直播串流的模式創造新的叫賣模式

NFT是區塊鏈技術上賦能和聚集社群的一種工具

相對於Kevin Kelly在2008年那篇一千個朋友,這篇cdixon的文章NFTs and A Thousand True Fans寫於2021-2-27號,則把這個概念套用在區塊鏈其中一種應用中,稱作NFT,關於NFT的定義在網路上應該有很多介紹,我的理解則是一種在區塊鏈上的應用概念,附於特定事物一個撰寫在區塊鏈上的擁有權(ownership),但實際上則有各式各樣應用,這邊節錄cdixon文章中對於NFT的定義:

NFTs are blockchain-based records that uniquely represent pieces of media. The media can be anything digital, including art, videos, music, gifs, games, text, memes, and code. NFTs contain highly trustworthy documentation of their history and origin, and can have code attached to do almost anything programmers dream up (one popular feature is code that ensures that the original creator receives royalties from secondary sales). NFTs are secured by the same technology that enabled Bitcoin to be owned by hundreds of millions of people around the world and represent hundreds of billions of dollars of value

from Cdixon, NFTs and A Thousand True Fans

所以當NFT提供另一種模式讓創作者能聚集人群,並從中分佈價值,那這就會引起另一種人類社會的變化,所以當人們說NFT只是炒作畫作時,就稍微簡化了NFT可以做的事情,那只是最簡單的一個功能。

基於區塊鏈技術所創造的人類社群:DAO

我們進而往下,在這概念下,我們可以利用區塊鏈建立一個很特別的組織架構,叫做DAO,推薦可以看一下這部影片Stanford BioE 60: Beyond Bitcoin – Decentralized Autonomous Organizations (DAOs)

相對於傳統社群建立的模式,DAO就是利用區塊鏈技術來達成社群需要的一些功能,比如資產分配、交易、決策模式等等,傳統組織架構如協會,我們可能會有一定規範才能成立,而協會的資產必須使用銀行來儲存,這些資產權利則是利用現有的行政體系來維護,擁有權則靠法律系統。

LabDAO

這個是建立於2021/12月中的一個自治組織,可以一窺他們的初衷

Our mission is to accelerate life science innovation and collaboration. We are doing this by creating new mechanisms and markets for the exchange of R&D services and scientific data. Specifically, we’re building an open-source & community-owned/operated/governed protocol where users can buy and sell research contracts, run experiments with standardized protocols, find collaborators, and securely exchange data. “an open source protocol to act as the execution layer for decentralized science"

from LabDAO, mission

推薦可以進入他們的Discord看看,裡面的知識密度頗高,在探討生物資訊、自動化、儀器開發等等主題,但有趣的是他們會以能delivery為目標來做規劃和探討,這社群是由Boris Dyakov發起,本身是在加拿大的Lunenfeld-Tanenbaum Research Institute (LTRI) 做博士候選人,因為才建立一個多月,所以非常值得在裡面多晃晃,參與這些領域匯聚的區域。

總結來說,可以體驗到區塊鏈技術將慢慢參與到下一個世代的社群建立,且這趨勢已經在生技領域可看到,換句話說,做生物資訊、生醫研究的朋友,有機會可以體驗或參與一下Web 3.0相關的社群,未來有可能我們不需要依靠如中心化醫院、政府等模式來進行生醫研究,但利用如DAO的架構來資助及推動生醫的相關研究。

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

一不小心又隔了四個月了,前陣子九月特休的時間,參與iThome鐵人賽的連續30天發文,真的是蠻硬核的,也強迫閱讀了一些之前比較少碰的部分,順便複習一下許久沒碰的東西,希望陸續把這三十篇文章的內容再更系統性整理一下,先把目錄移過來這。

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

相關之學習參考:
Resources

Talks

2021 台灣臨床次世代定序指引探討和比較

前面有稍微分享一下2021 臨床次世代定序實務與應用概論這堂課的內容,當然打鐵趁熱也針對一些主題,自己做了些延伸和討論,這邊就針對CAP和台灣的指引來分享一下,將次世代定序使用在臨床所牽涉到實驗室端的細節是以前沒有面對過的,相對於傳統實驗室檢驗單項指標,次世代定序從檢測原理到結果都是高通量的輸出,也許用臨床檢查來譬喻有點像是病人基因的電腦斷層,但是更為複雜幾倍。

大概7-8年前,世界各國基因體學相關的臨床學術組織便開始努力制定相對應的實驗室指引來幫忙導入次世代定序使用,同時也有如實驗室開發檢驗指引等法規來解套基因定序作為檢驗項目的醫療法規問題,另外,廠商也推動一些機型的法規認證。

reference from 台大醫技 蘇剛毅老師演講內容

在2013年illumina公司的MiSeqDx平台獲得美國FDA的核准,是第一台獲得IVD認證的機台,同時其三個試劑分別是MiSeqDx universal kit和兩個跟囊腫性纖維化(Cystic fibrosis)的定序同時取得認證。後續Ion PGM Dx system也在2017年6月22號成為美國第二台FDA認證的醫學檢驗用NGS儀器。

而後續產業界跟學術界慢慢希望可以用實驗室開發方法的法規來適用這類的法規,所謂的體外診斷器材(IVD, In Vitro diagnostic devices)和實驗室開發方法(Lab developed test)是有一些不太一樣的地方,實驗室開發方法通常是那些進步快速的領域之檢驗項目,因為變化太快速了,要是走IVD法規路線,可能核准完市場已經變化且技術同時已經落後,這部分在次世代定序領域尤為常見。

前陣子其實有蠻多風波的特管辦法(特定醫療技術檢查檢驗醫療儀器實行或使用管理辦法),就是把台灣實驗室開發方法納入管理,其中很多關於資格和操作細節都引發各方人馬的意見。回到臨床次世代定序,因其複雜的特性使其很難以IVD的模式通過,直到如今,美國市場上只有四個腫瘤為主的NGS檢驗項目:

  • Oncomine Dx Target Test: 2018/10/17
    • 包含46個腫瘤相關基因檢測
  • MSK-Impact: 2017/11/15
    • 包含468個腫瘤相關基因檢測
  • FoundationOne CDx: 2017/11/3
    • 包含324個腫瘤相關基因檢測
  • Guardant360 CDx: 2020/08/07
    • 第一個液態活檢針對55個腫瘤基因

體外診斷器材的查驗,其中牽涉到從技術研發、臨床前試驗、第I、II、III期臨床試驗、上市前審查到衛福部查驗登記以及上市後檢測,相對在實驗室自行發展檢測方法(LDT)中,通常是以實驗室的品質系統來取代臨床前試驗、第I、II、III期之臨床試驗,所以相對來說,彈性較大,但是實驗室本身的管控就變得非常重要。

目前在臨床實驗室認證台灣非常重視的CAP(College of Amierical Pathologist)的規範,其近期也有一系列文章和網站資源在提供次世代定序的實驗室規範,蠻值得一看的。

其中主要是分別在Test Content Design, Test Optimization, Test Validation, Quality Management, Bioinformatics and IT這幾個方向有建立一個方便實驗室追尋的worksheet。

在這邊我們同時來比較一下台灣這兩年衛福部提供的指引來探討一下異同和改變,也剛好是前陣子在科內給的演講。

簡報的左邊是引用來自xkcd的卡通圖,談的是當代操作系統如Linux(當今所有雲端系統基本上都基於linux核心,再往上疊加),完整的計算機操作系統,奠基在非常多開發者之程序中,有的程序寫得很好,有的則是很脆弱,假如沒有對整體有個巨觀,很可能出錯了都無法抓蟲,這讓我聯想到次世代定序作為檢驗服務給我的感覺(也是聽完郭靜穎老師和蘇剛毅老師在臨床次世代定序中關於確效認證等等的主題後的想法),雖然目前臨床次世代服務中,所牽涉到的許多細節其實已經靠廠商簡化許多,比如機台自動化、檢體前處理優化到分析套裝軟體,但依舊是複雜模塊的堆疊,如同這左邊這張圖。

台灣這幾年政府也希望能回應醫療人員對於次世代導入臨床之需求,所以分別在2020年和今年年初都有分別針對遺傳類和腫瘤類的基因檢測給予相關的指引,這邊往下比較台灣指引在20200811年公告之精準醫療分子檢測實驗室檢測技術指引-是世代定序應用於遺傳類疾病檢測及20210311公告之精準醫療分子檢測實驗室檢測技術指引-是世代定序應用於腫瘤檢測(草案)。

的確在業界常聽到大家抱怨台灣法規在次世代定序臨床易用這塊很緩慢,也導致普遍醫學中心外並沒有多少人應用次世代定序來幫忙民眾,相對於中國來說,其在2018年開始就有第一份的临床基因检测报告规范与基因检测行业共识探讨來,不過樂觀一點,台灣這一兩年陸陸續續也把遺傳類和腫瘤類指引提出,所以這邊就這個指引和美國CAP的內容來相對應一下,也可以看到今年3月的指引比去年的遺傳類檢測的看法更加純熟。

比較兩個台灣的指引,可以看出今年3月提出的版本,對於生物資訊流程的部分有更多著墨,尤其是在基因資料庫使用與管理建議和檢測報告格式,這部分仔細檢討其實也是當前台灣臨床實驗室比較弱的部分,整體上兩個指引對照CAP下都有所謂的適用範圍、檢測設計考量、檢體類別、影響檢測因素及檢測個步驟,另外,在腫瘤這份也有多著墨一下變異偵測的部分。

就如同這次課程介紹的,次世代定序的應用非常廣,所以兩份指引都有開宗明義定義說適用的範圍,在不同情況下就會有不同的狀況,所以兩者面向的一個是偏產科和兒科以及成人癌症部分的次世代定序檢測。

往下去看兩份指引在步驟建議上,腫瘤檢測的部分可看到觀念比較全面,也加入分析後的品控想法,也有去討論基因庫定序之複雜度及潛在風險評估的部分。

在檢體處理部分,其實跟CAP的工作單中描述的大概相同,但台灣這邊的品質範圍拉的比較大一點,規範細節相似。

檢體在建庫部分也希望臨床檢測的SOP中,也要記錄清楚建庫所相關的細節像是製備方法(擴增法或是捕捉法)、建庫流程中針對核酸片段放大之效能及允收標準,也提到品管物質,這部分的確是目前臨床實驗室比較難符合的地方,同時也會增加品控的成本。

最後在生物資訊分析流程中也希望能把整個流程中所處理的流程、數據分析方法及變異點偵測邏輯都要詳述,且所使用的軟體和資料庫版本都有有所談論,這幾天在多數臨床實驗室沒有配置生資人員情況下,大都是依賴廠商,廠商有時候也是代理國外軟體,所以造成細節部分都沒有人搞得清楚。

進入到檢測品質這邊,跳過檢體和DNA品質這塊,內容跟前述的部分雷同,這裡也有提到要詳述定序覆蓋率,不是只描述平均覆蓋率而已,還要去描述最低和最高的部分,以及目標區域的定序深度(目前臨床使用都還是Panel為主,如同陳沛隆醫師所講),另外,同行和異形合子的基因頻率也要去描述其篩選條件。

取得定序機台的read後,必須要把相關評估read品質和篩選之流程都要記錄清楚,且前一步驟中是否有去掉序列也要描述,最後其比例和重複定序片段的數量和百分比都要紀錄(在此堂課郭老師給予的測試數據中,也會發現其重複定序的片段比率偏高,也是要去理解背後的因素,是否有非預期的原因所造成)

同時整個流程中的定位也要去看其相關指標的細節,不過這算是所謂的post alignment quality control的部分,要去看reads拼貼的狀況,畢竟最後變異的分析都是基於這些read alignment後的結果)。

最後變異偵測的參數則是要依據臨床場景有不太一樣的想法,在做遺傳類變異和腫瘤類體細胞變異偵測上就是不太一樣,其中變異等級之指標、整體變異的指標、變異的變異頻率都是重要需要紀錄的資訊。

變異註解的部分也是一個大功夫,郭老師也花費一整堂的部分來描述這流程中要考慮到的細節和需要調用的資料庫,中間所使用的資料庫種類版本,以及流程都是需要系統性標準化的,另外,判讀後的結果也要好好記錄下來。

最後檢測報告該如何撰寫要記錄什麼,在精準醫療分子檢測實驗室檢測技術指引中也有大概的介紹,大體是該包含什麼資訊:位點、臨床註解、檢測方法、相關限制。

在腫瘤檢測的指引中,開宗明義希望報告儘可能剪短、實際,這中間就給予個別實驗室一定的空間來決定,比較重要的部分則是所謂的陰性結果(Pertinent negative)的呈現,相對來說,就是臨床上喜歡的“rule-out”思考邏輯。

整體來說,次世代基因定序涉到多個流程,每個流程之間都要有相對應之品質管控,從檢體前處理、建庫、定序初始資料、生物資訊流程和報告,如此複雜的過程其實“相當富有挑戰”,但也是吸引人投入的地方吧!也期待越來越多人投入這個領域,能讓這樣技術解放更多關於人們的生理資訊,一方面讓臨床更能給予民眾幫助!

2021 臨床次世代定序實務與應用概論

七月底利用時間請假去參加了台大生物技術研究中心舉辦的臨床次世代定序實務與應用課程,由郭靜穎楊雅倩和蘇剛毅老師所舉辦的,整個課程蠻扎實的,台灣的確需要多一點這類課程,當初主要是對其hands-on的建庫課程感興趣,畢竟這類機會不多,通常都是廠商幫忙完成,所以想辦法實際來碰一下,順便看一下台大醫院這邊基因檢測的概況,課程表如下,分成兩塊:上課以及實作兩個部分,上課部分則是從基本次世代定序介紹到各主題如遺傳、癌症、微生物體、人類白血球抗原分型、次世代定序的法規、確校及認證以。實作部分則是做人類白血球抗原分型搭配和生物資訊分析,很開心能在持續精進,抱持者Rookie spirits,畢竟日新月異,還是一段時間得學習一番,當然不可能什麼都懂,但是至少多聽聽不同人切入次世代定序的看法!

全程可以看到郭靜穎老師辛苦的陪伴,郭靜穎老師在台大醫技系畢業後,至美國加州希望之城生物科學研究所攻取博士學位,然後在希望之城糖尿病與代謝研究中心做博士後研究員,博士後研究結束之後,其在希望之城醫學中心的臨床分子檢驗實驗室做基因變異分析師,然後2017年回來台灣大學醫學檢驗暨生物技術學系做老師,所以課程中也可以聽郭老師分享美國臨床分子檢驗室的架構,聽完覺得要建立一個一流的分子醫學檢驗實驗室真的不簡單,需要非常多不同專長的人員,另外令我很佩服的是楊雅倩老師,楊雅倩老師是台灣檢驗醫學界很資深的教授,但她也是趁者空擋基礎全程參與從做實驗到生物資訊分析,看著老師自己打開筆電跟者學習怎麼使用生物資訊軟體甚至程式碼的輸入,這精神真的值得學習,希望能持續保持如楊雅倩老師這種學習精神!

建庫的過程格外的令人熟悉,前陣子正踩到用磁珠萃取的坑,比如不同比例或是容器等等,這種把實驗之間關聯起來的感覺蠻不錯的!

其中陳沛隆醫師的課程提到蠻多很珍貴的觀點,次世代定序在台灣已經談論快十年,尤其最近五年在台灣做定序的價錢已經很便宜了,往往會給人一種好像這個工具無堅不摧(當然不是,每個檢驗技術都有優點和缺點),陳沛隆醫師則願意分享其看到的機會:

  • Reference genome: population-specific?
  • Haplotyping/phasing
  • Psudogene
  • Structural variation (SV)
  • Dynamic mutation
  • Mobile element
  • Somatic mutation
  • Digenic/oligogenic mode
  • Epigenetic change
  • Non-coding region (such as TAD, UTR, etc.)

上面是完整寫下陳沛隆醫師簡報裡面的字串,可惜時間不足,所以陳醫師沒有辦法一項項細講,感覺裡面滿滿的珠璣!這邊趁機來查一下:

參考基因組在次世代定序中的影響

之前在科內晨會就準備過這個主題,所以可以理解陳醫師的意思!

參考基因組在第二代定序(所謂的次世代定序中)影響頗大,基本上可以暱稱次世代定序為高通量短片段定序,所以參照的拼圖對於把讀長序列(reads)排序回去就變得異常重要,而目前我們所謂的參考基因組主要是使用美國人類基因組計畫中所產生的參考序列其實從2003年的草稿到今天為止,存在很多問題(科學就是越探索,越發現事情比想像中複雜ORZ),美國人類基因組計畫中所使用的檢體其實並非一個人的檢體,而是一群人,然後把它分發給世界各地合作對象來定序,下面是當初的招收廣告:

這是當初刊登在報紙上徵求自願者時候的廣告,蠻有趣的,當初要的是20個人,不過後來我們發現其實實際基因體系列可能大多數是某一位自願者的檢體,且實際可能有約30個人左右

from 2020. Pan-genomics in the human genome era. Nature reviews Genetics

直到今年2021年六月我們才有一個比較接近完整的人類基因組定序取得,是由Telomere-to-telomere consortium團隊所發表的,他們利用了很多第三代定序的技術來混合完成這個任務的,這篇論文The complete sequence of a human genome目前是發表在bioRxiv上面,可以由這篇Nature新聞A complete human genome sequence is close: how scientists filled in the gaps了解這件事代表,另外,他們所使用的定序檢體也很特別,是使用hydatidiform mole,也就是將精子注射到一個沒有核的卵子中,這樣可以一次定序一股染色體,不用面對phasing的問題。

Pseudogenes對於短序列alignment的影響

這也是之前有概念,但沒有特別關注的議題,實際去調查真的發現蠻有趣的,所謂的假基因(Pseudogenes)是染色體上的基因片段,其跟對應的基因相似,但可能散失部分功能,目前認為他可能是細胞複製過程所產生的重複序列,在探討演化的學者這個現象很重要,可以利用Pseudogene的片段來探討種源的距離,這邊因此可以理解到這個Pseudogenes會如何影響到定序結果,一方面是來自Pseudogene的reads可能會被貼到其同源基因區域,或是者反之也會發生(OS:好複雜,難怪很多時候即時有定序資料還是看不出什麼所以然,很多因此會影響結果),在Nature Reviews Genetis 2020年12月後有一篇Overcoming challenges and dogmas to understand the functions of pseudogenes在談論如何研究pseudogene以及他在生物學的角色。

實務上來說,蠻多臨床上重要的基因就有很多這類同源基因,比如PMS2, CYP2D6, CHEK2, SMN1, PKD1,這邊就有一個這類對於二代定序和Sanger定序都是所謂盲點的基因列表:

Mandelker, D., Schmidt, R., Ankala, A. et al. Navigating highly homologous genes in a molecular diagnostic setting: a resource for clinical next-generation sequencing. Genet Med 18, 1282–1289 (2016). https://doi.org/10.1038/gim.2016.58

短片段定序無法偵測之基因變異

知道越多人類序列,才發現人類序列的變化遠比想像的多,從下面的圖可以知道像是Structural variation, Repeat expansion以及所謂Phasing的問題都是目前二代定序的工具無法解決的。

2019. Long-Read Sequencing Emerging in Medical Genetics, Front. Genet

有的基因變異的範圍很方式其實是比想像中多的,從上面的Structural variation也可看到如reverse或是translocation這類的轉位,短片段的序列都還是能得到,但是alignment會去參考基因組時,就看不到這樣的資訊,以前覺得沒有太大影響,但後來發現這些都多多少少造成其基因表現的不同。

動態突變 Dynamic mutation:短片段重複相關的疾病disorder

動態突變造成的疾病也是之前我不太懂的,仔細一查,維基百科的定義是:

an unstable heritable element where the probability of expression of a mutant phenotype is a function of the number of copies of the mutation. That is, the replication product (progeny) of a dynamic mutation has a different likelihood of mutation than its predecessor

from Dynamic mutation, Wiki

不過目前比較常用Trinucleotide repeat disorder來形容,跟此相關的疾病也不少,最知名的就是亨廷頓舞蹈症,當然還有蠻多跟此相關的疾病:

這類疾病可能使用NGS在定序時,因為參考基因組的關係,可能不容易檢測到,在一般的alignment分析中應該也不容易排列好,看起來也不是很容易被探討的疾病種類。不過幾篇文獻看起來是特別的一群基因疾病

  • Mirkin, S. Expandable DNA repeats and human disease. Nature 447, 932–940 (2007). https://doi.org/10.1038/nature05977
  • Usdin K, House NC, Freudenreich CH. Repeat instability during DNA repair: Insights from model systems. Crit Rev Biochem Mol Biol. 2015;50(2):142-167. doi:10.3109/10409238.2014.999192
  • McIvor EI, Polak U, Napierala M. New insights into repeat instability: role of RNA•DNA hybrids. RNA Biol. 2010;7(5):551-558. doi:10.4161/rna.7.5.12745
  • Li, D., Pan, S., Zhang, H. et al. A comprehensive microsatellite landscape of human Y-DNA at kilobase resolution. BMC Genomics 22, 76 (2021). https://doi.org/10.1186/s12864-021-07389-5
  • Ajjugal, Y., Kolimi, N. & Rathinavelan, T. Secondary structural choice of DNA and RNA associated with CGG/CCG trinucleotide repeat expansion rationalizes the RNA misprocessing in FXTAS. Sci Rep 11, 8163 (2021). https://doi.org/10.1038/s41598-021-87097-y

從下面的圖也可以看出來在不同基因甚至區段上面的這種重複序列,可能跟不同的疾病相關連,看到這邊真的驚嘆人類基因體的奧秘,另一個角度來看,人類的疾病也可以看成是基因多型性的一種表現吧!

from Mirkin, S. Expandable DNA repeats and human disease. Nature 447, 932–940 (2007). https://doi.org/10.1038/nature05977

雙基因或多基因遺傳模式(Digenic/Oligogenic Mode)

顧名思義就是某一個性狀是由多個基因所造成的,所以當同時有兩個變異發生在兩個基因上時就會造成某個性狀產生,這時候可以稱為Digenic inheritance,這類在之前也是比較少見(當然也是武器不夠好),慢慢也開始有一些文章開始探討!

  • A genome-wide case-only test for the detection of digenic inheritance in human exomes. PNAS. 2020, 117 (32) 19367-19375; DOI: 10.1073/pnas.1920650117
  • The digenic causality in familial hypercholesterolemia: revising the genotype – phenotype correlations of the dsiease. Front Genet. 2021.  https://doi.org/10.3389/fgene.2020.572045
  • Genetic modifiers and oligogenic inheritance. 2021. Cold Spring Harbor Perspectives in Medicine
  • Digenic inheritance and genetic modifiers. Clinical Genetics. 2018. https://doi.org/10.1111/cge.13150

陳沛隆醫師所列出的每一點都有蠻多可學習的地方,也可以一窺所謂遺傳基因體學的面貌!

[實戰紀錄]整理基因變異Variant Call Format檔案:使用NCBI API+bedtools+VCFtools+Shell scripts

這邊分享一下最近一個清洗資料的流程,做生物資訊的雜活其中一個重要的事情就是把來自各方的資料整合在一起,許多細節是必須把手弄髒才知道的!

問題

最近幫忙解決的這個問題是科內用來出次世代定序報告系統的某個資料表,自從2016年的助理離職,就沒有人能幫忙更新,這也是臨床檢驗科室的問題,老店員工資深,很難有人願意重新投入學習寫程式清資料等等,老闆也不一定知道這箇中的重要,不過相信這是可以慢慢改變的。

這個資料表暫稱Hotsopt.bed,是用來幫忙次世代定序之Panel在定序後的生物資訊流程中作為資料註解的資料表,表格長得如下面這樣:

這是用來幫助次世代分析流程中,當遇到定序品質不好的區域,能把此區域已知具有臨床意義的變異點給吐出來。整個資料表很單純,第一欄是染色體位置、第二和第三欄是這個位置的開始和結束、第四欄是跟這位置相關的臨床位點ID(舊版本是用rs ID,我接手後應該會改成clinvar ID,比較貼近需求)、第五欄則是綜合這個位置的變異資料以及變異起始前一位的序列,最後一欄則是這區域為在哪個target panel的Amplicon。這個表格目前只想放在clinvar DB上面已經住解為Pathogenic和Likely Pathogenic的位點。

該串接的資料庫: NCBI clinvar, dbSNP

從上面的問題,可以知道工作重點是:建立能定期下載特定基因列表的clinvar註釋,然後在看這些位點為在哪個panel的amplicon,以及此位點的序列變化和從參考人類基因組抓出變異位點起始位置前一位的核酸序列,最後整合成hotspot的格式。

因此需要串接的資料庫為

  • NCBI: clinvar, dbSNP

第一步:使用NCBI Entrez Direct檢索基因列表最新在clinvar的位點資訊

相信這邊的做法有蠻多的,這邊因為前陣子因為想幫科內建立血庫分子資料庫,所以摸了一下NCBI 的Entrez Direct,就順勢使用這個工具,Entrez Direct 是美國國家生物技術資訊中心(The National Center for Biotechnology Information, NCBI)所提供的一個命令行工具,讓人可以直接使用Unix terminal的方式來針對NCBI內的各個資料庫。基本上就是下面那個下拉表單所提供的所有資料庫都可以調用。(超級佛心的,幾個代碼就可以調用全世界最大的生物資料庫QQ)

這個Entrez Direct(EDirect)可以有幾個安裝方式,可以由Anaconda,也可以直接下載後安裝。 (之前有幾篇文章介紹這個命令行工具 Pubmed E-utilities API 使用規範, 使用python來調用pubmed API快速整理文獻, Pubmed API介紹) ,安裝完Entrez Direct後,他會有幾個命令行的函數是可以用的:

  • esearch
  • elink
  • efilter
  • efetch
  • xtract
  • einfo
  • epost
  • nquire

藉由組合上面這幾個指令,便能擁有調用NCBI資料的技能,非常實用!且相關的說明文檔有越來越好,相對於幾年前。

這邊所使用的關鍵語法是

for gene in $gene_list
do
   echo download $gene
   echo ==========================
   echo "                         "
esearch -db clinvar -query $gene[gene]|
efetch -format docsum|
xtract -pattern DocumentSummary -def "-"\
       -element Id object_type title\
       -block variation_set -subset variation -element measure_id cdna_change\
       -block variation_set -subset assembly_set -if assembly_name -equals "GRCh37" -def "-" -element chr start stop \
       -block clinical_significance -def "-" -element description last_valuated \
       -block genes -subset gene -if symbol -equals "$gene" -def "-" -element symbol GeneID strand >> gene_clinvar.txt

sleep 2s 
   echo =============== down =======

done

上面的代碼主要是使用三個指令:esearch、efetch和xtract,先用esearch去查詢NCBI內對於單一個基因的最新資料,在使用efetch來下載,最後使用xtract來把資料做前處理來整理成比較。這邊需要花一些的坑就是去調整xtract的pattern,看我們需要什麼資料做後續的處理,然後針對這些資料來做pattern的設計。

每一行都是在這個基因區域中,相關的變異位點資訊,包含其編碼、變異種類、變異細節、其臨床註釋之意義等等。

接者就可以把這個資料去往下做更新。

第二步:將從NCBI下載的資料進行清洗,只留下位點具有Pathogenic或Likely Pathogenic標注的

拿到這些資訊後,接者便是應用各種技巧來進行整合。(資料處理的坑就是這樣,不過也是有趣的地方,每次都會多學到一點點不同的代碼寫法和狀況)

下一步,我們先用R來把這個資料讀進去後,只留下Pathogenic和Likely pathogenic的位點資訊,聽起來簡單,但下面是真實情況的資料:

上面是看各個原始資料中,臨床位點的注釋,會發現很多奇怪的狀況,這邊就是一些清資料的活,確認這些不一致的來源,並且將其處理成乾淨的版本,去掉許多注釋可能沒有完成的位點資訊,最後只留下相關的位點。這邊可以善用dplyr的強大功能搭配字串處理的stringr,我這邊則是使用mutate搭配case_when來做處理。

第三步:利用clinvar ID, allele ID來彙整資訊

取得新更新的特定基因列表中的變異位點相關的ID資訊後,可以以此為參考,來跟不同資料來做收集。尋這些位點分別是在Ion的哪個 Amplicom上、過濾clinvar VCF檔案取得ref和alt資料、使用位置資訊來從reference genome fasta來取得前一位置的位點序列。

這邊使用clinvar ID, allele ID和其相關的位點來取得下面三個資料

  • 取得每個變異位點在Amplicon的位置上 | 使用bedtools
  • 取得每個變異位點前一個序列的核酸資料|使用seqkit和seqtk
  • 取得每個變異位點的實際資訊|使用VCFtools

這邊可以借助Bedtools 來做兩組不同位點資訊的比較,比如位點是否位在特定位置區域上等的分析。

比如這邊我需要做的就是每個位點實際位在的Amplicon位置,這邊就必須要拿位點資料和Amplicon資料來做處理。

bedtools intesect -wb\
    -a CRC_clinvarBed -b CRC_amplicon_bed|\
cut -f 1,2,3,4,5,6,10,14 

這邊代碼的意思是去看每一個-a後面的檔案其在-b後面的amplicon範圍,並且將兩個資料合再一起,並且最後使用bash的指定cut,只留下特定想要的欄位供後續的使用。像是下方的示意圖:

另一部分,想要取得特定位置的序列資訊,則可以使用seqkit這個工具,他可以吃bed檔案格式來吐出相關的序列資訊,也可以使用seqkit來清理從NCBI所下載。這邊可以直接去NCBI的ftp下載參考序列組,其資料夾長得如下:

下載後,可以看到其實際fasta檔案有非常多細節,有297個片段(第一次抓參考基因組,通常都以為只有24個染色體片段,實際上每個染色體除了主要資料外,還有很多“補丁”的片段)。

seqkit是一個可以用來取代seqtk的分析命令行工具,可以用來處理和分析fasta和fastq的檔案格式,這樣的的代碼和sed來做清洗,最後只留下23對染色體的參考序列,並且使用seqkit來取變異點前一位置的序列。下面的代碼也有用到seqtk,用來提取特定的染色體序列出來。

P.S: 這邊有一個要小心的坑,使用seqkit subseq來擷取序列時,用bed檔或是直接下指令,兩者的索引會是不同的。

seqkit seq -n GRCh37_latest_genomic.fna.gz | grep "GRCh37.p13 Primary Assembly"| grep "NC" > primaryAssemble.lst

# only use primary assembly hg19 reference genome
seqtk subseq GRCh37_latest_genomic.fna.gz primaryAssemble.lst > onlychr_GRCh37_latest_genomic.fna

# rename the hg19 reference header and preprocess of the title
sed '/^>/d' file.fa | wc -l
sed 's/NC_.* Homo sapiens //' draft_o_onlychr_GRCh37_latest_genomic.fna > draft_1_onlychr_GRCh37_latest_genomic.fna

sed 's/, GRCh37.p13 Primary Assembly//' draft_1_onlychr_GRCh37_latest_genomic.fna > draft_2_onlychr_GRCh37_latest_genomic.fna

# get the reference sequence from bed file
seqkit subseq --bed $CRCRefAnchorBed draft_2_onlychr_GRCh37_latest_genomic.fna|\
    sed 'N;s/\n/\t/' |\
    sed 's/^>//' |\
    sed 's/\.//' |\
    sed 's/://' > $CRCrefAnchor_file

# get the reference sequence from bed file

seqkit subseq --bed $EpilepsyRefAnchorBed draft_2_onlychr_GRCh37_latest_genomic.fna |\
    sed 'N;s/\n/\t/' |\
    sed 's/^>//' |\
    sed 's/\.//' |\
    sed 's/://' > $EpilepsyAnchor_file

接者,為了取得每個VCF檔案裡面的序列變異細節,會使用VCFtools,這邊也是踩了一個軟體的坑,在VCFtools裡面的snps篩選,所使用的其實是clinvar ID而非snpID,這邊真的是頗坑的。

vcftools --gzvcf $vcf_file --snps $Epilepsy_VCF_Bed --recode --recode-INFO-all --out 20210717_epilepsy_annotation_VCF

這個代碼的參數意思:–gzvcf是輸入壓縮過的vcf檔案,–snps則是以提供每行一個clinvarID的列表,用來篩選落在這標單的位點資訊。

第三部:把全部資料彙整成最終檔案

最後的部分可以在R裡面處理,比較high level的資料處理在比較小的資料集中使用R相對方便,因為前面三個檔案都是以tab間隔之檔案,所以讀進去後可以在R裡面彙整成最終的檔案格式。可以用到dplyr裡面的rename、left_join、filter、mutate來做最終的匯聚。

outputCRC_clinvarBED %>%
    dplyr::rename('chr'=V1, 'start'=V2, 'end'=V3, 'clinVarID'=V4, 'alleleID'=V5, 'dbSNP'=V6, 'Amplicon'=V7, 'Gene'=V8) %>%
    dplyr::left_join(., CRC.annotation.VCF, by='clinVarID') %>%
    dplyr::mutate(Anchor_pos=paste0(chr, '_', as.character(start-1))) %>%
    dplyr::left_join(., CRC.annotate.ref.anchorfile, by='Anchor_pos') %>%
    dplyr::filter(!is.na(REF)) %>% dplyr::filter(!is.na(AHCHOR)) %>%
    dplyr::mutate(Info=past0("REF=", REF, ";OBS=",ALT, ";ANCHOR=", ANCHOR))

清資料的過程蠻多小細節的,真的是每次都是全新的坑,只是越清會越知道什麼坑是小坑,什麼坑是大坑,以及比較熟悉各種基因資料的格式比如bed format, VCF format和各個資料庫中的關聯性。

閱讀分享:生技前峰們對未來的看法

太久沒寫網誌了,這半年咻咻咻的就過惹,沈靜在打造實驗室的忙碌中,之後慢慢分享打造一個具有高通量能力之合成生物學實驗室以及居家實驗室的進展!

這邊來稍微摘錄一下六月發表在Nature Biotechnology的文章:Voices of biotech leaders 。這篇文章邀請了以下這些在生物科技發展前沿的領導者,談論一下他們對於未來產業的看法,有大學教授、生技創辦人、基金會管理人、創投、大型研究機構負責人等等,雖然實際瀏覽和查閱一下,總合來講還是只邀請了小部分的領導者,裡頭的比爾蓋茲和臉書創辦人老婆Priscilla Chan本身就是著名的名人,另外,George Churchm John Cumbers, Emily LeProust, Neri Oxman, Aviv Regev, J.Craig Venter等人之前就在關注,剩下的其他也是第一次認識,每個人其實只說幾句話,老實說與其閱讀內容,不然看看他們所屬的組織和google一下事蹟,會獲得比較多有趣的資訊,整體來說,都在表達生物科技的進步搭配資訊和運算的升級,將大大在各個層面改變人類的生活,雖然困然依舊很多,不是來自科技,而是來自於社會結構、法律、資源分布不均等等。:

  • Abasi Ene Abong, 54Gene, Nigeria
  • Katrine Bosley, Arrakis Therapeutics, USA
  • Charlotte Casebourn, Theolytics, UK
  • Priscilla Chan, Chan Zuckerberg Initiative, USA
  • Janice Chen, Mammoth Bioscience, USA
  • Michael Chen, PureTech Health, USA
  • George Church, Professor at Harvard University, USA
  • John Cumbers, SynBioBeta, USA
  • Tomas de Wouters, PharmaBiome, Switzerland
  • Heather Dewey-Hagborg, REFRESH collective, USA
  • Xavier Duporter, Eligo Bioscience, France
  • Arturo Elizondo, Clara Food, USA
  • Jeremy Farrar, Wellcome Trust, UK
  • Bill Gates, Bill & Melinda Gates Foundation, USA
  • Francesco Gatto, Elypta, Sweden
  • Sebastian Giwa, Elevian, USA
  • Jernej Godec, Atlas Venture, USA
  • Silvia Gold, Mundo Sano, Argentina
  • Emily LeProust, Twist Bioscience, USA
  • Jeantine Lunshof, Prof at University of Groningen, Netherlands
  • Eddie Martucci, Akili International, USA
  • Michelle McMurray Health, Biotechnology Innovation Organization, USA
  • Jason Mellad, Start Codon, UK
  • Veronika Oudova, S-Biomedics, Belgium
  • Neri Oxman, MIT Media Lab, USA
  • Aviv Regev, Genentech, USA
  • Sarah Richardson, MicroByre, USA
  • Christopher Thomas Scott, Baylor College of Medicine, USA
  • Jake Sherkow, University of illinois, USA
  • Leah Sibener, 3T Biosciences, USA
  • Teresa Tarrago, Exheus, Spain
  • Sharon Terry, Genetic Alliance, USA
  • J.Craig Venter, J. Craig Venter Institute, USA
  • Spin Wang , TetraScience, USA
  • Sajith Wickramasekara, Benchling, USA
  • Hakim Yadi, Closed Loop Medicine, UK
  • Luhan Yang, Qihan Biotechnology, China
  • Bowen Zhao, QuantiHealth, China

How to grow(almost) everything: 學習筆記-Week 1.a

最近發現在麻省理工大學媒體實驗室(MIT Media Lab)的課程How to grow(almost) everything又重啟了,剛好最近在學習做合成生物學領域的實驗,所以感覺是個不錯的學習路引,一慣地野蠻學習。

How to grow(almost) everything其實是另一門How to make almost everything(假如對How to make almost everything有興趣,可參考這篇介紹文章)的生物版本課程,由哈佛大學George Church、MIT的Jacobson以及David S. Kong所開設的。幾年前也有嘗試這個課程,但那時候的理解力還不夠,且自造能力等於零,如今大概比較成熟,有基礎的自造和實驗能力和背景知識。

第一週的課程,算是簡單的開場,以及討論實驗安全和倫理的問題,而George Church教授則是分享了整個領域目前在做的十個具有改變人們生活型態潛力的方向,話說,三年前閱讀完George Church的書Regenesis,便對其對當代影響真的頗為佩服。

便宜的DNA讀取和合成

合成生物學,簡單來說,其實是奠基在過往的分子生物學基礎上,更向前的去定義這個領域,相對於過去已探索生物體現象為主,改為利用生物體現象來創造如工程工具的技術,能將生物技術結合工程思維和快速迭代,主要歸功於我們對於基因定序(讀)和基因合成(寫)的技術進步,由下面Goerge Church的簡報可以看到,整個技術的進步,是比莫爾定律還誇張的。首先可以由下圖發現,定序基因也就是讀取生物內的資訊成本快速下降。

Graph: Sequencing Cost Per Genome
from NIH, Sequencing Human Genome Cost

另一方面,基因合成的價格雖然沒有持續下降,但目前大約200bp以下,每個bp在美金0.07美元左右。這算是支持整個合成生物學向前的一個基本支持,而目前我們已有利用奈米孔洞蛋白的技術來改善合成和定序的方法,相信未來合成和定序整個基因組會更加的便宜和快速。

使用機器學習來做蛋白質設計

隨者定序和合成基因的成本降低,各種高通量的實驗設計變成為可能,隨之而來的巨量資料,便能利用來做近一步的預測,如今火紅的機器學習領域便可以用來設計蛋白質。下面兩個研究便是很好的典範轉移,將生物實驗從經驗性探索轉成資料導引的科研方式。

雖然在George Church的簡報裡面提到他實驗室的科學家Pierce J. Ogden和Eric D. Kelsic在2019年的發表,將機器學習應用於基因療法中,探討AAV病毒其外鞘蛋白序列要如何更有效率的去做突變和測試,這個方法學後來變成一間公司Dyno Therapeutics,導入於基因療法中。

from Science  29 Nov 2019:Vol. 366, Issue 6469, pp. 1139-1143

另外,我自己補充之前閱讀到的趨勢,在Carnegie Mellon University最近新成立的自動化科學Automation Science 的主任Robert F Murphy 也提到用機器學習的方法學搭配自動化高通量實驗技術。前陣子看到一篇文章也頗有趣的,利用一組數據102個可能的測試組合來做無細胞表達系統的最佳化。

Fig. 2
from Borkowski, O., Koch, M., Zettor, A. et al. Large scale active-learning-guided exploration for in vitro protein production optimization. Nat Commun 11, 1872 (2020). https://doi.org/10.1038/s41467-020-15798-5

使用DNA來當作儲存的工具

去氧核醣核酸,也就是DNA,本身以A、T、C、G四種組合,其實本質上,就是可以轉換成四進位的方式來儲存原本二進制的資料,比如影片、照片等等資訊,最早直接使用DNA來儲存“資料”的概念在1988年左右,由Joe Davis藝術家就有提到,但當時應該是處在“概念”階段,而在2012年左右George Church教授的實驗室也提出使用DNA作為資料儲存的方式,將一張照片轉換成四進制後儲存成ATCG的編碼,裡面也提及DNA作為儲存工具,其在資料密度及儲存穩定上是相當不錯的,這也歸功於定序和合成成本的下降,雖然目前合成的價錢相對來說較高。

from Church, George M., Yuan Gao, and Sriram Kosuri. 2012. “Next-Generation Digital Information Storage in DNA.” Science 337 (6102): 1628.

也可以聽聽華大基因的podcast天方燁談:未來用什麼儲存資料 在2021年2月2號的這集,也簡單地談談用DNA做儲存的好處和近期發展,裡頭提到的哥倫比亞大學Harris Wang教授在這方面的努力,他本身研究生時就在George Chruch實驗室開發出MAGE方法學。

重新編碼基因:抵禦病毒感染

記得之前中國科學家賀建奎在2018年愛滋寶寶基因編輯事件中,其實就讓大家正視人類已經具有如此威力的技術,它實際上就是將人類的CCR5基因修改,這個基因是愛滋病毒進入人體的細胞表面受體,雖然這技術開啟很多可能,但也延伸許多未知的問題,比如這樣修改雖然能避免愛滋病感染,但會不會造成其他問題,畢竟CCR5是身體內本來就有功能的受體蛋白,另外,修改CCR5的過程多多少少有可能會不小心修改到其他基因,這些都是很多科學研究需要進一步探索的。

在2016年George Church團隊的一篇研究,目前生物體將三個RNA代碼對應相應的蛋白質生產或是相關指定,所以三碼代表自然界有4*4*4種可能,也就是64個相對應代碼,實際上,很多代碼是產生一樣的氨基酸的,基於這個思路,他們團隊思考重新編碼大腸桿菌,將64個氨基酸對應的代碼,縮減成57個,看是否會有因此對於大腸桿菌的一些正常生存能力造成影響。

from Ostrov, Nili, Matthieu Landon, Marc Guell, Gleb Kuznetsov, Jun Teramoto, Natalie Cervantes, Minerva Zhou, et al. 2016. “Design, Synthesis, and Testing toward a 57-Codon Genome.” Science 353 (6301): 819–22

這樣的實驗在以前是看起非常不可能的,大腸桿菌的基因組有4百60萬個鹼基,所以這樣大規模的編輯得力於如今許多技術的發展。近一步來說,這些方法學在醫學上可以發展細胞和基因療法,比如這五年來發展飛快的CART療法,將病人免疫T細胞收集出來後,進行基因工程,在注射回病人的療法,讓這些T細胞能便是這些癌症細胞。

figure4
from Larson, R.C., Maus, M.V. Recent advances and discoveries in the mechanisms and functions of CAR T cells. Nat Rev Cancer (2021). https://doi.org/10.1038/s41568-020-00323-z

重新調控皮膚細胞轉化成大腦細胞

前面提到的大都以基因層面的編輯,但一個人體,同樣的基因體,有的細胞變成皮膚細胞,有的則變成大腦細胞,這些就是在調控層次的變化,雖然細胞調控牽涉到的機制非常複雜,但轉錄因子是其中具有重要角色的,藉由調控這些轉錄因子的表達,便能將細胞重新改變。在這篇2020年的研究中,科學家變利用漫病毒表現載體(Lentiviral expression vector)來調控誘發性幹細胞(hiPSCs),看其會造成分化上有何影響。

figure1
from Ng, A.H.M., Khoshakhlagh, P., Rojo Arias, J.E. et al. A comprehensive library of human transcription factors for cell fate engineering. Nat Biotechnol (2020). https://doi.org/10.1038/s41587-020-0742-6

改造器官用於移植

器官移植在目前來說,技術已經臻於成熟,但苦於人類器官的來源非常短缺,從器官移植資料庫可以看出,能提供器官的捐贈者相對於需求者,兩者間有巨大的需求,那從跟人類基因體較相近的動物身上取得器官,可能是另一種解法,但其中有許多要克服的困難。

from Sykes, Megan, and David H. Sachs. 2019. “Transplanting Organs from Pigs to Humans.” Science Immunology 4 (41). https://doi.org/10.1126/sciimmunol.aau6298.

跨物種的移植(Xenotransplantation)要面對複雜的免疫排斥作用、栓塞和凝血功能之影響、組織相容性蛋白分型、豬內源性逆轉錄蛋白(Porcine endogenous retrovirus )等等,所以利用基因編輯技術來修改器官上面的受體,可以一步步慢慢解決這些困難,其中目前做得蠻好的是將豬內源性逆轉蛋白序列從豬器官中提除。

器官強化

抗老化及逆齡科學

老化是個非常複雜的過程,有非常多個理論在描述所謂老化的過程,目前認為由兩個機制來影響,一個是細胞內建的凋亡機制(Programming age)和細胞損傷造成,可以把他分成九個分子層面的因素:(1). 基因組不穩定 、(2). 端粒耗損(telomere attrition)、(3). 表觀調控改變、(4). 蛋白質代謝功能散失、(5). 代謝調控失衡、(6). 粒線體功能異常、(7). 細胞複製減緩(cellular senescence)、(8). 幹細胞耗盡(stem cell exhaustion)、(9). 細胞內通訊改變。

from Rebelo-Marques, Alexandre, Adriana De Sousa Lages, Renato Andrade, Carlos Fontes Ribeiro, Anabela Mota-Pinto, Francisco Carrilho, and João Espregueira-Mendes. 2018. “Aging Hallmarks: The Benefits of Physical Exercise.” Frontiers in Endocrinology 9 (May): 258.

當可以把老化解構成不同分子層面的事件後,便能藉由調整生物分子路徑,來達成所謂的逆齡。在2019年,George Church的團隊發表一篇論文,使用腺病毒來做基因療法,針對三個基因: FGF21、TGFbetaR2、HFTC3,這三個基因已知跟許多人類慢性病相關,如糖尿病、關節炎和腎臟疾病,他們使用老鼠疾病模型來做驗證,觀察到在心臟衰竭的小鼠模型中,觀察到了58%的心臟功能提升,在αSMA表現量有38%降低以及腎臟髓質細胞萎縮下降約75%。目前也成立了一間公司Rejuvenatebio,先以寵物為標的在做發展。

 

資訊來源:

定序和合成基因的價錢變化

How to grow almost everything, week 1 material, MIT media lab

美國NIH定序人類基因組的價錢
https://www.genome.gov/about-genomics/fact-sheets/Sequencing-Human-Genome-cost

機器學習在蛋白質設計上的應用

Ogden, Pierce J., Eric D. Kelsic, Sam Sinai, and George M. Church. 2019. “Comprehensive AAV Capsid Fitness Landscape Reveals a Viral Gene and Enables Machine-Guided Design.” Science 366 (6469): 1139–43.

Borkowski, O., Koch, M., Zettor, A. et al. Large scale active-learning-guided exploration for in vitro protein production optimization. Nat Commun 11, 1872 (2020). https://doi.org/10.1038/s41467-020-15798-5

將DNA用在資料儲存

Church, George M., Yuan Gao, and Sriram Kosuri. 2012. “Next-Generation Digital Information Storage in DNA.” Science 337 (6102): 1628.

重新編碼基因

Ostrov, Nili, Matthieu Landon, Marc Guell, Gleb Kuznetsov, Jun Teramoto, Natalie Cervantes, Minerva Zhou, et al. 2016. “Design, Synthesis, and Testing toward a 57-Codon Genome.” Science 353 (6301): 819–22.

基因和細胞療法

Liu X, Zhang Y, Cheng C, et al. CRISPR-Cas9-mediated multiplex gene editing in CAR-T cells. Cell Res. 2017;27(1):154-157. doi:10.1038/cr.2016.142

Larson, R.C., Maus, M.V. Recent advances and discoveries in the mechanisms and functions of CAR T cells. Nat Rev Cancer (2021). https://doi.org/10.1038/s41568-020-00323-z

重新調控將皮膚細胞改造成大腦

Ng, A.H.M., Khoshakhlagh, P., Rojo Arias, J.E. et al. A comprehensive library of human transcription factors for cell fate engineering. Nat Biotechnol (2020). https://doi.org/10.1038/s41587-020-0742-6

改造移植用器官

Ways to reduce the kidney shortage, New York Times, 2014

Niu, Dong, Hong-Jiang Wei, Lin Lin, Haydy George, Tao Wang, I-Hsiu Lee, Hong-Ye Zhao, et al. 2017. “Inactivation of Porcine Endogenous Retrovirus in Pigs Using CRISPR-Cas9.” Science 357 (6357): 1303–7.

Yang, Luhan, Marc Güell, Dong Niu, Haydy George, Emal Lesha, Dennis Grishin, John Aach, et al. 2015. “Genome-Wide Inactivation of Porcine Endogenous Retroviruses (PERVs).” Science 350 (6264): 1101–4.

Sykes, Megan, and David H. Sachs. 2019. “Transplanting Organs from Pigs to Humans.” Science Immunology 4 (41). https://doi.org/10.1126/sciimmunol.aau6298.

Yang, Siyoung, Noriyuki Fujikado, Dmitriy Kolodin, Christophe Benoist, and Diane Mathis. 2015. “Immune Tolerance. Regulatory T Cells Generated Early in Life Play a Distinct Role in Maintaining Self-Tolerance.” Science 348 (6234): 589–94.

抗老化

Khosla, Sundeep, Joshua N. Farr, Tamara Tchkonia, and James L. Kirkland. 2020. “The Role of Cellular Senescence in Ageing and Endocrine Disease.” Nature Reviews. Endocrinology 16 (5): 263–75.

Kruempel, Joseph C. P., Marshall B. Howington, and Scott F. Leiser. 2019. “Computational Tools for Geroscience.” Translational Medicine of Aging 3 (November): 132–43.

Magalhães, João Pedro de, and Olivier Toussaint. 2004. “GenAge: A Genomic and Proteomic Network Map of Human Ageing.” FEBS Letters 571 (1-3): 243–47.

Melzer, David, Luke C. Pilling, and Luigi Ferrucci. 2020. “The Genetics of Human Ageing.” Nature Reviews. Genetics 21 (2): 88–101.

Partridge, Linda, Matias Fuentealba, and Brian K. Kennedy. 2020. “The Quest to Slow Ageing through Drug Discovery.” Nature Reviews. Drug Discovery 19 (8): 513–32.

Rebelo-Marques, Alexandre, Adriana De Sousa Lages, Renato Andrade, Carlos Fontes Ribeiro, Anabela Mota-Pinto, Francisco Carrilho, and João Espregueira-Mendes. 2018. “Aging Hallmarks: The Benefits of Physical Exercise.” Frontiers in Endocrinology 9 (May): 258.

Rijt, Sanne van der, Marte Molenaars, Rebecca L. McIntyre, Georges E. Janssens, and Riekelt H. Houtkooper. 2020. “Integrating the Hallmarks of Aging Throughout the Tree of Life: A Focus on Mitochondrial Dysfunction.” Frontiers in Cell and Developmental Biology 8 (November): 594416.

Tacutu, Robi, Daniel Thornton, Emily Johnson, Arie Budovsky, Diogo Barardo, Thomas Craig, Eugene Diana, et al. 2018. “Human Ageing Genomic Resources: New and Updated Databases.” Nucleic Acids Research 46 (D1): D1083–90.

保羅。格雷厄姆Paul Graham: 如何思考

這篇是分享閱讀Paul Graham十一月的文章How to Think For Yourself。沒聽過Paul Graham的人也可以趁機了解一下,他算是矽谷創業圈的老前輩,創辦的Y Combinator是目前很重要的一個美國新創孵育器。他本身會把自己的小散文貼在一個簡單的網站來分享,文字都相當的淺顯和易懂,看得出來是非常厲害的寫手。

這篇文章How to Think For Yourself,其實想表達的東西很簡單,如何成為一個獨立思考的人,以及怎樣的特質能保持獨立思考的特性(Independent-mindedness),文中很簡單地提到三個重要的特點,且彼此可以互相加強:

  • 對於事實的吹毛球疵 fastidiousness about truth
  • 不易被說服該如何想 resistance to being told what to think
  • 好奇心 curiosity

保持獨立思考這件事,不是在唱高調,而是很多職業生存的基本要求。科學家,假如都跟同儕想一樣的事情,那麼不會有什麼新的產出; 投資家,假如都跟市場想的一模一樣,那麼能賺取的利潤會相當有限,甚至進一步對於創業家來說,你認為有趣的點子在當時大家也都認同的話,鐵定已經有公司創立了,最好是你的想法對大多數人來說都是不熟悉的,甚至覺得不太對,但你有自己獨到的看法,那麼就會有機會。

獨立思維(Indenpendent-mindedness)和從眾思維(Conventional-mindedness)

傳統的教育其實本質上是不鼓勵獨立思維的人,因為往往使用譬如分數來最為排序跟評判的工具,因此在傳統教育中,從小一路領先的人往往會自覺得是所謂具備獨立思維的人,但實際上往往相反,所以有從眾思維的人往往覺得自己是具有獨立思維的人,反之,具有獨立思維的人其實常常怕自己其實是具有從眾思維的,也因此種狀況在職場上會觀察到鄧寧-克魯格效應(Dunning-Kruger effect),這個效應是在描述所謂的“傻瓜認為自己是明智的,而聰明的人認為自己是個傻瓜”。

如何讓你自己具有獨立思維?

雖然作者認為獨立思維比較偏向於是天生的特質,但不代表是不能去加強的,比如不去注意當前主流的想法是什麼,雖然不去關注主流的想法和資訊會讓人感到痛苦的事情,再來則是結交具有獨立思維的人。當你察覺到一個環境讓你有重回到學生時代的感受,那麼有可能就是處在一個從眾思維的團體之中(不過,可能要看是怎樣的高中吧xd),可以盡量去接觸各式各樣的人,或是地方,甚至去旅行到一個不一樣的地方與當地人交流,都是一個不錯的方式,簡單一點的話,可以閱讀歷史,從中取得一些不同的觀點來看這世界。