00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
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
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,
gnSeqI& len ) const;
00062
00063 virtual
void Filter( string &seq ) const;
00064
00065
00070
void SetDefaultChar( const
gnSeqC ch1 );
00076
gnSeqC GetDefaultChar() const;
00081
void UseDefaultChar( const
boolean use = true);
00087
void SetDefaultInputWidth( const
uint32 defaultInputWidth);
00093
uint32 GetDefaultInputWidth() const;
00094
00095
00103
void SetPair( const string& input, const string& output );
00109
void RemovePair( const string& input );
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_