Skip to content
Snippets Groups Projects
Commit d0146d8a authored by François  LAURENT's avatar François LAURENT
Browse files

implements #111

parent 90383bb5
No related branches found
No related tags found
No related merge requests found
Pipeline #102341 failed
......@@ -8,14 +8,18 @@ struct Tagger
backend_dir::String
model_instance::String
sandbox::Union{Nothing, String}
output_filenames::Dict{String, String}
end
Tagger(backend_dir, model_instance) = Tagger(backend_dir, model_instance, nothing)
function Tagger(backend_dir, model_instance)
Tagger(backend_dir, model_instance, nothing, Dict{String, String}())
end
function isolate(tagger)
mkpath(joinpath(tagger.backend_dir, "data", "raw"))
rawdatadir = mktempdir(joinpath(tagger.backend_dir, "data", "raw"); cleanup=false)
Tagger(tagger.backend_dir, tagger.model_instance, basename(rawdatadir))
Tagger(tagger.backend_dir, tagger.model_instance, basename(rawdatadir),
tagger.output_filenames)
end
isbackend(path) = isdir(joinpath(path, "models")) &&
......@@ -134,7 +138,8 @@ function pull(tagger::Tagger, dest_dir::String)
parent′= joinpath(dest_dir, relpath(parent, proc_data_dir))
for file in files
src_file = normpath(joinpath(parent, file))
dest_file = normpath(joinpath(parent′, file))
file′= get(tagger.output_filenames, file, file)
dest_file = normpath(joinpath(parent′, file′))
if dest_file != src_file
open(src_file, "r") do f
open(dest_file, "w") do g
......
......@@ -11,8 +11,8 @@ usage = """Larva Tagger.
Usage:
larvatagger.jl open <file-path> [--backends=<path>] [--port=<number>] [--quiet] [--viewer] [--browser] [--manual-label=<label>]
larvatagger.jl import <input-path> [<output-file>] [--id=<id>] [--framerate=<fps>] [--pixelsize=<μm>] [--overrides=<comma-separated-list>] [--default-label=<label>] [--manual-label=<label>] [--decode]
larvatagger.jl train <backend-path> <data-path> <model-instance> [--pretrained-model=<instance>] [--labels=<comma-separated-list>] [--sample-size=<N>] [--balancing-strategy=<strategy>] [--class-weights=<csv>] [--manual-label=<label>] [--layers=<N>] [--iterations=<N>]
larvatagger.jl predict <backend-path> <model-instance> <data-path> [--make-dataset] [--skip-make-dataset] [--data-isolation]
larvatagger.jl train <backend-path> <data-path> <model-instance> [--pretrained-model=<instance>] [--labels=<comma-separated-list>] [--sample-size=<N>] [--balancing-strategy=<strategy>] [--class-weights=<csv>] [--manual-label=<label>] [--layers=<N>] [--iterations=<N>] [--seed=<seed>]
larvatagger.jl predict <backend-path> <model-instance> <data-path> [--output=<filename>] [--make-dataset] [--skip-make-dataset] [--data-isolation]
larvatagger.jl merge <input-path> <input-file> [<output-file>] [--manual-label=<label>] [--decode]
larvatagger.jl -V | --version
larvatagger.jl -h | --help
......@@ -34,6 +34,7 @@ Options:
--sample-size=<N> Sample only N track segments from the data repository.
--layers=<N> (MaggotUBA) Number of layers of the classifier.
--iterations=<N> (MaggotUBA) Number of training iterations (can be two integers separated by a comma).
--seed=<seed> Seed for the backend's random number generators.
--decode Do not encode the labels into integer indices.
--default-label=<label> Label all untagged data as <label>.
--manual-label=<label> Secondary label for manually labelled data [default: edited].
......@@ -42,6 +43,7 @@ Options:
--pretrained-model=<instance> Name of the pretrained encoder (from `pretrained_models` registry).
--balancing-strategy=<strategy> Any of `auto`, `maggotuba`, `none` [default: auto].
--overrides=<comma-separated-list> Comma-separated list of key:value pairs.
-o <filename> --output=<filename> Predicted labels filename.
Commands:
......
......@@ -15,7 +15,7 @@ usage = """Larva Tagger.
Usage:
larvatagger-toolkit.jl import <input-path> [<output-file>] [--id=<id>] [--framerate=<fps>] [--pixelsize=<μm>] [--overrides=<comma-separated-list>] [--default-label=<label>] [--manual-label=<label>] [--decode]
larvatagger-toolkit.jl train <backend-path> <data-path> <model-instance> [--pretrained-model=<instance>] [--labels=<comma-separated-list>] [--sample-size=<N>] [--balancing-strategy=<strategy>] [--class-weights=<csv>] [--manual-label=<label>] [--layers=<N>] [--iterations=<N>] [--seed=<seed>]
larvatagger-toolkit.jl predict <backend-path> <model-instance> <data-path> [--make-dataset] [--skip-make-dataset] [--data-isolation]
larvatagger-toolkit.jl predict <backend-path> <model-instance> <data-path> [--output=<filename>] [--make-dataset] [--skip-make-dataset] [--data-isolation]
larvatagger-toolkit.jl merge <input-path> <input-file> [<output-file>] [--manual-label=<label>] [--decode]
larvatagger-toolkit.jl -V | --version
larvatagger-toolkit.jl -h | --help
......@@ -41,6 +41,7 @@ Options:
--pretrained-model=<instance> Name of the pretrained encoder (from `pretrained_models` registry).
--balancing-strategy=<strategy> Any of `auto`, `maggotuba`, `none` [default: auto].
--overrides=<comma-separated-list> Comma-separated list of key:value pairs.
-o <filename> --output=<filename> Predicted labels filename.
Commands:
......@@ -277,6 +278,7 @@ function main(args=ARGS; exit_on_error=true)
model_instance = parsed_args["<model-instance>"]
data_path = parsed_args["<data-path>"]
data_isolation = parsed_args["--data-isolation"]
output_filename = parsed_args["--output"]
#
datapath = abspath(data_path)
destination = if isfile(datapath)
......@@ -292,6 +294,9 @@ function main(args=ARGS; exit_on_error=true)
end
#
tagger = Tagger(backend_path, model_instance)
if !isnothing(output_filename)
tagger.output_filenames["predicted.label"] = output_filename
end
if data_isolation
tagger = Taggers.isolate(tagger)
@info "Tagger isolated" sandbox=tagger.sandbox
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment