@@ -174,8 +174,10 @@ def _run_interface(self, runtime):
174
174
vfs = np .clip (vfs , 0. , 1. )
175
175
176
176
fractions = np .concatenate ((ffs , vfs ), axis = 3 )
177
+
177
178
nb .Nifti1Image (fractions , aff , None ).to_filename ('fractions.nii.gz' )
178
- nb .Nifti1Image (total_vf , aff , None ).to_filename ('total_vf.nii.gz' )
179
+ nb .Nifti1Image (np .sum (fractions , axis = 3 ), aff , None ).to_filename (
180
+ 'total_vf.nii.gz' )
179
181
180
182
mhdr = hdr .copy ()
181
183
mhdr .set_data_dtype (np .uint8 )
@@ -188,27 +190,39 @@ def _run_interface(self, runtime):
188
190
189
191
# Stack directions
190
192
dirs = None
191
- for f in self .inputs .in_dirs :
192
- fd = nb .load (f ).get_data ()
193
+ for i in range (nsticks ):
194
+ f = self .inputs .in_dirs [i ]
195
+ fd = np .nan_to_num (nb .load (f ).get_data ())
196
+ w = np .linalg .norm (fd , axis = 3 )[..., np .newaxis ]
197
+ w [w < np .finfo (float ).eps ] = 1.0
198
+ fd /= w
193
199
if dirs is None :
194
200
dirs = fd [msk > 0 ].copy ()
195
201
else :
196
202
dirs = np .hstack ((dirs , fd [msk > 0 ]))
197
203
204
+ # Add random directions for isotropic components
205
+ for d in range (nballs ):
206
+ fd = np .random .randn (nvox , 3 )
207
+ w = np .linalg .norm (fd , axis = 1 )
208
+ fd [w < np .finfo (float ).eps , ...] = np .array ([1. , 0. , 0. ])
209
+ w [w < np .finfo (float ).eps ] = 1.0
210
+ fd /= w [..., np .newaxis ]
211
+ dirs = np .hstack ((dirs , fd ))
212
+
198
213
sf_evals = list (self .inputs .diff_sf )
199
214
ba_evals = list (self .inputs .diff_iso )
200
215
201
216
mevals = [sf_evals ] * nsticks + \
202
217
[[ba_evals [d ]] * 3 for d in range (nballs )]
203
- ba_sticks = [(1.0 , 0.0 , 0.0 )] * nballs
204
- b0 = b0_im .get_data ()[msk > 0 ]
205
218
219
+ b0 = b0_im .get_data ()[msk > 0 ]
206
220
args = []
207
221
for i in range (nvox ):
208
222
args .append (
209
223
{'fractions' : fracs [i , ...].tolist (),
210
224
'sticks' : [tuple (dirs [i , j :j + 3 ])
211
- for j in range (nsticks )] + ba_sticks ,
225
+ for j in range (nsticks + nballs )] ,
212
226
'gradients' : gtab ,
213
227
'mevals' : mevals ,
214
228
'S0' : b0 [i ],
0 commit comments