Skip to content
This repository was archived by the owner on Jul 28, 2025. It is now read-only.

Commit 03b4e9d

Browse files
Feat: Move MakeRelease after FinalCheck to release only the valid morphologies (#153)
1 parent 073dea0 commit 03b4e9d

File tree

4 files changed

+67
-66
lines changed

4 files changed

+67
-66
lines changed

src/morphology_workflows/tasks/repair.py

Lines changed: 64 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -161,70 +161,6 @@ def inputs(self):
161161
return {RepairNeurites: {"morph_path": "morph_path"}}
162162

163163

164-
class MakeRelease(StrIndexMixin, SetValidationTask):
165-
"""Make a morpology release, with three possible folders: zero-diameter, unravel or repair."""
166-
167-
release_path = luigi.OptionalParameter(
168-
default=None,
169-
description=":str: Path to the directory in which all the releases will be exported",
170-
)
171-
zero_diameter_path = luigi.OptionalParameter(
172-
default=None, description=":str: Path to zero diameter morphologies (not created if None)"
173-
)
174-
unravel_path = luigi.OptionalParameter(
175-
default=None, description=":str: Path to unravel morphologies (not created if None)"
176-
)
177-
repair_path = luigi.Parameter(
178-
default="repaired_release",
179-
description=":str: Path to repaired morphologies (not created if None)",
180-
)
181-
duplicate_layers = luigi.BoolParameter(
182-
default=True, description=":bool: Duplicate entries with mixed layer mtypes, i.e. L23_PC."
183-
)
184-
185-
nb_processes = luigi.OptionalIntParameter(
186-
default=None,
187-
description=":int: The number of parallel processes to use.",
188-
significant=False,
189-
)
190-
191-
extensions = [".asc", ".h5", ".swc"]
192-
output_columns = {}
193-
for extension in extensions:
194-
ext = extension[1:]
195-
output_columns.update(
196-
{
197-
f"zero_diameter_morph_db_path_{ext}": None,
198-
f"unravel_morph_db_path_{ext}": None,
199-
f"repair_morph_db_path_{ext}": None,
200-
f"zero_diameter_release_morph_path_{ext}": None,
201-
f"unravel_release_morph_path_{ext}": None,
202-
f"repair_release_morph_path_{ext}": None,
203-
"layer": None,
204-
}
205-
)
206-
207-
validation_function = make_release
208-
209-
def kwargs(self):
210-
return {
211-
"release_path": self.release_path,
212-
"zero_diameter_path": self.zero_diameter_path,
213-
"unravel_path": self.unravel_path,
214-
"repair_path": self.repair_path,
215-
"extensions": self.extensions,
216-
"duplicate_layers": self.duplicate_layers,
217-
"nb_processes": self.nb_processes,
218-
}
219-
220-
def inputs(self):
221-
return {
222-
FixZeroDiameters: {"morph_path": "zero_diameter_morph_path"},
223-
Unravel: {"morph_path": "unravel_morph_path"},
224-
RepairNeurites: {"morph_path": "repair_morph_path"},
225-
}
226-
227-
228164
class PlotRepair(StrIndexMixin, SkippableMixin(), ElementValidationTask):
229165
"""Plot the cut leaves on repaired cells."""
230166

@@ -364,3 +300,67 @@ def kwargs(self):
364300

365301
def inputs(self):
366302
return {RepairNeurites: {"morph_path": "morph_path"}}
303+
304+
305+
class MakeRelease(StrIndexMixin, SetValidationTask):
306+
"""Make a morpology release, with three possible folders: zero-diameter, unravel or repair."""
307+
308+
release_path = luigi.OptionalParameter(
309+
default=None,
310+
description=":str: Path to the directory in which all the releases will be exported",
311+
)
312+
zero_diameter_path = luigi.OptionalParameter(
313+
default=None, description=":str: Path to zero diameter morphologies (not created if None)"
314+
)
315+
unravel_path = luigi.OptionalParameter(
316+
default=None, description=":str: Path to unravel morphologies (not created if None)"
317+
)
318+
repair_path = luigi.Parameter(
319+
default="repaired_release",
320+
description=":str: Path to repaired morphologies (not created if None)",
321+
)
322+
duplicate_layers = luigi.BoolParameter(
323+
default=True, description=":bool: Duplicate entries with mixed layer mtypes, i.e. L23_PC."
324+
)
325+
326+
nb_processes = luigi.OptionalIntParameter(
327+
default=None,
328+
description=":int: The number of parallel processes to use.",
329+
significant=False,
330+
)
331+
332+
extensions = [".asc", ".h5", ".swc"]
333+
output_columns = {}
334+
for extension in extensions:
335+
ext = extension[1:]
336+
output_columns.update(
337+
{
338+
f"zero_diameter_morph_db_path_{ext}": None,
339+
f"unravel_morph_db_path_{ext}": None,
340+
f"repair_morph_db_path_{ext}": None,
341+
f"zero_diameter_release_morph_path_{ext}": None,
342+
f"unravel_release_morph_path_{ext}": None,
343+
f"repair_release_morph_path_{ext}": None,
344+
"layer": None,
345+
}
346+
)
347+
348+
validation_function = make_release
349+
350+
def kwargs(self):
351+
return {
352+
"release_path": self.release_path,
353+
"zero_diameter_path": self.zero_diameter_path,
354+
"unravel_path": self.unravel_path,
355+
"repair_path": self.repair_path,
356+
"extensions": self.extensions,
357+
"duplicate_layers": self.duplicate_layers,
358+
"nb_processes": self.nb_processes,
359+
}
360+
361+
def inputs(self):
362+
return {
363+
FixZeroDiameters: {"morph_path": "zero_diameter_morph_path"},
364+
Unravel: {"morph_path": "unravel_morph_path"},
365+
FinalCheck: {"morph_path": "repair_morph_path"},
366+
}

tests/data/test_example_1/out_repaired/MakeRelease/report.csv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ astrocyte,True,0,,,out_repaired/FixZeroDiameters/data/astrocyte.h5,out_repaired/
55
circle_contour,True,0,,,out_repaired/FixZeroDiameters/data/circle_contour.asc,out_repaired/Unravel/data/circle_contour.asc,out_repaired/RepairNeurites/data/circle_contour.asc,,,repair_release/asc/neurondb.xml,,,repair_release/asc/circle_contour.asc,1,,,repair_release/h5/neurondb.xml,,,repair_release/h5/circle_contour.h5,,,repair_release/swc/neurondb.xml,,,repair_release/swc/circle_contour.swc
66
complexe,True,0,,,out_repaired/FixZeroDiameters/data/complexe.swc,out_repaired/Unravel/data/complexe.swc,out_repaired/RepairNeurites/data/complexe.swc,,,repair_release/asc/neurondb.xml,,,repair_release/asc/complexe.asc,1,,,repair_release/h5/neurondb.xml,,,repair_release/h5/complexe.h5,,,repair_release/swc/neurondb.xml,,,repair_release/swc/complexe.swc
77
disconnected_neurite,True,0,,,out_repaired/FixZeroDiameters/data/disconnected_neurite.swc,out_repaired/Unravel/data/disconnected_neurite.swc,out_repaired/RepairNeurites/data/disconnected_neurite.swc,,,repair_release/asc/neurondb.xml,,,repair_release/asc/disconnected_neurite.asc,1,,,repair_release/h5/neurondb.xml,,,repair_release/h5/disconnected_neurite.h5,,,repair_release/swc/neurondb.xml,,,repair_release/swc/disconnected_neurite.swc
8-
iterators,True,0,,,out_repaired/FixZeroDiameters/data/iterators.asc,out_repaired/Unravel/data/iterators.asc,out_repaired/RepairNeurites/data/iterators.asc,,,repair_release/asc/neurondb.xml,,,repair_release/asc/iterators.asc,1,,,repair_release/h5/neurondb.xml,,,repair_release/h5/iterators.h5,,,repair_release/swc/neurondb.xml,,,repair_release/swc/iterators.swc
8+
iterators,False,1,,,out_repaired/FixZeroDiameters/data/iterators.asc,out_repaired/Unravel/data/iterators.asc,out_repaired/RepairNeurites/data/iterators.asc,,,,,,,1,,,,,,,,,,,,
99
mono-type,True,0,,,out_repaired/FixZeroDiameters/data/mono-type.asc,out_repaired/Unravel/data/mono-type.asc,out_repaired/RepairNeurites/data/mono-type.asc,,,repair_release/asc/neurondb.xml,,,repair_release/asc/mono-type.asc,1,,,repair_release/h5/neurondb.xml,,,repair_release/h5/mono-type.h5,,,repair_release/swc/neurondb.xml,,,repair_release/swc/mono-type.swc
1010
multiple_point_section,True,0,,,out_repaired/FixZeroDiameters/data/multiple_point_section.asc,out_repaired/Unravel/data/multiple_point_section.asc,out_repaired/RepairNeurites/data/multiple_point_section.asc,,,repair_release/asc/neurondb.xml,,,repair_release/asc/multiple_point_section.asc,1,,,repair_release/h5/neurondb.xml,,,repair_release/h5/multiple_point_section.h5,,,repair_release/swc/neurondb.xml,,,repair_release/swc/multiple_point_section.swc
1111
nested_single_children,True,0,,,out_repaired/FixZeroDiameters/data/nested_single_children.asc,out_repaired/Unravel/data/nested_single_children.asc,out_repaired/RepairNeurites/data/nested_single_children.asc,,,repair_release/asc/neurondb.xml,,,repair_release/asc/nested_single_children.asc,1,,,repair_release/h5/neurondb.xml,,,repair_release/h5/nested_single_children.h5,,,repair_release/swc/neurondb.xml,,,repair_release/swc/nested_single_children.swc

0 commit comments

Comments
 (0)