예제 #1
0
 def test_markers_rotate_by_angle_none_angle(self):
     markers = MarkersList()
     try:
         markers.rotate_by_angle(None, None, None)
         self.fail('Expected InvalidAngleError')
     except InvalidAngleError:
         pass
    def test_write_markers_success(self):
        temp_dir = tempfile.mkdtemp()
        try:
            fid_file = os.path.join(temp_dir, 'foo')
            mwriter = MarkersToIMODFiducialFileWriter(fid_file)

            fakepoint2model = os.path.join(temp_dir, 'model2point.py')

            f = open(fakepoint2model, 'w')
            f.write('#!/usr/bin/env python\n\n')
            f.write('import sys\n')
            f.write('f = open(sys.argv[3], "r")\n')
            f.write('data = f.read()\n')
            f.write('f.close()\n')
            f.write('f = open(sys.argv[4], "w")\n')
            f.write('f.write(data)\n')
            f.write('f.close()\n')
            f.flush()
            f.close()
            os.chmod(fakepoint2model, stat.S_IRWXU)

            mwriter.set_point2model_binary(fakepoint2model)
            mlist = MarkersList()
            mlist.add_marker(1, 4, 5, 6)
            mwriter.write_markers(mlist)

            f = open(fid_file, 'r')
            data = f.read()
            self.assertEqual(data, '     1    4.000000    5.000000    '
                                   '6.000000\n')
            f.close()

        finally:
            shutil.rmtree(temp_dir)
    def test_write_markers_no_fiducial_file(self):

        mwriter = MarkersToIMODFiducialFileWriter(None)
        mlist = MarkersList()
        mlist.add_marker(1, 4, 5, 6)
        try:
            mwriter.write_markers(mlist)
            self.fail('Expected UnsetFiducialFileError')
        except UnsetFiducialFileError as e:
            self.assertEqual(str(e), 'Fiducial File is set to None')
예제 #4
0
    def test_rotate_markers_file_outfile_set_to_none(self):
        temp_dir = tempfile.mkdtemp()
        try:
            markerfile = os.path.join(temp_dir, '3Dmarkers.txt')
            markers = MarkersList()
            markers.add_marker(1, 2, 3, 4)
            markers.write_markers_to_file(markerfile)

            theargs = Parameters()
            theargs.outfile = None
            theargs.angle = 90
            theargs.width = 10
            theargs.height = 10
            theargs.markerfile = markerfile
            rotate_3dmarkers.rotate_markers_file(theargs)
            origfile = markerfile + '.orig'
            self.assertTrue(os.path.isfile(origfile))
            fac = MarkersFrom3DMarkersFileFactory(origfile)
            markers = fac.get_markerslist()
            m = markers.get_markers()[0]
            self.assertEqual(m.get_index(), 1)
            self.assertEqual(m.get_x(), 2)
            self.assertEqual(m.get_y(), 3)
            self.assertEqual(m.get_z(), 4)

            self.assertTrue(os.path.isfile(markerfile))
            fac = MarkersFrom3DMarkersFileFactory(markerfile)
            markers = fac.get_markerslist()
            m = markers.get_markers()[0]
            self.assertEqual(m.get_index(), 1)
            self.assertEqual(m.get_x(), 7)
            self.assertEqual(m.get_y(), 2)
            self.assertEqual(m.get_z(), 4)
        finally:
            shutil.rmtree(temp_dir)
예제 #5
0
    def test_filtermarkers_one_markerlist(self):
        mlist = MarkersList()
        mlist.add_marker(1, 2, 3, 4)
        mlist.add_marker(1, 2, 3, 5)
        mlist.add_marker(1, 2, 3, 6)
        thelist = []
        thelist.append(mlist)
        filt = CommonByIndexMarkersListFilter(thelist)

        com, uni = filt.filterMarkers(mlist)

        self.assertTrue(len(uni.get_markers()) == 0)
        self.assertTrue(len(com.get_markers()) == 3)
        m = com.get_markers()[0]
        self.assertEqual(m.get_index(), 1)
        self.assertEqual(m.get_x(), 2)
        self.assertEqual(m.get_y(), 3)
        self.assertEqual(m.get_z(), 4)
