File: AngleInfo.h

package info (click to toggle)
coot 1.1.18%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 220,004 kB
  • sloc: cpp: 495,934; python: 35,043; ansic: 26,143; lisp: 22,768; sh: 13,186; makefile: 2,746; awk: 441; xml: 245; csh: 14
file content (164 lines) | stat: -rw-r--r-- 5,497 bytes parent folder | download | duplicates (2)
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
// -*-c++-*-

#ifndef ANGLE_INFO_H
#define ANGLE_INFO_H

#include "wrapped-ncube.h"

#ifndef HAVE_VECTOR
#define HAVE_VECTOR
#include <vector>
#endif

class AngleInfo { 

   MatrixSq2<float> angle_torsion_table; 

   std::vector <float> torsion; 

   float* theta_2_array; 

   int angle_torsion_table_size_; 

   void assign_angle_torsion(double angle_bin,
			     double torsion_bin,
			     double n_count); 

   float theta_2_step; 
   float step_ta_a, step_ta_t; //     torsion_angle_table_angle_step
                               // and torsion_angle_table_torsion_step

   float angle_min, torsion_min, angle_max, torsion_max;

   void 
      setup_angle_torsion_table(float step_torsion_in,
				float step_angle_in); 
   
   // simply theta_2 - a one dimentional thing.
   // 
   void construct_theta_2_table(); // 0 and 180-step are included. 

   void assign_theta_2(float angle, float n_count); // integers converted to float; 

   void theta_2_table_assign_step(float step); 


   void from_batched_angle_torsions_bits_185();
   void from_batched_angle_torsions_bits_190();
   void from_batched_angle_torsions_bits_195();
   void from_batched_angle_torsions_bits_200();
   void from_batched_angle_torsions_bits_205();
   void from_batched_angle_torsions_bits_210();
   void from_batched_angle_torsions_bits_215();
   void from_batched_angle_torsions_bits_220();
   void from_batched_angle_torsions_bits_225();
   void from_batched_angle_torsions_bits_230();
   void from_batched_angle_torsions_bits_235();
   void from_batched_angle_torsions_bits_240();
   void from_batched_angle_torsions_bits_245();
   void from_batched_angle_torsions_bits_250();
   void from_batched_angle_torsions_bits_255();
   void from_batched_angle_torsions_bits_260();
   void from_batched_angle_torsions_bits_265();
   void from_batched_angle_torsions_bits_270();
   void from_batched_angle_torsions_bits_275();
   void from_batched_angle_torsions_bits_280();
   void from_batched_angle_torsions_bits_285();
   void from_batched_angle_torsions_bits_290();
   void from_batched_angle_torsions_bits_295();
   void from_batched_angle_torsions_bits_300();
   void from_batched_angle_torsions_bits_305();
   void from_batched_angle_torsions_bits_310();
   void from_batched_angle_torsions_bits_315();
   void from_batched_angle_torsions_bits_320();
   void from_batched_angle_torsions_bits_325();
   void from_batched_angle_torsions_bits_330();
   void from_batched_angle_torsions_bits_335();
   void from_batched_angle_torsions_bits_340();
   void from_batched_angle_torsions_bits_345();
   void from_batched_angle_torsions_bits_350();
   void from_batched_angle_torsions_bits_355();
   void from_batched_angle_torsions_bits_360();
   void from_batched_angle_torsions_bits_365();
   void from_batched_angle_torsions_bits_370();
   void from_batched_angle_torsions_bits_375();
   void from_batched_angle_torsions_bits_380();
   void from_batched_angle_torsions_bits_385();
   void from_batched_angle_torsions_bits_390();
   void from_batched_angle_torsions_bits_395();
   void from_batched_angle_torsions_bits_400();
   void from_batched_angle_torsions_bits_405();
   void from_batched_angle_torsions_bits_410();
   void from_batched_angle_torsions_bits_415();
   void from_batched_angle_torsions_bits_420();
   void from_batched_angle_torsions_bits_425();
   void from_batched_angle_torsions_bits_430();
   void from_batched_angle_torsions_bits_435();
   void from_batched_angle_torsions_bits_440();
   void from_batched_angle_torsions_bits_445();
   void from_batched_angle_torsions_bits_450();
   void from_batched_angle_torsions_bits_455();
   void from_batched_angle_torsions_bits_460();
   void from_batched_angle_torsions_bits_465();
   void from_batched_angle_torsions_bits_470();
   void from_batched_angle_torsions_bits_475();
   void from_batched_angle_torsions_bits_480();
   void from_batched_angle_torsions_bits_485();
   void from_batched_angle_torsions_bits_490();
   void from_batched_angle_torsions_bits_495();
   void from_batched_angle_torsions_bits_500();
   void from_batched_angle_torsions_bits_505();
   void from_batched_angle_torsions_bits_510();
   void from_batched_angle_torsions_bits_515();
   void from_batched_angle_torsions_bits_520();
   void from_batched_angle_torsions_bits_525();
   void from_batched_angle_torsions_bits_530();
   void from_batched_angle_torsions_bits_535();
   void from_batched_angle_torsions_bits_540();

   int nint (float i) const { 
      return i < 0 ? int (i-0.5) : int (i+0.5); 
   }
   
 public:

   AngleInfo();

   int angle_torsion_table_size() { return angle_torsion_table_size_; }

   void normalize_angle_torsion(); // convert to probabilities.

   float check_sum() const; 

   // this should be renamed to from batched_angle_torsions()
   // 
   void from_batched_angle_torsions();  // created by the make-code.awk script

   float prob_angle_torsion(float angle, float torsion) const; 

   float prob_angle_torsion_by_bin(float angle, float torsion) const; 

   float prob_torsion_torsion(float tor1, float tor2) const; 


   // where we have the previous values and the previous previous values
   // 
   // i.e. we are positioning n, and we have values for n-1 and n-2
   // 
   float prob_angle_torsion_angle_torsion(float angle1, float tors1, 
					  float angle2, float tors2) const; 


   void print_angle_torsion_table() const; 

   float theta_2_score(float theta_2_in) const; 


};



// 
void a_init(); 

#endif // ANGLE_INFO_H