跳轉到主要內容
工程的博客

簡化基因組學管道與磚三角洲的規模

分享這篇文章

得到一個O ' reilly的新電子書的早期預覽一步一步的指導你需要開始使用三角洲湖。


在磚試試這個筆記本
這個博客是第一個博客在我們的“大規模基因組學分析”係列。在本係列中,我們將演示如何磚統一為基因組學分析平台Beplay体育安卓版本使客戶能夠分析人beplay体育app下载地址口規模的基因組數據。從我們的輸出基因組學管道,本係列將提供一個教程使用磚質量控製運行樣例,關節型,群體質量控製和高級統計遺傳學分析。


因為完成人類基因組計劃2003年,爆炸在數據受DNA測序的成本大幅下降,從3美元1今天第一個基因組在1000美元以下。

[1]人類基因組計劃是一個美元3 b項目由美國能源部和美國國立衛生研究院始於1990年,完成於2003年。

成本基因組

來源:DNA測序成本:數據

因此,基因組學領域已經成熟階段,企業已開始在人口規模的DNA測序。然而,測序DNA代碼僅僅是第一步,然後需要的原始數據轉換為格式適用於分析。這通常是通過一係列的粘合在一起生物信息學工具使用自定義腳本和處理在單個節點上的數據,一次一個樣本,直到我們最終與基因組變異的集合。生物信息學今天科學家們把大多數時間花在構建和維護這些管道。基因組數據集已經擴展到pb級別的時候,甚至已經成為具有挑戰性的回答以下簡單的問題及時:

  • 這個月我們有多少樣本測序嗎?
  • 獨特的變異檢測的總數是什麼?
  • 我們看到了多少變異在不同類別的變化?

進一步加劇這一問題,從成千上萬的個人不能存儲數據,跟蹤和版本,同時保持可訪問和可查詢。因此,研究人員經常重複的基因組數據的子集在執行他們的分析,導致整體存儲足跡和成本升級。為了緩解這個問題,今天的研究人員使用“數據凍結”的策略,通常六個月到兩年之間,他們暫停了新數據,而是專注於冷凍現有數據的副本。沒有解決方案,逐步建立在較短的時間框架分析,導致研究進展慢下來。

有一個引人注目的需要健壯的軟件,可以使用基因組數據在工業規模,同時保持靈活性,科學家研究數據,進行迭代分析管道,並獲得新的見解。

端到端架構與磚基因組學分析

圖1所示。端到端架構與磚基因組學分析

磚三角洲:一個統一的實時大數據分析管理係統,磚平台已經邁出重要的一步解決數據Beplay体育安卓版本治理、數據訪問和數據分析研究人員今天所麵臨的問題。與磚三角洲湖,你可以將你所有的基因組數據存儲在一個地方,並創建分析,實時更新新的數據攝取。在我們結合優化統一為基因組學分析平台Beplay体育安卓版本(UAP4G)閱讀,寫作,和處理基因組學文件格式,我們提供一個端到端的解決方案基因組學管道工作流。UAP4G架構提供了靈活性,允許顧客插入自己的管道和開發自己的高等分析。beplay体育app下载地址作為一個例子,我們強調以下指示板顯示質量控製指標和可視化,可以計算並提出了一個自動時尚和定製以滿足您的特定需求。

https://www.youtube.com/watch?v=73fMhDKXykU

在這個博客的其餘部分,我們將介紹我們采取的措施是建立上述質量控製儀表板,實時更新為樣本完成處理。通過使用一個Delta-based管道處理基因數據,我們的客戶現在可以操作自己的管道,提供實時、連續取樣可見性。beplay体育app下载地址與磚筆記本(和GitHub等集成和MLflow)他們可以跟蹤和版本分析的方式將確保他們的結果是可再生的。他們bioinformaticians可以花更少的時間來維護管道和花更多的時間發現。我們看到UAP4G為引擎,將推動轉變特別分析基因組學工業規模生產,使更好的洞察基因和疾病之間的聯係。

