-
Notifications
You must be signed in to change notification settings - Fork 15
Expand file tree
/
Copy pathhdf5_script.R
More file actions
executable file
·181 lines (132 loc) · 5.58 KB
/
Copy pathhdf5_script.R
File metadata and controls
executable file
·181 lines (132 loc) · 5.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
################################################
###
### package h5 scripts for managing hdf5 files
### load and save data from hdf5 files
###
################################################
# set options
options(max.print=40)
# load packages
library(HighFreq)
library(h5)
### script #1
# create and save a binary HDF5 data file
## create H5File pointer to empty binary HDF5 file
file_pointer <- h5file("C:/Develop/data/data_test.h5")
## create H5Group pointer to data folder called group1, using subsetting operators
data_pointer <- file_pointer["group1"]
## store mat1 and mat2 data sets in group1 folder using pointer data_pointer
# the mat1 and mat2 data sets don't need to have same dimensions
# use H5Group pointer to data folder
data_pointer["mat1"] <- matrix(1:9, nrow=3)
data_pointer["mat2"] <- matrix(11:22, ncol=4)
## store mat1 and mat2 data sets in group1 folder using H5File pointer to data file
file_pointer["group1/mat1"] <- matrix(1:9, nrow=3)
file_pointer["group1/mat2"] <- matrix(11:22, ncol=4)
## add attribute to group1 folder using H5Group pointer
# create data pointer to folder called group1, using subsetting operators
data_pointer <- file_pointer["group1"]
h5attr(data_pointer, "attr1") <- "group1"
# doesn't work
# h5attr(file_pointer["group1"], "folder_attr") <- "group1"
## add attribute to mat1 data set using H5Group pointer to folder
h5attr(data_pointer["mat1"], "matrix_attr") <- "matrix1"
## add attribute to mat2 data set using H5File pointer to data file
h5attr(file_pointer["group1/mat2"], "matrix_attr") <- "matrix2"
## add group2 data folder with mat3 data set
file_pointer["group2/mat3"] <- matrix(21:30, ncol=2)
## add attribute to mat3 data set using H5File pointer to data file
h5attr(file_pointer["group2/mat3"], "matrix_attr") <- "matrix3"
# doesn't work
# h5attr(data_group2, "attr2") <- "group2 folder"
## print summary of datasets in file_pointer
# print names of datasets
list.datasets(file_pointer)
# print summary of datasets in file_pointer
sapply(list.datasets(file_pointer), function(x) file_pointer[x])
## print the data in group1 folder
file_pointer["group1"]
## print the data in mat1 dataset
# print all the data
file_pointer["group1/mat1"][]
# print the first two rows
file_pointer["group1/mat1"][1:2, ]
## close file pointer - file still locked
h5close(file_pointer)
### script #2
# open file in read/write mode to append extra data
file_pointer <- h5file("C:/Develop/data/data_test.h5", mode="r+")
## add mat4 data set in group2 data folder
file_pointer["group2/mat4"] <- matrix(11:20, ncol=2)
## add mat4 data set in group3 data folder
file_pointer["group3/mat4"] <- matrix(11:20, ncol=2)
## add attribute to mat3 data set using H5File pointer to data file
h5attr(file_pointer["group3/mat4"], "matrix_attr") <- "matrix4"
## print summary of datasets in file_pointer
sapply(list.datasets(file_pointer), function(x) file_pointer[x])
## print the data in mat4 dataset
# print all the data
file_pointer["group3/mat4"][]
# print the first two rows
file_pointer["group3/mat4"][1:2, ]
## print summary of datasets in file_pointer
# print names of datasets
list.datasets(file_pointer)
# print summary of datasets in file_pointer
sapply(list.datasets(file_pointer), function(x) file_pointer[x])
## close file pointer - file still locked
h5close(file_pointer)
# remove file
file.remove("C:/Develop/data/data_test.h5")
### script #3
# create and save a binary HDF5 data file
## create H5File pointer to empty binary HDF5 file
file_pointer <- h5file("C:/Develop/data/data_test.h5", mode="a")
## create group called group_folder and a character vector dataset called vectorv
file_pointer["group_folder/vectorv"] <- LETTERS[1:9]
## create pointer to vectorv dataset
data_pointer <- file_pointer["group_folder/vectorv"]
# print first 3 elements of vectorv
data_pointer[1:3]
# add elements to vectorv dataset
data_pointer <- c(data_pointer, LETTERS[10:26])
# print entire vectorv dataset
data_pointer[]
## create named integer matrix called matrixv and add it to group_folder
matrixv <- matrix(1:9, nrow = 3)
rownames(matrixv) <- LETTERS[1:3]
colnames(matrixv) <- c("AY", "BE", "CE")
file_pointer["group_folder/matrixv"] <- matrixv
## store rownames and column names of matrixv as attributes
# create pointer to matrixv data set
data_pointer <- file_pointer["group_folder/matrixv"]
# store rownames in attribute dimnames1
h5attr(data_pointer, "dimnames1") <- rownames(matrixv)
# Store columnnames in attribute dimnames2
h5attr(data_pointer, "dimnames2") <- colnames(matrixv)
## add to group_folder an array dataset called ar_ray
file_pointer["group_folder/ar_ray"] <- array(as.numeric(1:45), dim = c(3, 3, 5))
## print summary of datasets in file_pointer
# print names of datasets
list.datasets(file_pointer)
# print summary of datasets in file_pointer
sapply(list.datasets(file_pointer), function(x) file_pointer[x])
## close remove file pointer
h5close(data_pointer)
h5close(file_pointer)
### script #4
### binary HDF5 file containing Two Sigma Kaggle data
# https://www.kaggle.com/c/two-sigma-financial-modeling/data
# create pointer to binary HDF5 file with Kaggle data
file_pointer <- h5file("C:/Develop/data/train.h5")
## print summary of datasets in file_pointer
# print names of datasets
list.datasets(file_pointer)
# print summary of datasets in file_pointer
sapply(list.datasets(file_pointer), function(x) file_pointer[x])
# print dimensions of datasets in file_pointer
sapply(list.datasets(file_pointer), function(x) dim(file_pointer[x]))
# print first columns of datasets in file_pointer
sapply(list.datasets(file_pointer), function(x) file_pointer[x][, 1])
## close remove file pointer
h5close(file_pointer)