Archives

Categories

多tsv文件组合操作: tabtk_join 和 tabtk_agg

今天介绍两个合并 tsv文件 的工具: tabtk_join 和 tabtk_agg

1. tabtk_join 组合多个文件, key设置为第一列 2. tabtk_agg 指定Key列(可多列)和目标列,将多个文件的目标列合并到同一个文件

下面以下图为示例介绍如何使用tabtk_join和tabtk_agg完成类似操作

一、tabtk_join 表合并操作

我们经典使用场景:

组合不同16S多样性实验的结果(比如不同文章的不同16S分区的物种分类信息),不推荐使用Closed-OTU方式构建新的OTU表, 最合适的方式是单独构建OTU表,然后合并不同水平的分类结果。

命令行接口:

$tabtk_join Usage: tabtk_join [options] Options: -p CHAR placehold for missing value, default: [‘-‘]; -v print version number

可选项:

-p 占位符,数据缺失时使用占位符代替, 数值型可以使用’0’, 文本型使用’-‘

示例:

$cat A-phylum.txt #level F_1 F_2 Fusobacteria 0.001872 0.000248 Firmicutes 0.85635 0.827091 […]

行计数 和 (组合)列 uniq 并统计计数工具: tabtk_nlines 和 tabtk_uniq

本文介绍两个小工具:tabtk_nlines 和 tabtk_uniq

1. tabtk_nlines

其实使用 wc -l 或者 grep -P ‘^#’ | wc -l 可以很方便的解决行计数问题,但是处理数据时候需要做两个事情:

添加样本信息 过滤掉注释行

使用 tabtk_nlines 可以干净的解决这个问题:

命令行接口:

$ tabtk_nlines Usage: tabtk_nlines [options] <text> <samples> Options: -i flag to ignore lines start with ‘#’; -v print version number

需要两个参数, 一个文本文件(支持压缩包)和样本信息

示例:

统计F1 样本 F1-ko.tsv.gz 注释到ko的基因个数,有表头信息,以#开头为注释信息

$ tabtk_nlines -i F1-ko.tsv.gz F1 F1 […]

使用 libxlsxwriter 实现将tsv文件转换成xlsx文件: tabtk_xlsx

这篇为tsv-utils系列的一个小工具,目的是将一堆制表符分隔的文本文件转换成Excel文件(xlsx格式,不是xls),转换成 xlsx 后体积会变小不少。

先前使用Python也写了一个版本, 性能不行,就直接使用 C库 libxlsxwriter实现了C版本, 程序见 Github tsv-utils 仓库 。

1 libxlsxwriter 介绍

libxlsxwriter 提供了很简洁的创建Excel文件的函数接口,100% 兼容xlsx, 官方文档 介绍的很详细,有很多实例, 接口都很简单,可以创建各种图形,是自动化生成Excel文档的不二选择。

下面是 libxlsxwriter 的其它语言接口:

Python XlsxWriter D xlsxwriter R writexl Perl excel-writer-xlsx 2 tabtk_xlsx 命令行接口

tabtk_xlsx 命令行接口如下:

$ tabtk_xlsx Usage: tabtk_xlsx <xlsx> <sheet:file_path> [<sheet:file_path>] version: 0.0.1

接口很简单,变量第一个位置为输入xlsx文件名称, 后面为需要转换的文件列表,格式为 sheet名称:文件路径名称

3 tabtk_xlsx 测试和实例

首先测试下Python版本和C版本性能差异:

对NCBI […]

对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

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

[…]

优雅的TSV文件进行列注释: tabtk_definition

今天开始介绍一些处理制表符分隔文件的小工具,在生物信息数据分析过程中大部分输出格式都是以’\t’分隔的文件,比如 BLAST 输出格式,我们习惯使用 ‘-fmt 6’ 或者 ‘-fmt 7’.

此类工具比较多(包含 csv 类),比如: tabtk , tsv-utils-dlang, csvkit, 还是老规矩, 尽量避免重复造轮子。

一、tabtk_definition 介绍

tabtk_definition 就是使用一个key/value的键值对 db 对 指定文件的列进行注释,命令行接口:

$tabtk_definition Usage: tabtk_definition [options] <db> <tab> Options: -c INT target col for annotation, default: 1 -d char delimitor between key and definition, default: ‘ ‘ -h char* header name, default: ‘definition’ […]