讀取樣本數據

讓我們開始通過閱讀變異數據從一個小的樣本;以下語句讀取的數據為一個特定的sampleId使用磚三角洲格式並保存它(在delta_stream_output文件夾中)。

spark.read。\格式(“鋪”)。\負載(“dbfs: / annotations_etl_parquet sampleId = "+“SRS000030_SRR709972”)。\寫。\格式(“δ”)。\保存(delta_stream_outpath)
注意,annotations_etl_parquet文件夾包含注釋產生的1000基因組數據集存儲在拚花格式。這些注釋的ETL和處理進行使用磚的統一為基因組學分析平台Beplay体育安卓版本

磚三角洲開始流表

下麵的聲明中,我們創建的外顯Apache火花DataFrame讀取流(通過readStream)使用磚三角洲格式的數據。這是一個連續運行或動態DataFrame,即外顯DataFrame加載新數據作為數據寫入delta_stream_output文件夾。查看DataFrame外,我們可以運行DataFrame查詢找到sampleId變異數的分組。

#讀取的數據= spark.readStream外。格式(“δ”).load (delta_stream_outpath)#通過DataFrame查詢顯示數據顯示器(exomes.groupBy (“sampleId”).count () .withColumnRenamed (“數”,“變異”))

當執行顯示聲明中,磚的筆記本提供流媒體儀表板監控流工作。立即流工作的結果顯示以下聲明(即由sample_id變種)的計數。

讓我們繼續回答最初的問題通過運行其他DataFrame根據我們查詢外顯DataFrame。

單核苷酸變異數

繼續這個示例中,我們可以快速計算的數量單核苷酸變異(SNVs),如下圖中顯示。

%sql選擇referenceAllele alternateAllele,(1)作為GroupCountsnvs集團通過referenceAllele, alternateAllele訂單通過GroupCountdesc

注意,顯示命令是磚的工作空間的一部分,允許您查看DataFrame使用磚可視化(即不需要編碼)。

變異數

因為我們帶注釋的變異和功能的影響,我們可以繼續我們的分析通過觀察我們看到變體的傳播效果。大部分的變異檢測到側麵區域編碼蛋白質,這些被稱為非編碼變體。

顯示器(exomes.groupBy (“mutationType”)。())

氨基酸替換的熱圖

繼續我們的外顯DataFrame,我們計算氨基酸替換下麵的代碼片段。類似於前麵的DataFrames,我們將創建另一個動態DataFrame (aa_counts新的數據處理的),這樣DataFrame外,隨後將反映在氨基酸替換項。我們也寫數據到內存中(即。.format(“記憶”)),每60年代(即加工批次。觸發(processingTime = 60秒))所以下遊熊貓的熱圖代碼可以處理和可視化的熱圖。

#計算氨基酸替換編碼= get_coding_mutations(外)aa_substitutions = get_amino_acid_substitutions (coding.select (“proteinHgvs”),“proteinHgvs”)aa_counts = count_amino_acid_substitution_combinations (aa_substitutions)aa_counts。\writeStream。\格式(“記憶”)。\queryName (“amino_acid_substitutions”)。\outputMode (“完整的”)。\觸發(processingTime =“60秒”)。\start ()

下麵的代碼片段讀前麵的amino_acid_substitutions火花表,確定最大計數,創建一個新的大熊貓從火花表數據透視表,然後情節的熱圖。

#使用熊貓matplotlib構建的熱圖amino_acid_substitutions=spark.read.table (“amino_acid_substitutions”)max_count=amino_acid_substitutions.agg(外彙。馬克斯(“替換”))。收集()(0][0]aa_counts_pd=amino_acid_substitutions.toPandas ()aa_counts_pd=pd.pivot_table (aa_counts_pd=“替換”、索引=(“參考”),列=(“替代”),fill_value=0)無花果、斧頭=plt.subplots ()sns.axes_style(“白”):斧頭=sns。熱圖(aa_counts_pd,=max_count*0.4,cbar=,annot=真正的,annot_kws={“大小”:7},fmt=“d”)plt.tight_layout ()顯示(圖)

遷移到一個連續的管道

到目前為止,前麵的代碼片段和可視化表示一個競選一個sampleId。但是因為我們使用結構化流和磚三角洲,這段代碼可以使用(沒有任何變化)構建一個生產數據管道計算質量控製統計數據不斷,樣品通過我們的管道。為了證明這一點,我們可以運行下麵的代碼片段,將加載整個數據集。

進口時間拚花=“dbfs: / databricks-datasets /基因組學/ annotations_etl_parquet /”文件= dbutils.fs.ls(鋪)counter =0樣本文件:計數器+ =1annotation_path = sample.pathsampleId = annotation_path.split (“/”)[4].split (“=”)[1]變量= spark.read。格式(“鋪”).load (str(annotation_path))打印(“運行”+ sampleId)如果(sampleId ! =“SRS000030_SRR709972”):variants.write。格式(“δ”)。\模式(“添加”)。\保存(delta_stream_outpath)time . sleep (10)

正如前麵所描述的代碼片段,的來源外顯DataFrame文件加載到delta_stream_output文件夾中。最初,我們為一個加載一組文件sampleId(例如,sampleId = " SRS000030_SRR709972 ")。前麵的代碼片段現在需要所有生成的鑲花的樣品(即。拚花)和增量加載這些文件sampleId到相同的delta_stream_output文件夾中。下麵的GIF動畫展示的縮寫輸出前麵的代碼片段。

https://www.youtube.com/watch?v=JPngSC5Md-Q

想象你的基因組學管道

當你滾動回你的筆記本,你會注意到外顯DataFrame現在自動加載新的sampleIds。因為我們的基因組學的結構化流組件管道連續運行,盡快處理數據加載到新文件delta_stream_outputpath文件夾中。通過使用磚三角洲的格式,我們可以確保事務一致性的數據流到DataFrame外。

https://www.youtube.com/watch?v=Q7KdPsc5mbY

而不是最初創建的外顯DataFrame,注意結構化流媒體監控儀表板(即現在加載數據。,the fluctuating “input vs. processing rate”, fluctuating “batch duration”, and an increase of distinct keys in the “aggregations state”). As the外顯DataFrame處理,注意的新行sampleIds(和變體數量)。這個動作也可以看到有關集團通過突變類型查詢

https://www.youtube.com/watch?v=sT179SCknGM

事務性一致與磚三角洲,任何新的數據在每一步我們的基因組學管道。這是很重要的,因為它確保您的管道是一致的(維護數據的一致性,即保證所有的數據是“正確的”),可靠(事務完全成功或失敗),並可以處理實時更新(同時處理很多事務的能力和任何停機的故障不會影響數據)。因此即使我們下遊的氨基酸替換的數據地圖(有很多額外的ETL步驟)刷新無縫。

作為基因組學管道的最後一步,我們也監控不同的突變通過回顧磚三角洲DBFS內鋪文件(即在一段時間內增加不同的突變)。

總結

使用磚統一分析平台的基礎——與磚δ- bioinformaticians特別關注和研究人員可以應用分布式分析事務一Beplay体育安卓版本致性磚統一為基因組學分析平台Beplay体育安卓版本。這些抽象允許從業者簡化基因組數據管道。在這裏,我們已經創建了一個基因組樣本質量控製管道不斷隨著新樣本處理過程數據,無需人工幹預。是否執行ETL或者執行複雜的分析,數據將流過你的基因組學管道迅速,沒有中斷。自己試試今天通過下載簡化基因組大規模管道磚三角洲的筆記本

開始分析大規模基因組學:

確認

由於永勝黃和邁克爾·奧爾特加的貢獻。

對開源三角洲湖感興趣嗎?
訪問在線三角洲湖中心要了解更多,請下載最新的代碼,並加入三角洲湖社區。

免費試著磚
看到所有工程的博客的帖子
Baidu
map