@@ -75,45 +75,48 @@ def fit_least_squares(bvalues, dw_data, IR=False, S0_output=False, fitS0=True,
75
75
:return Dmv: scalar with Dmv of the specific voxel
76
76
"""
77
77
78
- try :
79
- def monofit (bvalues , Dpar ):
80
- return np .exp (- bvalues * Dpar )
81
-
82
- high_b = bvalues [bvalues >= cutoff ]
83
- high_dw_data = dw_data [bvalues >= cutoff ]
84
- boundspar = ([bounds [0 ][1 ]], [bounds [1 ][1 ]])
85
- params , _ = curve_fit (monofit , high_b , high_dw_data , p0 = [(bounds [1 ][1 ]- bounds [0 ][1 ])/ 2 ], bounds = boundspar )
86
- Dpar1 = params [0 ]
78
+ # try:
79
+ def monofit (bvalues , Dpar ):
80
+ return np .exp (- bvalues * Dpar )
81
+
82
+ high_b = bvalues [bvalues >= cutoff ]
83
+ high_dw_data = dw_data [bvalues >= cutoff ]
84
+ boundspar = ([bounds [0 ][1 ]], [bounds [1 ][1 ]])
85
+ params , _ = curve_fit (monofit , high_b , high_dw_data , p0 = [(bounds [1 ][1 ]- bounds [0 ][1 ])/ 2 ], bounds = boundspar )
86
+ Dpar = params [0 ]
87
87
88
- if not fitS0 :
89
- boundsupdated = ([Dpar1 , bounds [0 ][2 ] , bounds [0 ][3 ] ],
90
- [Dpar1 , bounds [1 ][2 ] , bounds [1 ][3 ] ])
91
- params , _ = curve_fit (two_exp_noS0 , bvalues , dw_data , p0 = [Dpar1 , (bounds [0 ][2 ]+ bounds [1 ][2 ])/ 2 , (bounds [0 ][3 ]+ bounds [1 ][3 ])/ 2 ], bounds = boundsupdated )
92
- Dpar , Fmv , Dmv = params [0 ], params [1 ], params [2 ]
93
- #when the fraction of a compartment equals zero (or very very small), the corresponding diffusivity is non-existing (=NaN)
94
- if Fmv < 1e-4 :
95
- Dmv = float ("NaN" )
88
+ if not fitS0 :
89
+ boundsupdated = ([Dpar1 , bounds [0 ][2 ] , bounds [0 ][3 ] ],
90
+ [Dpar1 , bounds [1 ][2 ] , bounds [1 ][3 ] ])
91
+ params , _ = curve_fit (two_exp_noS0 , bvalues , dw_data , p0 = [Dpar1 , (bounds [0 ][2 ]+ bounds [1 ][2 ])/ 2 , (bounds [0 ][3 ]+ bounds [1 ][3 ])/ 2 ], bounds = boundsupdated )
92
+ Dpar1 , Fmv , Dmv = params [0 ], params [1 ], params [2 ]
93
+ #when the fraction of a compartment equals zero (or very very small), the corresponding diffusivity is non-existing (=NaN)
94
+ if Fmv < 1e-4 :
95
+ Dmv = float ("NaN" )
96
+
97
+ else :
98
+ #boundsupdated = ([bounds[0][0] , Dpar1 , bounds[0][2] , bounds[0][3] ],
99
+ # [bounds[1][0] , Dpar1, bounds[1][2] , bounds[1][3] ])
100
+ #params, _ = curve_fit(two_exp, bvalues, dw_data, p0=[1, Dpar1, (bounds[0][2]+bounds[1][2])/2, (bounds[0][3]+bounds[1][3])/2], bounds=boundsupdated)
101
+ boundsupdated = ([bounds [0 ][0 ] , bounds [0 ][2 ] , bounds [0 ][3 ] ],
102
+ [bounds [1 ][0 ] , bounds [1 ][2 ] , bounds [1 ][3 ] ])
103
+ params , _ = curve_fit (lambda bvalues , S0 , Fmv , Dmv : two_exp (bvalues , S0 , Dpar , Fmv , Dmv ), bvalues , dw_data , p0 = [1 , (bounds [0 ][2 ]+ bounds [1 ][2 ])/ 2 , (bounds [0 ][3 ]+ bounds [1 ][3 ])/ 2 ], bounds = boundsupdated )
104
+ S0 = params [0 ]
105
+ Fmv , Dmv = params [1 ] , params [2 ]
106
+ #when the fraction of a compartment equals zero (or very very small), the corresponding diffusivity is non-existing (=NaN)
107
+ if Fmv < 1e-4 :
108
+ Dmv = float ("NaN" )
96
109
97
- else :
98
- boundsupdated = ([bounds [0 ][0 ] , Dpar1 , bounds [0 ][2 ] , bounds [0 ][3 ] ],
99
- [bounds [1 ][0 ] , Dpar1 , bounds [1 ][2 ] , bounds [1 ][3 ] ])
100
- params , _ = curve_fit (two_exp , bvalues , dw_data , p0 = [1 , Dpar1 , (bounds [0 ][2 ]+ bounds [1 ][2 ])/ 2 , (bounds [0 ][3 ]+ bounds [1 ][3 ])/ 2 ], bounds = boundsupdated )
101
- S0 = params [0 ]
102
- Dpar , Fmv , Dmv = params [1 ] , params [2 ] , params [3 ]
103
- #when the fraction of a compartment equals zero (or very very small), the corresponding diffusivity is non-existing (=NaN)
104
- if Fmv < 1e-4 :
105
- Dmv = float ("NaN" )
106
-
107
- if S0_output :
108
- return Dpar , Fmv , Dmv , S0
109
- else :
110
- return Dpar , Fmv , Dmv
111
- except :
110
+ if S0_output :
111
+ return Dpar , Fmv , Dmv , S0
112
+ else :
113
+ return Dpar , Fmv , Dmv
114
+ #except:
112
115
113
- if S0_output :
114
- return 0 , 0 , 0 , 0 , 0 , 0
115
- else :
116
- return 0 , 0 , 0 , 0 , 0
116
+ if S0_output :
117
+ return 0 , 0 , 0 , 0 , 0 , 0
118
+ else :
119
+ return 0 , 0 , 0 , 0 , 0
117
120
118
121
119
122
0 commit comments