[BUG] ArcStudy/ArcAssay toJsonString() creates missing information
Freymaurer opened this issue · 8 comments
Freymaurer commented
- Creating a new ArcStudy/ArcAssay with a single table, but no further information.
- Parse to json string
- Read from json string
- Table contains information about input/output
HLWeil commented
I can't reproduce this:
#r "nuget: ARCtrl, 1.0.0-beta.9"
open ARCtrl.ISA
open ARCtrl.ISA.Json
let a = ArcAssay.init("MyAssay")
a.InitTable("MyTable") |> ignore
let a' = ArcAssay.toJsonString a |> ArcAssay.fromJsonString
a.GetTableAt(0).ColumnCount
a'.GetTableAt(0).ColumnCount
>
val it: int = 0
>
val it: int = 0
Freymaurer commented
I see the issue seems to be more complex than anticipated. Check this code example out:
#r "nuget: ARCtrl, 1.0.0-beta.9"
open ARCtrl.ISA
open ARCtrl.ISA.Json
let a = ArcAssay.init("MyAssay")
let t = a.InitTable("MyTable")
t.AddColumn(CompositeHeader.Input IOType.Source)
let a' = ArcAssay.toJsonString a |> ArcAssay.fromJsonString
a.GetTableAt(0).ColumnCount |> printfn "ColumnCount a %i" // ColumnCount a 1
a'.GetTableAt(0).ColumnCount |> printfn "ColumnCount a-converted %i" // ColumnCount a-converted 0
HLWeil commented
So this is exactly the reverse problem?
Freymaurer commented
Here is the exact recreation issue i faced:
#r "nuget: ARCtrl, 1.0.0-beta.9"
open ARCtrl.ISA
open ARCtrl.ISA.Json
let a = ArcAssay.init("MyAssay")
let t = a.InitTable("MyTable")
t.AddColumn(CompositeHeader.Input IOType.Source, [|CompositeCell.emptyFreeText |])
let a' = ArcAssay.toJsonString a |> ArcAssay.fromJsonString
a.GetTableAt(0).ColumnCount |> printfn "ColumnCount a %i" // ColumnCount a 1
a'.GetTableAt(0).ColumnCount |> printfn "ColumnCount a-converted %i" // ColumnCount a-converted 2
Freymaurer commented
And:
#r "nuget: ARCtrl, 1.0.0-beta.9"
open ARCtrl.ISA
open ARCtrl.ISA.Json
let a = ArcAssay.init("MyAssay")
let t = a.InitTable("MyTable")
t.AddColumn(CompositeHeader.Parameter (OntologyAnnotation.empty), [|CompositeCell.emptyTerm |])
let a' = ArcAssay.toJsonString a |> ArcAssay.fromJsonString
a.GetTableAt(0).ColumnCount |> printfn "ColumnCount a %i" // ColumnCount a 1
a'.GetTableAt(0).ColumnCount |> printfn "ColumnCount a-converted %i" // ColumnCount a-converted 3
HLWeil commented
Looking into it!
Freymaurer commented
This issue is postponed for now!
Freymaurer commented
This is correctly implemented for ISA-JSON! If we want to convert ARCtrl datamodel to json and revers we use the ARCtrl json and not ISA-JSON!