首页 » 网站建设 » phpcvs表头技巧_csvtk表格处理神器美化统计头表合并转置筛选取样

phpcvs表头技巧_csvtk表格处理神器美化统计头表合并转置筛选取样

访客 2024-12-04 0

扫一扫用手机浏览

文章目录 [+]

csvtk软件用GO措辞编写,是一个支持多平台(Winodws/Mac/Linux)的小工具,支持格式除了这两种格式外还可以处理gzip压缩的格式。
无需解压即用。
27个子命令支持管道组合利用,支持大略的出图。

本文紧张参考软件官方教程 https://bioinf.shenwei.me/csvtk/usage,并将方法运用于扩增子剖析中常用的特色表(otutab.txt)、元数据(metadata.tsv)和物种注释(taxonomy.txt)。

phpcvs表头技巧_csvtk表格处理神器美化统计头表合并转置筛选取样

工具安装

软件主页:https://github.com/shenwei356/csvtk

phpcvs表头技巧_csvtk表格处理神器美化统计头表合并转置筛选取样
(图片来自网络侵删)

软件下载:https://github.com/shenwei356/csvtk/releases/

各系统版本都下,下载解压即可利用。

可选利用conda安装

conda install csvtk参数先容

# 信息headers 打印标题行,如果表格列比较多,首先查看列名方便后续操作stats 基本统计剖析stats2 对指定的列进行基本统计,把稳须要是数值列# 格式转化pretty 转为都雅、可读性强的格式,用于打印csv2tab 转CSV为TSVtab2csv 转TSV为CSVspace2tab 转空格分割格式为TSVtranspose 转置CSV/TSV 这一个步骤每每看看出来工具好不好用csv2md 转CSV/TSV为makrdown格式,方便我们多平台排版,发文# 凑集操作head 屏幕打印表格前面的内容,可以指定行数sample 按比例随机采样 对行进行抽样cut 选择特定列,支持按列或列名进行基本选择、范围选择、模糊选择、负向选择(最常用命令之一,非常强大)uniq 无须排序,返回按指定(多)列作为key的唯一记录freq 按指定(多)列进行计数(常用)inter 多个文件的交集grep 指定(多)列为Key进行搜索(最常用命令之一,可按指定列搜索)filter 按指定(多)列的数值进行过滤filter2 用类似awk的数值/表达式,按指定(多)列的数值进行过滤join 合并多个文件(常用)# 编辑rename 直接重命名指定(多)列名rename2 以正则表达式重命名指定(多)列名replace 以正则表达式对指定(多)列进行更换编辑(最常用命令之一,可按指定列编辑)mutate 以正则表达式基于已有列创建新的一列(常用于天生多列测试数据)mutate2 用类似awk的数值/表达式,以正则表达式基于已有(多)列创建新的一列(常用)gather 类似于R里面tidyr包的gather方法# 排序sort 按指定(多)列进行排序# 绘图plot 基本绘图plot hist histogram 直方图plot box boxplot 箱线图plot line line plot and scatter plot 线图和散点图# 其它version 版本信息和检讨新版本genautocomplete 天生支持Bash自动补全的配置文件,重启Terminal生效。
利用前把稳

利用输入数据哀求每行的列数同等,空行也会报错csvtk默认输入数据含有标题行,如没有请开启全局参数-Hcsvtk默认输入数据为CSV格式,如为TSV请开启全局参数-t输入数据列名最好唯一无重复如果TSV中存在双引号"",请开启全局参数-lcsvtk默认以#开始的为注释行,若标题行含#,请给全局参数-C指定另一个不常见的字符(如$)实战

本次利用的数据是扩增子的otu表格和注释表格,还有分组文件。

# 下载测试数据for i in otutab.txt taxonomy.txt metadata.txt otus.fa;do wget -c http://210.75.224.110/github/MicrobiomeStatPlot/Data/Science2019/$i; donemv metadata.txt metadata.tsv# 转换TSV为CSVsed 's/\t/,/g' metadata.tsv > metadata.csv# 删除行名的#号,旧版本格式,目前不常用sed -i '1 s/#//' otutab.txtpretty 表格美化csvtk pretty让打印出来的内容排版更加俏丽,实在对付tsv文件影响不大,要加上全局参数-t,但是对付csv文件影响还是挺大的。

把稳csvtk紧张用于处理csv数据,对付txt数据只管即便转化为csv数据整理,否则好多操作都不能实现。

