Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

gnPosSpecificTranslator.cpp

Go to the documentation of this file.
00001 
00002 // File:            gnPosSpecificTranslator.cpp
00003 // Purpose:         Special case ORF translation
00004 // Description:     Used to translate sequences differently based on the position of
00005 //                                      input characters.  Useful for tranlating genes because the first
00006 //                                      codon is translated differently
00007 // Changes:        
00008 // Version:         libGenome 0.1.0 
00009 // Author:          Aaron Darling 
00010 // Last Edited:     March 18, 2001, 10:34:50pm 
00011 // Modified by:     
00012 // Copyright:       (c) Aaron Darling 
00013 // Licenses:        Proprietary 
00015 
00016 #include "gn/gnPosSpecificTranslator.h"
00017 
00018 //      static data access, avoids static initialization order fiasco
00019 const gnPosSpecificTranslator *gnPosSpecificTranslator::ProteinDNATranslator(){
00020         const static gnPosSpecificTranslator* t_trans = new gnPosSpecificTranslator(ProteinDNATranslatorType);
00021         return t_trans;
00022 }
00023 const gnPosSpecificTranslator *gnPosSpecificTranslator::DNAProteinTranslator(){
00024         const static gnPosSpecificTranslator* t_trans = new gnPosSpecificTranslator(DNAProteinTranslatorType);
00025         return t_trans;
00026 }
00027 
00028 //      public:
00029 gnPosSpecificTranslator::gnPosSpecificTranslator()
00030 {
00031 }
00032 
00033 gnPosSpecificTranslator::gnPosSpecificTranslator( const gnPosSpecificTranslator &sf )
00034 {
00035         m_name = sf.m_name;
00036 }
00037 gnPosSpecificTranslator::gnPosSpecificTranslator( gnTranslatorType t_type )
00038 {
00039         m_type = t_type;
00040         switch(t_type){
00041                 case ProteinDNATranslatorType:
00042                         // not special done for this case
00043                         filter = gnFastTranslator::ProteinDNATranslator();
00044                         break;
00045                 case DNAProteinTranslatorType:
00046                         filter = gnFastTranslator::DNAProteinTranslator();
00047                         break;
00048         }
00049 }
00050 
00051 // gnSeqC
00052 gnSeqC gnPosSpecificTranslator::Filter( const gnSeqC ch ) const{
00053         return filter->Filter(ch);
00054 }
00055 
00056 void gnPosSpecificTranslator::Filter( gnSeqC** seq, uint32& len ) const{
00057         return filter->Filter(seq, len);
00058 }
00059         // string
00060 void gnPosSpecificTranslator::Filter( string &seq ) const{
00061         switch(m_type){
00062                 case ProteinDNATranslatorType:
00063                         filter->Filter( seq );
00064                         break;
00065                 case DNAProteinTranslatorType:
00066                         string first_codon = seq.substr(0,3);
00067                         filter->Filter( seq );
00068                         for(int charI = 0; charI < first_codon.length(); charI++ )
00069                                 first_codon[charI] = tolower(first_codon[charI]);
00070                         if( first_codon == "ttg" || first_codon == "gtg" )
00071                                 seq[0] = 'M';
00072                         break;
00073         }
00074 }

Generated at Thu Apr 4 01:52:02 2002 for libGenome by doxygen1.2.8.1 written by Dimitri van Heesch, © 1997-2001