[Biococoa-dev] More on BCSymbolSets
Charles PARNOT
charles.parnot at stanford.edu
Fri Mar 4 09:45:48 EST 2005
>>Yes, that is exactly what I think! Did you look at my code? ;-)
>
>Hmm, not sure what you mean - I didn't see anything in the code. Maybe my Xcode - cvs is screwed up again :(
code posted on the list in a previous email
@interface BCAbstractSequence:NSObject
{
BCSymbolSet *symbolSet;
BCSequenceType *sequenceType;
NSMutableArray *symbolArray;
}
//designated initializer
- (id)initWithSymbolArray:(NSArray *)anArray symbolSet:(BCSymbolSet *)aSet;
- (id)initWithString:(NSString *)aString;
- (id)initWithString:(NSString *)aString symbolSet:(BCSymbolSet *)aSet;
//methods to override in the subclasses
+ (BCSequenceType)sequenceType;
+ (BCSymbolSet *)defaultSymbolSet;
@end
@implementation BCAbstractSequence
- (id)initWithSymbolArray:(NSArray *)anArray symbolSet:(BCSymbolSet *)aSet
{
self=[super init];
if (self!=nil) {
sequenceType=[[self class] sequenceType];
//check that the symbol set is the right type, otherwise use default
if ([aSet sequenceType]!=sequenceType)
aSet=[[self class] defaultSymbolSet];
//let the set check the symbols
NSArray *finalArray=[aSet arrayByRemovingUnknownSymbolsFromArray:anArray];
symbolArray=[[NSMutableArray alloc] initWithArray:finalArray];
}
return self;
}
- (id)initWithString:(NSString *)aString;
{
return [self initWithString:aString symbolSet:[[self class] defaultSymbolSet]];
}
- (id)initWithString:(NSString *)aString symbolSet:(BCSymbolSet *)aSet;
{
int i,n;
NSMutableArray *anArray;
BCSymbol *aSymbol;
//check that the symbol set is the right type, otherwise use default
if ([aSet sequenceType]!=[[self class] sequenceType])
aSet=[[self class] defaultSymbolSet];
//creates a symbol array
n=[aString length];
anArray=[NSMutableArray arrayWithCapacity:[aString length]];
for (i=0;i++;i<n) {
unichar aChar=[aString characterAtIndex:i];
if (aSymbol=[aSet symbolForCharacter:aChar])
[anArray addObject:aSymbol];
}
//calls the designated initializer
return [self initWithSymbolArray:anArray symbolSet:aSet];
}
@end
@interface BCSequenceDNA: BCAbstractSequence
{
}
//no need to write any initializers!!!
//methods to override in the subclass
+ (BCSequenceType)sequenceType;
+ (BCSymbolSet *)defaultSymbolSet;
@end
@implementation BCSequenceDNA
+ (BCSequenceType)sequenceType
{ return BCDNASequence; }
+ (BCSymbolSet *)defaultSymbolSet
{ return [BCSymbolSet dnaSymbolSet]; }
@end
and similar for RNA and protein...
--
Help science go fast forward:
http://cmgm.stanford.edu/~cparnot/xgrid-stanford/
Charles Parnot
charles.parnot at stanford.edu
Room B157 in Beckman Center
279, Campus Drive
Stanford University
Stanford, CA 94305 (USA)
Tel +1 650 725 7754
Fax +1 650 725 8021
More information about the Biococoa-dev
mailing list