# 预览csvhead -n3 metadata.csv# SampleID,Group,Date,Site,Sequencing,Platform,Species,Batch,BarcodeSequence,LinkerPrimerSequence,ReversePrimer# KO1,KO,2017/6/30,Beijing,BGI,HiSeq2500,Arabidopsis,1,ACGCTCGACA,AACMGGATTAGATACCCKG,ACGTCATCCCCACCTTCC# KO2,KO,2017/6/30,Beijing,BGI,HiSeq2500,Arabidopsis,1,ATCAGACACG,AACMGGATTAGATACCCKG,ACGTCATCCCCACCTTCC# 可视化csvcsvtk pretty metadata.csv|head -n3# SampleID Group Date Site Sequencing Platform Species Batch BarcodeSequence LinkerPrimerSequence ReversePrimer# KO1 KO 2017/6/30 Beijing BGI HiSeq2500 Arabidopsis 1 ACGCTCGACA AACMGGATTAGATACCCKG ACGTCATCCCCACCTTCC# KO2 KO 2017/6/30 Beijing BGI HiSeq2500 Arabidopsis 1 ATCAGACACG AACMGGATTAGATACCCKG ACGTCATCCCCACCTTCC# TSV格式利用pretty 打印样式影响不大head -n3 otutab.txt# 自动去除了表头csvtk -H pretty otutab.txt | head -n3stat 统计行列

把稳csv格式正常统计,但是tsv格式统计列数量缺点;

csvtk stat metadata.csv # file num_cols num_rows# metadata.csv 11 18#--把稳利用tsv格式文件须要添加参数 -tcsvtk stat metadata.tsv -t# file num_cols num_rows# metadata.tsv 1 18headers 打印表头

-h, --help help 文件调用 -v, --verbose 打印冗余信息,用#号分隔的文件名称

# 默认去除#号注释行,如果存在#号行,-C指定一个不常用字符csvtk -t headers otutab.txt -C !#OTUID#KO1#KO2···csvtk headers otutab.txt -t -v# otutab.txt#1 #OTUID#2 KO1#3 KO2···dim/nrow/ncol 文件行列统计

这里须要把稳的式-n参数可以用于多文件统计,没有表头记得加上-H参数。

--cols 只打印文件列数量 -h, --help 调用帮助文件 -n, --no-files 不打印文件名 --rows 只打印文件行数量 --tabular 输出机器友好的tab格式文件

# 默认输出列和行数量csvtk -t dim otutab.txt#file num_cols num_rows#otutab.txt 19 2,631#仅仅输出行数量csvtk -t nrow otutab.txt #2631# 仅仅输出列数量csvtk ncol otutab.txt -t# 19#--把稳同时统计多个文件可以在后面加上-n参数csvtk dim .txt -t -n#file num_cols num_rows#otutab.txt 19 2,631#taxonomy.txt 8 2,631summary 统计

选定的数字或文本字段的汇总统计信息(按组分组字段),把稳不能混用列名和数字标识。

所支持的函数:countn (count numeric values), min, max, sum,mean, stdev, variance, median, q1, q2, q3,entropy (Shannon entropy),prod (product of the elements);

支持的调用语法:count, first, last, rand, unique, collapse, countunique。

Flags: -n, --decimal-width int 限定浮点数为N个小数点(默认为2) -f, --fields strings 统计类型指定:operations on these fields. e.g -f 1:count,1:sum or -f colA:mean. available operations: collapse, count, countn, countunique, entropy, first, last, max, mean, median, min, prod, q1, q2, q3, rand, stdev, sum, uniq, variance -g, --groups string 分组,按照行或者列:group via fields. e.g -f 1,2 or -f columnA,columnB -h, --help 调用帮助文件 -i, --ignore-non-numbers 忽略NA值:"NA" or "N/A" -S, --rand-seed int 设定随机种子,默认11 "rand" (default 11) -s, --separater string separater for collapsed data (default "; ")

下面就一个列进行统计,紧张是演习这些常用函数的用法。
很多时候可以联合利用。
把稳常常我们的数据中有NA存在,此时加上-i。

