Linux学习笔记-Day13

2024-07-28 15:24:59 浏览数 (2)

生物信息学常见格式

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(){循环语句}}'

引用自生信技能树

0 人点赞