[Biococoa-dev] BCSequence

Alexander Griekspoor mek at mekentosj.com
Sun Aug 22 16:59:41 EDT 2004

>> Is that correct?  My big worry about this approach is what might 
>> happen with
>> a threaded app, where the first method might be called from a 
>> different
>> thread before the information could be retrieved.
> But isn't that true for every variable, such as the NSArray of Symbols 
> itself?

[NSLock lock] Ooh, thread safety... Help! Let's make that a secondary 
goal or not? [NSLock unlock]  ;-)

> It's a NSSting representation of the array of Symbols, using their 
> 'symbolString' variable.
John, I send you a copy of the emails where we discussed this to make 

>> If we're going to have a generic "initWithString" method, we're going 
>> to
>> have to define some order of preference for what type of sequence to
>> generate.  Maybe try DNA, if that doesn't work for all letters, try 
>> RNA, if
>> that doesn't work, try protein?
First RNA (you can check for the presence of uracil), then DNA, else 
protein, else error.

>> If we keep a BCSequenceType variable, then
>> something like:
>> - (void)insertSymbolsFromString:(NSString *)s atIndex:(int)index;
>> Can use that in order to decide what type of sequence to add.

> Or, have a validation method in each initWithString method that checks 
> if it is really a DNA, protein, etc. So the user does something like:
> mysequence = [[BCSequenceProtein] alloc] initWithString: 
> It will return nil, or an NSError if it is not a protein, eg when the 
> string @"KOENVANDERDRIFT" is passed.

I like both ideas. We could have:
- a utility method that is passed a string and check what the most 
likely type it is
- a general init method which uses the above method
- specific init methods for each type that include validation of the 
type above
- specific init methods that are passed alphabets to use (if we go that 
way, the previous method could be replaced)
- a utility method to validate strings for type and/or alphabets

>> For a consistent naming convention:
>> When setting/getting an array of symbols, use SymbolArray in the 
>> method
>> name.
>> When setting/getting a sequence object, use Sequence in the method 
>> name.
> sounds good!
Copy that!

>> It's probably worth creating both types of methods for all the 
>> methods like
>> "partialSequence", since we don't know what's going to be most useufl 
>> for
>> the users.

Not duplicate, make one detailed method which accepts a range (the 
method should therefore also to range validation, and if not properly, 
return range exceptions), and one convenience method (without the range 
parameter) that assumes the range to be the complete sequence:

- doOperationOnSequence{
	[self doOperationOnSequenceForRange: <here range of complete 

- doOperationOnSequenceForRange: (NSRange) aRange{

> I'm not sure what you mean here.
But perhaps I misunderstood the remark as well...

                     ** Alexander Griekspoor **
               The Netherlands Cancer Institute
               Department of Tumorbiology (H4)
          Plesmanlaan 121, 1066 CX, Amsterdam
                   Tel:  + 31 20 - 512 2023
                   Fax:  + 31 20 - 512 2029
                   AIM: mekentosj at mac.com
                   E-mail: a.griekspoor at nki.nl
               Web: http://www.mekentosj.com

                           Mac vs Windows
	65 million years ago, there were more
                      dinosaurs than humans.
	     Where are the dinosaurs now?


More information about the Biococoa-dev mailing list