feat(interop): CGATS standard dataset (.ti3 / .txt) export and import #94

Closed
opened 2026-08-25 15:48:14 +01:00 by gronod · 1 comment
Owner

Description

Implement robust import and export capabilities for industry-standard CGATS.17 / ISO 28178 spectral and colorimetric measurement files (.ti3, .txt, .csv), enabling interoperability with third-party profiling packages (i1Profiler, BabelColor, Argyll standalone).

Scope & Technical Requirements

  • Native Rust parser and serializer for CGATS ASCII formats (handling NUMBER_OF_FIELDS, BEGIN_DATA_FORMAT, SAMPLE_ID, RGB_R/G/B, LAB_L/A/B, SPECTRAL_* fields).
  • Export .ti3 measurements to CSV and ISO 28178 XML/CGATS formats.
  • Import external .ti3 / CGATS datasets directly into Stage 4 (colprof) and Stage 5 (profcheck).

Acceptance Criteria

  • CGATS measurement files from i1Profiler and Argyll successfully imported into ICCery.
  • Exported .ti3 and .txt files conform to CGATS standard formatting.
  • Unit tests covering parse and serialization of multi-channel spectral datasets.

Dependencies & Ordering

  • Milestone: Milestone 10 (v1.0.0)
  • Ordering: Step 10
  • Dependencies: Completion of Milestone 8 & 9
### Description Implement robust import and export capabilities for industry-standard CGATS.17 / ISO 28178 spectral and colorimetric measurement files (`.ti3`, `.txt`, `.csv`), enabling interoperability with third-party profiling packages (i1Profiler, BabelColor, Argyll standalone). ### Scope & Technical Requirements - Native Rust parser and serializer for CGATS ASCII formats (handling `NUMBER_OF_FIELDS`, `BEGIN_DATA_FORMAT`, `SAMPLE_ID`, `RGB_R/G/B`, `LAB_L/A/B`, `SPECTRAL_*` fields). - Export `.ti3` measurements to CSV and ISO 28178 XML/CGATS formats. - Import external `.ti3` / CGATS datasets directly into Stage 4 (`colprof`) and Stage 5 (`profcheck`). ### Acceptance Criteria - [ ] CGATS measurement files from i1Profiler and Argyll successfully imported into ICCery. - [ ] Exported `.ti3` and `.txt` files conform to CGATS standard formatting. - [ ] Unit tests covering parse and serialization of multi-channel spectral datasets. ### Dependencies & Ordering - **Milestone**: Milestone 10 (`v1.0.0`) - **Ordering**: Step 10 - **Dependencies**: Completion of Milestone 8 & 9
gronod added this to the Milestone 11: Enterprise Colour Workflow (v0.6.0) milestone 2026-08-25 15:48:14 +01:00
gronod added the Kind/Feature
Priority
High
2
labels 2026-08-25 15:48:14 +01:00
Author
Owner

Implemented in v0.6.0 (feat/94-cgats-dataset-interop):

  • Native Rust CGATS and Argyll .ti3 parser (src-tauri/src/cgats.rs).
  • Automatic normalisation of device coordinates (0-255 scaling to 0-100), field aliasing (SAMPLE_ID, LAB_*, SPEC_*), and metadata synthesis (COLOR_REP, DEVICE_CLASS).
  • Canonical .ti3 serializer (to_canonical_ti3) adhering strictly to ArgyllCMS C parser constraints.
  • Backend Tauri commands import_measurement_dataset, export_measurement_dataset, inspect_dataset_preview.
  • Frontend state refactoring in src/js/state.js enabling direct jump and gating bypass to Stage 4 (Profile Generation) and Stage 5 (Verification) when importing external datasets.
  • Stage 1 Import button (#btn-import-dataset) and interop module (src/js/cgats_interop.js).
Implemented in v0.6.0 (`feat/94-cgats-dataset-interop`): - Native Rust CGATS and Argyll `.ti3` parser (`src-tauri/src/cgats.rs`). - Automatic normalisation of device coordinates (0-255 scaling to 0-100), field aliasing (`SAMPLE_ID`, `LAB_*`, `SPEC_*`), and metadata synthesis (`COLOR_REP`, `DEVICE_CLASS`). - Canonical `.ti3` serializer (`to_canonical_ti3`) adhering strictly to ArgyllCMS C parser constraints. - Backend Tauri commands `import_measurement_dataset`, `export_measurement_dataset`, `inspect_dataset_preview`. - Frontend state refactoring in `src/js/state.js` enabling direct jump and gating bypass to Stage 4 (Profile Generation) and Stage 5 (Verification) when importing external datasets. - Stage 1 Import button (`#btn-import-dataset`) and interop module (`src/js/cgats_interop.js`).
Sign in to join this conversation.