[Bio] / FigKernelScripts / merge_gene_sets.pl Repository:
ViewVC logotype

View of /FigKernelScripts/merge_gene_sets.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (download) (as text) (annotate)
Mon Apr 19 20:22:16 2010 UTC (9 years, 7 months ago) by overbeek
Branch: MAIN
CVS Tags: mgrast_dev_08112011, mgrast_dev_08022011, rast_rel_2014_0912, myrast_rel40, mgrast_dev_05262011, mgrast_dev_04082011, rast_rel_2010_0928, mgrast_version_3_2, mgrast_dev_12152011, mgrast_dev_06072011, rast_rel_2010_0526, rast_rel_2014_0729, mgrast_dev_02212011, rast_rel_2010_1206, mgrast_release_3_0, mgrast_dev_03252011, rast_rel_2011_0119, mgrast_release_3_0_4, mgrast_release_3_0_2, mgrast_release_3_0_3, mgrast_release_3_0_1, mgrast_dev_03312011, mgrast_release_3_1_2, mgrast_release_3_1_1, mgrast_release_3_1_0, mgrast_dev_04132011, mgrast_dev_04012011, rast_rel_2010_0827, myrast_33, rast_rel_2011_0928, mgrast_dev_04052011, mgrast_dev_02222011, mgrast_dev_10262011, HEAD
code from Hope

#!/usr/bin/perl

use strict;

my (%genes_to_sets, %seen);

# input should be genesets, one per line, comma-separated, using peg ids

while (<STDIN>)
{
    chomp;
    my @genes = split ",";

    foreach my $gene (@genes)
    {
	map { $genes_to_sets{$gene}->{$_} = 1 } @genes;
    }
}

foreach my $gene (keys %genes_to_sets)
{
    next if exists $seen{$gene};
    my $set = {};
    my $genes_in_set = $genes_to_sets{$gene};
    map { &add_genes_to_set($set, $_) } keys %{$genes_in_set};
    my $list = (join ",", keys %$set);
    print $list, "\n";
}

sub add_genes_to_set
{
    my ($set, $gene) = @_;

    return if exists $seen{$gene};
    $seen{$gene} = 1;
    $set->{$gene} = 1;
    map { &add_genes_to_set($set, $_) } keys %{$genes_to_sets{$gene}};
}

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3