Diff of /code/meshfitting.py [000000] .. [32d261]

Switch to unified view

a b/code/meshfitting.py
1
import os
2
from multiprocessing import Pool
3
from functools import partial
4
5
6
def meshGeneration(subject_dir, template_dir, param_dir, tmps_dir, vtks_dir, dofs_dir): 
7
   
8
    os.system('rm {0}/*.txt'.format(subject_dir))  
9
    
10
    os.system('rm {0}/*'.format(vtks_dir))    
11
    
12
    os.system('rm {0}/*'.format(tmps_dir))    
13
14
    for fr in ['ED', 'ES']:
15
        
16
        ###########################################################################    
17
        # extract meshes of lvendo, lvepi, lvmyo, rv and rveip at ED and ES, respectively
18
        os.system('binarize '
19
                  '{0}/PHsegmentation_{2}.gipl '
20
                  '{1}/vtk_RV_{2}.nii.gz '
21
                  '4 4 255 0'
22
                  .format(subject_dir, tmps_dir, fr))
23
           
24
        os.system('mcubes '
25
                  '{0}/vtk_RV_{2}.nii.gz '
26
                  '{1}/RV_{2}.vtk '
27
                  '120 -blur 2'
28
                  .format(tmps_dir, vtks_dir, fr))
29
        
30
        os.system('binarize '
31
                  '{0}/PHsegmentation_{2}.gipl '
32
                  '{1}/vtk_RVepi_{2}.nii.gz '
33
                  '3 4 255 0'
34
                  .format(subject_dir, tmps_dir, fr))
35
        
36
        os.system('mcubes '
37
                  '{0}/vtk_RVepi_{2}.nii.gz '
38
                  '{1}/RVepi_{2}.vtk '
39
                  '120 -blur 2'
40
                  .format(tmps_dir, vtks_dir, fr))
41
        
42
        os.system('padding '
43
                  '{0}/PHsegmentation_{2}.gipl '
44
                  '{0}/PHsegmentation_{2}.gipl '
45
                  '{1}/vtk_LV_{2}.nii.gz '
46
                  '4 0'
47
                  .format(subject_dir, tmps_dir, fr))
48
        
49
        os.system('padding '
50
                  '{1}/vtk_LV_{2}.nii.gz '
51
                  '{0}/PHsegmentation_{2}.gipl '
52
                  '{1}/vtk_LV_{2}.nii.gz '
53
                  '3 0'
54
                  .format(subject_dir, tmps_dir, fr))
55
        
56
        os.system('binarize '
57
                  '{0}/PHsegmentation_{2}.gipl '
58
                  '{1}/vtk_LVendo_{2}.nii.gz '
59
                  '1 1 255 0'
60
                  .format(subject_dir, tmps_dir, fr))
61
        
62
        os.system('mcubes '
63
                  '{0}/vtk_LVendo_{2}.nii.gz '
64
                  '{1}/LVendo_{2}.vtk '
65
                  '120 -blur 2'
66
                  .format(tmps_dir, vtks_dir, fr))
67
        
68
        os.system('binarize '
69
                  '{0}/PHsegmentation_{2}.gipl '
70
                  '{1}/vtk_LVepi_{2}.nii.gz '
71
                  '1 2 255 0'
72
                  .format(subject_dir, tmps_dir, fr))
73
        
74
        os.system('mcubes '
75
                  '{0}/vtk_LVepi_{2}.nii.gz '
76
                  '{1}/LVepi_{2}.vtk '
77
                  '120 -blur 2'
78
                  .format(tmps_dir, vtks_dir, fr))
79
        
80
        os.system('binarize '
81
                  '{0}/PHsegmentation_{2}.gipl '
82
                  '{1}/vtk_LVmyo_{2}.nii.gz '
83
                  '2 2 255 0'
84
                  .format(subject_dir, tmps_dir, fr))
85
        
86
        os.system('mcubes '
87
                  '{0}/vtk_LVmyo_{2}.nii.gz '
88
                  '{1}/LVmyo_{2}.vtk '
89
                  '120 -blur 2'
90
                  .format(tmps_dir, vtks_dir, fr))
91
        
