Archives

对TSV文件进行行筛选:tabtk_subset

继续针对制表符分隔的文件操作进行解读,今天介绍一个工具: abtk_subset ,与先前介绍的一个小工具:seqtk_subseq 功能模式差不多,

如何根据列表快速提取fasta/q序列子集/补集:seqtk_subseq

实现方式也差不多, 使用一个HASH SET 存储列表标识符, 然后遍历库文件。

使用 grep 也可以解决TSV文件筛选问题, 但是:

1. grep 无法指定列,求集合操作;
2. 查询列表比较大的时候,效率很低

一、tabtk_subset 介绍

tabtk_subset 命令行接口比较简单, 两个必须参数,一个待搜索库,一个标识符列表;

$tabtk_subset
Usage: tabtk_subset [options] <tsv> <list>
Options:
  -c INT     target col for select, default: 1
  -s INT     subset option: 1 intersection, 0 supplementary set, default: 1
  -v         print vesion number

该程序接收两个可选参数:

-c, 指定列, 默认为1;
-s, 子集类型, 1 为交集, 0 为补集;

二、使用场景实例及其用法

使用场景设置:

我们手头有一个序列文件,并进行KEGG注释, 获得ko.tsv文件,但是我们只关注几个功能类型的基因,比如 K01190(beta-galactosidase), K00865( glycerate kinase), 将K01190、K00865列入文件:list.txt, 我们可以进行如下操作:

tabtk_subset -c 2  -s 1  ko.tsv list.txt
cat  list.txt | tabtk_subset -c 2  -s 1  ko.tsv  -
cat  ko.tsv | tabtk_subset -c 2  -s 1 - list.txt
tabtk_subset -c 2  -s 1  ko.tsv.gz  list.txt.gz

上面为几种常见执行模式, 支持streaming 操作,也直接支持gz压缩文件, 针对大文件也可以使用pigz进行加速读操作, 比如:

tabtk_subset -c 2  -s 1  <(pigz -dk -c -p 2  ko.tsv.gz)  <(pigz -dk -c -p 2  list.txt.gz)

本文材料为 BASE (Biostack Applied bioinformatic SEies ) 课程 Linux Command Line Tools for Life Scientists 材料, 版权归 上海逻捷信息科技有限公司 所有

Last Upate: 2017-09-27 2:06 PM

Comments are closed.