这篇文章主要介绍了perl如何输出基因的位置信息的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇perl如何输出基因的位置信息文章都会有所收获,下面我们一起来看看吧。
perl输出基因的位置信息按照基因所在染色体,和位置信息排序
我们在整理基因组的gff文件,想输出基因的位置信息,以及基因所对应的多个转录本信息,需要对基因按照染色体排序,这里使用到了perl里面hash按照值来排序,而且还用了两个值基因型排序。示例代码如下,以下代码可以从gff文件当中提取所有基因的位置信息以及对应的多个转录本信息:
perl代码如下:
#!/usr/bin/perl-wusestrict;useCwdqw(abs_pathgetcwd);useGetopt::Long;useData::Dumper;die"perl$0<gff><outfile>"unless(@ARGV==2);my$gff=$ARGV[0];my%gene=();my%gene_region=();my%mRNA2Gene=();my%Gene2mRNA=();openIN,"$gff"ordie"$!";openOUT,">$ARGV[1]"ordie"$!";printOUT"#gene_ID\tchr\tstart\tend\tstrand\ttranscript_id\n";while(<IN>){chomp;nextif(/^#/);my@tmp=split(/\t/);if($tmp[2]=~/^gene/){my($id)=($tmp[8]=~/ID=([^;]+)/);$gene{$id}=1;$gene_region{$id}=[$tmp[0],$tmp[3],$tmp[4],$tmp[6]];#print"gene:$id\n";#my$gene_chr->{$id}=$tmp[0];}if($tmp[2]=~/mRNA|transcript/i){my($id)=($tmp[8]=~/ID=([^;]+)/);my($pid)=($tmp[8]=~/Parent=([^;]+)/);if(exists$gene{$pid}){push@{$Gene2mRNA{$pid}},$id;}#print"mRNA:$id\n";}}close(IN);#多层排序,先按染色体排序,再按基因位置排序formy$id(sort{$gene_region{$a}->[0]cmp$gene_region{$b}->[0]or$gene_region{$a}->[1]<=>$gene_region{$b}->[1]}keys%gene_region){printOUT"$id\t".join("\t",(@{$gene_region{$id}},sort@{$Gene2mRNA{$id}}))."\n";}close(OUT);
关于“perl如何输出基因的位置信息”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“perl如何输出基因的位置信息”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注恰卡编程网行业资讯频道。
牵引力教育 你的PHP真的学好了?
PHP:HypertextPreprocessorPHP是一种HTML内嵌式的语言(类似IIS上的ASP...
PHP代码优化技巧总结
关于php免费学的几个网站?从初级到高级使用的资料
php的一个定义PHP又名超文本预处理器,是一种通用开源脚本语言。PHP主要适用于Web开发领域,语法吸收了C语言、Ja...
PHP到底能做什么,我大学里怎么没有PHP这科
perl如何提取GFF中所有转录本的位置信息
perl如何提取GFF中所有转录本的位置信息本篇内容主要讲解“pe...
perl怎么从gff文件中提取对应转录本ID的基因结构信息
perl怎么从gff文件中提取对应转录本ID的基因结构信息本篇内容...
perl如何分离NR NT库
perl如何分离NRNT库这篇文章主要为大家展示了“perl如何...
perl怎么对组装结果中GAP左右批量设计引物
perl怎么对组装结果中GAP左右批量设计引物本文小编为大家详细介...
perl对应的gff文件格式是什么
perl对应的gff文件格式是什么本文小编为大家详细介绍“perl...
perl怎么提取基因组所有基因的启动子序列
perl怎么提取基因组所有基因的启动子序列这篇“perl怎么提取基...
用户名
密码
记住登录状态 忘记密码?
邮箱
确认密码
我已阅读并同意 用户协议