Linux和基因组测序技术初识
发表于:2019-10-31 | 分类: 生物信息
字数统计: 4k | 阅读时长: 16分钟 | 阅读量:

该文档可以帮助读者入门Linux系统,掌握常用命令和多种软件安装方式。此外还简述了全基因组测序技术,希望读者可以通过此文档初步了解生物信息学。

Linux初识

目录结构与路径

根目录

根目录(root)是系统最顶级目录,以“/”表示,其他目录均为根目录的下级目录。

家目录

家目录(home)是用户的最顶级目录,以“~/”表示,用户所有的目录均为家目录的下级目录。

绝对路径

绝对路径指的是目录或文件的绝对位置,是从根目录开始的完整路径,如“/home/bio/”。可通过“pwd”命令获取当前目录的绝对路径。

相对路径

相对路径不需要从根目录开始,只要指定与当前目录的相对位置即可。

当前目录

当前所在的路径,以“./“表示。

上级目录

也称为父目录,以“../“表示向上一级的目录,以“../../”表示向上两级的目录,以此类推。

命名法则

  • 文档与目录均以英文命名,可使用字母、数字和下划线;
  • 文档与目录的名称不允许存在空格;
  • 名称区分大小写。

终端工具

终端(terminal)是运行Linux命令的工具,类似于Windows的命令行工具。Linux各发行版均自带终端。

Linux自带终端

远程操控Linux服务器时,可以使用第三方的终端工具,如PuTTy软件。输入IP地址即可远程登录服务器运行命令。

Putty

本地计算机与服务器之间的文件传输可以通过FTP软件实现,如FileZilla。输入服务器的IP地址、用户名、密码以及端口即可链接服务器。如果服务器采用的时FTP协议,则端口填写21,若采用的是SFTP协议,则端口设置为22。

FileZilla

常用的命令

pwd: 获取当前位置的绝对路径

1
$ pwd

获取当前位置的绝对路径

mkdir: 创建目录

1
$ mkdir

创建tools目录

ls: 查看当前目录包含的内容

1
$ ls

查看当前目录包含的内容

查看所有的目录和文件(包含隐藏的内容)

1
$ ls -a

查看当前目录包含的所有内容

查看根目录所含内容

1
$ ls /

查看根目录所含内容

查看家目录所含内容

1
$ ls ~/

查看家目录所含内容

cd: 切换路径

进入“tools”目录

1
$ cd tools

进入“tools”目录

vim: 创建/编辑文档

以下所有操作均需在英文输入法状态下进行。首先创建一个新文档“example.txt”,并输入内容。

1
$ vim example.txt

创建“example.txt”文档

此时无法输入内容

此时无法输入内容,需要按一下字母“i”键切换到输入模式。当左下角出现“–NSERT –” 字样时,可以输入文字。

vim插入模式

输入相关的内容。

vim输入内容

输入完毕时需要先按一下“ESC”键退出编辑模式,此时“–NSERT –” 字样消失。

退出vim编辑模式

按住组合键“shift + :”切换到vim操作模式,此时左下角出现一个“:”。

shift + :

输入“wq!”保存修改并退出。

保存并退出vim

查看创建的文件是否在于目录下。

1
$ ls

查看当前目录下的文件及目录

cp: 复制目录或文件

将创建的“example.txt”文档复制到上一级目录下。

1
$ cp example.txt ../

向上级目录复制文件

查看上一级目录下是否存在刚刚复制的文档。

1
$ ls ../

查看父目录下的文件及目录

rm: 删除目录或文件

删除tools目录下的“example.txt”文档。

1
$ rm example.txt

删除tools目录下的“example.txt”文档

查看文档是否被删除。

1
$ ls

查看是否成功删除文件

mv: 移动/重命名

将上一级目录下的“example.txt”文档移动到当前目录下。

1
$ mv ../example.txt ./

移动文件

查看文档是否移动成功。

1
2
$ ls ../
$ ls

查看是否成功移动文件

将“example.txt”文档重命名为“examp2.txt”。

1
$ mv example.txt examp2.txt

文档重命名

查看重命名结果。

查看重命名结果

wget: 下载

使用wget工具下载基因组拼接软件“AbySS”到tools目录下。

1
$ wget http://www.bcgsc.ca/platform/bioinfo/software/abyss/releases/2.1.5/abyss-2.1.5.tar.gz

下载AbySS软件

tar: 压缩/解压缩

tar.gz格式的文件可用“tar zxvf”进行解压,将刚才下载的“abyss-2.1.5.tar.gz”解压缩。

