[Biococoa-dev] sequence wrappers
Koen van der Drift
kvddrift at earthlink.net
Thu Dec 16 13:29:06 EST 2004
On Dec 16, 2004, at 10:53 AM, Alexander Griekspoor wrote:
>>>> I strongly argue to only implement the first and dump the second...
>>>
>>>
>>> I disagree :). I favor to have just one BCFeatures object (which
>>> maintains a dictionary) instead of many BCFeature objects, each with
>>> one key-value pair. this makes it easy to acces the data:
>>
>> That exactly goes straight into your "I want lots of small objects
>> instead of one big" ;-)
Yes, I just realized that. I think we both agree however, to use a
separate object to store features and annotations. I looked at the
bioperl doc again, and I like their approach actually.
I guess it also what you have in mind (perlcode):
foreach my $feat_object ($seq_object->get_SeqFeatures) {
print "primary tag: ", $feat_object->primary_tag, "\n";
foreach my $tag ($feat_object->get_all_tags) {
print " tag: ", $tag, "\n";
foreach my $value ($feat_object->get_tag_values($tag)) {
print " value: ", $value, "\n";
}
}
}
The nice thing about this, what I didn't realize before, is that a
feature itself can have a sub-feature. What they also do is store a
sequence in the features object. I guess that's to store the
subsequence of the feature. Not sure yet if I like that.
Anyway, contrary to what I argued before, I think indeed that single
BCFeature and BCAnnotation objects stored in an array (or dictionary)
within a BCSequence object is the way to go.
>>>
>>> [[mySequence features] featureForKey];
>>
>> I would propose: [mySequence featureForKey: ]
>> Even simpler ;-)
Yes, but in that case the BCFeature objects are stored in a dictonary,
not an array. That's also a good idea.
So, let's see:
BCSymbolList -> has-a symbolArray // this is the previous BCSequence
object
|
|
-----BCSequence -> has-a featuresDictionary and annotationsDictionary
|
|
------BCSequenceDNA, etc // unchanged
The featuresDictionary and annotationsDictionary have BCFeature and
BCAnnotation objects as values, respectively, which can be accessed
using the proper keys, using code such as: [mySequence featureForKey:
].
We're getting there!
- Koen.
More information about the Biococoa-dev
mailing list