92
#        os.system('binarize '
93
#                  '{0}/seg_lvsa_SR_{2}.nii.gz '
94
#                  '{1}/vtk_RV_{2}.nii.gz '
95
#                  '4 4 255 0'
96
#                  .format(subject_dir, tmps_dir, fr))
97
#           
98
#        os.system('mcubes '
99
#                  '{0}/vtk_RV_{2}.nii.gz '
100
#                  '{1}/RV_{2}.vtk '
101
#                  '120 -blur 2'
102
#                  .format(tmps_dir, vtks_dir, fr))
103
#        
104
#        os.system('binarize '
105
#                  '{0}/seg_lvsa_SR_{2}.nii.gz '
106
#                  '{1}/vtk_RVepi_{2}.nii.gz '
107
#                  '3 4 255 0'
108
#                  .format(subject_dir, tmps_dir, fr))
109
#        
110
#        os.system('mcubes '
111
#                  '{0}/vtk_RVepi_{2}.nii.gz '
112
#                  '{1}/RVepi_{2}.vtk '
113
#                  '120 -blur 2'
114
#                  .format(tmps_dir, vtks_dir, fr))
115
#        
116
#        os.system('padding '
117
#                  '{0}/seg_lvsa_SR_{2}.nii.gz '
118
#                  '{0}/seg_lvsa_SR_{2}.nii.gz '
119
#                  '{1}/vtk_LV_{2}.nii.gz '
120
#                  '4 0'
121
#                  .format(subject_dir, tmps_dir, fr))
122
#        
123
#        os.system('padding '
124
#                  '{1}/vtk_LV_{2}.nii.gz '
125
#                  '{0}/seg_lvsa_SR_{2}.nii.gz '
126
#                  '{1}/vtk_LV_{2}.nii.gz '
127
#                  '3 0'
128
#                  .format(subject_dir, tmps_dir, fr))
129
#        
130
#        os.system('binarize '
131
#                  '{0}/seg_lvsa_SR_{2}.nii.gz '
132
#                  '{1}/vtk_LVendo_{2}.nii.gz '
133
#                  '1 1 255 0'
134
#                  .format(subject_dir, tmps_dir, fr))
135
#        
136
#        os.system('mcubes '
137
#                  '{0}/vtk_LVendo_{2}.nii.gz '
138
#                  '{1}/LVendo_{2}.vtk '
139
#                  '120 -blur 2'
140
#                  .format(tmps_dir, vtks_dir, fr))
141
#        
142
#        os.system('binarize '
143
#                  '{0}/seg_lvsa_SR_{2}.nii.gz '
144
#                  '{1}/vtk_LVepi_{2}.nii.gz '
145
#                  '1 2 255 0'
146
#                  .format(subject_dir, tmps_dir, fr))
147
#        
148
#        os.system('mcubes '
149
#                  '{0}/vtk_LVepi_{2}.nii.gz '
150
#                  '{1}/LVepi_{2}.vtk '
151
#                  '120 -blur 2'
152
#                  .format(tmps_dir, vtks_dir, fr))
153
#        
154
#        os.system('binarize '
155
#                  '{0}/seg_lvsa_SR_{2}.nii.gz '
156
#                  '{1}/vtk_LVmyo_{2}.nii.gz '
157
#                  '2 2 255 0'
158
#                  .format(subject_dir, tmps_dir, fr))
159
#        
160
#        os.system('mcubes '
161
#                  '{0}/vtk_LVmyo_{2}.nii.gz '
162
#                  '{1}/LVmyo_{2}.vtk '
163
#                  '120 -blur 2'
164
#                  .format(tmps_dir, vtks_dir, fr))
165
    
166
    ###############################################################################
167
    #use landmark to initialise the registration
168
#    os.system('prreg '
169
#              '{0}/landmarks.vtk '
170
#              '{1}/landmarks.vtk '
171
#              '-dofout {2}/landmarks.dof.gz'
172
#              .format(subject_dir, template_dir, dofs_dir))
173
    
174
    ###############################################################################
175
    for fr in ['ED', 'ES']:
176
    
177
#        os.system('msrreg 3 '
178
#                  '{0}/RV_{4}.vtk '
179
#                  '{0}/LVendo_{4}.vtk '
180
#                  '{0}/LVepi_{4}.vtk '
181
#                  '{1}/RV_{4}.vtk '
182
#                  '{1}/LVendo_{4}.vtk '
183
#                  '{1}/LVepi_{4}.vtk '
184
#                  '-dofin {2}/landmarks.dof.gz '
185
#                  '-dofout {3}/{4}.dof.gz '
186
#                  '-symmetric'
187
#                  .format(vtks_dir, template_dir, dofs_dir, tmps_dir, fr))
188
        
