00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef _gnTranslator_h_
00013 #define _gnTranslator_h_
00014
00015
00016 #include "gn/gnDefs.h"
00017
00018 #include <string>
00019 #include <vector>
00020 #include "gn/gnClone.h"
00021 #include "gn/gnBaseFilter.h"
00022 #include "gn/gnCompare.h"
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 class GNDLLEXPORT gnTranslator : public gnBaseFilter
00037 {
00038 public:
00039
00040 static const gnTranslator *ProteinDNATranslator();
00041 static const gnTranslator *ProteinRNATranslator();
00042 static const gnTranslator *DNAProteinTranslator();
00043 static const gnTranslator *RNAProteinTranslator();
00044
00045 enum gnTranslatorType{
00046 ProteinDNATranslatorType,
00047 ProteinRNATranslatorType,
00048 DNAProteinTranslatorType,
00049 RNAProteinTranslatorType,
00050 };
00051
00052 gnTranslator();
00053 gnTranslator( gnTranslatorType t_type );
00054 gnTranslator( const gnTranslator& sf );
00055
00056 gnTranslator* Clone() const;
00057
00058
00059 virtual gnSeqC Filter( const gnSeqC ch ) const;
00060
00061 virtual void Filter( gnSeqC** seq, uint32& len ) const;
00062
00063 virtual void Filter( string &seq ) const;
00064
00065
00066
00067
00068
00069
00070 void SetDefaultChar( const gnSeqC ch1 );
00071
00072
00073
00074
00075
00076 gnSeqC GetDefaultChar() const;
00077
00078
00079
00080
00081 void UseDefaultChar( const boolean use = true);
00082
00083
00084
00085
00086
00087 void SetDefaultInputWidth( const uint32 defaultInputWidth);
00088
00089
00090
00091
00092
00093 uint32 GetDefaultInputWidth() const;
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103 void SetPair( const string& input, const string& output );
00104
00105
00106
00107
00108
00109 void RemovePair( const string& input );
00110
00111
00112
00113
00114
00115 void SetCompare( const gnCompare* comp );
00116 private:
00117 void CreateProteinDNATranslator();
00118 void CreateProteinRNATranslator();
00119 void CreateDNAProteinTranslator();
00120 void CreateRNAProteinTranslator();
00121
00122
00123
00124 vector<string> m_inputTable, m_outputTable;
00125
00126 const gnCompare* compare;
00127
00128 boolean use_default;
00129 gnSeqC m_defaultChar;
00130 uint32 m_defaultInputWidth;
00131 };
00132
00133 inline
00134 gnTranslator* gnTranslator::Clone() const
00135 {
00136 return new gnTranslator(*this);
00137 }
00138
00139 inline
00140 void gnTranslator::SetDefaultChar( const gnSeqC ch1 )
00141 {
00142 m_defaultChar = ch1;
00143 use_default = true;
00144 }
00145 inline
00146 gnSeqC gnTranslator::GetDefaultChar() const
00147 {
00148 return m_defaultChar;
00149 }
00150
00151 inline
00152 void gnTranslator::UseDefaultChar(const boolean use)
00153 {
00154 use_default = use;
00155 }
00156
00157 inline
00158 void gnTranslator::SetDefaultInputWidth( const uint32 defaultInputWidth){
00159 m_defaultInputWidth = defaultInputWidth;
00160 }
00161
00162 inline
00163 uint32 gnTranslator::GetDefaultInputWidth() const{
00164 return m_defaultInputWidth;
00165 }
00166
00167 inline
00168 void gnTranslator::SetCompare( const gnCompare* comp ){
00169 compare = comp;
00170 }
00171
00172 #endif // _gnTranslator_h_