Skip to content

Commit 8a179b3

Browse files
authored
NamedDimsArraysExt (#78)
1 parent 2e63f75 commit 8a179b3

File tree

5 files changed

+62
-1
lines changed

5 files changed

+62
-1
lines changed

.github/workflows/IntegrationTest.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ jobs:
1919
pkg:
2020
- 'BlockSparseArrays'
2121
- 'DiagonalArrays'
22+
- 'FusionTensors'
23+
- 'GradedArrays'
2224
uses: "ITensor/ITensorActions/.github/workflows/IntegrationTest.yml@main"
2325
with:
2426
localregistry: "https://github.com/ITensor/ITensorRegistry.git"

Project.toml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "SparseArraysBase"
22
uuid = "0d5efcca-f356-4864-8770-e1ed8d78f208"
33
authors = ["ITensor developers <support@itensor.org> and contributors"]
4-
version = "0.7.9"
4+
version = "0.7.10"
55

66
[deps]
77
Accessors = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697"
@@ -18,9 +18,11 @@ SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
1818
TypeParameterAccessors = "7e5a90cf-f82e-492e-a09b-e3e26432c138"
1919

2020
[weakdeps]
21+
NamedDimsArrays = "60cbd0c0-df58-4cb7-918c-6f5607b73fde"
2122
TensorAlgebra = "68bd88dc-f39d-4e12-b2ca-f046b68fcc6a"
2223

2324
[extensions]
25+
SparseArraysBaseNamedDimsArraysExt = "NamedDimsArrays"
2426
SparseArraysBaseTensorAlgebraExt = ["TensorAlgebra", "SparseArrays"]
2527

2628
[compat]
@@ -33,6 +35,7 @@ FillArrays = "1.13"
3335
GPUArraysCore = "0.2"
3436
LinearAlgebra = "1.10"
3537
MapBroadcast = "0.1.5"
38+
NamedDimsArrays = "0.10"
3639
Random = "1.10"
3740
SparseArrays = "1.10"
3841
TensorAlgebra = "0.6.2"
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
module SparseArraysBaseNamedDimsArraysExt
2+
3+
using NamedDimsArrays: AbstractNamedDimsArray, AbstractNamedUnitRange,
4+
constructorof_nameddims, dename, inds, nameddims
5+
using SparseArraysBase: SparseArraysBase, dense, oneelement
6+
7+
function SparseArraysBase.dense(a::AbstractNamedDimsArray)
8+
# TODO: Use `NamedDimsArrays.nameddimsof(a, dense(unname(a)))` once that is defined,
9+
# see: https://github.com/ITensor/NamedDimsArrays.jl/issues/138
10+
return constructorof_nameddims(typeof(a))(dense(dename(a)), inds(a))
11+
end
12+
13+
function SparseArraysBase.oneelement(
14+
value, index::NTuple{N, Int}, ax::NTuple{N, AbstractNamedUnitRange}
15+
) where {N}
16+
return nameddims(oneelement(value, index, only.(axes.(dename.(ax)))), ax)
17+
end
18+
19+
end

test/Project.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ Dictionaries = "85a47980-9c8c-11e8-2b9f-f7ca1fa99fb4"
66
FillArrays = "1a297f60-69ca-5386-bcde-b61e274b549b"
77
JLArrays = "27aeb0d3-9eb9-45fb-866b-73c2ecf80fcb"
88
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
9+
NamedDimsArrays = "60cbd0c0-df58-4cb7-918c-6f5607b73fde"
910
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
1011
SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f"
1112
SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
@@ -26,6 +27,7 @@ Dictionaries = "0.4.4"
2627
FillArrays = "1.13.0"
2728
JLArrays = "0.2.0, 0.3"
2829
LinearAlgebra = "<0.0.1, 1"
30+
NamedDimsArrays = "0.10"
2931
Random = "<0.0.1, 1"
3032
SafeTestsets = "0.1.0"
3133
SparseArrays = "1.10"

test/test_nameddimsarraysext.jl

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
using NamedDimsArrays: NamedDimsArray, dename, nameddims, namedoneto, inds
2+
using SparseArraysBase: dense, oneelement, sparsezeros
3+
using Test: @test, @testset
4+
5+
@testset "SparseArraysBaseExt (eltype=$elt)" for elt in (Float64, ComplexF64)
6+
@testset "oneelement" begin
7+
i = namedoneto(3, "i")
8+
a = oneelement(i => 2)
9+
@test a isa NamedDimsArray{Bool}
10+
@test ndims(a) == 1
11+
@test issetequal(inds(a), (i,))
12+
@test eltype(a) Bool
13+
@test a[1] == 0
14+
@test a[2] == 1
15+
@test a[3] == 0
16+
17+
i = namedoneto(3, "i")
18+
a = oneelement(elt, i => 2)
19+
@test a isa NamedDimsArray{elt}
20+
@test ndims(a) == 1
21+
@test issetequal(inds(a), (i,))
22+
@test eltype(a) elt
23+
@test a[1] == 0
24+
@test a[2] == 1
25+
@test a[3] == 0
26+
end
27+
@testset "dense" begin
28+
s = sparsezeros(elt, 3, 4)
29+
a = nameddims(s, (:a, :b))
30+
b = dense(a)
31+
@test dename(b) == dense(dename(a))
32+
@test dename(b) isa Array{elt, 2}
33+
@test inds(b) == inds(a)
34+
end
35+
end

0 commit comments

Comments
 (0)