#-对指定列WT2进行求和,得到某样本的总数据量cat otutab.txt | csvtk summary -f WT2:sum -t# 求均值cat otutab.txt | csvtk summary -f WT2:mean -t# 统计该列的长度,即行数cat otutab.txt | csvtk summary -f WT2:countn -t#-对应的max,min和first,last是一个道理,也便是下面的命令同等有效:cat otutab.txt | csvtk summary -f WT2:first -tcat otutab.txt | csvtk summary -f WT2:max -t# 统计方差:variancecat otutab.txt | csvtk summary -f WT2:variance -t# 统计标准差cat otutab.txt | csvtk summary -f WT2:stdev -t# 提取非重复值cat otutab.txt | csvtk summary -f WT2:uniq -t# 对去除重复值后的值统计数量cat otutab.txt | csvtk summary -f WT2:countunique -t

对多个列同时进行统计:

cat otutab.txt | csvtk summary -f WT2:countunique,OE1:uniq -tcat otutab.txt | csvtk summary -f WT2:mean,OE1:mean -tjoin 连接数据框

该功能和R包dplyr的许多功能类似,用法类似,例如这个功能:共有连接,左连接,全部连接。
可以支持多个共有列。
默认如果不加参数,会进行共有列连接。

csvtk join -h -f, --fields string Semicolon separated key fields of all files, if given one, we think all the files have the same key columns. Fields of different files should be separated by ";", e.g -f "1;2" or -f "A,B;C,D" or -f id (default "1") -F, --fuzzy-fields using fuzzy fields, e.g., -F -f "name" or -F -f "id123" -h, --help help for join -i, --ignore-case ignore case -k, --keep-unmatched keep unmatched data of the first file (left join) -L, --left-join left join, equals to -k/--keep-unmatched, exclusive with --outer-join --na string content for filling NA data -O, --outer-join outer join, exclusive with --left-join

实例,这里我们的实例都是来自于微生物组剖析得到的表格,让大家可以更好的运用于微生物组数据剖析和实践。

#-合并OTU表格和注释文件 -f 1 指定第一列为合并公共列csvtk -t join -f 1 otutab.txt taxonomy.txt | csvtk -t dim#file num_cols num_rows#- 26 2,631# 保存结果,供后面利用csvtk -t join -f 1 otutab.txt taxonomy.txt > otutax.txt# 演示一下左连接:仅保留第一个文件的列head otutab.txt > otutab_sub.txtcsvtk -t join -f 1 otutab_sub.txt taxonomy.txt --left-join | csvtk -t dim#file num_cols num_rows#- 26 9#--如果左连接第二个表格没有对应的信息,则利用NA添补空位head -n9 taxonomy.txt > taxonomy_sub.txtcsvtk -t join -f 1 otutab_sub.txt taxonomy_sub.txt --na NA --left-join#--全部合并,对付空缺位置可以随意标示,0,或者NA或者自己的名字也可以csvtk -t join -f 1 otutab_sub.txt taxonomy_sub.txt --outer-join --na wentao

# 通过列名来指定合并列csvtk -t join -f "OTUID;OTUID" otutab.txt taxonomy.txt |csvtk -t dimadd-header 添加表头

# 准备一下无表头的表cut -f 1-3 metadata.tsv | tail -n+2 | head -n2 > metatest.txtcat metatest.txt#KO1 KO 2017/6/30#KO2 KO 2017/6/30# 添加表头csvtk -t add-header -n SampleID,Group,Date metatest.txt#SampleID Group Date#KO1 KO 2017/6/30#KO2 KO 2017/6/30seqkit fx2tab 序列转表格

当我知道csvtk和seqkit是一个作者写的后,我就开始肆无忌惮的的联用这两个工具了,seqkit的安装和利用参考如下教程:

seqkit:序列梳理神器-统计、格式转换、长度筛选、质量值转换、翻译、反向互补、抽样、去重、滑窗、拆分等30项全能

例如下面我们将演示三个表格合并,此时须要处理一下代表序列文件,作为除了otu表格和注释表格之外的第三个表格:将fa格式转化为tsv格式,删除结尾多余制表符,再添加表头

seqkit fx2tab otus.fa|cut -f 1-2 |csvtk -t add-header -n OTUID,Sequence > otus_fa.txt# 然后转化为csv格式预览,按q退出预览csvtk tab2csv otus_fa.txt|less -S三个文件合并

# 通过第一列合并csvtk -t join -f 1 otutab.txt taxonomy.txt otus_fa.txt |head# 通过共有列名合并csvtk -t join -f OTUID otutab.txt taxonomy.txt otus_fa.txt |headjoin+summary分组统计

