[Bioperl-l] Subclassing Bio::Seq ? Extending Bio::Perl

Adam Sjøgren adsj at novozymes.com
Mon Nov 6 13:03:21 UTC 2006


On Tue, 24 Oct 2006 14:57:02 -0400, Hilmar wrote:

> On Oct 24, 2006, at 1:59 PM, JK ((Jesper Agerbo Krogh)) wrote:

>>> The reason that this is a Bio::PrimarySeq and not a Bio::Seq or your
>>> extension of the latter is that the Perl garbage collector can't deal
>>> with circular references.

>> Doesn't Scalar::Util::weaken solve that?

> You're welcome to test and try. It should be a simple change in  
> Bio::Seq::add_SeqFeature(). You will see that it is this method and  
> not the feature object that makes sure the wrapped primarySeq gets  
> passed as sequence reference. Just change that to creating a new  
> reference to the sequence object and make it a weak reference before  
> passing it to the feature object.

> (The feature object has no requirement (or knowledge) that the  
> referenced sequence object is a PrimarySeq.)

I've tried implementing this approach - the only test that failed was
FootPrinter.t, which I "solved" by not weakening if the object is a
Bio::PrimarySeq.

I am not sure how fragile this approach is; any comments (patch
attached)?

[...]

> I'm not following you why this would make any difference (it would be  
> $seq->message_digest() compared to $seqCompute->message_digest 
> ($seq)), unless what you are saying is that you would like to cache  
> the result of the computation.

You would have to create, or pass around, a $seqCompute object
everywhere your $seq-object's digest was needed, which would be a bit
of a pain?


  Best regards,

    Adam

-- 
                                                          Adam Sjøgren
                                                    adsj at novozymes.com

-------------- next part --------------
A non-text attachment was scrubbed...
Name: feature_seq_weaken.patch
Type: text/x-patch
Size: 3675 bytes
Desc: not available
URL: <http://lists.open-bio.org/pipermail/bioperl-l/attachments/20061106/3dd65a9d/attachment-0004.bin>


More information about the Bioperl-l mailing list