[Bio] / FigKernelPackages / CompareMR.pm Repository:
ViewVC logotype

Diff of /FigKernelPackages/CompareMR.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1, Sun Mar 11 20:37:54 2007 UTC revision 1.6, Thu Oct 9 18:10:31 2008 UTC
# Line 24  Line 24 
24  use Data::Dumper;  use Data::Dumper;
25    
26  use FIG;  use FIG;
 my $fig = new FIG;  
27  use FIGV;  use FIGV;
28    
29  sub compare_genomes_MR {  sub compare_genomes_MR {
30      my($arg1,$genome2) = @_;      my($arg1,$genome2, $fig_services, $genome1) = @_;
   
     my($fig_services,$genome1);  
31    
32        unless ($fig_services) {
33      if (-d "$FIG_Config::organisms/$arg1")      if (-d "$FIG_Config::organisms/$arg1")
34      {      {
35          $fig_services = $fig;            $fig_services = FIG->new();
36          $genome1      = $arg1;          $genome1      = $arg1;
37      }      }
38      else      else
39      {      {
40          if (-d $arg1)          if (-d $arg1)
41          {          {
42              my $figV = new FIGV($arg1,$fig);                my $figV = new FIGV($arg1,FIG->new());
43              $fig_services = $figV;              $fig_services = $figV;
44              if ($arg1 =~ /(\d+\.\d+)$/)              if ($arg1 =~ /(\d+\.\d+)$/)
45              {              {
# Line 57  Line 55 
55              die "Invalid first argument;  $arg1";              die "Invalid first argument;  $arg1";
56          }          }
57      }      }
58        }
59    
60      my $data1 = &data_on_subs_roles_pegs($fig_services,$genome1);      my $data1 = &data_on_subs_roles_pegs($fig_services,$genome1);
61      my $data2 = &data_on_subs_roles_pegs($fig_services,$genome2);      my $data2 = &data_on_subs_roles_pegs($fig_services,$genome2);
# Line 116  Line 115 
115      my $i2 = 0;      my $i2 = 0;
116      while ($i1 < @$dataA)      while ($i1 < @$dataA)
117      {      {
118          if    ( ($dataA->[$i1]->[0] lt $dataB->[$i2]->[0]) ||          if    ( ($i2 == @$dataB) || ($dataA->[$i1]->[0] lt $dataB->[$i2]->[0]) ||
119                 (($dataA->[$i1]->[0] eq $dataB->[$i2]->[0]) && ($dataA->[$i1]->[1] lt $dataB->[$i2]->[1])))                 (($dataA->[$i1]->[0] eq $dataB->[$i2]->[0]) && ($dataA->[$i1]->[1] lt $dataB->[$i2]->[1])))
120          {          {
121              my $currS = $dataA->[$i1]->[0];              my $currS = $dataA->[$i1]->[0];
# Line 127  Line 126 
126                  push(@$pegs1,$dataA->[$i1]->[2]);                  push(@$pegs1,$dataA->[$i1]->[2]);
127                  $i1++;                  $i1++;
128              }              }
129              push(@$in1_not2,[$currS,$currR,$pegs1]);              push(@$in1_not2,[$currS,$currR,$pegs1,[$fig_services->seqs_with_role($currR,undef,$genomeB)]]);
130          }          }
131          elsif ( ($dataA->[$i1]->[0] gt $dataB->[$i2]->[0]) ||          elsif ( ($dataA->[$i1]->[0] gt $dataB->[$i2]->[0]) ||
132                 (($dataA->[$i1]->[0] eq $dataB->[$i2]->[0]) && ($dataA->[$i1]->[1] gt $dataB->[$i2]->[1])))                 (($dataA->[$i1]->[0] eq $dataB->[$i2]->[0]) && ($dataA->[$i1]->[1] gt $dataB->[$i2]->[1])))
# Line 136  Line 135 
135          }          }
136          else          else
137          {          {
138                my $currS = $dataA->[$i1]->[0];
139                my $currR = $dataA->[$i1]->[1];
140                while (($i1 < @$dataA) && ($dataA->[$i1]->[0] eq $currS) && ($dataA->[$i1]->[1] eq $currR))
141                {
142              $i1++;              $i1++;
143                }
144    
145                while (($i2 < @$dataB) && ($dataB->[$i2]->[0] eq $currS) && ($dataB->[$i2]->[1] eq $currR))
146                {
147              $i2++;              $i2++;
148          }          }
149      }      }
150        }
151      return $in1_not2;      return $in1_not2;
152  }  }
153    
# Line 147  Line 155 
155      my($fig_services,$genome) = @_;      my($fig_services,$genome) = @_;
156    
157      my $sub_data = $fig_services->get_genome_subsystem_data($genome);      my $sub_data = $fig_services->get_genome_subsystem_data($genome);
158      return [sort { ($a->[0] cmp $b->[0]) or ($a->[1] cmp $b->[1]) or &FIG::by_fig_id($a->[2],$b->[2]) } @$sub_data];      return [sort { ($a->[0] cmp $b->[0]) or ($a->[1] cmp $b->[1]) or ($a->[3] <=> $b->[3]) } map {$_->[2] =~ /\.(\d+)$/; [@$_, $1]} @$sub_data];
159    
160        # sort by_fig_id inefficient for metagenomes with large numbers of features
161    #    return [sort { ($a->[0] cmp $b->[0]) or ($a->[1] cmp $b->[1]) or &FIG::by_fig_id($a->[2],$b->[2]) } @$sub_data];
162  }  }
163    
164  1;  1;

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.6

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3