如何用perl中的hash给我的序列文件名称和序列一一赋值

我有一个序列的文件,里面有很多序列,我想用hash给序列的名字和整个序列一一赋值,序列名字是以>开始的,然后跟着序列,综合网友的答案和我自己写的程序,求大神指教... 我有一个序列的文件,里面有很多序列,我想用hash给序列的名字和整个序列一一赋值,序列名字是以>开始的,然后跟着序列,综合网友的答案和我自己写的程序,求大神指教 展开
 我来答
翟毅君
2016-09-09 · 超过54用户采纳过TA的回答
知道小有建树答主
回答量:128
采纳率:100%
帮助的人:44.6万
展开全部
#!/usr/bin/perl -w

use strict;

my $filename="seq.txt";

my %id_GC_content; #id=>GC_content

open IN,$filename || die $!;

$/=">";<IN>; # 设置输入记录分隔符为”>”,并去除第一个”>”

while (<IN>){ # $_=<IN>,把序列ID行和序列赋值给$_,$_= 可以省略不写

my $id = $1 if(/^(\S+)/);# 获取序列ID

chomp; # 去掉末尾的”>”

s/^.+?\n//;# 删除第一行

s/\s//g; # 删除序列中的空白字符

my $GC = (tr/GC/GC/);#计算G或C碱基个数

my $AT = (tr/AT/AT/);#计算A或T碱基个数

my $len = $GC + $AT;# 计算序列非N长度

my $gc_cont = $len ? $GC / $len : 0; #计算GC含量,如果长度为0,GC含量算0

$id_GC_content{$id}=$gc_cont; #id=>GC_content

}

$/="\n";# 把输入记录分隔符改为默认值

close IN; # 关闭输入文件句柄

my @sort = sort{$id_GC_content{$b} <=> $id_GC_content{$a}} keys(%id_GC_content);

print $sort[0];
追问
您好,谢谢您的回答,但我还有个疑问想咨询
>bac_165
AAAAAACAACCTCTCTACCTGTTC
>bac_173
AAAAAACAGACTGCAGTTGACGAT
如何编写一个perl程序,用&key来存序列的名称,然后用&value来存序列本身,然后放在hash里面。如何装在hash里面,让key和value对应。我不是太会,头都大了。谢谢您~~如果您有空的话
百度网友c9e795dda
2016-09-08 · TA获得超过5167个赞
知道大有可为答主
回答量:1128
采纳率:0%
帮助的人:1137万
展开全部
那你即是想看到甚麼 ? 请举例!
更多追问追答
追问
我想写一个程序,读取这个seq.txt的序列文件,然后用hash把序列名称和序列一一对应起来,计算gc值含量最高的一条,然后输出这条序列的名称
追答
哈! 我只是个懂 perl 的人, 你那一堆东西对我来说都是字串! 所以我既不懂甚麼为之 "gc 值", 也不知从那到那为之一个 "序列", 又从那到那为之 "名称", 你能不能举个例, 例如你想 $seq{???} 里装的是 "...." ? 或者你可否像这个人的方式提问 : http://zhidao.baidu.com/question/1701200634915153740
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式