You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							67 lines
						
					
					
						
							2.3 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							67 lines
						
					
					
						
							2.3 KiB
						
					
					
				| import stormpy.utility | |
| from . import storage | |
| from .storage import * | |
| 
 | |
| 
 | |
| def build_sparse_matrix(array, row_group_indices=[]): | |
|     """ | |
|     Build a sparse matrix from numpy array. | |
|  | |
|     :param numpy array: The array. | |
|     :param List[double] row_group_indices: List containing the starting row of each row group in ascending order. | |
|     :return: Sparse matrix. | |
|     """ | |
| 
 | |
|     num_row = array.shape[0] | |
|     num_col = array.shape[1] | |
| 
 | |
|     len_group_indices = len(row_group_indices) | |
|     if len_group_indices > 0: | |
|         builder = storage.SparseMatrixBuilder(rows=num_row, columns=num_col, has_custom_row_grouping=True, | |
|                                               row_groups=len_group_indices) | |
|     else: | |
|         builder = storage.SparseMatrixBuilder(rows=num_row, columns=num_col) | |
| 
 | |
|     row_group_index = 0 | |
|     for r in range(num_row): | |
|         # check whether to start a custom row group | |
|         if row_group_index < len_group_indices and r == row_group_indices[row_group_index]: | |
|             builder.new_row_group(r) | |
|             row_group_index += 1 | |
|         # insert values of the current row | |
|         for c in range(num_col): | |
|             builder.add_next_value(r, c, array[r, c]) | |
| 
 | |
|     return builder.build() | |
| 
 | |
| def build_parametric_sparse_matrix(array, row_group_indices=[]): | |
|     """ | |
|     Build a sparse matrix from numpy array. | |
|  | |
|     :param numpy array: The array. | |
|     :param List[double] row_group_indices: List containing the starting row of each row group in ascending order. | |
|     :return: Parametric sparse matrix. | |
|     """ | |
| 
 | |
|     num_row = array.shape[0] | |
|     num_col = array.shape[1] | |
| 
 | |
|     len_group_indices = len(row_group_indices) | |
|     if len_group_indices > 0: | |
|         builder = storage.ParametricSparseMatrixBuilder(rows=num_row, columns=num_col, has_custom_row_grouping=True, | |
|                                               row_groups=len_group_indices) | |
|     else: | |
|         builder = storage.ParametricSparseMatrixBuilder(rows=num_row, columns=num_col) | |
| 
 | |
|     row_group_index = 0 | |
|     for r in range(num_row): | |
|         # check whether to start a custom row group | |
|         if row_group_index < len_group_indices and r == row_group_indices[row_group_index]: | |
|             builder.new_row_group(r) | |
|             row_group_index += 1 | |
|         # insert values of the current row | |
|         for c in range(num_col): | |
|             builder.add_next_value(r, c, array[r, c]) | |
| 
 | |
|     return builder.build() | |
| 
 |