예제 #1
0
    def test_load_impulse_outputs(self):
        """
        Test loading multiple signal files in [t sig1 sig2 ...] format.

        Creates signals, saves them, loads them, tests are equal to the
        originals.
        """
        signal_path = join(self.test_dir, 'file%03d.txt')
        for num_paths in [1, 4]:
            for num_signals in [1, 2, 4, 5]:
                for num_time_steps in [1, 10, 100]:
                    all_signals_true = np.random.random(
                        (num_paths, num_time_steps, num_signals))
                    # Time steps need not be sequential
                    time_values_true = np.random.random(num_time_steps)

                    signal_paths = []
                    # Save signals to file
                    for path_num in range(num_paths):
                        signal_paths.append(signal_path % path_num)
                        data_to_save = np.concatenate( \
                          (time_values_true.reshape(len(time_values_true), 1),
                          all_signals_true[path_num]), axis=1)
                        util.save_array_text(data_to_save,
                                             signal_path % path_num)

                    time_values, all_signals = util.load_multiple_signals(
                        signal_paths)
                    np.testing.assert_allclose(all_signals, all_signals_true)
                    np.testing.assert_allclose(time_values, time_values_true)
예제 #2
0
    def test_load_save_array_text(self):
        """Test that can read/write text arrays"""
        rows = [1, 5, 20]
        cols = [1, 4, 5, 23]
        array_path = join(self.test_dir, 'test_array.txt')
        delimiters = [',', ' ', ';']
        for delimiter in delimiters:
            for is_complex in [False, True]:
                for squeeze in [False, True]:
                    for num_rows in rows:
                        for num_cols in cols:

                            # Generate real and complex arrays
                            array = np.random.random((num_rows, num_cols))
                            if is_complex:
                                array = array + (1j * np.random.random(
                                    (num_rows, num_cols)))

                            # Check row and column vectors, no squeeze (1, 1)
                            if squeeze and (num_rows > 1 or num_cols > 1):
                                array = np.squeeze(array)
                            util.save_array_text(array,
                                                 array_path,
                                                 delimiter=delimiter)
                            array_read = util.load_array_text(
                                array_path,
                                delimiter=delimiter,
                                is_complex=is_complex)
                            if squeeze:
                                array_read = np.squeeze(array_read)
                            np.testing.assert_equal(array_read, array)
 def test_load_save_array_text(self):
     """Test that can read/write text matrices"""
     #tol = 1e-8
     rows = [1, 5, 20]
     cols = [1, 4, 5, 23]
     mat_path = join(self.test_dir, 'test_matrix.txt')
     delimiters = [',', ' ', ';']
     for delimiter in delimiters:
         for is_complex in [False, True]:
             for squeeze in [False, True]:
                 for num_rows in rows:
                     for num_cols in cols:
                         mat_real = np.random.random((num_rows, num_cols))
                         if is_complex:
                             mat_imag = np.random.random(
                                 (num_rows, num_cols))
                             mat = mat_real + 1J * mat_imag
                         else:
                             mat = mat_real
                         # Check row and column vectors, no squeeze (1,1)
                         if squeeze and (num_rows > 1 or num_cols > 1):
                             mat = np.squeeze(mat)
                         util.save_array_text(mat,
                                              mat_path,
                                              delimiter=delimiter)
                         mat_read = util.load_array_text(
                             mat_path,
                             delimiter=delimiter,
                             is_complex=is_complex)
                         if squeeze:
                             mat_read = np.squeeze(mat_read)
                         np.testing.assert_allclose(mat_read,
                                                    mat)  #,rtol=tol)
예제 #4
0
파일: testutil.py 프로젝트: cwrowley/modred
 def test_load_impulse_outputs(self):
     """
     Test loading multiple signal files in [t sig1 sig2 ...] format.
     
     Creates signals, saves them, loads them, tests are equal to the
     originals.
     """
     signal_path = join(self.test_dir, 'file%03d.txt')
     for num_paths in [1, 4]:
         for num_signals in [1, 2, 4, 5]:
             for num_time_steps in [1, 10, 100]:
                 all_signals_true = np.random.random((num_paths,
                     num_time_steps, num_signals))
                 # Time steps need not be sequential
                 time_values_true = np.random.random(num_time_steps)
                 
                 signal_paths = []
                 # Save signals to file
                 for path_num in range(num_paths):
                     signal_paths.append(signal_path%path_num)
                     data_to_save = np.concatenate( \
                       (time_values_true.reshape(len(time_values_true), 1),
                       all_signals_true[path_num]), axis=1)
                     util.save_array_text(data_to_save, signal_path%path_num)
                 
                 time_values, all_signals = util.load_multiple_signals(
                     signal_paths)
                 np.testing.assert_allclose(all_signals, all_signals_true)
                 np.testing.assert_allclose(time_values, time_values_true)
