nfdi4plants/ARCtrl

[BUG] ArcStudy/ArcAssay toJsonString() creates missing information

Freymaurer opened this issue · 8 comments

  1. Creating a new ArcStudy/ArcAssay with a single table, but no further information.
  2. Parse to json string
  3. Read from json string
  4. Table contains information about input/output

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

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

So this is exactly the reverse problem?

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

image

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

Looking into it!

This issue is postponed for now!

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!