# -g 参数指定分组cat otutax.txt | csvtk -t summary -i -f OE2:mean,WT2:mean -g Phylum# 指定多个分组cat otutax.txt | csvtk -t summary -i -f OE2:mean,WT2:mean -g Phylum,Classtranspose 转置数据框

转置这一个步骤相称花费韶光,尤其是宏基因组的较大的表格。

#--转置,提取表头,打印前面几个csvtk -t transpose otutab.txt |csvtk -t headers |headcut 列名筛选

# -f 参数可以利用数字指定列 并挑选出来csvtk -t cut -f 1,3 otutab.txt | csvtk -t headers# -f 也可以通过列名来指定并打印列csvtk -t cut -f OE2 otutab.txt | csvtk -t headers# 去掉列只须要在序号前面加上-即可,这里去除第二和第三列csvtk -t cut -f -2,-3 otutab.txt | csvtk -t headers# 指定例模去除某些列,这里去除第二列到第六列csvtk -t cut -f -6--2 otutab.txt | csvtk -t headers# 把稳负号添加在列名字前面同样有效csvtk -t cut -f -OE1 otutab.txt | csvtk -t headers

利用-F参数,利用双引号,可以利用正则而表达式。

# 筛选W和OE开头的列csvtk -t cut -F -f "OTUID,W,OE" otutab.txt | csvtk -t headers#--无论是按照数字还是列名指定列,这个顺序便是打印出来的顺序。
csvtk -t cut -F -f "OTUID,OE1,WT1" otutab.txt | csvtk -t headers
csv2md 表格转化为markdown格式

在用markdown写条记,或做网页时,常常须要把表格排版为markdown格式,手动排版非常耗时。
利用此工具会极方便

cut -f 1-7 metadata.tsv | csvtk -t csv2md

SampleID|Group|Date |Site |CRA |CRR |BarcodeSequence:-------|:----|:--------|:--------|:---------|:--------|:--------------KO1 |KO |2017/6/30|Chaoyang |CRA002352 |CRR117575|ACGCTCGACAKO2 |KO |2017/6/30|Chaoyang |CRA002352 |CRR117576|ATCAGACACGKO3 |KO |2017/7/2 |Changping|CRA002352 |CRR117577|ATATCGCGAGcsv2xlsx 转化为xlsx格式

# 无需指定输出,会天生 otutab.txt.xlsx 的Excel表格输出csvtk -t csv2xlsx otutab.txt # -o 指定输出文件名csvtk -t csv2xlsx otutab.txt -o otutab.xlsxxlsx2csv Excel转换为文本表格

Flags: -h, --help help for xlsx2csv -a, --list-sheets 转化全部的sheet -i, --sheet-index int 指定sheet (default 1) -n, --sheet-name string sheet to retrieve

# -将xlsx转化为csv文件,显示表格中sheet编号 csvtk xlsx2csv -a otutab.txt.xlsx# 转化第一张sheet,输出到屏幕csvtk -t xlsx2csv -i 1 otutab.txt.xlsx | headhead 查看前n行的数据

-n, --number int 指定须要查看数据的行数

# 查看前十行数据csvtk head otutab.txt -n 10concat 按照行合并表

Flags: -h, --help help for concat -i, --ignore-case 忽略列名 (column name) -k, --keep-unmatched keep blanks even if no any data of a file matches -u, --unmatched-repl string replacement for unmatched data

# 须要列名一样, 但是顺序可以不一样,并去除多余表头wc -l otutab_sub.txt otutab.txt csvtk -t concat otutab_sub.txt otutab.txt | wc -l# 不同时默认共有列合并,-i忽略大小写csvtk -t concat otutab_sub.txt otutab.txt -i | csvtk -t stat# -u 将未匹配上的行利用Unmached补全csvtk concat otutab_sub.txt otutab.txt -u Unmached | csvtk -t statsample 按照比例抽样

Flags: -h, --help help for sample -n, --line-number 打印第一列,行号 ("n") -p, --proportion float 按照比例抽样 -s, --rand-seed int 随机种子(default 11)

# 按照比例抽样,抽取一半,没有表头添加参数-Hseq 100 | csvtk sample -H -p 0.5 | wc -l#46# 抽取十分之一seq 100 | csvtk sample -H -p 0.1 | wc -l# 10# 打印行号seq 100 | csvtk sample -H -p 0.05 -n#50,50#52,52#65,65cut 选择列

