[gt-users] python iterators
Brent Pedersen
bpederse at gmail.com
Thu Oct 1 16:38:40 CEST 2009
On Thu, Oct 1, 2009 at 2:24 AM, Sascha Steinbiss
<steinbiss at zbh.uni-hamburg.de> wrote:
> Hi Brent,
>
> thanks for your efforts!
>
>> here's another option that just makes the feature itself
>> iterable--which actually is sorta nice:
>>
>> for sub_feature in feature:
>> print sub_feature
>>
>> i've attached and even smaller patch to allow that. i think it's a
>> good way to keep the backwards compatiblity,
>> and i actually like it better.
>
> So do I. Is there any way to make both traversal strategies (DFS and
> direct children only) possible? There are iterators for both of them,
> and your patch only uses the DFS one. The __iter__() function can not
> take kwargs parameters, or can it? I tried the following:
>
> def __iter__(self, **kwargs):
> if kwargs and kwargs["method"] == 'direct':
> it = FeatureNodeIteratorDirect(self)
> else:
> it = FeatureNodeIteratorDepthFirst(self)
> f = it.next()
> while f is not None:
> yield f
> f = it.next()
>
> but when trying this:
>
> types = []
> for f in fn(method="direct"):
> types.append(f.type)
>
> I got a "TypeError: 'FeatureNode' object is not callable". Any ideas?
good idea.
when you do fn(), you're accessing the __call__() method, so you could
override that instead, so then it'd be:
for f in fn(): ...
otherwise, it could still use __iter__() and just decide where to use
Direct or DepthFirst iterator
by an attribute:
if self.depth_first:
it = FeatureNodeIteratorDepthFirst()
else:
it = FeatureNodeIteratorDirect()
i prefer the latter.
-b
>
>
> Sascha
>
> --
> Sascha Steinbiss
> Center for Bioinformatics
> University of Hamburg
> Bundesstr. 43
> 20146 Hamburg
> Germany
>
> Email: steinbiss at zbh.uni-hamburg.de
> URL: http://www.zbh.uni-hamburg.de/steinbiss
> Phone: +49 (40) 42838 7322
> FAX: +49 (40) 42838 7312
>
> _______________________________________________
> gt-users mailing list
> gt-users at genometools.org
> http://genometools.org/mailman/listinfo/gt-users
>
More information about the gt-users
mailing list