Skip to content

Commit 0bd3462

Browse files
authored
Merge pull request #98 from ampas/hotfix/cleanup
Hotfix/cleanup
2 parents 0849832 + e1b61bd commit 0bd3462

27 files changed

+1752
-190
lines changed

aces/idt/application.py

Lines changed: 53 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
import aces.idt.core.common
1616
from aces.idt.core.constants import DirectoryStructure
17+
from aces.idt.core.trasform_id import generate_idt_urn, is_valid_idt_urn
1718
from aces.idt.framework.project_settings import IDTProjectSettings
1819
from aces.idt.generators import GENERATORS
1920
from aces.idt.generators.base_generator import IDTBaseGenerator
@@ -147,25 +148,33 @@ def _update_project_settings_from_implicit_directory_structure(
147148
for exposure_directory in colour_checker_directory.iterdir():
148149
if re.match(r"-?\d", exposure_directory.name):
149150
EV = exposure_directory.name
150-
self.project_settings.data[DirectoryStructure.COLOUR_CHECKER][
151-
EV
152-
] = list((colour_checker_directory / exposure_directory).glob("*.*"))
151+
self.project_settings.data[DirectoryStructure.COLOUR_CHECKER][EV] = [
152+
file
153+
for file in (colour_checker_directory / exposure_directory).glob(
154+
"*.*"
155+
)
156+
if not file.name.startswith(".")
157+
]
153158

154159
flatfield_directory = (
155160
root_directory / DirectoryStructure.DATA / DirectoryStructure.FLATFIELD
156161
)
157162
if flatfield_directory.exists():
158-
self.project_settings.data[DirectoryStructure.FLATFIELD] = list(
159-
flatfield_directory.glob("*.*")
160-
)
163+
self.project_settings.data[DirectoryStructure.FLATFIELD] = [
164+
file
165+
for file in flatfield_directory.glob("*.*")
166+
if not file.name.startswith(".")
167+
]
161168

162169
grey_card_directory = (
163170
root_directory / DirectoryStructure.DATA / DirectoryStructure.GREY_CARD
164171
)
165172
if grey_card_directory.exists():
166-
self.project_settings.data[DirectoryStructure.GREY_CARD] = list(
167-
flatfield_directory.glob("*.*")
168-
)
173+
self.project_settings.data[DirectoryStructure.GREY_CARD] = [
174+
file
175+
for file in grey_card_directory.glob("*.*")
176+
if not file.name.startswith(".")
177+
]
169178

170179
def _verify_archive(self, root_directory: Path | str) -> None:
171180
"""
@@ -289,7 +298,7 @@ def extract(self, archive: str, directory: str | None = None) -> str:
289298

290299
return directory
291300

292-
def process(self, archive: str | None) -> IDTBaseGenerator:
301+
def process_archive(self, archive: str | None) -> IDTBaseGenerator:
293302
"""
294303
Compute the *IDT* either using given archive *zip* file path or the
295304
current *IDT* project settings if not given.
@@ -326,13 +335,25 @@ def process(self, archive: str | None) -> IDTBaseGenerator:
326335
float(exposure)
327336
] = images
328337

338+
return self.process()
339+
340+
def process(self) -> IDTBaseGenerator:
341+
"""Run the *IDT* generator application process maintaining the execution steps
342+
343+
Returns
344+
-------
345+
:class:`IDTBaseGenerator`
346+
Instantiated *IDT* generator. after the process has been run
347+
348+
"""
349+
self.validate_project_settings()
329350
self.generator.sample()
330351
self.generator.sort()
352+
self.generator.remove_clipping()
331353
self.generator.generate_LUT()
332354
self.generator.filter_LUT()
333355
self.generator.decode()
334356
self.generator.optimise()
335-
336357
return self.generator
337358

338359
def zip(
@@ -360,3 +381,24 @@ def zip(
360381
return self.generator.zip(
361382
output_directory, archive_serialised_generator=archive_serialised_generator
362383
)
384+
385+
def validate_project_settings(self) -> None:
386+
"""Run validation checks on the project settings.
387+
388+
Raises
389+
------
390+
ValueError
391+
If any of the validations fail
392+
"""
393+
# Check the aces_transform_id is a valid idt_urn
394+
if not is_valid_idt_urn(self.project_settings.aces_transform_id):
395+
# If the aces_transform_id is not valid, generate a new one
396+
new_name = generate_idt_urn(
397+
self.project_settings.aces_user_name,
398+
self.project_settings.encoding_colourspace,
399+
self.project_settings.encoding_transfer_function,
400+
1,
401+
)
402+
# Update the project settings with the new name, if this is still invalid
403+
# it will raise an error from the setter
404+
self.project_settings.aces_transform_id = new_name

aces/idt/core/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@
55
SD_ILLUMINANT_ACES,
66
SDS_COLORCHECKER_CLASSIC,
77
SETTINGS_SEGMENTATION_COLORCHECKER_CLASSIC,
8+
calculate_clipped_exposures,
89
clf_processing_elements,
910
error_delta_E,
1011
extract_archive,
12+
find_close_indices,
1113
format_exposure_key,
1214
generate_reference_colour_checker,
1315
get_sds_colour_checker,
@@ -24,6 +26,7 @@
2426
)
2527
from .constants import (
2628
CAT,
29+
CLIPPING_THRESHOLD,
2730
DecodingMethods,
2831
DirectoryStructure,
2932
Interpolators,
@@ -66,9 +69,12 @@
6669
"slugify",
6770
"sort_exposure_keys",
6871
"working_directory",
72+
"find_close_indices",
73+
"calculate_clipped_exposures",
6974
]
7075

7176
__all__ += [
77+
"CLIPPING_THRESHOLD",
7278
"CAT",
7379
"DirectoryStructure",
7480
"DecodingMethods",

0 commit comments

Comments
 (0)