VET:基因變異VCF數據集便捷提取工具

VET:Vcf Export Tools

工具簡介

VET是一個基于R語言開發的變異位點信息批量提取工具,主要功能是根據VCF數據集,按照基因ID、樣品ID、變異位點ID等參數,實現批量提取,同時支持變異位點結構注釋,一步搞定變異數據的快速提取。

##########?WelCome?to?VCF?Export?Tools?###########
>>>>>>>>>>>>>>>>?Design?By?BioNote?<<<<<<<<<<<<<<<<<
可選參數:
[1]根據基因ID提取變異數據
[2]根據物理位置提取變異數據
[3]根據樣品名稱提取變異數據
[4]根據SNP名稱提取變異數據
--------------------------------------------------
[INFO]第一個參數填選項,第二個參數填項目備注名稱
[INFO]第三個參數選擇是否過濾樣本,默認為“N”
[INFO]第四個參數選擇是否進行結構注釋,默認為“N”
[INFO]運行方法?$?Rscript?./run.R?1?test?Y?Y
>>>>>>>>>>>>>>>>?程序版本:V?2.0.1?<<<<<<<<<<<<<<<<
##################################################

功能與應用

基因測序后經過上游分析得到的VCF文件儲存了所有樣本對應的所有變異信息,通常數據量非常大,在實際使用中需要根據情況對指定信息進行提取。目前已有vcftools或bcftools等工具能夠實現上述操作,但是用的時候參數比較復雜,整個過程略顯繁瑣。


本工具集成了R、tidyverse、Python、vcftools、bcftools、snpEff等常用工具,開發便捷式流程實現批量操作。

主要應用場景是對大規模VCF原始數據集進行提取,支持多種個性化方式

  • 按基因ID提取指定基因內變異信息
  • 按材料名稱提取某些材料變異信息
  • 按變異位點名稱篩選指定變異信息
  • 按照物理位置提取指定區段內數據

支持流式操作,提取后篩選指定樣品并對每個變異位點進行結構注釋(判斷錯義突變、移碼突變等),最終將結果文件打包生成壓縮包。

使用方法

  • 第一步:輸入待提取的信息
  • 第二步:運行Run.R腳本
  • 第三步:下載結果文件

可以批量操作,無需手寫代碼。

原理介紹

VCF是生信研究中儲存基因變異信息的重要格式,通常經過測序上游分析后得到一份具有豐富信息量的vcf或者vcf.gz文件。

alt

以“##”開頭的行表示注釋信息,一般記錄了字段類型和歷史命令,這部分相當于一個日志信息。剩下的數據部分類似一個表格,大體上每行是一個變異位點,每列是一個材料樣本。

變異位點(簡稱SNP)是按照染色體上不同位置進行統計的,展示不同材料中在某個位置堿基差異。

alt

按照突變的類型可以分為3種類型:

  • 缺失:Del,某些堿基不見了
  • 插入:Ins,新出現了某些堿基
  • 替換:SNP,單核苷酸多態性變異

alt 一般常見的VCF文件主要由上述信息組成,對于大規模測序得到的多個樣品合并VCF文件,可能包含幾千萬行×幾千列(億級數據量)。

在實際進行分析時,可能只需要考慮某幾個基因或者是一小段區間內的變異數據,因此需要對VCF文件進行提取,只取出想要的一小部分,這個過程涉及到Linux下不同軟件的相互配合。

VET 源代碼

首先,建立項目文件夾并生成以下結構:

Aug??9?16:30?00_scripts
Aug?17?15:24?01_INPUT_GeneID.txt
Aug?17?16:09?01_out_byGeneID
Aug??9?18:30?02_INPUT_Postion.txt
Aug?10?11:25?02_out_byPostion
Aug?10?11:02?03_INPUT_SampleName.txt
Aug??4?15:13?03_out_bySampleName
Aug??4?15:31?04_INPUT_SNP.txt
Aug??4?15:14?04_out_bySNP
Aug??6?11:34?05_INPUT_filevcf.txt
Aug??6?11:33?05_out_bySnpEff

程序初始化

下面的代碼為程序初始化過程,將會加載tidyverse等軟件包,并讀取重要參數,完成后將獲得輸出提示。

