00001 00002 // File: gnPosSpecificTranslator.h 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 #ifndef _gnPosSpecificTranslator_h_ 00016 #define _gnPosSpecificTranslator_h_ 00017 00018 00019 #include "gn/gnDefs.h" 00020 00021 #include <string> 00022 #include <vector> 00023 #include <map> 00024 #include "gn/gnClone.h" 00025 #include "gn/gnBaseFilter.h" 00026 #include "gn/gnFastTranslator.h" 00027 00033 class GNDLLEXPORT gnPosSpecificTranslator : public gnBaseFilter 00034 { 00035 public: 00036 00037 static const gnPosSpecificTranslator *ProteinDNATranslator(); 00038 static const gnPosSpecificTranslator *DNAProteinTranslator(); 00039 00040 enum gnTranslatorType{ 00041 ProteinDNATranslatorType, 00042 DNAProteinTranslatorType, 00043 }; 00044 00045 gnPosSpecificTranslator(); 00046 gnPosSpecificTranslator( gnTranslatorType t_type ); 00047 gnPosSpecificTranslator( const gnPosSpecificTranslator& sf ); 00048 gnPosSpecificTranslator& operator= (const gnPosSpecificTranslator& sf); 00049 gnPosSpecificTranslator* Clone() const; 00050 00051 00052 // gnSeqC 00053 virtual gnSeqC Filter( const gnSeqC ch ) const; 00054 00055 virtual void Filter( gnSeqC** seq, uint32& len ) const; 00056 // string 00057 virtual void Filter( string &seq ) const; 00058 00059 private: 00060 gnTranslatorType m_type; // defines the type of translator this is 00061 const gnBaseFilter* filter; // this is the filter used to do the translation 00062 void CreateProteinDNATranslator(); 00063 void CreateDNAProteinTranslator(); 00064 00065 };//class gnPosSpecificTranslator 00066 00067 inline 00068 gnPosSpecificTranslator* gnPosSpecificTranslator::Clone() const 00069 { 00070 return new gnPosSpecificTranslator(*this); 00071 } 00072 00073 #endif // _gnPosSpecificTranslator_h_