1
$ tar zxvf abyss-2.1.5.tar.gz

解压缩AbySS软件

top: 查看系统进程

1
$ top

通过top查看系统进程

按字母键“q”退出。Ubuntu还带有另一个更加直观的查看系统进程的工具“htop”。

1
$ htop

通过htop查看系统进程

环境变量

在软件安装的时候经常需要设置环境变量,所谓的环境变量就是告诉计算机软件的安装位置。存放环境变量的文件在用户的家目录下,为隐藏文件,可通过“ls -a”命令查看。

1
$ ls -a ~/

查看家目录中的所有文档和目录

“.bashrc”和“.profile”均为环境变量配置文件,通常我们只需要编辑“.bashrc”。

软件安装

源码编译安装

源码安装适合于所有的Linux发行版以及macOS。以刚下载的“AbySS”基因组拼接软件为例演示源码编译安装,一共分三步:配置(./configure)、编译(make)和安装(sudo make install)。首先进入“AbySS”软件目录下,并查看目录中的文件,找到配置文件“configure”,根据“README.md”中的指示对软件进行配置。

1
2
$ cd abyss-2.1.5/
$ ls

进入AbySS目录并查看其所含内容

“./configure”表示运行configure进行安装前配置。

1
$ ./configure

进行编译

1
$ make

进行安装,需要“sudo”命令提供对系统目录的写入权限。

1
$ sudo make install

注意: 以上只演示了一般的安装方法,但是“AbySS”软件依赖其他的一些软件,需要先安装依赖包,最后安装“AbySS”,否则会安装失败。

通过包管理工具安装

不同的Linux发行版具有各自的软件包管理器。目前常用的Linux发行版主要是基于“RedHat”和“Debian”而制作的。
RedHat 系列的包管理器为“yum”,使用方法为在终端输入“sudo yum install -y 软件名称”。

Debian 系列的包管理器为“apt-get”,使用方法为在终端输入“sudo apt-get install 软件名称”。

示例:通过apt-get在Ubuntu中安装AbySS软件,输入命令和密码后,根据提示输入“Y”并按回车键进行自动安装。

1
$ sudo apt-get install abyss

通过apt-get安装AbySS

通过apt-get安装AbySS

添加环境变量

以原核生物基因预测软件“Prodigal”为例演示。首先在Github上找到prodigal的源码,点击“Clone or download”,并按照图示点击链接右侧的图标以复制git地址。

复制prodigal链接

在终端中进入tools目录,并输入克隆命令将项目克隆到本地计算机。命令公式为“git clone link”。

1
$ git clone https://github.com/hyattpd/Prodigal.git

克隆prodigal

克隆完成后进入“Prodigal”目录。

1
$ cd Prodigal

进入Prodigal目录

编译软件

1
$ make

编译prodigal

报错信息提示找不到gcc命令,因此需要首先安装gcc,输入命令后根据提示输入密码,直至安装完成。

1
$ sudo apt-get install gcc

安装gcc

重新编译prodigal

1
2
$ make
$ ls

查看prodigal编译结果

编译完成后得到了可执行程序,但是系统无法找到prodigal的路径,因此需要我们将其所在的路径加入到环境变量中。通过vim打开环境变量配置文件“.bashrc”,进入编辑模式。

1
$ vim ~/.bashrc

打开环境变量文件

在文档末尾添加配置语句 “export PATH=$PATH:$HOME/tools/Prodigal” 。$HOME代表家目录,“$HOME/tools/Prodigal”代表prodigal可执行程序所在的目录。

在环境变量中添加prodigal路径

编辑完成后保存并退出。然后执行“source ~/.bashrc”命令刷新,通知系统“.bashrc”文档已经更改。

1
$ source ~/.bashrc

刷新环境变量

测试配置是否成功。

1
$ prodigal -h

查看prodigal帮助信息

若要将其他软件加入到环境变量,只需在后面加入其他软件所在路径即可,各软件的路径间以英文“:“分割,不得有空格。下图为将多个软件加入到环境变量的示例。

添加多个软件路径

创建软链接

软链接(Soft Link)相当于Windows系统中的快捷方式,可以将可执行程序的软链接存放至系统默认的环境变量之中,如“/usr/bin/”或“/usr/local/bin”之中。仍旧以刚编译好的prodigal软件为例,创建软链接的公式为 “sudo ln -s /home/bio/tools/Prodigal/prodigal /usr/local/bin/prodigal” ,根据提示输入密码完成创建。

