[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