00001 00002 // File: gnFastTranslator.h 00003 // Purpose: Fast translator for all Sequences 00004 // Description: Caches translations of each possible sequence in a tree 00005 // Changes: 00006 // Version: libGenome 0.1.0 00007 // Author: Aaron Darling 00008 // Last Edited: April 15, 2001, 10:34:50pm 00009 // Modified by: 00010 // Copyright: (c) Aaron Darling 00011 // Licenses: Proprietary 00013 #ifndef _gnFastTranslator_h_ 00014 #define _gnFastTranslator_h_ 00015 00016 00017 #include "gn/gnDefs.h" 00018 00019 #include <string> 00020 #include <vector> 00021 #include <map> 00022 #include "gn/gnClone.h" 00023 #include "gn/gnBaseFilter.h" 00024 #include "gn/gnTranslator.h" 00025 00026 class GNDLLEXPORT gnFastTranslator : public gnBaseFilter 00027 { 00028 public: 00029 00030 static const gnFastTranslator *ProteinDNATranslator(); 00031 static const gnFastTranslator *DNAProteinTranslator(); 00032 00033 enum gnTranslatorType{ 00034 ProteinDNATranslatorType, 00035 DNAProteinTranslatorType, 00036 }; 00037 00038 gnFastTranslator(); 00039 gnFastTranslator( gnTranslatorType t_type ); 00040 gnFastTranslator( const gnFastTranslator& sf ); 00041 gnFastTranslator& operator= (const gnFastTranslator& sf); 00042 gnFastTranslator* Clone() const; 00043 00053 virtual void CacheTranslator(const gnTranslator* tranny, string inputs, const gnSeqI input_width); 00054 00055 // gnSeqC 00056 virtual gnSeqC Filter( const gnSeqC ch ) const; 00057 00058 virtual void Filter( gnSeqC** seq, uint32& len ) const; 00059 // string 00060 virtual void Filter( string &seq ) const; 00061 00062 // Default gnSeqC 00063 void SetDefaultChar( const gnSeqC ch1 ); 00064 gnSeqC GetDefaultChar() const; 00065 void UseDefaultChar( const boolean use = true); 00066 // fill map 00067 void SetPair( const string& ch1, const string& ch2 ); 00068 void RemovePair( const string& ch ); 00069 00070 private: 00071 00072 void CreateProteinDNATranslator(); 00073 void CreateDNAProteinTranslator(); 00074 00075 //map an input string to an output string 00076 map<string, string> m_transCache; 00077 const gnTranslator * m_translator; 00078 00079 boolean use_default; 00080 gnSeqC m_defaultChar; 00081 };//class gnFastTranslator 00082 00083 inline 00084 gnFastTranslator* gnFastTranslator::Clone() const 00085 { 00086 return new gnFastTranslator(*this); 00087 } 00088 00089 inline 00090 void gnFastTranslator::SetDefaultChar( const gnSeqC ch1 ) 00091 { 00092 m_defaultChar = ch1; 00093 use_default = true; 00094 } 00095 inline 00096 gnSeqC gnFastTranslator::GetDefaultChar() const 00097 { 00098 return m_defaultChar; 00099 } 00100 00101 inline 00102 void gnFastTranslator::UseDefaultChar(const boolean use) 00103 { 00104 use_default = use; 00105 } 00106 00107 #endif // _gnFastTranslator_h_