#!/usr/local/bin/Rscript
#?VCF?Export?Tools?基因型變異數據批量提取工具,快捷提取VCF文件
#?依賴軟件:Python、bcftools、tidyverse、snpeff
suppressPackageStartupMessages(library("cli"))
suppressPackageStartupMessages(library("tidyverse"))
cli::cli_text("##########?WelCome?to?VCF?Export?Tools?###########
?\n?>>>>>>>>>>>>>>>>?Design?By?Jewel?<<<<<<<<<<<<<<<<<
?\n可選參數:
?\n\t[1]根據基因ID提取變異數據
?\n\t[2]根據物理位置提取變異數據
?\n\t[3]根據樣品名稱提取變異數據
?\n\t[4]根據SNP名稱提取變異數據
?\n--------------------------------------------------
?\n[INFO]第一個參數填選項,第二個參數填項目備注名稱
?\n[INFO]第三個參數選擇是否過濾樣本,Y為過濾指定樣本
?\n[INFO]第四個參數為'Y'時將對vcf文件進行變異結構注釋
?\n[INFO]例如?$?./run.R?1?test?Y?Y
?\n>>>>>>>>>>>>>>>>?程序版本:V?2.0.1?<<<<<<<<<<<<<<<<
?\n?##################################################"
)
?args?<-?commandArgs(T)
if(length(args)!=4){stop("參數輸入有誤,請檢查輸入格式,示例“./Run.R?1?jobname?Y/N?Y/N")}
#?CONFIG?SETTING:
db_file?<-?"wgs_all.vcf.gz"?#?設置數據庫名稱
db_name?<-?"WGS"

#?程序初始化,刪除上次輸出結果文件----------
OPT?<-?args[1]?#?程序子選項
JOB?<-?args[2]?#?項目備注信息
SAM?<-?args[3]?#?是否過濾樣本
EFF?<-?args[4]?#?是否結構注釋
print(str_c("INFO???當前選擇的數據庫為:",db_file))
print(str_c("INFO???當前項目名稱為:?",OPT,"?<->?",JOB))
print(str_c("INFO???是否對樣品進行過濾(Y為過濾指定樣本,否則不過濾):"),SAM)
print(str_c("INFO???是否對vcf進行結構變異注釋(Y為進行注釋,否則不注釋):"),EFF)
system("rm?-rf?./01_out_byGeneID/*")
system("rm?-rf?./02_out_byPostion/*")
system("rm?-rf?./03_out_bySampleName/*")
system("rm?-rf?./04_out_bySNP/*")
system("rm?-rf?./05_out_bySnpEff/*")
cli::cli_text("INFO???系統輸出文件夾初始化完成")

根據基因ID提取變異信息

根據輸入的參數進行判斷,如果選項為1,則執行下面的步驟,主要調用Python程序進行信息檢索,并由bcftools工具批量提取變異信息,若需要根據指定樣品進行過濾,則利用view功能對樣品進行篩選,最后生成結果壓縮文件。

if?(OPT?==?"1"){
??cli::cli_text("INFO???待提取的基因ID如下,將自動自取上下游3000bp內的變異數據")
??id?<-?read.table("./01_INPUT_GeneID.txt",header?=?F)
??print(id$V1)
??cli::cli_text("INFO???基因ID信息整理完畢,接下來開始檢索物理區間")
??system("Rscript?prefix_gene_filter.R?./01_INPUT_GeneID.txt")
??cli::cli_text("INFO???接下來執行Python腳本調用bcftools提取基因變異信息")
??system(str_c("python?bcftools_view_filiter_Chr.py?--input?./00_scripts/id.txt?--vcf?./",
???????????????db_file))
??cli::cli_text("INFO???提取完成,對結果進行打包壓縮")
??
??if?(SAM?==?"Y"){
????for?(i?in?1:nrow(id)){
??????system(str_c("bcftools?view?--force-samples?-S?",
???????????????????"./03_INPUT_SampleName.txt?",
???????????????????id$V1[i],".vcf.gz?>?",
???????????????????id$V1[i],".vcf"))
????}
????system("mv?./Traes*vcf?./01_out_byGeneID/")
????system("rm?-rf?./Traes*vcf.gz")
????system(str_c("tar?-czvf?",format(Sys.Date(),?"%Y_%m_%d"),"_",JOB,"_ExportFrom_",db_name,
?????????????????"_LOTSample_Filter_ByGeneID",".tar.gz?./01_out_byGeneID/*?./Tips.pdf"))
??}else{
????system("mv?./Traes*?./01_out_byGeneID/")
????system(str_c("tar?-czvf?",format(Sys.Date(),?"%Y_%m_%d"),"_",JOB,"_ExportFrom_",db_name,
?????????????????"_AllSample_Filter_ByGeneID",".tar.gz?./01_out_byGeneID/*?./Tips.pdf"))
??}
??cli::cli_text("INFO???任務運行結束,請及時下載結果文件,下次運行前將清空結果文件")
}

根據物理位置提取變異信息

根據指定的物理區間判斷染色體的和起止位置,并結果VCF文件篩選指定區間內的變異數據,采用bcftools的 filter功能進行實現,提取完成后進行打包壓縮。

