File: sktest.cpp

package info (click to toggle)
clipper 2.1.20201109-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 13,364 kB
  • sloc: cpp: 65,248; sh: 11,365; makefile: 238; python: 122; fortran: 41; csh: 18
file content (254 lines) | stat: -rw-r--r-- 12,175 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
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
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
#include <clipper/clipper.h>
#include <clipper/clipper-ccp4.h>
#include <clipper/clipper-contrib.h>

#include <algorithm>

int main(int argc, char** argv)
{
  clipper::Spacegroup spgr( clipper::Spgr_descr( 1 ) );
  clipper::Cell cell( clipper::Cell_descr( 10, 10, 10 ));
  clipper::Grid_sampling grid( 6, 6, 6 );
  clipper::Xmap<float> xmap( spgr, cell, grid );
  clipper::Xmap<int> xskl( spgr, cell, grid );
  std::vector<int> index;
  clipper::Xmap<float>::Map_reference_index ix;

  // first make a shuffled map of value 0....n
  for ( ix = xmap.first(); !ix.last(); ix.next() )
    index.push_back( ix.index() );
  std::random_shuffle( index.begin(), index.end() );
  for ( int i = 0; i < index.size(); i++ )
    xmap.set_data( index[i], float(i) + 0.5 );
  index.clear();

  // print the map
  for ( ix = xmap.first(); !ix.last(); ix.next() )
    std::cout << ix.coord().format() << " " << xmap[ix] << "\n";

  // set up the whole map to be skeletonised
  for ( ix = xskl.first(); !ix.last(); ix.next() ) xskl[ix] = 1;
  // and skeletonise it
  clipper::Skeleton_fast<int,float> sk2;
  sk2( xskl, xmap );
  //clipper::Skeleton_basic sk2(1);
  //sk2( xskl, xmap );

  clipper::Coord_grid u, v, w;
  for ( u = clipper::Coord_grid(0,0,0); u.u() < grid.nu(); u.u()++ ) {
    for ( v = u; v.v() < grid.nv(); v.v()++ ) {
      for ( w = v; w.w() < grid.nw(); w.w()++ )
	std::cout << clipper::String(xmap.get_data( w ),5) << " ";
      std::cout << "\n";
    }
    std::cout << "\n";
  }
  for ( u = clipper::Coord_grid(0,0,0); u.u() < grid.nu(); u.u()++ ) {
    for ( v = u; v.v() < grid.nv(); v.v()++ ) {
      for ( w = v; w.w() < grid.nw(); w.w()++ )
	std::cout << clipper::String(xskl.get_data(w),5) << " ";
      std::cout << "\n";
    }
    std::cout << "\n";
  }


  // test nan
  float f;
  clipper::Util::set_null(f);
  std::cout << f << " " << clipper::Util::is_null(f) << " " << clipper::Util::is_nan(f) << " " << clipper::Util::isnan(f) << "\n";

  // now test euler angles
  {
    clipper::Euler_ccp4 e1( 0.3, 0.6, 0.8 );
    clipper::Euler_ccp4 e2 = clipper::Rotation(e1).euler_ccp4();;
    std::cout << e1.alpha() << " " << e2.alpha() << "\t" << e1.beta() << " " << e2.beta() << "\t" << e1.gamma() << " " << e2.gamma() << "\n"; 
    std::cout << clipper::Rotation(e1).format() << "\n"; 
  }
  {
    clipper::Euler<clipper::Rotation::EulerZYZr> e1( 0.3, 0.6, 0.8 );
    clipper::Euler<clipper::Rotation::EulerZYZr> e2( e1.rotation() );
    std::cout << e1.alpha() << " " << e2.alpha() << "\t" << e1.beta() << " " << e2.beta() << "\t" << e1.gamma() << " " << e2.gamma() << "\n"; 
    std::cout << e1.format() << "\n" << e1.rotation().format() << "\n"; 
  }

  std::cout << "--------------------\n";
  {
    clipper::Euler< 0> e1( 0.3, 0.6, 0.8 );
    clipper::Euler< 0> e2( e1.rotation() );
    std::cout << e1.alpha() << " " << e2.alpha() << "\t" << e1.beta() << " " << e2.beta() << "\t" << e1.gamma() << " " << e2.gamma() << "\n"; 
    std::cout << e1.format() << "\n" << e1.rotation().format() << "\n"; 
  }
  {
    clipper::Euler< 1> e1( 0.3, 0.6, 0.8 );
    clipper::Euler< 1> e2( e1.rotation() );
    std::cout << e1.alpha() << " " << e2.alpha() << "\t" << e1.beta() << " " << e2.beta() << "\t" << e1.gamma() << " " << e2.gamma() << "\n"; 
    std::cout << e1.format() << "\n" << e1.rotation().format() << "\n"; 
  }
  {
    clipper::Euler< 2> e1( 0.3, 0.6, 0.8 );
    clipper::Euler< 2> e2( e1.rotation() );
    std::cout << e1.alpha() << " " << e2.alpha() << "\t" << e1.beta() << " " << e2.beta() << "\t" << e1.gamma() << " " << e2.gamma() << "\n"; 
    std::cout << e1.format() << "\n" << e1.rotation().format() << "\n"; 
  }
  {
    clipper::Euler< 3> e1( 0.3, 0.6, 0.8 );
    clipper::Euler< 3> e2( e1.rotation() );
    std::cout << e1.alpha() << " " << e2.alpha() << "\t" << e1.beta() << " " << e2.beta() << "\t" << e1.gamma() << " " << e2.gamma() << "\n"; 
    std::cout << e1.format() << "\n" << e1.rotation().format() << "\n"; 
  }
  {
    clipper::Euler< 4> e1( 0.3, 0.6, 0.8 );
    clipper::Euler< 4> e2( e1.rotation() );
    std::cout << e1.alpha() << " " << e2.alpha() << "\t" << e1.beta() << " " << e2.beta() << "\t" << e1.gamma() << " " << e2.gamma() << "\n"; 
    std::cout << e1.format() << "\n" << e1.rotation().format() << "\n"; 
  }
  {
    clipper::Euler< 5> e1( 0.3, 0.6, 0.8 );
    clipper::Euler< 5> e2( e1.rotation() );
    std::cout << e1.alpha() << " " << e2.alpha() << "\t" << e1.beta() << " " << e2.beta() << "\t" << e1.gamma() << " " << e2.gamma() << "\n"; 
    std::cout << e1.format() << "\n" << e1.rotation().format() << "\n"; 
  }
  {
    clipper::Euler< 6> e1( 0.3, 0.6, 0.8 );
    clipper::Euler< 6> e2( e1.rotation() );
    std::cout << e1.alpha() << " " << e2.alpha() << "\t" << e1.beta() << " " << e2.beta() << "\t" << e1.gamma() << " " << e2.gamma() << "\n"; 
    std::cout << e1.format() << "\n" << e1.rotation().format() << "\n"; 
  }
  {
    clipper::Euler< 7> e1( 0.3, 0.6, 0.8 );
    clipper::Euler< 7> e2( e1.rotation() );
    std::cout << e1.alpha() << " " << e2.alpha() << "\t" << e1.beta() << " " << e2.beta() << "\t" << e1.gamma() << " " << e2.gamma() << "\n"; 
    std::cout << e1.format() << "\n" << e1.rotation().format() << "\n"; 
  }
  {
    clipper::Euler< 8> e1( 0.3, 0.6, 0.8 );
    clipper::Euler< 8> e2( e1.rotation() );
    std::cout << e1.alpha() << " " << e2.alpha() << "\t" << e1.beta() << " " << e2.beta() << "\t" << e1.gamma() << " " << e2.gamma() << "\n"; 
    std::cout << e1.format() << "\n" << e1.rotation().format() << "\n"; 
  }
  {
    clipper::Euler< 9> e1( 0.3, 0.6, 0.8 );
    clipper::Euler< 9> e2( e1.rotation() );
    std::cout << e1.alpha() << " " << e2.alpha() << "\t" << e1.beta() << " " << e2.beta() << "\t" << e1.gamma() << " " << e2.gamma() << "\n"; 
    std::cout << e1.format() << "\n" << e1.rotation().format() << "\n"; 
  }
  {
    clipper::Euler<10> e1( 0.3, 0.6, 0.8 );
    clipper::Euler<10> e2( e1.rotation() );
    std::cout << e1.alpha() << " " << e2.alpha() << "\t" << e1.beta() << " " << e2.beta() << "\t" << e1.gamma() << " " << e2.gamma() << "\n"; 
    std::cout << e1.format() << "\n" << e1.rotation().format() << "\n"; 
  }
  {
    clipper::Euler<11> e1( 0.3, 0.6, 0.8 );
    clipper::Euler<11> e2( e1.rotation() );
    std::cout << e1.alpha() << " " << e2.alpha() << "\t" << e1.beta() << " " << e2.beta() << "\t" << e1.gamma() << " " << e2.gamma() << "\n"; 
    std::cout << e1.format() << "\n" << e1.rotation().format() << "\n"; 
  }
  {
    clipper::Euler<12> e1( 0.3, 0.6, 0.8 );
    clipper::Euler<12> e2( e1.rotation() );
    std::cout << e1.alpha() << " " << e2.alpha() << "\t" << e1.beta() << " " << e2.beta() << "\t" << e1.gamma() << " " << e2.gamma() << "\n"; 
    std::cout << e1.format() << "\n" << e1.rotation().format() << "\n"; 
  }
  {
    clipper::Euler<13> e1( 0.3, 0.6, 0.8 );
    clipper::Euler<13> e2( e1.rotation() );
    std::cout << e1.alpha() << " " << e2.alpha() << "\t" << e1.beta() << " " << e2.beta() << "\t" << e1.gamma() << " " << e2.gamma() << "\n"; 
    std::cout << e1.format() << "\n" << e1.rotation().format() << "\n"; 
  }
  {
    clipper::Euler<14> e1( 0.3, 0.6, 0.8 );
    clipper::Euler<14> e2( e1.rotation() );
    std::cout << e1.alpha() << " " << e2.alpha() << "\t" << e1.beta() << " " << e2.beta() << "\t" << e1.gamma() << " " << e2.gamma() << "\n"; 
    std::cout << e1.format() << "\n" << e1.rotation().format() << "\n"; 
  }
  {
    clipper::Euler<15> e1( 0.3, 0.6, 0.8 );
    clipper::Euler<15> e2( e1.rotation() );
    std::cout << e1.alpha() << " " << e2.alpha() << "\t" << e1.beta() << " " << e2.beta() << "\t" << e1.gamma() << " " << e2.gamma() << "\n"; 
    std::cout << e1.format() << "\n" << e1.rotation().format() << "\n"; 
  }
  {
    clipper::Euler<16> e1( 0.3, 0.6, 0.8 );
    clipper::Euler<16> e2( e1.rotation() );
    std::cout << e1.alpha() << " " << e2.alpha() << "\t" << e1.beta() << " " << e2.beta() << "\t" << e1.gamma() << " " << e2.gamma() << "\n"; 
    std::cout << e1.format() << "\n" << e1.rotation().format() << "\n"; 
  }
  {
    clipper::Euler<17> e1( 0.3, 0.6, 0.8 );
    clipper::Euler<17> e2( e1.rotation() );
    std::cout << e1.alpha() << " " << e2.alpha() << "\t" << e1.beta() << " " << e2.beta() << "\t" << e1.gamma() << " " << e2.gamma() << "\n"; 
    std::cout << e1.format() << "\n" << e1.rotation().format() << "\n"; 
  }
  {
    clipper::Euler<18> e1( 0.3, 0.6, 0.8 );
    clipper::Euler<18> e2( e1.rotation() );
    std::cout << e1.alpha() << " " << e2.alpha() << "\t" << e1.beta() << " " << e2.beta() << "\t" << e1.gamma() << " " << e2.gamma() << "\n"; 
    std::cout << e1.format() << "\n" << e1.rotation().format() << "\n"; 
  }
  {
    clipper::Euler<19> e1( 0.3, 0.6, 0.8 );
    clipper::Euler<19> e2( e1.rotation() );
    std::cout << e1.alpha() << " " << e2.alpha() << "\t" << e1.beta() << " " << e2.beta() << "\t" << e1.gamma() << " " << e2.gamma() << "\n"; 
    std::cout << e1.format() << "\n" << e1.rotation().format() << "\n"; 
  }
  {
    clipper::Euler<20> e1( 0.3, 0.6, 0.8 );
    clipper::Euler<20> e2( e1.rotation() );
    std::cout << e1.alpha() << " " << e2.alpha() << "\t" << e1.beta() << " " << e2.beta() << "\t" << e1.gamma() << " " << e2.gamma() << "\n"; 
    std::cout << e1.format() << "\n" << e1.rotation().format() << "\n"; 
  }
  {
    clipper::Euler<21> e1( 0.3, 0.6, 0.8 );
    clipper::Euler<21> e2( e1.rotation() );
    std::cout << e1.alpha() << " " << e2.alpha() << "\t" << e1.beta() << " " << e2.beta() << "\t" << e1.gamma() << " " << e2.gamma() << "\n"; 
    std::cout << e1.format() << "\n" << e1.rotation().format() << "\n"; 
  }
  {
    clipper::Euler<22> e1( 0.3, 0.6, 0.8 );
    clipper::Euler<22> e2( e1.rotation() );
    std::cout << e1.alpha() << " " << e2.alpha() << "\t" << e1.beta() << " " << e2.beta() << "\t" << e1.gamma() << " " << e2.gamma() << "\n"; 
    std::cout << e1.format() << "\n" << e1.rotation().format() << "\n"; 
  }
  {
    clipper::Euler<23> e1( 0.3, 0.6, 0.8 );
    clipper::Euler<23> e2( e1.rotation() );
    std::cout << e1.alpha() << " " << e2.alpha() << "\t" << e1.beta() << " " << e2.beta() << "\t" << e1.gamma() << " " << e2.gamma() << "\n"; 
    std::cout << e1.format() << "\n" << e1.rotation().format() << "\n"; 
  }

  /*
  std::cout << "--------------------\n";
  std::cout << clipper::Euler< 0>( 0.3, 0.6, 0.8 ).format() << "\n";
  std::cout << clipper::Euler< 1>( 0.3, 0.6, 0.8 ).format() << "\n";
  std::cout << clipper::Euler< 2>( 0.3, 0.6, 0.8 ).format() << "\n";
  std::cout << clipper::Euler< 3>( 0.3, 0.6, 0.8 ).format() << "\n";
  std::cout << clipper::Euler< 4>( 0.3, 0.6, 0.8 ).format() << "\n";
  std::cout << clipper::Euler< 5>( 0.3, 0.6, 0.8 ).format() << "\n";
  std::cout << clipper::Euler< 6>( 0.3, 0.6, 0.8 ).format() << "\n";
  std::cout << clipper::Euler< 7>( 0.3, 0.6, 0.8 ).format() << "\n";
  std::cout << clipper::Euler< 8>( 0.3, 0.6, 0.8 ).format() << "\n";
  std::cout << clipper::Euler< 9>( 0.3, 0.6, 0.8 ).format() << "\n";
  std::cout << clipper::Euler<10>( 0.3, 0.6, 0.8 ).format() << "\n";
  std::cout << clipper::Euler<11>( 0.3, 0.6, 0.8 ).format() << "\n";
  std::cout << clipper::Euler<12>( 0.3, 0.6, 0.8 ).format() << "\n";
  std::cout << clipper::Euler<13>( 0.3, 0.6, 0.8 ).format() << "\n";
  std::cout << clipper::Euler<14>( 0.3, 0.6, 0.8 ).format() << "\n";
  std::cout << clipper::Euler<15>( 0.3, 0.6, 0.8 ).format() << "\n";
  std::cout << clipper::Euler<16>( 0.3, 0.6, 0.8 ).format() << "\n";
  std::cout << clipper::Euler<17>( 0.3, 0.6, 0.8 ).format() << "\n";
  std::cout << clipper::Euler<18>( 0.3, 0.6, 0.8 ).format() << "\n";
  std::cout << clipper::Euler<19>( 0.3, 0.6, 0.8 ).format() << "\n";
  std::cout << clipper::Euler<20>( 0.3, 0.6, 0.8 ).format() << "\n";
  std::cout << clipper::Euler<21>( 0.3, 0.6, 0.8 ).format() << "\n";
  std::cout << clipper::Euler<22>( 0.3, 0.6, 0.8 ).format() << "\n";
  std::cout << clipper::Euler<23>( 0.3, 0.6, 0.8 ).format() << "\n";

  for ( double u = 0.0; u < 5.0; u+=0.01 ) {
    clipper::Rotation r( fmod(3*u,1.0)-0.5, fmod(7*u,1.0)-0.5, fmod(13*u,1.0)-0.5, fmod(19*u,1.0)-0.5 );
    r.norm();
    std::cout << clipper::Util::rad2d(r.abs_angle()) << "\t" << r.polar_ccp4().format() << "\n";
  }
  */
}