Synthetic affine review · version 0.2.1.dev0
Engineering prototype. Researcher acceptance is unconfirmed. No decision is recorded by this report. Synthetic ROI export requires a matching explicit decision. Geometric checks do not establish anatomical correctness.
synthetic-source → synthetic-target
Previews are limited to 512 pixels per side. Resampling changes pixels; original inputs remain unchanged.
| Check | Result | Evidence |
|---|---|---|
| physical_calibration | not_evaluated | Physical checks need calibration for both images. |
| rotation | pass | Absolute polar rotation: 0 degrees in level0_pixels. |
| principal_scales | pass | Principal scales: [1.0, 1.0] in level0_pixels. |
| shear | pass | Normalized polar off-diagonal stretch: 0. |
| source_footprint | warning | Some transformed source support lies outside the target preview. |
| independent_landmarks | pass | 3 supplied independent landmarks; maximum error 0 target level-0 pixels. Independence is declared by the fixture author. |
| source_roi_preview | pass | All source ROI boundaries lie within the supplied preview. |
| target_roi_preview | pass | All target ROI boundaries lie within the supplied preview. |
No decision is recorded by this report. Review all checks and ROI boundaries before recording an explicit CLI decision. Every warning and not-evaluated check needs an acknowledgment. Out-of-bounds or invalid geometry cannot be approved.
Review fingerprint: a983e88d86394fc9f847ff424278bcb89dba2aaac1fffb9d69b411ca8e17570d
| ROI | Shape | Parts / holes | Source area (px²) | Target area (px²) |
|---|---|---|---|---|
| rectangle-with-hole Authored rectangle and excluded hole | Polygon | 1 / 1 | 2700 | 2700 |
| two-separated-regions Authored triangle and small box | MultiPolygon | 2 / 0 | 3775 | 3775 |
{
"scope": "synthetic_engineering",
"status": "decision_required",
"export_available": false,
"tool_version": "0.2.1.dev0",
"review_fingerprint": "a983e88d86394fc9f847ff424278bcb89dba2aaac1fffb9d69b411ca8e17570d",
"bindings": {
"manifest_sha256": "a24c2a9a9d59ca6d3d52fe5b667b188bcc27815d7f277f705802a9490a88c239",
"annotations_sha256": "fe1ec03ba9a9d5d28becd6fff1fda88b55f65037502654e7642e83af7890691b",
"source_image_sha256": "f156a1f2cbaf93f7429834a4230d0733bca151f2426478bb7315715e6eb9512a",
"target_image_sha256": "9d2272cf448ddb939a0248527c2a35925ebed1c1479d851cfc7d289303a19298",
"check_input_fingerprint": "296c0d151a7433d071f95c37869b20e0c9d679f8e384d239fc56f9c833e2be37",
"engine_fingerprint": "53ca6ddeb4d989f0cd915cd8f3706dc702538b06ecb2d4298e52f4e34988dcf9",
"workflow_fingerprint": "470af6025eda5ea3d776455f7fa68aa83c40be374c37198c2a3346a5f2b3cc70"
},
"engines": {
"numpy": "2.5.3",
"pillow": "12.3.0",
"jsonschema": "4.26.0",
"shapely": "2.1.2",
"geos": "3.13.1"
},
"required_acknowledgments": [
"physical_calibration",
"source_footprint"
],
"checks": [
{
"code": "physical_calibration",
"status": "not_evaluated",
"message": "Physical checks need calibration for both images."
},
{
"code": "rotation",
"status": "pass",
"message": "Absolute polar rotation: 0 degrees in level0_pixels."
},
{
"code": "principal_scales",
"status": "pass",
"message": "Principal scales: [1.0, 1.0] in level0_pixels."
},
{
"code": "shear",
"status": "pass",
"message": "Normalized polar off-diagonal stretch: 0."
},
{
"code": "source_footprint",
"status": "warning",
"message": "Some transformed source support lies outside the target preview."
},
{
"code": "independent_landmarks",
"status": "pass",
"message": "3 supplied independent landmarks; maximum error 0 target level-0 pixels. Independence is declared by the fixture author."
},
{
"code": "source_roi_preview",
"status": "pass",
"message": "All source ROI boundaries lie within the supplied preview."
},
{
"code": "target_roi_preview",
"status": "pass",
"message": "All target ROI boundaries lie within the supplied preview."
}
],
"source_annotations": [
{
"id": "rectangle-with-hole",
"label": "Authored rectangle and excluded hole",
"type": "Polygon",
"parts": 1,
"holes": 1,
"area_pixels_squared": 2700.0,
"bounds_xyxy": [
60.0,
80.0,
110.0,
140.0
]
},
{
"id": "two-separated-regions",
"label": "Authored triangle and small box",
"type": "MultiPolygon",
"parts": 2,
"holes": 0,
"area_pixels_squared": 3775.0,
"bounds_xyxy": [
130.0,
140.0,
300.0,
335.0
]
}
],
"target_annotations": [
{
"id": "rectangle-with-hole",
"label": "Authored rectangle and excluded hole",
"type": "Polygon",
"parts": 1,
"holes": 1,
"area_pixels_squared": 2700.0,
"bounds_xyxy": [
100.0,
104.0,
150.0,
164.0
]
},
{
"id": "two-separated-regions",
"label": "Authored triangle and small box",
"type": "MultiPolygon",
"parts": 2,
"holes": 0,
"area_pixels_squared": 3775.0,
"bounds_xyxy": [
170.0,
164.0,
340.0,
359.0
]
}
],
"preview_coverage": {
"source": {
"total_rois": 2,
"fully_visible_rois": 2,
"not_fully_visible_ids": []
},
"target": {
"total_rois": 2,
"fully_visible_rois": 2,
"not_fully_visible_ids": []
}
},
"limitations": [
"Synthetic engineering decisions do not establish researcher acceptance or anatomical correctness.",
"This local record prevents accidental stale export; it is not authentication or a tamper-proof audit.",
"Pixel ROI JSON is a SectionCheck profile; QuPath and VALIS interoperability remain unverified."
]
}Source level-0 integer pixel centers → target level-0 integer pixel centers. Column xy coordinates, x right and y down. Policy basis: level0_pixels.
{
"source_id": "synthetic-source",
"target_id": "synthetic-target",
"coordinate_contract": {
"vectors": "column_xy1",
"axes": "x_right_y_down",
"pixel_centers": "integer"
},
"transform": {
"type": "affine_2d",
"direction": "source_level0_to_target_level0",
"matrix": [
[
1,
0,
40
],
[
0,
1,
24
],
[
0,
0,
1
]
],
"backend": "authored-synthetic",
"backend_version": null
},
"source_frame": [
[
1,
0,
0
],
[
0,
1,
0
],
[
0,
0,
1
]
],
"target_frame": [
[
1,
0,
0
],
[
0,
1,
0
],
[
0,
0,
1
]
],
"policy": {
"id": "synthetic-demonstration-not-researcher-approved",
"basis": "level0_pixels",
"max_abs_rotation_degrees": 15,
"principal_scale_min": 0.9,
"principal_scale_max": 1.1,
"max_normalized_shear": 0.1,
"landmark_tolerance_pixels": 0.01
},
"data_provenance": {
"domain": "synthetic",
"source": "Original geometric shapes generated by examples/generate_synthetic.py; no tissue data",
"license": "Apache-2.0"
},
"independent_landmarks": [
{
"id": "rectangle-top-left",
"error_target_level0_pixels": 0.0
},
{
"id": "triangle-right",
"error_target_level0_pixels": 0.0
},
{
"id": "ellipse-center",
"error_target_level0_pixels": 0.0
}
]
}Input/tool/schema fingerprint: 296c0d151a7433d071f95c37869b20e0c9d679f8e384d239fc56f9c833e2be37. This identifies the reviewed input; it is not an approval or authentication record.
The Python source and manifest schema accompany this local prototype. The motivating VALIS discussion asks about optimizer constraints; this report only reviews an existing transform.