| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 | 
							- package pb
 
- func ToBurndownSparseMatrix(matrix [][]int64, name string) *BurndownSparseMatrix {
 
-   r := BurndownSparseMatrix{
 
- 	  Name: name,
 
- 	  NumberOfRows: int32(len(matrix)),
 
- 	  NumberOfColumns: int32(len(matrix[len(matrix)-1])),
 
- 	  Rows: make([]*BurndownSparseMatrixRow, len(matrix)),
 
-   }
 
-   for i, status := range matrix {
 
- 	  nnz := make([]uint32, 0, len(status))
 
- 	  changed := false
 
- 	  for j := range status {
 
- 		  v := status[len(status) - 1 - j]
 
- 		  if v < 0 {
 
- 			  v = 0
 
- 		  }
 
- 		  if !changed {
 
- 			  changed = v != 0
 
- 		  }
 
- 		  if changed {
 
- 			  nnz = append(nnz, uint32(v))
 
- 		  }
 
- 	  }
 
- 	  r.Rows[i] = &BurndownSparseMatrixRow{
 
- 		  Columns: make([]uint32, len(nnz)),
 
- 	  }
 
- 	  for j := range nnz {
 
- 		  r.Rows[i].Columns[j] = nnz[len(nnz) - 1 - j]
 
- 	  }
 
- 	}
 
- 	return &r
 
- }
 
- func DenseToCompressedSparseRowMatrix(matrix [][]int64) *CompressedSparseRowMatrix {
 
- 	r := CompressedSparseRowMatrix{
 
- 		NumberOfRows: int32(len(matrix)),
 
- 		NumberOfColumns: int32(len(matrix[0])),
 
- 		Data: make([]int64, 0),
 
- 		Indices: make([]int32, 0),
 
- 		Indptr: make([]int64, 1),
 
- 	}
 
- 	r.Indptr[0] = 0
 
- 	for _, row := range matrix {
 
- 		nnz := 0
 
- 		for x, col := range row {
 
- 			if col != 0 {
 
- 				r.Data = append(r.Data, col)
 
- 				r.Indices = append(r.Indices, int32(x))
 
- 				nnz += 1
 
- 			}
 
- 		}
 
- 		r.Indptr = append(r.Indptr, r.Indptr[len(r.Indptr) - 1] + int64(nnz))
 
- 	}
 
- 	return &r
 
- }
 
- func MapToCompressedSparseRowMatrix(matrix []map[int]int64) *CompressedSparseRowMatrix {
 
- 	r := CompressedSparseRowMatrix{
 
- 		NumberOfRows: int32(len(matrix)),
 
- 		NumberOfColumns: int32(len(matrix)),
 
- 		Data: make([]int64, 0),
 
- 		Indices: make([]int32, 0),
 
- 		Indptr: make([]int64, 1),
 
- 	}
 
- 	r.Indptr[0] = 0
 
- 	for _, row := range matrix {
 
- 		for x, col := range row {
 
- 			r.Data = append(r.Data, col)
 
- 			r.Indices = append(r.Indices, int32(x))
 
- 		}
 
- 		r.Indptr = append(r.Indptr, r.Indptr[len(r.Indptr) - 1] + int64(len(row)))
 
- 	}
 
- 	return &r
 
- }
 
 
  |