转载基因学苑https://mp.weixin.qq.com/s/PgKR-7mwChn53nMh_BjciQ
数据处理工具概述
1. cut工具
cut
命令用于从文件的每一行剪切字节、字符和字段,并将这些输出至标准输出。若不指定文件参数,cut
会读取标准输入。必须指定 -b、-c 或 -f 标志之一。
主要参数:
-b
:以字节为单位进行分割,忽略多字节字符边界,除非指定了-n
。-c
:以字符为单位进行分割。-d
:自定义分隔符,默认为制表符。-f
:与-d
一起使用,指定显示哪个区域。-n
:取消分割多字节字符,仅与-b
一起使用。
使用案例:
# 分割文件并输出
cut -d : -f 1,3 /etc/passwd
cut -d: -f 2- /etc/passwd
# 选取每个文件前两个字符
ls -1 /ifs1/VipData/ | cut -c 1-2
2. sort工具
sort
命令用于对文本文件内容进行排序。排序后的数据更加规律,便于处理。在生物信息分析中,排序根据基因组坐标位置非常重要。
使用案例:
# 排序
awk '{print $2,$3}' ../data/scores.txt | sort
# 按第二列数字大小排序
awk '{print $2,$3}' ../data/scores.txt | sort -n -k 2
# 逆序排序
awk '{print $2,$3}' ../data/scores.txt | sort -n -r -k 2
# 计算特异项,类似uniq
awk '{print $2,$3}' ../data/scores.txt | sort -u
# 按多值排序
cat ../data/scores.txt | sort -t $'\t' -k 2 -k 3
# 按照第二列中第三个字母排序
cat ../data/scores.txt | sort -t $'\t' -k 2.3 | head
# 复杂排序
cat ../data/scores.txt | sort -t $'\t' -k 2,2 -k 3nr,3
3. uniq工具
uniq
用于删除文件中的重复行,保留唯一值。一般与 sort
命令结合使用。
选项参数:
-c
或--count
:在每列旁边显示该行重复出现的次数。-d
或--repeated
:仅显示重复的行。-u
或--unique
:仅显示一次的行。
使用案例:
# 计算特异
cat ../data/scores.txt | cut -f 2 | uniq
# 计算频数
cat ../data/scores.txt | cut -f 2 | uniq -c
# 找出重复项
cat ../data/scores.txt | cut -f 2,3 | uniq -D
# 忽略固定列
cat ../data/scores.txt | uniq -f 1 -D
4. awk工具
awk
是一个强大的文本处理工具,适用于数据分析和报告生成。它通过将文件逐行读入,以空格为默认分隔符进行处理。
使用案例:
# 输出一个列表任意行
awk '{print $2}' ../data/blast6.out | head
# 修改分隔符以及输出分隔符
awk -F ":" '{print $1,$NF}' /etc/passwd
awk -F ":" 'OFS="," {print $1,$NF}' /etc/passwd
# 过滤blast结果
awk '{if ($3>=80 && $4>=100) print $0}' ../data/blast6.out
# 统计数目
awk '{if ($3>=80 && $4>=100) print $2}' ../data/blast6.out | sort | uniq | wc
# 输出固定行内容
awk 'NR>=20 && NR<=80' ../data/blast6.out
# fastq转换fasta
zcat demo.fq.gz | awk '{getline l2; getline l3; getline l4; sub("@", ">", $0); print $0 "\n" l2}' | head
5. bioawk
bioawk
是在 awk
基础上增加生物文件处理功能的工具,支持处理 fasta/q、bam、gff、vcf 等格式文件。
使用案例:
# 输出fasta/q名字部分
bioawk -c fastx '{ print $name }' ../data/demo.fastq.gz
# 计算gc含量
bioawk -c fastx '{ print $name, gc($seq) }' ../data/demo.fastq.gz
# 输出CIGAR为deletions的列
samtools view -f 2 demo.bam | bioawk -c sam '$cigar ~ /D/ { print $cigar }' | head
6. csvtk
csvtk
是一个多功能的工具箱,专门用来处理表格数据,支持多种操作,包括统计、转换、编辑等。
使用案例:
# 显示csv文件
cat ../data/testdata/names.csv | csvtk pretty
# 转为markdown
cat ../data/testdata/names.csv | csvtk csv2md
# 用列或列名选择特定列
cat ../data/testdata/names.csv | csvtk cut -f 3,1
7. datamash
datamash
是一个命令行工具,能对数据进行各种处理,如四则运算、统计检验、分组计算等。
使用案例:
# 计算1-10的和与平均值
seq 10 | datamash sum 1 mean 1
# 按列计算频数
cat ../data/scores.txt | datamash groupby 2 count 2
这些工具在数据处理和生物信息分析中非常实用,各具特色,能够满足不同的数据处理需求。