File: hmm.h

package info (click to toggle)
psortb 3.0.6%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 121,044 kB
  • sloc: perl: 3,652; ansic: 698; cpp: 338; sh: 27; makefile: 23
file content (103 lines) | stat: -rw-r--r-- 2,759 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#ifndef __HMM_H__
#define __HMM_H__

extern "C" {
#include <float.h>
#include <structs.h>
#include <funcs.h>
#include <squid.h>
#include <msa.h>
#include <string.h>
}

#include <vector>

using namespace std;

class HMMHit {
 public:
  HMMHit(float s, double p, double e);
  double getPValue() { return pvalue; };
  void   setPValue(double p) { pvalue = p; };
  double getEValue() { return evalue; };
  void   setEValue(double e) { evalue = e; };
  float  getScore() { return score; };
  void   setScore(float s) { score = s; };
  ~HMMHit() { };
 private:
  double pvalue;
  double evalue;
  float  score;
};

class HMMGlobalHit : public HMMHit {
 public:
  HMMGlobalHit(float s, double p, double e) : HMMHit(s, p, e) { };
 private:
};

class HMMDomainHit : public HMMHit {
 public:
  HMMDomainHit(float s, double p, double e);
  void   setSeqFrom(int s) { seqfrom = s; };
  int    getSeqFrom() { return seqfrom; };
  void   setSeqTo(int s) { seqto = s; };
  int    getSeqTo() { return seqto; };
  void   setSeqLength(int s) { seqlen = s; };
  int    getSeqLength() { return seqlen; };
  void   setHMMFrom(int h) { hmmfrom = h; };
  int    getHMMFrom() { return hmmfrom; };
  void   setHMMTo(int h) { hmmto = h; };
  int    getHMMTo() { return hmmto; };
  double getParentPValue() { return ppvalue; };
  void   setParentPValue(double p) { ppvalue = p; };
  double getParentEValue() { return pevalue; };
  void   setParentEValue(double e) { pevalue = e; };
  float  getParentScore() { return pscore; };
  void   setParentScore(float s) { pscore = s; };
 private:
  int    seqfrom, seqto, seqlen, hmmfrom, hmmto;
  double ppvalue, pevalue;
  float  pscore;
};

class HMMReport {
 public:
  HMMReport() { };
  void addGlobalHit(HMMGlobalHit *h);
  HMMGlobalHit *getGlobalHit(int i);
  int numGlobalHits() { return global.size(); };
  void addDomainHit(HMMDomainHit *h);
  HMMDomainHit *getDomainHit(int i);
  int numDomainHits() { return domain.size(); };
  ~HMMReport();
 private:
  vector<HMMGlobalHit *> global;
  vector<HMMDomainHit *> domain;
};

class HMM {
 public:
  HMM() { init(NULL, 0, 1); };
  HMM(char *filename) { init(filename, 0, 1); };
  HMM(char *filename, int df, int n2) { init(filename, df, n2); };
  HMMReport *search(char *seq);
  int  train(char **seqs, int len);
  int  save(char *filename, int append, int binary);
  int  load(char *filename);
  int  modelLoaded() { return (model != NULL); };
  int  getDoForward() { return doForward; };
  void setDoForward(int df) { doForward = df; };
  int  getDoNull2() { return doNull2; };
  void setDoNull2(int n2) { doNull2 = n2; };
  ~HMM();
 private:
  void init(char *filename, int df, int n2);

  struct threshold_s thresh;
  struct plan7_s *model;
  int doForward;
  int doNull2;
};

#endif