-
Notifications
You must be signed in to change notification settings - Fork 0
/
01reverse_datasets.jl
101 lines (80 loc) · 2.71 KB
/
01reverse_datasets.jl
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
# using Pkg
# Pkg.add("ArgParse")
# Pkg.add("HDF5")
# Pkg.add("ArchGDAL")
using HDF5
using ArchGDAL
using Printf
dataset = ArchGDAL.read(ARGS[2], flags=ArchGDAL.OF_Raster | ArchGDAL.OF_ReadOnly)
ysize = ArchGDAL.height(dataset)
xsize = ArchGDAL.width(dataset)
function list_recursive(obj, parent="/", groups=true, datasets=true)
result = []
try
items = keys(obj)
for item in items
try
g = obj[item]
group_info(g)
if (groups)
push!(result, string(parent, item))
end
append!(result, list_recursive(g, string(parent, item, "/"), groups, datasets))
catch
if (datasets)
push!(result, string(parent, item))
end
end
end
return result
catch
return result
end
end
cerrado_h5 = h5open(ARGS[1], "r+")
datasets = list_recursive(cerrado_h5, "/", false, true)
lines_to_read = 100
half_ysize = Int32(ceil(ysize/2))
counter = 0
for ds_name in datasets
global counter += 1
ds = cerrado_h5[ds_name]
println("Processing dataset: ", ds_name, " (", counter, " of ", size(datasets)[1], ")")
for yy in 0:lines_to_read:half_ysize
perc = 100 * yy / half_ysize
@printf("\rReversing... %.2f%%",perc)
lines_read = lines_to_read
if (yy + lines_read > half_ysize)
lines_read = half_ysize - yy
end
rev_yy = ysize - yy - lines_read
lower_bound = yy*xsize+1
upper_bound = (yy+lines_read)*xsize
mat = ds[lower_bound:upper_bound]
mat = reshape(mat, (xsize, lines_read))
mat = mat[:,lines_read:-1:1]
rev_lower_bound = rev_yy*xsize+1
rev_upper_bound = (rev_yy+lines_read)*xsize
rev_mat = ds[rev_lower_bound:rev_upper_bound]
rev_mat = reshape(rev_mat, (xsize, lines_read))
rev_mat = rev_mat[:,lines_read:-1:1]
ds[lower_bound:upper_bound] = rev_mat
ds[rev_lower_bound:rev_upper_bound] = mat
end
@printf("\rReversing... %.2f%%\n",100)
end
# n = M1 = M2 = M3 = M4 = 0
# n, M1, M2, M3, M4 = update_stats(n, M1, M2, M3, M4, 3)
# n, M1, M2, M3, M4 = update_stats(n, M1, M2, M3, M4, 2)
# a_n = a_M1 = a_M2 = a_M3 = a_M4 = 0
# a_n, a_M1, a_M2, a_M3, a_M4 = update_stats(a_n, a_M1, a_M2, a_M3, a_M4, 5)
# a_n, a_M1, a_M2, a_M3, a_M4 = update_stats(a_n, a_M1, a_M2, a_M3, a_M4, 8)
# n, M1, M2, M3, M4 = combine_stats(n, M1, M2, M3, M4, a_n, a_M1, a_M2, a_M3, a_M4)
# # Kurtosis
# g = (n*M4) / (M2*M2) - 3.0
# (n-1) / ( (n-2)*(n-3) ) * ( (n+1)*g + 6 )
# # Variance
# M2/(n-1.0)
# # Skewness
# g=(sqrt(n) * M3) / (M2^1.5)
# sqrt((n*(n-1)))*g / (n-2)