perl如何输出基因的位置信息

perl如何输出基因的位置信息

这篇文章主要介绍了perl如何输出基因的位置信息的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇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如何输出基因的位置信息”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注恰卡编程网行业资讯频道。

发布于 2022-03-18 22:46:21
收藏
分享
海报
0 条评论
31
上一篇:perl中#!/usr/bin/perl的含义是什么 下一篇:ggplot2笛卡尔坐标系x、y轴怎么互换
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码