189
        os.system('msrreg 3 '
190
                  '{0}/RV_{3}.vtk '
191
                  '{0}/LVendo_{3}.vtk '
192
                  '{0}/LVepi_{3}.vtk '
193
                  '{1}/RV_{3}.vtk '
194
                  '{1}/LVendo_{3}.vtk '
195
                  '{1}/LVepi_{3}.vtk '
196
                  '-dofout {2}/{3}.dof.gz '
197
                  '-symmetric'
198
                  .format(vtks_dir, template_dir, tmps_dir, fr))
199
        
200
        os.system('msrreg 2 '
201
                  '{0}/LVendo_{3}.vtk '
202
                  '{0}/LVepi_{3}.vtk '
203
                  '{1}/LVendo_{3}.vtk '
204
                  '{1}/LVepi_{3}.vtk '
205
                  '-dofin {2}/{3}.dof.gz '
206
                  '-dofout {2}/lv_{3}_rreg.dof.gz '
207
                  '-symmetric'
208
                  .format(vtks_dir, template_dir, tmps_dir, fr))
209
        
210
        os.system('srreg '
211
                  '{0}/RV_{3}.vtk '
212
                  '{1}/RV_{3}.vtk '
213
                  '-dofin {2}/{3}.dof.gz '
214
                  '-dofout {2}/rv_{3}_rreg.dof.gz '
215
                  '-symmetric'
216
                  .format(vtks_dir, template_dir, tmps_dir, fr))
217
        
218
        ###########################################################################     
219
        os.system('ptransformation '
220
                  '{0}/RV_{2}.vtk '
221
                  '{0}/N_RV_{2}.vtk '
222
                  '-dofin {1}/rv_{2}_rreg.dof.gz'
223
                  .format(vtks_dir, tmps_dir, fr))
224
        
225
        os.system('ptransformation '
226
                  '{0}/RVepi_{2}.vtk '
227
                  '{0}/N_RVepi_{2}.vtk '
228
                  '-dofin {1}/rv_{2}_rreg.dof.gz'
229
                  .format(vtks_dir, tmps_dir, fr))
230
        
231
        os.system('ptransformation '
232
                  '{0}/LVendo_{2}.vtk '
233
                  '{0}/N_LVendo_{2}.vtk '
234
                  '-dofin {1}/lv_{2}_rreg.dof.gz'
235
                  .format(vtks_dir, tmps_dir, fr))
236
        
237
        os.system('ptransformation '
238
                  '{0}/LVepi_{2}.vtk '
239
                  '{0}/N_LVepi_{2}.vtk '
240
                  '-dofin {1}/lv_{2}_rreg.dof.gz'
241
                  .format(vtks_dir, tmps_dir, fr))
242
        
243
        os.system('ptransformation '
244
                  '{0}/LVmyo_{2}.vtk '
245
                  '{0}/N_LVmyo_{2}.vtk '
246
                  '-dofin {1}/lv_{2}_rreg.dof.gz'
247
                  .format(vtks_dir, tmps_dir, fr))
248
        
249
        os.system('transformation '
250
                  '{0}/vtk_RV_{1}.nii.gz '
251
                  '{0}/N_vtk_RV_{1}.nii.gz '
252
                  '-dofin {0}/lv_{1}_rreg.dof.gz '
253
                  '-invert'
254
                  .format(tmps_dir, fr))
255
        
256
        os.system('transformation '
257
                  '{0}/vtk_LV_{1}.nii.gz '
258
                  '{0}/N_vtk_LV_{1}.nii.gz '
259
                  '-dofin {0}/lv_{1}_rreg.dof.gz '
260
                  '-invert'
261
                  .format(tmps_dir, fr))
262
        
263
        ###########################################################################
264
        #affine
265
        os.system('areg '
266
                  '{0}/vtk_RV_{3}.nii.gz '
267
                  '{1}/N_vtk_RV_{3}.nii.gz '
268
                  '-dofout {1}/rv_{3}_areg.dof.gz '
269
                  '-parin {2}/segareg.txt'
270
                  .format(template_dir, tmps_dir, param_dir, fr))
271
        
