From 752fe150b1574d93b63803ab4e3c0d09ef3ba450 Mon Sep 17 00:00:00 2001 From: weil Date: Mon, 22 Jan 2024 16:24:59 +0100 Subject: [PATCH 1/2] update to arctrl.net 1.0.1 --- src/ArcCommander/APIs/StudyAPI.fs | 6 +++--- src/ArcCommander/ArcCommander.fsproj | 7 +++--- src/ArcCommander/ArcConfiguration.fs | 2 +- .../ArcCommander.Tests.fsproj | 3 +-- tests/ArcCommander.Tests/StudyTests.fs | 5 +++++ .../assays/a_metabolome/isa.assay.xlsx | Bin 0 -> 8802 bytes .../assays/a_proteome/isa.assay.xlsx | Bin 0 -> 8793 bytes .../TestFiles/studies/BII-S-1/isa.study.xlsx | Bin 0 -> 12928 bytes .../TestFiles/studies/BII-S-2/isa.study.xlsx | Bin 0 -> 12729 bytes tests/ArcCommander.Tests/Utils.fs | 20 ++++++++++++++++++ 10 files changed, 34 insertions(+), 9 deletions(-) create mode 100644 tests/ArcCommander.Tests/TestFiles/assays/a_metabolome/isa.assay.xlsx create mode 100644 tests/ArcCommander.Tests/TestFiles/assays/a_proteome/isa.assay.xlsx create mode 100644 tests/ArcCommander.Tests/TestFiles/studies/BII-S-1/isa.study.xlsx create mode 100644 tests/ArcCommander.Tests/TestFiles/studies/BII-S-2/isa.study.xlsx diff --git a/src/ArcCommander/APIs/StudyAPI.fs b/src/ArcCommander/APIs/StudyAPI.fs index df64cdb..ba89c8a 100644 --- a/src/ArcCommander/APIs/StudyAPI.fs +++ b/src/ArcCommander/APIs/StudyAPI.fs @@ -736,13 +736,13 @@ module StudyAPI = |> List.toArray let existsByName name publications = - OntologyAnnotation.existsByName (AnnotationValue.Text name) (publications |> Array.toList) + OntologyAnnotation.existsByName name (publications |> Array.toList) let tryGetByName name publications = - OntologyAnnotation.tryGetByName (AnnotationValue.Text name) (publications |> Array.toList) + OntologyAnnotation.tryGetByName name (publications |> Array.toList) let removeByName name publications = - OntologyAnnotation.removeByName (AnnotationValue.Text name) (publications |> Array.toList) + OntologyAnnotation.removeByName name (publications |> Array.toList) |> List.toArray /// Updates an existing design in the ARC investigation study with the given design metadata contained in cliArgs. diff --git a/src/ArcCommander/ArcCommander.fsproj b/src/ArcCommander/ArcCommander.fsproj index 983b31f..937888d 100644 --- a/src/ArcCommander/ArcCommander.fsproj +++ b/src/ArcCommander/ArcCommander.fsproj @@ -70,12 +70,13 @@ - - - + + + + diff --git a/src/ArcCommander/ArcConfiguration.fs b/src/ArcCommander/ArcConfiguration.fs index 2f53eae..1719d1d 100644 --- a/src/ArcCommander/ArcConfiguration.fs +++ b/src/ArcCommander/ArcConfiguration.fs @@ -458,7 +458,7 @@ module ARCExtensions = type ARC with member this.Write(arcPath) = - this.GetWriteContracts() + this.GetWriteContracts(false) |> Array.iter (myWrite arcPath) static member load(config : ArcConfiguration) = diff --git a/tests/ArcCommander.Tests/ArcCommander.Tests.fsproj b/tests/ArcCommander.Tests/ArcCommander.Tests.fsproj index f3c2b76..1c94659 100644 --- a/tests/ArcCommander.Tests/ArcCommander.Tests.fsproj +++ b/tests/ArcCommander.Tests/ArcCommander.Tests.fsproj @@ -23,8 +23,7 @@ - - + diff --git a/tests/ArcCommander.Tests/StudyTests.fs b/tests/ArcCommander.Tests/StudyTests.fs index 16835fd..2b50b02 100644 --- a/tests/ArcCommander.Tests/StudyTests.fs +++ b/tests/ArcCommander.Tests/StudyTests.fs @@ -256,11 +256,16 @@ let testStudyContacts = let investigationFilePath = System.IO.Path.Combine([|GeneralConfiguration.getWorkDirectory config;investigationFileName|]) let studyIdentifier = "BII-S-1" + let studyToCopy = System.IO.Path.Combine([|source;"TestFiles";"studies"|]) + let studyFilePath = System.IO.Path.Combine([|GeneralConfiguration.getWorkDirectory config;"studies"|]) setupArc config + //Copy testInvestigation System.IO.File.Copy(investigationToCopy,investigationFilePath,true) + //Copy testStudy + directoryCopy studyToCopy studyFilePath true let arc = ARC.load(config) diff --git a/tests/ArcCommander.Tests/TestFiles/assays/a_metabolome/isa.assay.xlsx b/tests/ArcCommander.Tests/TestFiles/assays/a_metabolome/isa.assay.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..3323bb3c82930426fc576c0e592e99673305950e GIT binary patch literal 8802 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 literal 0 HcmV?d00001 diff --git a/tests/ArcCommander.Tests/TestFiles/studies/BII-S-1/isa.study.xlsx b/tests/ArcCommander.Tests/TestFiles/studies/BII-S-1/isa.study.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..90c8b5a853571ff78a5f9c92d17a9df65c6e9ced GIT binary patch literal 12928 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 literal 0 HcmV?d00001 diff --git a/tests/ArcCommander.Tests/Utils.fs b/tests/ArcCommander.Tests/Utils.fs index 3550734..02246fd 100644 --- a/tests/ArcCommander.Tests/Utils.fs +++ b/tests/ArcCommander.Tests/Utils.fs @@ -11,6 +11,26 @@ open ArcCommander open ArgumentProcessing open Argu +let rec directoryCopy srcPath dstPath copySubDirs = + + if not <| System.IO.Directory.Exists(srcPath) then + let msg = System.String.Format("Source directory does not exist or could not be found: {0}", srcPath) + raise (System.IO.DirectoryNotFoundException(msg)) + + if not <| System.IO.Directory.Exists(dstPath) then + System.IO.Directory.CreateDirectory(dstPath) |> ignore + + let srcDir = new System.IO.DirectoryInfo(srcPath) + + for file in srcDir.GetFiles() do + let temppath = System.IO.Path.Combine(dstPath, file.Name) + file.CopyTo(temppath, true) |> ignore + + if copySubDirs then + for subdir in srcDir.GetDirectories() do + let dstSubDir = System.IO.Path.Combine(dstPath, subdir.Name) + directoryCopy subdir.FullName dstSubDir copySubDirs + type ArcInvestigation with member this.ContainsStudy(studyIdentifier : string) = From 3897ff83f52b824a5d75b72e5f16f864be612465 Mon Sep 17 00:00:00 2001 From: weil Date: Thu, 25 Jan 2024 09:50:20 +0100 Subject: [PATCH 2/2] update arctrl and fsspreadsheet references --- src/ArcCommander/ArcCommander.fsproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ArcCommander/ArcCommander.fsproj b/src/ArcCommander/ArcCommander.fsproj index 937888d..b1c980f 100644 --- a/src/ArcCommander/ArcCommander.fsproj +++ b/src/ArcCommander/ArcCommander.fsproj @@ -71,12 +71,12 @@ - + - +