CoBrALab / optimized_antsMultivariateTemplateConstruction

A re-implementation of antsMultivariateTemplateConstruction2.sh using optimized image pyramid scale-space and qbatch support
Other
22 stars 8 forks source link

Investigate model convergence #2

Open gdevenyi opened 3 years ago

gdevenyi commented 3 years ago

Right now, model builds run a fixed number of iterations and simply complete.

This leads to two problems:

  1. In linear stages, more work done than is needed with no change in the template
  2. In non-linear stages, iterations may terminate early while there is still movement to be had in the model construction
gdevenyi commented 3 years ago

For non-linear, this can measure the deformation field

${ANTSPATH}/MeasureMinMaxMean ${dim} ${templatename}0warp.nii.gz ${templatename}warplog.txt 1
gdevenyi commented 3 years ago

ConvertTransformFile can dump the matrix from the average affine file, then we can hard-code a determinant to calculate the model updating.

gdevenyi commented 3 years ago

Using all the different model build methods, its not clear if nlin ever "converges"

# Without absolute value
$ for file in output-*/nlin/*/average/warp.nii.gz; do MeasureMinMaxMean 3 ${file}; done
output-extracted/nlin/0/average/warp.nii.gz Max : [-0.452693, -1.62745, -1.50573] Min : [0, 0, 0] Mean : [-0.000768303, -0.0119242, -0.0196753] Var : 0.114554 SD : 0.338459
output-extracted/nlin/1/average/warp.nii.gz Max : [-0.298802, -1.08201, -1.33526] Min : [0, 0, 0] Mean : [-0.000223245, -0.0152169, 0.00270445] Var : 0.0865367 SD : 0.294171
output-extracted/nlin/2/average/warp.nii.gz Max : [0.716053, -0.894531, -0.422317] Min : [0, 0, 0] Mean : [-0.00208156, -0.0109282, 0.00244946] Var : 0.0734986 SD : 0.271106
output-extracted/nlin/3/average/warp.nii.gz Max : [-0.928942, -0.0651475, -0.640485] Min : [0, 0, 0] Mean : [-0.00359711, -0.0163121, -0.00250613] Var : 0.0676622 SD : 0.26012
output-extracted/nlin/4/average/warp.nii.gz Max : [-0.946662, -0.309333, -0.415863] Min : [0, 0, 0] Mean : [-0.00501372, -0.0198601, -0.00843498] Var : 0.0656342 SD : 0.256192
output-extracted/nlin/5/average/warp.nii.gz Max : [0.477817, -0.790455, -0.37103] Min : [0, 0, 0] Mean : [-0.00477431, -0.0205066, -0.0101497] Var : 0.0663974 SD : 0.257677
output-extracted/nlin/6/average/warp.nii.gz Max : [-0.293559, -0.846582, -0.422954] Min : [0, 0, 0] Mean : [-0.00556864, -0.021131, -0.010458] Var : 0.0660183 SD : 0.25694
output-extracted/nlin/7/average/warp.nii.gz Max : [-0.373689, -0.863242, -0.382086] Min : [0, 0, 0] Mean : [-0.00369779, -0.0210322, -0.00973454] Var : 0.0665072 SD : 0.25789
output-masked/nlin/0/average/warp.nii.gz Max : [2.03237, -0.195213, 2.69124] Min : [0, 0, 0] Mean : [0.0136232, -0.0217325, 0.0283828] Var : 0.201642 SD : 0.449045
output-masked/nlin/1/average/warp.nii.gz Max : [-0.702795, -0.144425, -1.24276] Min : [0, 0, 0] Mean : [0.00899049, 0.00656614, -0.0118939] Var : 0.0709862 SD : 0.266432
output-masked/nlin/2/average/warp.nii.gz Max : [-0.695785, -0.341735, -1.01337] Min : [0, 0, 0] Mean : [0.00659282, 0.023098, -0.014682] Var : 0.0630542 SD : 0.251106
output-masked/nlin/3/average/warp.nii.gz Max : [-0.683415, -0.312977, -0.815534] Min : [0, 0, 0] Mean : [0.00521152, 0.0232986, -0.0143199] Var : 0.0585505 SD : 0.241972
output-masked/nlin/4/average/warp.nii.gz Max : [0.301654, -0.0261229, -0.988782] Min : [0, 0, 0] Mean : [0.00603426, 0.0232618, -0.0138668] Var : 0.0589778 SD : 0.242853
output-masked/nlin/5/average/warp.nii.gz Max : [-0.242506, 0.828573, 0.556414] Min : [0, 0, 0] Mean : [0.00490849, 0.0263997, -0.0123962] Var : 0.0572439 SD : 0.239257
output-masked/nlin/6/average/warp.nii.gz Max : [-0.241657, 0.8371, 0.569568] Min : [0, 0, 0] Mean : [0.00520994, 0.0251792, -0.0119333] Var : 0.0589676 SD : 0.242832
output-masked/nlin/7/average/warp.nii.gz Max : [-0.241389, 0.833909, 0.511822] Min : [0, 0, 0] Mean : [0.00415043, 0.0273177, -0.0088105] Var : 0.0573157 SD : 0.239407
output-maskextract/nlin/0/average/warp.nii.gz Max : [0.85177, -2.93415, 0.903224] Min : [0, 0, 0] Mean : [0.00406056, 0.017609, -0.0435367] Var : 0.257791 SD : 0.507731
output-maskextract/nlin/1/average/warp.nii.gz Max : [-0.221123, -1.09489, -1.51296] Min : [0, 0, 0] Mean : [0.00133665, 0.00105093, -0.0152822] Var : 0.0562371 SD : 0.237144
output-maskextract/nlin/2/average/warp.nii.gz Max : [0.712146, -0.800305, -0.589538] Min : [0, 0, 0] Mean : [-0.00352248, -0.0011009, -0.00536078] Var : 0.0463196 SD : 0.21522
output-maskextract/nlin/3/average/warp.nii.gz Max : [0.209017, 0.00244299, -1.12015] Min : [0, 0, 0] Mean : [-0.00299751, -0.000775974, -0.00689937] Var : 0.0399108 SD : 0.199777
output-maskextract/nlin/4/average/warp.nii.gz Max : [-0.992786, -0.110689, -0.655519] Min : [0, 0, 0] Mean : [-0.0039781, -0.000971524, -0.0072173] Var : 0.0370767 SD : 0.192553
output-maskextract/nlin/5/average/warp.nii.gz Max : [0.444215, -0.784162, -0.467792] Min : [0, 0, 0] Mean : [-0.0007927, -0.000971546, -0.0121657] Var : 0.0384954 SD : 0.196202
output-maskextract/nlin/6/average/warp.nii.gz Max : [0.520046, -0.932913, -0.190188] Min : [0, 0, 0] Mean : [0.000161424, -0.0007379, -0.00835751] Var : 0.03815 SD : 0.19532
output-maskextract/nlin/7/average/warp.nii.gz Max : [0.597309, -0.812024, -0.205728] Min : [0, 0, 0] Mean : [-0.00181338, 0.000175622, -0.00888883] Var : 0.0366131 SD : 0.191345
output-nomask/nlin/0/average/warp.nii.gz Max : [0.110179, 1.1609, 3.6875] Min : [0, 0, 0] Mean : [-0.00594298, 0.0343777, -0.0439406] Var : 0.447193 SD : 0.668725
output-nomask/nlin/1/average/warp.nii.gz Max : [0.524379, -0.171551, -1.82902] Min : [0, 0, 0] Mean : [0.00485879, 0.00330372, 0.00651986] Var : 0.144025 SD : 0.379506
output-nomask/nlin/2/average/warp.nii.gz Max : [0.0483741, -1.50557, -0.786354] Min : [0, 0, 0] Mean : [0.00429884, 0.00978256, -0.0275228] Var : 0.112271 SD : 0.335069
output-nomask/nlin/3/average/warp.nii.gz Max : [0.0137019, 0.818598, 1.36855] Min : [0, 0, 0] Mean : [0.00558075, 0.0130436, -0.0325147] Var : 0.0978148 SD : 0.312754
output-nomask/nlin/4/average/warp.nii.gz Max : [0.0300689, 0.681672, 1.44129] Min : [0, 0, 0] Mean : [0.00549877, 0.0128086, -0.0381549] Var : 0.09318 SD : 0.305254
output-nomask/nlin/5/average/warp.nii.gz Max : [0.0117067, -1.47112, -0.706812] Min : [0, 0, 0] Mean : [0.0042592, 0.0107426, -0.0350676] Var : 0.0919674 SD : 0.303261
output-nomask/nlin/6/average/warp.nii.gz Max : [0.0282236, -1.47456, -0.691695] Min : [0, 0, 0] Mean : [0.00518349, 0.0139387, -0.0355397] Var : 0.0914038 SD : 0.302331
output-nomask/nlin/7/average/warp.nii.gz Max : [0.0104112, 0.545444, 1.50518] Min : [0, 0, 0] Mean : [0.00504145, 0.0161665, -0.0391797] Var : 0.0878808 SD : 0.296447
# With absolute value
$ for file in output-*/nlin/*/average/warp.nii.gz; do MeasureMinMaxMean 3 ${file} test 1; done
output-extracted/nlin/0/average/warp.nii.gz Max : [0.452693, 1.62745, 1.50573] Min : [0, 0, 0] Mean : [0.0770505, 0.0901343, 0.12002] Var : 0.0811714 SD : 0.284906
output-extracted/nlin/1/average/warp.nii.gz Max : [0.298802, 1.08201, 1.33526] Min : [0, 0, 0] Mean : [0.0908737, 0.0850739, 0.123449] Var : 0.0562271 SD : 0.237123
output-extracted/nlin/2/average/warp.nii.gz Max : [0.716053, 0.894531, 0.422317] Min : [0, 0, 0] Mean : [0.0908643, 0.0839575, 0.111157] Var : 0.0465689 SD : 0.215798
output-extracted/nlin/3/average/warp.nii.gz Max : [0.928942, 0.0651475, 0.640485] Min : [0, 0, 0] Mean : [0.0870578, 0.0810679, 0.107411] Var : 0.0430484 SD : 0.207481
output-extracted/nlin/4/average/warp.nii.gz Max : [0.946662, 0.309333, 0.415863] Min : [0, 0, 0] Mean : [0.0870158, 0.0808305, 0.105298] Var : 0.0418064 SD : 0.204466
output-extracted/nlin/5/average/warp.nii.gz Max : [0.477817, 0.790455, 0.37103] Min : [0, 0, 0] Mean : [0.0860199, 0.0805344, 0.108007] Var : 0.0422731 SD : 0.205604
output-extracted/nlin/6/average/warp.nii.gz Max : [0.293559, 0.846582, 0.422954] Min : [0, 0, 0] Mean : [0.0858992, 0.0804463, 0.107558] Var : 0.0420824 SD : 0.20514
output-extracted/nlin/7/average/warp.nii.gz Max : [0.373689, 0.863242, 0.382086] Min : [0, 0, 0] Mean : [0.0864566, 0.0819228, 0.107184] Var : 0.042243 SD : 0.205531
output-masked/nlin/0/average/warp.nii.gz Max : [2.03237, 0.195213, 2.69124] Min : [0, 0, 0] Mean : [0.112334, 0.129006, 0.138721] Var : 0.145459 SD : 0.381391
output-masked/nlin/1/average/warp.nii.gz Max : [0.702795, 0.144425, 1.24276] Min : [0, 0, 0] Mean : [0.0756843, 0.0816636, 0.0999252] Var : 0.0501987 SD : 0.224051
output-masked/nlin/2/average/warp.nii.gz Max : [0.695785, 0.341735, 1.01337] Min : [0, 0, 0] Mean : [0.0764229, 0.0774345, 0.0911686] Var : 0.0453501 SD : 0.212956
output-masked/nlin/3/average/warp.nii.gz Max : [0.683415, 0.312977, 0.815534] Min : [0, 0, 0] Mean : [0.0729807, 0.0755125, 0.0869062] Var : 0.042177 SD : 0.20537
output-masked/nlin/4/average/warp.nii.gz Max : [0.301654, 0.0261229, 0.988782] Min : [0, 0, 0] Mean : [0.0737875, 0.0758122, 0.0863296] Var : 0.042468 SD : 0.206078
output-masked/nlin/5/average/warp.nii.gz Max : [0.242506, 0.828573, 0.556414] Min : [0, 0, 0] Mean : [0.073792, 0.0745564, 0.0862215] Var : 0.0410939 SD : 0.202716
output-masked/nlin/6/average/warp.nii.gz Max : [0.241657, 0.8371, 0.569568] Min : [0, 0, 0] Mean : [0.0756904, 0.0758803, 0.0860068] Var : 0.0422286 SD : 0.205496
output-masked/nlin/7/average/warp.nii.gz Max : [0.241389, 0.833909, 0.511822] Min : [0, 0, 0] Mean : [0.0745037, 0.0744714, 0.0851825] Var : 0.0412264 SD : 0.203043
output-maskextract/nlin/0/average/warp.nii.gz Max : [0.85177, 2.93415, 0.903224] Min : [0, 0, 0] Mean : [0.13608, 0.149224, 0.168053] Var : 0.19469 SD : 0.441237
output-maskextract/nlin/1/average/warp.nii.gz Max : [0.221123, 1.09489, 1.51296] Min : [0, 0, 0] Mean : [0.0666285, 0.0677096, 0.0870134] Var : 0.0403211 SD : 0.200801
output-maskextract/nlin/2/average/warp.nii.gz Max : [0.712146, 0.800305, 0.589538] Min : [0, 0, 0] Mean : [0.0688172, 0.0679781, 0.0848793] Var : 0.0296257 SD : 0.172121
output-maskextract/nlin/3/average/warp.nii.gz Max : [0.209017, 0.00244299, 1.12015] Min : [0, 0, 0] Mean : [0.064197, 0.0641705, 0.0785009] Var : 0.0257463 SD : 0.160457
output-maskextract/nlin/4/average/warp.nii.gz Max : [0.992786, 0.110689, 0.655519] Min : [0, 0, 0] Mean : [0.0631287, 0.0614055, 0.0770684] Var : 0.0237526 SD : 0.154119
output-maskextract/nlin/5/average/warp.nii.gz Max : [0.444215, 0.784162, 0.467792] Min : [0, 0, 0] Mean : [0.0652842, 0.0626356, 0.0798926] Var : 0.0242462 SD : 0.155712
output-maskextract/nlin/6/average/warp.nii.gz Max : [0.520046, 0.932913, 0.190188] Min : [0, 0, 0] Mean : [0.0639951, 0.0632405, 0.0791947] Var : 0.0240439 SD : 0.155061
output-maskextract/nlin/7/average/warp.nii.gz Max : [0.597309, 0.812024, 0.205728] Min : [0, 0, 0] Mean : [0.0636612, 0.0609075, 0.0778701] Var : 0.0231562 SD : 0.152172
output-nomask/nlin/0/average/warp.nii.gz Max : [0.110179, 1.1609, 3.6875] Min : [0, 0, 0] Mean : [0.203072, 0.24299, 0.227043] Var : 0.301242 SD : 0.548855
output-nomask/nlin/1/average/warp.nii.gz Max : [0.524379, 0.171551, 1.82902] Min : [0, 0, 0] Mean : [0.106342, 0.150342, 0.143981] Var : 0.0902493 SD : 0.300415
output-nomask/nlin/2/average/warp.nii.gz Max : [0.0483741, 1.50557, 0.786354] Min : [0, 0, 0] Mean : [0.0959012, 0.135756, 0.133494] Var : 0.068305 SD : 0.261352
output-nomask/nlin/3/average/warp.nii.gz Max : [0.0137019, 0.818598, 1.36855] Min : [0, 0, 0] Mean : [0.0891824, 0.125525, 0.128763] Var : 0.0581905 SD : 0.241227
output-nomask/nlin/4/average/warp.nii.gz Max : [0.0300689, 0.681672, 1.44129] Min : [0, 0, 0] Mean : [0.0881574, 0.123003, 0.126079] Var : 0.055712 SD : 0.236034
output-nomask/nlin/5/average/warp.nii.gz Max : [0.0117067, 1.47112, 0.706812] Min : [0, 0, 0] Mean : [0.0875516, 0.121339, 0.125248] Var : 0.0550501 SD : 0.234628
output-nomask/nlin/6/average/warp.nii.gz Max : [0.0282236, 1.47456, 0.691695] Min : [0, 0, 0] Mean : [0.0869255, 0.120413, 0.125694] Var : 0.0548949 SD : 0.234297
output-nomask/nlin/7/average/warp.nii.gz Max : [0.0104112, 0.545444, 1.50518] Min : [0, 0, 0] Mean : [0.0863158, 0.118264, 0.12481] Var : 0.0528347 SD : 0.229858