例子: 1. 选择单个列,根际列序号或者列名 csvtk cut -f 1 csvtk cut -f colA 2. 多个列选择 (可以重复列名,调度顺序) csvtk cut -f 1,3,2,1 csvtk cut -f colA,colB,colA 3. 选择列可用于列排序 csvtk cut -f 1,3-5 # 1, 3, 4, 5 csvtk cut -f 3,5- # 3rd col, and 5th col to the end 第五列发放末了面 csvtk cut -f 1- # 全选列 csvtk cut -f 2-,1 # move 1th col to the end 4. 负号放到前面代表去除某一列 csvtk cut -f -1,-3 # discard 1st and 3rd column csvtk cut -f -1--3 # discard 1st to 3rd column csvtk cut -f -2- # discard 2nd and all columns on the right. csvtu cut -f -colA,-colB # discard colA and colBFlags: -f, --fields string 选择列. type "csvtk cut -h" for examples -F, --fuzzy-fields 模糊选择,正则表达书,用单引号括起来, e.g., -F -f "name" or -F -f "id123" -h, --help help for cut -i, --ignore-case ignore case (column name) -u, --uniq-column deduplicate columns matched by multiple fuzzy column names

# 列名选择csvtk -t cut -f OE2 otutab.txt |head#OE2#1610#497# 序号选择csvtk -t cut -f 2,3,5 otutab.txt |head#KO1 KO2 KO4#1073 1926 1356#1965 1233 2241# 模糊选择csvtk -t cut -F -f 'OE' otutab.txt |head#OE1 OE2 OE3 OE4 OE5 OE6#1259 1610 1337 944 1245 1013#641 497 1225 1271 948 638# 去除某些列csvtk -t cut -f -1,-2,-3 otutab.txt |head#KO3 KO4 KO5 KO6 OE1 OE2 #810 1356 1064 1069 1259 1610 #2368 2241 2901 1835 641 497 # 选择第八列以及之后的全部列csvtk -t cut -f 8- otutab.txt |head#OE1 OE2 OE3 OE4 OE5 OE6 WT1 WT2 WT3 WT4 WT5 WT6#1259 1610 1337 944 1245 1013 2303 2512 1698 1974 1441 1544#641 497 1225 1271 948 638 1286 1499 843 1122 1496 1177# 选择第八列到第十列csvtk -t cut -f 8-10 otutab.txt |head#OE1 OE2 OE3#259 1610 1337uniq 去除重复

按照某列去除重复

# 挑选界,对界进行去除重复csvtk -t cut -f 2 taxonomy.txt |csvtk uniq -f 1#Kingdom#Bacteria#Archaea# 直接对注释文件某列去除重复,不考虑其他列csvtk -t uniq -t -f 2 taxonomy.txt #OTUID,Kingdom,Phylum,Class,Order,Family,Genus,Species#ASV_657,Bacteria,Actinobacteria,Actinobacteria,Actinomycetales,Thermomonosporaceae,Unassigned,Unassigned#ASV_1646,Archaea,Thaumarchaeota,Unassigned,Nitrososphaerales,Nitrososphaeraceae,Nitrososphaera,Unassignedfreq 统计频数

Flags: -f, --fields string select only these fields. e.g -f 1,2 or -f columnA,columnB (default "1") -F, --fuzzy-fields 模糊选择, e.g., -F -f "name" or -F -f "id123" -i, --ignore-case ignore case -r, --reverse 反转排序 -n, --sort-by-freq 按照频数排序 -k, --sort-by-key 按照键排序

# 对第二列统计频数csvtk -t freq -f 2 taxonomy.txt #Kingdom,frequency#Archaea,1#Bacteria,2630# 按数值反转排序csvtk -t freq -f 2 taxonomy.txt -n -r#Kingdom,frequency#Bacteria,2630#Archaea,1inter 选择多个文件共有列内容

csvtk -t inter otutab.txt taxonomy.txt |head#OTUID#ASV_2700#ASV_2092grep 指定列匹配(支持正则)

Flags: -f, --fields string comma separated key fields, column name or index. e.g. -f 1-3 or -f id,id2 or -F -f "group" (default "1") -F, --fuzzy-fields 模糊选择, e.g., -F -f "name" or -F -f "id123" -h, --help help for grep -i, --ignore-case ignore case -v, --invert 去除匹配上的行 -n, --line-number 打印行号 ("n") -N, --no-highlight 不高亮 -p, --pattern strings 优雅答应选项(multiple values supported) -P, --pattern-file string pattern files (one pattern per line)

