mirror of
http://43.156.76.180:8026/YuuMJ/EukPhylo.git
synced 2025-12-27 13:10:30 +08:00
54 lines
1.6 KiB
C++
54 lines
1.6 KiB
C++
// $Id: mulAlphabet.h 6420 2009-06-25 11:17:08Z adist $
|
|
|
|
// version 1.01
|
|
// last modified 1 Jan 2004
|
|
|
|
#ifndef ___MUL_ALPHABET_H
|
|
#define ___MUL_ALPHABET_H
|
|
|
|
#include "definitions.h"
|
|
#include "alphabet.h"
|
|
#include "someUtil.h"
|
|
|
|
class mulAlphabet : public alphabet {
|
|
|
|
public:
|
|
mulAlphabet(const alphabet* baseAlphabet, int mulFactor);
|
|
mulAlphabet(const mulAlphabet& other);
|
|
virtual ~mulAlphabet();
|
|
virtual alphabet* clone() const { return new mulAlphabet(*this); }
|
|
mulAlphabet& operator=(const mulAlphabet &other);
|
|
|
|
int unknown() const ;
|
|
int gap() const;
|
|
|
|
int size() const {return _size;}
|
|
int stringSize() const ;
|
|
bool isSpecific(const int id) const ;
|
|
|
|
int fromChar(const string& str, const int pos) const;
|
|
vector<int> fromString(const string& str) const;
|
|
|
|
string fromInt(const int id) const;
|
|
|
|
int relations(const int charInSeq, const int charToCheck) const;
|
|
int compareCategories(int charA, int charB) const;
|
|
enum rateShiftType {noRateShift=0, acceleration, deceleration};
|
|
static rateShiftType compareCategories(int charA, int charB, int baseAlphabetSize, int multiplicationFactor) ;
|
|
const alphabet* getBaseAlphabet() const {return _baseAlphabet;}
|
|
|
|
public:
|
|
int convertFromBasedAlphaInt(int id) const;
|
|
int convertToBasedAlphaInt(int id) const;
|
|
|
|
private:
|
|
alphabet* _baseAlphabet; // This alphabet must use single characters, i.e. - not codon. (or we will have to add to every alphabet a member which holds its character's size)
|
|
int _mulFactor ; // number of times that the alphabet is multiplied by = Number of categories (g in Galtier paper)
|
|
int _size ; // this is simply the _baseAlphabet->size() * _mulFactor
|
|
|
|
|
|
};
|
|
|
|
#endif
|
|
|