@@ -57,7 +57,8 @@ def setup():
5757 DATA ['simple_tractogram' ] = Tractogram (DATA ['streamlines' ])
5858 DATA ['tractogram' ] = Tractogram (DATA ['streamlines' ],
5959 DATA ['data_per_streamline' ],
60- DATA ['data_per_point' ])
60+ DATA ['data_per_point' ],
61+ affine_to_rasmm = np .eye (4 ))
6162
6263 DATA ['streamlines_func' ] = lambda : (e for e in DATA ['streamlines' ])
6364 fa_func = lambda : (e for e in DATA ['fa' ])
@@ -74,7 +75,8 @@ def setup():
7475
7576 DATA ['lazy_tractogram' ] = LazyTractogram (DATA ['streamlines_func' ],
7677 DATA ['data_per_streamline_func' ],
77- DATA ['data_per_point_func' ])
78+ DATA ['data_per_point_func' ],
79+ affine_to_rasmm = np .eye (4 ))
7880
7981
8082def check_tractogram_item (tractogram_item ,
@@ -276,6 +278,7 @@ def test_tractogram_creation(self):
276278 # Create an empty tractogram.
277279 tractogram = Tractogram ()
278280 check_tractogram (tractogram )
281+ assert_true (tractogram .affine_to_rasmm is None )
279282
280283 # Create a tractogram with only streamlines
281284 tractogram = Tractogram (streamlines = DATA ['streamlines' ])
@@ -284,7 +287,7 @@ def test_tractogram_creation(self):
284287 # Create a tractogram with a given affine_to_rasmm.
285288 affine = np .diag ([1 , 2 , 3 , 1 ])
286289 tractogram = Tractogram (affine_to_rasmm = affine )
287- assert_array_equal (tractogram .get_affine_to_rasmm () , affine )
290+ assert_array_equal (tractogram .affine_to_rasmm , affine )
288291
289292 # Create a tractogram with streamlines and other data.
290293 tractogram = Tractogram (DATA ['streamlines' ],
@@ -447,9 +450,10 @@ def test_tractogram_apply_affine(self):
447450 streamlines = [s * scaling for s in DATA ['streamlines' ]],
448451 data_per_streamline = DATA ['data_per_streamline' ],
449452 data_per_point = DATA ['data_per_point' ])
450- assert_array_equal (transformed_tractogram .get_affine_to_rasmm () ,
453+ assert_array_equal (transformed_tractogram .affine_to_rasmm ,
451454 np .dot (np .eye (4 ), np .linalg .inv (affine )))
452- # Make sure streamlines of the original tractogram have not been modified.
455+ # Make sure streamlines of the original tractogram have not been
456+ # modified.
453457 assert_arrays_equal (tractogram .streamlines , DATA ['streamlines' ])
454458
455459 # Apply the affine to the streamlines in-place.
@@ -462,7 +466,7 @@ def test_tractogram_apply_affine(self):
462466
463467 # Apply affine again and check the affine_to_rasmm.
464468 transformed_tractogram = tractogram .apply_affine (affine )
465- assert_array_equal (transformed_tractogram .get_affine_to_rasmm () ,
469+ assert_array_equal (transformed_tractogram .affine_to_rasmm ,
466470 np .dot (np .eye (4 ), np .dot (np .linalg .inv (affine ),
467471 np .linalg .inv (affine ))))
468472
@@ -474,10 +478,16 @@ def test_tractogram_apply_affine(self):
474478
475479 tractogram .apply_affine (affine )
476480 tractogram .apply_affine (np .linalg .inv (affine ))
477- assert_array_almost_equal (tractogram .get_affine_to_rasmm () , np .eye (4 ))
481+ assert_array_almost_equal (tractogram .affine_to_rasmm , np .eye (4 ))
478482 for s1 , s2 in zip (tractogram .streamlines , DATA ['streamlines' ]):
479483 assert_array_almost_equal (s1 , s2 )
480484
485+ # Test removing affine_to_rasmm
486+ tractogram = DATA ['tractogram' ].copy ()
487+ tractogram .affine_to_rasmm = None
488+ tractogram .apply_affine (affine )
489+ assert_true (tractogram .affine_to_rasmm is None )
490+
481491 def test_tractogram_to_world (self ):
482492 tractogram = DATA ['tractogram' ].copy ()
483493 affine = np .random .RandomState (1234 ).randn (4 , 4 )
@@ -486,30 +496,35 @@ def test_tractogram_to_world(self):
486496 # Apply the affine to the streamlines, then bring them back
487497 # to world space in a lazy manner.
488498 transformed_tractogram = tractogram .apply_affine (affine )
489- assert_array_equal (transformed_tractogram .get_affine_to_rasmm () ,
499+ assert_array_equal (transformed_tractogram .affine_to_rasmm ,
490500 np .linalg .inv (affine ))
491501
492502 tractogram_world = transformed_tractogram .to_world (lazy = True )
493503 assert_true (type (tractogram_world ) is LazyTractogram )
494- assert_array_almost_equal (tractogram_world .get_affine_to_rasmm () ,
504+ assert_array_almost_equal (tractogram_world .affine_to_rasmm ,
495505 np .eye (4 ))
496506 for s1 , s2 in zip (tractogram_world .streamlines , DATA ['streamlines' ]):
497507 assert_array_almost_equal (s1 , s2 )
498508
499509 # Bring them back streamlines to world space in a in-place manner.
500510 tractogram_world = transformed_tractogram .to_world ()
501511 assert_true (tractogram_world is tractogram )
502- assert_array_almost_equal (tractogram .get_affine_to_rasmm () , np .eye (4 ))
512+ assert_array_almost_equal (tractogram .affine_to_rasmm , np .eye (4 ))
503513 for s1 , s2 in zip (tractogram .streamlines , DATA ['streamlines' ]):
504514 assert_array_almost_equal (s1 , s2 )
505515
506516 # Calling to_world twice should do nothing.
507517 tractogram_world2 = transformed_tractogram .to_world ()
508518 assert_true (tractogram_world2 is tractogram )
509- assert_array_almost_equal (tractogram .get_affine_to_rasmm () , np .eye (4 ))
519+ assert_array_almost_equal (tractogram .affine_to_rasmm , np .eye (4 ))
510520 for s1 , s2 in zip (tractogram .streamlines , DATA ['streamlines' ]):
511521 assert_array_almost_equal (s1 , s2 )
512522
523+ # Calling to_world when affine_to_rasmm is None should fail.
524+ tractogram = DATA ['tractogram' ].copy ()
525+ tractogram .affine_to_rasmm = None
526+ assert_raises (ValueError , tractogram .to_world )
527+
513528
514529class TestLazyTractogram (unittest .TestCase ):
515530
@@ -534,6 +549,7 @@ def test_lazy_tractogram_creation(self):
534549 # Empty `LazyTractogram`
535550 tractogram = LazyTractogram ()
536551 check_tractogram (tractogram )
552+ assert_true (tractogram .affine_to_rasmm is None )
537553
538554 # Create tractogram with streamlines and other data
539555 tractogram = LazyTractogram (DATA ['streamlines_func' ],
@@ -627,9 +643,9 @@ def test_lazy_tractogram_apply_affine(self):
627643 transformed_tractogram = tractogram .apply_affine (affine )
628644 assert_true (transformed_tractogram is not tractogram )
629645 assert_array_equal (tractogram ._affine_to_apply , np .eye (4 ))
630- assert_array_equal (tractogram .get_affine_to_rasmm () , np .eye (4 ))
646+ assert_array_equal (tractogram .affine_to_rasmm , np .eye (4 ))
631647 assert_array_equal (transformed_tractogram ._affine_to_apply , affine )
632- assert_array_equal (transformed_tractogram .get_affine_to_rasmm () ,
648+ assert_array_equal (transformed_tractogram .affine_to_rasmm ,
633649 np .dot (np .eye (4 ), np .linalg .inv (affine )))
634650 check_tractogram (transformed_tractogram ,
635651 streamlines = [s * scaling for s in DATA ['streamlines' ]],
@@ -640,10 +656,15 @@ def test_lazy_tractogram_apply_affine(self):
640656 transformed_tractogram = transformed_tractogram .apply_affine (affine )
641657 assert_array_equal (transformed_tractogram ._affine_to_apply ,
642658 np .dot (affine , affine ))
643- assert_array_equal (transformed_tractogram .get_affine_to_rasmm () ,
659+ assert_array_equal (transformed_tractogram .affine_to_rasmm ,
644660 np .dot (np .eye (4 ), np .dot (np .linalg .inv (affine ),
645661 np .linalg .inv (affine ))))
646662
663+ # Calling to_world when affine_to_rasmm is None should fail.
664+ tractogram = DATA ['lazy_tractogram' ].copy ()
665+ tractogram .affine_to_rasmm = None
666+ assert_raises (ValueError , tractogram .to_world )
667+
647668 def test_tractogram_to_world (self ):
648669 tractogram = DATA ['lazy_tractogram' ].copy ()
649670 affine = np .random .RandomState (1234 ).randn (4 , 4 )
@@ -652,22 +673,27 @@ def test_tractogram_to_world(self):
652673 # Apply the affine to the streamlines, then bring them back
653674 # to world space in a lazy manner.
654675 transformed_tractogram = tractogram .apply_affine (affine )
655- assert_array_equal (transformed_tractogram .get_affine_to_rasmm () ,
676+ assert_array_equal (transformed_tractogram .affine_to_rasmm ,
656677 np .linalg .inv (affine ))
657678
658679 tractogram_world = transformed_tractogram .to_world ()
659680 assert_true (tractogram_world is not transformed_tractogram )
660- assert_array_almost_equal (tractogram_world .get_affine_to_rasmm () ,
681+ assert_array_almost_equal (tractogram_world .affine_to_rasmm ,
661682 np .eye (4 ))
662683 for s1 , s2 in zip (tractogram_world .streamlines , DATA ['streamlines' ]):
663684 assert_array_almost_equal (s1 , s2 )
664685
665686 # Calling to_world twice should do nothing.
666687 tractogram_world = tractogram_world .to_world ()
667- assert_array_almost_equal (tractogram_world .get_affine_to_rasmm () , np .eye (4 ))
688+ assert_array_almost_equal (tractogram_world .affine_to_rasmm , np .eye (4 ))
668689 for s1 , s2 in zip (tractogram_world .streamlines , DATA ['streamlines' ]):
669690 assert_array_almost_equal (s1 , s2 )
670691
692+ # Calling to_world when affine_to_rasmm is None should fail.
693+ tractogram = DATA ['lazy_tractogram' ].copy ()
694+ tractogram .affine_to_rasmm = None
695+ assert_raises (ValueError , tractogram .to_world )
696+
671697 def test_lazy_tractogram_copy (self ):
672698 # Create a copy of the lazy tractogram.
673699 tractogram = DATA ['lazy_tractogram' ].copy ()
0 commit comments