[Gmod-help] Re: [Gmod-gbrowse] arguments to call back functions in GBrowse2
Daniel Lang
daniel.lang at biologie.uni-freiburg.de
Mon Dec 14 04:06:45 EST 2009
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi Dave,
did I do something wrong that I don't get an answer?
Best regards,
Daniel
Dave Clements, GMOD Help Desk wrote:
> Hi Daniel,
>
> I don't know why the code below would be causing memory problems
> (unless the top "parent" feature points to itself?). However, I did
> find the earlier email exchange with Lincoln. From May 29, 2009:
> -----------------
> Hi,
>
> This issue has come up again recently and I am posting a fix that is
> better than the one suggested in the original email thread.
>
> Callbacks actually take five arguments, although most people ignore
> all but the first. The fifth argument is the glyph, and you can get
> the parent feature from that. Here's the code:
>
> bgcolor = sub {
> my ($feature, $option_name, $part_no, $total_parts, $glyph) = @_;
> my $parent_feature = $glyph->parent_feature;
> # do something on the parent feature
> }
>
> You can pass arguments to $glyph->parent_feature() to get the
> grandparent, great-grandparent, etc.
>
> Lincoln
> ---------------------
> However, you mentioned that you are only getting the first 3 arguments.
>
> Does anyone know if there is something special about callbacks in a
> popup balloon context, where they would only pass 3 arguments?
>
> Thanks,
>
> Dave C.
>
> On Mon, Nov 23, 2009 at 3:42 AM, Daniel Lang
> <daniel.lang at biologie.uni-freiburg.de> wrote:
>> Hi,
>>
>> I am running gbrowse2 on Bio::DB::SeqFeature database and am experiencing problems with callback functions. I need to access the parent object of the current object easily.
>>
>> Currently I am using the following approach:
>> if ($feature->get_tag_values('parent_id')) {
>> my $store = $parent->object_store;
>> if ($store and $store->can_store_parentage) {
>> do {
>> my @p = $parent->get_tag_values('parent_id') if $parent;
>> if (@p) {
>> $parent = @{[grep {$_ and $_->seq_id eq $parent->seq_id and ${[$_->get_tag_values("load_id")]}[0] eq $p[0]} $store->get_features_by_alias($p[0])]}[0];
>> }
>> else { last; }
>> }
>> until ($parent and ($parent->name));
>> }
>> ...
>>
>> This is from a callback function for "balloon click". I have tried both only one process or gbrowse_slaves, the result is the same.
>> Sometimes (?) this code seems to cause a memory problems.
>> The memory of the apache or slave process increases as if they were stuck in an infinite loop.
>>
>> So I am looking for ways to avoid the above procedure, by finding a more direct way to access the parent feature.
>>
>> Following the suggestion of a mail thread on this topic on the bioperl mailinglist between Lincoln/myself I
>> expected 5 arguments, but I am getting only three: $feature,$panel,$track.
>>
>> I cannot find the original mail anymore, but if I remember correctly Lincoln mentioned that he had added a parent accessor routine
>> to the glyph and that I could access the glyph from the callback's 5 arguments...
>>
>> In principle, I am using the latest releases/checkouts.
>> Which modules do I need to look at/update for this functionality?
>>
>> Furthermore, is there a possibility to share global variables between
>> gbrowse2 and slaves? Should this work via init_code?
>> Should modules initialized in a conf be in the scope of a slave?
>>
>> If not can I introduce modules via the slave config files, or do I need
>> to alter the slave scripts?
>>
>> Daniel
>>
>>
>>
>>
>> ------------------------------------------------------------------------------
>> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
>> trial. Simplify your report design, integration and deployment - and focus on
>> what you do best, core application coding. Discover what's new with
>> Crystal Reports now. http://p.sf.net/sfu/bobj-july
>> _______________________________________________
>> Gmod-gbrowse mailing list
>> Gmod-gbrowse at lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/gmod-gbrowse
>>
>>
>
>
>
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iEYEARECAAYFAksmACEACgkQmJnbCpJAG3CiCACfQ7EbUDOwMmE8MrQSnNiR7Tu2
4yAAnA8jIchqE4murRLmnzgaMh5cyZZY
=/WyP
-----END PGP SIGNATURE-----
More information about the Gmod-help
mailing list