1
$ sudo ln -s /home/bio/tools/Prodigal/prodigal /usr/local/bin/prodigal

通过“whereis”命令查看软链接是否创建成功。

1
$ whereis prodigal

查看prodigal安装路径

注意: 创建软链接时要输入绝对路径,否则会报错“Too many levels of symbolic links”。

通过Anaconda包管理器进行安装

Anaconda是一款比较易用的跨平台软件包管理器,Bioconda是conda的一个通道,专门管理生物信息学软件。通过conda安装软件时可以一键安装所有的依赖包,大大节约了时间并降低了安装难度。Bioconda目前有超过600个贡献者和500个成员,大部分生物信息学软件都被包含其中。用户可以到其官网搜索需要的软件是否被囊括其中。

(1)安装conda

此处,我们安装Miniconda,进入官网,选择适应自身系统及python版本的安装文件。

查看Miniconda安装包

查看系统python版本

1
$ python -v

查看python版本

可以看出该系统已经安装了python3,因此下载Linux Python 3.7 64-bit (bash installer)。右键单击相应安装包获取链接,使用wget下载至tools目录下。建议用户安装Python 3,因为Python 软件基金会将于2020年元旦停止对Python 2的维护(https://pythonclock.org/)。

1
$ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

下载Miniconda

开始安装Miniconda

1
$ bash Miniconda3-latest-Linux-x86_64.sh

根据提示按“Enter”键查看license,并输入“yes” 按“Enter”继续,按“Enter”确认安装位置,miniconda被安装到家目录下的miniconda3目录中。最后输入“yes”,按“Enter”进行初始化。最后,通过“source ~/.bashrc”命令刷新。

初始化Miniconda

(2)设置bioconda channel

在终端中输入以下三条命令添加channels:

1
2
3
$ conda config --add channels defaults
$ conda config --add channels bioconda
$ conda config --add channels conda-forge

至此,bioconda配置完毕,可以通过conda安装生物信息学软件。下面通过conda安装mapping软件“bwa”。

1
$ conda install bwa

安装bwa

根据提示输入“y”完成安装。

MacOS相关操作

MacOS与Linux系统相似,基本命令相同,但是软件安装存在一些差异。

MacOS安装生物信息学软件

源码安装

源码安装方式与Linux安装方式一致。

创建软链接

配置方法与Linux一致。

环境变量

MacOS环境变量配置方法与Linux配置方法一致,但配置文件为家目录下的“.bash_profile”,即运行如下命令进行编辑。

1
$ vim ~/.bash_profile

编辑完成并保存后需要运行source命令。

1
$ source ~/.bash_profile

包管理器

MacOS的软件包管理器为Homebrew,可以在终端中通过以下命令安装Homebrew。

1
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

通过Homebrew安装mapping软件“bwa”。

1
$ brew install bwa

MacOS配置Anaconda

安装Miniconda

1
2
$ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
$ sh Miniconda3-latest-MacOSX-x86_64.sh

添加Bioconda通道

1
2
3
$ conda config --add channels defaults
$ conda config --add channels bioconda
$ conda config --add channels conda-forge

安装软件bwa

1
$ conda install bwa

现代测序技术

二代测序(“Next-generation” sequencing technology)

第二代测序技术的核心思想是边合成边测序(Sequencing by Synthesis),即通过捕捉新合成的末端的标记来确定DNA的序列。应用最广的技术平台主要为Illumina公司的产品。其优点为高通量、错误率低、成本低等。

  • Illumina测序中的几个名词
  • Read length: 测序的DNA片段的碱基长度。
  • Insert size: 双端测序时接头(adapter)中间序列的长度。
  • Junction: insert序列中间未被测序的部分。
  • Flowcell: 是指Illumina测序时,测序反应发生的位置,1个flowcell含有8条lane。
  • Lane: 每一个flowcell上都有8条泳道,用于测序反应,可以添加试剂,洗脱等等。
  • Raw data: 测序完成后未去接头、引物以及去除低质量序列的数据。
  • Clean data: 去除Raw data中的接头序列、linker、低质量reads、长度较短的reads及核糖体RNA和ncRNA产生的reads。
  • 数据量: read长度乘以reads数目。

二代测序名词示意图

三代测序

三代测序又称为单分子测序,测序过程无需进行PCR扩增,可以产生超长的reads,因此能够跨越高GC含量区域和高度重复区域。目前常用的测序平台包括Pacific Biosciences(PacBio)和Oxford Nanopore。

PacBio以SMRT Cell为载体进行测序反应,SMRT Cell是一张带有纳米孔的超薄金属片。PacBio采用边合成便测序的方式,测序反应在纳米孔中进行,一个纳米孔中固定一个DNA聚合酶和一条DNA模板。延伸反应的过程中检测dNTP荧光信号以确定碱基顺序。

Oxford开发的纳米单分子测序技术属于真正的实时测序,它基于电信号来判读碱基。

Table 1. Characteristics, strengths and weaknesses of commonly used sequencing platforms (Besser et al. 2018)
Platform\Instrument Throughput (Gb) Read length (bp) Strength Weakness
Sanger sequencing
ABI 3500/3730 0.0003 Up to 1 kb Read accuracy and length Cost and throughput
Illumina
MiniSeq 1.7–7.5 1×75 to ×150 Low initial investment Run and read length
MiSeq 0.3–15 1×36 to 2×300 Read length, scalability Run length
NextSeq 10–120 1×75 to 2×150 Throughput Run and read length
HiSeq (2500) 10–1000 ×50 to ×250 Read accuracy, throughput High initial investment, run
NovaSeq 5000/6000 2000–6000 2×50 to ×150 Read accuracy, throughput High initial investment, run
IonTorrent
PGM 0.08–2 Up to 400 Read length, speed Throughput, homopolymers
S5 0.6–15 Up to 400 Read length, speed Homopolymers
Proton 10–15 Up to 200 Speed, throughput Homopolymers
Pacific BioSciences
PacBio RSII 0.5–1 Up to 60 kb ead length, speed (Average 10 kb, N50 20 kb) High error rate and initial
Sequel 5–10 Up to 60 kb Read length, speed (Average 10 kb, N50 20 kb) High error rate
Oxford Nanopore
MInION 0.1–1 Up to 100 kb Read length, portability High error rate, run length

常见序列格式

Fastq

我们得到的下机序列一般为fastq格式,每一条read包含4行,第一行为测序仪器信息以及测序信息,第二行为碱基序列,第三行一般无信息,第四行为对应第二行中每个碱基的测序质量信息。

fastq文件内容

Table 2. Descriptions of the first line of the fastq file
Strings Description
@ST-E00310 The unique instrument name
147 The run id
HVT25CCXX The flowcell id
3 Flowcell lane
1011 The number within the flowcell lane
13382 ‘x’-coordinate of the cluster within the title
1819 ‘y’-coordinate of the cluster within the title
1 The number of a pair, 1 or 2 (paired-end or mate-pair reads only)
N Y if the read fails filter (read is bad), N otherwise
0 0 when none of the control bits are on, otherwise it is an even number
TGAAGACA Index sequence

Fasta

FASTA格式为文本文档,内含核苷酸或氨基酸序列以及其IDs。每条序列包含两部分,第一部分为ID及注释信息,以 “>” 开头,at the start, 第二部分为核苷酸序列或氨基酸序列。

fasta文件内容

Genbank

GenBank格式包含了基因组序列和注释信息。

Genbank文件内容

GFF3

GFF3 (Generic Feature Format version 3) 格式描述了序列的特征,每一行含有9列数据,列与列之间以制表符分割。

GFF3文件内容

基因组拼接基本概念

测序深度

测序深度(Sequencing depth)指测序得到的总碱基数(read长度x reads数目)与待测基因组大小的比值。假设一个基因组大小为2M,测序深度为10X,那么获得的总数据量为20M。

测序覆盖度

指测序获得的序列占整个基因组的比例。由于基因组中的高GC、重复序列等复杂区域的存在,测序获得的序列经常无法覆盖基因组上所有的区域。例如覆盖度是96%,表明还有4%的序列区域未测到。

Read、Contig、Scaffold

测序得到的序列被称作reads,在一个read中连续的N个碱基所组成的序列称作k-mer,把k-mer集合拼接起来形成的长DNA序列称为contig。通过pair ends信息将contigs按顺序进行排列得到scaffold。

N50

将contigs或scaffolds根据长度从大到小排列并累加,当其累计长度达到全部组装序列总长度的50%时,加上去的最后一个contig或scaffold的大小即为N50的大小,N50是评价基因组拼接质量的重要参数。

参考文献

Besser J, Carleton HA, Gerner-Smidt P, Lindsey RL, Trees E. Next-generation sequencing technologies and their application to the study and control of bacterial infections. Clinical Microbiology and Infection, 2018, 24: 335-341

上一篇:
BtToxin_Digger--A high-throughput Bacillus thuringiensis toxin mining pipeline
下一篇:
Bioconda贡献指南