# 选择第3列门是Actinobacteria 的行csvtk -t grep -f 3 -p Actinobacteria taxonomy.txt # 可用列表 -P 接匹配列表# 构建一个id列表,并去除表头csvtk -t cut -f 1 otutab.txt | head | csvtk del-header > id.txt# 利用-P选项后面接列表,比awk筛选更方便csvtk -t grep -f 1 -P id.txt taxonomy.txtfilter 列条件过滤

# 选择OE2 列序列数量大于500的行csvtk -t filter -f "OE2>500" otutab.txt#支持多列共同筛选csvtk -t filter -f "2-5>300" otutab.txt# 把稳模糊匹配利用-F选项,所有列均知足条件csvtk -t filter -F -f "OE>500" otutab.txt#OTUID,KO1,KO2,KO3,KO4,KO5,KO6,OE1,OE2,OE3,OE4,OE5,OE6,WT1,WT2,WT3,WT4,WT5,WT6#ASV_657,1073,1926,810,1356,1064,1069,1259,1610,1337,944,1245,1013,2303,2512,1698,1974,1441,1544split 数据列拆分为多文件

# 按照门进行拆分文件-会以门的名字命名csvtk -t split taxonomy.txt -f Phylum # 查看分出来的文件ls taxonomy-# 删除这些文件,太多使目录变混乱rm taxonomy-# 通过指定-o输出到一个文件夹中mkdir -p splitcsvtk -t split taxonomy.txt -f Phylum -o split/# 指定两个列进行剖析csvtk -t split taxonomy.txt -f Phylum,Class -o split/comb 对每一行的元素进行组合

# 两两组合csvtk -t cut -f 1,2,3 taxonomy.txt |head -n 2 |csvtk -t comb -n 2#ASV_657,Bacteria#ASV_657,Actinobacteria#Bacteria,Actinobacteria# 三个组合csvtk -t cut -f 1,2,3,4 taxonomy.txt |head -n 2 |csvtk -t comb -n 3# 断棍模型-单个到全部组合都做出来csvtk -t cut -f 1,2,3,4 taxonomy.txt |head -n 2 |csvtk -t comb -n 0add-header 添加列名

# seq天生序列,mutate添加一列,add-header--添加列名为a,bseq 3 | csvtk mutate -H |csvtk add-header -n a,b#a,b#1,1#2,2# 可以分别用-n参数指定-n a -n bseq 3 | csvtk mutate -H csvtk add-header -n a -n b#a,b#1,1#2,2del-header 删除列名

# 添加列名seq 3 | csvtk add-header#添加后删除列名seq 3 | csvtk add-header | csvtk del-header# 或者利用-H参数指定无表头防止误删seq 3 | csvtk del-header -Hrename 列名重命名

csvtk -t cut -f 1-2 taxonomy.txt |head |csvtk -t rename -f 1-2 -n B,P #B,P#ASV_657,Bacteria#ASV_2,Bacteriaround 保留小数点位数

cut -f1-3 otutab.txt |csvtk -t round -n 2 -f KO1 |head#OTUID KO1 KO2#ASV_657 1073.00 1926#ASV_2 1965.00 1233mutate 根据规则创建新列

# 利用已有列改名 作为新的一列csvtk -t mutate -f Class -n Class2 taxonomy.txt | head -n3#OTUID Kingdom Phylum Class Order Family Genus Species Class2#ASV_657 Bacteria Actinobacteria Actinobacteria Actinomycetales Unassigned Unassigned Unassigned Actinobacteria#ASV_2 Bacteria Proteobacteria Betaproteobacteria Burkholderiales Comamonadaceae Pelomonas Pelomonas_puraquae Betaproteobacteria# 繁芜一点:将otu表格otu名字种otu部分 提取出来做为group列csvtk -t mutate -f 1 -n group -p "^(.+?)[0-9]" otutab.txt |head -n3#OTUID KO1 KO2 KO3 KO4 KO5 KO6 OE1 OE2 OE3 OE4 OE5 OE6 WT1 WT2 WT3 WT4 WT5 WT6 group#ASV_657 1073 1926 810 1356 1064 1069 1259 1610 1337 944 1245 1013 2303 2512 1698 1974 1441 1544 ASV_#ASV_2 1965 1233 2368 2241 2901 1835 641 497 1225 1271 948 638 1286 1499 843 1122 1496 1177 ASV_mutate2 更为强大地创造新列

