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

Diff of /FigKernelPackages/FIG.pm

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

revision 1.418, Thu Jan 12 04:14:24 2006 UTC revision 1.419, Thu Jan 12 23:48:15 2006 UTC
# Line 13311  Line 13311 
13311    
13312      my $dbh = $self->db_handle();      my $dbh = $self->db_handle();
13313    
13314        if ( $genome !~ /^\d+\.\d+$/ )
13315        {
13316            print STDERR "SEED error: add_feature failed due to bad genome id: $genome\n";
13317            return undef;
13318        }
13319    
13320        if ( $type !~ /^[0-9A-Za-z_]+$/ )
13321        {
13322            print STDERR "SEED error: add_feature failed due to bad type: $type\n";
13323            return undef;
13324        }
13325    
13326        if ( length ( $location ) > 5000 )
13327        {
13328            print STDERR "SEED error: add_feature failed because location is over 5000 char:\n";
13329            print STDERR "$location\n";
13330            return undef;
13331        }
13332    
13333      my @loc = split( /,/, $location );      my @loc = split( /,/, $location );
13334        my @loc2 = grep { $_->[0] && $_->[1] && $_->[2] }
13335                   map  { [ $_ =~ m/^(.+)_(\d+)_(\d+)$/ ] }
13336                   @loc;
13337    
13338        if ( ! @loc2 || ( @loc != @loc2 ) )
13339        {
13340            print STDERR "SEED error: add_feature failed because location is missing or malformed:\n";
13341            print STDERR "$location\n";
13342            return undef;
13343        }
13344    
13345        if ( my @bad_names = grep { length( $_->[0] ) > 96 } @loc2 )
13346        {
13347            print STDERR "SEED error: add_feature failed because location contains a contig name of over 96 char:\n";
13348            print STDERR join( ", ", @bad_names ) . "\n";
13349            return undef;
13350        }
13351    
13352        #  We should never recreate an existing feature:
13353    
13354        my ( $contig, $beg, $end );
13355        $contig = $loc2[0]->[0];
13356        $beg    = $loc2[0]->[1];
13357        my @same_contig = grep { $_->[0] eq $contig } @loc2;
13358        $end = $same_contig[-1]->[2];
13359        if ( $beg > $end )  { ( $beg, $end ) = ( $end, $beg ) }
13360        my ( $features, undef, undef ) = $self->genes_in_region( $genome, $contig, $beg, $end );
13361    
13362        my @same_loc = grep { scalar $self->feature_location( $_ ) eq $location }    # Same location
13363                       grep { /\.$type\.\d+$/ }                                      # Same type
13364                       @$features;                                                   # Near by features
13365    
13366        if ( @same_loc )
13367        {
13368            print STDERR "SEED Note: Attempt to recreate feature $same_loc[0]\n";
13369            return $same_loc[0];
13370        }
13371    
13372      if ( ! defined $fid )      if ( ! defined $fid )
13373      {      {
13374          my %seen = {};          my %seen = {};
13375          my @checksums = map { [ $_, $self->contig_md5sum( $genome, $_ ) ] }          my @checksums = map { [ $_, $self->contig_md5sum( $genome, $_ ) ] }
13376                          grep { $_ && ( ! $seen{ $_ }++ ) }                          grep { $_ && ( ! $seen{ $_ }++ ) }
13377                          map  { m/^(\S+)_\d+_\d+$/ }                          map  { $_->[0] }
13378                          @loc;                          @loc2;
13379          $fid = $self->fid_from_clearinghouse( $genome, $type, $location, \@checksums, $translation );          $fid = $self->fid_from_clearinghouse( $genome, $type, $location, \@checksums, $translation );
13380    
13381          if ( ! $fid )          if ( ! $fid )
# Line 13329  Line 13385 
13385          }          }
13386      }      }
13387    
13388      my($contig,$beg,$end);      my ( $fidN ) = $fid =~ m/^fig\|\d+\.\d+\.[0-9A-Za-z_]+\.(\d+)$/;
13389      if ( ($loc[0] =~ /^(\S+)_(\d+)_\d+$/) && ( ($contig,$beg) = ($1,$2) ) )      if ( ! $fidN || length( $fid ) > 32 )
13390      {      {
13391          # Find the last end location on the same contig          print STDERR "SEED error: add_feature failed because the identifier is malformed or over 32 char: $fid\n";
13392          my @same_contig = grep { $_ =~ /^(\S+)_\d+_\d+$/ && ( $1 eq $contig ) } @loc;          return undef;
13393          ( $end ) = $same_contig[-1] =~ /(\d+)$/;      }
13394    
13395          if ($beg > $end)  { ($beg,$end) = ($end,$beg) }      $aliases ||= "";
         $fid =~ /(\d+)$/;  
         my $fidN = $1;  
         if ((length($location) < 5000) && (length($contig) < 96) && (length($fid) < 32) && ($fid =~ /(\d+)$/))  
         {  
             $aliases = $aliases ? $aliases : "";  
13396              my $aliasesT = $aliases;              my $aliasesT = $aliases;
13397              $aliasesT =~ s/,\s*/\t/g;              $aliasesT =~ s/,\s*/\t/g;
13398              my @aliases = split(/\t/,$aliasesT);              my @aliases = split(/\t/,$aliasesT);
13399    
13400              if ( 0 )   # GJO - Debug disabling of function =================================      if ( 1 )   # GJO - Debug
13401              {              {
13402                  print STDERR "Creating feature:\n"          print STDERR "SEED: Creating feature:\n"
13403                             . "   fid      = $fid\n"                             . "   fid      = $fid\n"
13404                             . "   fidN     = $fidN\n"                             . "   fidN     = $fidN\n"
13405                             . "   type     = $type\n"                             . "   type     = $type\n"
# Line 13384  Line 13435 
13435                      }                      }
13436                  }                  }
13437              }              }
13438    
13439              return $fid;              return $fid;
13440          }          }
     }  
     return undef;  
 }  
13441    
13442    
13443  sub fid_from_clearinghouse  sub fid_from_clearinghouse

Legend:
Removed from v.1.418  
changed lines
  Added in v.1.419

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3