예제 #5
0
파일: testutil.py 프로젝트: cwrowley/modred
 def test_load_save_array_text(self):
     """Test that can read/write text matrices"""
     #tol = 1e-8
     rows = [1, 5, 20]
     cols = [1, 4, 5, 23]
     mat_path = join(self.test_dir, 'test_matrix.txt')
     delimiters = [',', ' ', ';']
     for delimiter in delimiters:
         for is_complex in [False, True]:
             for squeeze in [False, True]:
                 for num_rows in rows:
                     for num_cols in cols:
                         mat_real = np.random.random((num_rows, num_cols))
                         if is_complex:
                             mat_imag = np.random.random((num_rows, num_cols))
                             mat = mat_real + 1J*mat_imag
                         else:
                             mat = mat_real
                         # Check row and column vectors, no squeeze (1,1)
                         if squeeze and (num_rows > 1 or num_cols > 1):
                             mat = np.squeeze(mat)
                         util.save_array_text(mat, mat_path, delimiter=delimiter)
                         mat_read = util.load_array_text(mat_path, delimiter=delimiter,
                             is_complex=is_complex)
                         if squeeze:
                             mat_read = np.squeeze(mat_read)
                         np.testing.assert_allclose(mat_read, mat)#,rtol=tol)
예제 #6
0
파일: testutil.py 프로젝트: belson17/modred
    def test_load_save_array_text(self):
        """Test that can read/write text arrays"""
        rows = [1, 5, 20]
        cols = [1, 4, 5, 23]
        array_path = join(self.test_dir, 'test_array.txt')
        delimiters = [',', ' ', ';']
        for delimiter in delimiters:
            for is_complex in [False, True]:
                for squeeze in [False, True]:
                    for num_rows in rows:
                        for num_cols in cols:

                            # Generate real and complex arrays
                            array = np.random.random((num_rows, num_cols))
                            if is_complex:
                                array = array + (
                                    1j * np.random.random((num_rows, num_cols)))

                            # Check row and column vectors, no squeeze (1, 1)
                            if squeeze and (num_rows > 1 or num_cols > 1):
                                array = np.squeeze(array)
                            util.save_array_text(
                                array, array_path, delimiter=delimiter)
                            array_read = util.load_array_text(
                                array_path, delimiter=delimiter,
                                is_complex=is_complex)
                            if squeeze:
                                array_read = np.squeeze(array_read)
                            np.testing.assert_equal(array_read, array)
예제 #7
0
    def test_compute_inner_product_mat_types(self):
        class ArrayTextComplexHandle(V.VecHandleArrayText):
            def get(self):
                return (1 + 1j)*V.VecHandleArrayText.get(self)
        
        num_row_vecs = 4
        num_col_vecs = 6
        num_states = 7

        row_vec_path = join(self.test_dir, 'row_vec_%03d.txt')
        col_vec_path = join(self.test_dir, 'col_vec_%03d.txt')
        
        # generate vecs and save to file
        row_vec_array = np.mat(np.random.random((num_states,
            num_row_vecs)))
        col_vec_array = np.mat(np.random.random((num_states,
            num_col_vecs)))
        row_vec_paths = []
        col_vec_paths = []
        for vec_index in range(num_row_vecs):
            path = row_vec_path % vec_index
            util.save_array_text(row_vec_array[:,vec_index], path)
            row_vec_paths.append(path)
        for vec_index in range(num_col_vecs):
            path = col_vec_path % vec_index
            util.save_array_text(col_vec_array[:,vec_index], path)
            col_vec_paths.append(path)
    
        # Compute inner product matrix and check type
        for handle, dtype in [(V.VecHandleArrayText, float), 
            (ArrayTextComplexHandle, complex)]:
            row_vec_handles = [handle(path) for path in row_vec_paths] 
            col_vec_handles = [handle(path) for path in col_vec_paths]
            inner_product_mat = self.my_vec_ops.compute_inner_product_mat(
                row_vec_handles, col_vec_handles)
            symm_inner_product_mat = \
                self.my_vec_ops.compute_symmetric_inner_product_mat(
                    row_vec_handles)
            self.assertEqual(inner_product_mat.dtype, dtype)
            self.assertEqual(symm_inner_product_mat.dtype, dtype)