我们的基因体时代-AI, Data和生物资讯 Day19-分析和处理基因变异的档案格式VCF的工具

上一篇我们的基因体时代-AI, Data和生物资讯 Day18-基因变异的档案格式VCF上一篇介绍当我们取得每个人定序的比对资讯後,就是想要了解他跟其他人的差异,也就是所谓的基因变异,这时候就需要新的资料格式来做纪录,目前为止,这样的比较大多是跟参考基因组的序列比较来看差异性,而在人类基因组计画後,拥有比较稳定的第二代定序工具後,美国便开始有更大型的定序计画来探讨相关议题,因此对於人跟人的差异性有更多的理解,VCF格式便是在执行这类大型定序计画时为了储存变异资料而提出来的格式,这格式主要分为两个部分,第一部分为Header,每一行由#开始,里面会注明所储存的资料遵循之VCF版本、以及里面所使用的栏位细节,第二部则是由8栏所组成的资料本身,每一行为一笔资料。

这边接着介绍有什麽工具可以用来分析和处理VCF档案,下面把一份VCF资料长的样子显示出来!
https://ithelp.ithome.com.tw/upload/images/20210919/20103989ePKuXc48lZ.png

命令行环境下的资料处理:cut, grep, sed, awk

在linux或是unix环境的命令行下,有许多原生的程序是能很高效率地去做字串处理,以下从简单到复杂来罗列:

这几个程序其都是历史悠久的底层程序,可以从中一窥一开始程序都在解决什麽样类型的问题(其实就是字串处理问题。),zcat是有时候这类生物资讯相关的资料通常都会压缩过,这时候就可以用zcat,在不解压缩的情况下看一下里面的资料,往下head/tail/cut都是单纯的工具,head和tail方便你可以只显示头几行或是尾几行的资料,cut则是可以让你轻松地去把一个栏位资料中,挑选特定的栏位形成新的资料,grep、sed和awk则是相对比较复杂,其每一个都是有其可扩充性,基本上都是搭配所谓的正规表达式(regular expression)的语法在整个程序语法之中。正规表达式其实是在计算机科学中前期很重要的一个概念,可以看一下这部影片。目前在字串处理的语法中基本上都会用到正规表达式,不论是在用R、Python、Javascript、shellscript都会用到,而grep、sed和awk中则是会利用正规表达式来进行相关字串处理。

这边假如需要好好深入学习的话,推荐下面的书,可以边查边做:
从可以熟悉一下命令行指令的语法和观念,这边可以先从所谓的wildcard的概念学起,可以帮助往下走
https://ithelp.ithome.com.tw/upload/images/20210919/20103989drD8dR6kOQ.png

grep本身就是在linux/unix命令行会用到的指令,但因其可以搭配正规表达式(regular expression)来做更复杂的搜寻
https://ithelp.ithome.com.tw/upload/images/20210919/20103989oq9Ez42KNX.png

从使用grep来熟悉所谓的正规表达式後,就可以往下去触碰sed,再来是awk,本质上awk相对复杂一点,他本身就是一个完备的程序语言,但观念上跟字串处理是组合再一起的。
https://ithelp.ithome.com.tw/upload/images/20210919/20103989iYOZgqLvsK.png

https://ithelp.ithome.com.tw/upload/images/20210919/20103989EI93YWIUWA.png

VCF的进阶处理和分析工具:bcftools, bedtools, vcftools

下一篇会来更近一步的介绍这三个工具,他们分别在三个不同层次上用来处理相关问题:

  • bedtools: 用来处理和编辑bed档案的工具
  • bcftools:用来处理和编辑vcf档案的工具,比如删除或是增添某个栏位之类的
  • vcftools:直接来筛选vcf的变异,根据特定的筛选条件

相关阅读:
Day08-一些常用Linux指令-3-7(cat, tac, head, tail, vi, sed)
https://genome.ucsc.edu/FAQ/FAQformat.html
https://en.wikipedia.org/wiki/BED_(file_format)


这个月的规划贴在这篇文章中我们的基因体时代-AI, Data和生物资讯 Overview,也会持续调整!我们的基因体时代是我经营的部落格,如有对於生物资讯、检验医学、资料视觉化、R语言有兴趣的话,可以来交流交流!


<<:  Day05 - Artisan 指令列

>>:  [Day15] 利用 Vue CLI 3 来建立 Web Components 的 JS 档

Day31:HTML(29) form(8)

输入类型"周" 将”input type="week"“允许...

[Day09] 团队系统设计 - PO 系统

上篇文章中,我提出了一个「规画系统」,其系统的起始点,是由 PO 与 Designer 组成的子系统...

[Day 22] Node Event loop 1

前言 昨天, 我们知道了 JS 层藉由 V8 引用 C++ 层, C++ 层又利用 AIO (非同步...

【Day 5】BERT家族的成员们

当本系列文章提到BERT时,最初是指Google所开发的BERT,但後续基本就是指所有运用Trans...

Python3下载pandas,执行Run之後,下面的Terminal一直闪烁,且并没有Run出东西

如题,有下载 pip install pandas pip install pandas_datar...