[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