Skip to content

Commit

Permalink
Reverse array indices
Browse files Browse the repository at this point in the history
  • Loading branch information
eschnett committed Aug 20, 2024
1 parent 77d22bf commit 36640fa
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 22 deletions.
4 changes: 2 additions & 2 deletions src/mdarray/group.jl
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,7 @@ function unsafe_createmdarray(
group,
name,
length(dimensions),
DimensionHList(dimensions),
DimensionHList(reverse(dimensions)),
datatype,
CSLConstListWrapper(options),
)
Expand All @@ -257,7 +257,7 @@ function createmdarray(
group,
name,
length(dimensions),
DimensionHList(dimensions),
DimensionHList(reverse(dimensions)),
datatype,
CSLConstListWrapper(options),
)
Expand Down
3 changes: 1 addition & 2 deletions src/mdarray/highlevel.jl
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@ function writemdarray(
options::OptionList = nothing,
)::Nothing where {T<:NumericAttributeType,D}
dimensions = AbstractDimension[
createdimension(group, "$name.$d", "", "", size(value, d)) for
d in D:-1:1
createdimension(group, "$name.$d", "", "", size(value, d)) for d in 1:D
]
extendeddatatypecreate(T) do datatype
createmdarray(group, name, dimensions, datatype, options) do mdarray
Expand Down
18 changes: 9 additions & 9 deletions src/mdarray/mdarray.jl
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@ function unsafe_getindex(
indices::Integer...,
)::AbstractMDArray
@assert !isnull(mdarray)
viewexpr = "[" * join(indices, ",") * "]"
viewexpr = "[" * join(reverse(indices), ",") * "]"
return unsafe_getview(mdarray, viewexpr)
end

Expand All @@ -263,7 +263,7 @@ function getindex(
indices::Integer...,
)::AbstractMDArray
@assert !isnull(mdarray)
viewexpr = "[" * join(indices, ",") * "]"
viewexpr = "[" * join(reverse(indices), ",") * "]"
return getview(mdarray, viewexpr)
end

Expand Down Expand Up @@ -348,7 +348,7 @@ function unsafe_getresampled(
ptr = GDAL.gdalmdarraygetresampled(
mdarray,
isnothing(newdims) ? 0 : length(newdims),
isnothing(newdims) ? C_NULL : DimensionHList(newdims),
isnothing(newdims) ? C_NULL : DimensionHList(reverse(newdims)),
resamplealg,
isnothing(targetsrs) ? C_NULL : targetsrs,
CSLConstListWrapper(options),
Expand All @@ -368,7 +368,7 @@ function getresampled(
ptr = GDAL.gdalmdarraygetresampled(
mdarray,
isnothing(newdims) ? 0 : length(newdims),
isnothing(newdims) ? C_NULL : DimensionHList(newdims),
isnothing(newdims) ? C_NULL : DimensionHList(reverse(newdims)),
resamplealg,
isnothing(targetsrs) ? C_NULL : targetsrs,
CSLConstListWrapper(options),
Expand Down Expand Up @@ -563,7 +563,7 @@ function adviseread(
@assert !isnull(mdarray)
return GDAL.gdalmdarrayadviseread(
mdarray,
isnothing(arraystartidx) ? C_NULL : arraystartidx,
isnothing(arraystartidx) ? C_NULL : reverse(arraystartidx),
isnothing(count) ? C_NULL : count,
CSLConstListWrapper(options),
)
Expand Down Expand Up @@ -647,7 +647,7 @@ function getdimensions(
dimensionshptr = GDAL.gdalmdarraygetdimensions(mdarray, dimensionscountref)
dimensions = AbstractDimension[
IDimension(unsafe_load(dimensionshptr, n), mdarray.dataset) for
n in 1:dimensionscountref[]
n in dimensionscountref[]:-1:1
]
GDAL.vsifree(dimensionshptr)
return dimensions
Expand All @@ -661,7 +661,7 @@ function unsafe_getdimensions(
dimensionshptr = GDAL.gdalmdarraygetdimensions(mdarray, dimensionscountref)
dimensions = AbstractDimension[
Dimension(unsafe_load(dimensionshptr, n), mdarray.dataset) for
n in 1:dimensionscountref[]
n in dimensionscountref[]:-1:1
]
GDAL.vsifree(dimensionshptr)
return dimensions
Expand All @@ -670,7 +670,7 @@ end
function Base.size(mdarray::AbstractMDArray)
getdimensions(mdarray) do dimensions
D = length(dimensions)
return ntuple(d -> getsize(dimensions[D-d+1]), D)
return ntuple(d -> getsize(dimensions[d]), D)
end
end

Expand Down Expand Up @@ -800,7 +800,7 @@ end
function read(mdarray::AbstractMDArray)::AbstractArray
getdimensions(mdarray) do dimensions
D = length(dimensions)
sz = [getsize(dimensions[d]) for d in D:-1:1]
sz = [getsize(dimensions[d]) for d in 1:D]
getdatatype(mdarray) do datatype
class = getclass(datatype)
@assert class == GDAL.GEDTC_NUMERIC
Expand Down
18 changes: 9 additions & 9 deletions test/test_mdarray.jl
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ end

# @test AG.iswritable(mdarray)

data = Float32[100 * x + y for y in 1:ny, x in 1:nx]
data = Float32[x + 100 * y for x in 1:nx, y in 1:ny]
AG.write(mdarray, data)

write_attributes(mdarray)
Expand Down Expand Up @@ -308,12 +308,12 @@ end
@test AG.getclass(datatype) == GDAL.GEDTC_NUMERIC
@test AG.getnumericdatatype(datatype) == AG.GDT_Float32

data = Array{Float32}(undef, ny, nx)
data = Array{Float32}(undef, nx, ny)
AG.read!(mdarray, data)
@test data == Float32[100 * x + y for y in 1:ny, x in 1:nx]
@test data == Float32[x + 100 * y for x in 1:nx, y in 1:ny]

data = AG.read(mdarray)
@test data == Float32[100 * x + y for y in 1:ny, x in 1:nx]
@test data == Float32[x + 100 * y for x in 1:nx, y in 1:ny]

test_attributes(mdarray)

Expand Down Expand Up @@ -411,8 +411,8 @@ end
# @test AG.iswritable(mdarray)

data = Float32[
100 * x + y for y in 1:ny,
x in 1:nx
x + 100 * y for x in 1:nx,
y in 1:ny
]
AG.write(mdarray, data)

Expand Down Expand Up @@ -539,15 +539,15 @@ end
) do doesnotexist
end

data = Array{Float32}(undef, ny, nx)
data = Array{Float32}(undef, nx, ny)
AG.read!(mdarray, data)
@test data == Float32[
100 * x + y for y in 1:ny, x in 1:nx
x + 100 * y for x in 1:nx, y in 1:ny
]

data = AG.read(mdarray)
@test data == Float32[
100 * x + y for y in 1:ny, x in 1:nx
x + 100 * y for x in 1:nx, y in 1:ny
]

test_attributes(mdarray)
Expand Down

0 comments on commit 36640fa

Please sign in to comment.