00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
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
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,
gnSeqI& 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_