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

Diff of /FigKernelScripts/load_features.pl

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

revision 1.11, Mon Aug 16 22:10:55 2004 UTC revision 1.16, Sat Feb 5 16:05:29 2005 UTC
# Line 15  Line 15 
15  # usage: load_features [G1 G2 G3 ... ]  # usage: load_features [G1 G2 G3 ... ]
16    
17  open(REL,">$temp_dir/tmpfeat$$") || die "could not open $temp_dir/tmpfeat$$";  open(REL,">$temp_dir/tmpfeat$$") || die "could not open $temp_dir/tmpfeat$$";
18  open(ALIAS,"| sort -u > $temp_dir/tmpalias$$") || die "could not open $temp_dir/tmpalias$$";  open(ALIAS,"| sort -T $temp_dir -u > $temp_dir/tmpalias$$") || die "could not open $temp_dir/tmpalias$$";
19    
20  my $dbf = $fig->{_dbf};  my $dbf = $fig->{_dbf};
21    
# Line 59  Line 59 
59      {      {
60          chop;          chop;
61          my($x,$y) = split(/\t/,$_);          my($x,$y) = split(/\t/,$_);
62          my @ids = map { $_ =~ /^([^,]+)/ } ($x,split(/;/,$y));          my @ids = map { $_ =~ /^([^,]+),(\d+)/; [$1,$2] } ($x,split(/;/,$y));
63          my @fig = ();          my @fig = ();
64          my(@nonfig) = ();          my(@nonfig) = ();
65          foreach $_ (@ids)          foreach $_ (@ids)
66          {          {
67              if ($_ =~ /^fig\|/)              if ($_->[0] =~ /^fig\|/)
68              {              {
69                  push(@fig,$_);                  push(@fig,$_);
70              }              }
# Line 74  Line 74 
74              }              }
75          }          }
76    
77          if (@fig == 1)          my $x;
78            foreach $x (@fig)
79          {          {
80              my $genome = &FIG::genome_of($fig[0]);              my($peg,$peg_ln) = @$x;
81                my $genome = &FIG::genome_of($peg);
82              foreach $_ (@nonfig)              foreach $_ (@nonfig)
83              {              {
84                  print ALIAS "$fig[0]\t$_\t$genome\n";                  if ((@fig == 1) || ($peg_ln == $_->[1]))
85                    {
86                        print ALIAS "$peg\t$_->[0]\t$genome\n";
87                        # print STDERR "$peg\t$_->[0]\t$genome\n";
88                    }
89              }              }
90          }          }
91      }      }
# Line 95  Line 101 
101      }      }
102  }  }
103    
104    my $changes = {};
105    if (open(TMP,"<$FIG_Config::global/changed.location.features"))
106    {
107        while ($_ = <TMP>)
108        {
109            if ($_ =~ /^(fig\|\d+\.\d+\.[a-zA-Z]+\.\d+)/)
110            {
111                $changes->{$1}++;
112            }
113        }
114        close(TMP);
115    }
116    
117  foreach $genome (@genomes)  foreach $genome (@genomes)
118  {  {
119      opendir(FEAT,"$organisms_dir/$genome/Features")      opendir(FEAT,"$organisms_dir/$genome/Features")
# Line 112  Line 131 
131              {              {
132                  chop;                  chop;
133                  ($id,$loc,@aliases) = split(/\t/,$_);                  ($id,$loc,@aliases) = split(/\t/,$_);
134    
135                    if ($id && ($_ = $changes->{$id}))   # check for obsolete entries due to location changes
136                    {
137                        $changes->{$id}--;
138                        next;
139                    }
140    
141                  if ($id)                  if ($id)
142                  {                  {
143                      my($minloc,$maxloc);                      my($minloc,$maxloc);
# Line 139  Line 165 
165                              if ($alias =~ /^(NP_|gi\||sp\|\tr\||kegg\||uni\|)/)                              if ($alias =~ /^(NP_|gi\||sp\|\tr\||kegg\||uni\|)/)
166                              {                              {
167    
168                                  print ALIAS "$id\t$alias\t$genome\n";                                  print ALIAS "$id\t$alias\t$genome\tOVERRIDE\n";
169                                    # print STDERR "$id\t$alias\t$genome\tOVERRIDE\n";
170                              }                              }
171                          }                          }
172                      }                      }
# Line 161  Line 188 
188  }  }
189  close(REL);  close(REL);
190  close(ALIAS);  close(ALIAS);
191    open(ALIASIN,"<$temp_dir/tmpalias$$") || die "could not open $temp_dir/tmpalias$$";
192    open(ALIASOUT,">$temp_dir/tmpalias$$.1") || die "could not open $temp_dir/tmpalias$$.1";
193    $_ = <ALIASIN>;
194    while ($_ && ($_ =~ /^(\S+)/))
195    {
196        my @aliases = ();
197        my $curr = $1;
198        while ($_ && ($_ =~ /^(\S+)\t(\S+)(\t(\S+))?/) && ($1 eq $curr))
199        {
200            push(@aliases,[$2,$3 ? 1 : 0]);
201            $_ = <ALIASIN>;
202        }
203        my $x;
204        my $genome = &FIG::genome_of($curr);
205        foreach $x (@aliases)
206        {
207            if ($x->[1])
208            {
209                print ALIASOUT "$curr\t$x->[0]\t$genome\n";
210            }
211            else
212            {
213                my $i;
214                for ($i=0; ($i < @aliases) && ((! $aliases[$i]->[1]) || (! &same_class($x->[0],$aliases[$i]->[0]))); $i++) {}
215                if ($i == @aliases)
216                {
217                    print ALIASOUT "$curr\t$x->[0]\t$genome\n";
218                }
219            }
220        }
221    }
222    close(ALIASIN);
223    close(ALIASOUT);
224    unlink("$temp_dir/tmpalias$$");
225    
226  $dbf->load_table( tbl => "features",  $dbf->load_table( tbl => "features",
227                    file => "$temp_dir/tmpfeat$$" );                    file => "$temp_dir/tmpfeat$$" );
228    
229  $dbf->load_table( tbl => "ext_alias",  $dbf->load_table( tbl => "ext_alias",
230                    file => "$temp_dir/tmpalias$$" );                    file => "$temp_dir/tmpalias$$.1" );
231    
232  if (@ARGV == 0)  if (@ARGV == 0)
233  {  {
# Line 205  Line 266 
266      $dbf->vacuum_it("features")      $dbf->vacuum_it("features")
267  }  }
268  unlink("$temp_dir/tmpfeat$$");  unlink("$temp_dir/tmpfeat$$");
269  unlink("$temp_dir/tmpalias$$");  unlink("$temp_dir/tmpalias$$.1");
270    
271    sub same_class {
272        my($x,$y) = @_;
273    
274        my $class1 = &classA($x);
275        my $class2 = &classA($y);
276        return ($class1 && ($class1 eq $class2));
277    }
278    
279    sub classA {
280        my($alias) = @_;
281    
282        if ($alias =~ /^([^\|]+)\|/)
283        {
284            return $1;
285        }
286        elsif ($alias =~ /^[NXYZA]P_[0-9\.]+$/)
287        {
288            return "refseq";
289        }
290        else
291        {
292            return "";
293        }
294    }

Legend:
Removed from v.1.11  
changed lines
  Added in v.1.16

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3