1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
33 """Spectral density component function.
34
35 Calculate the components of the spectral density value for the original model-free formula with
36 the parameters {S2, te}.
37
38 The model-free formula is::
39
40 _n_
41 2 \ / S2 (1 - S2)(te + ti)te \
42 J(w) = - > ci . ti | ------------ + ------------------------- |.
43 5 /__ \ 1 + (w.ti)^2 (te + ti)^2 + (w.te.ti)^2 /
44 i=m
45
46 Replicated calculations are::
47
48 w_ti_sqrd = (w.ti)^2 (pre-calculated during initialisation),
49
50 te_ti = te + ti,
51 te_ti_te = (te + ti).te.
52
53
54 Calculations which are replicated in the gradient equations are::
55
56 fact_ti = 1 / (1 + (w.ti)^2) (pre-calculated during initialisation),
57
58 one_s2 = 1 - S2,
59
60 te_ti_sqrd = (te + ti)^2,
61 w_te_ti_sqrd = (w.te.ti)^2,
62
63 (te + ti)te
64 fact_te = -------------------------.
65 (te + ti)^2 + (w.te.ti)^2
66
67 """
68
69
70 data.one_s2 = 1.0 - params[data.s2_i]
71
72
73 data.te_ti = params[data.te_i] + data.ti
74 data.te_ti_te = data.te_ti * params[data.te_i]
75 data.te_ti_sqrd = data.te_ti**2
76
77 data.w_te_ti_sqrd = data.w_ti_sqrd * params[data.te_i]**2
78 data.inv_te_denom = 1.0 / (data.te_ti_sqrd + data.w_te_ti_sqrd)
79 data.fact_te = data.te_ti_te * data.inv_te_denom
80
81
82
83
84
85
87 """Spectral density component function.
88
89 Calculate the components of the spectral density value for the extended model-free formula with
90 the parameters {S2f, S2, ts}.
91
92 The model-free formula is::
93
94 _n_
95 2 \ / S2 (S2f - S2)(ts + ti)ts \
96 J(w) = - > ci . ti | ------------ + ------------------------- |.
97 5 /__ \ 1 + (w.ti)^2 (ts + ti)^2 + (w.ts.ti)^2 /
98 i=m
99
100 Replicated calculations are::
101
102 w_ti_sqrd = (w.ti)^2 (pre-calculated during initialisation),
103
104 ts_ti = ts + ti,
105 ts_ti_ts = (ts + ti).ts.
106
107
108 Calculations which are replicated in the gradient equations are::
109
110 fact_ti = 1 / (1 + (w.ti)^2) (pre-calculated during initialisation),
111
112 s2f_s2 = S2f - S2,
113
114 ts_ti_sqrd = (ts + ti)^2,
115 w_ts_ti_sqrd = (w.ts.ti)^2,
116 inv_ts_denom = 1 / ((ts + ti)^2 + (w.ts.ti)^2),
117
118 (ts + ti)ts
119 fact_ts = -------------------------.
120 (ts + ti)^2 + (w.ts.ti)^2
121
122 """
123
124
125 data.s2f_s2 = params[data.s2f_i] - params[data.s2_i]
126
127
128 data.ts_ti = params[data.ts_i] + data.ti
129 data.ts_ti_ts = data.ts_ti * params[data.ts_i]
130 data.ts_ti_sqrd = data.ts_ti**2
131
132 data.w_ts_ti_sqrd = data.w_ti_sqrd * params[data.ts_i]**2
133 data.inv_ts_denom = 1.0 / (data.ts_ti_sqrd + data.w_ts_ti_sqrd)
134 data.fact_ts = data.ts_ti_ts * data.inv_ts_denom
135
136
137
138
139
140
142 """Spectral density component function.
143
144 Calculate the components of the spectral density value for the extended model-free formula with
145 the parameters {S2f, S2s, ts}.
146
147 The model-free formula is::
148
149 _n_
150 2 \ / S2s (1 - S2s)(ts + ti)ts \
151 J(w) = - S2f > ci . ti | ------------ + ------------------------- |.
152 5 /__ \ 1 + (w.ti)^2 (ts + ti)^2 + (w.ts.ti)^2 /
153 i=m
154
155 Replicated calculations are::
156
157 w_ti_sqrd = (w.ti)^2 (pre-calculated during initialisation),
158
159 ts_ti = ts + ti,
160 ts_ti_ts = (ts + ti).ts.
161
162
163 Calculations which are replicated in the gradient equations are::
164
165 fact_ti = 1 / (1 + (w.ti)^2) (pre-calculated during initialisation),
166
167 one_s2s = 1 - S2s,
168
169 ts_ti_sqrd = (ts + ti)^2,
170 w_ts_ti_sqrd = (w.ts.ti)^2,
171 inv_ts_denom = 1 / ((ts + ti)^2 + (w.ts.ti)^2),
172
173 (ts + ti)ts
174 fact_ts = -------------------------.
175 (ts + ti)^2 + (w.ts.ti)^2
176
177 """
178
179
180 data.one_s2s = 1.0 - params[data.s2s_i]
181 data.s2f_s2 = data.one_s2s * params[data.s2f_i]
182
183
184 data.ts_ti = params[data.ts_i] + data.ti
185 data.ts_ti_ts = data.ts_ti * params[data.ts_i]
186 data.ts_ti_sqrd = data.ts_ti**2
187
188 data.w_ts_ti_sqrd = data.w_ti_sqrd * params[data.ts_i]**2
189 data.inv_ts_denom = 1.0 / (data.ts_ti_sqrd + data.w_ts_ti_sqrd)
190 data.fact_ts = data.ts_ti_ts * data.inv_ts_denom
191
192
193
194
195
196
198 """Spectral density component function.
199
200 Calculate the components of the spectral density value for the extended model-free formula with
201 the parameters {S2f, tf, S2, ts}.
202
203 The model-free formula is::
204
205 _n_
206 2 \ / S2 (1 - S2f)(tf + ti)tf
207 J(w) = - > ci . ti | ------------ + -------------------------
208 5 /__ \ 1 + (w.ti)^2 (tf + ti)^2 + (w.tf.ti)^2
209 i=m
210
211 (S2f - S2)(ts + ti)ts \
212 + ------------------------- |.
213 (ts + ti)^2 + (w.ts.ti)^2 /
214
215 Replicated calculations are::
216
217 w_ti_sqrd = (w.ti)^2 (pre-calculated during initialisation),
218
219 tf_ti = tf + ti,
220 ts_ti = ts + ti,
221 tf_ti_tf = (tf + ti).tf,
222 ts_ti_ts = (ts + ti).ts.
223
224
225 Calculations which are replicated in the gradient equations are::
226
227 fact_ti = 1 / (1 + (w.ti)^2) (pre-calculated during initialisation),
228
229 one_s2f = 1 - S2f,
230 s2f_s2 = S2f - S2,
231
232 tf_ti_sqrd = (tf + ti)^2,
233 ts_ti_sqrd = (ts + ti)^2,
234 w_tf_ti_sqrd = (w.tf.ti)^2,
235 w_ts_ti_sqrd = (w.ts.ti)^2,
236 inv_tf_denom = 1 / ((tf + ti)^2 + (w.tf.ti)^2),
237 inv_ts_denom = 1 / ((ts + ti)^2 + (w.ts.ti)^2),
238
239 (tf + ti)tf
240 fact_tf = -------------------------,
241 (tf + ti)^2 + (w.tf.ti)^2
242
243
244 (ts + ti)ts
245 fact_ts = -------------------------.
246 (ts + ti)^2 + (w.ts.ti)^2
247
248 """
249
250
251 data.one_s2f = 1.0 - params[data.s2f_i]
252 data.s2f_s2 = params[data.s2f_i] - params[data.s2_i]
253
254
255 data.tf_ti = params[data.tf_i] + data.ti
256 data.tf_ti_tf = data.tf_ti * params[data.tf_i]
257 data.tf_ti_sqrd = data.tf_ti**2
258
259 data.w_tf_ti_sqrd = data.w_ti_sqrd * params[data.tf_i]**2
260 data.inv_tf_denom = 1.0 / (data.tf_ti_sqrd + data.w_tf_ti_sqrd)
261 data.fact_tf = data.tf_ti_tf * data.inv_tf_denom
262
263
264 data.ts_ti = params[data.ts_i] + data.ti
265 data.ts_ti_ts = data.ts_ti * params[data.ts_i]
266 data.ts_ti_sqrd = data.ts_ti**2
267
268 data.w_ts_ti_sqrd = data.w_ti_sqrd * params[data.ts_i]**2
269 data.inv_ts_denom = 1.0 / (data.ts_ti_sqrd + data.w_ts_ti_sqrd)
270 data.fact_ts = data.ts_ti_ts * data.inv_ts_denom
271
272
273
274
275
276
278 """Spectral density component function.
279
280 Calculate the components of the spectral density value for the extended model-free formula with
281 the parameters {S2f, tf, S2s, ts}.
282
283 The model-free formula is::
284
285 _n_
286 2 \ / S2f . S2s (1 - S2f)(tf + ti)tf
287 J(w) = - > ci . ti | ------------ + -------------------------
288 5 /__ \ 1 + (w.ti)^2 (tf + ti)^2 + (w.tf.ti)^2
289 i=m
290
291 S2f(1 - S2s)(ts + ti)ts \
292 + ------------------------- |.
293 (ts + ti)^2 + (w.ts.ti)^2 /
294
295 Replicated calculations are::
296
297 w_ti_sqrd = (w.ti)^2 (pre-calculated during initialisation),
298
299 tf_ti = tf + ti,
300 ts_ti = ts + ti,
301 tf_ti_tf = (tf + ti).tf,
302 ts_ti_ts = (ts + ti).ts.
303
304
305 Calculations which are replicated in the gradient equations are::
306
307 fact_ti = 1 / (1 + (w.ti)^2) (pre-calculated during initialisation),
308
309 one_s2s = 1 - S2s,
310 one_s2f = 1 - S2f,
311 s2f_s2 = S2f(1 - S2s) = S2f - S2,
312
313 tf_ti_sqrd = (tf + ti)^2,
314 ts_ti_sqrd = (ts + ti)^2,
315 w_tf_ti_sqrd = (w.tf.ti)^2,
316 w_ts_ti_sqrd = (w.ts.ti)^2,
317 inv_tf_denom = 1 / ((tf + ti)^2 + (w.tf.ti)^2),
318 inv_ts_denom = 1 / ((ts + ti)^2 + (w.ts.ti)^2),
319
320 (tf + ti)tf
321 fact_tf = -------------------------,
322 (tf + ti)^2 + (w.tf.ti)^2
323
324
325 (ts + ti)ts
326 fact_ts = -------------------------.
327 (ts + ti)^2 + (w.ts.ti)^2
328
329 """
330
331
332 data.one_s2s = 1.0 - params[data.s2s_i]
333 data.one_s2f = 1.0 - params[data.s2f_i]
334 data.s2f_s2 = params[data.s2f_i] * data.one_s2s
335
336
337 data.tf_ti = params[data.tf_i] + data.ti
338 data.tf_ti_tf = data.tf_ti * params[data.tf_i]
339 data.tf_ti_sqrd = data.tf_ti**2
340
341 data.w_tf_ti_sqrd = data.w_ti_sqrd * params[data.tf_i]**2
342 data.inv_tf_denom = 1.0 / (data.tf_ti_sqrd + data.w_tf_ti_sqrd)
343 data.fact_tf = data.tf_ti_tf * data.inv_tf_denom
344
345
346 data.ts_ti = params[data.ts_i] + data.ti
347 data.ts_ti_ts = data.ts_ti * params[data.ts_i]
348 data.ts_ti_sqrd = data.ts_ti**2
349
350 data.w_ts_ti_sqrd = data.w_ti_sqrd * params[data.ts_i]**2
351 data.inv_ts_denom = 1.0 / (data.ts_ti_sqrd + data.w_ts_ti_sqrd)
352 data.fact_ts = data.ts_ti_ts * data.inv_ts_denom
353
354
355
356
357
358
359
360
361
362
363
364
366 """Spectral density gradient component function.
367
368 Calculate the components of the spectral density gradient for the original model-free formula
369 with no parameters {} or the parameter {S2} together with diffusion tensor parameters.
370
371 Replicated calculations are::
372
373 1 - (w.ti)^2
374 fact_ti_djw_dti = ----------------.
375 (1 + (w.ti)^2)^2
376 """
377
378 data.fact_ti_djw_dti = (1.0 - data.w_ti_sqrd) * data.fact_ti**2
379
380
381
382
383
384
386 """Spectral density gradient component function.
387
388 Calculate the components of the spectral density gradient for the original model-free formula
389 with the parameters {S2, te}.
390
391 Replicated calculations are::
392
393 (te + ti)^2 - (w.te.ti)^2
394 fact_djw_dte = ti^2 -----------------------------.
395 ((te + ti)^2 + (w.te.ti)^2)^2
396 """
397
398 data.fact_djw_dte = data.ti**2 * (data.te_ti_sqrd - data.w_te_ti_sqrd) * data.inv_te_denom**2
399
400
401
402
403
404
406 """Spectral density gradient component function.
407
408 Calculate the components of the spectral density gradient for the original model-free formula
409 with the parameters {S2, te} together with diffusion tensor parameters.
410
411 Replicated calculations are::
412
413 1 - (w.ti)^2
414 fact_ti_djw_dti = ----------------,
415 (1 + (w.ti)^2)^2
416
417
418 (te + ti)^2 - (w.te.ti)^2
419 fact_djw = -----------------------------,
420 ((te + ti)^2 + (w.te.ti)^2)^2
421
422
423 (te + ti)^2 - (w.te.ti)^2
424 fact_te_djw_dti = te^2 -----------------------------,
425 ((te + ti)^2 + (w.te.ti)^2)^2
426
427
428 (te + ti)^2 - (w.te.ti)^2
429 fact_djw_dte = ti^2 -----------------------------.
430 ((te + ti)^2 + (w.te.ti)^2)^2
431 """
432
433 fact_djw = (data.te_ti_sqrd - data.w_te_ti_sqrd) * data.inv_te_denom**2
434 data.fact_ti_djw_dti = (1.0 - data.w_ti_sqrd) * data.fact_ti**2
435 data.fact_te_djw_dti = params[data.te_i]**2 * fact_djw
436 data.fact_djw_dte = data.ti**2 * fact_djw
437
438
439
440
441
442
444 """Spectral density gradient component function.
445
446 Calculate the components of the spectral density gradient for the extended model-free formula
447 with the parameters {S2f, S2, ts}.
448
449 Replicated calculations are::
450
451
452 (ts + ti)^2 - (w.ts.ti)^2
453 fact_djw_dts = ti^2 -----------------------------.
454 ((ts + ti)^2 + (w.ts.ti)^2)^2
455 """
456
457 data.fact_djw_dts = data.ti**2 * (data.ts_ti_sqrd - data.w_ts_ti_sqrd) * data.inv_ts_denom**2
458
459
460
461
462
463
465 """Spectral density gradient component function.
466
467 Calculate the components of the spectral density gradient for the extended model-free formula
468 with the parameters {S2f, S2, ts} together with diffusion tensor parameters.
469
470 Replicated calculations are::
471
472 1 - (w.ti)^2
473 fact_ti_djw_dti = ----------------,
474 (1 + (w.ti)^2)^2
475
476
477 (ts + ti)^2 - (w.ts.ti)^2
478 fact_djw = -----------------------------,
479 ((ts + ti)^2 + (w.ts.ti)^2)^2
480
481
482 (ts + ti)^2 - (w.ts.ti)^2
483 fact_ts_djw_dti = ts^2 -----------------------------,
484 ((ts + ti)^2 + (w.ts.ti)^2)^2
485
486
487 (ts + ti)^2 - (w.ts.ti)^2
488 fact_djw_dts = ti^2 -----------------------------.
489 ((ts + ti)^2 + (w.ts.ti)^2)^2
490 """
491
492
493 fact_djw = (data.ts_ti_sqrd - data.w_ts_ti_sqrd) * data.inv_ts_denom**2
494 data.fact_ti_djw_dti = (1.0 - data.w_ti_sqrd) * data.fact_ti**2
495 data.fact_ts_djw_dti = params[data.ts_i]**2 * fact_djw
496 data.fact_djw_dts = data.ti**2 * fact_djw
497
498
499
500
501
502
504 """Spectral density gradient component function.
505
506 Calculate the components of the spectral density gradient for the extended model-free formula
507 with the parameters {S2f, tf, S2, ts}.
508
509 Replicated calculations are::
510
511 (tf + ti)^2 - (w.tf.ti)^2
512 fact_djw_dtf = ti^2 -----------------------------,
513 ((tf + ti)^2 + (w.tf.ti)^2)^2
514
515
516 (ts + ti)^2 - (w.ts.ti)^2
517 fact_djw_dts = ti^2 -----------------------------.
518 ((ts + ti)^2 + (w.ts.ti)^2)^2
519 """
520
521 data.fact_djw_dtf = data.ti**2 * (data.tf_ti_sqrd - data.w_tf_ti_sqrd) * data.inv_tf_denom**2
522 data.fact_djw_dts = data.ti**2 * (data.ts_ti_sqrd - data.w_ts_ti_sqrd) * data.inv_ts_denom**2
523
524
525
526
527
528
530 """Spectral density gradient component function.
531
532 Calculate the components of the spectral density gradient for the extended model-free formula
533 with the parameters {S2f, tf, S2, ts} together with diffusion tensor parameters.
534
535 Replicated calculations are::
536
537 1 - (w.ti)^2
538 fact_ti_djw_dti = ----------------,
539 (1 + (w.ti)^2)^2
540
541
542 (tf + ti)^2 - (w.tf.ti)^2
543 fact_tf_djw = -----------------------------,
544 ((tf + ti)^2 + (w.tf.ti)^2)^2
545
546
547 (ts + ti)^2 - (w.ts.ti)^2
548 fact_ts_djw = -----------------------------,
549 ((ts + ti)^2 + (w.ts.ti)^2)^2
550
551
552 (tf + ti)^2 - (w.tf.ti)^2
553 fact_tf_djw_dti = tf^2 -----------------------------,
554 ((tf + ti)^2 + (w.tf.ti)^2)^2
555
556
557 (ts + ti)^2 - (w.ts.ti)^2
558 fact_ts_djw_dti = ts^2 -----------------------------,
559 ((ts + ti)^2 + (w.ts.ti)^2)^2
560
561
562 (tf + ti)^2 - (w.tf.ti)^2
563 fact_djw_dtf = ti^2 -----------------------------,
564 ((tf + ti)^2 + (w.tf.ti)^2)^2
565
566
567 (ts + ti)^2 - (w.ts.ti)^2
568 fact_djw_dts = ti^2 -----------------------------.
569 ((ts + ti)^2 + (w.ts.ti)^2)^2
570 """
571
572
573 data.fact_ti_djw_dti = (1.0 - data.w_ti_sqrd) * data.fact_ti**2
574
575
576 fact_tf_djw = (data.tf_ti_sqrd - data.w_tf_ti_sqrd) * data.inv_tf_denom**2
577 data.fact_tf_djw_dti = params[data.tf_i]**2 * fact_tf_djw
578 data.fact_djw_dtf = data.ti**2 * fact_tf_djw
579
580
581 fact_ts_djw = (data.ts_ti_sqrd - data.w_ts_ti_sqrd) * data.inv_ts_denom**2
582 data.fact_ts_djw_dti = params[data.ts_i]**2 * fact_ts_djw
583 data.fact_djw_dts = data.ti**2 * fact_ts_djw
584
585
586
587
588
589
591 """Spectral density gradient component function.
592
593 Calculate the components of the spectral density gradient for the extended model-free formula
594 with the parameters {S2f, S2s, ts}.
595
596 Replicated calculations are::
597
598 (ts + ti)^2 - (w.ts.ti)^2
599 fact_djw_dts = ti^2 -----------------------------.
600 ((ts + ti)^2 + (w.ts.ti)^2)^2
601 """
602
603 data.fact_djw_dts = data.ti**2 * (data.ts_ti_sqrd - data.w_ts_ti_sqrd) * data.inv_ts_denom**2
604
605
606
607
608
609
611 """Spectral density gradient component function.
612
613 Calculate the components of the spectral density gradient for the extended model-free formula
614 with the parameters {S2f, S2s, ts} together with diffusion tensor parameters.
615
616 Replicated calculations are::
617
618 1 - (w.ti)^2
619 fact_ti_djw_dti = ----------------,
620 (1 + (w.ti)^2)^2
621
622
623 (ts + ti)^2 - (w.ts.ti)^2
624 fact_djw = -----------------------------,
625 ((ts + ti)^2 + (w.ts.ti)^2)^2
626
627
628 (ts + ti)^2 - (w.ts.ti)^2
629 fact_ts_djw_dti = ts^2 -----------------------------,
630 ((ts + ti)^2 + (w.ts.ti)^2)^2
631
632
633 (ts + ti)^2 - (w.ts.ti)^2
634 fact_djw_dts = ti^2 -----------------------------.
635 ((ts + ti)^2 + (w.ts.ti)^2)^2
636 """
637
638 fact_djw = (data.ts_ti_sqrd - data.w_ts_ti_sqrd) * data.inv_ts_denom**2
639 data.fact_ti_djw_dti = (1.0 - data.w_ti_sqrd) * data.fact_ti**2
640 data.fact_ts_djw_dti = params[data.ts_i]**2 * fact_djw
641 data.fact_djw_dts = data.ti**2 * fact_djw
642
643
644
645
646
647
649 """Spectral density gradient component function.
650
651 Calculate the components of the spectral density gradient for the extended model-free formula
652 with the parameters {S2f, tf, S2s, ts}.
653
654 Replicated calculations are::
655
656 (tf + ti)^2 - (w.tf.ti)^2
657 fact_djw_dtf = ti^2 -----------------------------,
658 ((tf + ti)^2 + (w.tf.ti)^2)^2
659
660
661 (ts + ti)^2 - (w.ts.ti)^2
662 fact_djw_dts = ti^2 -----------------------------.
663 ((ts + ti)^2 + (w.ts.ti)^2)^2
664 """
665
666 data.fact_djw_dtf = data.ti**2 * (data.tf_ti_sqrd - data.w_tf_ti_sqrd) * data.inv_tf_denom**2
667 data.fact_djw_dts = data.ti**2 * (data.ts_ti_sqrd - data.w_ts_ti_sqrd) * data.inv_ts_denom**2
668
669
670
671
672
673
675 """Spectral density gradient component function.
676
677 Calculate the components of the spectral density gradient for the extended model-free formula
678 with the parameters {S2f, tf, S2, ts} together with diffusion tensor parameters.
679
680 Replicated calculations are::
681
682 1 - (w.ti)^2
683 fact_ti_djw_dti = ----------------,
684 (1 + (w.ti)^2)^2
685
686
687 (tf + ti)^2 - (w.tf.ti)^2
688 fact_tf_djw = -----------------------------,
689 ((tf + ti)^2 + (w.tf.ti)^2)^2
690
691
692 (ts + ti)^2 - (w.ts.ti)^2
693 fact_ts_djw = -----------------------------,
694 ((ts + ti)^2 + (w.ts.ti)^2)^2
695
696
697 (tf + ti)^2 - (w.tf.ti)^2
698 fact_tf_djw_dti = tf^2 -----------------------------,
699 ((tf + ti)^2 + (w.tf.ti)^2)^2
700
701
702 (ts + ti)^2 - (w.ts.ti)^2
703 fact_ts_djw_dti = ts^2 -----------------------------,
704 ((ts + ti)^2 + (w.ts.ti)^2)^2
705
706
707 (tf + ti)^2 - (w.tf.ti)^2
708 fact_djw_dtf = ti^2 -----------------------------,
709 ((tf + ti)^2 + (w.tf.ti)^2)^2
710
711
712 (ts + ti)^2 - (w.ts.ti)^2
713 fact_djw_dts = ti^2 -----------------------------.
714 ((ts + ti)^2 + (w.ts.ti)^2)^2
715 """
716
717
718 data.fact_ti_djw_dti = (1.0 - data.w_ti_sqrd) * data.fact_ti**2
719
720
721 fact_tf_djw = (data.tf_ti_sqrd - data.w_tf_ti_sqrd) * data.inv_tf_denom**2
722 data.fact_tf_djw_dti = params[data.tf_i]**2 * fact_tf_djw
723 data.fact_djw_dtf = data.ti**2 * fact_tf_djw
724
725
726 fact_ts_djw = (data.ts_ti_sqrd - data.w_ts_ti_sqrd) * data.inv_ts_denom**2
727 data.fact_ts_djw_dti = params[data.ts_i]**2 * fact_ts_djw
728 data.fact_djw_dts = data.ti**2 * fact_ts_djw
729