예제 #6
0
 def test_markers_rotate_by_angle_with_offset(self):
     markers = MarkersList()
     markers.add_marker(1, 1, 1, 5)
     markers.rotate_by_angle(90, 5, 5)
     m = markers.get_markers()[0]
     self.assertEqual(m.get_index(), 1)
     self.assertTrue(math.fabs(m.get_x() - 9) < 0.0001)
     self.assertTrue(math.fabs(m.get_y() - 1) < 0.0001)
     self.assertEqual(m.get_z(), 5)
예제 #7
0
 def test_markers_rotate_by_angle_none_offset(self):
     markers = MarkersList()
     markers.add_marker(1, 1, 0, 2)
     markers.rotate_by_angle(90, None, None)
     m = markers.get_markers()[0]
     self.assertEqual(m.get_index(), 1)
     self.assertTrue(m.get_x() < 0.00001)
     self.assertEqual(m.get_y(), 1)
     self.assertEqual(m.get_z(), 2)
예제 #8
0
    def test_markers_shift(self):
        markers = MarkersList()
        markers.shift_markers(10, 20, 30)
        self.assertEqual(len(markers.get_markers()), 0)
        markers.add_marker(1, 2, 3, 4)
        markers.shift_markers(10, 20, 30)
        m = markers.get_markers()[0]
        self.assertEqual(m.get_index(), 1)
        self.assertEqual(m.get_x(), 12)
        self.assertEqual(m.get_y(), 23)
        self.assertEqual(m.get_z(), 34)

        markers.add_marker(2, 3, 4, 5)
        markers.shift_markers(10, 20, 30)

        m = markers.get_markers()[0]
        self.assertEqual(m.get_index(), 1)
        self.assertEqual(m.get_x(), 22)
        self.assertEqual(m.get_y(), 43)
        self.assertEqual(m.get_z(), 64)

        m = markers.get_markers()[1]
        self.assertEqual(m.get_index(), 2)
        self.assertEqual(m.get_x(), 13)
        self.assertEqual(m.get_y(), 24)
        self.assertEqual(m.get_z(), 35)

        markers.shift_markers(0, 0, 0)
        m = markers.get_markers()[0]
        self.assertEqual(m.get_index(), 1)
        self.assertEqual(m.get_x(), 22)
        self.assertEqual(m.get_y(), 43)
        self.assertEqual(m.get_z(), 64)

        m = markers.get_markers()[1]
        self.assertEqual(m.get_index(), 2)
        self.assertEqual(m.get_x(), 13)
        self.assertEqual(m.get_y(), 24)
        self.assertEqual(m.get_z(), 35)

        markers.shift_markers(-10, -20, -30)
        m = markers.get_markers()[0]
        self.assertEqual(m.get_index(), 1)
        self.assertEqual(m.get_x(), 12)
        self.assertEqual(m.get_y(), 23)
        self.assertEqual(m.get_z(), 34)

        m = markers.get_markers()[1]
        self.assertEqual(m.get_index(), 2)
        self.assertEqual(m.get_x(), 3)
        self.assertEqual(m.get_y(), 4)
        self.assertEqual(m.get_z(), 5)
예제 #9
0
    def test_filtermarkers_three_list_one_missing_markerlist(self):
        mlist1 = MarkersList()
        mlist1.add_marker(1, 2, 3, 4)
        mlist1.add_marker(1, 2, 3, 5)
        mlist1.add_marker(2, 2, 3, 6)
        mlist1.add_marker(4, 2, 3, 6)
        mlist1.add_marker(4, 2, 3, 7)

        thelist = []
        thelist.append(mlist1)

        mlist2 = MarkersList()
        mlist2.add_marker(1, 2, 3, 4)
        mlist2.add_marker(1, 2, 3, 5)
        mlist2.add_marker(3, 2, 3, 6)
        mlist2.add_marker(4, 2, 3, 6)
        mlist2.add_marker(4, 2, 3, 7)
        thelist.append(mlist2)

        mlist3 = MarkersList()
        mlist3.add_marker(1, 2, 3, 4)
        mlist3.add_marker(1, 2, 3, 5)
        mlist3.add_marker(3, 2, 3, 6)
        mlist3.add_marker(4, 2, 3, 6)
        mlist3.add_marker(5, 1, 1, 1)
        thelist.append(mlist3)

        filt = CommonByIndexMarkersListFilter(thelist)

        com, uni = filt.filterMarkers(mlist1)

        self.assertTrue(len(uni.get_markers()) == 1)
        self.assertTrue(len(com.get_markers()) == 4)

        self.assertEqual(uni.get_markers()[0].get_index(), 2)
        self.assertEqual(uni.get_markers()[0].get_z(), 6)

        com, uni = filt.filterMarkers(mlist2)

        self.assertTrue(len(uni.get_markers()) == 1)
        self.assertTrue(len(com.get_markers()) == 4)

        self.assertEqual(uni.get_markers()[0].get_index(), 3)
        self.assertEqual(uni.get_markers()[0].get_y(), 3)

        com, uni = filt.filterMarkers(mlist3)

        self.assertTrue(len(uni.get_markers()) == 2)
        self.assertTrue(len(com.get_markers()) == 3)

        self.assertEqual(uni.get_markers()[0].get_index(), 3)
        self.assertEqual(uni.get_markers()[0].get_y(), 3)
        self.assertEqual(uni.get_markers()[1].get_index(), 5)
        self.assertEqual(uni.get_markers()[1].get_y(), 1)
