Katzlab dd76ab1d12 Added PTL2 Scripts
These are PTL2 files from Auden 2/9
2023-02-14 11:20:52 -05:00

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