数据科学工厂 发表于 2024-6-11 23:19:48

序列操作神器:Seqkit

## 导读

[本文](https://bioinf.shenwei.me/seqkit/ "Ref")将介绍 `SeqKit` :用于 `FASTA/Q` 文件操作的跨平台和超快工具包,后续提供了一些长用的示例。

## 1. 安装

- `conda` 安装

```sh
conda install -c bioconda seqkit
```

- `Mac` 安装

```sh
brew install seqkit# 用于苹果电脑
```

## 2. 用法

### 2.1. 序列操作

```shell
seqkit seq file
```

- 参数

| 参数      | 作用                               |
| --------- | ---------------------------------- |
| -p      | 取互补序列                         |
| --dna2rna | DNA to RNA                         |
| -l      | 序列以小写字母输出               |
| -g      | 移除组装序列中的gap                |
| -r      | 取反向序列                         |
| --rna2dna | RNA to DNA                         |
| -u      | 序列以大写字母输出               |
| -w      | 每行指定长度数据序列(default=60) |

```sh
# 将序列转换为一行输出
seqkit seq ex.fasta -w 0 > test.fasta

# 每行输出指定碱基n
seqkit seq -w n ex.fasta

# DNA序列转换为RNA序列
seqkit seq --dna2rna ex.fasta

# 取反向互补,切每行100碱基
seqkit seq -w 100 -p -r ex.fasta > test.fasta
```

### 2.2. 格式转换

- fa2fa

```sh
# fastq 转换为 fasta
seqkit fq2fa ex1.fq -o ex2.fa

# FASTA/FASTQ 转换成 tab 格式
seqkit fx2tab ex.fa > test.fa.tab.fa
seqkit fx2tab ex.fq > test.fq.tab.fq
```

```sh
# 序列碱基含量及序列长度信息统计
seqkit fx2tab
```

- 参数

| 参数 | 作用                           |
| ---- | ------------------------------ |
| -B   | 输出碱基的含量 Ex: -B AT-B N |
| -g   | 输出 GC 含量                   |
| -l   | 输出序列长度                   |
| -n   | 仅输出名字                     |
| -i   | 输出ID                         |
| -H   | 输出 header 行               |

```sh
# 输出序列长度,GC含量,名字,ID
seqkit fx2tab -l -g -n -i -H ex.fasta
```

### 2.3. 序列信息统计

```sh
# 序列长度分布统计
seqkit stat
```

- 参数

| 参数 | 作用                                                    |
| ---- | ------------------------------------------------------- |
| -a   | 输出所有统计数据,包括 seq 长度的四分位数、sum_gap、N50 |

```sh
# 统计信息
seqkit stats *.f{a,q}.gz

# 结果如下图
```

![示例](https://swindler-typora.oss-cn-chengdu.aliyuncs.com/typora_imgs/image-20221112214017228.png)

### 2.4. 根据ID提取序列

```sh
seqkit grep
```

- 参数

| 参数 | 作用                                             |
| ---- | ------------------------------------------------ |
| -n   | 匹配整个序列的名字                               |
| -s   | 匹配序列                                       |
| -d   | pattern/motif 包含简并碱基                     |
| -i   | 忽略大小写                                       |
| -v   | 反向匹配                                       |
| -p   | 匹配模式,支持连续写多个模式,匹配任一模式即输出 |
| -R   | 匹配位置选择                                     |
| -r   | 使用正则表达式                                 |

```sh
# 选取有起始密码子的序列
seqkit grep -s -r -i -p ^atg ex.fa

# 根据ID提取序列
seqkit grep -f list ex.fa > new.fa

# 简并碱基使用。S 代表C or G.
seqkit grep -s -d -i -p TTSAA

# 匹配限定到某区域
seqkit grep -s -R 1:30 -i -r -p GCTGG#
```

### 2.5. motif定位

```sh
seqkit locate
```

- 参数

| 参数 | 作用                                 |
| ---- | -------------------------------------- |
| -d   | pattern/motif contains degenerate base |
| -i   | ignore case                            |
| -P   | only search at positive strand         |
| -p   | search pattern/motif                   |
| -f   | pattern/motif file (FASTA format)      |

```sh
seqkit locate -i -d -p AUGGACUN ex.fa
```

### 2.6. 多个文件寻找相同的序列

```sh
seqkit common
```

- 参数

| 参数 | 作用                                                |
| ---- | ----------------------------------------------------- |
| -n   | 匹配整个序列的名字,包含description部分,而不是序列id |
| -s   | match by sequence                                     |
| -i   | 忽略大小写                                          |
| -m   | use MD5 reduce memory usage                           |

```sh
# By ID (default,>后面,空格之前的名字)输出ID名字相同的。
seqkit common test1.fa test2.fa -o common.fasta

# By full name(整个序列的名字,包含description部分)。输出序列名字相同的。
seqkit common test1.fa test2.fa-n -o common.fasta

# 输出要比较的文件中序列相同的序列
seqkit common test1.fa test2.fa -s -i -o common.fasta

# 输出要比较的文件中序列相同的序列 (for large sequences)
seqkit common test1.fa test2.fa -s -i -o common.fasta --md5
```

### 2.7. 文件切割

```sh
seqkit split
```

- 参数

| 参数 | 作用                                           |
| ---- | ---------------------------------------------- |
| -i   | split squences according to sequence ID      |
| -p   | 将一个文件分割成N 份                           |
| -s   | 将一个文件按照N 条序列一个文件进行分割         |
| -O   | 输出目录                                       |
| -2   | two-pass mode to lower memory usage(only FAST) |

```sh
# 将一个文件切割为 4 份
seqkit split ex.fa -p 4
```

---
页: [1]
查看完整版本: 序列操作神器:Seqkit