欢迎来到虫虫下载站 | 资源下载 资源专辑 关于我们
虫虫下载站

kegg.pm

批量访问kegg数据库的pm文件。类似于C语言的头文件。输入文件是ncbi的geneid
PM
字号:
#!usr/bin/perl


use strict ;
use SOAP::Lite;
use   File::Path;   
##########################################################
#convert NCBI gene-id to KEGG gene-id
#input NCBI gene-id.can be multiple or single.
#Input type:string like"ncbi-geneid:21969 ncbi-geneid:21975"
#return NCBI gene-id and corresponding KEGG gene-id
#sample ncbi-geneid:21969	mmu:21969 ...
sub ConvertID 
{    
    my $wsdl = 'http://soap.genome.jp/KEGG.wsdl';
    my $gene = $_[0];
    my $serv = SOAP::Lite -> service($wsdl);
    
    my $result = $serv -> bconv($gene);
    
    return ($result);
}

############################################################
#get_pathways_by_genes([string]:genes_id_list) 
#Search all pathways which include all the given genes.
#How to pass the list of genes_id will depend on the language specific implementations.

#Return value:
#ArrayOfstring (pathway_id)

#Example:
# Returns all pathways including E. coli genes 'b0077' and 'b0078'
#get_pathways_by_genes(['eco:b0077' , 'eco:b0078'])

sub GetPathwayByGene
{
    my $wsdl = 'http://soap.genome.jp/KEGG.wsdl';
    my @gene = @_;
    my $singlegene;
    my @Single_Gene ;

    my $serv = SOAP::Lite -> service($wsdl);
    my %result ;
    my $index = 0 ;
    my $temp_gene;
    
    foreach $singlegene (@gene)
    {
        $temp_gene = $serv -> get_pathways_by_genes(["$singlegene"]);
        $result{$singlegene} = $temp_gene ;
        $index++;
    }
    return(%result);
}

##########################################################
sub SearchKEGG
{
#specify the snp id to gene id file.
#my $InputFileName = "snp_TO_geneid.txt" ;
my $InputFileName = $_[0] ;
#my $path = $_[1].'KEGG/';
# eval{mkpath($path,0,0755)};   
#  if($@)   
#  {   
#        warn("Make   path   [$path]   failed:\n$@");   
#  }   
my $path = $_[1];
my $OutputFileName_GeneToPath = $path.'Gene_To_PathwayID.txt';
my $geneid ;
my @temp ;
my $pathway_key  ;
my $geneid_to_keggid ;
my $KeggId ;
my @KEGG_ID;
my $singleId ;
my @single_gene_pathway;
my %pathway;

######
my %pathway_of_genes ;
my @single_pathway ;
my $i;
my $j ;
my ($k,$l) ;
my $OutputFileName_PathToGene = $path.'Pathway_To_GeneID.txt';

open(MYFILE,$InputFileName )||die "can not open file $InputFileName \n" ;

#extract the NCBI gene id.
while(<MYFILE>)
{    
    @temp = split(/\t/ , $_);
    $geneid= $geneid."ncbi-geneid:".$temp[1];
    
}
$geneid_to_keggid = "ncbi-geneid:21969	eco:b0077
ncbi-geneid:21974	eco:b0078
ncbi-geneid:21975	eco:b0077
ncbi-geneid:21975	eco:b0078";

#convert the NCBI GeneID to KEGG id.
#$geneid_to_keggid  = ConvertID($geneid);

$KeggId = $geneid_to_keggid ;

#delete the prefix :ncbi-geneid:21975	,leaving only KEGG gene-id
$KeggId =~ s/ncbi-geneid:[0-9]+\s//g;

#store KEGG id in an array.
@KEGG_ID = split(/\n/,$KeggId);

#Get the pathway ID
#%pathway = GetPathwayByGene(@KEGG_ID);

$pathway{'eco:b0077'}=['path:eco00290','path:eco00650','path:eco00660','path:eco00770'];
$pathway{'eco:b0078'}=['path:eco00290','path:eco00650','path:eco00660','path:eco00770'];

open(NEWFH,">$OutputFileName_GeneToPath" )||die "can not open file $OutputFileName_GeneToPath \n" ;
foreach $pathway_key (keys %pathway)
{
    print NEWFH "$pathway_key:\t";
    foreach $singleId ($pathway{$pathway_key})
    {
        print NEWFH "@$singleId\t" ;
        
    }
    print NEWFH "\n";

}
close(NEWFH);

#######################################################
#Get the IDs of pathways which contain a special gene
for $i (0..$#KEGG_ID)
{
    @single_pathway = @{$pathway{$KEGG_ID[$i]}};
    for $k (0..$#single_pathway)
    {
        $pathway_of_genes{$single_pathway[$k]} .= $KEGG_ID[$i];
        $pathway_of_genes{$single_pathway[$k]} .= "\t";
    }

}
#Output to file.
open(NEWFH,">$OutputFileName_PathToGene" )||die "can not open file $OutputFileName_PathToGene \n" ;
foreach $j (keys %pathway_of_genes)
{
    print NEWFH "$j:\t";
    print NEWFH "$pathway_of_genes{$j}\t" ;

    print NEWFH "\n";

}
close(NEWFH);

print "\n";


}
1;


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -