From 8f63206dc0de554d7d6eb6b472c4ebe9e5f7b497 Mon Sep 17 00:00:00 2001 From: Heinrich Lukas Weil Date: Fri, 2 Dec 2022 10:33:41 +0100 Subject: [PATCH] fix study xlsx reader creating empty lists #71 --- src/ISADotNet.XLSX/AssayFile/Assay.fs | 23 ++++++++++++++++++++++- src/ISADotNet.XLSX/StudyFile/Study.fs | 8 ++++++-- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/ISADotNet.XLSX/AssayFile/Assay.fs b/src/ISADotNet.XLSX/AssayFile/Assay.fs index d95b1513..899badd1 100644 --- a/src/ISADotNet.XLSX/AssayFile/Assay.fs +++ b/src/ISADotNet.XLSX/AssayFile/Assay.fs @@ -63,8 +63,14 @@ module Assay = let processes = Process.fromSparseMatrix processNameRoot matrixHeaders sparseMatrix let characteristics = API.ProcessSequence.getCharacteristics processes - Assay.create(CharacteristicCategories = characteristics,ProcessSequence = Seq.toList processes) + let assay = + match characteristics,processes with + | [],[] -> Assay.create() + | [],ps -> Assay.create(ProcessSequence = ps) + | cs,[] -> Assay.create(CharacteristicCategories = cs) + | cs,ps -> Assay.create(CharacteristicCategories = cs,ProcessSequence = ps) + assay /// Returns an assay from a sequence of sparseMatrix representations of assay.xlsx sheets /// @@ -192,4 +198,19 @@ module Assay = wb.Value.Parse().ToFile(p) with | err -> failwithf "Could not write Assay to Xlsx file in path \"%s\": \n\t%s" p err.Message + + let updateFile (p : string) (contacts : Person list) (assay : Assay) = + try + let a = QueryModel.QAssay.fromAssay assay + let wb = + workbook { + for (i,s) in List.indexed a.Sheets do QSheet.toSheet i s + sheet "Assay" { + for r in MetaData.toDSLSheet assay contacts do r + } + } + + wb.Value.Parse().ToFile(p) + with + | err -> failwithf "Could not write Assay to Xlsx file in path \"%s\": \n\t%s" p err.Message /// ----> Bis hier \ No newline at end of file diff --git a/src/ISADotNet.XLSX/StudyFile/Study.fs b/src/ISADotNet.XLSX/StudyFile/Study.fs index 51c368a2..933486c4 100644 --- a/src/ISADotNet.XLSX/StudyFile/Study.fs +++ b/src/ISADotNet.XLSX/StudyFile/Study.fs @@ -29,7 +29,10 @@ module Study = let characteristics = API.ProcessSequence.getCharacteristics processes let factors = API.ProcessSequence.getFactors processes let protocols = API.ProcessSequence.getProtocols processes - Study.create(CharacteristicCategories = characteristics,Factors = factors, Protocols = protocols, ProcessSequence = processes) + let units = API.ProcessSequence.getUnits processes |> List.distinct + Study.make None None None None None None None None None None (Option.fromValueWithDefault [] protocols) None (Option.fromValueWithDefault [] processes) None (Option.fromValueWithDefault [] factors) (Option.fromValueWithDefault [] characteristics) (Option.fromValueWithDefault [] units) None + + //Study.create(CharacteristicCategories = characteristics,Factors = factors, Protocols = protocols, ProcessSequence = processes) /// Returns a study from a sequence of sparseMatrix representations of study.xlsx sheets /// @@ -43,7 +46,8 @@ module Study = let characteristics = API.ProcessSequence.getCharacteristics processes let factors = API.ProcessSequence.getFactors processes let protocols = API.ProcessSequence.getProtocols processes - Study.create(CharacteristicCategories = characteristics,Factors = factors, Protocols = protocols, ProcessSequence = processes) + let units = API.ProcessSequence.getUnits processes |> List.distinct + Study.make None None None None None None None None None None (Option.fromValueWithDefault [] protocols) None (Option.fromValueWithDefault [] processes) None (Option.fromValueWithDefault [] factors) (Option.fromValueWithDefault [] characteristics) (Option.fromValueWithDefault [] units) None // Diesen Block durch JS ersetzen ---->