SectionCheck

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.

Image pair

synthetic-source → synthetic-target

Source preview
Source preview
Target preview
Target preview
Source resampled into target
Source resampled into target
50% overlay (visual review only)
50% overlay (visual review only)
Source ROI boundaries (including holes)
Source ROI boundaries (including holes)
Proposed target ROI boundaries
Proposed target ROI boundaries

Previews are limited to 512 pixels per side. Resampling changes pixels; original inputs remain unchanged.

Checks

CheckResultEvidence
physical_calibrationnot_evaluatedPhysical checks need calibration for both images.
rotationpassAbsolute polar rotation: 0 degrees in level0_pixels.
principal_scalespassPrincipal scales: [1.0, 1.0] in level0_pixels.
shearpassNormalized polar off-diagonal stretch: 0.
source_footprintwarningSome transformed source support lies outside the target preview.
independent_landmarkspass3 supplied independent landmarks; maximum error 0 target level-0 pixels. Independence is declared by the fixture author.
source_roi_previewpassAll source ROI boundaries lie within the supplied preview.
target_roi_previewpassAll target ROI boundaries lie within the supplied preview.

Synthetic annotation decision

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

ROIShapeParts / holesSource area (px²)Target area (px²)
rectangle-with-hole
Authored rectangle and excluded hole
Polygon1 / 127002700
two-separated-regions
Authored triangle and small box
MultiPolygon2 / 037753775
Technical review record (JSON)
{
  "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."
  ]
}

Coordinate and data record

Source level-0 integer pixel centers → target level-0 integer pixel centers. Column xy coordinates, x right and y down. Policy basis: level0_pixels.

Transform, frames, policy and data provenance (JSON)
{
  "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
    }
  ]
}

Provenance and limits

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.