library(BigDataStatMeth)
# Create a matrix with upper triangular values
X <- matrix(rnorm(100), 10, 10)
X.1 <- X
X[lower.tri(X)] <- 0
# Save to HDF5
bdCreate_hdf5_matrix("test_file.hdf5", X, "data", "X",
overwriteFile = TRUE,
overwriteDataset = FALSE,
unlimited = FALSE)
# Mirror upper triangular to lower
bdWriteOppsiteTriangularMatrix_hdf5(
filename = "test_file.hdf5",
group = "data",
dataset = "X",
copytolower = TRUE,
elementsBlock = 10
)
# Create a matrix with lower triangular values
X <- X.1
X[upper.tri(X)] <- 0
# Add to HDF5 file
bdCreate_hdf5_matrix("test_file.hdf5", X, "data", "Y",
overwriteFile = FALSE,
overwriteDataset = FALSE,
unlimited = FALSE)
# Mirror lower triangular to upper
bdWriteOppsiteTriangularMatrix_hdf5(
filename = "test_file.hdf5",
group = "data",
dataset = "Y",
copytolower = FALSE,
elementsBlock = 10
)
# Cleanup
if (file.exists("test_file.hdf5")) {
file.remove("test_file.hdf5")
}bdWriteOppsiteTriangularMatrix_hdf5
bdWriteOppsiteTriangularMatrix_hdf5
HDF5_ALGEBRA
1 Description
Creates a symmetric matrix by mirroring values from one triangular part to the other in an HDF5-stored matrix. This function modifies the matrix in-place, either copying the upper triangular values to the lower triangular part or vice versa.
2 Usage
bdWriteOppsiteTriangularMatrix_hdf5(filename, group, dataset, copytolower = NULL, elementsBlock = 1000000L)3 Arguments
| Parameter | Description |
|---|---|
filename |
Character string specifying the path to an existing HDF5 file |
group |
Character string indicating the input group containing the dataset |
dataset |
Character string specifying the dataset to be modified |
copytolower |
Logical. If TRUE, copies upper triangular to lower triangular. If FALSE (default), copies lower triangular to upper triangular. |
elementsBlock |
Integer defining the maximum number of elements to process in each block. Default is 1,000,000. For matrices larger than 5000x5000, automatically adjusted to number of rows or columns * 2. |
4 Value
List with components. If an error occurs, all string values are returned as empty strings (““):
fn: Character string with the HDF5 filenameds: Character string with the full dataset path to the modified matrix. The opposite triangular part is written to the same input dataset, completing the symmetric matrix (group/dataset)
5 Details
This function provides an efficient way to create symmetric matrices from triangular data. It operates directly on HDF5 datasets using block processing for memory efficiency. The function: - Validates that the input matrix is square - Processes the matrix in blocks for memory efficiency - Performs in-place modification of the dataset - Preserves the original values in the source triangular part - Supports both upper-to-lower and lower-to-upper mirroring
The implementation uses block processing to handle large matrices efficiently, making it suitable for big data applications. The block size can be adjusted based on available memory and performance requirements.
6 Examples
7 See Also
- bdCreate_hdf5_matrix for creating HDF5 matrices