1; File: "nucleic2.scm"
2;
3; Author: Marc Feeley (feeley@iro.umontreal.ca)
4; Last modification by Feeley: June 6, 1994.
5; Modified for R5RS Scheme by William D Clinger: 22 October 1996.
6; Last modification by Clinger: 19 March 1999.
7;
8; This program is a modified version of the program described in
9;
10;   M. Feeley, M. Turcotte, G. Lapalme.  Using Multilisp for Solving
11;   Constraint Satisfaction Problems: an Application to Nucleic Acid 3D
12;   Structure Determination.  Lisp and Symbolic Computation 7(2/3),
13;   231-246, 1994.
14;
15; The differences between this program and the original are described in
16;
17;   P.H. Hartel, M. Feeley, et al.  Benchmarking Implementations of
18;   Functional Languages with "Pseudoknot", a Float-Intensive Benchmark.
19;   Journal of Functional Programming 6(4), 621-655, 1996.
20
21; This procedure uses Marc Feeley's run-benchmark procedure to time
22; the benchmark.
23
24; PORTABILITY.
25;
26; This program should run in any R5RS-conforming implementation of Scheme.
27; To run this program in an implementation that does not support the R5RS
28; macro system, however, you will have to place a single quotation mark (')
29; on the following line and also modify the "SYSTEM DEPENDENT CODE" below.
30
31; ********** R5RS Scheme
32
33(begin
34
35(define-syntax FLOAT+    (syntax-rules () ((FLOAT+ x ...) (+ x ...))))
36(define-syntax FLOAT-    (syntax-rules () ((FLOAT- x ...) (- x ...))))
37(define-syntax FLOAT*    (syntax-rules () ((FLOAT* x ...) (* x ...))))
38(define-syntax FLOAT/    (syntax-rules () ((FLOAT/ x ...) (/ x ...))))
39(define-syntax FLOAT=    (syntax-rules () ((FLOAT=  x y)  (=  x y))))
40(define-syntax FLOAT<    (syntax-rules () ((FLOAT<  x y)  (<  x y))))
41(define-syntax FLOAT<=   (syntax-rules () ((FLOAT<= x y)  (<= x y))))
42(define-syntax FLOAT>    (syntax-rules () ((FLOAT>  x y)  (>  x y))))
43(define-syntax FLOAT>=   (syntax-rules () ((FLOAT>= x y)  (>= x y))))
44(define-syntax FLOATsin  (syntax-rules () ((FLOATsin  x)  (sin  x))))
45(define-syntax FLOATcos  (syntax-rules () ((FLOATcos  x)  (cos  x))))
46(define-syntax FLOATatan (syntax-rules () ((FLOATatan x)  (atan x))))
47(define-syntax FLOATsqrt (syntax-rules () ((FLOATsqrt x)  (sqrt x))))
48
49(define-syntax FUTURE    (syntax-rules () ((FUTURE x) x)))
50(define-syntax TOUCH     (syntax-rules () ((TOUCH x)  x)))
51
52(define-syntax define-structure
53  (syntax-rules ()
54    ((define-structure #f
55       name make make-constant (select1 ...) (set1 ...))
56     (begin (define-syntax make
57              (syntax-rules ()
58                ((make select1 ...)
59                 (vector select1 ...))))
60            (define-syntax make-constant
61              (syntax-rules ()
62                ; The vectors that are passed to make-constant aren't quoted.
63                ((make-constant . args)
64                 (constant-maker make . args))))
65            (define-selectors (select1 ...)
66                              (0 1 2 3 4 5 6 7 8 9
67                               10 11 12 13 14 15 16 17 18 19
68                               20 21 22 23 24 25 26 27 28 29
69                               30 31 32 33 34 35 36 37 38 39
70                               40 41 42 43 44 45 46 47 48 49))
71            (define-setters   (set1 ...)
72                              (0 1 2 3 4 5 6 7 8 9
73                               10 11 12 13 14 15 16 17 18 19
74                               20 21 22 23 24 25 26 27 28 29
75                               30 31 32 33 34 35 36 37 38 39
76                               40 41 42 43 44 45 46 47 48 49))))
77    ((define-structure pred?
78       name make make-constant (select1 ...) (set1 ...))
79     (begin (define-syntax pred?
80              (syntax-rules ()
81                ((pred? v)
82                 (and (vector? v) (eq? (vector-ref v 0) 'name)))))
83            (define-syntax make
84              (syntax-rules ()
85                ((make select1 ...)
86                 (vector 'name select1 ...))))
87            (define-syntax make-constant
88              (syntax-rules ()
89                ; The vectors that are passed to make-constant aren't quoted.
90                ((make-constant . args)
91                 (constant-maker make . args))))
92            (define-selectors (select1 ...)
93                              (1 2 3 4 5 6 7 8 9
94                               10 11 12 13 14 15 16 17 18 19
95                               20 21 22 23 24 25 26 27 28 29
96                               30 31 32 33 34 35 36 37 38 39
97                               40 41 42 43 44 45 46 47 48 49))
98            (define-setters   (set1 ...)
99                              (1 2 3 4 5 6 7 8 9
100                               10 11 12 13 14 15 16 17 18 19
101                               20 21 22 23 24 25 26 27 28 29
102                               30 31 32 33 34 35 36 37 38 39
103                               40 41 42 43 44 45 46 47 48 49))))))
104(define-syntax constant-maker
105  (syntax-rules ()
106    ; The quotation marks are added here.
107    ((constant-maker make arg ...)
108     (make 'arg ...))))
109(define-syntax define-selectors
110  (syntax-rules ()
111    ((define-selectors (select) (i i1 ...))
112     (define-syntax select
113       (syntax-rules ()
114         ((select v) (vector-ref v i)))))
115    ((define-selectors (select select1 ...) (i i1 ...))
116     (begin (define-syntax select
117              (syntax-rules ()
118                ((select v) (vector-ref v i))))
119            (define-selectors (select1 ...) (i1 ...))))))
120(define-syntax define-setters
121  (syntax-rules ()
122    ((define-setters (set) (i i1 ...))
123     (define-syntax set
124       (syntax-rules ()
125         ((set v x) (vector-set! v i x)))))
126    ((define-setters (set set1 ...) (i i1 ...))
127     (begin (define-syntax set
128              (syntax-rules ()
129                ((set v x) (vector-set! v i x))))
130            (define-setters (set1 ...) (i1 ...))))))
131
132(define-structure #f pt
133  make-pt make-constant-pt
134  (pt-x pt-y pt-z)
135  (pt-x-set! pt-y-set! pt-z-set!))
136
137(define-structure #f tfo
138  make-tfo make-constant-tfo
139  (tfo-a tfo-b tfo-c tfo-d tfo-e tfo-f tfo-g tfo-h tfo-i tfo-tx tfo-ty tfo-tz)
140  (tfo-a-set! tfo-b-set! tfo-c-set! tfo-d-set! tfo-e-set! tfo-f-set!
141   tfo-g-set! tfo-h-set! tfo-i-set! tfo-tx-set! tfo-ty-set! tfo-tz-set!))
142
143(define-structure nuc? nuc
144  make-nuc make-constant-nuc
145  (nuc-dgf-base-tfo  ; defines the standard position for wc and wc-dumas
146   nuc-P-O3*-275-tfo ; defines the standard position for the connect function
147   nuc-P-O3*-180-tfo
148   nuc-P-O3*-60-tfo
149   nuc-P nuc-O1P nuc-O2P nuc-O5* nuc-C5*
150   nuc-H5* nuc-H5**
151   nuc-C4* nuc-H4* nuc-O4* nuc-C1* nuc-H1*
152   nuc-C2* nuc-H2**
153   nuc-O2* nuc-H2* nuc-C3* nuc-H3* nuc-O3*
154   nuc-N1 nuc-N3 nuc-C2 nuc-C4 nuc-C5 nuc-C6)
155  (nuc-dgf-base-tfo-set!
156   nuc-P-O3*-275-tfo-set!
157   nuc-P-O3*-180-tfo-set!
158   nuc-P-O3*-60-tfo-set!
159   nuc-P-set! nuc-O1P-set! nuc-O2P-set! nuc-O5*-set! nuc-C5*-set!
160   nuc-H5*-set! nuc-H5**-set!
161   nuc-C4*-set! nuc-H4*-set! nuc-O4*-set! nuc-C1*-set! nuc-H1*-set!
162   nuc-C2*-set! nuc-H2**-set!
163   nuc-O2*-set! nuc-H2*-set! nuc-C3*-set! nuc-H3*-set! nuc-O3*-set!
164   nuc-N1-set! nuc-N3-set! nuc-C2-set! nuc-C4-set! nuc-C5-set! nuc-C6-set!))
165
166(define-structure rA? rA
167  make-rA make-constant-rA
168  (rA-dgf-base-tfo  ; defines the standard position for wc and wc-dumas
169   rA-P-O3*-275-tfo ; defines the standard position for the connect function
170   rA-P-O3*-180-tfo
171   rA-P-O3*-60-tfo
172   rA-P rA-O1P rA-O2P rA-O5* rA-C5*
173   rA-H5* rA-H5**
174   rA-C4* rA-H4* rA-O4* rA-C1* rA-H1*
175   rA-C2* rA-H2**
176   rA-O2* rA-H2* rA-C3* rA-H3* rA-O3*
177   rA-N1 rA-N3 rA-C2 rA-C4 rA-C5 rA-C6
178   rA-N6 rA-N7 rA-N9 rA-C8
179   rA-H2 rA-H61 rA-H62 rA-H8)
180  (rA-dgf-base-tfo-set!
181   rA-P-O3*-275-tfo-set!
182   rA-P-O3*-180-tfo-set!
183   rA-P-O3*-60-tfo-set!
184   rA-P-set! rA-O1P-set! rA-O2P-set! rA-O5*-set! rA-C5*-set!
185   rA-H5*-set! rA-H5**-set!
186   rA-C4*-set! rA-H4*-set! rA-O4*-set! rA-C1*-set! rA-H1*-set!
187   rA-C2*-set! rA-H2**-set!
188   rA-O2*-set! rA-H2*-set! rA-C3*-set! rA-H3*-set! rA-O3*-set!
189   rA-N1-set! rA-N3-set! rA-C2-set! rA-C4-set! rA-C5-set! rA-C6-set!
190   rA-N6-set! rA-N7-set! rA-N9-set! rA-C8-set!
191   rA-H2-set! rA-H61-set! rA-H62-set! rA-H8-set!))
192
193(define-structure rC? rC
194  make-rC make-constant-rC
195  (rC-dgf-base-tfo  ; defines the standard position for wc and wc-dumas
196   rC-P-O3*-275-tfo ; defines the standard position for the connect function
197   rC-P-O3*-180-tfo
198   rC-P-O3*-60-tfo
199   rC-P rC-O1P rC-O2P rC-O5* rC-C5*
200   rC-H5* rC-H5**
201   rC-C4* rC-H4* rC-O4* rC-C1* rC-H1*
202   rC-C2* rC-H2**
203   rC-O2* rC-H2* rC-C3* rC-H3* rC-O3*
204   rC-N1 rC-N3 rC-C2 rC-C4 rC-C5 rC-C6
205   rC-N4 rC-O2 rC-H41 rC-H42 rC-H5 rC-H6)
206  (rC-dgf-base-tfo-set!
207   rC-P-O3*-275-tfo-set!
208   rC-P-O3*-180-tfo-set!
209   rC-P-O3*-60-tfo-set!
210   rC-P-set! rC-O1P-set! rC-O2P-set! rC-O5*-set! rC-C5*-set!
211   rC-H5*-set! rC-H5**-set!
212   rC-C4*-set! rC-H4*-set! rC-O4*-set! rC-C1*-set! rC-H1*-set!
213   rC-C2*-set! rC-H2**-set!
214   rC-O2*-set! rC-H2*-set! rC-C3*-set! rC-H3*-set! rC-O3*-set!
215   rC-N1-set! rC-N3-set! rC-C2-set! rC-C4-set! rC-C5-set! rC-C6-set!
216   rC-N4-set! rC-O2-set! rC-H41-set! rC-H42-set! rC-H5-set! rC-H6-set!))
217
218(define-structure rG? rG
219  make-rG make-constant-rG
220  (rG-dgf-base-tfo  ; defines the standard position for wc and wc-dumas
221   rG-P-O3*-275-tfo ; defines the standard position for the connect function
222   rG-P-O3*-180-tfo
223   rG-P-O3*-60-tfo
224   rG-P rG-O1P rG-O2P rG-O5* rG-C5*
225   rG-H5* rG-H5**
226   rG-C4* rG-H4* rG-O4* rG-C1* rG-H1*
227   rG-C2* rG-H2**
228   rG-O2* rG-H2* rG-C3* rG-H3* rG-O3*
229   rG-N1 rG-N3 rG-C2 rG-C4 rG-C5 rG-C6
230   rG-N2 rG-N7 rG-N9 rG-C8 rG-O6
231   rG-H1 rG-H21 rG-H22 rG-H8)
232  (rG-dgf-base-tfo-set!
233   rG-P-O3*-275-tfo-set!
234   rG-P-O3*-180-tfo-set!
235   rG-P-O3*-60-tfo-set!
236   rG-P-set! rG-O1P-set! rG-O2P-set! rG-O5*-set! rG-C5*-set!
237   rG-H5*-set! rG-H5**-set!
238   rG-C4*-set! rG-H4*-set! rG-O4*-set! rG-C1*-set! rG-H1*-set!
239   rG-C2*-set! rG-H2**-set!
240   rG-O2*-set! rG-H2*-set! rG-C3*-set! rG-H3*-set! rG-O3*-set!
241   rG-N1-set! rG-N3-set! rG-C2-set! rG-C4-set! rG-C5-set! rG-C6-set!
242   rG-N2-set! rG-N7-set! rG-N9-set! rG-C8-set! rG-O6-set!
243   rG-H1-set! rG-H21-set! rG-H22-set! rG-H8-set!))
244
245(define-structure rU? rU
246  make-rU make-constant-rU
247  (rU-dgf-base-tfo  ; defines the standard position for wc and wc-dumas
248   rU-P-O3*-275-tfo ; defines the standard position for the connect function
249   rU-P-O3*-180-tfo
250   rU-P-O3*-60-tfo
251   rU-P rU-O1P rU-O2P rU-O5* rU-C5*
252   rU-H5* rU-H5**
253   rU-C4* rU-H4* rU-O4* rU-C1* rU-H1*
254   rU-C2* rU-H2**
255   rU-O2* rU-H2* rU-C3* rU-H3* rU-O3*
256   rU-N1 rU-N3 rU-C2 rU-C4 rU-C5 rU-C6
257   rU-O2 rU-O4 rU-H3 rU-H5 rU-H6)
258  (rU-dgf-base-tfo-set!
259   rU-P-O3*-275-tfo-set!
260   rU-P-O3*-180-tfo-set!
261   rU-P-O3*-60-tfo-set!
262   rU-P-set! rU-O1P-set! rU-O2P-set! rU-O5*-set! rU-C5*-set!
263   rU-H5*-set! rU-H5**-set!
264   rU-C4*-set! rU-H4*-set! rU-O4*-set! rU-C1*-set! rU-H1*-set!
265   rU-C2*-set! rU-H2**-set!
266   rU-O2*-set! rU-H2*-set! rU-C3*-set! rU-H3*-set! rU-O3*-set!
267   rU-N1-set! rU-N3-set! rU-C2-set! rU-C4-set! rU-C5-set! rU-C6-set!
268   rU-O2-set! rU-O4-set! rU-H3-set! rU-H5-set! rU-H6-set!))
269
270(define-structure #f var
271  make-var make-constant-var
272  (var-id var-tfo var-nuc)
273  (var-id-set! var-tfo-set! var-nuc-set!))
274
275; Comment out the next three syntax definitions if you want
276; lazy computation.
277
278(define-syntax mk-var
279  (syntax-rules ()
280    ((mk-var i tfo nuc)
281     (make-var i tfo nuc))))
282
283(define-syntax absolute-pos
284  (syntax-rules ()
285    ((absolute-pos var p)
286     (tfo-apply (var-tfo var) p))))
287
288(define-syntax lazy-computation-of
289  (syntax-rules ()
290    ((lazy-computation-of expr)
291     expr)))
292
293; Uncomment the next three syntax definitions if you want
294; lazy computation.
295
296; (define-syntax mk-var
297;   (syntax-rules ()
298;     ((mk-var i tfo nuc)
299;      (make-var i tfo (make-relative-nuc tfo nuc)))))
300;
301; (define-syntax absolute-pos
302;   (syntax-rules ()
303;     ((absolute-pos var p)
304;      (force p))))
305;
306; (define-syntax lazy-computation-of
307;   (syntax-rules ()
308;     ((lazy-computation-of expr)
309;      (delay expr))))
310
311(define-syntax atom-pos
312  (syntax-rules ()
313    ((atom-pos atom var)
314     (let ((v var))
315       (absolute-pos v (atom (var-nuc v)))))))
316
317)
318
319; -- MATH UTILITIES -----------------------------------------------------------
320
321(define constant-pi          3.14159265358979323846)
322(define constant-minus-pi   -3.14159265358979323846)
323(define constant-pi/2        1.57079632679489661923)
324(define constant-minus-pi/2 -1.57079632679489661923)
325
326(define (math-atan2 y x)
327  (cond ((FLOAT> x 0.0)
328         (FLOATatan (FLOAT/ y x)))
329        ((FLOAT< y 0.0)
330         (if (FLOAT= x 0.0)
331           constant-minus-pi/2
332           (FLOAT+ (FLOATatan (FLOAT/ y x)) constant-minus-pi)))
333        (else
334         (if (FLOAT= x 0.0)
335           constant-pi/2
336           (FLOAT+ (FLOATatan (FLOAT/ y x)) constant-pi)))))
337
338; -- POINTS -------------------------------------------------------------------
339
340(define (pt-sub p1 p2)
341  (make-pt (FLOAT- (pt-x p1) (pt-x p2))
342           (FLOAT- (pt-y p1) (pt-y p2))
343           (FLOAT- (pt-z p1) (pt-z p2))))
344
345(define (pt-dist p1 p2)
346  (let ((dx (FLOAT- (pt-x p1) (pt-x p2)))
347        (dy (FLOAT- (pt-y p1) (pt-y p2)))
348        (dz (FLOAT- (pt-z p1) (pt-z p2))))
349    (FLOATsqrt (FLOAT+ (FLOAT* dx dx) (FLOAT* dy dy) (FLOAT* dz dz)))))
350
351(define (pt-phi p)
352  (let* ((x (pt-x p))
353         (y (pt-y p))
354         (z (pt-z p))
355         (b (math-atan2 x z)))
356    (math-atan2 (FLOAT+ (FLOAT* (FLOATcos b) z) (FLOAT* (FLOATsin b) x)) y)))
357
358(define (pt-theta p)
359  (math-atan2 (pt-x p) (pt-z p)))
360
361; -- COORDINATE TRANSFORMATIONS -----------------------------------------------
362
363; The notation for the transformations follows "Paul, R.P. (1981) Robot
364; Manipulators.  MIT Press." with the exception that our transformation
365; matrices don't have the perspective terms and are the transpose of
366; Paul's one.  See also "M\"antyl\"a, M. (1985) An Introduction to
367; Solid Modeling, Computer Science Press" Appendix A.
368;
369; The components of a transformation matrix are named like this:
370;
371;  a  b  c
372;  d  e  f
373;  g  h  i
374; tx ty tz
375;
376; The components tx, ty, and tz are the translation vector.
377
378(define tfo-id  ; the identity transformation matrix
379  '#(1.0 0.0 0.0
380     0.0 1.0 0.0
381     0.0 0.0 1.0
382     0.0 0.0 0.0))
383
384; The function "tfo-apply" multiplies a transformation matrix, tfo, by a
385; point vector, p.  The result is a new point.
386
387(define (tfo-apply tfo p)
388  (let ((x (pt-x p))
389        (y (pt-y p))
390        (z (pt-z p)))
391    (make-pt
392     (FLOAT+ (FLOAT* x (tfo-a tfo))
393             (FLOAT* y (tfo-d tfo))
394             (FLOAT* z (tfo-g tfo))
395             (tfo-tx tfo))
396     (FLOAT+ (FLOAT* x (tfo-b tfo))
397             (FLOAT* y (tfo-e tfo))
398             (FLOAT* z (tfo-h tfo))
399             (tfo-ty tfo))
400     (FLOAT+ (FLOAT* x (tfo-c tfo))
401             (FLOAT* y (tfo-f tfo))
402             (FLOAT* z (tfo-i tfo))
403             (tfo-tz tfo)))))
404
405; The function "tfo-combine" multiplies two transformation matrices A and B.
406; The result is a new matrix which cumulates the transformations described
407; by A and B.
408
409(define (tfo-combine A B)
410  (make-tfo
411   (FLOAT+ (FLOAT* (tfo-a A) (tfo-a B))
412           (FLOAT* (tfo-b A) (tfo-d B))
413           (FLOAT* (tfo-c A) (tfo-g B)))
414   (FLOAT+ (FLOAT* (tfo-a A) (tfo-b B))
415           (FLOAT* (tfo-b A) (tfo-e B))
416           (FLOAT* (tfo-c A) (tfo-h B)))
417   (FLOAT+ (FLOAT* (tfo-a A) (tfo-c B))
418           (FLOAT* (tfo-b A) (tfo-f B))
419           (FLOAT* (tfo-c A) (tfo-i B)))
420   (FLOAT+ (FLOAT* (tfo-d A) (tfo-a B))
421           (FLOAT* (tfo-e A) (tfo-d B))
422           (FLOAT* (tfo-f A) (tfo-g B)))
423   (FLOAT+ (FLOAT* (tfo-d A) (tfo-b B))
424           (FLOAT* (tfo-e A) (tfo-e B))
425           (FLOAT* (tfo-f A) (tfo-h B)))
426   (FLOAT+ (FLOAT* (tfo-d A) (tfo-c B))
427           (FLOAT* (tfo-e A) (tfo-f B))
428           (FLOAT* (tfo-f A) (tfo-i B)))
429   (FLOAT+ (FLOAT* (tfo-g A) (tfo-a B))
430           (FLOAT* (tfo-h A) (tfo-d B))
431           (FLOAT* (tfo-i A) (tfo-g B)))
432   (FLOAT+ (FLOAT* (tfo-g A) (tfo-b B))
433           (FLOAT* (tfo-h A) (tfo-e B))
434           (FLOAT* (tfo-i A) (tfo-h B)))
435   (FLOAT+ (FLOAT* (tfo-g A) (tfo-c B))
436           (FLOAT* (tfo-h A) (tfo-f B))
437           (FLOAT* (tfo-i A) (tfo-i B)))
438   (FLOAT+ (FLOAT* (tfo-tx A) (tfo-a B))
439           (FLOAT* (tfo-ty A) (tfo-d B))
440           (FLOAT* (tfo-tz A) (tfo-g B))
441           (tfo-tx B))
442   (FLOAT+ (FLOAT* (tfo-tx A) (tfo-b B))
443           (FLOAT* (tfo-ty A) (tfo-e B))
444           (FLOAT* (tfo-tz A) (tfo-h B))
445           (tfo-ty B))
446   (FLOAT+ (FLOAT* (tfo-tx A) (tfo-c B))
447           (FLOAT* (tfo-ty A) (tfo-f B))
448           (FLOAT* (tfo-tz A) (tfo-i B))
449           (tfo-tz B))))
450
451; The function "tfo-inv-ortho" computes the inverse of a homogeneous
452; transformation matrix.
453
454(define (tfo-inv-ortho tfo)
455  (let* ((tx (tfo-tx tfo))
456         (ty (tfo-ty tfo))
457         (tz (tfo-tz tfo)))
458    (make-tfo
459     (tfo-a tfo) (tfo-d tfo) (tfo-g tfo)
460     (tfo-b tfo) (tfo-e tfo) (tfo-h tfo)
461     (tfo-c tfo) (tfo-f tfo) (tfo-i tfo)
462     (FLOAT- (FLOAT+ (FLOAT* (tfo-a tfo) tx)
463                     (FLOAT* (tfo-b tfo) ty)
464                     (FLOAT* (tfo-c tfo) tz)))
465     (FLOAT- (FLOAT+ (FLOAT* (tfo-d tfo) tx)
466                     (FLOAT* (tfo-e tfo) ty)
467                     (FLOAT* (tfo-f tfo) tz)))
468     (FLOAT- (FLOAT+ (FLOAT* (tfo-g tfo) tx)
469                     (FLOAT* (tfo-h tfo) ty)
470                     (FLOAT* (tfo-i tfo) tz))))))
471
472; Given three points p1, p2, and p3, the function "tfo-align" computes
473; a transformation matrix such that point p1 gets mapped to (0,0,0), p2 gets
474; mapped to the Y axis and p3 gets mapped to the YZ plane.
475
476(define (tfo-align p1 p2 p3)
477  (let* ((x1 (pt-x p1))       (y1 (pt-y p1))       (z1 (pt-z p1))
478         (x3 (pt-x p3))       (y3 (pt-y p3))       (z3 (pt-z p3))
479         (x31 (FLOAT- x3 x1)) (y31 (FLOAT- y3 y1)) (z31 (FLOAT- z3 z1))
480         (rotpY (pt-sub p2 p1))
481         (Phi (pt-phi rotpY))
482         (Theta (pt-theta rotpY))
483         (sinP (FLOATsin Phi))
484         (sinT (FLOATsin Theta))
485         (cosP (FLOATcos Phi))
486         (cosT (FLOATcos Theta))
487         (sinPsinT (FLOAT* sinP sinT))
488         (sinPcosT (FLOAT* sinP cosT))
489         (cosPsinT (FLOAT* cosP sinT))
490         (cosPcosT (FLOAT* cosP cosT))
491         (rotpZ
492          (make-pt
493           (FLOAT- (FLOAT* cosT x31)
494                   (FLOAT* sinT z31))
495           (FLOAT+ (FLOAT* sinPsinT x31)
496                   (FLOAT* cosP y31)
497                   (FLOAT* sinPcosT z31))
498           (FLOAT+ (FLOAT* cosPsinT x31)
499                   (FLOAT- (FLOAT* sinP y31))
500                   (FLOAT* cosPcosT z31))))
501         (Rho (pt-theta rotpZ))
502         (cosR (FLOATcos Rho))
503         (sinR (FLOATsin Rho))
504         (x (FLOAT+ (FLOAT- (FLOAT* x1 cosT))
505                    (FLOAT* z1 sinT)))
506         (y (FLOAT- (FLOAT- (FLOAT- (FLOAT* x1 sinPsinT))
507                            (FLOAT* y1 cosP))
508                    (FLOAT* z1 sinPcosT)))
509         (z (FLOAT- (FLOAT+ (FLOAT- (FLOAT* x1 cosPsinT))
510                            (FLOAT* y1 sinP))
511                    (FLOAT* z1 cosPcosT))))
512    (make-tfo
513     (FLOAT- (FLOAT* cosT cosR) (FLOAT* cosPsinT sinR))
514     sinPsinT
515     (FLOAT+ (FLOAT* cosT sinR) (FLOAT* cosPsinT cosR))
516     (FLOAT* sinP sinR)
517     cosP
518     (FLOAT- (FLOAT* sinP cosR))
519     (FLOAT- (FLOAT- (FLOAT* sinT cosR)) (FLOAT* cosPcosT sinR))
520     sinPcosT
521     (FLOAT+ (FLOAT- (FLOAT* sinT sinR)) (FLOAT* cosPcosT cosR))
522     (FLOAT- (FLOAT* x cosR) (FLOAT* z sinR))
523     y
524     (FLOAT+ (FLOAT* x sinR) (FLOAT* z cosR)))))
525
526; -- NUCLEIC ACID CONFORMATIONS DATA BASE -------------------------------------
527
528; Numbering of atoms follows the paper:
529;
530; IUPAC-IUB Joint Commission on Biochemical Nomenclature (JCBN)
531; (1983) Abbreviations and Symbols for the Description of
532; Conformations of Polynucleotide Chains.  Eur. J. Biochem 131,
533; 9-15.
534;
535; In the atom names, we have used "*" instead of "'".
536
537; Define part common to all 4 nucleotide types.
538
539; Define remaining atoms for each nucleotide type.
540
541; Database of nucleotide conformations:
542
543(define rA
544  (make-constant-rA
545    #( -0.0018  -0.8207   0.5714  ; dgf-base-tfo
546        0.2679  -0.5509  -0.7904
547        0.9634   0.1517   0.2209
548        0.0073   8.4030   0.6232)
549    #( -0.8143  -0.5091  -0.2788  ; P-O3*-275-tfo
550       -0.0433  -0.4257   0.9038
551       -0.5788   0.7480   0.3246
552        1.5227   6.9114  -7.0765)
553    #(  0.3822  -0.7477   0.5430  ; P-O3*-180-tfo
554        0.4552   0.6637   0.5935
555       -0.8042   0.0203   0.5941
556       -6.9472  -4.1186  -5.9108)
557    #(  0.5640   0.8007  -0.2022  ; P-O3*-60-tfo
558       -0.8247   0.5587  -0.0878
559        0.0426   0.2162   0.9754
560        6.2694  -7.0540   3.3316)
561    #(  2.8930   8.5380  -3.3280) ; P
562    #(  1.6980   7.6960  -3.5570) ; O1P
563    #(  3.2260   9.5010  -4.4020) ; O2P
564    #(  4.1590   7.6040  -3.0340) ; O5*
565    #(  5.4550   8.2120  -2.8810) ; C5*
566    #(  5.4546   8.8508  -1.9978) ; H5*
567    #(  5.7588   8.6625  -3.8259) ; H5**
568    #(  6.4970   7.1480  -2.5980) ; C4*
569    #(  7.4896   7.5919  -2.5214) ; H4*
570    #(  6.1630   6.4860  -1.3440) ; O4*
571    #(  6.5400   5.1200  -1.4190) ; C1*
572    #(  7.2763   4.9681  -0.6297) ; H1*
573    #(  7.1940   4.8830  -2.7770) ; C2*
574    #(  6.8667   3.9183  -3.1647) ; H2**
575    #(  8.5860   5.0910  -2.6140) ; O2*
576    #(  8.9510   4.7626  -1.7890) ; H2*
577    #(  6.5720   6.0040  -3.6090) ; C3*
578    #(  5.5636   5.7066  -3.8966) ; H3*
579    #(  7.3801   6.3562  -4.7350) ; O3*
580    #(  4.7150   0.4910  -0.1360) ; N1
581    #(  6.3490   2.1730  -0.6020) ; N3
582    #(  5.9530   0.9650  -0.2670) ; C2
583    #(  5.2900   2.9790  -0.8260) ; C4
584    #(  3.9720   2.6390  -0.7330) ; C5
585    #(  3.6770   1.3160  -0.3660) ; C6
586    #(  2.4280   0.8450  -0.2360) ; N6
587    #(  3.1660   3.7290  -1.0360) ; N7
588    #(  5.3170   4.2990  -1.1930) ; N9
589    #(  4.0100   4.6780  -1.2990) ; C8
590    #(  6.6890   0.1903  -0.0518) ; H2
591    #(  1.6470   1.4460  -0.4040) ; H61
592    #(  2.2780  -0.1080  -0.0280) ; H62
593    #(  3.4421   5.5744  -1.5482) ; H8
594  ))
595
596(define rA01
597  (make-constant-rA
598    #( -0.0043  -0.8175   0.5759  ; dgf-base-tfo
599        0.2617  -0.5567  -0.7884
600        0.9651   0.1473   0.2164
601        0.0359   8.3929   0.5532)
602    #( -0.8143  -0.5091  -0.2788  ; P-O3*-275-tfo
603       -0.0433  -0.4257   0.9038
604       -0.5788   0.7480   0.3246
605        1.5227   6.9114  -7.0765)
606    #(  0.3822  -0.7477   0.5430  ; P-O3*-180-tfo
607        0.4552   0.6637   0.5935
608       -0.8042   0.0203   0.5941
609       -6.9472  -4.1186  -5.9108)
610    #(  0.5640   0.8007  -0.2022  ; P-O3*-60-tfo
611       -0.8247   0.5587  -0.0878
612        0.0426   0.2162   0.9754
613        6.2694  -7.0540   3.3316)
614    #(  2.8930   8.5380  -3.3280) ; P
615    #(  1.6980   7.6960  -3.5570) ; O1P
616    #(  3.2260   9.5010  -4.4020) ; O2P
617    #(  4.1590   7.6040  -3.0340) ; O5*
618    #(  5.4352   8.2183  -2.7757) ; C5*
619    #(  5.3830   8.7883  -1.8481) ; H5*
620    #(  5.7729   8.7436  -3.6691) ; H5**
621    #(  6.4830   7.1518  -2.5252) ; C4*
622    #(  7.4749   7.5972  -2.4482) ; H4*
623    #(  6.1626   6.4620  -1.2827) ; O4*
624    #(  6.5431   5.0992  -1.3905) ; C1*
625    #(  7.2871   4.9328  -0.6114) ; H1*
626    #(  7.1852   4.8935  -2.7592) ; C2*
627    #(  6.8573   3.9363  -3.1645) ; H2**
628    #(  8.5780   5.1025  -2.6046) ; O2*
629    #(  8.9516   4.7577  -1.7902) ; H2*
630    #(  6.5522   6.0300  -3.5612) ; C3*
631    #(  5.5420   5.7356  -3.8459) ; H3*
632    #(  7.3487   6.4089  -4.6867) ; O3*
633    #(  4.7442   0.4514  -0.1390) ; N1
634    #(  6.3687   2.1459  -0.5926) ; N3
635    #(  5.9795   0.9335  -0.2657) ; C2
636    #(  5.3052   2.9471  -0.8125) ; C4
637    #(  3.9891   2.5987  -0.7230) ; C5
638    #(  3.7016   1.2717  -0.3647) ; C6
639    #(  2.4553   0.7925  -0.2390) ; N6
640    #(  3.1770   3.6859  -1.0198) ; N7
641    #(  5.3247   4.2695  -1.1710) ; N9
642    #(  4.0156   4.6415  -1.2759) ; C8
643    #(  6.7198   0.1618  -0.0547) ; H2
644    #(  1.6709   1.3900  -0.4039) ; H61
645    #(  2.3107  -0.1627  -0.0373) ; H62
646    #(  3.4426   5.5361  -1.5199) ; H8
647  ))
648
649(define rA02
650  (make-constant-rA
651    #(  0.5566   0.0449   0.8296  ; dgf-base-tfo
652        0.5125   0.7673  -0.3854
653       -0.6538   0.6397   0.4041
654       -9.1161  -3.7679  -2.9968)
655    #( -0.8143  -0.5091  -0.2788  ; P-O3*-275-tfo
656       -0.0433  -0.4257   0.9038
657       -0.5788   0.7480   0.3246
658        1.5227   6.9114  -7.0765)
659    #(  0.3822  -0.7477   0.5430  ; P-O3*-180-tfo
660        0.4552   0.6637   0.5935
661       -0.8042   0.0203   0.5941
662       -6.9472  -4.1186  -5.9108)
663    #(  0.5640   0.8007  -0.2022  ; P-O3*-60-tfo
664       -0.8247   0.5587  -0.0878
665        0.0426   0.2162   0.9754
666        6.2694  -7.0540   3.3316)
667    #(  2.8930   8.5380  -3.3280) ; P
668    #(  1.6980   7.6960  -3.5570) ; O1P
669    #(  3.2260   9.5010  -4.4020) ; O2P
670    #(  4.1590   7.6040  -3.0340) ; O5*
671    #(  4.5778   6.6594  -4.0364) ; C5*
672    #(  4.9220   7.1963  -4.9204) ; H5*
673    #(  3.7996   5.9091  -4.1764) ; H5**
674    #(  5.7873   5.8869  -3.5482) ; C4*
675    #(  6.0405   5.0875  -4.2446) ; H4*
676    #(  6.9135   6.8036  -3.4310) ; O4*
677    #(  7.7293   6.4084  -2.3392) ; C1*
678    #(  8.7078   6.1815  -2.7624) ; H1*
679    #(  7.1305   5.1418  -1.7347) ; C2*
680    #(  7.2040   5.1982  -0.6486) ; H2**
681    #(  7.7417   4.0392  -2.3813) ; O2*
682    #(  8.6785   4.1443  -2.5630) ; H2*
683    #(  5.6666   5.2728  -2.1536) ; C3*
684    #(  5.1747   5.9805  -1.4863) ; H3*
685    #(  4.9997   4.0086  -2.1973) ; O3*
686    #( 10.3245   8.5459   1.5467) ; N1
687    #(  9.8051   6.9432  -0.1497) ; N3
688    #( 10.5175   7.4328   0.8408) ; C2
689    #(  8.7523   7.7422  -0.4228) ; C4
690    #(  8.4257   8.9060   0.2099) ; C5
691    #(  9.2665   9.3242   1.2540) ; C6
692    #(  9.0664  10.4462   1.9610) ; N6
693    #(  7.2750   9.4537  -0.3428) ; N7
694    #(  7.7962   7.5519  -1.3859) ; N9
695    #(  6.9479   8.6157  -1.2771) ; C8
696    #( 11.4063   6.9047   1.1859) ; H2
697    #(  8.2845  11.0341   1.7552) ; H61
698    #(  9.6584  10.6647   2.7198) ; H62
699    #(  6.0430   8.9853  -1.7594) ; H8
700  ))
701
702(define rA03
703  (make-constant-rA
704    #( -0.5021   0.0731   0.8617  ; dgf-base-tfo
705       -0.8112   0.3054  -0.4986
706       -0.2996  -0.9494  -0.0940
707        6.4273  -5.1944  -3.7807)
708    #( -0.8143  -0.5091  -0.2788  ; P-O3*-275-tfo
709       -0.0433  -0.4257   0.9038
710       -0.5788   0.7480   0.3246
711        1.5227   6.9114  -7.0765)
712    #(  0.3822  -0.7477   0.5430  ; P-O3*-180-tfo
713        0.4552   0.6637   0.5935
714       -0.8042   0.0203   0.5941
715       -6.9472  -4.1186  -5.9108)
716    #(  0.5640   0.8007  -0.2022  ; P-O3*-60-tfo
717       -0.8247   0.5587  -0.0878
718        0.0426   0.2162   0.9754
719        6.2694  -7.0540   3.3316)
720    #(  2.8930   8.5380  -3.3280) ; P
721    #(  1.6980   7.6960  -3.5570) ; O1P
722    #(  3.2260   9.5010  -4.4020) ; O2P
723    #(  4.1590   7.6040  -3.0340) ; O5*
724    #(  4.1214   6.7116  -1.9049) ; C5*
725    #(  3.3465   5.9610  -2.0607) ; H5*
726    #(  4.0789   7.2928  -0.9837) ; H5**
727    #(  5.4170   5.9293  -1.8186) ; C4*
728    #(  5.4506   5.3400  -0.9023) ; H4*
729    #(  5.5067   5.0417  -2.9703) ; O4*
730    #(  6.8650   4.9152  -3.3612) ; C1*
731    #(  7.1090   3.8577  -3.2603) ; H1*
732    #(  7.7152   5.7282  -2.3894) ; C2*
733    #(  8.5029   6.2356  -2.9463) ; H2**
734    #(  8.1036   4.8568  -1.3419) ; O2*
735    #(  8.3270   3.9651  -1.6184) ; H2*
736    #(  6.7003   6.7565  -1.8911) ; C3*
737    #(  6.5898   7.5329  -2.6482) ; H3*
738    #(  7.0505   7.2878  -0.6105) ; O3*
739    #(  9.6740   4.7656  -7.6614) ; N1
740    #(  9.0739   4.3013  -5.3941) ; N3
741    #(  9.8416   4.2192  -6.4581) ; C2
742    #(  7.9885   5.0632  -5.6446) ; C4
743    #(  7.6822   5.6856  -6.8194) ; C5
744    #(  8.5831   5.5215  -7.8840) ; C6
745    #(  8.4084   6.0747  -9.0933) ; N6
746    #(  6.4857   6.3816  -6.7035) ; N7
747    #(  6.9740   5.3703  -4.7760) ; N9
748    #(  6.1133   6.1613  -5.4808) ; C8
749    #( 10.7627   3.6375  -6.4220) ; H2
750    #(  7.6031   6.6390  -9.2733) ; H61
751    #(  9.1004   5.9708  -9.7893) ; H62
752    #(  5.1705   6.6830  -5.3167) ; H8
753  ))
754
755(define rA04
756  (make-constant-rA
757    #( -0.5426  -0.8175   0.1929  ; dgf-base-tfo
758        0.8304  -0.5567  -0.0237
759        0.1267   0.1473   0.9809
760       -0.5075   8.3929   0.2229)
761    #( -0.8143  -0.5091  -0.2788  ; P-O3*-275-tfo
762       -0.0433  -0.4257   0.9038
763       -0.5788   0.7480   0.3246
764        1.5227   6.9114  -7.0765)
765    #(  0.3822  -0.7477   0.5430  ; P-O3*-180-tfo
766        0.4552   0.6637   0.5935
767       -0.8042   0.0203   0.5941
768       -6.9472  -4.1186  -5.9108)
769    #(  0.5640   0.8007  -0.2022  ; P-O3*-60-tfo
770       -0.8247   0.5587  -0.0878
771        0.0426   0.2162   0.9754
772        6.2694  -7.0540   3.3316)
773    #(  2.8930   8.5380  -3.3280) ; P
774    #(  1.6980   7.6960  -3.5570) ; O1P
775    #(  3.2260   9.5010  -4.4020) ; O2P
776    #(  4.1590   7.6040  -3.0340) ; O5*
777    #(  5.4352   8.2183  -2.7757) ; C5*
778    #(  5.3830   8.7883  -1.8481) ; H5*
779    #(  5.7729   8.7436  -3.6691) ; H5**
780    #(  6.4830   7.1518  -2.5252) ; C4*
781    #(  7.4749   7.5972  -2.4482) ; H4*
782    #(  6.1626   6.4620  -1.2827) ; O4*
783    #(  6.5431   5.0992  -1.3905) ; C1*
784    #(  7.2871   4.9328  -0.6114) ; H1*
785    #(  7.1852   4.8935  -2.7592) ; C2*
786    #(  6.8573   3.9363  -3.1645) ; H2**
787    #(  8.5780   5.1025  -2.6046) ; O2*
788    #(  8.9516   4.7577  -1.7902) ; H2*
789    #(  6.5522   6.0300  -3.5612) ; C3*
790    #(  5.5420   5.7356  -3.8459) ; H3*
791    #(  7.3487   6.4089  -4.6867) ; O3*
792    #(  3.6343   2.6680   2.0783) ; N1
793    #(  5.4505   3.9805   1.2446) ; N3
794    #(  4.7540   3.3816   2.1851) ; C2
795    #(  4.8805   3.7951   0.0354) ; C4
796    #(  3.7416   3.0925  -0.2305) ; C5
797    #(  3.0873   2.4980   0.8606) ; C6
798    #(  1.9600   1.7805   0.7462) ; N6
799    #(  3.4605   3.1184  -1.5906) ; N7
800    #(  5.3247   4.2695  -1.1710) ; N9
801    #(  4.4244   3.8244  -2.0953) ; C8
802    #(  5.0814   3.4352   3.2234) ; H2
803    #(  1.5423   1.6454  -0.1520) ; H61
804    #(  1.5716   1.3398   1.5392) ; H62
805    #(  4.2675   3.8876  -3.1721) ; H8
806  ))
807
808(define rA05
809  (make-constant-rA
810    #( -0.5891   0.0449   0.8068  ; dgf-base-tfo
811        0.5375   0.7673   0.3498
812       -0.6034   0.6397  -0.4762
813       -0.3019  -3.7679  -9.5913)
814    #( -0.8143  -0.5091  -0.2788  ; P-O3*-275-tfo
815       -0.0433  -0.4257   0.9038
816       -0.5788   0.7480   0.3246
817        1.5227   6.9114  -7.0765)
818    #(  0.3822  -0.7477   0.5430  ; P-O3*-180-tfo
819        0.4552   0.6637   0.5935
820       -0.8042   0.0203   0.5941
821       -6.9472  -4.1186  -5.9108)
822    #(  0.5640   0.8007  -0.2022  ; P-O3*-60-tfo
823       -0.8247   0.5587  -0.0878
824        0.0426   0.2162   0.9754
825        6.2694  -7.0540   3.3316)
826    #(  2.8930   8.5380  -3.3280) ; P
827    #(  1.6980   7.6960  -3.5570) ; O1P
828    #(  3.2260   9.5010  -4.4020) ; O2P
829    #(  4.1590   7.6040  -3.0340) ; O5*
830    #(  4.5778   6.6594  -4.0364) ; C5*
831    #(  4.9220   7.1963  -4.9204) ; H5*
832    #(  3.7996   5.9091  -4.1764) ; H5**
833    #(  5.7873   5.8869  -3.5482) ; C4*
834    #(  6.0405   5.0875  -4.2446) ; H4*
835    #(  6.9135   6.8036  -3.4310) ; O4*
836    #(  7.7293   6.4084  -2.3392) ; C1*
837    #(  8.7078   6.1815  -2.7624) ; H1*
838    #(  7.1305   5.1418  -1.7347) ; C2*
839    #(  7.2040   5.1982  -0.6486) ; H2**
840    #(  7.7417   4.0392  -2.3813) ; O2*
841    #(  8.6785   4.1443  -2.5630) ; H2*
842    #(  5.6666   5.2728  -2.1536) ; C3*
843    #(  5.1747   5.9805  -1.4863) ; H3*
844    #(  4.9997   4.0086  -2.1973) ; O3*
845    #( 10.2594  10.6774  -1.0056) ; N1
846    #(  9.7528   8.7080  -2.2631) ; N3
847    #( 10.4471   9.7876  -1.9791) ; C2
848    #(  8.7271   8.5575  -1.3991) ; C4
849    #(  8.4100   9.3803  -0.3580) ; C5
850    #(  9.2294  10.5030  -0.1574) ; C6
851    #(  9.0349  11.3951   0.8250) ; N6
852    #(  7.2891   8.9068   0.3121) ; N7
853    #(  7.7962   7.5519  -1.3859) ; N9
854    #(  6.9702   7.8292  -0.3353) ; C8
855    #( 11.3132  10.0537  -2.5851) ; H2
856    #(  8.2741  11.2784   1.4629) ; H61
857    #(  9.6733  12.1368   0.9529) ; H62
858    #(  6.0888   7.3990   0.1403) ; H8
859  ))
860
861(define rA06
862  (make-constant-rA
863    #( -0.9815   0.0731  -0.1772  ; dgf-base-tfo
864        0.1912   0.3054  -0.9328
865       -0.0141  -0.9494  -0.3137
866        5.7506  -5.1944   4.7470)
867    #( -0.8143  -0.5091  -0.2788  ; P-O3*-275-tfo
868       -0.0433  -0.4257   0.9038
869       -0.5788   0.7480   0.3246
870        1.5227   6.9114  -7.0765)
871    #(  0.3822  -0.7477   0.5430  ; P-O3*-180-tfo
872        0.4552   0.6637   0.5935
873       -0.8042   0.0203   0.5941
874       -6.9472  -4.1186  -5.9108)
875    #(  0.5640   0.8007  -0.2022  ; P-O3*-60-tfo
876       -0.8247   0.5587  -0.0878
877        0.0426   0.2162   0.9754
878        6.2694  -7.0540   3.3316)
879    #(  2.8930   8.5380  -3.3280) ; P
880    #(  1.6980   7.6960  -3.5570) ; O1P
881    #(  3.2260   9.5010  -4.4020) ; O2P
882    #(  4.1590   7.6040  -3.0340) ; O5*
883    #(  4.1214   6.7116  -1.9049) ; C5*
884    #(  3.3465   5.9610  -2.0607) ; H5*
885    #(  4.0789   7.2928  -0.9837) ; H5**
886    #(  5.4170   5.9293  -1.8186) ; C4*
887    #(  5.4506   5.3400  -0.9023) ; H4*
888    #(  5.5067   5.0417  -2.9703) ; O4*
889    #(  6.8650   4.9152  -3.3612) ; C1*
890    #(  7.1090   3.8577  -3.2603) ; H1*
891    #(  7.7152   5.7282  -2.3894) ; C2*
892    #(  8.5029   6.2356  -2.9463) ; H2**
893    #(  8.1036   4.8568  -1.3419) ; O2*
894    #(  8.3270   3.9651  -1.6184) ; H2*
895    #(  6.7003   6.7565  -1.8911) ; C3*
896    #(  6.5898   7.5329  -2.6482) ; H3*
897    #(  7.0505   7.2878  -0.6105) ; O3*
898    #(  6.6624   3.5061  -8.2986) ; N1
899    #(  6.5810   3.2570  -5.9221) ; N3
900    #(  6.5151   2.8263  -7.1625) ; C2
901    #(  6.8364   4.5817  -5.8882) ; C4
902    #(  7.0116   5.4064  -6.9609) ; C5
903    #(  6.9173   4.8260  -8.2361) ; C6
904    #(  7.0668   5.5163  -9.3763) ; N6
905    #(  7.2573   6.7070  -6.5394) ; N7
906    #(  6.9740   5.3703  -4.7760) ; N9
907    #(  7.2238   6.6275  -5.2453) ; C8
908    #(  6.3146   1.7741  -7.3641) ; H2
909    #(  7.2568   6.4972  -9.3456) ; H61
910    #(  7.0437   5.0478 -10.2446) ; H62
911    #(  7.4108   7.6227  -4.8418) ; H8
912  ))
913
914(define rA07
915  (make-constant-rA
916    #(  0.2379   0.1310  -0.9624  ; dgf-base-tfo
917       -0.5876  -0.7696  -0.2499
918       -0.7734   0.6249  -0.1061
919       30.9870 -26.9344  42.6416)
920    #(  0.7529   0.1548   0.6397  ; P-O3*-275-tfo
921        0.2952  -0.9481  -0.1180
922        0.5882   0.2777  -0.7595
923      -58.8919 -11.3095   6.0866)
924    #( -0.0239   0.9667  -0.2546  ; P-O3*-180-tfo
925        0.9731  -0.0359  -0.2275
926       -0.2290  -0.2532  -0.9399
927        3.5401 -29.7913  52.2796)
928    #( -0.8912  -0.4531   0.0242  ; P-O3*-60-tfo
929       -0.1183   0.1805  -0.9764
930        0.4380  -0.8730  -0.2145
931       19.9023  54.8054  15.2799)
932    #( 41.8210   8.3880  43.5890) ; P
933    #( 42.5400   8.0450  44.8330) ; O1P
934    #( 42.2470   9.6920  42.9910) ; O2P
935    #( 40.2550   8.2030  43.7340) ; O5*
936    #( 39.3505   8.4697  42.6565) ; C5*
937    #( 39.1377   7.5433  42.1230) ; H5*
938    #( 39.7203   9.3119  42.0717) ; H5**
939    #( 38.0405   8.9195  43.2869) ; C4*
940    #( 37.3687   9.3036  42.5193) ; H4*
941    #( 37.4319   7.8146  43.9387) ; O4*
942    #( 37.1959   8.1354  45.3237) ; C1*
943    #( 36.1788   8.5202  45.3970) ; H1*
944    #( 38.1721   9.2328  45.6504) ; C2*
945    #( 39.1555   8.7939  45.8188) ; H2**
946    #( 37.7862  10.0617  46.7013) ; O2*
947    #( 37.3087   9.6229  47.4092) ; H2*
948    #( 38.1844  10.0268  44.3367) ; C3*
949    #( 39.1578  10.5054  44.2289) ; H3*
950    #( 37.0547  10.9127  44.3441) ; O3*
951    #( 34.8811   4.2072  47.5784) ; N1
952    #( 35.1084   6.1336  46.1818) ; N3
953    #( 34.4108   5.1360  46.7207) ; C2
954    #( 36.3908   6.1224  46.6053) ; C4
955    #( 36.9819   5.2334  47.4697) ; C5
956    #( 36.1786   4.1985  48.0035) ; C6
957    #( 36.6103   3.2749  48.8452) ; N6
958    #( 38.3236   5.5522  47.6595) ; N7
959    #( 37.3887   7.0024  46.2437) ; N9
960    #( 38.5055   6.6096  46.9057) ; C8
961    #( 33.3553   5.0152  46.4771) ; H2
962    #( 37.5730   3.2804  49.1507) ; H61
963    #( 35.9775   2.5638  49.1828) ; H62
964    #( 39.5461   6.9184  47.0041) ; H8
965  ))
966
967(define rA08
968  (make-constant-rA
969    #(  0.1084  -0.0895  -0.9901  ; dgf-base-tfo
970        0.9789  -0.1638   0.1220
971       -0.1731  -0.9824   0.0698
972       -2.9039  47.2655  33.0094)
973    #(  0.7529   0.1548   0.6397  ; P-O3*-275-tfo
974        0.2952  -0.9481  -0.1180
975        0.5882   0.2777  -0.7595
976      -58.8919 -11.3095   6.0866)
977    #( -0.0239   0.9667  -0.2546  ; P-O3*-180-tfo
978        0.9731  -0.0359  -0.2275
979       -0.2290  -0.2532  -0.9399
980        3.5401 -29.7913  52.2796)
981    #( -0.8912  -0.4531   0.0242  ; P-O3*-60-tfo
982       -0.1183   0.1805  -0.9764
983        0.4380  -0.8730  -0.2145
984       19.9023  54.8054  15.2799)
985    #( 41.8210   8.3880  43.5890) ; P
986    #( 42.5400   8.0450  44.8330) ; O1P
987    #( 42.2470   9.6920  42.9910) ; O2P
988    #( 40.2550   8.2030  43.7340) ; O5*
989    #( 39.4850   8.9301  44.6977) ; C5*
990    #( 39.0638   9.8199  44.2296) ; H5*
991    #( 40.0757   9.0713  45.6029) ; H5**
992    #( 38.3102   8.0414  45.0789) ; C4*
993    #( 37.7842   8.4637  45.9351) ; H4*
994    #( 37.4200   7.9453  43.9769) ; O4*
995    #( 37.2249   6.5609  43.6273) ; C1*
996    #( 36.3360   6.2168  44.1561) ; H1*
997    #( 38.4347   5.8414  44.1590) ; C2*
998    #( 39.2688   5.9974  43.4749) ; H2**
999    #( 38.2344   4.4907  44.4348) ; O2*
1000    #( 37.6374   4.0386  43.8341) ; H2*
1001    #( 38.6926   6.6079  45.4637) ; C3*
1002    #( 39.7585   6.5640  45.6877) ; H3*
1003    #( 37.8238   6.0705  46.4723) ; O3*
1004    #( 33.9162   6.2598  39.7758) ; N1
1005    #( 34.6709   6.5759  42.0215) ; N3
1006    #( 33.7257   6.5186  41.0858) ; C2
1007    #( 35.8935   6.3324  41.5018) ; C4
1008    #( 36.2105   6.0601  40.1932) ; C5
1009    #( 35.1538   6.0151  39.2537) ; C6
1010    #( 35.3088   5.7642  37.9649) ; N6
1011    #( 37.5818   5.8677  40.0507) ; N7
1012    #( 37.0932   6.3197  42.1810) ; N9
1013    #( 38.0509   6.0354  41.2635) ; C8
1014    #( 32.6830   6.6898  41.3532) ; H2
1015    #( 36.2305   5.5855  37.5925) ; H61
1016    #( 34.5056   5.7512  37.3528) ; H62
1017    #( 39.1318   5.8993  41.2285) ; H8
1018  ))
1019
1020(define rA09
1021  (make-constant-rA
1022    #(  0.8467   0.4166  -0.3311  ; dgf-base-tfo
1023       -0.3962   0.9089   0.1303
1024        0.3552   0.0209   0.9346
1025      -42.7319 -26.6223 -29.8163)
1026    #(  0.7529   0.1548   0.6397  ; P-O3*-275-tfo
1027        0.2952  -0.9481  -0.1180
1028        0.5882   0.2777  -0.7595
1029      -58.8919 -11.3095   6.0866)
1030    #( -0.0239   0.9667  -0.2546  ; P-O3*-180-tfo
1031        0.9731  -0.0359  -0.2275
1032       -0.2290  -0.2532  -0.9399
1033        3.5401 -29.7913  52.2796)
1034    #( -0.8912  -0.4531   0.0242  ; P-O3*-60-tfo
1035       -0.1183   0.1805  -0.9764
1036        0.4380  -0.8730  -0.2145
1037       19.9023  54.8054  15.2799)
1038    #( 41.8210   8.3880  43.5890) ; P
1039    #( 42.5400   8.0450  44.8330) ; O1P
1040    #( 42.2470   9.6920  42.9910) ; O2P
1041    #( 40.2550   8.2030  43.7340) ; O5*
1042    #( 39.3505   8.4697  42.6565) ; C5*
1043    #( 39.1377   7.5433  42.1230) ; H5*
1044    #( 39.7203   9.3119  42.0717) ; H5**
1045    #( 38.0405   8.9195  43.2869) ; C4*
1046    #( 37.6479   8.1347  43.9335) ; H4*
1047    #( 38.2691  10.0933  44.0524) ; O4*
1048    #( 37.3999  11.1488  43.5973) ; C1*
1049    #( 36.5061  11.1221  44.2206) ; H1*
1050    #( 37.0364  10.7838  42.1836) ; C2*
1051    #( 37.8636  11.0489  41.5252) ; H2**
1052    #( 35.8275  11.3133  41.7379) ; O2*
1053    #( 35.6214  12.1896  42.0714) ; H2*
1054    #( 36.9316   9.2556  42.2837) ; C3*
1055    #( 37.1778   8.8260  41.3127) ; H3*
1056    #( 35.6285   8.9334  42.7926) ; O3*
1057    #( 38.1482  15.2833  46.4641) ; N1
1058    #( 37.3641  13.0968  45.9007) ; N3
1059    #( 37.5032  14.1288  46.7300) ; C2
1060    #( 37.9570  13.3377  44.7113) ; C4
1061    #( 38.6397  14.4660  44.3267) ; C5
1062    #( 38.7473  15.5229  45.2609) ; C6
1063    #( 39.3720  16.6649  45.0297) ; N6
1064    #( 39.1079  14.3351  43.0223) ; N7
1065    #( 38.0132  12.4868  43.6280) ; N9
1066    #( 38.7058  13.1402  42.6620) ; C8
1067    #( 37.0731  14.0857  47.7306) ; H2
1068    #( 39.8113  16.8281  44.1350) ; H61
1069    #( 39.4100  17.3741  45.7478) ; H62
1070    #( 39.0412  12.9660  41.6397) ; H8
1071  ))
1072
1073(define rA10
1074  (make-constant-rA
1075    #(  0.7063   0.6317  -0.3196  ; dgf-base-tfo
1076       -0.0403  -0.4149  -0.9090
1077       -0.7068   0.6549  -0.2676
1078        6.4402 -52.1496  30.8246)
1079    #(  0.7529   0.1548   0.6397  ; P-O3*-275-tfo
1080        0.2952  -0.9481  -0.1180
1081        0.5882   0.2777  -0.7595
1082      -58.8919 -11.3095   6.0866)
1083    #( -0.0239   0.9667  -0.2546  ; P-O3*-180-tfo
1084        0.9731  -0.0359  -0.2275
1085       -0.2290  -0.2532  -0.9399
1086        3.5401 -29.7913  52.2796)
1087    #( -0.8912  -0.4531   0.0242  ; P-O3*-60-tfo
1088       -0.1183   0.1805  -0.9764
1089        0.4380  -0.8730  -0.2145
1090       19.9023  54.8054  15.2799)
1091    #( 41.8210   8.3880  43.5890) ; P
1092    #( 42.5400   8.0450  44.8330) ; O1P
1093    #( 42.2470   9.6920  42.9910) ; O2P
1094    #( 40.2550   8.2030  43.7340) ; O5*
1095    #( 39.4850   8.9301  44.6977) ; C5*
1096    #( 39.0638   9.8199  44.2296) ; H5*
1097    #( 40.0757   9.0713  45.6029) ; H5**
1098    #( 38.3102   8.0414  45.0789) ; C4*
1099    #( 37.7099   7.8166  44.1973) ; H4*
1100    #( 38.8012   6.8321  45.6380) ; O4*
1101    #( 38.2431   6.6413  46.9529) ; C1*
1102    #( 37.3505   6.0262  46.8385) ; H1*
1103    #( 37.8484   8.0156  47.4214) ; C2*
1104    #( 38.7381   8.5406  47.7690) ; H2**
1105    #( 36.8286   8.0368  48.3701) ; O2*
1106    #( 36.8392   7.3063  48.9929) ; H2*
1107    #( 37.3576   8.6512  46.1132) ; C3*
1108    #( 37.5207   9.7275  46.1671) ; H3*
1109    #( 35.9985   8.2392  45.9032) ; O3*
1110    #( 39.9117   2.2278  48.8527) ; N1
1111    #( 38.6207   3.6941  47.4757) ; N3
1112    #( 38.9872   2.4888  47.9057) ; C2
1113    #( 39.2961   4.6720  48.1174) ; C4
1114    #( 40.2546   4.5307  49.0912) ; C5
1115    #( 40.5932   3.2189  49.4985) ; C6
1116    #( 41.4938   2.9317  50.4229) ; N6
1117    #( 40.7195   5.7755  49.5060) ; N7
1118    #( 39.1730   6.0305  47.9170) ; N9
1119    #( 40.0413   6.6250  48.7728) ; C8
1120    #( 38.5257   1.5960  47.4838) ; H2
1121    #( 41.9907   3.6753  50.8921) ; H61
1122    #( 41.6848   1.9687  50.6599) ; H62
1123    #( 40.3571   7.6321  49.0452) ; H8
1124  ))
1125
1126(define rAs
1127  (list rA01 rA02 rA03 rA04 rA05 rA06 rA07 rA08 rA09 rA10))
1128
1129(define rC
1130  (make-constant-rC
1131    #( -0.0359  -0.8071   0.5894  ; dgf-base-tfo
1132       -0.2669   0.5761   0.7726
1133       -0.9631  -0.1296  -0.2361
1134        0.1584   8.3434   0.5434)
1135    #( -0.8313  -0.4738  -0.2906  ; P-O3*-275-tfo
1136        0.0649   0.4366  -0.8973
1137        0.5521  -0.7648  -0.3322
1138        1.6833   6.8060  -7.0011)
1139    #(  0.3445  -0.7630   0.5470  ; P-O3*-180-tfo
1140       -0.4628  -0.6450  -0.6082
1141        0.8168  -0.0436  -0.5753
1142       -6.8179  -3.9778  -5.9887)
1143    #(  0.5855   0.7931  -0.1682  ; P-O3*-60-tfo
1144        0.8103  -0.5790   0.0906
1145       -0.0255  -0.1894  -0.9816
1146        6.1203  -7.1051   3.1984)
1147    #(  2.6760  -8.4960   3.2880) ; P
1148    #(  1.4950  -7.6230   3.4770) ; O1P
1149    #(  2.9490  -9.4640   4.3740) ; O2P
1150    #(  3.9730  -7.5950   3.0340) ; O5*
1151    #(  5.2430  -8.2420   2.8260) ; C5*
1152    #(  5.1974  -8.8497   1.9223) ; H5*
1153    #(  5.5548  -8.7348   3.7469) ; H5**
1154    #(  6.3140  -7.2060   2.5510) ; C4*
1155    #(  7.2954  -7.6762   2.4898) ; H4*
1156    #(  6.0140  -6.5420   1.2890) ; O4*
1157    #(  6.4190  -5.1840   1.3620) ; C1*
1158    #(  7.1608  -5.0495   0.5747) ; H1*
1159    #(  7.0760  -4.9560   2.7270) ; C2*
1160    #(  6.7770  -3.9803   3.1099) ; H2**
1161    #(  8.4500  -5.1930   2.5810) ; O2*
1162    #(  8.8309  -4.8755   1.7590) ; H2*
1163    #(  6.4060  -6.0590   3.5580) ; C3*
1164    #(  5.4021  -5.7313   3.8281) ; H3*
1165    #(  7.1570  -6.4240   4.7070) ; O3*
1166    #(  5.2170  -4.3260   1.1690) ; N1
1167    #(  4.2960  -2.2560   0.6290) ; N3
1168    #(  5.4330  -3.0200   0.7990) ; C2
1169    #(  2.9930  -2.6780   0.7940) ; C4
1170    #(  2.8670  -4.0630   1.1830) ; C5
1171    #(  3.9570  -4.8300   1.3550) ; C6
1172    #(  2.0187  -1.8047   0.5874) ; N4
1173    #(  6.5470  -2.5560   0.6290) ; O2
1174    #(  1.0684  -2.1236   0.7109) ; H41
1175    #(  2.2344  -0.8560   0.3162) ; H42
1176    #(  1.8797  -4.4972   1.3404) ; H5
1177    #(  3.8479  -5.8742   1.6480) ; H6
1178  ))
1179
1180(define rC01
1181  (make-constant-rC
1182    #( -0.0137  -0.8012   0.5983  ; dgf-base-tfo
1183       -0.2523   0.5817   0.7733
1184       -0.9675  -0.1404  -0.2101
1185        0.2031   8.3874   0.4228)
1186    #( -0.8313  -0.4738  -0.2906  ; P-O3*-275-tfo
1187        0.0649   0.4366  -0.8973
1188        0.5521  -0.7648  -0.3322
1189        1.6833   6.8060  -7.0011)
1190    #(  0.3445  -0.7630   0.5470  ; P-O3*-180-tfo
1191       -0.4628  -0.6450  -0.6082
1192        0.8168  -0.0436  -0.5753
1193       -6.8179  -3.9778  -5.9887)
1194    #(  0.5855   0.7931  -0.1682  ; P-O3*-60-tfo
1195        0.8103  -0.5790   0.0906
1196       -0.0255  -0.1894  -0.9816
1197        6.1203  -7.1051   3.1984)
1198    #(  2.6760  -8.4960   3.2880) ; P
1199    #(  1.4950  -7.6230   3.4770) ; O1P
1200    #(  2.9490  -9.4640   4.3740) ; O2P
1201    #(  3.9730  -7.5950   3.0340) ; O5*
1202    #(  5.2416  -8.2422   2.8181) ; C5*
1203    #(  5.2050  -8.8128   1.8901) ; H5*
1204    #(  5.5368  -8.7738   3.7227) ; H5**
1205    #(  6.3232  -7.2037   2.6002) ; C4*
1206    #(  7.3048  -7.6757   2.5577) ; H4*
1207    #(  6.0635  -6.5092   1.3456) ; O4*
1208    #(  6.4697  -5.1547   1.4629) ; C1*
1209    #(  7.2354  -5.0043   0.7018) ; H1*
1210    #(  7.0856  -4.9610   2.8521) ; C2*
1211    #(  6.7777  -3.9935   3.2487) ; H2**
1212    #(  8.4627  -5.1992   2.7423) ; O2*
1213    #(  8.8693  -4.8638   1.9399) ; H2*
1214    #(  6.3877  -6.0809   3.6362) ; C3*
1215    #(  5.3770  -5.7562   3.8834) ; H3*
1216    #(  7.1024  -6.4754   4.7985) ; O3*
1217    #(  5.2764  -4.2883   1.2538) ; N1
1218    #(  4.3777  -2.2062   0.7229) ; N3
1219    #(  5.5069  -2.9779   0.9088) ; C2
1220    #(  3.0693  -2.6246   0.8500) ; C4
1221    #(  2.9279  -4.0146   1.2149) ; C5
1222    #(  4.0101  -4.7892   1.4017) ; C6
1223    #(  2.1040  -1.7437   0.6331) ; N4
1224    #(  6.6267  -2.5166   0.7728) ; O2
1225    #(  1.1496  -2.0600   0.7287) ; H41
1226    #(  2.3303  -0.7921   0.3815) ; H42
1227    #(  1.9353  -4.4465   1.3419) ; H5
1228    #(  3.8895  -5.8371   1.6762) ; H6
1229  ))
1230
1231(define rC02
1232  (make-constant-rC
1233    #(  0.5141   0.0246   0.8574  ; dgf-base-tfo
1234       -0.5547  -0.7529   0.3542
1235        0.6542  -0.6577  -0.3734
1236       -9.1111  -3.4598  -3.2939)
1237    #( -0.8313  -0.4738  -0.2906  ; P-O3*-275-tfo
1238        0.0649   0.4366  -0.8973
1239        0.5521  -0.7648  -0.3322
1240        1.6833   6.8060  -7.0011)
1241    #(  0.3445  -0.7630   0.5470  ; P-O3*-180-tfo
1242       -0.4628  -0.6450  -0.6082
1243        0.8168  -0.0436  -0.5753
1244       -6.8179  -3.9778  -5.9887)
1245    #(  0.5855   0.7931  -0.1682  ; P-O3*-60-tfo
1246        0.8103  -0.5790   0.0906
1247       -0.0255  -0.1894  -0.9816
1248        6.1203  -7.1051   3.1984)
1249    #(  2.6760  -8.4960   3.2880) ; P
1250    #(  1.4950  -7.6230   3.4770) ; O1P
1251    #(  2.9490  -9.4640   4.3740) ; O2P
1252    #(  3.9730  -7.5950   3.0340) ; O5*
1253    #(  4.3825  -6.6585   4.0489) ; C5*
1254    #(  4.6841  -7.2019   4.9443) ; H5*
1255    #(  3.6189  -5.8889   4.1625) ; H5**
1256    #(  5.6255  -5.9175   3.5998) ; C4*
1257    #(  5.8732  -5.1228   4.3034) ; H4*
1258    #(  6.7337  -6.8605   3.5222) ; O4*
1259    #(  7.5932  -6.4923   2.4548) ; C1*
1260    #(  8.5661  -6.2983   2.9064) ; H1*
1261    #(  7.0527  -5.2012   1.8322) ; C2*
1262    #(  7.1627  -5.2525   0.7490) ; H2**
1263    #(  7.6666  -4.1249   2.4880) ; O2*
1264    #(  8.5944  -4.2543   2.6981) ; H2*
1265    #(  5.5661  -5.3029   2.2009) ; C3*
1266    #(  5.0841  -6.0018   1.5172) ; H3*
1267    #(  4.9062  -4.0452   2.2042) ; O3*
1268    #(  7.6298  -7.6136   1.4752) ; N1
1269    #(  8.6945  -8.7046  -0.2857) ; N3
1270    #(  8.6943  -7.6514   0.6066) ; C2
1271    #(  7.7426  -9.6987  -0.3801) ; C4
1272    #(  6.6642  -9.5742   0.5722) ; C5
1273    #(  6.6391  -8.5592   1.4526) ; C6
1274    #(  7.9033 -10.6371  -1.3010) ; N4
1275    #(  9.5840  -6.8186   0.6136) ; O2
1276    #(  7.2009 -11.3604  -1.3619) ; H41
1277    #(  8.7058 -10.6168  -1.9140) ; H42
1278    #(  5.8585 -10.3083   0.5822) ; H5
1279    #(  5.8197  -8.4773   2.1667) ; H6
1280  ))
1281
1282(define rC03
1283  (make-constant-rC
1284    #( -0.4993   0.0476   0.8651  ; dgf-base-tfo
1285        0.8078  -0.3353   0.4847
1286        0.3132   0.9409   0.1290
1287        6.2989  -5.2303  -3.8577)
1288    #( -0.8313  -0.4738  -0.2906  ; P-O3*-275-tfo
1289        0.0649   0.4366  -0.8973
1290        0.5521  -0.7648  -0.3322
1291        1.6833   6.8060  -7.0011)
1292    #(  0.3445  -0.7630   0.5470  ; P-O3*-180-tfo
1293       -0.4628  -0.6450  -0.6082
1294        0.8168  -0.0436  -0.5753
1295       -6.8179  -3.9778  -5.9887)
1296    #(  0.5855   0.7931  -0.1682  ; P-O3*-60-tfo
1297        0.8103  -0.5790   0.0906
1298       -0.0255  -0.1894  -0.9816
1299        6.1203  -7.1051   3.1984)
1300    #(  2.6760  -8.4960   3.2880) ; P
1301    #(  1.4950  -7.6230   3.4770) ; O1P
1302    #(  2.9490  -9.4640   4.3740) ; O2P
1303    #(  3.9730  -7.5950   3.0340) ; O5*
1304    #(  3.9938  -6.7042   1.9023) ; C5*
1305    #(  3.2332  -5.9343   2.0319) ; H5*
1306    #(  3.9666  -7.2863   0.9812) ; H5**
1307    #(  5.3098  -5.9546   1.8564) ; C4*
1308    #(  5.3863  -5.3702   0.9395) ; H4*
1309    #(  5.3851  -5.0642   3.0076) ; O4*
1310    #(  6.7315  -4.9724   3.4462) ; C1*
1311    #(  7.0033  -3.9202   3.3619) ; H1*
1312    #(  7.5997  -5.8018   2.4948) ; C2*
1313    #(  8.3627  -6.3254   3.0707) ; H2**
1314    #(  8.0410  -4.9501   1.4724) ; O2*
1315    #(  8.2781  -4.0644   1.7570) ; H2*
1316    #(  6.5701  -6.8129   1.9714) ; C3*
1317    #(  6.4186  -7.5809   2.7299) ; H3*
1318    #(  6.9357  -7.3841   0.7235) ; O3*
1319    #(  6.8024  -5.4718   4.8475) ; N1
1320    #(  7.9218  -5.5700   6.8877) ; N3
1321    #(  7.8908  -5.0886   5.5944) ; C2
1322    #(  6.9789  -6.3827   7.4823) ; C4
1323    #(  5.8742  -6.7319   6.6202) ; C5
1324    #(  5.8182  -6.2769   5.3570) ; C6
1325    #(  7.1702  -6.7511   8.7402) ; N4
1326    #(  8.7747  -4.3728   5.1568) ; O2
1327    #(  6.4741  -7.3461   9.1662) ; H41
1328    #(  7.9889  -6.4396   9.2429) ; H42
1329    #(  5.0736  -7.3713   6.9922) ; H5
1330    #(  4.9784  -6.5473   4.7170) ; H6
1331  ))
1332
1333(define rC04
1334  (make-constant-rC
1335    #( -0.5669  -0.8012   0.1918  ; dgf-base-tfo
1336       -0.8129   0.5817   0.0273
1337       -0.1334  -0.1404  -0.9811
1338       -0.3279   8.3874   0.3355)
1339    #( -0.8313  -0.4738  -0.2906  ; P-O3*-275-tfo
1340        0.0649   0.4366  -0.8973
1341        0.5521  -0.7648  -0.3322
1342        1.6833   6.8060  -7.0011)
1343    #(  0.3445  -0.7630   0.5470  ; P-O3*-180-tfo
1344       -0.4628  -0.6450  -0.6082
1345        0.8168  -0.0436  -0.5753
1346       -6.8179  -3.9778  -5.9887)
1347    #(  0.5855   0.7931  -0.1682  ; P-O3*-60-tfo
1348        0.8103  -0.5790   0.0906
1349       -0.0255  -0.1894  -0.9816
1350        6.1203  -7.1051   3.1984)
1351    #(  2.6760  -8.4960   3.2880) ; P
1352    #(  1.4950  -7.6230   3.4770) ; O1P
1353    #(  2.9490  -9.4640   4.3740) ; O2P
1354    #(  3.9730  -7.5950   3.0340) ; O5*
1355    #(  5.2416  -8.2422   2.8181) ; C5*
1356    #(  5.2050  -8.8128   1.8901) ; H5*
1357    #(  5.5368  -8.7738   3.7227) ; H5**
1358    #(  6.3232  -7.2037   2.6002) ; C4*
1359    #(  7.3048  -7.6757   2.5577) ; H4*
1360    #(  6.0635  -6.5092   1.3456) ; O4*
1361    #(  6.4697  -5.1547   1.4629) ; C1*
1362    #(  7.2354  -5.0043   0.7018) ; H1*
1363    #(  7.0856  -4.9610   2.8521) ; C2*
1364    #(  6.7777  -3.9935   3.2487) ; H2**
1365    #(  8.4627  -5.1992   2.7423) ; O2*
1366    #(  8.8693  -4.8638   1.9399) ; H2*
1367    #(  6.3877  -6.0809   3.6362) ; C3*
1368    #(  5.3770  -5.7562   3.8834) ; H3*
1369    #(  7.1024  -6.4754   4.7985) ; O3*
1370    #(  5.2764  -4.2883   1.2538) ; N1
1371    #(  3.8961  -3.0896  -0.1893) ; N3
1372    #(  5.0095  -3.8907  -0.0346) ; C2
1373    #(  3.0480  -2.6632   0.8116) ; C4
1374    #(  3.4093  -3.1310   2.1292) ; C5
1375    #(  4.4878  -3.9124   2.3088) ; C6
1376    #(  2.0216  -1.8941   0.4804) ; N4
1377    #(  5.7005  -4.2164  -0.9842) ; O2
1378    #(  1.4067  -1.5873   1.2205) ; H41
1379    #(  1.8721  -1.6319  -0.4835) ; H42
1380    #(  2.8048  -2.8507   2.9918) ; H5
1381    #(  4.7491  -4.2593   3.3085) ; H6
1382  ))
1383
1384(define rC05
1385  (make-constant-rC
1386    #( -0.6298   0.0246   0.7763  ; dgf-base-tfo
1387       -0.5226  -0.7529  -0.4001
1388        0.5746  -0.6577   0.4870
1389       -0.0208  -3.4598  -9.6882)
1390    #( -0.8313  -0.4738  -0.2906  ; P-O3*-275-tfo
1391        0.0649   0.4366  -0.8973
1392        0.5521  -0.7648  -0.3322
1393        1.6833   6.8060  -7.0011)
1394    #(  0.3445  -0.7630   0.5470  ; P-O3*-180-tfo
1395       -0.4628  -0.6450  -0.6082
1396        0.8168  -0.0436  -0.5753
1397       -6.8179  -3.9778  -5.9887)
1398    #(  0.5855   0.7931  -0.1682  ; P-O3*-60-tfo
1399        0.8103  -0.5790   0.0906
1400       -0.0255  -0.1894  -0.9816
1401        6.1203  -7.1051   3.1984)
1402    #(  2.6760  -8.4960   3.2880) ; P
1403    #(  1.4950  -7.6230   3.4770) ; O1P
1404    #(  2.9490  -9.4640   4.3740) ; O2P
1405    #(  3.9730  -7.5950   3.0340) ; O5*
1406    #(  4.3825  -6.6585   4.0489) ; C5*
1407    #(  4.6841  -7.2019   4.9443) ; H5*
1408    #(  3.6189  -5.8889   4.1625) ; H5**
1409    #(  5.6255  -5.9175   3.5998) ; C4*
1410    #(  5.8732  -5.1228   4.3034) ; H4*
1411    #(  6.7337  -6.8605   3.5222) ; O4*
1412    #(  7.5932  -6.4923   2.4548) ; C1*
1413    #(  8.5661  -6.2983   2.9064) ; H1*
1414    #(  7.0527  -5.2012   1.8322) ; C2*
1415    #(  7.1627  -5.2525   0.7490) ; H2**
1416    #(  7.6666  -4.1249   2.4880) ; O2*
1417    #(  8.5944  -4.2543   2.6981) ; H2*
1418    #(  5.5661  -5.3029   2.2009) ; C3*
1419    #(  5.0841  -6.0018   1.5172) ; H3*
1420    #(  4.9062  -4.0452   2.2042) ; O3*
1421    #(  7.6298  -7.6136   1.4752) ; N1
1422    #(  8.5977  -9.5977   0.7329) ; N3
1423    #(  8.5951  -8.5745   1.6594) ; C2
1424    #(  7.7372  -9.7371  -0.3364) ; C4
1425    #(  6.7596  -8.6801  -0.4476) ; C5
1426    #(  6.7338  -7.6721   0.4408) ; C6
1427    #(  7.8849 -10.7881  -1.1289) ; N4
1428    #(  9.3993  -8.5377   2.5743) ; O2
1429    #(  7.2499 -10.8809  -1.9088) ; H41
1430    #(  8.6122 -11.4649  -0.9468) ; H42
1431    #(  6.0317  -8.6941  -1.2588) ; H5
1432    #(  5.9901  -6.8809   0.3459) ; H6
1433  ))
1434
1435(define rC06
1436  (make-constant-rC
1437    #( -0.9837   0.0476  -0.1733  ; dgf-base-tfo
1438       -0.1792  -0.3353   0.9249
1439       -0.0141   0.9409   0.3384
1440        5.7793  -5.2303   4.5997)
1441    #( -0.8313  -0.4738  -0.2906  ; P-O3*-275-tfo
1442        0.0649   0.4366  -0.8973
1443        0.5521  -0.7648  -0.3322
1444        1.6833   6.8060  -7.0011)
1445    #(  0.3445  -0.7630   0.5470  ; P-O3*-180-tfo
1446       -0.4628  -0.6450  -0.6082
1447        0.8168  -0.0436  -0.5753
1448       -6.8179  -3.9778  -5.9887)
1449    #(  0.5855   0.7931  -0.1682  ; P-O3*-60-tfo
1450        0.8103  -0.5790   0.0906
1451       -0.0255  -0.1894  -0.9816
1452        6.1203  -7.1051   3.1984)
1453    #(  2.6760  -8.4960   3.2880) ; P
1454    #(  1.4950  -7.6230   3.4770) ; O1P
1455    #(  2.9490  -9.4640   4.3740) ; O2P
1456    #(  3.9730  -7.5950   3.0340) ; O5*
1457    #(  3.9938  -6.7042   1.9023) ; C5*
1458    #(  3.2332  -5.9343   2.0319) ; H5*
1459    #(  3.9666  -7.2863   0.9812) ; H5**
1460    #(  5.3098  -5.9546   1.8564) ; C4*
1461    #(  5.3863  -5.3702   0.9395) ; H4*
1462    #(  5.3851  -5.0642   3.0076) ; O4*
1463    #(  6.7315  -4.9724   3.4462) ; C1*
1464    #(  7.0033  -3.9202   3.3619) ; H1*
1465    #(  7.5997  -5.8018   2.4948) ; C2*
1466    #(  8.3627  -6.3254   3.0707) ; H2**
1467    #(  8.0410  -4.9501   1.4724) ; O2*
1468    #(  8.2781  -4.0644   1.7570) ; H2*
1469    #(  6.5701  -6.8129   1.9714) ; C3*
1470    #(  6.4186  -7.5809   2.7299) ; H3*
1471    #(  6.9357  -7.3841   0.7235) ; O3*
1472    #(  6.8024  -5.4718   4.8475) ; N1
1473    #(  6.6920  -5.0495   7.1354) ; N3
1474    #(  6.6201  -4.5500   5.8506) ; C2
1475    #(  6.9254  -6.3614   7.4926) ; C4
1476    #(  7.1046  -7.2543   6.3718) ; C5
1477    #(  7.0391  -6.7951   5.1106) ; C6
1478    #(  6.9614  -6.6648   8.7815) ; N4
1479    #(  6.4083  -3.3696   5.6340) ; O2
1480    #(  7.1329  -7.6280   9.0324) ; H41
1481    #(  6.8204  -5.9469   9.4777) ; H42
1482    #(  7.2954  -8.3135   6.5440) ; H5
1483    #(  7.1753  -7.4798   4.2735) ; H6
1484  ))
1485
1486(define rC07
1487  (make-constant-rC
1488    #(  0.0033   0.2720  -0.9623  ; dgf-base-tfo
1489        0.3013  -0.9179  -0.2584
1490       -0.9535  -0.2891  -0.0850
1491       43.0403  13.7233  34.5710)
1492    #(  0.9187   0.2887   0.2694  ; P-O3*-275-tfo
1493        0.0302  -0.7316   0.6811
1494        0.3938  -0.6176  -0.6808
1495      -48.4330  26.3254  13.6383)
1496    #( -0.1504   0.7744  -0.6145  ; P-O3*-180-tfo
1497        0.7581   0.4893   0.4311
1498        0.6345  -0.4010  -0.6607
1499      -31.9784 -13.4285  44.9650)
1500    #( -0.6236  -0.7810  -0.0337  ; P-O3*-60-tfo
1501       -0.6890   0.5694  -0.4484
1502        0.3694  -0.2564  -0.8932
1503       12.1105  30.8774  46.0946)
1504    #( 33.3400  11.0980  46.1750) ; P
1505    #( 34.5130  10.2320  46.4660) ; O1P
1506    #( 33.4130  12.3960  46.9340) ; O2P
1507    #( 31.9810  10.3390  46.4820) ; O5*
1508    #( 30.8152  11.1619  46.2003) ; C5*
1509    #( 30.4519  10.9454  45.1957) ; H5*
1510    #( 31.0379  12.2016  46.4400) ; H5**
1511    #( 29.7081  10.7448  47.1428) ; C4*
1512    #( 28.8710  11.4416  47.0982) ; H4*
1513    #( 29.2550   9.4394  46.8162) ; O4*
1514    #( 29.3907   8.5625  47.9460) ; C1*
1515    #( 28.4416   8.5669  48.4819) ; H1*
1516    #( 30.4468   9.2031  48.7952) ; C2*
1517    #( 31.4222   8.9651  48.3709) ; H2**
1518    #( 30.3701   8.9157  50.1624) ; O2*
1519    #( 30.0652   8.0304  50.3740) ; H2*
1520    #( 30.1622  10.6879  48.6120) ; C3*
1521    #( 31.0952  11.2399  48.7254) ; H3*
1522    #( 29.1076  11.1535  49.4702) ; O3*
1523    #( 29.7883   7.2209  47.5235) ; N1
1524    #( 29.1825   5.0438  46.8275) ; N3
1525    #( 28.8008   6.2912  47.2263) ; C2
1526    #( 30.4888   4.6890  46.7186) ; C4
1527    #( 31.5034   5.6405  47.0249) ; C5
1528    #( 31.1091   6.8691  47.4156) ; C6
1529    #( 30.8109   3.4584  46.3336) ; N4
1530    #( 27.6171   6.5989  47.3189) ; O2
1531    #( 31.7923   3.2301  46.2638) ; H41
1532    #( 30.0880   2.7857  46.1215) ; H42
1533    #( 32.5542   5.3634  46.9395) ; H5
1534    #( 31.8523   7.6279  47.6603) ; H6
1535  ))
1536
1537(define rC08
1538  (make-constant-rC
1539    #(  0.0797  -0.6026  -0.7941  ; dgf-base-tfo
1540        0.7939   0.5201  -0.3150
1541        0.6028  -0.6054   0.5198
1542      -36.8341  41.5293   1.6628)
1543    #(  0.9187   0.2887   0.2694  ; P-O3*-275-tfo
1544        0.0302  -0.7316   0.6811
1545        0.3938  -0.6176  -0.6808
1546      -48.4330  26.3254  13.6383)
1547    #( -0.1504   0.7744  -0.6145  ; P-O3*-180-tfo
1548        0.7581   0.4893   0.4311
1549        0.6345  -0.4010  -0.6607
1550      -31.9784 -13.4285  44.9650)
1551    #( -0.6236  -0.7810  -0.0337  ; P-O3*-60-tfo
1552       -0.6890   0.5694  -0.4484
1553        0.3694  -0.2564  -0.8932
1554       12.1105  30.8774  46.0946)
1555    #( 33.3400  11.0980  46.1750) ; P
1556    #( 34.5130  10.2320  46.4660) ; O1P
1557    #( 33.4130  12.3960  46.9340) ; O2P
1558    #( 31.9810  10.3390  46.4820) ; O5*
1559    #( 31.8779   9.9369  47.8760) ; C5*
1560    #( 31.3239  10.6931  48.4322) ; H5*
1561    #( 32.8647   9.6624  48.2489) ; H5**
1562    #( 31.0429   8.6773  47.9401) ; C4*
1563    #( 31.0779   8.2331  48.9349) ; H4*
1564    #( 29.6956   8.9669  47.5983) ; O4*
1565    #( 29.2784   8.1700  46.4782) ; C1*
1566    #( 28.8006   7.2731  46.8722) ; H1*
1567    #( 30.5544   7.7940  45.7875) ; C2*
1568    #( 30.8837   8.6410  45.1856) ; H2**
1569    #( 30.5100   6.6007  45.0582) ; O2*
1570    #( 29.6694   6.4168  44.6326) ; H2*
1571    #( 31.5146   7.5954  46.9527) ; C3*
1572    #( 32.5255   7.8261  46.6166) ; H3*
1573    #( 31.3876   6.2951  47.5516) ; O3*
1574    #( 28.3976   8.9302  45.5933) ; N1
1575    #( 26.2155   9.6135  44.9910) ; N3
1576    #( 27.0281   8.8961  45.8192) ; C2
1577    #( 26.7044  10.3489  43.9595) ; C4
1578    #( 28.1088  10.3837  43.7247) ; C5
1579    #( 28.8978   9.6708  44.5535) ; C6
1580    #( 25.8715  11.0249  43.1749) ; N4
1581    #( 26.5733   8.2371  46.7484) ; O2
1582    #( 26.2707  11.5609  42.4177) ; H41
1583    #( 24.8760  10.9939  43.3427) ; H42
1584    #( 28.5089  10.9722  42.8990) ; H5
1585    #( 29.9782   9.6687  44.4097) ; H6
1586  ))
1587
1588(define rC09
1589  (make-constant-rC
1590    #(  0.8727   0.4760  -0.1091  ; dgf-base-tfo
1591       -0.4188   0.6148  -0.6682
1592       -0.2510   0.6289   0.7359
1593       -8.1687 -52.0761 -25.0726)
1594    #(  0.9187   0.2887   0.2694  ; P-O3*-275-tfo
1595        0.0302  -0.7316   0.6811
1596        0.3938  -0.6176  -0.6808
1597      -48.4330  26.3254  13.6383)
1598    #( -0.1504   0.7744  -0.6145  ; P-O3*-180-tfo
1599        0.7581   0.4893   0.4311
1600        0.6345  -0.4010  -0.6607
1601      -31.9784 -13.4285  44.9650)
1602    #( -0.6236  -0.7810  -0.0337  ; P-O3*-60-tfo
1603       -0.6890   0.5694  -0.4484
1604        0.3694  -0.2564  -0.8932
1605       12.1105  30.8774  46.0946)
1606    #( 33.3400  11.0980  46.1750) ; P
1607    #( 34.5130  10.2320  46.4660) ; O1P
1608    #( 33.4130  12.3960  46.9340) ; O2P
1609    #( 31.9810  10.3390  46.4820) ; O5*
1610    #( 30.8152  11.1619  46.2003) ; C5*
1611    #( 30.4519  10.9454  45.1957) ; H5*
1612    #( 31.0379  12.2016  46.4400) ; H5**
1613    #( 29.7081  10.7448  47.1428) ; C4*
1614    #( 29.4506   9.6945  47.0059) ; H4*
1615    #( 30.1045  10.9634  48.4885) ; O4*
1616    #( 29.1794  11.8418  49.1490) ; C1*
1617    #( 28.4388  11.2210  49.6533) ; H1*
1618    #( 28.5211  12.6008  48.0367) ; C2*
1619    #( 29.1947  13.3949  47.7147) ; H2**
1620    #( 27.2316  13.0683  48.3134) ; O2*
1621    #( 27.0851  13.3391  49.2227) ; H2*
1622    #( 28.4131  11.5507  46.9391) ; C3*
1623    #( 28.4451  12.0512  45.9713) ; H3*
1624    #( 27.2707  10.6955  47.1097) ; O3*
1625    #( 29.8751  12.7405  50.0682) ; N1
1626    #( 30.7172  13.1841  52.2328) ; N3
1627    #( 30.0617  12.3404  51.3847) ; C2
1628    #( 31.1834  14.3941  51.8297) ; C4
1629    #( 30.9913  14.8074  50.4803) ; C5
1630    #( 30.3434  13.9610  49.6548) ; C6
1631    #( 31.8090  15.1847  52.6957) ; N4
1632    #( 29.6470  11.2494  51.7616) ; O2
1633    #( 32.1422  16.0774  52.3606) ; H41
1634    #( 31.9392  14.8893  53.6527) ; H42
1635    #( 31.3632  15.7771  50.1491) ; H5
1636    #( 30.1742  14.2374  48.6141) ; H6
1637  ))
1638
1639(define rC10
1640  (make-constant-rC
1641    #(  0.1549   0.8710  -0.4663  ; dgf-base-tfo
1642        0.6768  -0.4374  -0.5921
1643       -0.7197  -0.2239  -0.6572
1644       25.2447 -14.1920  50.3201)
1645    #(  0.9187   0.2887   0.2694  ; P-O3*-275-tfo
1646        0.0302  -0.7316   0.6811
1647        0.3938  -0.6176  -0.6808
1648      -48.4330  26.3254  13.6383)
1649    #( -0.1504   0.7744  -0.6145  ; P-O3*-180-tfo
1650        0.7581   0.4893   0.4311
1651        0.6345  -0.4010  -0.6607
1652      -31.9784 -13.4285  44.9650)
1653    #( -0.6236  -0.7810  -0.0337  ; P-O3*-60-tfo
1654       -0.6890   0.5694  -0.4484
1655        0.3694  -0.2564  -0.8932
1656       12.1105  30.8774  46.0946)
1657    #( 33.3400  11.0980  46.1750) ; P
1658    #( 34.5130  10.2320  46.4660) ; O1P
1659    #( 33.4130  12.3960  46.9340) ; O2P
1660    #( 31.9810  10.3390  46.4820) ; O5*
1661    #( 31.8779   9.9369  47.8760) ; C5*
1662    #( 31.3239  10.6931  48.4322) ; H5*
1663    #( 32.8647   9.6624  48.2489) ; H5**
1664    #( 31.0429   8.6773  47.9401) ; C4*
1665    #( 30.0440   8.8473  47.5383) ; H4*
1666    #( 31.6749   7.6351  47.2119) ; O4*
1667    #( 31.9159   6.5022  48.0616) ; C1*
1668    #( 31.0691   5.8243  47.9544) ; H1*
1669    #( 31.9300   7.0685  49.4493) ; C2*
1670    #( 32.9024   7.5288  49.6245) ; H2**
1671    #( 31.5672   6.1750  50.4632) ; O2*
1672    #( 31.8416   5.2663  50.3200) ; H2*
1673    #( 30.8618   8.1514  49.3749) ; C3*
1674    #( 31.1122   8.9396  50.0850) ; H3*
1675    #( 29.5351   7.6245  49.5409) ; O3*
1676    #( 33.1890   5.8629  47.7343) ; N1
1677    #( 34.4004   4.2636  46.4828) ; N3
1678    #( 33.2062   4.8497  46.7851) ; C2
1679    #( 35.5600   4.6374  47.0822) ; C4
1680    #( 35.5444   5.6751  48.0577) ; C5
1681    #( 34.3565   6.2450  48.3432) ; C6
1682    #( 36.6977   4.0305  46.7598) ; N4
1683    #( 32.1661   4.5034  46.2348) ; O2
1684    #( 37.5405   4.3347  47.2259) ; H41
1685    #( 36.7033   3.2923  46.0706) ; H42
1686    #( 36.4713   5.9811  48.5428) ; H5
1687    #( 34.2986   7.0426  49.0839) ; H6
1688  ))
1689
1690(define rCs
1691  (list rC01 rC02 rC03 rC04 rC05 rC06 rC07 rC08 rC09 rC10))
1692
1693(define rG
1694  (make-constant-rG
1695    #( -0.0018  -0.8207   0.5714  ; dgf-base-tfo
1696        0.2679  -0.5509  -0.7904
1697        0.9634   0.1517   0.2209
1698        0.0073   8.4030   0.6232)
1699    #( -0.8143  -0.5091  -0.2788  ; P-O3*-275-tfo
1700       -0.0433  -0.4257   0.9038
1701       -0.5788   0.7480   0.3246
1702        1.5227   6.9114  -7.0765)
1703    #(  0.3822  -0.7477   0.5430  ; P-O3*-180-tfo
1704        0.4552   0.6637   0.5935
1705       -0.8042   0.0203   0.5941
1706       -6.9472  -4.1186  -5.9108)
1707    #(  0.5640   0.8007  -0.2022  ; P-O3*-60-tfo
1708       -0.8247   0.5587  -0.0878
1709        0.0426   0.2162   0.9754
1710        6.2694  -7.0540   3.3316)
1711    #(  2.8930   8.5380  -3.3280) ; P
1712    #(  1.6980   7.6960  -3.5570) ; O1P
1713    #(  3.2260   9.5010  -4.4020) ; O2P
1714    #(  4.1590   7.6040  -3.0340) ; O5*
1715    #(  5.4550   8.2120  -2.8810) ; C5*
1716    #(  5.4546   8.8508  -1.9978) ; H5*
1717    #(  5.7588   8.6625  -3.8259) ; H5**
1718    #(  6.4970   7.1480  -2.5980) ; C4*
1719    #(  7.4896   7.5919  -2.5214) ; H4*
1720    #(  6.1630   6.4860  -1.3440) ; O4*
1721    #(  6.5400   5.1200  -1.4190) ; C1*
1722    #(  7.2763   4.9681  -0.6297) ; H1*
1723    #(  7.1940   4.8830  -2.7770) ; C2*
1724    #(  6.8667   3.9183  -3.1647) ; H2**
1725    #(  8.5860   5.0910  -2.6140) ; O2*
1726    #(  8.9510   4.7626  -1.7890) ; H2*
1727    #(  6.5720   6.0040  -3.6090) ; C3*
1728    #(  5.5636   5.7066  -3.8966) ; H3*
1729    #(  7.3801   6.3562  -4.7350) ; O3*
1730    #(  4.7150   0.4910  -0.1360) ; N1
1731    #(  6.3490   2.1730  -0.6020) ; N3
1732    #(  5.9530   0.9650  -0.2670) ; C2
1733    #(  5.2900   2.9790  -0.8260) ; C4
1734    #(  3.9720   2.6390  -0.7330) ; C5
1735    #(  3.6770   1.3160  -0.3660) ; C6
1736    #(  6.8426   0.0056  -0.0019) ; N2
1737    #(  3.1660   3.7290  -1.0360) ; N7
1738    #(  5.3170   4.2990  -1.1930) ; N9
1739    #(  4.0100   4.6780  -1.2990) ; C8
1740    #(  2.4280   0.8450  -0.2360) ; O6
1741    #(  4.6151  -0.4677   0.1305) ; H1
1742    #(  6.6463  -0.9463   0.2729) ; H21
1743    #(  7.8170   0.2642  -0.0640) ; H22
1744    #(  3.4421   5.5744  -1.5482) ; H8
1745  ))
1746
1747(define rG01
1748  (make-constant-rG
1749    #( -0.0043  -0.8175   0.5759  ; dgf-base-tfo
1750        0.2617  -0.5567  -0.7884
1751        0.9651   0.1473   0.2164
1752        0.0359   8.3929   0.5532)
1753    #( -0.8143  -0.5091  -0.2788  ; P-O3*-275-tfo
1754       -0.0433  -0.4257   0.9038
1755       -0.5788   0.7480   0.3246
1756        1.5227   6.9114  -7.0765)
1757    #(  0.3822  -0.7477   0.5430  ; P-O3*-180-tfo
1758        0.4552   0.6637   0.5935
1759       -0.8042   0.0203   0.5941
1760       -6.9472  -4.1186  -5.9108)
1761    #(  0.5640   0.8007  -0.2022  ; P-O3*-60-tfo
1762       -0.8247   0.5587  -0.0878
1763        0.0426   0.2162   0.9754
1764        6.2694  -7.0540   3.3316)
1765    #(  2.8930   8.5380  -3.3280) ; P
1766    #(  1.6980   7.6960  -3.5570) ; O1P
1767    #(  3.2260   9.5010  -4.4020) ; O2P
1768    #(  4.1590   7.6040  -3.0340) ; O5*
1769    #(  5.4352   8.2183  -2.7757) ; C5*
1770    #(  5.3830   8.7883  -1.8481) ; H5*
1771    #(  5.7729   8.7436  -3.6691) ; H5**
1772    #(  6.4830   7.1518  -2.5252) ; C4*
1773    #(  7.4749   7.5972  -2.4482) ; H4*
1774    #(  6.1626   6.4620  -1.2827) ; O4*
1775    #(  6.5431   5.0992  -1.3905) ; C1*
1776    #(  7.2871   4.9328  -0.6114) ; H1*
1777    #(  7.1852   4.8935  -2.7592) ; C2*
1778    #(  6.8573   3.9363  -3.1645) ; H2**
1779    #(  8.5780   5.1025  -2.6046) ; O2*
1780    #(  8.9516   4.7577  -1.7902) ; H2*
1781    #(  6.5522   6.0300  -3.5612) ; C3*
1782    #(  5.5420   5.7356  -3.8459) ; H3*
1783    #(  7.3487   6.4089  -4.6867) ; O3*
1784    #(  4.7442   0.4514  -0.1390) ; N1
1785    #(  6.3687   2.1459  -0.5926) ; N3
1786    #(  5.9795   0.9335  -0.2657) ; C2
1787    #(  5.3052   2.9471  -0.8125) ; C4
1788    #(  3.9891   2.5987  -0.7230) ; C5
1789    #(  3.7016   1.2717  -0.3647) ; C6
1790    #(  6.8745  -0.0224  -0.0058) ; N2
1791    #(  3.1770   3.6859  -1.0198) ; N7
1792    #(  5.3247   4.2695  -1.1710) ; N9
1793    #(  4.0156   4.6415  -1.2759) ; C8
1794    #(  2.4553   0.7925  -0.2390) ; O6
1795    #(  4.6497  -0.5095   0.1212) ; H1
1796    #(  6.6836  -0.9771   0.2627) ; H21
1797    #(  7.8474   0.2424  -0.0653) ; H22
1798    #(  3.4426   5.5361  -1.5199) ; H8
1799  ))
1800
1801(define rG02
1802  (make-constant-rG
1803    #(  0.5566   0.0449   0.8296  ; dgf-base-tfo
1804        0.5125   0.7673  -0.3854
1805       -0.6538   0.6397   0.4041
1806       -9.1161  -3.7679  -2.9968)
1807    #( -0.8143  -0.5091  -0.2788  ; P-O3*-275-tfo
1808       -0.0433  -0.4257   0.9038
1809       -0.5788   0.7480   0.3246
1810        1.5227   6.9114  -7.0765)
1811    #(  0.3822  -0.7477   0.5430  ; P-O3*-180-tfo
1812        0.4552   0.6637   0.5935
1813       -0.8042   0.0203   0.5941
1814       -6.9472  -4.1186  -5.9108)
1815    #(  0.5640   0.8007  -0.2022  ; P-O3*-60-tfo
1816       -0.8247   0.5587  -0.0878
1817        0.0426   0.2162   0.9754
1818        6.2694  -7.0540   3.3316)
1819    #(  2.8930   8.5380  -3.3280) ; P
1820    #(  1.6980   7.6960  -3.5570) ; O1P
1821    #(  3.2260   9.5010  -4.4020) ; O2P
1822    #(  4.1590   7.6040  -3.0340) ; O5*
1823    #(  4.5778   6.6594  -4.0364) ; C5*
1824    #(  4.9220   7.1963  -4.9204) ; H5*
1825    #(  3.7996   5.9091  -4.1764) ; H5**
1826    #(  5.7873   5.8869  -3.5482) ; C4*
1827    #(  6.0405   5.0875  -4.2446) ; H4*
1828    #(  6.9135   6.8036  -3.4310) ; O4*
1829    #(  7.7293   6.4084  -2.3392) ; C1*
1830    #(  8.7078   6.1815  -2.7624) ; H1*
1831    #(  7.1305   5.1418  -1.7347) ; C2*
1832    #(  7.2040   5.1982  -0.6486) ; H2**
1833    #(  7.7417   4.0392  -2.3813) ; O2*
1834    #(  8.6785   4.1443  -2.5630) ; H2*
1835    #(  5.6666   5.2728  -2.1536) ; C3*
1836    #(  5.1747   5.9805  -1.4863) ; H3*
1837    #(  4.9997   4.0086  -2.1973) ; O3*
1838    #( 10.3245   8.5459   1.5467) ; N1
1839    #(  9.8051   6.9432  -0.1497) ; N3
1840    #( 10.5175   7.4328   0.8408) ; C2
1841    #(  8.7523   7.7422  -0.4228) ; C4
1842    #(  8.4257   8.9060   0.2099) ; C5
1843    #(  9.2665   9.3242   1.2540) ; C6
1844    #( 11.6077   6.7966   1.2752) ; N2
1845    #(  7.2750   9.4537  -0.3428) ; N7
1846    #(  7.7962   7.5519  -1.3859) ; N9
1847    #(  6.9479   8.6157  -1.2771) ; C8
1848    #(  9.0664  10.4462   1.9610) ; O6
1849    #( 10.9838   8.7524   2.2697) ; H1
1850    #( 12.2274   7.0896   2.0170) ; H21
1851    #( 11.8502   5.9398   0.7984) ; H22
1852    #(  6.0430   8.9853  -1.7594) ; H8
1853  ))
1854
1855(define rG03
1856  (make-constant-rG
1857    #( -0.5021   0.0731   0.8617  ; dgf-base-tfo
1858       -0.8112   0.3054  -0.4986
1859       -0.2996  -0.9494  -0.0940
1860        6.4273  -5.1944  -3.7807)
1861    #( -0.8143  -0.5091  -0.2788  ; P-O3*-275-tfo
1862       -0.0433  -0.4257   0.9038
1863       -0.5788   0.7480   0.3246
1864        1.5227   6.9114  -7.0765)
1865    #(  0.3822  -0.7477   0.5430  ; P-O3*-180-tfo
1866        0.4552   0.6637   0.5935
1867       -0.8042   0.0203   0.5941
1868       -6.9472  -4.1186  -5.9108)
1869    #(  0.5640   0.8007  -0.2022  ; P-O3*-60-tfo
1870       -0.8247   0.5587  -0.0878
1871        0.0426   0.2162   0.9754
1872        6.2694  -7.0540   3.3316)
1873    #(  2.8930   8.5380  -3.3280) ; P
1874    #(  1.6980   7.6960  -3.5570) ; O1P
1875    #(  3.2260   9.5010  -4.4020) ; O2P
1876    #(  4.1590   7.6040  -3.0340) ; O5*
1877    #(  4.1214   6.7116  -1.9049) ; C5*
1878    #(  3.3465   5.9610  -2.0607) ; H5*
1879    #(  4.0789   7.2928  -0.9837) ; H5**
1880    #(  5.4170   5.9293  -1.8186) ; C4*
1881    #(  5.4506   5.3400  -0.9023) ; H4*
1882    #(  5.5067   5.0417  -2.9703) ; O4*
1883    #(  6.8650   4.9152  -3.3612) ; C1*
1884    #(  7.1090   3.8577  -3.2603) ; H1*
1885    #(  7.7152   5.7282  -2.3894) ; C2*
1886    #(  8.5029   6.2356  -2.9463) ; H2**
1887    #(  8.1036   4.8568  -1.3419) ; O2*
1888    #(  8.3270   3.9651  -1.6184) ; H2*
1889    #(  6.7003   6.7565  -1.8911) ; C3*
1890    #(  6.5898   7.5329  -2.6482) ; H3*
1891    #(  7.0505   7.2878  -0.6105) ; O3*
1892    #(  9.6740   4.7656  -7.6614) ; N1
1893    #(  9.0739   4.3013  -5.3941) ; N3
1894    #(  9.8416   4.2192  -6.4581) ; C2
1895    #(  7.9885   5.0632  -5.6446) ; C4
1896    #(  7.6822   5.6856  -6.8194) ; C5
1897    #(  8.5831   5.5215  -7.8840) ; C6
1898    #( 10.9733   3.5117  -6.4286) ; N2
1899    #(  6.4857   6.3816  -6.7035) ; N7
1900    #(  6.9740   5.3703  -4.7760) ; N9
1901    #(  6.1133   6.1613  -5.4808) ; C8
1902    #(  8.4084   6.0747  -9.0933) ; O6
1903    #( 10.3759   4.5855  -8.3504) ; H1
1904    #( 11.6254   3.3761  -7.1879) ; H21
1905    #( 11.1917   3.0460  -5.5593) ; H22
1906    #(  5.1705   6.6830  -5.3167) ; H8
1907  ))
1908
1909(define rG04
1910  (make-constant-rG
1911    #( -0.5426  -0.8175   0.1929  ; dgf-base-tfo
1912        0.8304  -0.5567  -0.0237
1913        0.1267   0.1473   0.9809
1914       -0.5075   8.3929   0.2229)
1915    #( -0.8143  -0.5091  -0.2788  ; P-O3*-275-tfo
1916       -0.0433  -0.4257   0.9038
1917       -0.5788   0.7480   0.3246
1918        1.5227   6.9114  -7.0765)
1919    #(  0.3822  -0.7477   0.5430  ; P-O3*-180-tfo
1920        0.4552   0.6637   0.5935
1921       -0.8042   0.0203   0.5941
1922       -6.9472  -4.1186  -5.9108)
1923    #(  0.5640   0.8007  -0.2022  ; P-O3*-60-tfo
1924       -0.8247   0.5587  -0.0878
1925        0.0426   0.2162   0.9754
1926        6.2694  -7.0540   3.3316)
1927    #(  2.8930   8.5380  -3.3280) ; P
1928    #(  1.6980   7.6960  -3.5570) ; O1P
1929    #(  3.2260   9.5010  -4.4020) ; O2P
1930    #(  4.1590   7.6040  -3.0340) ; O5*
1931    #(  5.4352   8.2183  -2.7757) ; C5*
1932    #(  5.3830   8.7883  -1.8481) ; H5*
1933    #(  5.7729   8.7436  -3.6691) ; H5**
1934    #(  6.4830   7.1518  -2.5252) ; C4*
1935    #(  7.4749   7.5972  -2.4482) ; H4*
1936    #(  6.1626   6.4620  -1.2827) ; O4*
1937    #(  6.5431   5.0992  -1.3905) ; C1*
1938    #(  7.2871   4.9328  -0.6114) ; H1*
1939    #(  7.1852   4.8935  -2.7592) ; C2*
1940    #(  6.8573   3.9363  -3.1645) ; H2**
1941    #(  8.5780   5.1025  -2.6046) ; O2*
1942    #(  8.9516   4.7577  -1.7902) ; H2*
1943    #(  6.5522   6.0300  -3.5612) ; C3*
1944    #(  5.5420   5.7356  -3.8459) ; H3*
1945    #(  7.3487   6.4089  -4.6867) ; O3*
1946    #(  3.6343   2.6680   2.0783) ; N1
1947    #(  5.4505   3.9805   1.2446) ; N3
1948    #(  4.7540   3.3816   2.1851) ; C2
1949    #(  4.8805   3.7951   0.0354) ; C4
1950    #(  3.7416   3.0925  -0.2305) ; C5
1951    #(  3.0873   2.4980   0.8606) ; C6
1952    #(  5.1433   3.4373   3.4609) ; N2
1953    #(  3.4605   3.1184  -1.5906) ; N7
1954    #(  5.3247   4.2695  -1.1710) ; N9
1955    #(  4.4244   3.8244  -2.0953) ; C8
1956    #(  1.9600   1.7805   0.7462) ; O6
1957    #(  3.2489   2.2879   2.9191) ; H1
1958    #(  4.6785   3.0243   4.2568) ; H21
1959    #(  5.9823   3.9654   3.6539) ; H22
1960    #(  4.2675   3.8876  -3.1721) ; H8
1961  ))
1962
1963(define rG05
1964  (make-constant-rG
1965    #( -0.5891   0.0449   0.8068  ; dgf-base-tfo
1966        0.5375   0.7673   0.3498
1967       -0.6034   0.6397  -0.4762
1968       -0.3019  -3.7679  -9.5913)
1969    #( -0.8143  -0.5091  -0.2788  ; P-O3*-275-tfo
1970       -0.0433  -0.4257   0.9038
1971       -0.5788   0.7480   0.3246
1972        1.5227   6.9114  -7.0765)
1973    #(  0.3822  -0.7477   0.5430  ; P-O3*-180-tfo
1974        0.4552   0.6637   0.5935
1975       -0.8042   0.0203   0.5941
1976       -6.9472  -4.1186  -5.9108)
1977    #(  0.5640   0.8007  -0.2022  ; P-O3*-60-tfo
1978       -0.8247   0.5587  -0.0878
1979        0.0426   0.2162   0.9754
1980        6.2694  -7.0540   3.3316)
1981    #(  2.8930   8.5380  -3.3280) ; P
1982    #(  1.6980   7.6960  -3.5570) ; O1P
1983    #(  3.2260   9.5010  -4.4020) ; O2P
1984    #(  4.1590   7.6040  -3.0340) ; O5*
1985    #(  4.5778   6.6594  -4.0364) ; C5*
1986    #(  4.9220   7.1963  -4.9204) ; H5*
1987    #(  3.7996   5.9091  -4.1764) ; H5**
1988    #(  5.7873   5.8869  -3.5482) ; C4*
1989    #(  6.0405   5.0875  -4.2446) ; H4*
1990    #(  6.9135   6.8036  -3.4310) ; O4*
1991    #(  7.7293   6.4084  -2.3392) ; C1*
1992    #(  8.7078   6.1815  -2.7624) ; H1*
1993    #(  7.1305   5.1418  -1.7347) ; C2*
1994    #(  7.2040   5.1982  -0.6486) ; H2**
1995    #(  7.7417   4.0392  -2.3813) ; O2*
1996    #(  8.6785   4.1443  -2.5630) ; H2*
1997    #(  5.6666   5.2728  -2.1536) ; C3*
1998    #(  5.1747   5.9805  -1.4863) ; H3*
1999    #(  4.9997   4.0086  -2.1973) ; O3*
2000    #( 10.2594  10.6774  -1.0056) ; N1
2001    #(  9.7528   8.7080  -2.2631) ; N3
2002    #( 10.4471   9.7876  -1.9791) ; C2
2003    #(  8.7271   8.5575  -1.3991) ; C4
2004    #(  8.4100   9.3803  -0.3580) ; C5
2005    #(  9.2294  10.5030  -0.1574) ; C6
2006    #( 11.5110  10.1256  -2.7114) ; N2
2007    #(  7.2891   8.9068   0.3121) ; N7
2008    #(  7.7962   7.5519  -1.3859) ; N9
2009    #(  6.9702   7.8292  -0.3353) ; C8
2010    #(  9.0349  11.3951   0.8250) ; O6
2011    #( 10.9013  11.4422  -0.9512) ; H1
2012    #( 12.1031  10.9341  -2.5861) ; H21
2013    #( 11.7369   9.5180  -3.4859) ; H22
2014    #(  6.0888   7.3990   0.1403) ; H8
2015  ))
2016
2017(define rG06
2018  (make-constant-rG
2019    #( -0.9815   0.0731  -0.1772  ; dgf-base-tfo
2020        0.1912   0.3054  -0.9328
2021       -0.0141  -0.9494  -0.3137
2022        5.7506  -5.1944   4.7470)
2023    #( -0.8143  -0.5091  -0.2788  ; P-O3*-275-tfo
2024       -0.0433  -0.4257   0.9038
2025       -0.5788   0.7480   0.3246
2026        1.5227   6.9114  -7.0765)
2027    #(  0.3822  -0.7477   0.5430  ; P-O3*-180-tfo
2028        0.4552   0.6637   0.5935
2029       -0.8042   0.0203   0.5941
2030       -6.9472  -4.1186  -5.9108)
2031    #(  0.5640   0.8007  -0.2022  ; P-O3*-60-tfo
2032       -0.8247   0.5587  -0.0878
2033        0.0426   0.2162   0.9754
2034        6.2694  -7.0540   3.3316)
2035    #(  2.8930   8.5380  -3.3280) ; P
2036    #(  1.6980   7.6960  -3.5570) ; O1P
2037    #(  3.2260   9.5010  -4.4020) ; O2P
2038    #(  4.1590   7.6040  -3.0340) ; O5*
2039    #(  4.1214   6.7116  -1.9049) ; C5*
2040    #(  3.3465   5.9610  -2.0607) ; H5*
2041    #(  4.0789   7.2928  -0.9837) ; H5**
2042    #(  5.4170   5.9293  -1.8186) ; C4*
2043    #(  5.4506   5.3400  -0.9023) ; H4*
2044    #(  5.5067   5.0417  -2.9703) ; O4*
2045    #(  6.8650   4.9152  -3.3612) ; C1*
2046    #(  7.1090   3.8577  -3.2603) ; H1*
2047    #(  7.7152   5.7282  -2.3894) ; C2*
2048    #(  8.5029   6.2356  -2.9463) ; H2**
2049    #(  8.1036   4.8568  -1.3419) ; O2*
2050    #(  8.3270   3.9651  -1.6184) ; H2*
2051    #(  6.7003   6.7565  -1.8911) ; C3*
2052    #(  6.5898   7.5329  -2.6482) ; H3*
2053    #(  7.0505   7.2878  -0.6105) ; O3*
2054    #(  6.6624   3.5061  -8.2986) ; N1
2055    #(  6.5810   3.2570  -5.9221) ; N3
2056    #(  6.5151   2.8263  -7.1625) ; C2
2057    #(  6.8364   4.5817  -5.8882) ; C4
2058    #(  7.0116   5.4064  -6.9609) ; C5
2059    #(  6.9173   4.8260  -8.2361) ; C6
2060    #(  6.2717   1.5402  -7.4250) ; N2
2061    #(  7.2573   6.7070  -6.5394) ; N7
2062    #(  6.9740   5.3703  -4.7760) ; N9
2063    #(  7.2238   6.6275  -5.2453) ; C8
2064    #(  7.0668   5.5163  -9.3763) ; O6
2065    #(  6.5754   2.9964  -9.1545) ; H1
2066    #(  6.1908   1.1105  -8.3354) ; H21
2067    #(  6.1346   0.9352  -6.6280) ; H22
2068    #(  7.4108   7.6227  -4.8418) ; H8
2069  ))
2070
2071(define rG07
2072  (make-constant-rG
2073    #(  0.0894  -0.6059   0.7905  ; dgf-base-tfo
2074       -0.6810   0.5420   0.4924
2075       -0.7268  -0.5824  -0.3642
2076       34.1424  45.9610 -11.8600)
2077    #( -0.8644  -0.4956  -0.0851  ; P-O3*-275-tfo
2078       -0.0427   0.2409  -0.9696
2079        0.5010  -0.8345  -0.2294
2080        4.0167  54.5377  12.4779)
2081    #(  0.3706  -0.6167   0.6945  ; P-O3*-180-tfo
2082       -0.2867  -0.7872  -0.5460
2083        0.8834   0.0032  -0.4686
2084      -52.9020  18.6313  -0.6709)
2085    #(  0.4155   0.9025  -0.1137  ; P-O3*-60-tfo
2086        0.9040  -0.4236  -0.0582
2087       -0.1007  -0.0786  -0.9918
2088       -7.6624 -25.2080  49.5181)
2089    #( 31.3810   0.1400  47.5810) ; P
2090    #( 29.9860   0.6630  47.6290) ; O1P
2091    #( 31.7210  -0.6460  48.8090) ; O2P
2092    #( 32.4940   1.2540  47.2740) ; O5*
2093    #( 33.8709   0.7918  47.2113) ; C5*
2094    #( 34.1386   0.5870  46.1747) ; H5*
2095    #( 34.0186  -0.0095  47.9353) ; H5**
2096    #( 34.7297   1.9687  47.6685) ; C4*
2097    #( 35.7723   1.6845  47.8113) ; H4*
2098    #( 34.6455   2.9768  46.6660) ; O4*
2099    #( 34.1690   4.1829  47.2627) ; C1*
2100    #( 35.0437   4.7633  47.5560) ; H1*
2101    #( 33.4145   3.7532  48.4954) ; C2*
2102    #( 32.4340   3.3797  48.2001) ; H2**
2103    #( 33.3209   4.6953  49.5217) ; O2*
2104    #( 33.2374   5.6059  49.2295) ; H2*
2105    #( 34.2724   2.5970  48.9773) ; C3*
2106    #( 33.6373   1.8935  49.5157) ; H3*
2107    #( 35.3453   3.1884  49.7285) ; O3*
2108    #( 34.0511   7.8930  43.7791) ; N1
2109    #( 34.9937   6.3369  45.3199) ; N3
2110    #( 35.0882   7.3126  44.4200) ; C2
2111    #( 33.7190   5.9650  45.5374) ; C4
2112    #( 32.5845   6.4770  44.9458) ; C5
2113    #( 32.7430   7.5179  43.9914) ; C6
2114    #( 36.3030   7.7827  44.1036) ; N2
2115    #( 31.4499   5.8335  45.4368) ; N7
2116    #( 33.2760   4.9817  46.4043) ; N9
2117    #( 31.9235   4.9639  46.2934) ; C8
2118    #( 31.8602   8.1000  43.3695) ; O6
2119    #( 34.2623   8.6223  43.1283) ; H1
2120    #( 36.5188   8.5081  43.4347) ; H21
2121    #( 37.0888   7.3524  44.5699) ; H22
2122    #( 31.0815   4.4201  46.7218) ; H8
2123  ))
2124
2125(define rG08
2126  (make-constant-rG
2127    #(  0.2224   0.6335   0.7411  ; dgf-base-tfo
2128       -0.3644  -0.6510   0.6659
2129        0.9043  -0.4181   0.0861
2130      -47.6824  -0.5823 -31.7554)
2131    #( -0.8644  -0.4956  -0.0851  ; P-O3*-275-tfo
2132       -0.0427   0.2409  -0.9696
2133        0.5010  -0.8345  -0.2294
2134        4.0167  54.5377  12.4779)
2135    #(  0.3706  -0.6167   0.6945  ; P-O3*-180-tfo
2136       -0.2867  -0.7872  -0.5460
2137        0.8834   0.0032  -0.4686
2138      -52.9020  18.6313  -0.6709)
2139    #(  0.4155   0.9025  -0.1137  ; P-O3*-60-tfo
2140        0.9040  -0.4236  -0.0582
2141       -0.1007  -0.0786  -0.9918
2142       -7.6624 -25.2080  49.5181)
2143    #( 31.3810   0.1400  47.5810) ; P
2144    #( 29.9860   0.6630  47.6290) ; O1P
2145    #( 31.7210  -0.6460  48.8090) ; O2P
2146    #( 32.4940   1.2540  47.2740) ; O5*
2147    #( 32.5924   2.3488  48.2255) ; C5*
2148    #( 33.3674   2.1246  48.9584) ; H5*
2149    #( 31.5994   2.5917  48.6037) ; H5**
2150    #( 33.0722   3.5577  47.4258) ; C4*
2151    #( 33.0310   4.4778  48.0089) ; H4*
2152    #( 34.4173   3.3055  47.0316) ; O4*
2153    #( 34.5056   3.3910  45.6094) ; C1*
2154    #( 34.7881   4.4152  45.3663) ; H1*
2155    #( 33.1122   3.1198  45.1010) ; C2*
2156    #( 32.9230   2.0469  45.1369) ; H2**
2157    #( 32.7946   3.6590  43.8529) ; O2*
2158    #( 33.5170   3.6707  43.2207) ; H2*
2159    #( 32.2730   3.8173  46.1566) ; C3*
2160    #( 31.3094   3.3123  46.2244) ; H3*
2161    #( 32.2391   5.2039  45.7807) ; O3*
2162    #( 39.3337   2.7157  44.1441) ; N1
2163    #( 37.4430   3.8242  45.0824) ; N3
2164    #( 38.7276   3.7646  44.7403) ; C2
2165    #( 36.7791   2.6963  44.7704) ; C4
2166    #( 37.2860   1.5653  44.1678) ; C5
2167    #( 38.6647   1.5552  43.8235) ; C6
2168    #( 39.5123   4.8216  44.9936) ; N2
2169    #( 36.2829   0.6110  44.0078) ; N7
2170    #( 35.4394   2.4314  44.9931) ; N9
2171    #( 35.2180   1.1815  44.5128) ; C8
2172    #( 39.2907   0.6514  43.2796) ; O6
2173    #( 40.3076   2.8048  43.9352) ; H1
2174    #( 40.4994   4.9066  44.7977) ; H21
2175    #( 39.0738   5.6108  45.4464) ; H22
2176    #( 34.3856   0.4842  44.4185) ; H8
2177  ))
2178
2179(define rG09
2180  (make-constant-rG
2181    #( -0.9699  -0.1688  -0.1753  ; dgf-base-tfo
2182       -0.1050  -0.3598   0.9271
2183       -0.2196   0.9176   0.3312
2184       45.6217 -38.9484 -12.3208)
2185    #( -0.8644  -0.4956  -0.0851  ; P-O3*-275-tfo
2186       -0.0427   0.2409  -0.9696
2187        0.5010  -0.8345  -0.2294
2188        4.0167  54.5377  12.4779)
2189    #(  0.3706  -0.6167   0.6945  ; P-O3*-180-tfo
2190       -0.2867  -0.7872  -0.5460
2191        0.8834   0.0032  -0.4686
2192      -52.9020  18.6313  -0.6709)
2193    #(  0.4155   0.9025  -0.1137  ; P-O3*-60-tfo
2194        0.9040  -0.4236  -0.0582
2195       -0.1007  -0.0786  -0.9918
2196       -7.6624 -25.2080  49.5181)
2197    #( 31.3810   0.1400  47.5810) ; P
2198    #( 29.9860   0.6630  47.6290) ; O1P
2199    #( 31.7210  -0.6460  48.8090) ; O2P
2200    #( 32.4940   1.2540  47.2740) ; O5*
2201    #( 33.8709   0.7918  47.2113) ; C5*
2202    #( 34.1386   0.5870  46.1747) ; H5*
2203    #( 34.0186  -0.0095  47.9353) ; H5**
2204    #( 34.7297   1.9687  47.6685) ; C4*
2205    #( 34.5880   2.8482  47.0404) ; H4*
2206    #( 34.3575   2.2770  49.0081) ; O4*
2207    #( 35.5157   2.1993  49.8389) ; C1*
2208    #( 35.9424   3.2010  49.8893) ; H1*
2209    #( 36.4701   1.2820  49.1169) ; C2*
2210    #( 36.1545   0.2498  49.2683) ; H2**
2211    #( 37.8262   1.4547  49.4008) ; O2*
2212    #( 38.0227   1.6945  50.3094) ; H2*
2213    #( 36.2242   1.6797  47.6725) ; C3*
2214    #( 36.4297   0.8197  47.0351) ; H3*
2215    #( 37.0289   2.8480  47.4426) ; O3*
2216    #( 34.3005   3.5042  54.6070) ; N1
2217    #( 34.7693   3.7936  52.2874) ; N3
2218    #( 34.4484   4.2541  53.4939) ; C2
2219    #( 34.9354   2.4584  52.2785) ; C4
2220    #( 34.8092   1.5915  53.3422) ; C5
2221    #( 34.4646   2.1367  54.6085) ; C6
2222    #( 34.2514   5.5708  53.6503) ; N2
2223    #( 35.0641   0.2835  52.9337) ; N7
2224    #( 35.2669   1.6690  51.1915) ; N9
2225    #( 35.3288   0.3954  51.6563) ; C8
2226    #( 34.3151   1.5317  55.6650) ; O6
2227    #( 34.0623   3.9797  55.4539) ; H1
2228    #( 33.9950   6.0502  54.5016) ; H21
2229    #( 34.3512   6.1432  52.8242) ; H22
2230    #( 35.5414  -0.6006  51.2679) ; H8
2231  ))
2232
2233(define rG10
2234  (make-constant-rG
2235    #( -0.0980  -0.9723   0.2122  ; dgf-base-tfo
2236       -0.9731   0.1383   0.1841
2237       -0.2083  -0.1885  -0.9597
2238       17.8469  38.8265  37.0475)
2239    #( -0.8644  -0.4956  -0.0851  ; P-O3*-275-tfo
2240       -0.0427   0.2409  -0.9696
2241        0.5010  -0.8345  -0.2294
2242        4.0167  54.5377  12.4779)
2243    #(  0.3706  -0.6167   0.6945  ; P-O3*-180-tfo
2244       -0.2867  -0.7872  -0.5460
2245        0.8834   0.0032  -0.4686
2246      -52.9020  18.6313  -0.6709)
2247    #(  0.4155   0.9025  -0.1137  ; P-O3*-60-tfo
2248        0.9040  -0.4236  -0.0582
2249       -0.1007  -0.0786  -0.9918
2250       -7.6624 -25.2080  49.5181)
2251    #( 31.3810   0.1400  47.5810) ; P
2252    #( 29.9860   0.6630  47.6290) ; O1P
2253    #( 31.7210  -0.6460  48.8090) ; O2P
2254    #( 32.4940   1.2540  47.2740) ; O5*
2255    #( 32.5924   2.3488  48.2255) ; C5*
2256    #( 33.3674   2.1246  48.9584) ; H5*
2257    #( 31.5994   2.5917  48.6037) ; H5**
2258    #( 33.0722   3.5577  47.4258) ; C4*
2259    #( 34.0333   3.3761  46.9447) ; H4*
2260    #( 32.0890   3.8338  46.4332) ; O4*
2261    #( 31.6377   5.1787  46.5914) ; C1*
2262    #( 32.2499   5.8016  45.9392) ; H1*
2263    #( 31.9167   5.5319  48.0305) ; C2*
2264    #( 31.1507   5.0820  48.6621) ; H2**
2265    #( 32.0865   6.8890  48.3114) ; O2*
2266    #( 31.5363   7.4819  47.7942) ; H2*
2267    #( 33.2398   4.8224  48.2563) ; C3*
2268    #( 33.3166   4.5570  49.3108) ; H3*
2269    #( 34.2528   5.7056  47.7476) ; O3*
2270    #( 28.2782   6.3049  42.9364) ; N1
2271    #( 30.4001   5.8547  43.9258) ; N3
2272    #( 29.6195   6.1568  42.8913) ; C2
2273    #( 29.7005   5.7006  45.0649) ; C4
2274    #( 28.3383   5.8221  45.2343) ; C5
2275    #( 27.5519   6.1461  44.0958) ; C6
2276    #( 30.1838   6.3385  41.6890) ; N2
2277    #( 27.9936   5.5926  46.5651) ; N7
2278    #( 30.2046   5.3825  46.3136) ; N9
2279    #( 29.1371   5.3398  47.1506) ; C8
2280    #( 26.3361   6.3024  44.0495) ; O6
2281    #( 27.8122   6.5394  42.0833) ; H1
2282    #( 29.7125   6.5595  40.8235) ; H21
2283    #( 31.1859   6.2231  41.6389) ; H22
2284    #( 28.9406   5.1504  48.2059) ; H8
2285  ))
2286
2287(define rGs
2288  (list rG01 rG02 rG03 rG04 rG05 rG06 rG07 rG08 rG09 rG10))
2289
2290(define rU
2291  (make-constant-rU
2292    #( -0.0359  -0.8071   0.5894  ; dgf-base-tfo
2293       -0.2669   0.5761   0.7726
2294       -0.9631  -0.1296  -0.2361
2295        0.1584   8.3434   0.5434)
2296    #( -0.8313  -0.4738  -0.2906  ; P-O3*-275-tfo
2297        0.0649   0.4366  -0.8973
2298        0.5521  -0.7648  -0.3322
2299        1.6833   6.8060  -7.0011)
2300    #(  0.3445  -0.7630   0.5470  ; P-O3*-180-tfo
2301       -0.4628  -0.6450  -0.6082
2302        0.8168  -0.0436  -0.5753
2303       -6.8179  -3.9778  -5.9887)
2304    #(  0.5855   0.7931  -0.1682  ; P-O3*-60-tfo
2305        0.8103  -0.5790   0.0906
2306       -0.0255  -0.1894  -0.9816
2307        6.1203  -7.1051   3.1984)
2308    #(  2.6760  -8.4960   3.2880) ; P
2309    #(  1.4950  -7.6230   3.4770) ; O1P
2310    #(  2.9490  -9.4640   4.3740) ; O2P
2311    #(  3.9730  -7.5950   3.0340) ; O5*
2312    #(  5.2430  -8.2420   2.8260) ; C5*
2313    #(  5.1974  -8.8497   1.9223) ; H5*
2314    #(  5.5548  -8.7348   3.7469) ; H5**
2315    #(  6.3140  -7.2060   2.5510) ; C4*
2316    #(  7.2954  -7.6762   2.4898) ; H4*
2317    #(  6.0140  -6.5420   1.2890) ; O4*
2318    #(  6.4190  -5.1840   1.3620) ; C1*
2319    #(  7.1608  -5.0495   0.5747) ; H1*
2320    #(  7.0760  -4.9560   2.7270) ; C2*
2321    #(  6.7770  -3.9803   3.1099) ; H2**
2322    #(  8.4500  -5.1930   2.5810) ; O2*
2323    #(  8.8309  -4.8755   1.7590) ; H2*
2324    #(  6.4060  -6.0590   3.5580) ; C3*
2325    #(  5.4021  -5.7313   3.8281) ; H3*
2326    #(  7.1570  -6.4240   4.7070) ; O3*
2327    #(  5.2170  -4.3260   1.1690) ; N1
2328    #(  4.2960  -2.2560   0.6290) ; N3
2329    #(  5.4330  -3.0200   0.7990) ; C2
2330    #(  2.9930  -2.6780   0.7940) ; C4
2331    #(  2.8670  -4.0630   1.1830) ; C5
2332    #(  3.9570  -4.8300   1.3550) ; C6
2333    #(  6.5470  -2.5560   0.6290) ; O2
2334    #(  2.0540  -1.9000   0.6130) ; O4
2335    #(  4.4300  -1.3020   0.3600) ; H3
2336    #(  1.9590  -4.4570   1.3250) ; H5
2337    #(  3.8460  -5.7860   1.6240) ; H6
2338  ))
2339
2340(define rU01
2341  (make-constant-rU
2342    #( -0.0137  -0.8012   0.5983  ; dgf-base-tfo
2343       -0.2523   0.5817   0.7733
2344       -0.9675  -0.1404  -0.2101
2345        0.2031   8.3874   0.4228)
2346    #( -0.8313  -0.4738  -0.2906  ; P-O3*-275-tfo
2347        0.0649   0.4366  -0.8973
2348        0.5521  -0.7648  -0.3322
2349        1.6833   6.8060  -7.0011)
2350    #(  0.3445  -0.7630   0.5470  ; P-O3*-180-tfo
2351       -0.4628  -0.6450  -0.6082
2352        0.8168  -0.0436  -0.5753
2353       -6.8179  -3.9778  -5.9887)
2354    #(  0.5855   0.7931  -0.1682  ; P-O3*-60-tfo
2355        0.8103  -0.5790   0.0906
2356       -0.0255  -0.1894  -0.9816
2357        6.1203  -7.1051   3.1984)
2358    #(  2.6760  -8.4960   3.2880) ; P
2359    #(  1.4950  -7.6230   3.4770) ; O1P
2360    #(  2.9490  -9.4640   4.3740) ; O2P
2361    #(  3.9730  -7.5950   3.0340) ; O5*
2362    #(  5.2416  -8.2422   2.8181) ; C5*
2363    #(  5.2050  -8.8128   1.8901) ; H5*
2364    #(  5.5368  -8.7738   3.7227) ; H5**
2365    #(  6.3232  -7.2037   2.6002) ; C4*
2366    #(  7.3048  -7.6757   2.5577) ; H4*
2367    #(  6.0635  -6.5092   1.3456) ; O4*
2368    #(  6.4697  -5.1547   1.4629) ; C1*
2369    #(  7.2354  -5.0043   0.7018) ; H1*
2370    #(  7.0856  -4.9610   2.8521) ; C2*
2371    #(  6.7777  -3.9935   3.2487) ; H2**
2372    #(  8.4627  -5.1992   2.7423) ; O2*
2373    #(  8.8693  -4.8638   1.9399) ; H2*
2374    #(  6.3877  -6.0809   3.6362) ; C3*
2375    #(  5.3770  -5.7562   3.8834) ; H3*
2376    #(  7.1024  -6.4754   4.7985) ; O3*
2377    #(  5.2764  -4.2883   1.2538) ; N1
2378    #(  4.3777  -2.2062   0.7229) ; N3
2379    #(  5.5069  -2.9779   0.9088) ; C2
2380    #(  3.0693  -2.6246   0.8500) ; C4
2381    #(  2.9279  -4.0146   1.2149) ; C5
2382    #(  4.0101  -4.7892   1.4017) ; C6
2383    #(  6.6267  -2.5166   0.7728) ; O2
2384    #(  2.1383  -1.8396   0.6581) ; O4
2385    #(  4.5223  -1.2489   0.4716) ; H3
2386    #(  2.0151  -4.4065   1.3290) ; H5
2387    #(  3.8886  -5.7486   1.6535) ; H6
2388  ))
2389
2390(define rU02
2391  (make-constant-rU
2392    #(  0.5141   0.0246   0.8574  ; dgf-base-tfo
2393       -0.5547  -0.7529   0.3542
2394        0.6542  -0.6577  -0.3734
2395       -9.1111  -3.4598  -3.2939)
2396    #( -0.8313  -0.4738  -0.2906  ; P-O3*-275-tfo
2397        0.0649   0.4366  -0.8973
2398        0.5521  -0.7648  -0.3322
2399        1.6833   6.8060  -7.0011)
2400    #(  0.3445  -0.7630   0.5470  ; P-O3*-180-tfo
2401       -0.4628  -0.6450  -0.6082
2402        0.8168  -0.0436  -0.5753
2403       -6.8179  -3.9778  -5.9887)
2404    #(  0.5855   0.7931  -0.1682  ; P-O3*-60-tfo
2405        0.8103  -0.5790   0.0906
2406       -0.0255  -0.1894  -0.9816
2407        6.1203  -7.1051   3.1984)
2408    #(  2.6760  -8.4960   3.2880) ; P
2409    #(  1.4950  -7.6230   3.4770) ; O1P
2410    #(  2.9490  -9.4640   4.3740) ; O2P
2411    #(  3.9730  -7.5950   3.0340) ; O5*
2412    #(  4.3825  -6.6585   4.0489) ; C5*
2413    #(  4.6841  -7.2019   4.9443) ; H5*
2414    #(  3.6189  -5.8889   4.1625) ; H5**
2415    #(  5.6255  -5.9175   3.5998) ; C4*
2416    #(  5.8732  -5.1228   4.3034) ; H4*
2417    #(  6.7337  -6.8605   3.5222) ; O4*
2418    #(  7.5932  -6.4923   2.4548) ; C1*
2419    #(  8.5661  -6.2983   2.9064) ; H1*
2420    #(  7.0527  -5.2012   1.8322) ; C2*
2421    #(  7.1627  -5.2525   0.7490) ; H2**
2422    #(  7.6666  -4.1249   2.4880) ; O2*
2423    #(  8.5944  -4.2543   2.6981) ; H2*
2424    #(  5.5661  -5.3029   2.2009) ; C3*
2425    #(  5.0841  -6.0018   1.5172) ; H3*
2426    #(  4.9062  -4.0452   2.2042) ; O3*
2427    #(  7.6298  -7.6136   1.4752) ; N1
2428    #(  8.6945  -8.7046  -0.2857) ; N3
2429    #(  8.6943  -7.6514   0.6066) ; C2
2430    #(  7.7426  -9.6987  -0.3801) ; C4
2431    #(  6.6642  -9.5742   0.5722) ; C5
2432    #(  6.6391  -8.5592   1.4526) ; C6
2433    #(  9.5840  -6.8186   0.6136) ; O2
2434    #(  7.8505 -10.5925  -1.2223) ; O4
2435    #(  9.4601  -8.7514  -0.9277) ; H3
2436    #(  5.9281 -10.2509   0.5782) ; H5
2437    #(  5.8831  -8.4931   2.1028) ; H6
2438  ))
2439
2440(define rU03
2441  (make-constant-rU
2442    #( -0.4993   0.0476   0.8651  ; dgf-base-tfo
2443        0.8078  -0.3353   0.4847
2444        0.3132   0.9409   0.1290
2445        6.2989  -5.2303  -3.8577)
2446    #( -0.8313  -0.4738  -0.2906  ; P-O3*-275-tfo
2447        0.0649   0.4366  -0.8973
2448        0.5521  -0.7648  -0.3322
2449        1.6833   6.8060  -7.0011)
2450    #(  0.3445  -0.7630   0.5470  ; P-O3*-180-tfo
2451       -0.4628  -0.6450  -0.6082
2452        0.8168  -0.0436  -0.5753
2453       -6.8179  -3.9778  -5.9887)
2454    #(  0.5855   0.7931  -0.1682  ; P-O3*-60-tfo
2455        0.8103  -0.5790   0.0906
2456       -0.0255  -0.1894  -0.9816
2457        6.1203  -7.1051   3.1984)
2458    #(  2.6760  -8.4960   3.2880) ; P
2459    #(  1.4950  -7.6230   3.4770) ; O1P
2460    #(  2.9490  -9.4640   4.3740) ; O2P
2461    #(  3.9730  -7.5950   3.0340) ; O5*
2462    #(  3.9938  -6.7042   1.9023) ; C5*
2463    #(  3.2332  -5.9343   2.0319) ; H5*
2464    #(  3.9666  -7.2863   0.9812) ; H5**
2465    #(  5.3098  -5.9546   1.8564) ; C4*
2466    #(  5.3863  -5.3702   0.9395) ; H4*
2467    #(  5.3851  -5.0642   3.0076) ; O4*
2468    #(  6.7315  -4.9724   3.4462) ; C1*
2469    #(  7.0033  -3.9202   3.3619) ; H1*
2470    #(  7.5997  -5.8018   2.4948) ; C2*
2471    #(  8.3627  -6.3254   3.0707) ; H2**
2472    #(  8.0410  -4.9501   1.4724) ; O2*
2473    #(  8.2781  -4.0644   1.7570) ; H2*
2474    #(  6.5701  -6.8129   1.9714) ; C3*
2475    #(  6.4186  -7.5809   2.7299) ; H3*
2476    #(  6.9357  -7.3841   0.7235) ; O3*
2477    #(  6.8024  -5.4718   4.8475) ; N1
2478    #(  7.9218  -5.5700   6.8877) ; N3
2479    #(  7.8908  -5.0886   5.5944) ; C2
2480    #(  6.9789  -6.3827   7.4823) ; C4
2481    #(  5.8742  -6.7319   6.6202) ; C5
2482    #(  5.8182  -6.2769   5.3570) ; C6
2483    #(  8.7747  -4.3728   5.1568) ; O2
2484    #(  7.1154  -6.7509   8.6509) ; O4
2485    #(  8.7055  -5.3037   7.4491) ; H3
2486    #(  5.1416  -7.3178   6.9665) ; H5
2487    #(  5.0441  -6.5310   4.7784) ; H6
2488  ))
2489
2490(define rU04
2491  (make-constant-rU
2492    #( -0.5669  -0.8012   0.1918  ; dgf-base-tfo
2493       -0.8129   0.5817   0.0273
2494       -0.1334  -0.1404  -0.9811
2495       -0.3279   8.3874   0.3355)
2496    #( -0.8313  -0.4738  -0.2906  ; P-O3*-275-tfo
2497        0.0649   0.4366  -0.8973
2498        0.5521  -0.7648  -0.3322
2499        1.6833   6.8060  -7.0011)
2500    #(  0.3445  -0.7630   0.5470  ; P-O3*-180-tfo
2501       -0.4628  -0.6450  -0.6082
2502        0.8168  -0.0436  -0.5753
2503       -6.8179  -3.9778  -5.9887)
2504    #(  0.5855   0.7931  -0.1682  ; P-O3*-60-tfo
2505        0.8103  -0.5790   0.0906
2506       -0.0255  -0.1894  -0.9816
2507        6.1203  -7.1051   3.1984)
2508    #(  2.6760  -8.4960   3.2880) ; P
2509    #(  1.4950  -7.6230   3.4770) ; O1P
2510    #(  2.9490  -9.4640   4.3740) ; O2P
2511    #(  3.9730  -7.5950   3.0340) ; O5*
2512    #(  5.2416  -8.2422   2.8181) ; C5*
2513    #(  5.2050  -8.8128   1.8901) ; H5*
2514    #(  5.5368  -8.7738   3.7227) ; H5**
2515    #(  6.3232  -7.2037   2.6002) ; C4*
2516    #(  7.3048  -7.6757   2.5577) ; H4*
2517    #(  6.0635  -6.5092   1.3456) ; O4*
2518    #(  6.4697  -5.1547   1.4629) ; C1*
2519    #(  7.2354  -5.0043   0.7018) ; H1*
2520    #(  7.0856  -4.9610   2.8521) ; C2*
2521    #(  6.7777  -3.9935   3.2487) ; H2**
2522    #(  8.4627  -5.1992   2.7423) ; O2*
2523    #(  8.8693  -4.8638   1.9399) ; H2*
2524    #(  6.3877  -6.0809   3.6362) ; C3*
2525    #(  5.3770  -5.7562   3.8834) ; H3*
2526    #(  7.1024  -6.4754   4.7985) ; O3*
2527    #(  5.2764  -4.2883   1.2538) ; N1
2528    #(  3.8961  -3.0896  -0.1893) ; N3
2529    #(  5.0095  -3.8907  -0.0346) ; C2
2530    #(  3.0480  -2.6632   0.8116) ; C4
2531    #(  3.4093  -3.1310   2.1292) ; C5
2532    #(  4.4878  -3.9124   2.3088) ; C6
2533    #(  5.7005  -4.2164  -0.9842) ; O2
2534    #(  2.0800  -1.9458   0.5503) ; O4
2535    #(  3.6834  -2.7882  -1.1190) ; H3
2536    #(  2.8508  -2.8721   2.9172) ; H5
2537    #(  4.7188  -4.2247   3.2295) ; H6
2538  ))
2539
2540(define rU05
2541  (make-constant-rU
2542    #( -0.6298   0.0246   0.7763  ; dgf-base-tfo
2543       -0.5226  -0.7529  -0.4001
2544        0.5746  -0.6577   0.4870
2545       -0.0208  -3.4598  -9.6882)
2546    #( -0.8313  -0.4738  -0.2906  ; P-O3*-275-tfo
2547        0.0649   0.4366  -0.8973
2548        0.5521  -0.7648  -0.3322
2549        1.6833   6.8060  -7.0011)
2550    #(  0.3445  -0.7630   0.5470  ; P-O3*-180-tfo
2551       -0.4628  -0.6450  -0.6082
2552        0.8168  -0.0436  -0.5753
2553       -6.8179  -3.9778  -5.9887)
2554    #(  0.5855   0.7931  -0.1682  ; P-O3*-60-tfo
2555        0.8103  -0.5790   0.0906
2556       -0.0255  -0.1894  -0.9816
2557        6.1203  -7.1051   3.1984)
2558    #(  2.6760  -8.4960   3.2880) ; P
2559    #(  1.4950  -7.6230   3.4770) ; O1P
2560    #(  2.9490  -9.4640   4.3740) ; O2P
2561    #(  3.9730  -7.5950   3.0340) ; O5*
2562    #(  4.3825  -6.6585   4.0489) ; C5*
2563    #(  4.6841  -7.2019   4.9443) ; H5*
2564    #(  3.6189  -5.8889   4.1625) ; H5**
2565    #(  5.6255  -5.9175   3.5998) ; C4*
2566    #(  5.8732  -5.1228   4.3034) ; H4*
2567    #(  6.7337  -6.8605   3.5222) ; O4*
2568    #(  7.5932  -6.4923   2.4548) ; C1*
2569    #(  8.5661  -6.2983   2.9064) ; H1*
2570    #(  7.0527  -5.2012   1.8322) ; C2*
2571    #(  7.1627  -5.2525   0.7490) ; H2**
2572    #(  7.6666  -4.1249   2.4880) ; O2*
2573    #(  8.5944  -4.2543   2.6981) ; H2*
2574    #(  5.5661  -5.3029   2.2009) ; C3*
2575    #(  5.0841  -6.0018   1.5172) ; H3*
2576    #(  4.9062  -4.0452   2.2042) ; O3*
2577    #(  7.6298  -7.6136   1.4752) ; N1
2578    #(  8.5977  -9.5977   0.7329) ; N3
2579    #(  8.5951  -8.5745   1.6594) ; C2
2580    #(  7.7372  -9.7371  -0.3364) ; C4
2581    #(  6.7596  -8.6801  -0.4476) ; C5
2582    #(  6.7338  -7.6721   0.4408) ; C6
2583    #(  9.3993  -8.5377   2.5743) ; O2
2584    #(  7.8374 -10.6990  -1.1008) ; O4
2585    #(  9.2924 -10.3081   0.8477) ; H3
2586    #(  6.0932  -8.6982  -1.1929) ; H5
2587    #(  6.0481  -6.9515   0.3446) ; H6
2588  ))
2589
2590(define rU06
2591  (make-constant-rU
2592    #( -0.9837   0.0476  -0.1733  ; dgf-base-tfo
2593       -0.1792  -0.3353   0.9249
2594       -0.0141   0.9409   0.3384
2595        5.7793  -5.2303   4.5997)
2596    #( -0.8313  -0.4738  -0.2906  ; P-O3*-275-tfo
2597        0.0649   0.4366  -0.8973
2598        0.5521  -0.7648  -0.3322
2599        1.6833   6.8060  -7.0011)
2600    #(  0.3445  -0.7630   0.5470  ; P-O3*-180-tfo
2601       -0.4628  -0.6450  -0.6082
2602        0.8168  -0.0436  -0.5753
2603       -6.8179  -3.9778  -5.9887)
2604    #(  0.5855   0.7931  -0.1682  ; P-O3*-60-tfo
2605        0.8103  -0.5790   0.0906
2606       -0.0255  -0.1894  -0.9816
2607        6.1203  -7.1051   3.1984)
2608    #(  2.6760  -8.4960   3.2880) ; P
2609    #(  1.4950  -7.6230   3.4770) ; O1P
2610    #(  2.9490  -9.4640   4.3740) ; O2P
2611    #(  3.9730  -7.5950   3.0340) ; O5*
2612    #(  3.9938  -6.7042   1.9023) ; C5*
2613    #(  3.2332  -5.9343   2.0319) ; H5*
2614    #(  3.9666  -7.2863   0.9812) ; H5**
2615    #(  5.3098  -5.9546   1.8564) ; C4*
2616    #(  5.3863  -5.3702   0.9395) ; H4*
2617    #(  5.3851  -5.0642   3.0076) ; O4*
2618    #(  6.7315  -4.9724   3.4462) ; C1*
2619    #(  7.0033  -3.9202   3.3619) ; H1*
2620    #(  7.5997  -5.8018   2.4948) ; C2*
2621    #(  8.3627  -6.3254   3.0707) ; H2**
2622    #(  8.0410  -4.9501   1.4724) ; O2*
2623    #(  8.2781  -4.0644   1.7570) ; H2*
2624    #(  6.5701  -6.8129   1.9714) ; C3*
2625    #(  6.4186  -7.5809   2.7299) ; H3*
2626    #(  6.9357  -7.3841   0.7235) ; O3*
2627    #(  6.8024  -5.4718   4.8475) ; N1
2628    #(  6.6920  -5.0495   7.1354) ; N3
2629    #(  6.6201  -4.5500   5.8506) ; C2
2630    #(  6.9254  -6.3614   7.4926) ; C4
2631    #(  7.1046  -7.2543   6.3718) ; C5
2632    #(  7.0391  -6.7951   5.1106) ; C6
2633    #(  6.4083  -3.3696   5.6340) ; O2
2634    #(  6.9679  -6.6901   8.6800) ; O4
2635    #(  6.5626  -4.3957   7.8812) ; H3
2636    #(  7.2781  -8.2254   6.5350) ; H5
2637    #(  7.1657  -7.4312   4.3503) ; H6
2638  ))
2639
2640(define rU07
2641  (make-constant-rU
2642    #( -0.9434   0.3172   0.0971  ; dgf-base-tfo
2643        0.2294   0.4125   0.8816
2644        0.2396   0.8539  -0.4619
2645        8.3625 -52.7147   1.3745)
2646    #(  0.2765  -0.1121  -0.9545  ; P-O3*-275-tfo
2647       -0.8297   0.4733  -0.2959
2648        0.4850   0.8737   0.0379
2649      -14.7774 -45.2464  21.9088)
2650    #(  0.1063  -0.6334  -0.7665  ; P-O3*-180-tfo
2651       -0.5932  -0.6591   0.4624
2652       -0.7980   0.4055  -0.4458
2653       43.7634   4.3296  28.4890)
2654    #(  0.7136  -0.5032  -0.4873  ; P-O3*-60-tfo
2655        0.6803   0.3317   0.6536
2656       -0.1673  -0.7979   0.5791
2657      -17.1858  41.4390 -27.0751)
2658    #( 21.3880  15.0780  45.5770) ; P
2659    #( 21.9980  14.5500  46.8210) ; O1P
2660    #( 21.1450  14.0270  44.5420) ; O2P
2661    #( 22.1250  16.3600  44.9460) ; O5*
2662    #( 21.5037  16.8594  43.7323) ; C5*
2663    #( 20.8147  17.6663  43.9823) ; H5*
2664    #( 21.1086  16.0230  43.1557) ; H5**
2665    #( 22.5654  17.4874  42.8616) ; C4*
2666    #( 22.1584  17.7243  41.8785) ; H4*
2667    #( 23.0557  18.6826  43.4751) ; O4*
2668    #( 24.4788  18.6151  43.6455) ; C1*
2669    #( 24.9355  19.0840  42.7739) ; H1*
2670    #( 24.7958  17.1427  43.6474) ; C2*
2671    #( 24.5652  16.7400  44.6336) ; H2**
2672    #( 26.1041  16.8773  43.2455) ; O2*
2673    #( 26.7516  17.5328  43.5149) ; H2*
2674    #( 23.8109  16.5979  42.6377) ; C3*
2675    #( 23.5756  15.5686  42.9084) ; H3*
2676    #( 24.2890  16.7447  41.2729) ; O3*
2677    #( 24.9420  19.2174  44.8923) ; N1
2678    #( 25.2655  20.5636  44.8883) ; N3
2679    #( 25.1663  21.2219  43.8561) ; C2
2680    #( 25.6911  21.1219  46.0494) ; C4
2681    #( 25.8051  20.4068  47.2048) ; C5
2682    #( 26.2093  20.9962  48.2534) ; C6
2683    #( 25.4692  19.0221  47.2053) ; O2
2684    #( 25.0502  18.4827  46.0370) ; O4
2685    #( 25.9599  22.1772  46.0966) ; H3
2686    #( 25.5545  18.4409  48.1234) ; H5
2687    #( 24.7854  17.4265  45.9883) ; H6
2688  ))
2689
2690(define rU08
2691  (make-constant-rU
2692    #( -0.0080  -0.7928   0.6094  ; dgf-base-tfo
2693       -0.7512   0.4071   0.5197
2694       -0.6601  -0.4536  -0.5988
2695       44.1482  30.7036   2.1088)
2696    #(  0.2765  -0.1121  -0.9545  ; P-O3*-275-tfo
2697       -0.8297   0.4733  -0.2959
2698        0.4850   0.8737   0.0379
2699      -14.7774 -45.2464  21.9088)
2700    #(  0.1063  -0.6334  -0.7665  ; P-O3*-180-tfo
2701       -0.5932  -0.6591   0.4624
2702       -0.7980   0.4055  -0.4458
2703       43.7634   4.3296  28.4890)
2704    #(  0.7136  -0.5032  -0.4873  ; P-O3*-60-tfo
2705        0.6803   0.3317   0.6536
2706       -0.1673  -0.7979   0.5791
2707      -17.1858  41.4390 -27.0751)
2708    #( 21.3880  15.0780  45.5770) ; P
2709    #( 21.9980  14.5500  46.8210) ; O1P
2710    #( 21.1450  14.0270  44.5420) ; O2P
2711    #( 22.1250  16.3600  44.9460) ; O5*
2712    #( 23.5096  16.1227  44.5783) ; C5*
2713    #( 23.5649  15.8588  43.5222) ; H5*
2714    #( 23.9621  15.4341  45.2919) ; H5**
2715    #( 24.2805  17.4138  44.7151) ; C4*
2716    #( 25.3492  17.2309  44.6030) ; H4*
2717    #( 23.8497  18.3471  43.7208) ; O4*
2718    #( 23.4090  19.5681  44.3321) ; C1*
2719    #( 24.2595  20.2496  44.3524) ; H1*
2720    #( 23.0418  19.1813  45.7407) ; C2*
2721    #( 22.0532  18.7224  45.7273) ; H2**
2722    #( 23.1307  20.2521  46.6291) ; O2*
2723    #( 22.8888  21.1051  46.2611) ; H2*
2724    #( 24.0799  18.1326  46.0700) ; C3*
2725    #( 23.6490  17.4370  46.7900) ; H3*
2726    #( 25.3329  18.7227  46.5109) ; O3*
2727    #( 22.2515  20.1624  43.6698) ; N1
2728    #( 22.4760  21.0609  42.6406) ; N3
2729    #( 23.6229  21.3462  42.3061) ; C2
2730    #( 21.3986  21.6081  42.0236) ; C4
2731    #( 20.1189  21.3012  42.3804) ; C5
2732    #( 19.1599  21.8516  41.7578) ; C6
2733    #( 19.8919  20.3745  43.4387) ; O2
2734    #( 20.9790  19.8423  44.0440) ; O4
2735    #( 21.5235  22.3222  41.2097) ; H3
2736    #( 18.8732  20.1200  43.7312) ; H5
2737    #( 20.8545  19.1313  44.8608) ; H6
2738  ))
2739
2740(define rU09
2741  (make-constant-rU
2742    #( -0.0317   0.1374   0.9900  ; dgf-base-tfo
2743       -0.3422  -0.9321   0.1184
2744        0.9391  -0.3351   0.0765
2745      -32.1929  25.8198 -28.5088)
2746    #(  0.2765  -0.1121  -0.9545  ; P-O3*-275-tfo
2747       -0.8297   0.4733  -0.2959
2748        0.4850   0.8737   0.0379
2749      -14.7774 -45.2464  21.9088)
2750    #(  0.1063  -0.6334  -0.7665  ; P-O3*-180-tfo
2751       -0.5932  -0.6591   0.4624
2752       -0.7980   0.4055  -0.4458
2753       43.7634   4.3296  28.4890)
2754    #(  0.7136  -0.5032  -0.4873  ; P-O3*-60-tfo
2755        0.6803   0.3317   0.6536
2756       -0.1673  -0.7979   0.5791
2757      -17.1858  41.4390 -27.0751)
2758    #( 21.3880  15.0780  45.5770) ; P
2759    #( 21.9980  14.5500  46.8210) ; O1P
2760    #( 21.1450  14.0270  44.5420) ; O2P
2761    #( 22.1250  16.3600  44.9460) ; O5*
2762    #( 21.5037  16.8594  43.7323) ; C5*
2763    #( 20.8147  17.6663  43.9823) ; H5*
2764    #( 21.1086  16.0230  43.1557) ; H5**
2765    #( 22.5654  17.4874  42.8616) ; C4*
2766    #( 23.0565  18.3036  43.3915) ; H4*
2767    #( 23.5375  16.5054  42.4925) ; O4*
2768    #( 23.6574  16.4257  41.0649) ; C1*
2769    #( 24.4701  17.0882  40.7671) ; H1*
2770    #( 22.3525  16.9643  40.5396) ; C2*
2771    #( 21.5993  16.1799  40.6133) ; H2**
2772    #( 22.4693  17.4849  39.2515) ; O2*
2773    #( 23.0899  17.0235  38.6827) ; H2*
2774    #( 22.0341  18.0633  41.5279) ; C3*
2775    #( 20.9509  18.1709  41.5846) ; H3*
2776    #( 22.7249  19.3020  41.2100) ; O3*
2777    #( 23.8580  15.0648  40.5757) ; N1
2778    #( 25.1556  14.5982  40.4523) ; N3
2779    #( 26.1047  15.3210  40.7448) ; C2
2780    #( 25.3391  13.3315  40.0020) ; C4
2781    #( 24.2974  12.5148  39.6749) ; C5
2782    #( 24.5450  11.3410  39.2610) ; C6
2783    #( 22.9633  12.9979  39.8053) ; O2
2784    #( 22.8009  14.2648  40.2524) ; O4
2785    #( 26.3414  12.9194  39.8855) ; H3
2786    #( 22.1227  12.3533  39.5486) ; H5
2787    #( 21.7989  14.6788  40.3650) ; H6
2788  ))
2789
2790(define rU10
2791  (make-constant-rU
2792    #( -0.9674   0.1021  -0.2318  ; dgf-base-tfo
2793       -0.2514  -0.2766   0.9275
2794        0.0306   0.9555   0.2933
2795       27.8571 -42.1305 -24.4563)
2796    #(  0.2765  -0.1121  -0.9545  ; P-O3*-275-tfo
2797       -0.8297   0.4733  -0.2959
2798        0.4850   0.8737   0.0379
2799      -14.7774 -45.2464  21.9088)
2800    #(  0.1063  -0.6334  -0.7665  ; P-O3*-180-tfo
2801       -0.5932  -0.6591   0.4624
2802       -0.7980   0.4055  -0.4458
2803       43.7634   4.3296  28.4890)
2804    #(  0.7136  -0.5032  -0.4873  ; P-O3*-60-tfo
2805        0.6803   0.3317   0.6536
2806       -0.1673  -0.7979   0.5791
2807      -17.1858  41.4390 -27.0751)
2808    #( 21.3880  15.0780  45.5770) ; P
2809    #( 21.9980  14.5500  46.8210) ; O1P
2810    #( 21.1450  14.0270  44.5420) ; O2P
2811    #( 22.1250  16.3600  44.9460) ; O5*
2812    #( 23.5096  16.1227  44.5783) ; C5*
2813    #( 23.5649  15.8588  43.5222) ; H5*
2814    #( 23.9621  15.4341  45.2919) ; H5**
2815    #( 24.2805  17.4138  44.7151) ; C4*
2816    #( 23.8509  18.1819  44.0720) ; H4*
2817    #( 24.2506  17.8583  46.0741) ; O4*
2818    #( 25.5830  18.0320  46.5775) ; C1*
2819    #( 25.8569  19.0761  46.4256) ; H1*
2820    #( 26.4410  17.1555  45.7033) ; C2*
2821    #( 26.3459  16.1253  46.0462) ; H2**
2822    #( 27.7649  17.5888  45.6478) ; O2*
2823    #( 28.1004  17.9719  46.4616) ; H2*
2824    #( 25.7796  17.2997  44.3513) ; C3*
2825    #( 25.9478  16.3824  43.7871) ; H3*
2826    #( 26.2154  18.4984  43.6541) ; O3*
2827    #( 25.7321  17.6281  47.9726) ; N1
2828    #( 25.5136  18.5779  48.9560) ; N3
2829    #( 25.2079  19.7276  48.6503) ; C2
2830    #( 25.6482  18.1987  50.2518) ; C4
2831    #( 25.9847  16.9266  50.6092) ; C5
2832    #( 26.0918  16.6439  51.8416) ; C6
2833    #( 26.2067  15.9515  49.5943) ; O2
2834    #( 26.0713  16.3497  48.3080) ; O4
2835    #( 25.4890  18.9105  51.0618) ; H3
2836    #( 26.4742  14.9310  49.8682) ; H5
2837    #( 26.2346  15.6394  47.4975) ; H6
2838  ))
2839
2840(define rUs
2841  (list rU01 rU02 rU03 rU04 rU05 rU06 rU07 rU08 rU09 rU10))
2842
2843(define rG*
2844  (make-constant-rG
2845    #( -0.2067  -0.0264   0.9780  ; dgf-base-tfo
2846        0.9770  -0.0586   0.2049
2847        0.0519   0.9979   0.0379
2848        1.0331 -46.8078 -36.4742)
2849    #( -0.8644  -0.4956  -0.0851  ; P-O3*-275-tfo
2850       -0.0427   0.2409  -0.9696
2851        0.5010  -0.8345  -0.2294
2852        4.0167  54.5377  12.4779)
2853    #(  0.3706  -0.6167   0.6945  ; P-O3*-180-tfo
2854       -0.2867  -0.7872  -0.5460
2855        0.8834   0.0032  -0.4686
2856      -52.9020  18.6313  -0.6709)
2857    #(  0.4155   0.9025  -0.1137  ; P-O3*-60-tfo
2858        0.9040  -0.4236  -0.0582
2859       -0.1007  -0.0786  -0.9918
2860       -7.6624 -25.2080  49.5181)
2861    #( 31.3810   0.1400  47.5810) ; P
2862    #( 29.9860   0.6630  47.6290) ; O1P
2863    #( 31.7210  -0.6460  48.8090) ; O2P
2864    #( 32.4940   1.2540  47.2740) ; O5*
2865    #( 32.1610   2.2370  46.2560) ; C5*
2866    #( 31.2986   2.8190  46.5812) ; H5*
2867    #( 32.0980   1.7468  45.2845) ; H5**
2868    #( 33.3476   3.1959  46.1947) ; C4*
2869    #( 33.2668   3.8958  45.3630) ; H4*
2870    #( 33.3799   3.9183  47.4216) ; O4*
2871    #( 34.6515   3.7222  48.0398) ; C1*
2872    #( 35.2947   4.5412  47.7180) ; H1*
2873    #( 35.1756   2.4228  47.4827) ; C2*
2874    #( 34.6778   1.5937  47.9856) ; H2**
2875    #( 36.5631   2.2672  47.4798) ; O2*
2876    #( 37.0163   2.6579  48.2305) ; H2*
2877    #( 34.6953   2.5043  46.0448) ; C3*
2878    #( 34.5444   1.4917  45.6706) ; H3*
2879    #( 35.6679   3.3009  45.3487) ; O3*
2880    #( 37.4804   4.0914  52.2559) ; N1
2881    #( 36.9670   4.1312  49.9281) ; N3
2882    #( 37.8045   4.2519  50.9550) ; C2
2883    #( 35.7171   3.8264  50.3222) ; C4
2884    #( 35.2668   3.6420  51.6115) ; C5
2885    #( 36.2037   3.7829  52.6706) ; C6
2886    #( 39.0869   4.5552  50.7092) ; N2
2887    #( 33.9075   3.3338  51.6102) ; N7
2888    #( 34.6126   3.6358  49.5108) ; N9
2889    #( 33.5805   3.3442  50.3425) ; C8
2890    #( 35.9958   3.6512  53.8724) ; O6
2891    #( 38.2106   4.2053  52.9295) ; H1
2892    #( 39.8218   4.6863  51.3896) ; H21
2893    #( 39.3420   4.6857  49.7407) ; H22
2894    #( 32.5194   3.1070  50.2664) ; H8
2895  ))
2896
2897(define rU*
2898  (make-constant-rU
2899    #( -0.0109   0.5907   0.8068  ; dgf-base-tfo
2900        0.2217  -0.7853   0.5780
2901        0.9751   0.1852  -0.1224
2902       -1.4225 -11.0956  -2.5217)
2903    #( -0.8313  -0.4738  -0.2906  ; P-O3*-275-tfo
2904        0.0649   0.4366  -0.8973
2905        0.5521  -0.7648  -0.3322
2906        1.6833   6.8060  -7.0011)
2907    #(  0.3445  -0.7630   0.5470  ; P-O3*-180-tfo
2908       -0.4628  -0.6450  -0.6082
2909        0.8168  -0.0436  -0.5753
2910       -6.8179  -3.9778  -5.9887)
2911    #(  0.5855   0.7931  -0.1682  ; P-O3*-60-tfo
2912        0.8103  -0.5790   0.0906
2913       -0.0255  -0.1894  -0.9816
2914        6.1203  -7.1051   3.1984)
2915    #(  2.6760  -8.4960   3.2880) ; P
2916    #(  1.4950  -7.6230   3.4770) ; O1P
2917    #(  2.9490  -9.4640   4.3740) ; O2P
2918    #(  3.9730  -7.5950   3.0340) ; O5*
2919    #(  5.2430  -8.2420   2.8260) ; C5*
2920    #(  5.1974  -8.8497   1.9223) ; H5*
2921    #(  5.5548  -8.7348   3.7469) ; H5**
2922    #(  6.3140  -7.2060   2.5510) ; C4*
2923    #(  5.8744  -6.2116   2.4731) ; H4*
2924    #(  7.2798  -7.2260   3.6420) ; O4*
2925    #(  8.5733  -6.9410   3.1329) ; C1*
2926    #(  8.9047  -6.0374   3.6446) ; H1*
2927    #(  8.4429  -6.6596   1.6327) ; C2*
2928    #(  9.2880  -7.1071   1.1096) ; H2**
2929    #(  8.2502  -5.2799   1.4754) ; O2*
2930    #(  8.7676  -4.7284   2.0667) ; H2*
2931    #(  7.1642  -7.4416   1.3021) ; C3*
2932    #(  7.4125  -8.5002   1.2260) ; H3*
2933    #(  6.5160  -6.9772   0.1267) ; O3*
2934    #(  9.4531  -8.1107   3.4087) ; N1
2935    #( 11.5931  -9.0015   3.6357) ; N3
2936    #( 10.8101  -7.8950   3.3748) ; C2
2937    #( 11.1439 -10.2744   3.9206) ; C4
2938    #(  9.7056 -10.4026   3.9332) ; C5
2939    #(  8.9192  -9.3419   3.6833) ; C6
2940    #( 11.3013  -6.8063   3.1326) ; O2
2941    #( 11.9431 -11.1876   4.1375) ; O4
2942    #( 12.5840  -8.8673   3.6158) ; H3
2943    #(  9.2891 -11.2898   4.1313) ; H5
2944    #(  7.9263  -9.4537   3.6977) ; H6
2945  ))
2946
2947
2948
2949; -- PARTIAL INSTANTIATIONS ---------------------------------------------------
2950
2951(define (get-var id lst)
2952  (let ((v (car lst)))
2953    (if (= id (var-id v))
2954      v
2955      (get-var id (cdr lst)))))
2956
2957(define (make-relative-nuc tfo n)
2958  (cond ((rA? n)
2959         (make-rA
2960           (nuc-dgf-base-tfo  n)
2961           (nuc-P-O3*-275-tfo n)
2962           (nuc-P-O3*-180-tfo n)
2963           (nuc-P-O3*-60-tfo  n)
2964           (lazy-computation-of (tfo-apply tfo (nuc-P    n)))
2965           (lazy-computation-of (tfo-apply tfo (nuc-O1P  n)))
2966           (lazy-computation-of (tfo-apply tfo (nuc-O2P  n)))
2967           (lazy-computation-of (tfo-apply tfo (nuc-O5*  n)))
2968           (lazy-computation-of (tfo-apply tfo (nuc-C5*  n)))
2969           (lazy-computation-of (tfo-apply tfo (nuc-H5*  n)))
2970           (lazy-computation-of (tfo-apply tfo (nuc-H5** n)))
2971           (lazy-computation-of (tfo-apply tfo (nuc-C4*  n)))
2972           (lazy-computation-of (tfo-apply tfo (nuc-H4*  n)))
2973           (lazy-computation-of (tfo-apply tfo (nuc-O4*  n)))
2974           (lazy-computation-of (tfo-apply tfo (nuc-C1*  n)))
2975           (lazy-computation-of (tfo-apply tfo (nuc-H1*  n)))
2976           (lazy-computation-of (tfo-apply tfo (nuc-C2*  n)))
2977           (lazy-computation-of (tfo-apply tfo (nuc-H2** n)))
2978           (lazy-computation-of (tfo-apply tfo (nuc-O2*  n)))
2979           (lazy-computation-of (tfo-apply tfo (nuc-H2*  n)))
2980           (lazy-computation-of (tfo-apply tfo (nuc-C3*  n)))
2981           (lazy-computation-of (tfo-apply tfo (nuc-H3*  n)))
2982           (lazy-computation-of (tfo-apply tfo (nuc-O3*  n)))
2983           (lazy-computation-of (tfo-apply tfo (nuc-N1   n)))
2984           (lazy-computation-of (tfo-apply tfo (nuc-N3   n)))
2985           (lazy-computation-of (tfo-apply tfo (nuc-C2   n)))
2986           (lazy-computation-of (tfo-apply tfo (nuc-C4   n)))
2987           (lazy-computation-of (tfo-apply tfo (nuc-C5   n)))
2988           (lazy-computation-of (tfo-apply tfo (nuc-C6   n)))
2989           (lazy-computation-of (tfo-apply tfo (rA-N6    n)))
2990           (lazy-computation-of (tfo-apply tfo (rA-N7    n)))
2991           (lazy-computation-of (tfo-apply tfo (rA-N9    n)))
2992           (lazy-computation-of (tfo-apply tfo (rA-C8    n)))
2993           (lazy-computation-of (tfo-apply tfo (rA-H2    n)))
2994           (lazy-computation-of (tfo-apply tfo (rA-H61   n)))
2995           (lazy-computation-of (tfo-apply tfo (rA-H62   n)))
2996           (lazy-computation-of (tfo-apply tfo (rA-H8    n)))))
2997        ((rC? n)
2998         (make-rC
2999           (nuc-dgf-base-tfo  n)
3000           (nuc-P-O3*-275-tfo n)
3001           (nuc-P-O3*-180-tfo n)
3002           (nuc-P-O3*-60-tfo  n)
3003           (lazy-computation-of (tfo-apply tfo (nuc-P    n)))
3004           (lazy-computation-of (tfo-apply tfo (nuc-O1P  n)))
3005           (lazy-computation-of (tfo-apply tfo (nuc-O2P  n)))
3006           (lazy-computation-of (tfo-apply tfo (nuc-O5*  n)))
3007           (lazy-computation-of (tfo-apply tfo (nuc-C5*  n)))
3008           (lazy-computation-of (tfo-apply tfo (nuc-H5*  n)))
3009           (lazy-computation-of (tfo-apply tfo (nuc-H5** n)))
3010           (lazy-computation-of (tfo-apply tfo (nuc-C4*  n)))
3011           (lazy-computation-of (tfo-apply tfo (nuc-H4*  n)))
3012           (lazy-computation-of (tfo-apply tfo (nuc-O4*  n)))
3013           (lazy-computation-of (tfo-apply tfo (nuc-C1*  n)))
3014           (lazy-computation-of (tfo-apply tfo (nuc-H1*  n)))
3015           (lazy-computation-of (tfo-apply tfo (nuc-C2*  n)))
3016           (lazy-computation-of (tfo-apply tfo (nuc-H2** n)))
3017           (lazy-computation-of (tfo-apply tfo (nuc-O2*  n)))
3018           (lazy-computation-of (tfo-apply tfo (nuc-H2*  n)))
3019           (lazy-computation-of (tfo-apply tfo (nuc-C3*  n)))
3020           (lazy-computation-of (tfo-apply tfo (nuc-H3*  n)))
3021           (lazy-computation-of (tfo-apply tfo (nuc-O3*  n)))
3022           (lazy-computation-of (tfo-apply tfo (nuc-N1   n)))
3023           (lazy-computation-of (tfo-apply tfo (nuc-N3   n)))
3024           (lazy-computation-of (tfo-apply tfo (nuc-C2   n)))
3025           (lazy-computation-of (tfo-apply tfo (nuc-C4   n)))
3026           (lazy-computation-of (tfo-apply tfo (nuc-C5   n)))
3027           (lazy-computation-of (tfo-apply tfo (nuc-C6   n)))
3028           (lazy-computation-of (tfo-apply tfo (rC-N4    n)))
3029           (lazy-computation-of (tfo-apply tfo (rC-O2    n)))
3030           (lazy-computation-of (tfo-apply tfo (rC-H41   n)))
3031           (lazy-computation-of (tfo-apply tfo (rC-H42   n)))
3032           (lazy-computation-of (tfo-apply tfo (rC-H5    n)))
3033           (lazy-computation-of (tfo-apply tfo (rC-H6    n)))))
3034        ((rG? n)
3035         (make-rG
3036           (nuc-dgf-base-tfo  n)
3037           (nuc-P-O3*-275-tfo n)
3038           (nuc-P-O3*-180-tfo n)
3039           (nuc-P-O3*-60-tfo  n)
3040           (lazy-computation-of (tfo-apply tfo (nuc-P    n)))
3041           (lazy-computation-of (tfo-apply tfo (nuc-O1P  n)))
3042           (lazy-computation-of (tfo-apply tfo (nuc-O2P  n)))
3043           (lazy-computation-of (tfo-apply tfo (nuc-O5*  n)))
3044           (lazy-computation-of (tfo-apply tfo (nuc-C5*  n)))
3045           (lazy-computation-of (tfo-apply tfo (nuc-H5*  n)))
3046           (lazy-computation-of (tfo-apply tfo (nuc-H5** n)))
3047           (lazy-computation-of (tfo-apply tfo (nuc-C4*  n)))
3048           (lazy-computation-of (tfo-apply tfo (nuc-H4*  n)))
3049           (lazy-computation-of (tfo-apply tfo (nuc-O4*  n)))
3050           (lazy-computation-of (tfo-apply tfo (nuc-C1*  n)))
3051           (lazy-computation-of (tfo-apply tfo (nuc-H1*  n)))
3052           (lazy-computation-of (tfo-apply tfo (nuc-C2*  n)))
3053           (lazy-computation-of (tfo-apply tfo (nuc-H2** n)))
3054           (lazy-computation-of (tfo-apply tfo (nuc-O2*  n)))
3055           (lazy-computation-of (tfo-apply tfo (nuc-H2*  n)))
3056           (lazy-computation-of (tfo-apply tfo (nuc-C3*  n)))
3057           (lazy-computation-of (tfo-apply tfo (nuc-H3*  n)))
3058           (lazy-computation-of (tfo-apply tfo (nuc-O3*  n)))
3059           (lazy-computation-of (tfo-apply tfo (nuc-N1   n)))
3060           (lazy-computation-of (tfo-apply tfo (nuc-N3   n)))
3061           (lazy-computation-of (tfo-apply tfo (nuc-C2   n)))
3062           (lazy-computation-of (tfo-apply tfo (nuc-C4   n)))
3063           (lazy-computation-of (tfo-apply tfo (nuc-C5   n)))
3064           (lazy-computation-of (tfo-apply tfo (nuc-C6   n)))
3065           (lazy-computation-of (tfo-apply tfo (rG-N2    n)))
3066           (lazy-computation-of (tfo-apply tfo (rG-N7    n)))
3067           (lazy-computation-of (tfo-apply tfo (rG-N9    n)))
3068           (lazy-computation-of (tfo-apply tfo (rG-C8    n)))
3069           (lazy-computation-of (tfo-apply tfo (rG-O6    n)))
3070           (lazy-computation-of (tfo-apply tfo (rG-H1    n)))
3071           (lazy-computation-of (tfo-apply tfo (rG-H21   n)))
3072           (lazy-computation-of (tfo-apply tfo (rG-H22   n)))
3073           (lazy-computation-of (tfo-apply tfo (rG-H8    n)))))
3074        (else
3075         (make-rU
3076           (nuc-dgf-base-tfo  n)
3077           (nuc-P-O3*-275-tfo n)
3078           (nuc-P-O3*-180-tfo n)
3079           (nuc-P-O3*-60-tfo  n)
3080           (lazy-computation-of (tfo-apply tfo (nuc-P    n)))
3081           (lazy-computation-of (tfo-apply tfo (nuc-O1P  n)))
3082           (lazy-computation-of (tfo-apply tfo (nuc-O2P  n)))
3083           (lazy-computation-of (tfo-apply tfo (nuc-O5*  n)))
3084           (lazy-computation-of (tfo-apply tfo (nuc-C5*  n)))
3085           (lazy-computation-of (tfo-apply tfo (nuc-H5*  n)))
3086           (lazy-computation-of (tfo-apply tfo (nuc-H5** n)))
3087           (lazy-computation-of (tfo-apply tfo (nuc-C4*  n)))
3088           (lazy-computation-of (tfo-apply tfo (nuc-H4*  n)))
3089           (lazy-computation-of (tfo-apply tfo (nuc-O4*  n)))
3090           (lazy-computation-of (tfo-apply tfo (nuc-C1*  n)))
3091           (lazy-computation-of (tfo-apply tfo (nuc-H1*  n)))
3092           (lazy-computation-of (tfo-apply tfo (nuc-C2*  n)))
3093           (lazy-computation-of (tfo-apply tfo (nuc-H2** n)))
3094           (lazy-computation-of (tfo-apply tfo (nuc-O2*  n)))
3095           (lazy-computation-of (tfo-apply tfo (nuc-H2*  n)))
3096           (lazy-computation-of (tfo-apply tfo (nuc-C3*  n)))
3097           (lazy-computation-of (tfo-apply tfo (nuc-H3*  n)))
3098           (lazy-computation-of (tfo-apply tfo (nuc-O3*  n)))
3099           (lazy-computation-of (tfo-apply tfo (nuc-N1   n)))
3100           (lazy-computation-of (tfo-apply tfo (nuc-N3   n)))
3101           (lazy-computation-of (tfo-apply tfo (nuc-C2   n)))
3102           (lazy-computation-of (tfo-apply tfo (nuc-C4   n)))
3103           (lazy-computation-of (tfo-apply tfo (nuc-C5   n)))
3104           (lazy-computation-of (tfo-apply tfo (nuc-C6   n)))
3105           (lazy-computation-of (tfo-apply tfo (rU-O2    n)))
3106           (lazy-computation-of (tfo-apply tfo (rU-O4    n)))
3107           (lazy-computation-of (tfo-apply tfo (rU-H3    n)))
3108           (lazy-computation-of (tfo-apply tfo (rU-H5    n)))
3109           (lazy-computation-of (tfo-apply tfo (rU-H6    n)))))))
3110
3111; -- SEARCH -------------------------------------------------------------------
3112
3113; Sequential backtracking algorithm
3114
3115(define (search partial-inst domains constraint?)
3116  (if (null? domains)
3117    (list partial-inst)
3118    (let ((remaining-domains (cdr domains)))
3119
3120      (define (try-assignments lst)
3121        (if (null? lst)
3122          '()
3123          (let ((var (car lst)))
3124            (if (constraint? var partial-inst)
3125              (let* ((subsols1
3126                       (search
3127                         (cons var partial-inst)
3128                         remaining-domains
3129                         constraint?))
3130                     (subsols2
3131                       (try-assignments (cdr lst))))
3132                (append subsols1 subsols2))
3133              (try-assignments (cdr lst))))))
3134
3135      (try-assignments ((car domains) partial-inst)))))
3136
3137; -- DOMAINS ------------------------------------------------------------------
3138
3139; Primary structure:   strand A CUGCCACGUCUG, strand B CAGACGUGGCAG
3140;
3141; Secondary structure: strand A CUGCCACGUCUG
3142;                               ||||||||||||
3143;                               GACGGUGCAGAC strand B
3144;
3145; Tertiary structure:
3146;
3147;    5' end of strand A C1----G12 3' end of strand B
3148;                     U2-------A11
3149;                    G3-------C10
3150;                    C4-----G9
3151;                     C5---G8
3152;                        A6
3153;                      G6-C7
3154;                     C5----G8
3155;                    A4-------U9
3156;                    G3--------C10
3157;                     A2-------U11
3158;   5' end of strand B C1----G12 3' end of strand A
3159;
3160; "helix", "stacked" and "connected" describe the spatial relationship
3161; between two consecutive nucleotides. E.g. the nucleotides C1 and U2
3162; from the strand A.
3163;
3164; "wc" (stands for Watson-Crick and is a type of base-pairing),
3165; and "wc-dumas" describe the spatial relationship between
3166; nucleotides from two chains that are growing in opposite directions.
3167; E.g. the nucleotides C1 from strand A and G12 from strand B.
3168
3169; Dynamic Domains
3170
3171; Given,
3172;   "ref" a nucleotide which is already positioned,
3173;   "nuc" the nucleotide to be placed,
3174;   and "tfo" a transformation matrix which expresses the desired
3175;   relationship between "ref" and "nuc",
3176; the function "dgf-base" computes the transformation matrix that
3177; places the nucleotide "nuc" in the given relationship to "ref".
3178
3179(define (dgf-base tfo ref nuc)
3180  (let* ((ref-nuc (var-nuc ref))
3181         (align
3182          (tfo-inv-ortho
3183            (cond ((rA? ref-nuc)
3184                   (tfo-align (atom-pos nuc-C1* ref)
3185                              (atom-pos rA-N9   ref)
3186                              (atom-pos nuc-C4  ref)))
3187                  ((rC? ref-nuc)
3188                   (tfo-align (atom-pos nuc-C1* ref)
3189                              (atom-pos nuc-N1  ref)
3190                              (atom-pos nuc-C2  ref)))
3191                  ((rG? ref-nuc)
3192                   (tfo-align (atom-pos nuc-C1* ref)
3193                              (atom-pos rG-N9   ref)
3194                              (atom-pos nuc-C4  ref)))
3195                  (else
3196                   (tfo-align (atom-pos nuc-C1* ref)
3197                              (atom-pos nuc-N1  ref)
3198                              (atom-pos nuc-C2  ref)))))))
3199    (tfo-combine (nuc-dgf-base-tfo nuc)
3200                 (tfo-combine tfo align))))
3201
3202; Placement of first nucleotide.
3203
3204(define (reference nuc i)
3205  (lambda (partial-inst)
3206    (list (mk-var i tfo-id nuc))))
3207
3208; The transformation matrix for wc is from:
3209;
3210; Chandrasekaran R. et al (1989) A Re-Examination of the Crystal
3211; Structure of A-DNA Using Fiber Diffraction Data. J. Biomol.
3212; Struct. & Dynamics 6(6):1189-1202.
3213
3214(define wc-tfo
3215  '#(-1.0000  0.0028 -0.0019
3216      0.0028  0.3468 -0.9379
3217     -0.0019 -0.9379 -0.3468
3218     -0.0080  6.0730  8.7208))
3219
3220(define (wc nuc i j)
3221  (lambda (partial-inst)
3222    (let* ((ref (get-var j partial-inst))
3223           (tfo (dgf-base wc-tfo ref nuc)))
3224      (list (mk-var i tfo nuc)))))
3225
3226(define wc-Dumas-tfo
3227  '#(-0.9737 -0.1834  0.1352
3228     -0.1779  0.2417 -0.9539
3229      0.1422 -0.9529 -0.2679
3230      0.4837  6.2649  8.0285))
3231
3232(define (wc-Dumas nuc i j)
3233  (lambda (partial-inst)
3234    (let* ((ref (get-var j partial-inst))
3235           (tfo (dgf-base wc-Dumas-tfo ref nuc)))
3236      (list (mk-var i tfo nuc)))))
3237
3238(define helix5*-tfo
3239  '#( 0.9886 -0.0961  0.1156
3240      0.1424  0.8452 -0.5152
3241     -0.0482  0.5258  0.8492
3242     -3.8737  0.5480  3.8024))
3243
3244(define (helix5* nuc i j)
3245  (lambda (partial-inst)
3246    (let* ((ref (get-var j partial-inst))
3247           (tfo (dgf-base helix5*-tfo ref nuc)))
3248      (list (mk-var i tfo nuc)))))
3249
3250(define helix3*-tfo
3251  '#( 0.9886  0.1424 -0.0482
3252     -0.0961  0.8452  0.5258
3253      0.1156 -0.5152  0.8492
3254      3.4426  2.0474 -3.7042))
3255
3256(define (helix3* nuc i j)
3257  (lambda (partial-inst)
3258    (let* ((ref (get-var j partial-inst))
3259           (tfo (dgf-base helix3*-tfo ref nuc)))
3260      (list (mk-var i tfo nuc)))))
3261
3262(define G37-A38-tfo
3263  '#( 0.9991  0.0164 -0.0387
3264     -0.0375  0.7616 -0.6470
3265      0.0189  0.6478  0.7615
3266     -3.3018  0.9975  2.5585))
3267
3268(define (G37-A38 nuc i j)
3269  (lambda (partial-inst)
3270    (let* ((ref (get-var j partial-inst))
3271           (tfo (dgf-base G37-A38-tfo ref nuc)))
3272      (mk-var i tfo nuc))))
3273
3274(define (stacked5* nuc i j)
3275  (lambda (partial-inst)
3276    (cons ((G37-A38 nuc i j) partial-inst)
3277          ((helix5* nuc i j) partial-inst))))
3278
3279(define A38-G37-tfo
3280  '#( 0.9991 -0.0375  0.0189
3281      0.0164  0.7616  0.6478
3282     -0.0387 -0.6470  0.7615
3283      3.3819  0.7718 -2.5321))
3284
3285(define (A38-G37 nuc i j)
3286  (lambda (partial-inst)
3287    (let* ((ref (get-var j partial-inst))
3288           (tfo (dgf-base A38-G37-tfo ref nuc)))
3289      (mk-var i tfo nuc))))
3290
3291(define (stacked3* nuc i j)
3292  (lambda (partial-inst)
3293    (cons ((A38-G37 nuc i j) partial-inst)
3294          ((helix3* nuc i j) partial-inst))))
3295
3296(define (P-O3* nucs i j)
3297  (lambda (partial-inst)
3298    (let* ((ref (get-var j partial-inst))
3299           (align
3300             (tfo-inv-ortho
3301               (tfo-align (atom-pos nuc-O3* ref)
3302                          (atom-pos nuc-C3* ref)
3303                          (atom-pos nuc-C4* ref)))))
3304      (let loop ((lst nucs) (domains '()))
3305        (if (null? lst)
3306          domains
3307          (let ((nuc (car lst)))
3308            (let ((tfo-60 (tfo-combine (nuc-P-O3*-60-tfo nuc) align))
3309                  (tfo-180 (tfo-combine (nuc-P-O3*-180-tfo nuc) align))
3310                  (tfo-275 (tfo-combine (nuc-P-O3*-275-tfo nuc) align)))
3311              (loop (cdr lst)
3312                    (cons (mk-var i tfo-60 nuc)
3313                          (cons (mk-var i tfo-180 nuc)
3314                                (cons (mk-var i tfo-275 nuc) domains)))))))))))
3315
3316; -- PROBLEM STATEMENT --------------------------------------------------------
3317
3318; Define anticodon problem -- Science 253:1255 Figure 3a, 3b and 3c
3319
3320(define anticodon-domains
3321  (list
3322   (reference rC  27   )
3323   (helix5*   rC  28 27)
3324   (helix5*   rA  29 28)
3325   (helix5*   rG  30 29)
3326   (helix5*   rA  31 30)
3327   (wc        rU  39 31)
3328   (helix5*   rC  40 39)
3329   (helix5*   rU  41 40)
3330   (helix5*   rG  42 41)
3331   (helix5*   rG  43 42)
3332   (stacked3* rA  38 39)
3333   (stacked3* rG  37 38)
3334   (stacked3* rA  36 37)
3335   (stacked3* rA  35 36)
3336   (stacked3* rG  34 35);<-. Distance
3337   (P-O3*     rCs 32 31);  | Constraint
3338   (P-O3*     rUs 33 32);<-' 3.0 Angstroms
3339   ))
3340
3341; Anticodon constraint
3342
3343(define (anticodon-constraint? v partial-inst)
3344  (if (= (var-id v) 33)
3345    (let ((p   (atom-pos nuc-P (get-var 34 partial-inst))) ; P in nucleotide 34
3346          (o3* (atom-pos nuc-O3* v)))                      ; O3' in nucl. 33
3347      (FLOAT<= (pt-dist p o3*) 3.0))                       ; check distance
3348    #t))
3349
3350(define (anticodon)
3351  (search '() anticodon-domains anticodon-constraint?))
3352
3353; Define pseudoknot problem -- Science 253:1255 Figure 4a and 4b
3354
3355(define pseudoknot-domains
3356  (list
3357   (reference rA  23   )
3358   (wc-Dumas  rU   8 23)
3359   (helix3*   rG  22 23)
3360   (wc-Dumas  rC   9 22)
3361   (helix3*   rG  21 22)
3362   (wc-Dumas  rC  10 21)
3363   (helix3*   rC  20 21)
3364   (wc-Dumas  rG  11 20)
3365   (helix3*   rU* 19 20);<-.
3366   (wc-Dumas  rA  12 19);  | Distance
3367;                       ;  | Constraint
3368; Helix 1               ;  | 4.0 Angstroms
3369   (helix3*   rC   3 19);  |
3370   (wc-Dumas  rG  13  3);  |
3371   (helix3*   rC   2  3);  |
3372   (wc-Dumas  rG  14  2);  |
3373   (helix3*   rC   1  2);  |
3374   (wc-Dumas  rG* 15  1);  |
3375;                       ;  |
3376; L2 LOOP               ;  |
3377   (P-O3*     rUs 16 15);  |
3378   (P-O3*     rCs 17 16);  |
3379   (P-O3*     rAs 18 17);<-'
3380;
3381; L1 LOOP
3382   (helix3*   rU   7  8);<-.
3383   (P-O3*     rCs  4  3);  | Constraint
3384   (stacked5* rU   5  4);  | 4.5 Angstroms
3385   (stacked5* rC   6  5);<-'
3386   ))
3387
3388; Pseudoknot constraint
3389
3390(define (pseudoknot-constraint? v partial-inst)
3391  (case (var-id v)
3392    ((18)
3393     (let ((p   (atom-pos nuc-P (get-var 19 partial-inst)))
3394           (o3* (atom-pos nuc-O3* v)))
3395       (FLOAT<= (pt-dist p o3*) 4.0)))
3396    ((6)
3397     (let ((p   (atom-pos nuc-P (get-var 7 partial-inst)))
3398           (o3* (atom-pos nuc-O3* v)))
3399       (FLOAT<= (pt-dist p o3*) 4.5)))
3400    (else
3401     #t)))
3402
3403(define (pseudoknot)
3404  (search '() pseudoknot-domains pseudoknot-constraint?))
3405
3406; -- TESTING -----------------------------------------------------------------
3407
3408(define (list-of-atoms n)
3409  (append (list-of-common-atoms n)
3410          (list-of-specific-atoms n)))
3411
3412(define (list-of-common-atoms n)
3413  (list
3414    (nuc-P    n)
3415    (nuc-O1P  n)
3416    (nuc-O2P  n)
3417    (nuc-O5*  n)
3418    (nuc-C5*  n)
3419    (nuc-H5*  n)
3420    (nuc-H5** n)
3421    (nuc-C4*  n)
3422    (nuc-H4*  n)
3423    (nuc-O4*  n)
3424    (nuc-C1*  n)
3425    (nuc-H1*  n)
3426    (nuc-C2*  n)
3427    (nuc-H2** n)
3428    (nuc-O2*  n)
3429    (nuc-H2*  n)
3430    (nuc-C3*  n)
3431    (nuc-H3*  n)
3432    (nuc-O3*  n)
3433    (nuc-N1   n)
3434    (nuc-N3   n)
3435    (nuc-C2   n)
3436    (nuc-C4   n)
3437    (nuc-C5   n)
3438    (nuc-C6   n)))
3439
3440(define (list-of-specific-atoms n)
3441  (cond ((rA? n)
3442         (list
3443           (rA-N6   n)
3444           (rA-N7   n)
3445           (rA-N9   n)
3446           (rA-C8   n)
3447           (rA-H2   n)
3448           (rA-H61  n)
3449           (rA-H62  n)
3450           (rA-H8   n)))
3451        ((rC? n)
3452         (list
3453           (rC-N4   n)
3454           (rC-O2   n)
3455           (rC-H41  n)
3456           (rC-H42  n)
3457           (rC-H5   n)
3458           (rC-H6   n)))
3459        ((rG? n)
3460         (list
3461           (rG-N2   n)
3462           (rG-N7   n)
3463           (rG-N9   n)
3464           (rG-C8   n)
3465           (rG-O6   n)
3466           (rG-H1   n)
3467           (rG-H21  n)
3468           (rG-H22  n)
3469           (rG-H8   n)))
3470        (else
3471         (list
3472           (rU-O2   n)
3473           (rU-O4   n)
3474           (rU-H3   n)
3475           (rU-H5   n)
3476           (rU-H6   n)))))
3477
3478(define (var-most-distant-atom v)
3479
3480  (define (distance pos)
3481    (let ((abs-pos (absolute-pos v pos)))
3482      (let ((x (pt-x abs-pos)) (y (pt-y abs-pos)) (z (pt-z abs-pos)))
3483        (FLOATsqrt (FLOAT+ (FLOAT* x x) (FLOAT* y y) (FLOAT* z z))))))
3484
3485  (maximum (map distance (list-of-atoms (var-nuc v)))))
3486
3487(define (sol-most-distant-atom s)
3488  (maximum (map var-most-distant-atom s)))
3489
3490(define (most-distant-atom sols)
3491  (maximum (map sol-most-distant-atom sols)))
3492
3493(define (maximum lst)
3494  (let loop ((m (car lst)) (l (cdr lst)))
3495    (if (null? l)
3496      m
3497      (let ((x (car l)))
3498        (loop (if (FLOAT> x m) x m) (cdr l))))))
3499
3500(define (check)
3501  (length (pseudoknot)))
3502
3503(define (run)
3504  (most-distant-atom (pseudoknot)))
3505
3506; To run program, evaluate: (run)
3507
3508(time (let loop ((i 10)) (if (zero? i) 'done (begin (run) (loop (- i 1))))))
3509