AlgebraicJulia / AlgebraicJulia/ACSets.jl

Need to be able to form `Open` versions of `InterType` acsets

Aberta
#89 0 comentários 0 reações 1 responsável Reivindicada por @olynch Ver no GitHub
enhancement
Linguagem predominante
Julia
Estrelas
36
Forks
11
Métricas de merge de PRs
Nenhum PR com merge em 30d

Descrição

It would be good to be able to form open versions of `intertype` acsets. Currently, using the output constructors from `OpenACSetTypes` doesn't appear to work, as in the weighted graphs example below. (Note that `OpenCSetTypes` does appear to work for plain graphs.)

The following example for weighted graphs (which uses the `wgraph.it` file from the tests) errors:
```
using ACSets.InterTypes
@intertypes "wgraph.it" module wgraph end
using .wgraph
OpenITWGraphOb, OpenITWGraph = OpenACSetTypes(wgraph.WeightedGraph, :V)
g0′ = wgraph.EDWeightedGraph()
add_parts!(g0′, :V, 2)
add_part!(g0′, :E, src=1, tgt=2, weight=wgraph.EdgeData(:mass, 5))
g′ = OpenITWGraph{UInt64}(g0′, FinFunction([1],2), FinFunction([2],2))
```
The error is:
```
g′ = OpenITWGraph{UInt64}(g0′, FinFunction([1],2), FinFunction([2],2))
ERROR: MethodError: no method matching coerce_attrvar_component(::Symbol, ::UnitRange{Int64}, ::TypeSet{UInt64}, ::TypeSet{Main.wgraph.EdgeData}, ::Int64, ::Int64)

Closest candidates are:
coerce_attrvar_component(::Symbol, ::AbstractVector, ::TypeSet{T}, ::TypeSet{T}, ::Int64, ::Int64) where T
@ Catlab ~/.julia/packages/Catlab/ARIR5/src/categorical_algebra/CSets.jl:452
coerce_attrvar_component(::Symbol, ::LooseVarFunction, ::TypeSet{T}, ::TypeSet{T′}, ::Int64, ::Int64) where {T, T′}
@ Catlab ~/.julia/packages/Catlab/ARIR5/src/categorical_algebra/CSets.jl:468
coerce_attrvar_component(::Symbol, ::Function, ::TypeSet{T}, ::TypeSet{T′}, ::Int64, ::Int64) where {T, T′}
@ Catlab ~/.julia/packages/Catlab/ARIR5/src/categorical_algebra/CSets.jl:480
...
```

For comparison, the non-`intertype` version (obviously) works.
```
using Catlab.GATs, Catlab.Theories, Catlab.Graphs, Catlab.CategoricalAlgebra
const OpenWeightedGraphOb, OpenWeightedGraph = OpenACSetTypes(WeightedGraph, :V)
g0 = WeightedGraph{Float64}(2)
add_edge!(g0, 1, 2, weight=1.5)
g = OpenWeightedGraph{Float64}(g0, FinFunction([1],2), FinFunction([2],2))
```

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.