[Bioperl-l] different label colours

Horvath Tamas hota.fin at freemail.hu
Fri Apr 29 11:56:01 EDT 2005


Crabtree, Jonathan wrote:

>Hota-
>
>Here's your problem; there are a number of places in your code where
>you're doing something that looks like this-
>
> $features = new Bio::SeqFeature::Generic (-display_name => $label);
> foreach $exon (@mudr_exons) {
>   $subfeature = new Bio::SeqFeature::Generic( ...,
>                                                -primary =>
>'zn_finger_exon',
>                                               ...);
>   $features->add_sub_SeqFeature($subfeature, 'EXPAND');
>   ...
> }
>
>The problem with this is that your "parent" feature ($features) has no
>primary_tag.  By default, however, Bioperl will only call the fontcolor
>subroutine on the *parent* feature, not the child features (i.e., the
>exons, which *do* have valid primary tags.)  Here are a couple of ways
>that you can fix this:
>
>1. Assign each parent feature a valid primary tag when you create it.
>For example:
>   $features = new Bio::SeqFeature::Generic (-display_name => $label,
>                                             -primary =>
>'zn_finger_exon');
>2. Use the -all_callbacks option (see the documentation for
>Bio::Graphics::Panel).
>
>Using option 1. requires that you pick a single color for each parent
>feature, whereas option 2. will let you assign each exon its own color
>and/or label.  Using all_callbacks does complicate things, however, so I
>wouldn't option 2 unless you really want to assign each child
>feature/exon its own label and/or color.
>
>Jonathan
>
>  
>
There are some "interesting" things though. e.g. then is shouldn't know
which is my 'last_exon' feature in the -strand_arrow option. If I
understand you correctly, basically none of the colorings and other
stuff should work, since none of my parent features has valid -primary
tag... but actually everything else works fine... except the connector,
but that's another story...

>  
>
>>-----Original Message-----
>>From: Horvath Tamas [mailto:hota.fin at freemail.hu] 
>>Sent: Friday, April 29, 2005 11:07 AM
>>To: Crabtree, Jonathan
>>Cc: Bioperl
>>Subject: Re: [Bioperl-l] different label colours
>>
>>
>>Crabtree, Jonathan wrote:
>>
>>    
>>
>>>Hota-
>>>
>>>That's interesting.  I suspect that the problem is actually 
>>>      
>>>
>>not in your 
>>    
>>
>>>-fontcolor subroutine, but somewhere else in your script.  
>>>      
>>>
>>Can you show 
>>    
>>
>>>us the rest of the code?  Either your labeled features 
>>>      
>>>
>>aren't getting 
>>    
>>
>>>assigned a primary_tag correctly, or perhaps the primary_tag 
>>>      
>>>
>>value is 
>>    
>>
>>>being erased somehow.  For example, maybe one of your other 
>>>      
>>>
>>subroutines 
>>    
>>
>>>is accidentally invoking primary_tag as a setter, not a getter, as in
>>>$feature->primary_tag('') or $feature->primary_tag(undef)
>>>
>>>Jonathan
>>>
>>> 
>>>
>>>      
>>>
>>>>-----Original Message-----
>>>>From: Horvath Tamas [mailto:hota.fin at freemail.hu]
>>>>Sent: Friday, April 29, 2005 10:33 AM
>>>>To: Crabtree, Jonathan
>>>>Cc: Bioperl
>>>>Subject: Re: [Bioperl-l] different label colours
>>>>
>>>>
>>>>Crabtree, Jonathan wrote:
>>>>
>>>>   
>>>>
>>>>        
>>>>
>>>>>Hi Hota-
>>>>>
>>>>>This should work.  Why don't you try inserting the 
>>>>>          
>>>>>
>>following line in
>>    
>>
>>>>>your anonymous sub (after "my $feature = shift;") and then 
>>>>>     
>>>>>
>>>>>          
>>>>>
>>>>tell us what
>>>>   
>>>>
>>>>        
>>>>
>>>>>(if anything) shows up on STDERR when you run your script:
>>>>>
>>>>>print STDERR "tag='", $feature->primary_tag, "'\n";
>>>>>
>>>>>Jonathan
>>>>>
>>>>>
>>>>>
>>>>>     
>>>>>
>>>>>          
>>>>>
>>>>>>-----Original Message-----
>>>>>>From: bioperl-l-bounces at portal.open-bio.org
>>>>>>[mailto:bioperl-l-bounces at portal.open-bio.org] On Behalf Of
>>>>>>Horvath Tamas
>>>>>>Sent: Thursday, April 28, 2005 8:25 AM
>>>>>>To: Bioperl
>>>>>>Subject: [Bioperl-l] different label colours
>>>>>>
>>>>>>
>>>>>>I'm trying to use different label colours in one single 
>>>>>>            
>>>>>>
>>track, but 
>>    
>>
>>>>>>the
>>>>>>'sub {}' does not work for the '-fontcolor' option. Is there 
>>>>>>a solution? 
>>>>>>If not yet, where should I look over the code, to implement it?
>>>>>>
>>>>>>Hota
>>>>>>
>>>>>>PS.:
>>>>>>
>>>>>>-fontcolor => sub { my $feature = shift;
>>>>>>                                       return 'red' if 
>>>>>>$feature->primary_tag =~ /mudr/i;
>>>>>>                                       return 'blue' if
>>>>>>$feature->primary_tag =~ /zn_finger/i;
>>>>>>                                       return 'orange' if 
>>>>>>$feature->primary_tag =~ /repeat/i;
>>>>>>                                       return 'green' if 
>>>>>>$feature->primary_tag eq 'exon';
>>>>>>                                  },
>>>>>>this is how it looks like, but the label color is 
>>>>>>       
>>>>>>
>>>>>>            
>>>>>>
>>>>consistently black
>>>>   
>>>>
>>>>        
>>>>
>>>>>>(though if I explicitly use -fontcolor => 'green' then 
>>>>>>            
>>>>>>
>>the label is
>>    
>>
>>>>>>green indeed)
>>>>>>_______________________________________________
>>>>>>Bioperl-l mailing list
>>>>>>Bioperl-l at portal.open-bio.org 
>>>>>>http://portal.open-> bio.org/mailman/listinfo/bioperl-l
>>>>>>
>>>>>>  
>>>>>>
>>>>>>       
>>>>>>
>>>>>>            
>>>>>>
>>>>>_______________________________________________
>>>>>Bioperl-l mailing list
>>>>>Bioperl-l at portal.open-bio.org
>>>>>http://portal.open-bio.org/mailman/listinfo/bioperl-l
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>     
>>>>>
>>>>>          
>>>>>
>>>>Sorry, it's pretty messed up, but anyway, it looks like: (at
>>>>font color, 
>>>>it is always '')
>>>>
>>>>tag_at_glyph='mudr_exon'
>>>>tag_at_glyph='mudr_exon'
>>>>tag_at_glyph=''
>>>>tag_at_glyph='zn_finger_exon'
>>>>tag_at_glyph='zn_finger_exon'tag_at_connector='
>>>>'
>>>>tag_at_connector=''
>>>>tag_at_connector='repeat_L'
>>>>tag_at_strand_arrow='repeat_L'
>>>>tag_at_bgcolor='repeat_L'
>>>>tag_at_connector='repeat_R'
>>>>tag_at_strand_arrow='repeat_R'
>>>>tag_at_bgcolor='repeat_R'
>>>>tag_at_fontcolor=''
>>>>tag_at_connector=''
>>>>tag_at_connector=''
>>>>tag_at_connector=''
>>>>tag_at_connector='exon'
>>>>tag_at_strand_arrow='exon'
>>>>tag_at_bgcolor='exon'
>>>>tag_at_connector='exon'
>>>>tag_at_strand_arrow='exon'
>>>>tag_at_bgcolor='exon'
>>>>tag_at_connector='last_exon'
>>>>tag_at_strand_arrow='last_exon'
>>>>tag_at_bgcolor='last_exon'
>>>>tag_at_fontcolor=''
>>>>tag_at_connector=''
>>>>tag_at_connector='mudr_exon'
>>>>tag_at_strand_arrow='mudr_exon'
>>>>tag_at_bgcolor='mudr_exon'
>>>>tag_at_connector='mudr_exon'
>>>>tag_at_strand_arrow='mudr_exon'
>>>>tag_at_bgcolor='mudr_exon'
>>>>tag_at_fontcolor=''
>>>>tag_at_connector=''
>>>>tag_at_connector='zn_finger_exon' 
>>>>        
>>>>
>>tag_at_strand_arrow='zn_finger_exon'
>>    
>>
>>>>tag_at_bgcolor='zn_finger_exon' 
>>>>tag_at_connector='zn_finger_exon' 
>>>>        
>>>>
>>tag_at_strand_arrow='zn_finger_exon'
>>    
>>
>>>>tag_at_bgcolor='zn_finger_exon'
>>>>tag_at_fontcolor=''
>>>>tag_at_connector=''
>>>>tag_at_connector=''
>>>>tag_at_connector='repeat_L'
>>>>tag_at_strand_arrow='repeat_L'
>>>>tag_at_bgcolor='repeat_L'
>>>>tag_at_connector='repeat_R'
>>>>tag_at_strand_arrow='repeat_R'
>>>>tag_at_bgcolor='repeat_R'
>>>>tag_at_fontcolor=''
>>>>tag_at_connector=''
>>>>tag_at_connector=''
>>>>tag_at_connector=''
>>>>tag_at_connector='exon'
>>>>tag_at_strand_arrow='exon'
>>>>tag_at_bgcolor='exon'
>>>>tag_at_connector='exon'
>>>>tag_at_strand_arrow='exon'
>>>>tag_at_bgcolor='exon'
>>>>tag_at_connector='last_exon'
>>>>tag_at_strand_arrow='last_exon'
>>>>tag_at_bgcolor='last_exon'
>>>>tag_at_fontcolor=''
>>>>tag_at_connector=''
>>>>tag_at_connector='mudr_exon'
>>>>tag_at_strand_arrow='mudr_exon'
>>>>tag_at_bgcolor='mudr_exon'
>>>>tag_at_connector='mudr_exon'
>>>>tag_at_strand_arrow='mudr_exon'
>>>>tag_at_bgcolor='mudr_exon'
>>>>tag_at_fontcolor=''
>>>>tag_at_connector=''
>>>>tag_at_connector='zn_finger_exon' 
>>>>        
>>>>
>>tag_at_strand_arrow='zn_finger_exon'
>>    
>>
>>>>tag_at_bgcolor='zn_finger_exon' 
>>>>tag_at_connector='zn_finger_exon' 
>>>>        
>>>>
>>tag_at_strand_arrow='zn_finger_exon'
>>    
>>
>>>>tag_at_bgcolor='zn_finger_exon'
>>>>tag_at_fontcolor=''
>>>>tag_at_connector=''
>>>>tag_at_connector=''
>>>>tag_at_connector='repeat_L'
>>>>tag_at_strand_arrow='repeat_L'
>>>>tag_at_bgcolor='repeat_L'
>>>>tag_at_connector='repeat_R'
>>>>tag_at_strand_arrow='repeat_R'
>>>>tag_at_bgcolor='repeat_R'
>>>>tag_at_fontcolor=''
>>>>tag_at_connector=''
>>>>tag_at_connector=''
>>>>tag_at_connector=''
>>>>tag_at_connector=''
>>>>tag_at_connector='exon'
>>>>tag_at_strand_arrow='exon'
>>>>tag_at_bgcolor='exon'
>>>>tag_at_connector='exon'
>>>>tag_at_strand_arrow='exon'
>>>>tag_at_bgcolor='exon'
>>>>tag_at_connector='exon'
>>>>tag_at_strand_arrow='exon'
>>>>tag_at_bgcolor='exon'
>>>>tag_at_connector='last_exon'
>>>>tag_at_strand_arrow='last_exon'
>>>>tag_at_bgcolor='last_exon'
>>>>tag_at_fontcolor=''
>>>>tag_at_connector=''
>>>>tag_at_connector='mudr_exon'
>>>>tag_at_strand_arrow='mudr_exon'
>>>>tag_at_bgcolor='mudr_exon'
>>>>tag_at_connector='mudr_exon'
>>>>tag_at_strand_arrow='mudr_exon'
>>>>tag_at_bgcolor='mudr_exon'
>>>>tag_at_fontcolor=''
>>>>tag_at_connector=''
>>>>tag_at_connector='zn_finger_exon' 
>>>>        
>>>>
>>tag_at_strand_arrow='zn_finger_exon'
>>    
>>
>>>>tag_at_bgcolor='zn_finger_exon' 
>>>>tag_at_connector='zn_finger_exon' 
>>>>        
>>>>
>>tag_at_strand_arrow='zn_finger_exon'
>>    
>>
>>>>tag_at_bgcolor='zn_finger_exon'
>>>>tag_at_fontcolor=''
>>>>tag_at_connector=''
>>>>tag_at_connector=''
>>>>tag_at_connector='repeat_L'
>>>>tag_at_strand_arrow='repeat_L'
>>>>tag_at_bgcolor='repeat_L'
>>>>tag_at_connector='repeat_R'
>>>>tag_at_strand_arrow='repeat_R'
>>>>tag_at_bgcolor='repeat_R'
>>>>tag_at_fontcolor=''
>>>>tag_at_connector=''
>>>>tag_at_connector=''
>>>>tag_at_connector=''
>>>>tag_at_connector=''
>>>>tag_at_connector='exon'
>>>>tag_at_strand_arrow='exon'
>>>>tag_at_bgcolor='exon'
>>>>tag_at_connector='exon'
>>>>tag_at_strand_arrow='exon'
>>>>tag_at_bgcolor='exon'
>>>>tag_at_connector='exon'
>>>>tag_at_strand_arrow='exon'
>>>>tag_at_bgcolor='exon'
>>>>tag_at_connector='last_exon'
>>>>tag_at_strand_arrow='last_exon'
>>>>tag_at_bgcolor='last_exon'
>>>>tag_at_fontcolor=''
>>>>tag_at_connector=''
>>>>tag_at_connector='mudr_exon'
>>>>tag_at_strand_arrow='mudr_exon'
>>>>tag_at_bgcolor='mudr_exon'
>>>>tag_at_connector='mudr_exon'
>>>>tag_at_strand_arrow='mudr_exon'
>>>>tag_at_bgcolor='mudr_exon'
>>>>tag_at_fontcolor=''
>>>>tag_at_connector=''
>>>>tag_at_connector='zn_finger_exon' 
>>>>        
>>>>
>>tag_at_strand_arrow='zn_finger_exon'
>>    
>>
>>>>tag_at_bgcolor='zn_finger_exon' 
>>>>tag_at_connector='zn_finger_exon' 
>>>>        
>>>>
>>tag_at_strand_arrow='zn_finger_exon'
>>    
>>
>>>>tag_at_bgcolor='zn_finger_exon'
>>>>tag_at_fontcolor=''
>>>>tag_at_connector=''
>>>>tag_at_connector=''
>>>>tag_at_connector='repeat_L'
>>>>tag_at_strand_arrow='repeat_L'
>>>>tag_at_bgcolor='repeat_L'
>>>>tag_at_connector='repeat_R'
>>>>tag_at_strand_arrow='repeat_R'
>>>>tag_at_bgcolor='repeat_R'
>>>>tag_at_fontcolor=''
>>>>tag_at_connector=''
>>>>tag_at_connector=''
>>>>tag_at_connector=''
>>>>tag_at_connector=''
>>>>tag_at_connector='exon'
>>>>tag_at_strand_arrow='exon'
>>>>tag_at_bgcolor='exon'
>>>>tag_at_connector='exon'
>>>>tag_at_strand_arrow='exon'
>>>>tag_at_bgcolor='exon'
>>>>tag_at_connector='exon'
>>>>tag_at_strand_arrow='exon'
>>>>tag_at_bgcolor='exon'
>>>>tag_at_connector='last_exon'
>>>>tag_at_strand_arrow='last_exon'
>>>>tag_at_bgcolor='last_exon'
>>>>tag_at_fontcolor=''
>>>>tag_at_connector=''
>>>>tag_at_connector='mudr_exon'
>>>>tag_at_strand_arrow='mudr_exon'
>>>>tag_at_bgcolor='mudr_exon'
>>>>tag_at_connector='mudr_exon'
>>>>tag_at_strand_arrow='mudr_exon'
>>>>tag_at_bgcolor='mudr_exon'
>>>>tag_at_fontcolor=''
>>>>tag_at_connector=''
>>>>tag_at_connector='zn_finger_exon' 
>>>>        
>>>>
>>tag_at_strand_arrow='zn_finger_exon'
>>    
>>
>>>>tag_at_bgcolor='zn_finger_exon' 
>>>>tag_at_connector='zn_finger_exon' 
>>>>        
>>>>
>>tag_at_strand_arrow='zn_finger_exon'
>>    
>>
>>>>tag_at_bgcolor='zn_finger_exon'
>>>>tag_at_fontcolor=''
>>>>tag_at_connector=''
>>>>tag_at_connector=''
>>>>tag_at_connector='repeat_L'
>>>>tag_at_strand_arrow='repeat_L'
>>>>tag_at_bgcolor='repeat_L'
>>>>tag_at_connector='repeat_R'
>>>>tag_at_strand_arrow='repeat_R'
>>>>tag_at_bgcolor='repeat_R'
>>>>tag_at_fontcolor=''
>>>>tag_at_connector=''
>>>>tag_at_connector=''
>>>>tag_at_connector=''
>>>>tag_at_connector=''
>>>>tag_at_connector=''
>>>>tag_at_connector=''
>>>>tag_at_connector=''
>>>>tag_at_connector=''
>>>>tag_at_connector=''
>>>>tag_at_connector=''
>>>>tag_at_connector='exon'
>>>>tag_at_strand_arrow='exon'
>>>>tag_at_bgcolor='exon'
>>>>tag_at_connector='exon'
>>>>tag_at_strand_arrow='exon'
>>>>tag_at_bgcolor='exon'
>>>>tag_at_connector='exon'
>>>>tag_at_strand_arrow='exon'
>>>>tag_at_bgcolor='exon'
>>>>tag_at_connector='exon'
>>>>tag_at_strand_arrow='exon'
>>>>tag_at_bgcolor='exon'
>>>>tag_at_connector='exon'
>>>>tag_at_strand_arrow='exon'
>>>>tag_at_bgcolor='exon'
>>>>tag_at_connector='exon'
>>>>tag_at_strand_arrow='exon'
>>>>tag_at_bgcolor='exon'
>>>>tag_at_connector='exon'
>>>>tag_at_strand_arrow='exon'
>>>>tag_at_bgcolor='exon'
>>>>tag_at_connector='exon'
>>>>tag_at_strand_arrow='exon'
>>>>tag_at_bgcolor='exon'
>>>>tag_at_connector='exon'
>>>>tag_at_strand_arrow='exon'
>>>>tag_at_bgcolor='exon'
>>>>tag_at_connector='last_exon'
>>>>tag_at_strand_arrow='last_exon'
>>>>tag_at_bgcolor='last_exon'
>>>>tag_at_fontcolor=''
>>>>tag_at_connector=''
>>>>tag_at_connector='mudr_exon'
>>>>tag_at_strand_arrow='mudr_exon'
>>>>tag_at_bgcolor='mudr_exon'
>>>>tag_at_connector='mudr_exon'
>>>>tag_at_strand_arrow='mudr_exon'
>>>>tag_at_bgcolor='mudr_exon'
>>>>tag_at_fontcolor=''
>>>>tag_at_connector=''
>>>>tag_at_connector='zn_finger_exon' 
>>>>        
>>>>
>>tag_at_strand_arrow='zn_finger_exon'
>>    
>>
>>>>tag_at_bgcolor='zn_finger_exon' 
>>>>tag_at_connector='zn_finger_exon' 
>>>>        
>>>>
>>tag_at_strand_arrow='zn_finger_exon'
>>    
>>
>>>>tag_at_bgcolor='zn_finger_exon'
>>>>tag_at_fontcolor=''
>>>>
>>>>
>>>>   
>>>>
>>>>        
>>>>
>>> 
>>>
>>>      
>>>
>>Here's the cycle that u may need (the code is nod that clean, 
>>but... ):
>>
>>foreach my $record (@$pretty) {
>>     my $features;
>>     next unless $record->{R_TIR_START}; #this is only true if the 
>>record is valid
>> 
>>     my $track = $panel->add_track(
>>           -glyph  => sub { my $feature = shift;
>>                                         print STDERR 
>>"tag_at_glyph='", 
>>$feature->primary_tag, "'\n";
>>                                         if ($feature->primary_tag =~ 
>>/mudr/i || $feature->primary_tag =~ /zn_finger/i)
>>                                         { return 'generic'} else { 
>>return 'segments';}
>>                                    },
>>                   -bgcolor =>  sub { my $feature = shift;
>>                                         print STDERR 
>>"tag_at_bgcolor='", $feature->primary_tag, "'\n";
>>                                         if ($feature->primary_tag =~ 
>>/exon/) {
>>                                             if 
>>($feature->primary_tag 
>>=~ /mudr/) {return 'red';}
>>                                             elsif 
>>($feature->primary_tag =~ /zn_finger/i) {return 'blue';}
>>                                             else {return 'green';};
>>                                            }
>>                                         else {return 'orange';}
>>                                    },
>>                  -fgcolor => 'black',
>>                  -connector => sub { my $feature = shift;
>>                                         print STDERR 
>>"tag_at_connector='", $feature->primary_tag, "'\n";
>>                                         
>>$feature->primary_tag =~ /exon/
>>                                         ? return 'hat' : 
>>return 'dashed';
>>                                           
>>                                    },
>>                  -height => 15,
>>                  -bump => 0,
>>           -label  => 1,
>>                  -orient => sub    { my $feature = shift;
>>                                         print STDERR 
>>"tag_at_orient='", 
>>$feature->primary_tag, "'\n";
>>                                         
>>$feature->primary_tag eq 'repeat_L'
>>                                         ? 'E' : 'W';
>>                                    },
>>                  -fontcolor => sub { my $feature = shift;
>>                                         print STDERR 
>>"tag_at_fontcolor='", $feature->primary_tag, "'\n";
>>                                         return 'red' if 
>>$feature->primary_tag =~ /mudr/i;
>>                                         return 'blue' if 
>>$feature->primary_tag =~ /zn_finger/i;
>>                                         return 'orange' if 
>>$feature->primary_tag =~ /repeat/i;
>>                                         return 'green' if 
>>$feature->primary_tag eq 'exon';
>>                                    },
>>                  -font2color => 'green',
>>                  -point => 0,
>>                  -strand_arrow => sub  { my $feature = shift;
>>                                            print STDERR 
>>"tag_at_strand_arrow='", $feature->primary_tag, "'\n";
>>                                            if 
>>($feature->primary_tag eq 
>>'last_exon' or $feature->primary_tag =~ /repeat/i)
>>                                            {return 1;} else 
>>{return 0};
>>                                        },
>>                  -description => sub {
>>                                   my $feature = shift;
>>                                   return unless 
>>$feature->has_tag('description');
>>                                   my ($description) = 
>>$feature->each_tag_value('description');
>>                                   return $description;
>>                                  }
>>          );
>>     print '.';
>>   
>>    $features =  new Bio::SeqFeature::Generic  (-display_name => ' ');
>>    $subfeature = new Bio::SeqFeature::Generic(-start   => 
>>$record->{L_TIR_START},
>>                                       -end     => 
>>$record->{L_TIR_END},
>>                                       -primary => 'repeat_L',
>>                                       -source  => 'internal',
>>                                       -strand => 1);
>>    $features->add_sub_SeqFeature( $subfeature , 'EXPAND');
>>    $subfeature = new Bio::SeqFeature::Generic(-start   => 
>>$record->{R_TIR_START},
>>                                       -end     => 
>>$record->{R_TIR_END},
>>                                       -primary => 'repeat_R',
>>                                       -source  => 'internal',
>>                                       -strand => -1,);
>>     $features->add_sub_SeqFeature( $subfeature , 'EXPAND');
>>    
>>     $track->add_feature($features);
>>     undef $features;
>>    my $description = $record->{SEQ_ID};
>>    my @starts = ();
>>    my @startx = ();
>>    my $lastend = 1;
>>    my $s = $record->{L_TIR_START}; my $e = 
>>$record->{R_TIR_END}; my $l 
>>= $record->{L_TIR_END} - $record->{L_TIR_START};
>>    my $ps = ${$record->{EXON_LIST}->[0]->{START}};
>>    my $pe = 
>>${$record->{EXON_LIST}->[$#{$record->{EXON_LIST}}]->{START}};
>>    my $sc = $record->{SCORE};
>>   
>>    $description .= ", GW score: $sc, sequence $s - $e, TIR app.: $l, 
>>prot.: $ps - $pe ";
>>    
>>     $features = new Bio::SeqFeature::Generic  (-display_name => ' ',
>>                                                -tag     => {
>>                                                              
>>description => $description
>>                                                             }
>>                                                );
>>     my @exonlist = @{$record->{EXON_LIST}};
>>     my $last_exon = pop @{$record->{EXON_LIST}};
>>     my @prot = ();
>>     my $pps = 0;
>>     my $ppe = 0;
>>     my $xs = 1;
>>     my $xe = 1;
>>    
>>     foreach $exon (@{$record->{EXON_LIST}}) {
>>         my $start = ${$exon->{START}};
>>         push @startx , $start;
>>         $start -= $lastend;
>>         push @starts , $start;
>>         $lastend = ${$exon->{END}};
>>        
>>         $pps =  ${$exon->{START}}; $ppe = ${$exon->{END}};
>>         $xs = $xe;
>>         $xe = $xs + int( ($ppe - $pps)/3);
>>         push(@prot , "$xs - $xe");
>>        
>>        
>>         $subfeature = new Bio::SeqFeature::Generic  (-start   => 
>>${$exon->{START}},
>>                                                         -end     => 
>>${$exon->{END}},
>>                                                         
>>-primary => 'exon',
>>                                                         -source  => 
>>'internal',
>>                                                         -strand => 1,
>>                                                        );
>>         $features->add_sub_SeqFeature($subfeature,'EXPAND');
>>         my $s = ${$exon->{START}};my $e = 
>>${$exon->{END}};print"$s - $e..";
>>        }
>>     $subfeature = new Bio::SeqFeature::Generic  (-start   => 
>>${$last_exon->{START}},
>>                                                         -end     => 
>>${$last_exon->{END}},
>>                                                         -primary => 
>>'last_exon',
>>                                                         -source  => 
>>'internal',
>>                                                         -strand => 1,
>>                                                        );
>>         $pps =  ${$last_exon->{START}}; $ppe = ${$last_exon->{END}};
>>         $xs = $xe;
>>         $xe = $xs + int( ($ppe - $pps)/3);
>>         push(@prot , "$xs - $xe");
>>        
>>         my $protstat = join ( ".." , @prot);
>>         print "\n$protstat\n";
>>         $features->add_sub_SeqFeature($subfeature,'EXPAND');
>>           
>>      print "\n";
>>      $track->add_feature($features);
>>      undef $features;
>>      my $ms = $record->{DOMAINS}->{MUDR}->{START};
>>      my $me = $record->{DOMAINS}->{MUDR}->{END};
>>      print "!$ms !$me\n";
>>      my @mudr_exons = @{&calc_domain_exons($ms,$me,\@exonlist)};
>>      print 1;
>>     
>>      my $label = "MuDR:$ms - $me";
>>     
>>      $features = new Bio::SeqFeature::Generic  
>>(-display_name => $label);
>>     
>>     foreach $exon (@mudr_exons) {
>>         $subfeature = new Bio::SeqFeature::Generic  (-start   => 
>>$exon->{START},
>>                                                         -end     => 
>>$exon->{END},
>>                                                         -primary => 
>>'mudr_exon',
>>                                                         -source  => 
>>'internal',
>>                                                         -strand => 1,
>>                                                        );
>>         $features->add_sub_SeqFeature($subfeature,'EXPAND');
>>         my $s = $exon->{START};my $e = 
>>$exon->{END};print"M$s - $e..";
>>        }
>>         $features->add_sub_SeqFeature($subfeature,'EXPAND');
>>           
>>      print "\n";
>>      $track->add_feature($features);
>>     undef $features;
>>     
>>      $ms = 0;
>>      $ms = 0;
>>     
>>      $ms = $record->{DOMAINS}->{Zn_finger}->{START};
>>      $me = $record->{DOMAINS}->{Zn_finger}->{END};
>>      print "!$ms !$me\n";
>>      @mudr_exons = @{&calc_domain_exons($ms,$me,\@exonlist)};
>>      print 1;
>>     
>>      $label = "Zn:$ms - $me";
>>     
>>      $features = new Bio::SeqFeature::Generic  
>>(-display_name => $label);
>>     
>>     foreach $exon (@mudr_exons) {
>>         $subfeature = new Bio::SeqFeature::Generic  (-start   => 
>>$exon->{START},
>>                                                         -end     => 
>>$exon->{END},
>>                                                         -primary => 
>>'zn_finger_exon',
>>                                                         -source  => 
>>'internal',
>>                                                         -strand => 1,
>>                                                        );
>>         $features->add_sub_SeqFeature($subfeature,'EXPAND');
>>         my $s = $exon->{START};my $e = 
>>$exon->{END};print"Z$s - $e..";
>>        }
>>         $features->add_sub_SeqFeature($subfeature,'EXPAND');
>>           
>>      print "\n";
>>      $track->add_feature($features) if $ms;
>>     undef $features;
>>    
>>    
>>    }
>>
>>    
>>
>
>
>  
>




More information about the Bioperl-l mailing list