272
        os.system('areg '
273
                  '{0}/vtk_LV_{3}.nii.gz '
274
                  '{1}/N_vtk_LV_{3}.nii.gz '
275
                  '-dofout {1}/lv_{3}_areg.dof.gz '
276
                  '-parin {2}/segareg.txt'
277
                  .format(template_dir, tmps_dir, param_dir, fr))
278
        
279
        #non-rigid
280
        os.system('nreg '
281
                  '{0}/vtk_RV_{3}.nii.gz '
282
                  '{1}/N_vtk_RV_{3}.nii.gz '
283
                  '-dofin {1}/rv_{3}_areg.dof.gz '
284
                  '-dofout {1}/rv_{3}_nreg.dof.gz '
285
                  '-parin {2}/segreg.txt'
286
                  .format(template_dir, tmps_dir, param_dir, fr))
287
        
288
        os.system('snreg '
289
                  '{0}/RV_{3}.vtk '
290
                  '{1}/N_RV_{3}.vtk '
291
                  '-dofin {2}/rv_{3}_nreg.dof.gz '
292
                  '-dofout {2}/rv{3}ds8.dof.gz '
293
                  '-ds 8 -symmetric'
294
                  .format(template_dir, vtks_dir, tmps_dir, fr))
295
        
296
        os.system('nreg '
297
                  '{0}/vtk_LV_{3}.nii.gz '
298
                  '{1}/N_vtk_LV_{3}.nii.gz '
299
                  '-dofin {1}/lv_{3}_areg.dof.gz '
300
                  '-dofout {1}/lv_{3}_nreg.dof.gz '
301
                  '-parin {2}/segreg.txt'
302
                  .format(template_dir, tmps_dir, param_dir, fr))
303
        
304
        os.system('msnreg 2 '
305
                  '{0}/LVendo_{3}.vtk '
306
                  '{0}/LVepi_{3}.vtk '
307
                  '{1}/N_LVendo_{3}.vtk '
308
                  '{1}/N_LVepi_{3}.vtk '
309
                  '-dofin {2}/lv_{3}_nreg.dof.gz '
310
                  '-dofout {2}/lv{3}final.dof.gz '
311
                  '-ds 4 -symmetric'
312
                  .format(template_dir, vtks_dir, tmps_dir, fr))
313
    
314
        # same number of points    
315
        os.system('cardiacsurfacemap '
316
                  '{0}/LVendo_{3}.vtk '
317
                  '{1}/N_LVendo_{3}.vtk '
318
                  '{2}/lv{3}final.dof.gz '
319
                  '{1}/F_LVendo_{3}.vtk'
320
                  .format(template_dir, vtks_dir, tmps_dir, fr))
321
    
322
        os.system('cardiacsurfacemap '
323
                  '{0}/LVepi_{3}.vtk '
324
                  '{1}/N_LVepi_{3}.vtk '
325
                  '{2}/lv{3}final.dof.gz '
326
                  '{1}/F_LVepi_{3}.vtk'
327
                  .format(template_dir, vtks_dir, tmps_dir, fr))
328
    
329
        os.system('ptransformation '
330
                  '{0}/LVmyo_{3}.vtk '
331
                  '{1}/F_LVmyo_{3}.vtk '
332
                  '-dofin {2}/lv{3}final.dof.gz'
333
                  .format(template_dir, vtks_dir, tmps_dir, fr))
334
        
335
        os.system('cardiacsurfacemap '
336
                  '{0}/RV_{3}.vtk '
337
                  '{1}/N_RV_{3}.vtk '
338
                  '{2}/rv{3}ds8.dof.gz '
339
                  '{1}/C_RV_{3}.vtk'
340
                  .format(template_dir, vtks_dir, tmps_dir, fr))
341
     
342
        ###########################################################################
343
        os.system('cp {0}/F_LVendo_{1}.vtk {0}/S_LVendo_{1}.vtk'.format(vtks_dir, fr))
344
        os.system('cp {0}/F_LVepi_{1}.vtk {0}/S_LVepi_{1}.vtk'.format(vtks_dir, fr))
345
        os.system('cp {0}/F_LVmyo_{1}.vtk {0}/S_LVmyo_{1}.vtk'.format(vtks_dir, fr))
346
        os.system('cp {0}/F_LVmyo_{1}.vtk {0}/C_LVmyo_{1}.vtk'.format(vtks_dir, fr))
