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