AlgebraicJulia / AlgebraicJulia/ACSets.jl

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

オープン
#89 コメント 0 件 リアクション 0 件 担当者 1 名 @olynch が担当を希望しています GitHub で見る
enhancement
主要言語
Julia
スター
36
フォーク
11
PR マージ指標
30日以内にマージされた PR はありません

説明

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

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。