347
        os.system('cp {0}/F_LVmyo_{1}.vtk {0}/W_LVmyo_{1}.vtk'.format(vtks_dir, fr))
348
        os.system('cp {0}/C_RV_{1}.vtk {0}/S_RV_{1}.vtk'.format(vtks_dir, fr))
349
        os.system('cp {0}/C_RV_{1}.vtk {0}/W_RV_{1}.vtk'.format(vtks_dir, fr))
350
        
351
        ###########################################################################
352
        # compute the quantities of the heart with respect to template
353
        os.system('cardiacwallthickness '
354
                  '{0}/F_LVendo_{1}.vtk '
355
                  '{0}/F_LVepi_{1}.vtk '
356
                  '-myocardium '
357
                  '{0}/W_LVmyo_{1}.vtk'
358
                  .format(vtks_dir, fr))
359
    
360
        os.system('cardiacenlargedistance '
361
                  '{0}/S_LVendo_{2}.vtk '
362
                  '{0}/S_LVepi_{2}.vtk '
363
                  '{1}/LVendo_{2}.vtk '
364
                  '{1}/LVepi_{2}.vtk '
365
                  '-myocardium '
366
                  '{0}/S_LVmyo_{2}.vtk'
367
                  .format(vtks_dir, template_dir, fr))
368
        
369
        os.system('DiscreteCurvatureEstimator '
370
                  '{0}/C_LVmyo_{1}.vtk '
371
                  '{0}/FC_LVmyo_{1}.vtk'
372
                  .format(vtks_dir, fr))
373
        
374
        os.system('cardiaccurvature '
375
                  '{0}/FC_LVmyo_{1}.vtk '
376
                  '{0}/C_LVmyo_{1}.vtk '
377
                  '-smooth 64'
378
                  .format(vtks_dir, fr))
379
        
380
        os.system('DiscreteCurvatureEstimator '
381
                  '{0}/C_RV_{1}.vtk '
382
                  '{0}/FC_RV_{1}.vtk'
383
                  .format(vtks_dir, fr))
384
        
385
        os.system('cardiaccurvature '
386
                  '{0}/FC_RV_{1}.vtk '
387
                  '{0}/C_RV_{1}.vtk '
388
                  '-smooth 64'
389
                  .format(vtks_dir, fr))
390
        
391
        os.system('sevaluation '
392
                  '{0}/S_RV_{2}.vtk '
393
                  '{1}/RV_{2}.vtk '
394
                  '-scalar '
395
                  '-signed'
396
                  .format(vtks_dir, template_dir, fr))
397
        
398
        os.system('cardiacwallthickness '
399
                  '{0}/W_RV_{1}.vtk '
400
                  '{0}/N_RVepi_{1}.vtk'
401
                  .format(vtks_dir, fr))
402
        
403
        ###########################################################################
404
#        os.system('vtk2txt {0}/C_RV_{1}.vtk {2}/rv_{1}_curvature.txt'.format(vtks_dir, fr, subject_dir))
405
#        os.system('vtk2txt {0}/W_RV_{1}.vtk {2}/rv_{1}_wallthickness.txt'.format(vtks_dir, fr, subject_dir))
406
#        os.system('vtk2txt {0}/S_RV_{1}.vtk {2}/rv_{1}_signeddistances.txt'.format(vtks_dir, fr, subject_dir))
407
#        os.system('vtk2txt {0}/W_LVmyo_{1}.vtk {2}/lv_myo{1}_wallthickness.txt'.format(vtks_dir, fr, subject_dir))
408
#        os.system('vtk2txt {0}/C_LVmyo_{1}.vtk {2}/lv_myo{1}_curvature.txt'.format(vtks_dir, fr, subject_dir))
409
#        os.system('vtk2txt {0}/S_LVmyo_{1}.vtk {2}/lv_myo{1}_signeddistances.txt'.format(vtks_dir, fr, subject_dir))
410
        if fr == 'ED':
411
            fr_ = 'ed'
412
            os.system('vtk2txt {0}/C_RV_{1}.vtk {2}/rv_{3}_curvature.txt'.format(vtks_dir, fr, subject_dir, fr_))
413
            os.system('vtk2txt {0}/W_RV_{1}.vtk {2}/rv_{3}_wallthickness.txt'.format(vtks_dir, fr, subject_dir, fr_))
414
            os.system('vtk2txt {0}/S_RV_{1}.vtk {2}/rv_{3}_signeddistances.txt'.format(vtks_dir, fr, subject_dir, fr_))
