1/*  Last edited: Mar  3 13:16 1997 (birney) */
2
3%{
4#include "wisebase.h"
5#include "probability.h"
6#include "geneparser21.h"
7
8enum GeneParser4Type {
9  GP4_INTRON2CDS = 0,
10  GP4_INTRON2INTRON,
11  GP4_DELETE_1_BASE,
12  GP4_DELETE_2_BASE,
13  GP4_INSERT_1_BASE,
14  GP4_INSERT_2_BASE,
15  GP4_LOOP2LOOP,
16  GP4_LOOP2MODEL,
17  GP4_TRANSITION_LEN };
18
19%}
20
21
22struct GeneParser4
23Probability transition[GP4_TRANSITION_LEN]
24Probability intron[5]
25
26struct GeneParser4Score
27Score transition[GP4_TRANSITION_LEN]
28Score intron[5]
29
30%{
31#include "geneparser4.h"
32
33
34GeneParser4 * std_GeneParser4(double indel,double intron2cds)
35{
36  int i;
37  GeneParser4 * out;
38
39  out = GeneParser4_alloc();
40
41  out->transition[GP4_INTRON2CDS] = intron2cds;
42
43  out->transition[GP4_INTRON2INTRON]    = 1.0;
44  out->transition[GP4_DELETE_1_BASE]    = indel;
45  out->transition[GP4_DELETE_2_BASE]    = indel;
46  out->transition[GP4_INSERT_1_BASE]    = indel;
47  out->transition[GP4_INSERT_2_BASE]    = indel;
48  out->transition[GP4_LOOP2MODEL]       = 1.0;
49  out->transition[GP4_LOOP2LOOP]        = 0;
50
51
52  for(i=0;i<5;i++)
53    out->intron[i] = 1.0;
54
55  return out;
56}
57
58
59
60GeneParser4Score * GeneParser4Score_from_GeneParser21Score(GeneParser21Score * gp21s)
61{
62  int i;
63  GeneParser4Score * out;
64
65  out = GeneParser4Score_alloc();
66
67  out->transition[GP4_INTRON2CDS] = gp21s->transition[GP21_CENTRAL2PY] + gp21s->transition[GP21_PY2SPACER] + gp21s->transition[GP21_SPACER2CDS];
68
69  out->transition[GP4_INTRON2INTRON]    = gp21s->transition[GP21_CENTRAL2CENTRAL];
70  out->transition[GP4_DELETE_1_BASE]    = gp21s->transition[GP21_DELETE_1_BASE];
71  out->transition[GP4_DELETE_2_BASE]    = gp21s->transition[GP21_DELETE_2_BASE];
72  out->transition[GP4_INSERT_1_BASE]    = gp21s->transition[GP21_INSERT_1_BASE];
73  out->transition[GP4_INSERT_2_BASE]    = gp21s->transition[GP21_INSERT_2_BASE];
74  out->transition[GP4_LOOP2MODEL]       = gp21s->transition[GP21_RND2MODEL];
75  /*  out->transition[GP4_LOOP2LOOP]        = gp21s->transition[GP21_RND2RND]; */
76  out->transition[GP4_LOOP2LOOP]        = 0;
77  /*  fprintf(stderr,"Loop score is %d\n",out->transition[GP4_LOOP2LOOP]); */
78
79
80  for(i=0;i<5;i++)
81    out->intron[i] = gp21s->central[i];
82
83  return out;
84}
85
86
87
88GeneParser4Score * GeneParser4Score_from_GeneParser4(GeneParser4 * gp4)
89{
90  GeneParser4Score * out;
91
92  out = GeneParser4Score_alloc();
93
94  Probability2Score_move(gp4->transition,out->transition,GP4_TRANSITION_LEN);
95  Probability2Score_move(gp4->intron,out->intron,5);
96
97  return out;
98}
99
100
101%}
102
103
104