if?(OPT?==?"2"){
??cli::cli_text("INFO???待提取物理區間如下,正在提取中......")
??region?<-?read.table("./02_INPUT_Postion.txt",header?=?F)
??for?(i?in?1:nrow(region)){
????print(str_c("Index:?",i,"???Region:?",region$V1[i],"???Info:?",region$V2[i]))
????system(str_c("bcftools?filter?",db_file,"?--regions?",region$V1[i],"?>?",region$V1[i],"_",region$V2[i],".vcf"))
????system("mv?Chr*?./02_out_byPostion/")
????system("rename?:?_?./02_out_byPostion/*")
????system("rename?-?_?./02_out_byPostion/*")
??}
??cli::cli_text("INFO???提取完成,對結果進行打包壓縮")
??system(str_c("tar?-czvf?",format(Sys.Date(),?"%Y_%m_%d"),"_",JOB,"_ExportFrom_",db_name,
???????????????"_AllSample_Filter_ByPositin",".tar.gz?./02_out_byPostion/*?./Tips.pdf"))
??cli::cli_text("INFO???任務運行結束,請及時下載結果文件,下次運行前將清空結果文件")
}

今天分享的內容就到這里,還有兩個功能正在開發中,之后有時間再分享關于提取指定位點名稱和結構注釋的方法,目前這項工具還未完成,如需搶先體驗請后臺聯系,后續將開源至Github,歡迎轉發分享。


參考資料:

https://mp.weixin.qq.com/s/DdXyqiW7c7lCp4103flQZQ

本文由 mdnice 多平臺發布

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/41518.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/41518.shtml
英文地址,請注明出處:http://en.pswp.cn/news/41518.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

android 的Thread類

Thread類 位于java.lang包下的Thread類是非常重要的線程類&#xff0c;它實現了Runnable接口&#xff0c;學習Thread類包括這些相關知識&#xff1a;線程的幾種狀態、上下文切換&#xff0c;Thread類中的方法的具體使用。 線程&#xff1a;比進程更小的執行單元&#xff0c;每…

Php“牽手”京東商品詳情頁數據采集方法,京東API接口申請指南

京東詳情接口 API 是開放平臺提供的一種 API 接口&#xff0c;它可以幫助開發者獲取商品的詳細信息&#xff0c;包括商品的標題、描述、圖片等信息。在電商平臺的開發中&#xff0c;詳情接口API是非常常用的 API&#xff0c;因此本文將詳細介紹詳情接口 API 的使用。 一、京東…

uniapp編寫微信小程序遇到的坑總結

1、阻止事件冒泡 使用uniapp開發微信小程序的時候&#xff0c;發現使用click.stop來阻止事件冒泡沒有作用&#xff0c;點擊了之后發現仍然會觸發父組件或者祖先組件的事件。 在網上查閱&#xff0c;發現使用tap.stop才能阻止事件冒泡。 2、二維碼生成 在網上找了很多&…

Linux 信號的基本概念

信號的基本概念 1. 信號的概念 信號是Linux系統響應某些條件產生的一些事件。接收到信號的進程會相應地采取一些行動。 2. 信號的生成 信號是由于某些錯誤條件而生成的&#xff0c;如內存段沖突、浮點處理器錯誤或非法指令等。信號的生成其實就是一種軟件層次的中斷&#x…

adb對安卓app進行抓包(ip連接設備)

adb對安卓app進行抓包&#xff08;ip連接設備&#xff09; 一&#xff0c;首先將安卓設備的開發者模式打開&#xff0c;提示允許adb調試 二&#xff0c;自己的筆記本要和安卓設備在同一個網段下&#xff08;同連一個WiFi就可以了&#xff09; 三&#xff0c;在筆記本上根據i…

JVM——類的生命周期

文章目錄 類加載過程加載驗證準備解析初始化 卸載 一個類的完整生命周期如下&#xff1a; 類加載過程 Class 文件需要加載到虛擬機中之后才能運行和使用&#xff0c;那么虛擬機是如何加載這些 Class 文件呢&#xff1f; 系統加載 Class 類型的文件主要三步:加載->連接->…

Redis-秒殺

唉 就記得當時搶冰墩墩的時候的秒殺了 我們要注意什么問題呢? 1.幾百萬人在這個瞬間搶冰墩墩 這個瞬間會有大量的請求 服務器要能抗的住 2.不能超賣,就那些冰墩墩 賣多了壓根沒有 好不容易搶到你說沒貨了怕不是要被沖爛 3.避免少賣 攏共就那些 你再少賣點 沒屁了 4.防黃牛…

CentOS系統環境搭建(十五)——CentOS安裝Kibana

centos系統環境搭建專欄&#x1f517;點擊跳轉 關于Elasticsearch的安裝請看CentOS系統環境搭建&#xff08;十二&#xff09;——CentOS7安裝Elasticsearch。 CentOS安裝Kibana 文章目錄 CentOS安裝Kibana1.下載2.上傳3.解壓4.修改kibana配置文件5.授予es用戶權限6.kibana 后臺…