415
            os.system('vtk2txt {0}/W_LVmyo_{1}.vtk {2}/lv_myo{3}_wallthickness.txt'.format(vtks_dir, fr, subject_dir, fr_))
416
            os.system('vtk2txt {0}/C_LVmyo_{1}.vtk {2}/lv_myo{3}_curvature.txt'.format(vtks_dir, fr, subject_dir, fr_))
417
            os.system('vtk2txt {0}/S_LVmyo_{1}.vtk {2}/lv_myo{3}_signeddistances.txt'.format(vtks_dir, fr, subject_dir, fr_))
418
        if fr == 'ES':
419
            fr_ = 'es'
420
            os.system('vtk2txt {0}/C_RV_{1}.vtk {2}/rv_{3}_curvature.txt'.format(vtks_dir, fr, subject_dir, fr_))
421
            os.system('vtk2txt {0}/W_RV_{1}.vtk {2}/rv_{3}_wallthickness.txt'.format(vtks_dir, fr, subject_dir, fr_))
422
            os.system('vtk2txt {0}/S_RV_{1}.vtk {2}/rv_{3}_signeddistances.txt'.format(vtks_dir, fr, subject_dir, fr_))
423
            os.system('vtk2txt {0}/W_LVmyo_{1}.vtk {2}/lv_myo{3}_wallthickness.txt'.format(vtks_dir, fr, subject_dir, fr_))
424
            os.system('vtk2txt {0}/C_LVmyo_{1}.vtk {2}/lv_myo{3}_curvature.txt'.format(vtks_dir, fr, subject_dir, fr_))
425
            os.system('vtk2txt {0}/S_LVmyo_{1}.vtk {2}/lv_myo{3}_signeddistances.txt'.format(vtks_dir, fr, subject_dir, fr_))
426
  
427
      
428
def apply_PC(subject, data_dir, param_dir, template_dir, mirtk):
429
    
430
    print('  co-registering {0}'.format(subject))    
431
    
432
    subject_dir = os.path.join(data_dir, subject)
433
        
434
    if os.path.isdir(subject_dir):
435
        
436
        tmps_dir = '{0}/tmps'.format(subject_dir)
437
438
        vtks_dir = '{0}/vtks'.format(subject_dir)
439
440
        dofs_dir = '{0}/dofs'.format(subject_dir)
441
442
        meshGeneration(subject_dir, template_dir, param_dir, tmps_dir, vtks_dir, dofs_dir)
443
        
444
        print('  finish generating meshes from segmentations in {0}'.format(subject))
445
        
446
    else:  
447
        print('  {0} is not a valid directory, do nothing'.format(subject_dir))
448
449
450
def meshCoregstration(dir_0, dir_2, dir_3, coreNo, parallel, mirtk):
451
               
452
    if parallel:
453
    
454
        print('Generate meshes from segmentations running on {0} cores'.format(coreNo))
455
        
456
        pool = Pool(processes = coreNo) 
457
        
458
        # partial only in Python 2.7+
459
        pool.map(partial(apply_PC, 
460
                         data_dir=dir_0,  
461
                         param_dir=dir_2, 
462
                         template_dir=dir_3,
463
                         mirtk=mirtk), 
464
                         sorted(os.listdir(dir_0)))       
465
                
466
    else:
467
        
468
        print('Generate meshes from segmentations running subsequently')
469
                
470
        data_dir, param_dir, template_dir = dir_0, dir_2, dir_3
471
                                     
472
        for subject in sorted(os.listdir(data_dir)):
473
            
474
            print('  co-registering {0}'.format(subject))    
475
            
476
            subject_dir = os.path.join(data_dir, subject)
477
478
            if not os.path.isdir(subject_dir):
479
                
480
                print('  {0} is not a valid folder, Skip'.format(subject_dir))
481
                
482
                continue 
483
                   
484
            tmps_dir = '{0}/tmps'.format(subject_dir)
485
486
            vtks_dir = '{0}/vtks'.format(subject_dir)
487
488
            dofs_dir = '{0}/dofs'.format(subject_dir)
489
490
            meshGeneration(subject_dir, template_dir, param_dir, tmps_dir, vtks_dir, dofs_dir)
491
            
492
            print('  finish generating meshes from segmentations in {0}'.format(subject))