生物信息学常见格式
fasta
一种基于文本用于表示核酸序列或多肽序列的格式
fna, faa, fas, fa, fasta
分为两部分:id行和序列行
id行:以>开头,有时包含注释信息
序列行:一个字母代表一个碱基/氨基酸,为ATCGN或20种氨基酸。#N代表在测序中无法确定具体是什么碱基
fastq
保存生物序列(通常为核酸序列)及其测序质量得分信息的文本格式,通常由四行组成
第一行:以@开头,之后为序列的标识符以及描述信息
第二行:序列信息,ATCG
第三行: 开头,保留行,可能再次出现序列的标识及描述信息
第四行:为碱基质量值,与第二行的序列相对应,长度必须与第二行相同,#H、I、G
gff
基因组注释文件,共9列
seqname:序列的名称。通常格式为染色体id或contig id
source:注释来源。通常是预测软件名或公共数据库
feature:基因结构:transcript, gene, exon, CDS, start_codon, stop_codon, UTR...
start:起始位置。从1开始计数
end:终止位置。#始终为从5'到3'记录
score:这一列的值对该类型存在性和坐标的可信度,可用·代替
strand:正向和负向, 、-
frame:密码子偏移,0、1、2
attributes:属性,一个包含众多属性的列表,格式为“标签=值”(tag=value),不同属性间用“;”分割。#必须有gene_id和transcript_id
对齐文本命令
column -t
文本处理
grep:文本搜索
利用正则表达式匹配模式搜索文本,并打印匹配的行
格式:grep options pattern file
常见参数:
-w:word,精确查找某个关键词pattern。#前后是符号也有可能被识别为单独的单词。#前后为字母/数字会导致符号不被识别。
-c:统计匹配成功的行的数量。#仅显示行数而非匹配个数
-v:反向选择,即输出没有匹配的行。
-n:显示匹配成功的行的行号
-r:从目录中查找pattern
-e:指定多个匹配模式。#查找多个关键词,需要多次输入-e。#可利用-f或'gene|UTR'
-f:从指定文件中读取要匹配的pattern。#可将需要查找的关键词保存在文件中,然后利用该文件查找
-i:忽略大小写
-E:开启扩展正则表达式模式
正则表达式
对字符串进行操作的一种逻辑公式,用事先定义好一些特定字符及这些特定字符
^:行首
$:行尾
.:换行符之外的任意单个字符
?:匹配之前项的0次或一次。#使用时应为"f?ee",否则会被认为是搜索“?”这个字符。#或grep -E。
:匹配之前项1次或多次。#同上。
*:匹配之前项0次或多次。#无需扩展正则。
[]:匹配任意一个字符
^:排除字符。#例:^Tt
|:或。#使用时需要扩展正则!
sed:流编辑器
用来对文件进行增删改查
用法:
sed -options 'script' file(s)
'script' = address command
#常见address:#address指原始位置
2:第二行
2,4:第二行到第四行
2,$:第二行到最后一行
2~3:第二行开始,每隔三行取一行,2、5、8
2, 4:第二行到2 4行
/pattern/匹配上pattern的行
!:反选,'2!'表示除了第二行
#常见command:
a∶append,在指定行的后面加一行,内容为a后面的字符串#不会实际改变文档内容
i∶insert,在指定行的前面加一行,内容为i后面的字符串#同上
d∶delete,删除某一行或某几行,也可删除匹配上的行#可用于去掉标题行
c∶change,改变指定行的内容
s∶更改或替换字符串 's/pattern/new/flags' ,将pattern 替换成new,可以指定flags#flag默认为1,可以为2、3或g
转换为大写:'s/a-z/U&/g'
y∶转换,实现字符一对一转换。‘y/abc/ABC/',前后字符数应当一致。#特殊字符也会被当作字符进行替换
p∶print,把匹配或修改过的行打印出来,常与–n共同使用。#具体用法示例见-n。
#常见参数:
-e:直接在命令模式上进行sed的动作编辑,接要执行的一个或多个命令
-f:执行含有sed动作的文件
-r:sed的动作支持的扩展正则(默认基础正则)
-i:直接修改读取的文件内容,不输出(可以真正修改文件内容)
-n:禁止显示所有的输入内容,只显示经过sed处理的行
查找:cat readme.txt | sed -n '/ee/p'
使用示例(作业):
md5sum -c $(cat file3 | sed '1d') sed -i '1d' file3
awk:也称gawk,编程语言,可对文本和数据进行处理
外面用'',里面用""
常见参数:
-F:fields,设置字段分隔符#默认分隔符为任意空白字符,即空格或制表符
用法:
awk options '{script}' file
基础结构:'{script}'
匹配结构:'/pattern/{script}'
扩展结构:'BEGIN{script}{script}END{script}'
例如:'{print $9:$10@$11}'#可自定义输出分隔符,若行选择间输入“,”则默认为空格
awk在读取一行文本时,会用预定义的字段分隔符划分每个数据字段,并分配给一个变量。
#$0代表整个文本行
#$1代表文本行中的第一个数据字段
#$NF代表文本行中的最后一个数据字段
awk默认的字段分隔符是任意空白字符
awk内置变量
FS:定义输入字段分隔符,Field Separator,同-F
RS:定义输入记录分隔符,Record Separator
OFS:定义输出字段分隔符,Out Field Separator
ORS:定义输出记录分隔符,Out Field Separator
NF:数据文件中的字段总数,可以简单理解为列数
NR:已处理的输入记录数,可以简单理解为行数
示例
1* 设置OFS以定义输出字段分隔符:
cat Data/example.gtf | awk'BEGIN{OFS=":"}{print $3,$4,$5}' | head -5
2* 使用NR来打印行号:
cat Data/example.gtf | awk'BEGIN{FS="t";OFS=":"}{print NR,$9}' | head -5
循环语句
awk '{if()操作}' awk '{if(){yes} else{no}}' awk '{for(){循环语句}}'
引用自生信技能树