01 Linux上的文本编辑器vim
vim 编辑器是什么
vim 编辑器的三种模式
注意大小写!!!
打开文件时文件可以存在或者不存在,不存在时当关闭的时候系统会创建
命令模式
• 用vim FILENAME进入之后的默认模式
• 可以“上下左右”移动光标:方向键/hjkl
• 可以剪切字符或整行、也可复制、粘贴
移动光标:
• 方向键或者hjkl
• ^和$:快速到所在行的开头和末尾(用0也可以到开头)
• 30j:向下移动30行(数字+方向进行快速移动)
• ctrl+f或b:上下翻页(forward/back)
• gg:快速回到文档的第一行的第一个字符
• G:快速到文件底部
剪切、复制与粘贴:
• x:剪切一个字符
• 10x:连续剪切10个字符(numberx)
• dd:剪切所在行
• 10dd:剪切所在行及向下共10行
• yy:复制光标所在行
• 10yy:复制所在行及下面10行
• p或P:在当前行下面/上面进行粘贴
撤销动作(后悔药):
• u:复原前一个动作(可连续撤销)
• ctrl+r:重做上一个动作
编辑模式
• 输入i后进入编辑模式(左下角有-- INSERT --提示)• 其实有多种进入的模式(i/a/o/I/A/O),但是记住一种即可
• 按esc键退出该模式
• 在编辑模式下即可正常的编辑、修改文本内容
末行模式
• 在命令模式下输入一个:进入这一模式
• 注意需要是英文的冒号,中文的冒号(全角)输入不进来
• 按esc键退出该模式
• 在该模式下可以设置、查询、替换、保存并退出
保存与退出
• :wq 保存并退出
• :q 直接退出
• :q! 不保存修改,强制退出
• :wq! 保存并强制退出
set系列命令
• :set nu 显示行号
• :set nonu 取消行号
• :set list 显示不可见字符(分辨制表符与空格)
• :set nolist 不显示不可见字符(分辨制表符与空格)
• :set ff=unix 将文件格式转换为unix格式 (如果格式很奇怪可以用这个代码)
查询
• 输入/KEYWORD进行查询
• 按n向下查找
• 按N向上查找
替换
• :%s///g 全局替换 /替换/被替换对象/
• :s///g 替换光标所在行
• :s/// 只替换光标所在行的第一次
vim键盘图
Vim 编辑器:vimtutor zh_CN 可以查看帮助文档
练习
1.用vim打开readme.txt文件,在第一行Biotrainee()的括号内填入自己的用户名(提示:用i切换模式) vim readme.txt 按i June16 2.把第二行剪切掉,要求在命令模式下完成(提示:按Esc键退出模式) 按 ESC dd 3.将第二行的内容粘贴到最后一行的后面 p 4.设置vim使其显示行号 :set nu 5.截图发在群里 6.不保存,直接退出(提示:用:q!) :q!
02 生物信息学常见数据格式
fasta
fasta 是一种基于文本用于表示核酸序列或多肽序列的格式。其中核酸或氨基酸均以单个字母来表示,且允许在序列前添加序列名及注释
特征: 2部分, id行和序列行.
id行以“>”开头, 有时候会包含注释信息
序列行一个字母表示一个碱基/氨基酸,
A、T、C、G、N(不确定是哪个碱基)
20种常见氨基酸
直到下一个id行为止
fastq
fastq 是一种存储了生物序列以及相应的质量评价的文本格式。
特征: 4行
gff/gtf
gff(General Feature Format)
记录序列中转录起始位点、基因、外显子、内含子等组成元件在染色体中的位置信息
1) seqid :序列的id。(The name of the sequence where the feature is located.)
2)source:注释的来源,一般指明产生此gff3文件的软件或方法(e.g. Augustus or RepeatMasker)。如果未知,则用点(.)代替。
3)type: 类型,描述这一行记录的内容(例如gene,mRNA,exon,UTR等)
4)start:起始位置,从1开始计数(区别于bed文件从0开始计数)。
5)end:终止位置。
6)score:得分,注释信息可能性说明,可以是序列相似性比对时的E-values值或者基因预测时的P-values值。”.”表示为空。
7)strand:“+”表示正链,“-”表示负链,“.”表示不需要指定正负链,“?” 表示未知.
8)phase :步进。仅对编码蛋白质的CDS(coding sequence)有效,本列指定下一个密码子开始的位置。可以是0、1或2,表示到达下一个密码子需要跳过碱基个数。
9)attributes:属性。一个包含众多属性的列表,格式为“标签=值”(tag=value),不同属性之间以分号相隔。
gtf (Gene transfer format)
1) seqname: 序列的名字。通常格式染色体ID或是contig ID。
2) source:注释的来源。通常是预测软件名或是公共数据库。
3) feature :基因结构。根据所使用软件不同,feature types必须注明。CDS,start_codon,stop_codon是一定要含有的类型。
4) start:起始位置,从1开始计数。
5) end:终止位置。
6) score :这一列的值表示对该类型存在性和其坐标的可信度,不是必须的,可以用点“.”代替。
7) strand:链的正向与负向,分别用加号+和减号-表示。
8) frame:密码子偏移,可以是0、1或2。
9) attributes:必须要有以下两个值:
gene_id value: 表示转录本在基因组上的基因座的唯一的ID。gene_id与value值用空格分开,如果值为空,则表示没有对应的基因。
transcript_id value: 预测的转录本的唯一ID。transcript_id与value值用空格分开,空表示没有转录本。
03 文本处理三驾马车
grep
一种强大的文本搜索工具,它能使用正则表达式匹配模式搜索文本,并把匹配的行打印出来
格式:grep [options] pattern file
常见参数:
-w:word 精确查找某个关键词 pattern
-c:统计匹配成功的行的数量
-v:反向选择,即输出没有没有匹配的行
-n:显示匹配成功的行所在的行号
-r:从目录中查找pattern
-e:指定多个匹配模式
-f:从指定文件中读取要匹配的 pattern
-i:忽略大小写
grep的结果一般高亮,但如果其后又传递给其他参数,则可能不高亮
-r, -n
-w
只要单独的gene -w
-w -v
-c
-e
-f
结合正则表达式
^ $ .
\?(正则里的问号) \+ *
{n} {n,} {m,n}
[ ] [^] |
注意事项:
转译正则 -E 或者是\
练习
##1.匹配example.gtf文件中包含 exon 的行,然后反向输出(即过滤掉含有exon关键词的行) cat Data/example.gtf | grep -v "exon" cat Data/example.gtf | grep -v 'exon' |less #最好用单引号防止出错 ##2.匹配example.gtf文件中包含 CDS 或者 UTR 的行 cat Data/example.gtf | grep -w -e "CDS" -e 'UTR' ##筛选词的时候记得加上 -w cat Data/example.gtf | grep -w -e 'CDS' -e 'UTR' |less -SN #3.查找example.fq文件包含 @ 的行并统计 cat Data/example.fq | grep -c "@" #4.查找example.fq文件以 @ 开头的行并统计 cat Data/example.fq | grep -c "^@" cat Data/example.fq | grep '^@'|grep -v -n '^@ERR'
混进了6个
1.人类Y染色体上有多少个基因呢? 2.在Y染色体的注释文件中有第三列哪些类型呢? 提示:Homo_sapiens.GRCh38.102.chromosome.Y.gff3.gz文件就是 人类的Y染色体的gff文件
sed:流编辑器,一般用来对文本进行增删改查
用法:sed [-options] 'script' file(s)
常见参数:
-n :取消默认输出,只显示经过sed处理或匹配的行(常用)
-e :直接在命令模式上进行 sed 的动作编辑,接要执行的一个或者多个命令
-i :直接修改读取的文件内容,不输出。【仅有这个会直接修改原始数据!!!】
-n
adress:
command:
a
i
写的行数是指原来数据里的行数
d
-e
y
思考:
先插入再删除
s
练习2
1.使用head查看 example.gtf 文件 head Data/example.gtf 2.将1结果传递给 sed,并将 HAVANA 替换为 ENSEMBL head Data/example.gtf | sed 's/HAVANA/ENSEMBL/' | less -SN 3.使用head查看 example.fa 文件,结果传递给 sed,取第2行至末尾的互补序列,并保存到新文件中 head Data/example.fa | sed '2,$y/ATCG/TAGC/' head Data/example.fa | sed '2,$y/ATCG/TAGC/' > tmp1.fa ##保留到新文件夹 4.搜索一下,sed 如何做大小写转换 大写转小写: sed 's/[A-Z]/\l&/g' 小写转大写: sed 's/[a-z]/\u&/g'
awk
也称gawk,编程语言,可对文本和数据进行处理
常见参数:
-F,fields,设置字段分隔符(默认是空白字符);
空格、Tab
-v,var=value 定义awk程序中的一个变量及其默认值
用法:awk [options] '{script}' file
基础结构: ' {script} '
匹配结构: ' /pattern/{script} '
扩展结构: 'BEGIN{script} {script} END{script}'
数据字段
内置变量
基础结构
匹配结构
扩展结构 做主体之前先做begin 里的→主体→end里的
条件和循环语句
条件
循环
数学运算
+ (加),- (减), * (乘),^ (幂) / (除),** (平方), % (取余)
int(x) x的整数部分,取靠近零一侧的值 (默认没有四舍五入)
log(x) x的自然对数
+0.5再取整 即可四舍五入
练习
1.任意挑4句前面的命令自己动手敲一遍 2.使用head查看example.gtf文件 3.将2的结果传递给awk,输出含有ENSEMBL的行 head Data/example.gtf | awk '/ENSEMBL/{print $0}'| less -s 4.结合所学,输出以下结果 head example.gtf|cut -f 9 | awk '{ print $2 $4 $6}'| tr ";" " " |sed 's/"/ /g' | less -SN head example.gtf|awk '{print $10 $12 $14}'|sed "s/;//g"|sed 's/"/ /g'| less -SN head Data/example.gtf | cut -f 9 | awk '/file/{print $0}'| less -s ##这个file是啥?