[Biopython] SeqRecords and multiprocessing
McCoy, Connor O
cmccoy at fhcrc.org
Mon Apr 25 13:14:37 EDT 2011
Hi Peter,
Thanks so much for looking into this - I wouldn't have guessed that a lower pickle version would solve the problem.
Everything works fine with the commit you specify below.
Thanks,
Connor
----- Original Message -----
From: "Peter Cock" <p.j.a.cock at googlemail.com>
To: "Connor O McCoy" <cmccoy at fhcrc.org>
Cc: biopython at biopython.org
Sent: Monday, April 25, 2011 9:50:20 AM
Subject: Re: [Biopython] SeqRecords and multiprocessing
On Fri, Apr 22, 2011 at 6:25 PM, Peter Cock <p.j.a.cock at googlemail.com> wrote:
> On Fri, Apr 22, 2011 at 6:03 PM, Peter Cock <p.j.a.cock at googlemail.com> wrote:
>>
>> Is the problem that _RestrictedDict isn't pickle-able?
>>
>
> This seems to work fine:
>
>>>> from Bio.SeqRecord import _RestrictedDict as RD
>>>> import pickle
>>>> x = RD(5)
>>>> x["test"] = "hello"
>>>> x
> {'test': 'hello'}
>>>> y = pickle.loads(pickle.dumps(x))
>>>> y
> {'test': 'hello'}
>>>> y._length
> 5
>
> I guessed it was down to the protocol...
>
>>>> y = pickle.loads(pickle.dumps(x,0))
>>>> y
> {'test': 'hello'}
>
>>>> y = pickle.loads(pickle.dumps(x,1))
>>>> y
> {'test': 'hello'}
>
> And suddenly:
>
>>>> y = pickle.loads(pickle.dumps(x,2))
> Traceback (most recent call last):
> ...
> AttributeError: '_RestrictedDict' object has no attribute '_length'
>
> Progress.
>
> Peter
Connor, could you try out the latest code on github please?
Specifically this changeset,
https://github.com/biopython/biopython/commit/967aadc1a82bf2f102608a73b0b8a874facf6c79
There is probably a better way to fix this, but this should do for now.
Thanks,
Peter
More information about the Biopython
mailing list