From 080690ed71a3c17b844bce0033d8f871e7e1aa19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Laurent?= <francois.laurent@posteo.net> Date: Mon, 13 Feb 2023 19:25:50 +0100 Subject: [PATCH] pushdependency! checks for duplicates (https://gitlab.pasteur.fr/nyx/larvatagger.jl/-/issues/97) --- src/Datasets.jl | 7 ++++++- src/Formats.jl | 8 ++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/Datasets.jl b/src/Datasets.jl index 723741b..5f655c0 100644 --- a/src/Datasets.jl +++ b/src/Datasets.jl @@ -1221,7 +1221,12 @@ end function pushdependency!(run::Run, datafile::String) if haskey(run.attributes, :dependencies) deps = object_or_array_of_objects(run.attributes[:dependencies]) - push!(deps, as_dependency(datafile)) + dep = as_dependency(datafile) + if (deps isa Vector && dep in deps) || dep == deps + @debug "Dependency already registered" dependency=dep + else + push!(deps, dep) + end run.attributes[:dependencies] = deps else run.attributes[:dependencies] = as_dependency(datafile) diff --git a/src/Formats.jl b/src/Formats.jl index eea33f6..1273d6b 100644 --- a/src/Formats.jl +++ b/src/Formats.jl @@ -520,13 +520,13 @@ function load!(file::FIMTrack) framerate=file.framerate, pixelsize=file.pixelsize, kwargs...)) - metadata = get!(file.run.attributes, :metadata, OrderedDict{Symbol, Any}()) - camera = get!(metadata, :camera, OrderedDict{Symbol, Any}()) + metadata = get!(OrderedDict{Symbol, Any}, file.run.attributes, :metadata) + camera = get!(OrderedDict{Symbol, Any}, metadata, :camera) camera[:framerate] = file.framerate if !isnothing(file.pixelsize) camera[:pixelsize] = file.pixelsize end - units = get!(file.run.attributes, :units, OrderedDict{Symbol, String}()) + units = get!(OrderedDict{Symbol, String}, file.run.attributes, :units) units[:t] = "s" units[:framerate] = "fps" if !isnothing(file.pixelsize) @@ -594,7 +594,7 @@ function labelledfiles(repository::String=".", chunks::Bool=false; push!(files′, file′) if file′ isa JSONLabels for dep in getdependencies(file′) - push!(get!(deps, dep, JSONLabels[]), file′) + push!(get!(()->JSONLabels[], deps, dep), file′) end end end -- GitLab