本文整理匯總了Python中dipy.align.streamlinear.StreamlineLinearRegistration.optimize方法的典型用法代碼示例。如果您正苦於以下問題:Python StreamlineLinearRegistration.optimize方法的具體用法?Python StreamlineLinearRegistration.optimize怎麽用?Python StreamlineLinearRegistration.optimize使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類dipy.align.streamlinear.StreamlineLinearRegistration
的用法示例。
在下文中一共展示了StreamlineLinearRegistration.optimize方法的13個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: test_rigid_real_bundles
# 需要導入模塊: from dipy.align.streamlinear import StreamlineLinearRegistration [as 別名]
# 或者: from dipy.align.streamlinear.StreamlineLinearRegistration import optimize [as 別名]
def test_rigid_real_bundles():
bundle_initial = fornix_streamlines()[:20]
bundle, shift = center_streamlines(bundle_initial)
mat = compose_matrix44([0, 0, 20, 45., 0, 0])
bundle2 = transform_streamlines(bundle, mat)
bundle_sum_distance = BundleSumDistanceMatrixMetric()
srr = StreamlineLinearRegistration(bundle_sum_distance,
x0=np.zeros(6),
method='Powell')
new_bundle2 = srr.optimize(bundle, bundle2).transform(bundle2)
evaluate_convergence(bundle, new_bundle2)
bundle_min_distance = BundleMinDistanceMatrixMetric()
srr = StreamlineLinearRegistration(bundle_min_distance,
x0=np.zeros(6),
method='Powell')
new_bundle2 = srr.optimize(bundle, bundle2).transform(bundle2)
evaluate_convergence(bundle, new_bundle2)
assert_raises(ValueError, StreamlineLinearRegistration, method='Whatever')
示例2: test_cascade_of_optimizations
# 需要導入模塊: from dipy.align.streamlinear import StreamlineLinearRegistration [as 別名]
# 或者: from dipy.align.streamlinear.StreamlineLinearRegistration import optimize [as 別名]
def test_cascade_of_optimizations():
cingulum_bundles = two_cingulum_bundles()
cb1 = cingulum_bundles[0]
cb1 = set_number_of_points(cb1, 20)
test_x0 = np.array([10, 4, 3, 0, 20, 10, 1.5, 1.5, 1.5, 0., 0.2, 0])
cb2 = transform_streamlines(cingulum_bundles[0],
compose_matrix44(test_x0))
cb2 = set_number_of_points(cb2, 20)
print('first rigid')
slr = StreamlineLinearRegistration(x0=6)
slm = slr.optimize(cb1, cb2)
print('then similarity')
slr2 = StreamlineLinearRegistration(x0=7)
slm2 = slr2.optimize(cb1, cb2, slm.matrix)
print('then affine')
slr3 = StreamlineLinearRegistration(x0=12, options={'maxiter': 50})
slm3 = slr3.optimize(cb1, cb2, slm2.matrix)
assert_(slm2.fopt < slm.fopt)
assert_(slm3.fopt < slm2.fopt)
示例3: _register_neighb_to_model
# 需要導入模塊: from dipy.align.streamlinear import StreamlineLinearRegistration [as 別名]
# 或者: from dipy.align.streamlinear.StreamlineLinearRegistration import optimize [as 別名]
def _register_neighb_to_model(self, model_bundle, neighb_streamlines,
metric=None, x0=None, bounds=None,
select_model=400, select_target=600,
method='L-BFGS-B',
nb_pts=20, num_threads=None):
if self.verbose:
print('# Local SLR of neighb_streamlines to model')
t = time()
if metric is None or metric == 'symmetric':
metric = BundleMinDistanceMetric(num_threads=num_threads)
if metric == 'asymmetric':
metric = BundleMinDistanceAsymmetricMetric()
if metric == 'diagonal':
metric = BundleSumDistanceMatrixMetric()
if x0 is None:
x0 = 'similarity'
if bounds is None:
bounds = [(-30, 30), (-30, 30), (-30, 30),
(-45, 45), (-45, 45), (-45, 45), (0.8, 1.2)]
# TODO this can be speeded up by using directly the centroids
static = select_random_set_of_streamlines(model_bundle,
select_model, rng=self.rng)
moving = select_random_set_of_streamlines(neighb_streamlines,
select_target, rng=self.rng)
static = set_number_of_points(static, nb_pts)
moving = set_number_of_points(moving, nb_pts)
slr = StreamlineLinearRegistration(metric=metric, x0=x0,
bounds=bounds,
method=method)
slm = slr.optimize(static, moving)
transf_streamlines = neighb_streamlines.copy()
transf_streamlines._data = apply_affine(
slm.matrix, transf_streamlines._data)
transf_matrix = slm.matrix
slr_bmd = slm.fopt
slr_iterations = slm.iterations
if self.verbose:
print(' Square-root of BMD is %.3f' % (np.sqrt(slr_bmd),))
if slr_iterations is not None:
print(' Number of iterations %d' % (slr_iterations,))
print(' Matrix size {}'.format(slm.matrix.shape))
original = np.get_printoptions()
np.set_printoptions(3, suppress=True)
print(transf_matrix)
print(slm.xopt)
np.set_printoptions(**original)
print(' Duration %0.3f sec. \n' % (time() - t,))
return transf_streamlines, slr_bmd
示例4: test_affine_real_bundles
# 需要導入模塊: from dipy.align.streamlinear import StreamlineLinearRegistration [as 別名]
# 或者: from dipy.align.streamlinear.StreamlineLinearRegistration import optimize [as 別名]
def test_affine_real_bundles():
bundle_initial = fornix_streamlines()
bundle_initial, shift = center_streamlines(bundle_initial)
bundle = bundle_initial[:20]
xgold = [0, 4, 2, 0, 10, 10, 1.2, 1.1, 1., 0., 0.2, 0.]
mat = compose_matrix44(xgold)
bundle2 = transform_streamlines(bundle_initial[:20], mat)
x0 = np.array([0, 0, 0, 0, 0, 0, 1., 1., 1., 0, 0, 0])
x = 25
bounds = [(-x, x), (-x, x), (-x, x),
(-x, x), (-x, x), (-x, x),
(0.1, 1.5), (0.1, 1.5), (0.1, 1.5),
(-1, 1), (-1, 1), (-1, 1)]
options = {'maxcor': 10, 'ftol': 1e-7, 'gtol': 1e-5, 'eps': 1e-8}
metric = BundleMinDistanceMatrixMetric()
slr = StreamlineLinearRegistration(metric=metric,
x0=x0,
method='L-BFGS-B',
bounds=bounds,
verbose=True,
options=options)
slm = slr.optimize(bundle, bundle2)
new_bundle2 = slm.transform(bundle2)
slr2 = StreamlineLinearRegistration(metric=metric,
x0=x0,
method='Powell',
bounds=None,
verbose=True,
options=None)
slm2 = slr2.optimize(bundle, new_bundle2)
new_bundle2 = slm2.transform(new_bundle2)
evaluate_convergence(bundle, new_bundle2)
示例5: test_stream_rigid
# 需要導入模塊: from dipy.align.streamlinear import StreamlineLinearRegistration [as 別名]
# 或者: from dipy.align.streamlinear.StreamlineLinearRegistration import optimize [as 別名]
def test_stream_rigid():
static = fornix_streamlines()[:20]
moving = fornix_streamlines()[20:40]
static_center, shift = center_streamlines(static)
mat = compose_matrix44([0, 0, 0, 0, 40, 0])
moving = transform_streamlines(moving, mat)
srr = StreamlineLinearRegistration()
sr_params = srr.optimize(static, moving)
moved = transform_streamlines(moving, sr_params.matrix)
srr = StreamlineLinearRegistration(verbose=True)
srm = srr.optimize(static, moving)
moved2 = transform_streamlines(moving, srm.matrix)
moved3 = srm.transform(moving)
assert_array_almost_equal(moved[0], moved2[0], decimal=3)
assert_array_almost_equal(moved2[0], moved3[0], decimal=3)
示例6: test_evolution_of_previous_iterations
# 需要導入模塊: from dipy.align.streamlinear import StreamlineLinearRegistration [as 別名]
# 或者: from dipy.align.streamlinear.StreamlineLinearRegistration import optimize [as 別名]
def test_evolution_of_previous_iterations():
static = fornix_streamlines()[:20]
moving = fornix_streamlines()[:20]
moving = [m + np.array([10., 0., 0.]) for m in moving]
slr = StreamlineLinearRegistration(evolution=True)
from dipy.core.optimize import SCIPY_LESS_0_12
if not SCIPY_LESS_0_12:
slm = slr.optimize(static, moving)
assert_equal(len(slm.matrix_history), slm.iterations)
示例7: test_rigid_parallel_lines
# 需要導入模塊: from dipy.align.streamlinear import StreamlineLinearRegistration [as 別名]
# 或者: from dipy.align.streamlinear.StreamlineLinearRegistration import optimize [as 別名]
def test_rigid_parallel_lines():
bundle_initial = simulated_bundle()
bundle, shift = center_streamlines(bundle_initial)
mat = compose_matrix44([20, 0, 10, 0, 40, 0])
bundle2 = transform_streamlines(bundle, mat)
bundle_sum_distance = BundleSumDistanceMatrixMetric()
options = {'maxcor': 100, 'ftol': 1e-9, 'gtol': 1e-16, 'eps': 1e-3}
srr = StreamlineLinearRegistration(metric=bundle_sum_distance,
x0=np.zeros(6),
method='L-BFGS-B',
bounds=None,
options=options)
new_bundle2 = srr.optimize(bundle, bundle2).transform(bundle2)
evaluate_convergence(bundle, new_bundle2)
示例8: test_rigid_partial_real_bundles
# 需要導入模塊: from dipy.align.streamlinear import StreamlineLinearRegistration [as 別名]
# 或者: from dipy.align.streamlinear.StreamlineLinearRegistration import optimize [as 別名]
def test_rigid_partial_real_bundles():
static = fornix_streamlines()[:20]
moving = fornix_streamlines()[20:40]
static_center, shift = center_streamlines(static)
moving_center, shift2 = center_streamlines(moving)
print(shift2)
mat = compose_matrix(translate=np.array([0, 0, 0.]),
angles=np.deg2rad([40, 0, 0.]))
moved = transform_streamlines(moving_center, mat)
srr = StreamlineLinearRegistration()
srm = srr.optimize(static_center, moved)
print(srm.fopt)
print(srm.iterations)
print(srm.funcs)
moving_back = srm.transform(moved)
print(srm.matrix)
static_center = set_number_of_points(static_center, 100)
moving_center = set_number_of_points(moving_back, 100)
vol = np.zeros((100, 100, 100))
spts = np.concatenate(static_center, axis=0)
spts = np.round(spts).astype(np.int) + np.array([50, 50, 50])
mpts = np.concatenate(moving_center, axis=0)
mpts = np.round(mpts).astype(np.int) + np.array([50, 50, 50])
for index in spts:
i, j, k = index
vol[i, j, k] = 1
vol2 = np.zeros((100, 100, 100))
for index in mpts:
i, j, k = index
vol2[i, j, k] = 1
overlap = np.sum(np.logical_and(vol, vol2)) / float(np.sum(vol2))
assert_equal(overlap * 100 > 40, True)
示例9: streamline_registration
# 需要導入模塊: from dipy.align.streamlinear import StreamlineLinearRegistration [as 別名]
# 或者: from dipy.align.streamlinear.StreamlineLinearRegistration import optimize [as 別名]
def streamline_registration(moving, static, n_points=100,
native_resampled=False):
"""
Register two collections of streamlines ('bundles') to each other
Parameters
----------
moving, static : lists of 3 by n, or str
The two bundles to be registered. Given either as lists of arrays with
3D coordinates, or strings containing full paths to these files.
n_points : int, optional
How many points to resample to. Default: 100.
native_resampled : bool, optional
Whether to return the moving bundle in the original space, but
resampled in the static space to n_points.
Returns
-------
aligned : list
Streamlines from the moving group, moved to be closely matched to
the static group.
matrix : array (4, 4)
The affine transformation that takes us from 'moving' to 'static'
"""
# Load the streamlines, if you were given a file-name
if isinstance(moving, str):
moving = sut.read_trk(moving)
if isinstance(static, str):
static = sut.read_trk(static)
srr = StreamlineLinearRegistration()
srm = srr.optimize(static=set_number_of_points(static, n_points),
moving=set_number_of_points(moving, n_points))
aligned = srm.transform(moving)
if native_resampled:
aligned = set_number_of_points(aligned, n_points)
aligned = move_streamlines(aligned, np.linalg.inv(srm.matrix))
return aligned, srm.matrix
示例10: test_similarity_real_bundles
# 需要導入模塊: from dipy.align.streamlinear import StreamlineLinearRegistration [as 別名]
# 或者: from dipy.align.streamlinear.StreamlineLinearRegistration import optimize [as 別名]
def test_similarity_real_bundles():
bundle_initial = fornix_streamlines()
bundle_initial, shift = center_streamlines(bundle_initial)
bundle = bundle_initial[:20]
xgold = [0, 0, 10, 0, 0, 0, 1.5]
mat = compose_matrix44(xgold)
bundle2 = transform_streamlines(bundle_initial[:20], mat)
metric = BundleMinDistanceMatrixMetric()
x0 = np.array([0, 0, 0, 0, 0, 0, 1], 'f8')
slr = StreamlineLinearRegistration(metric=metric,
x0=x0,
method='Powell',
bounds=None,
verbose=False)
slm = slr.optimize(bundle, bundle2)
new_bundle2 = slm.transform(bundle2)
evaluate_convergence(bundle, new_bundle2)
示例11: set_number_of_points
# 需要導入模塊: from dipy.align.streamlinear import StreamlineLinearRegistration [as 別名]
# 或者: from dipy.align.streamlinear.StreamlineLinearRegistration import optimize [as 別名]
Here we will use 20 points. This step is not optional. Inputting streamlines
with different number of points will break the theoretical advantages of using
the SLR as explained in [Garyfallidis15]_.
"""
cb_subj1 = set_number_of_points(cb_subj1, 20)
cb_subj2 = set_number_of_points(cb_subj2, 20)
"""
Let's say now that we want to move the ``cb_subj2`` (moving) so that it can be
aligned with ``cb_subj1`` (static). Here is how this is done.
"""
srr = StreamlineLinearRegistration()
srm = srr.optimize(static=cb_subj1, moving=cb_subj2)
"""
After the optimization is finished we can apply the transformation to
``cb_subj2``.
"""
cb_subj2_aligned = srm.transform(cb_subj2)
def show_both_bundles(bundles, colors=None, show=False, fname=None):
ren = fvtk.ren()
ren.SetBackground(1.0, 1, 1)
for (i, bundle) in enumerate(bundles):
color = colors[i]
示例12: set_number_of_points
# 需要導入模塊: from dipy.align.streamlinear import StreamlineLinearRegistration [as 別名]
# 或者: from dipy.align.streamlinear.StreamlineLinearRegistration import optimize [as 別名]
ref_idx = data['ref_idx']
p_per_strm =20
ref_vec = set_number_of_points(data['streamlines'][ref_idx], p_per_strm)
srr = StreamlineLinearRegistration()
for i,strm in enumerate(data['streamlines']):
print 'registering %d/%d' % (i,len(data['file'])-1)
print '# streamlines = %d' %len(strm)
if len(strm) == 0 or i==ref_idx:
print 'skipping'
continue
mov_vec = set_number_of_points(strm, 20)
srm = srr.optimize(static=ref_vec, moving=mov_vec)
data['aligned_strms'].append(srm.transform(mov_vec))
from dipy.viz import fvtk
ren = fvtk.ren()
ren.SetBackground(1., 1, 1)
reflines = fvtk.streamtube(ref_vec, fvtk.colors.red, linewidth=0.2)
fvtk.add(ren, reflines)
for (i, bundle) in enumerate(data['aligned_strms']):
lines = fvtk.streamtube(bundle, np.random.rand(3), linewidth=0.1)
# lines.RotateX(-90)
# lines.RotateZ(90)
fvtk.add(ren, lines)
示例13: BundleMinDistance
# 需要導入模塊: from dipy.align.streamlinear import StreamlineLinearRegistration [as 別名]
# 或者: from dipy.align.streamlinear.StreamlineLinearRegistration import optimize [as 別名]
(0.5, 1.5), (0.5, 1.5), (0.5, 1.5),
(-1, 1), (-1, 1), (-1, 1)]
if not affine:
x0 = np.array([0, 0, 0, 0, 0, 0.])
#default is BundleMinDistanceFast, rigid and L-BFGS-B
metric = BundleMinDistance()
method = 'Powell'#L-BFGS-B'
bounds = None
#bounds = [(-20, 20), (-20, 20), (-20, 20),
# (-30, 30), (-30, 30), (-30, 30)]
srr = StreamlineLinearRegistration(metric=metric, x0=x0, bounds=bounds)
srm = srr.optimize(static=t_tract_tmp, moving=s_tract_tmp)
"""
After the optimization is finished we can apply the learned transformation to
``s_tract``.
"""
s_tract_aligned = srm.transform(s_tract)
save_tracks_dpy(s_tract_aligned, out_file)
print 'Saved: ' , out_file
def show_both_bundles(bundles, colors=None, show=False, fname=None):
ren = fvtk.ren()