# 利用字符串重复,作为一个新列cut -f 1-3 otutab.txt |csvtk -t mutate2 -t -e " 'abc' " -n group |head -n3#OTUID KO1 KO2 group#ASV_657 1073 1926 abc#ASV_2 1965 1233 abc# 列 合并,如果是字符串,可以合并在一起cut -f 1-4 taxonomy.txt |csvtk -t mutate2 -n Comname -e ' $Class + "-" + $Phylum ' |head#OTUID Kingdom Phylum Class Comname#ASV_657 Bacteria Actinobacteria Actinobacteria Actinobacteria-Actinobacteria#ASV_2 Bacteria Proteobacteria Betaproteobacteria Betaproteobacteria-Proteobacteria#ASV_3 Bacteria Proteobacteria Gammaproteobacteria Gammaproteobacteria-Proteobacteria#如果是数值可以进行基本算数运算-例如两列求和cut -f1-7 otutab.txt |csvtk -t mutate2 -n sum12 -e ' $3 + $2 ' |head#OTUID KO1 KO2 KO3 KO4 KO5 KO6 sum12#ASV_657 1073 1926 810 1356 1064 1069 2999.00#ASV_2 1965 1233 2368 2241 2901 1835 3198.00# 利用逻辑判断,添加新列cut -f1-7 otutab.txt | csvtk -t mutate2 -n sum12 -e ' $2>1000' |head#OTUID KO1 KO2 KO3 KO4 KO5 KO6 sum12#ASV_657 1073 1926 810 1356 1064 1069 true#ASV_2 1965 1233 2368 2241 2901 1835 true#ASV_3 567 460 898 902 1224 854 false# 可以利用条件分配逻辑判断的添补cut -f1-7 otutab.txt |csvtk -t mutate2 -n sum12 -e ' $3>1000? "small" : "big"' |head#OTUID KO1 KO2 KO3 KO4 KO5 KO6 sum12#ASV_657 1073 1926 810 1356 1064 1069 small#ASV_2 1965 1233 2368 2241 2901 1835 small#ASV_3 567 460 898 902 1224 854 bigcollapse 分类汇总/合并同类项

# 想知道每个门中有哪些ASVcat taxonomy.txt |csvtk -t collapse -f 1,2,3 -v 1 -s ';' | less -S > phylum_ASV.txtsep 指定分隔符分隔一列内容

# -n 指定分隔出来的内容名称,这里指定两个,那就只会分出来两个,多指定几个,那就多分出来几个。
csvtk -t sep phylum_ASV.txt -f3 -s ";" -n OTU1,OTU2 --drop | less -S #Kingdom Phylum OTUID OTU1 OTU2#Bacteria Ignavibacteriae ASV_1159;ASV_2278 ASV_1159 ASV_2278#Archaea Thaumarchaeota ASV_1646 ASV_1646#Bacteria Armatimonadetes ASV_989;ASV_1709;ASV_1839;ASV_2014 ASV_989 ASV_1709#Bacteria Gemmatimonadetes ASV_2825 ASV_2825# --merge 会将剩下的内容放到末了一列csvtk -t sep phylum_ASV.txt -f3 -s ";" -n OTU1,OTU2 --merge| less -S
gather 表格宽变长(用于绘图)

# 按照第一列作为索引,将数据变为长数据,方便出图cat otutab.txt |csvtk -t gather -k SampleID -v value -f -1 |head#OTUID SampleID value#ASV_657 KO1 1073#ASV_657 KO2 1926#ASV_657 KO3 810# 下面利用id和界作为索引,变革为长数据cat otutax.txt |csvtk -t gather -k id -v value -f -1,-21 |head#OTUID Phylum id value#ASV_657 Actinobacteria KO1 1073#ASV_657 Actinobacteria KO2 1926fold 归类

# 选择门和科这两个等级数据,并去除重复,然后按照门,将科归类到 门后面,默认利用 “;” 分隔# 某个门中有哪 些科,和collapse有点类似,按; 分隔cat taxonomy.txt | csvtk -t uniq -f Phylum,Class |csvtk -t fold -f Phylum -v Class# 换用逗号和空格作为分隔符cat taxonomy.txt | csvtk -t uniq -f Phylum,Class |csvtk -t fold -f Phylum -v Class -s ", "# 下面按照门和钢给OTU做分类cat taxonomy.txt |csvtk -t collapse -f 1,2,3 -v 1 -s ';' | headplot 做箱线图 频数分布,线图