예제 #10
0
    def test_markers_add_get_clear(self):
        markers = MarkersList()
        self.assertEqual(len(markers.get_markers()), 0)
        markers.add_marker(1, 2, 3, 4)
        self.assertEqual(len(markers.get_markers()), 1)
        m = markers.get_markers()[0]
        self.assertEqual(m.get_index(), 1)
        self.assertEqual(m.get_x(), 2)
        self.assertEqual(m.get_y(), 3)
        self.assertEqual(m.get_z(), 4)

        markers.add_marker(2, 3, 4, 5)
        self.assertEqual(len(markers.get_markers()), 2)
        m = markers.get_markers()[1]
        self.assertEqual(m.get_index(), 2)
        self.assertEqual(m.get_x(), 3)
        self.assertEqual(m.get_y(), 4)
        self.assertEqual(m.get_z(), 5)

        markers.clear_markers()
        self.assertEqual(len(markers.get_markers()), 0)
예제 #11
0
    def test_markers_write_markers_to_file(self):
        temp_dir = tempfile.mkdtemp()
        try:
            # invalid filename
            markers = MarkersList()
            try:
                markers.write_markers_to_file(temp_dir)
                self.fail('Expected IOError')
            except IOError:
                pass

            emptyfile = os.path.join(temp_dir, 'emptyfile')
            # empty markers object
            markers.write_markers_to_file(emptyfile)
            self.assertTrue(os.path.isfile(emptyfile))
            self.assertEqual(os.path.getsize(emptyfile), 0)

            # write 1 marker
            markers.add_marker(1, 2, 3, 4)
            one = os.path.join(temp_dir, 'one')
            markers.write_markers_to_file(one)
            self.assertTrue(os.path.isfile(one))
            f = open(one, 'r')
            line = f.readline()
            self.assertEqual(line,
                             '     1    2.000000    3.000000    4.000000\n')
            f.close()

            # write 2 markers
            markers.add_marker(2, 3, 4, 5)
            two = os.path.join(temp_dir, 'two')
            markers.write_markers_to_file(two)
            self.assertTrue(os.path.isfile(two))
            f = open(two, 'r')
            line = f.readline()
            self.assertEqual(line,
                             '     1    2.000000    3.000000    4.000000\n')
            line = f.readline()
            self.assertEqual(line,
                             '     2    3.000000    4.000000    5.000000\n')
            f.close()
        finally:
            shutil.rmtree(temp_dir)
예제 #12
0
    def test_markers_rotate_by_angle_zero_offset(self):
        markers = MarkersList()

        markers.add_marker(1, 1, 0, 2)
        markers.rotate_by_angle(90, 0, 0)
        m = markers.get_markers()[0]
        self.assertEqual(m.get_index(), 1)
        self.assertTrue(m.get_x() < 0.00001)
        self.assertEqual(m.get_y(), 1)
        self.assertEqual(m.get_z(), 2)

        # this is does nothing
        markers.rotate_by_angle(0, 0, 0)

        markers.add_marker(2, 1, 0, 3)
        markers.rotate_by_angle(90, 0, 0)
        m = markers.get_markers()[0]
        self.assertEqual(m.get_index(), 1)
        self.assertTrue(m.get_x() < 0.00001)
        self.assertTrue(m.get_y() < 0.00001)
        self.assertEqual(m.get_z(), 2)

        m = markers.get_markers()[1]
        self.assertEqual(m.get_index(), 2)
        self.assertTrue(m.get_x() < 0.00001)
        self.assertEqual(m.get_y(), 1)
        self.assertEqual(m.get_z(), 3)