AlgebraicJulia / AlgebraicJulia/ACSets.jl

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

Abierto
#89 0 comentarios 0 reacciones 1 asignado Reclamado por @olynch Ver en GitHub
enhancement
Lenguaje dominante
Julia
Estrellas
36
Forks
11
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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))
```

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.