00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef _gnFastTranslator_h_
00013 #define _gnFastTranslator_h_
00014
00015
00016 #include "gn/gnDefs.h"
00017
00018 #include <string>
00019 #include <vector>
00020 #include <map>
00021 #include "gn/gnClone.h"
00022 #include "gn/gnBaseFilter.h"
00023 #include "gn/gnTranslator.h"
00024
00025 class GNDLLEXPORT gnFastTranslator : public gnBaseFilter
00026 {
00027 public:
00028
00029 static const gnFastTranslator *ProteinDNATranslator();
00030 static const gnFastTranslator *DNAProteinTranslator();
00031
00032 enum gnTranslatorType{
00033 ProteinDNATranslatorType,
00034 DNAProteinTranslatorType,
00035 };
00036
00037 gnFastTranslator();
00038 gnFastTranslator( gnTranslatorType t_type );
00039 gnFastTranslator( const gnFastTranslator& sf );
00040 gnFastTranslator& operator= (const gnFastTranslator& sf);
00041 gnFastTranslator* Clone() const;
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052 virtual void CacheTranslator(const gnTranslator* tranny, string inputs, const gnSeqI input_width);
00053
00054
00055 virtual gnSeqC Filter( const gnSeqC ch ) const;
00056
00057 virtual void Filter( gnSeqC** seq, uint32& len ) const;
00058
00059 virtual void Filter( string &seq ) const;
00060
00061
00062 void SetDefaultChar( const gnSeqC ch1 );
00063 gnSeqC GetDefaultChar() const;
00064 void UseDefaultChar( const boolean use = true);
00065
00066 void SetPair( const string& ch1, const string& ch2 );
00067 void RemovePair( const string& ch );
00068
00069 private:
00070
00071 void CreateProteinDNATranslator();
00072 void CreateDNAProteinTranslator();
00073
00074
00075 map<string, string> m_transCache;
00076 const gnTranslator * m_translator;
00077
00078 boolean use_default;
00079 gnSeqC m_defaultChar;
00080 };
00081
00082 inline
00083 gnFastTranslator* gnFastTranslator::Clone() const
00084 {
00085 return new gnFastTranslator(*this);
00086 }
00087
00088 inline
00089 void gnFastTranslator::SetDefaultChar( const gnSeqC ch1 )
00090 {
00091 m_defaultChar = ch1;
00092 use_default = true;
00093 }
00094 inline
00095 gnSeqC gnFastTranslator::GetDefaultChar() const
00096 {
00097 return m_defaultChar;
00098 }
00099
00100 inline
00101 void gnFastTranslator::UseDefaultChar(const boolean use)
00102 {
00103 use_default = use;
00104 }
00105
00106 #endif // _gnFastTranslator_h_