Chinaunix

标题: 求个一个perl程序,提取GO注释库里提取相应基因的GO号(求高手) [打印本页]

作者: aids260    时间: 2011-05-08 20:58
标题: 求个一个perl程序,提取GO注释库里提取相应基因的GO号(求高手)
本帖最后由 aids260 于 2011-05-08 20:59 编辑

BGIBMGA004936-PA        GO:0005085        GO:0005622        GO:0051056        GO:0005515        GO:0007165        GO:0007264
BGIBMGA005113-PA        GO:0008152        GO:0008415                               
BGIBMGA011416-PA        GO:0003735        GO:0005622        GO:0005840        GO:0006412               
BGIBMGA006470-PA        GO:0016491                                       
BGIBMGA000219-PA        GO:0005622        GO:0043565                               
BGIBMGA012457-PA        GO:0004984        GO:0005549        GO:0007608        GO:0016020               
BGIBMGA006942-PA        GO:0003676        GO:0005622        GO:0008270                       
BGIBMGA012123-PA        GO:0003824        GO:0008152                               
BGIBMGA001976-PA        GO:0018149                                       
BGIBMGA010922-PA        GO:0016021                                       
BGIBMGA008727-PA        GO:0005509        GO:0003824        GO:0008152                       
BGIBMGA009945-PA        GO:0003676        GO:0005622        GO:0008270        GO:0005524        GO:0016887       
BGIBMGA006678-PA        GO:0003676        GO:0005622        GO:0008270        GO:0003735        GO:0005840        GO:0006412
BGIBMGA010701-PA        GO:0006812        GO:0008324        GO:0016020                       
BGIBMGA008436-PA        GO:0003779        GO:0017048        GO:0030036        GO:0016043               
BGIBMGA008910-PA        GO:0004180        GO:0006508        GO:0004182




以上是我的GO 库的数据格式

我如果有以下这些基因名,就把GO库的相应信息提取出来,如果GO库里没有相应的基因名,就直接为空就可以(比如说BGIBMGA012345-PA)!

BGIBMGA006942-PA                
BGIBMGA012123-PA                        
BGIBMGA001976-PA                        
BGIBMGA010922-PA          
BGIBMGA009945-PA         
BGIBMGA012345-PA


提取的GO 号
BGIBMGA006942-PA        GO:0003676        GO:0005622        GO:0008270                       
BGIBMGA012123-PA        GO:0003824        GO:0008152                               
BGIBMGA001976-PA        GO:0018149                                       
BGIBMGA010922-PA        GO:0016021                                       
BGIBMGA009945-PA        GO:0003676        GO:0005622        GO:0008270        GO:0005524        GO:0016887       
BGIBMGA012345-PA
作者: aids260    时间: 2011-05-08 21:13
顶一个!
作者: aids260    时间: 2011-05-08 21:15
求高手速来围观啊
作者: zhlong8    时间: 2011-05-08 21:53
你这个 GO 库 文件有多大啊,不是很大的话用个 hash 就行了。悬赏太不给力了,好歹弄个两位数啊
作者: chenhao392    时间: 2011-05-09 08:37
回复 4# zhlong8


    同意...楼主老让别人给楼主打工,别人也要工作啊...
作者: leigh111    时间: 2011-05-09 09:34
open (FH,'gene.txt') || die "$!";
open (IN,'go.txt') || die "$!";
my %seq;
while (<FH>) {
     chomp;
     if (/^BGIBMGA\d+\-PA/) {
        $seq{$&} = $_;
     }
}
close FH;

while (<IN>) {
   chomp;
   if (exists $seq{$_}) {
       print "$seq{$_}\n";
   }
   else {
       print "$_\n";
   }
}
close IN;
作者: kingwmj    时间: 2011-05-09 10:05
回复  zhlong8


    同意...楼主老让别人给楼主打工,别人也要工作啊...
chenhao392 发表于 2011-05-09 08:37



    同意。楼主应该自己先写一个程序,哪怕是错误一大堆呢。然后别人给你改一下。这样你自己也有提高,别人的帮助也有价值。现在你是求现成的程序,处理完了就不用了,你自己没有任何提高。别人的帮助也没有什么价值。
我知道你很忙,可时间总是能挤出来的。
其实你求的程序对于我来说可能有点难,但是对于版上的众多高手来说根本不算什么。他们不愿帮你的原因可能也在这里。
作者: lynncate    时间: 2011-05-09 10:08
我自己乱写的,呵呵,看看可以不?里面那个GO是你的那个文本文件。

#!/usr/bin/perl
use strict;
use warnings;
use 5.010;

say "Enter you GO's name here: ";
chomp(my $go_name = <STDIN>;
my $file = "/root/perl/GO";
my @temp;
my %ghash;
open(GO,"<","$file" || die "Can't open target files!\n";
while (<GO> {
         @temp = split(" ",$_);
         print if /\b$go_name\b/;

}




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2