uniapp的UI框架組件庫——uView

在寫uniapp項目時候&#xff0c;官方所推薦的樣式庫并不能滿足日常的需求&#xff0c;也不可能自己去寫相應的樣式&#xff0c;費時又費力&#xff0c;所以我們一般會去使用第三方的組件庫UI&#xff0c;就像vue里我們所熟悉的elementUI組件庫一樣的道理&#xff0c;在uniapp中…

? Spring Clould 配置中心 - Nacos

視頻地址&#xff1a;微服務&#xff08;SpringCloudRabbitMQDockerRedis搜索分布式&#xff09; Nacos配置管理-Nacos實現配置管理&#xff08;P24、P25&#xff09; Nacos除了可以做注冊中心&#xff0c;同樣可以做配置管理來使用。 當微服務部署的實例越來越多&#xff0c…

18萬字應急管理局智慧礦山煤礦數字化礦山技術解決方案WORD

導讀&#xff1a;原文《18萬字應急管理局智慧礦山煤礦數字化礦山技術解決方案WORD》&#xff08;獲取來源見文尾&#xff09;&#xff0c;本文精選其中精華及架構部分&#xff0c;邏輯清晰、內容完整&#xff0c;為快速形成售前方案提供參考。 目 錄 第一章 項目概述 1.1項目…

《Go 語言第一課》課程學習筆記(七)

代碼塊與作用域&#xff1a;如何保證變量不會被遮蔽&#xff1f; 什么是變量遮蔽呢&#xff1f;package mainimport ("fmt""github.com/google/uuid""github.com/sirupsen/logrus" )func main() {fmt.Println("hello, world")logrus.…

私域新零售商業模式成功的八大要素

從事互聯網行業多年以來&#xff0c;遇到客戶問最多的一個問題&#xff0c;就是什么樣的模式火呀&#xff1f;在設計一個商業模式時&#xff0c;不單單只是考慮資金和人脈等等資源的&#xff0c;其實還是需要遵循這八大原則&#xff0c;它包括&#xff1a;客戶價值最大化原則、…

PyTorch學習筆記(十三)——現有網絡模型的使用及修改

以分類模型的VGG為例 vgg16_false torchvision.models.vgg16(weightsFalse) vgg16_true torchvision.models.vgg16(weightsTrue) print(vgg16_true) vgg16_true.classifier.add_module("add_linear",nn.Linear(1000,10)) print(vgg16_true) vgg16_false.classifie…

C#學習,委托,事件,泛型,匿名方法

目錄 委托 聲明委托 實例化委托 委托的多播 委托的用途 事件 通過事件使用委托 聲明事件 泛型 泛型的特性 泛型方法 泛型的委托 匿名方法 編寫匿名方法的語法 委托 類似于指針&#xff0c;委托是存有對某個方法的引用的一種引用類型變量&#xff0c;引用可以在運…

vue中使用faker庫生成指定類型的隨機數據

介紹 Faker.js 是十分流行的 Node.js 工具庫&#xff0c;2022年初&#xff0c;Faker.js的作者突然刪庫跑路&#xff0c;導致眾多應用程序崩潰&#xff0c;為了繼續使用Faker的功能&#xff0c;社區的幾位開發者組成團隊決定創建并維護新項目faker-js/faker&#xff0c;現其已成…

Docker+Selenium Grid搭建自動化測試平臺

安裝docker yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager –add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum install docker-ce -y Create a Docker Network docker network create grid 下載鏡像 hu…

laravel-admin之 解決上傳圖片不顯示 $form->image(‘image‘); 及 $grid->column(‘image‘);

參考 https://blog.csdn.net/u013164285/article/details/106017464 $grid->column(‘image’)->image(‘http://wuyan.cn’, 100, 100); // //設置服務器和寬高 圖片上傳的域名 上傳的圖片不顯示 在 這里設置了圖片的上傳路徑 在這里設置 域名 就可以回顯圖片

【計算機視覺|生成對抗】帶條件的對抗網絡進行圖像到圖像的轉換(pix2pix)

本系列博文為深度學習/計算機視覺論文筆記&#xff0c;轉載請注明出處 標題&#xff1a;Image-to-Image Translation with Conditional Adversarial Networks 鏈接&#xff1a;Image-to-Image Translation with Conditional Adversarial Networks | IEEE Conference Publicati…

如何學習正則表達式

正則是什么&#xff0c;能做什么&#xff1f; 正則&#xff0c;就是正則表達式&#xff0c;英文是 Regular Expression&#xff0c;簡稱 RE。顧名思義&#xff0c;正則其實就是一種描述文本內容組成規律的表示方式。 在編程語言中&#xff0c;正則常常用來簡化文本處理的邏輯…