由于利用go出图并不能达到我们的发文预期,以是这里只是大略的看看。
优点是命令行一行完成,不用像R办理文件读写,更高效。

plot hist 绘制直方图

# 对表格的第三列绘制直方图csvtk -t plot hist otutab.txt -f 3 --title Histogram -o histogram.png# 直接展示csvtk plot hist otutab.txt -f 3 --title Histogram | display

plot box 绘制箱线图

# 设置-g参数用于指定x周坐标,-f 指定y周内容csvtk -t plot box otutax.txt -g Phylum -f "OE2" --width 12 --title "wentao" > boxplot.png

# 坐标轴反转一下csvtk -t plot box otutax.txt -g Phylum -f "OE2" --width 12 --horiz --title "wentao" > boxplot2.png

plot line 绘制线图

csvtk -t plot line otutax.txt -x OE2 -y WT2 -g Phylum --title "Line plot" > lineplot.pngcsvtk -t plot line otutax.txt -x OE2 -y WT2 -g Phylum --title "Line plot" --scatter > lineplot2.png

其他功能watch 统计频数,直方图可视化

csvtk -t watch -O hist.pdf -f WT1 otutab.txtcsvtk corr 打算两列之间的皮尔逊干系

这里利用的txt文件,以是添加了-t全局参数,这里作者帮助文件显示只能打算这一种干系,如果我们做微生物组剖析,斯皮尔曼干系更加适宜

csvtk -t corr -i -f WT1,WT2 otutab.txt # WT1 WT2 0.9373csv2json 转化csv格式为json格式

head -n3 otutab.txt | csvtk -t csv2jsonfilter2 filter的增强版 利用类似awk来高等做高等筛选

功能更强大,但用法轻微不同。

csvtk -t filter2 -f '$OE1 > 500 || $WT2 > 100' otutab.txt |head#OTUID,KO1,KO2,KO3,KO4,KO5,KO6,OE1,OE2,OE3,OE4,OE5,OE6,WT1,WT2,WT3,WT4,WT5,WT6#ASV_657,1073,1926,810,1356,1064,1069,1259,1610,1337,944,1245,1013,2303,2512,1698,1974,1441,1544#ASV_2,1965,1233,2368,2241,2901,1835,641,497,1225,1271,948,638,1286,1499,843,1122,1496,1177splitxlsx 拆分xlsx中的sheet表格

csvtk xlsx2csv -a otutab.txt.xlsx参考文献

软件管方教程:https://bioinf.shenwei.me/csvtk/usage

标签:

相关文章

介绍皮肤设置,如何打造理想肌肤状态

随着科技的发展和人们对美的追求,皮肤设置已成为美容护肤的重要一环。如何根据皮肤类型、肤质、年龄等因素进行合理设置,已成为众多爱美人...

网站建设 2025-01-03 阅读1 评论0

介绍盖章制作,传承文化,彰显权威

自古以来,盖章在我国文化中具有重要的地位。从古代的官印、私印到现代的公章、合同章,盖章已成为一种独特的文化符号,承载着丰富的历史内...

网站建设 2025-01-03 阅读1 评论0

介绍监控破坏,技术手段与法律风险并存

随着科技的飞速发展,监控设备已遍布大街小巷,成为维护社会治安的重要手段。一些不法分子为了逃避法律制裁,开始研究如何破坏监控设备。本...

网站建设 2025-01-03 阅读1 评论0

介绍登录不上之谜,技术故障还是人为疏忽

随着互联网的普及,登录已成为人们日常生活中不可或缺的一部分。在享受便捷的登录不上这一问题也困扰着许多用户。本文将深入剖析登录不上之...

网站建设 2025-01-03 阅读1 评论0

介绍电脑键盘调出方法,让操作更高效

随着科技的发展,电脑已经成为了我们日常生活中不可或缺的工具。而电脑键盘,作为电脑输入设备,更是我们与电脑进行交流的桥梁。你是否知道...

网站建设 2025-01-03 阅读1 评论0

介绍磁力链,高效便捷的文件下载利器

在互联网高速发展的今天,文件下载已成为日常生活中不可或缺的一部分。而磁力链作为一种新型的文件下载方式,凭借其高效、便捷的特点,受到...

网站建设 2025-01-03 阅读1 评论0