目标:下载Synechococcus elongatus UTEX 2973 的基因组注释文件,统计其中染色体序列(CP006471.1)前10kb有几个基因?
1.搜索基因
NCBI的Assembly数据库是一个综合基因组数据库,首先打开NCBI,将搜索框勾选为Assembly,输入需要搜索的基因名称,搜索目的基因组,搜索结果如图1.1,在页面左边可以看到它的基本信息,包括Organism name ,accession number等,在页面右边可以看到数据库来源。2.在浏览器中复制文件路径
GenBank和Refseq数据库的区别在于Refseq源于Genbank,提供非冗余序列信息,这里直接点击1.1右侧FTP directory for GenBank assembly就可以,点击后可以看到需要的各种数据文件的链接,如图2.1,此次下载的是基因组的注释文件,也就是以gff为后缀的文件。
3.使用wget命令下载并解压
wget https://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/000/817/325/GCA_000817325.1_ASM81732v1/GCA_000817325.1_ASM81732v1_genomic.gff.gz
输入命令后就可以看到已经开始下载了,完成后,我们使用ls命令即可看到下载好的压缩包接下来使用gunzip解压gz文件
gunzip GCA_000817325.1_ASM81732v1_genomic.gff.gz
解压后同样可以用ls查看解压结果less GCA_000817325.1_ASM81732v1_genomic.gff
使用less命令查看下载好的文件内容4.grep抓取所需要的信息
对于gff文件,第一列通常代表染色体序列信息,第二列代表基因结构来源,第三列代表的是类型即gene、mRNA或其他,第四、五列分别是对应片段的起始和终止位置。
统计特定染色体序列(CP006471.1)前10kb的基因数目可以用grep命令抓取,也就是该基因的终止位置(第五列)小于10k。
grep '^CP006471.1' GCA_000817325.1_ASM81732v1_genomic.gff |awk -v FS="\t" -v OFS="\t" '{if($5<10000) {print $5}}'|sort|uniq|wc -l
最终可以得到染色体序列(CP006471.1)前10kb共有18个基因
关于上述代码的具体解释:
1.grep 用于查找文件里符合条件的字符串,^用于模式的最左侧,这里'^CP006471.1'即匹配以CP006471.1开头的内容。
grep完整的语法结构
grep [option] [pattern]
2.awk倾向于一行当中分成数个字段来处理,其中参数-v表示定义或修改一个awk内部变量,awk内置变量FS表示输入字段分隔符,默认为空格符;内置变量OFS表示输出字段分隔符,默认也为空格符。
此外awk中的-F参数也可以用来指定分隔符。
awk语法结构
awk [option] 'pattern {action}'
3.sort|uniq|wc -l用以统计
sort以行为单位对文件进行排序
uniq删除相邻的重复的行并写到标准输出
wc统计指定文本文件的行数、字数、字符数,其中-l参数表示统计行数
经过上述操作我们就完成了对基因组注释文件的下载与基因数量的统计。