Skip to content

Conversation

@hongquanli
Copy link
Contributor

Summary

New Documentation

configuration-system.md (Main Guide)

  • Architecture overview with directory structure
  • Machine configs (illumination, confocal, camera mappings)
  • User profiles (general.yaml, objective.yaml)
  • Merge logic explanation
  • Confocal override system
  • Laser AF configuration
  • Best practices and troubleshooting

configuration-api.md (Developer Reference)

  • ConfigRepository full API
  • All Pydantic models
  • Utility functions
  • Access patterns for widgets, controllers, subprocesses
  • Error handling and testing patterns

configuration-migration.md (Migration Guide)

  • Auto-migration on startup
  • Manual migration with tools/migrate_acquisition_configs.py
  • Channel name mapping logic
  • Field mapping (XML → YAML)
  • Troubleshooting and rollback

Test plan

  • All cross-references between docs verified
  • YAML examples match actual file structure
  • Review for accuracy and completeness

🤖 Generated with Claude Code

hongquanli and others added 4 commits January 12, 2026 03:09
Add documentation for the YAML-based configuration system introduced in
PRs #417 and #441:

- configuration-system.md: Main guide covering architecture, machine
  configs (illumination, confocal, camera mappings), user profiles
  (general.yaml, objective.yaml), merge logic, and best practices

- configuration-api.md: Developer reference for ConfigRepository API,
  Pydantic models, utility functions, and access patterns

- configuration-migration.md: Migration guide from legacy XML/JSON
  format including auto-migration, manual migration script usage,
  and troubleshooting

- Update automation.md to reference new configuration docs

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix has_legacy_configs_to_migrate() signature (takes profile and base_path)
- Clarify confocal_config.yaml structure matches Pydantic model
- Add note about .example file format difference

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The method signature is get_channels(objective), not get_channels().
Updated the widget example to show correct usage.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Mark camera_mappings.yaml as optional (for multi-camera setups)
- Mark intensity_calibrations/ as optional in directory diagram
- Mark illumination_channel_config.yaml as required

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds comprehensive documentation for Squid's YAML-based configuration system, covering user guides, developer API reference, and migration procedures for upgrading from the legacy XML format.

Changes:

  • Three new documentation files (configuration-system.md, configuration-api.md, configuration-migration.md) providing complete coverage of the configuration architecture
  • Updated cross-reference in automation.md to point to the new configuration documentation

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

File Description
software/docs/configuration-system.md Main user guide covering architecture, machine configs, user profiles, merge logic, and best practices
software/docs/configuration-api.md Developer reference documenting ConfigRepository API, Pydantic models, and code integration patterns
software/docs/configuration-migration.md Migration guide for transitioning from legacy XML/JSON format to YAML
software/docs/automation.md Updated cross-reference to point to new configuration system documentation

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

| `public_properties` | Properties available in `general.yaml` |
| `objective_specific_properties` | Properties only in objective-specific files |

> **Note**: The `confocal_config.yaml.example` file in `machine_configs/` uses a simplified format for reference. When creating your actual config, use the structure shown above which matches the Pydantic model.
Copy link

Copilot AI Jan 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This note refers to a confocal_config.yaml.example file but doesn't explain what the simplified format looks like or why it differs from the actual format. Consider adding a brief explanation of the differences or removing the reference if the example file uses the same format.

Suggested change
> **Note**: The `confocal_config.yaml.example` file in `machine_configs/` uses a simplified format for reference. When creating your actual config, use the structure shown above which matches the Pydantic model.
> **Note**: The `confocal_config.yaml.example` file in `machine_configs/` is a minimal example: it only includes a small subset of filter-wheel mappings and properties to keep the file easy to read. Your actual `confocal_config.yaml` must follow the full structure documented above (including `version`, `filter_wheel_mappings`, `public_properties`, and `objective_specific_properties`); you can copy the example as a starting point and then extend it to match your hardware.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants