From 9c09b8a0b93390da876fd7283afa77e3087785a3 Mon Sep 17 00:00:00 2001 From: Davis Vann Bennett Date: Wed, 2 Oct 2024 21:33:06 -0400 Subject: [PATCH 1/9] allow empty view registrations, consistently use the term elements for elements, fix an ordering problem with the top level sequence description field --- src/pydantic_bigstitcher/__init__.py | 23 +- tests/fixture/bigstitcher_4.xml | 3921 ++++++++++++++++++++++ tests/fixture/bigstitcher_5.xml | 4559 ++++++++++++++++++++++++++ tests/test_models.py | 17 +- 4 files changed, 8499 insertions(+), 21 deletions(-) create mode 100644 tests/fixture/bigstitcher_4.xml create mode 100644 tests/fixture/bigstitcher_5.xml diff --git a/src/pydantic_bigstitcher/__init__.py b/src/pydantic_bigstitcher/__init__.py index d7392c6..5310dfd 100644 --- a/src/pydantic_bigstitcher/__init__.py +++ b/src/pydantic_bigstitcher/__init__.py @@ -9,7 +9,7 @@ class BasePath(BaseXmlModel): - typ: Literal["relative", "absolute"] = attr(name="type") + type: Literal["relative", "absolute"] = attr(name="type") path: str class ZGroup(BaseXmlModel, tag="zgroup"): @@ -19,15 +19,15 @@ class ZGroup(BaseXmlModel, tag="zgroup"): class ZGroups(BaseXmlModel): - zgroups: list[ZGroup] = element(tag="zgroup") + elements: list[ZGroup] = element(tag="zgroup") class Zarr(BaseXmlModel): - typ: str = attr(name="type") + type: str = attr(name="type") path: str class N5(BaseXmlModel): - typ: str = attr(name='type') + type: str = attr(name='type') path: str @@ -83,13 +83,12 @@ class ChannelAttribute(BaseXmlModel, tag='Attributes'): class ViewSetups(BaseXmlModel): # the order of the definition of these attributes should match the order of the data in xml - view_setups: list[ViewSetup] = element(tag="ViewSetup") + elements: list[ViewSetup] = element(tag="ViewSetup") attributes: list[IlluminationAttribute | TileAttribute | AngleAttribute | ChannelAttribute] = element(tag='Attributes') - class PatternTimePoints(BaseXmlModel, tag="Timepoints"): - typ: Literal["pattern"] = attr(name="type") - timepoints: list[str] = element(tag="integerpattern") + type: Literal["pattern"] = attr(name="type") + integerpattern: list[str] = element() class MissingView(BaseXmlModel): @@ -98,10 +97,10 @@ class MissingView(BaseXmlModel): class MissingViews(BaseXmlModel): - views: list[MissingView] = element("MissingView", default=None) + elements: list[MissingView] = element("MissingView", default=None) -class SequenceDescription(BaseXmlModel): +class SequenceDescription(BaseXmlModel, search_mode='unordered'): """ https://github.com/bigdataviewer/spimdata/blob/46c3878baef80cc4170a33012c8281481dbbfcb2/src/main/java/mpicbg/spim/data/generic/sequence/AbstractSequenceDescription.java#L52 """ @@ -143,7 +142,7 @@ class ViewInterestPointsFile(BaseXmlModel): path: str class ViewInterestPoints(BaseXmlModel): - data: list[ViewInterestPointsFile] = element(tag='ViewInterestPointsFile') + elements: list[ViewInterestPointsFile] | None = element(tag='ViewInterestPointsFile', default=None) class BoundingBox(BaseXmlModel): """ @@ -157,7 +156,7 @@ class BoundingBoxes(BaseXmlModel): """ https://github.com/PreibischLab/multiview-reconstruction/blob/master/src/main/java/net/preibisch/mvrecon/fiji/spimdata/boundingbox/BoundingBoxes.java#L29 """ - data: list[BoundingBox] | None = element(tag='BoundingBox', default=None) + elements: list[BoundingBox] | None = element(tag='BoundingBox', default=None) class PointSpreadFunctions(BaseXmlModel): ... diff --git a/tests/fixture/bigstitcher_4.xml b/tests/fixture/bigstitcher_4.xml new file mode 100644 index 0000000..69f179f --- /dev/null +++ b/tests/fixture/bigstitcher_4.xml @@ -0,0 +1,3921 @@ + + + . + + + dataset.n5 + + + + 0 + 0 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 0 + 0 + + + + 1 + 1 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 0 + 0 + + + + 10 + 10 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 3 + 0 + + + + 100 + 100 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 33 + 0 + + + + 101 + 101 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 33 + 0 + + + + 102 + 102 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 34 + 0 + + + + 103 + 103 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 34 + 0 + + + + 104 + 104 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 34 + 0 + + + + 105 + 105 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 35 + 0 + + + + 106 + 106 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 35 + 0 + + + + 107 + 107 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 35 + 0 + + + + 108 + 108 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 36 + 0 + + + + 109 + 109 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 36 + 0 + + + + 11 + 11 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 3 + 0 + + + + 110 + 110 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 36 + 0 + + + + 111 + 111 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 37 + 0 + + + + 112 + 112 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 37 + 0 + + + + 113 + 113 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 37 + 0 + + + + 114 + 114 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 38 + 0 + + + + 115 + 115 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 38 + 0 + + + + 116 + 116 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 38 + 0 + + + + 117 + 117 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 39 + 0 + + + + 118 + 118 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 39 + 0 + + + + 119 + 119 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 39 + 0 + + + + 12 + 12 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 4 + 0 + + + + 120 + 120 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 40 + 0 + + + + 121 + 121 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 40 + 0 + + + + 122 + 122 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 40 + 0 + + + + 123 + 123 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 41 + 0 + + + + 124 + 124 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 41 + 0 + + + + 125 + 125 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 41 + 0 + + + + 126 + 126 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 42 + 0 + + + + 127 + 127 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 42 + 0 + + + + 128 + 128 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 42 + 0 + + + + 129 + 129 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 43 + 0 + + + + 13 + 13 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 4 + 0 + + + + 130 + 130 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 43 + 0 + + + + 131 + 131 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 43 + 0 + + + + 132 + 132 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 44 + 0 + + + + 133 + 133 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 44 + 0 + + + + 134 + 134 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 44 + 0 + + + + 135 + 135 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 45 + 0 + + + + 136 + 136 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 45 + 0 + + + + 137 + 137 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 45 + 0 + + + + 138 + 138 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 46 + 0 + + + + 139 + 139 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 46 + 0 + + + + 14 + 14 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 4 + 0 + + + + 140 + 140 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 46 + 0 + + + + 141 + 141 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 47 + 0 + + + + 142 + 142 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 47 + 0 + + + + 143 + 143 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 47 + 0 + + + + 144 + 144 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 48 + 0 + + + + 145 + 145 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 48 + 0 + + + + 146 + 146 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 48 + 0 + + + + 15 + 15 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 5 + 0 + + + + 16 + 16 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 5 + 0 + + + + 17 + 17 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 5 + 0 + + + + 18 + 18 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 6 + 0 + + + + 19 + 19 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 6 + 0 + + + + 2 + 2 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 0 + 0 + + + + 20 + 20 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 6 + 0 + + + + 21 + 21 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 7 + 0 + + + + 22 + 22 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 7 + 0 + + + + 23 + 23 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 7 + 0 + + + + 24 + 24 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 8 + 0 + + + + 25 + 25 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 8 + 0 + + + + 26 + 26 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 8 + 0 + + + + 27 + 27 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 9 + 0 + + + + 28 + 28 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 9 + 0 + + + + 29 + 29 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 9 + 0 + + + + 3 + 3 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 1 + 0 + + + + 30 + 30 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 10 + 0 + + + + 31 + 31 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 10 + 0 + + + + 32 + 32 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 10 + 0 + + + + 33 + 33 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 11 + 0 + + + + 34 + 34 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 11 + 0 + + + + 35 + 35 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 11 + 0 + + + + 36 + 36 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 12 + 0 + + + + 37 + 37 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 12 + 0 + + + + 38 + 38 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 12 + 0 + + + + 39 + 39 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 13 + 0 + + + + 4 + 4 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 1 + 0 + + + + 40 + 40 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 13 + 0 + + + + 41 + 41 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 13 + 0 + + + + 42 + 42 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 14 + 0 + + + + 43 + 43 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 14 + 0 + + + + 44 + 44 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 14 + 0 + + + + 45 + 45 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 15 + 0 + + + + 46 + 46 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 15 + 0 + + + + 47 + 47 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 15 + 0 + + + + 48 + 48 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 16 + 0 + + + + 49 + 49 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 16 + 0 + + + + 5 + 5 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 1 + 0 + + + + 50 + 50 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 16 + 0 + + + + 51 + 51 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 17 + 0 + + + + 52 + 52 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 17 + 0 + + + + 53 + 53 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 17 + 0 + + + + 54 + 54 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 18 + 0 + + + + 55 + 55 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 18 + 0 + + + + 56 + 56 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 18 + 0 + + + + 57 + 57 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 19 + 0 + + + + 58 + 58 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 19 + 0 + + + + 59 + 59 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 19 + 0 + + + + 6 + 6 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 2 + 0 + + + + 60 + 60 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 20 + 0 + + + + 61 + 61 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 20 + 0 + + + + 62 + 62 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 20 + 0 + + + + 63 + 63 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 21 + 0 + + + + 64 + 64 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 21 + 0 + + + + 65 + 65 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 21 + 0 + + + + 66 + 66 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 22 + 0 + + + + 67 + 67 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 22 + 0 + + + + 68 + 68 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 22 + 0 + + + + 69 + 69 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 23 + 0 + + + + 7 + 7 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 2 + 0 + + + + 70 + 70 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 23 + 0 + + + + 71 + 71 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 23 + 0 + + + + 72 + 72 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 24 + 0 + + + + 73 + 73 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 24 + 0 + + + + 74 + 74 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 24 + 0 + + + + 75 + 75 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 25 + 0 + + + + 76 + 76 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 25 + 0 + + + + 77 + 77 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 25 + 0 + + + + 78 + 78 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 26 + 0 + + + + 79 + 79 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 26 + 0 + + + + 8 + 8 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 2 + 0 + + + + 80 + 80 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 26 + 0 + + + + 81 + 81 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 27 + 0 + + + + 82 + 82 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 27 + 0 + + + + 83 + 83 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 27 + 0 + + + + 84 + 84 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 28 + 0 + + + + 85 + 85 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 28 + 0 + + + + 86 + 86 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 28 + 0 + + + + 87 + 87 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 29 + 0 + + + + 88 + 88 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 29 + 0 + + + + 89 + 89 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 29 + 0 + + + + 9 + 9 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 3 + 0 + + + + 90 + 90 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 30 + 0 + + + + 91 + 91 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 30 + 0 + + + + 92 + 92 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 30 + 0 + + + + 93 + 93 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 31 + 0 + + + + 94 + 94 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 31 + 0 + + + + 95 + 95 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 31 + 0 + + + + 96 + 96 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 32 + 0 + + + + 97 + 97 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 1 + 32 + 0 + + + + 98 + 98 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 2 + 32 + 0 + + + + 99 + 99 + 2048 2048 1289 + + nm + 168 168 400 + + + 0 + 0 + 33 + 0 + + + + + 0 + 0 + + + + + 0 + 0 + + + 1 + 1 + + + 2 + 2 + + + + + 0 + 0 + + + 1 + 1 + + + 2 + 2 + + + 3 + 3 + + + 4 + 4 + + + 5 + 5 + + + 6 + 6 + + + 7 + 7 + + + 8 + 8 + + + 9 + 9 + + + 10 + 10 + + + 11 + 11 + + + 12 + 12 + + + 13 + 13 + + + 14 + 14 + + + 15 + 15 + + + 16 + 16 + + + 17 + 17 + + + 18 + 18 + + + 19 + 19 + + + 20 + 20 + + + 21 + 21 + + + 22 + 22 + + + 23 + 23 + + + 24 + 24 + + + 25 + 25 + + + 26 + 26 + + + 27 + 27 + + + 28 + 28 + + + 29 + 29 + + + 30 + 30 + + + 31 + 31 + + + 32 + 32 + + + 33 + 33 + + + 34 + 34 + + + 35 + 35 + + + 36 + 36 + + + 37 + 37 + + + 38 + 38 + + + 39 + 39 + + + 40 + 40 + + + 41 + 41 + + + 42 + 42 + + + 43 + 43 + + + 44 + 44 + + + 45 + 45 + + + 46 + 46 + + + 47 + 47 + + + 48 + 48 + + + + + 0 + 0 + + + + + + 0 + + + + + + affine + 1.0 0.0 0.0 215886.52380952382 0.0 1.0 0.0 -113803.57142857143 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 215886.52380952382 0.0 1.0 0.0 -113803.57142857143 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 221122.83333333334 0.0 1.0 0.0 -113777.97619047618 0.0 0.0 1.0 33507.97619047619 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 221091.2857142857 0.0 1.0 0.0 -106795.83333333333 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 221091.2857142857 0.0 1.0 0.0 -106795.83333333333 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 222834.7380952381 0.0 1.0 0.0 -106789.28571428571 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 222834.7380952381 0.0 1.0 0.0 -106789.28571428571 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 222834.7380952381 0.0 1.0 0.0 -106789.28571428571 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 224581.7619047619 0.0 1.0 0.0 -106778.57142857143 0.0 0.0 1.0 33507.857142857145 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 224581.7619047619 0.0 1.0 0.0 -106778.57142857143 0.0 0.0 1.0 33507.857142857145 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 224581.7619047619 0.0 1.0 0.0 -106778.57142857143 0.0 0.0 1.0 33507.857142857145 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 226326.40476190476 0.0 1.0 0.0 -106770.83333333333 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 226326.40476190476 0.0 1.0 0.0 -106770.83333333333 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 221122.83333333334 0.0 1.0 0.0 -113777.97619047618 0.0 0.0 1.0 33507.97619047619 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 226326.40476190476 0.0 1.0 0.0 -106770.83333333333 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 228073.42857142858 0.0 1.0 0.0 -106763.09523809524 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 228073.42857142858 0.0 1.0 0.0 -106763.09523809524 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 228073.42857142858 0.0 1.0 0.0 -106763.09523809524 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 229817.47619047618 0.0 1.0 0.0 -106755.95238095238 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 229817.47619047618 0.0 1.0 0.0 -106755.95238095238 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 229817.47619047618 0.0 1.0 0.0 -106755.95238095238 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 231555.57142857142 0.0 1.0 0.0 -105001.78571428571 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 231555.57142857142 0.0 1.0 0.0 -105001.78571428571 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 231555.57142857142 0.0 1.0 0.0 -105001.78571428571 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 222869.2619047619 0.0 1.0 0.0 -113770.23809523809 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 229809.7380952381 0.0 1.0 0.0 -105008.33333333333 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 229809.7380952381 0.0 1.0 0.0 -105008.33333333333 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 229809.7380952381 0.0 1.0 0.0 -105008.33333333333 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 228063.90476190476 0.0 1.0 0.0 -105017.26190476191 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 228063.90476190476 0.0 1.0 0.0 -105017.26190476191 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 228063.90476190476 0.0 1.0 0.0 -105017.26190476191 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 226318.07142857142 0.0 1.0 0.0 -105026.19047619047 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 226318.07142857142 0.0 1.0 0.0 -105026.19047619047 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 226318.07142857142 0.0 1.0 0.0 -105026.19047619047 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 224574.02380952382 0.0 1.0 0.0 -105033.33333333333 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 222869.2619047619 0.0 1.0 0.0 -113770.23809523809 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 224574.02380952382 0.0 1.0 0.0 -105033.33333333333 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 224574.02380952382 0.0 1.0 0.0 -105033.33333333333 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 222827.0 0.0 1.0 0.0 -105041.66666666667 0.0 0.0 1.0 33507.857142857145 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 222827.0 0.0 1.0 0.0 -105041.66666666667 0.0 0.0 1.0 33507.857142857145 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 222827.0 0.0 1.0 0.0 -105041.66666666667 0.0 0.0 1.0 33507.857142857145 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 221081.16666666666 0.0 1.0 0.0 -105050.59523809524 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 221081.16666666666 0.0 1.0 0.0 -105050.59523809524 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 221081.16666666666 0.0 1.0 0.0 -105050.59523809524 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 219335.92857142858 0.0 1.0 0.0 -105058.92857142857 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 219335.92857142858 0.0 1.0 0.0 -105058.92857142857 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 222869.2619047619 0.0 1.0 0.0 -113770.23809523809 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 219335.92857142858 0.0 1.0 0.0 -105058.92857142857 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 217590.09523809524 0.0 1.0 0.0 -105066.66666666667 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 217590.09523809524 0.0 1.0 0.0 -105066.66666666667 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 217590.09523809524 0.0 1.0 0.0 -105066.66666666667 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 215841.88095238095 0.0 1.0 0.0 -105075.59523809524 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 215841.88095238095 0.0 1.0 0.0 -105075.59523809524 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 215841.88095238095 0.0 1.0 0.0 -105075.59523809524 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 224613.90476190476 0.0 1.0 0.0 -113761.90476190476 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 224613.90476190476 0.0 1.0 0.0 -113761.90476190476 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 224613.90476190476 0.0 1.0 0.0 -113761.90476190476 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 226353.19047619047 0.0 1.0 0.0 -112007.73809523809 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 226353.19047619047 0.0 1.0 0.0 -112007.73809523809 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 215886.52380952382 0.0 1.0 0.0 -113803.57142857143 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 226353.19047619047 0.0 1.0 0.0 -112007.73809523809 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 224604.97619047618 0.0 1.0 0.0 -112015.47619047618 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 224604.97619047618 0.0 1.0 0.0 -112015.47619047618 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 224604.97619047618 0.0 1.0 0.0 -112015.47619047618 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 222857.95238095237 0.0 1.0 0.0 -112025.0 0.0 0.0 1.0 33507.857142857145 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 222857.95238095237 0.0 1.0 0.0 -112025.0 0.0 0.0 1.0 33507.857142857145 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 222857.95238095237 0.0 1.0 0.0 -112025.0 0.0 0.0 1.0 33507.857142857145 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 221113.30952380953 0.0 1.0 0.0 -112032.73809523809 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 221113.30952380953 0.0 1.0 0.0 -112032.73809523809 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 221113.30952380953 0.0 1.0 0.0 -112032.73809523809 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 217632.35714285713 0.0 1.0 0.0 -113794.04761904762 0.0 0.0 1.0 33508.333333333336 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 219368.66666666666 0.0 1.0 0.0 -112041.66666666667 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 219368.66666666666 0.0 1.0 0.0 -112041.66666666667 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 219368.66666666666 0.0 1.0 0.0 -112041.66666666667 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 217623.42857142858 0.0 1.0 0.0 -112049.40476190476 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 217623.42857142858 0.0 1.0 0.0 -112049.40476190476 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 217623.42857142858 0.0 1.0 0.0 -112049.40476190476 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 215878.19047619047 0.0 1.0 0.0 -112056.54761904762 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 215878.19047619047 0.0 1.0 0.0 -112056.54761904762 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 215878.19047619047 0.0 1.0 0.0 -112056.54761904762 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 215870.45238095237 0.0 1.0 0.0 -110311.90476190476 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 217632.35714285713 0.0 1.0 0.0 -113794.04761904762 0.0 0.0 1.0 33508.333333333336 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 215870.45238095237 0.0 1.0 0.0 -110311.90476190476 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 215870.45238095237 0.0 1.0 0.0 -110311.90476190476 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 217615.09523809524 0.0 1.0 0.0 -110303.57142857143 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 217615.09523809524 0.0 1.0 0.0 -110303.57142857143 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 217615.09523809524 0.0 1.0 0.0 -110303.57142857143 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 219362.11904761905 0.0 1.0 0.0 -110294.04761904762 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 219362.11904761905 0.0 1.0 0.0 -110294.04761904762 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 219362.11904761905 0.0 1.0 0.0 -110294.04761904762 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 221106.7619047619 0.0 1.0 0.0 -110285.71428571429 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 221106.7619047619 0.0 1.0 0.0 -110285.71428571429 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 217632.35714285713 0.0 1.0 0.0 -113794.04761904762 0.0 0.0 1.0 33508.333333333336 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 221106.7619047619 0.0 1.0 0.0 -110285.71428571429 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 222850.80952380953 0.0 1.0 0.0 -110279.16666666667 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 222850.80952380953 0.0 1.0 0.0 -110279.16666666667 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 222850.80952380953 0.0 1.0 0.0 -110279.16666666667 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 224598.42857142858 0.0 1.0 0.0 -110271.42857142857 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 224598.42857142858 0.0 1.0 0.0 -110271.42857142857 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 224598.42857142858 0.0 1.0 0.0 -110271.42857142857 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 226341.88095238095 0.0 1.0 0.0 -110262.5 0.0 0.0 1.0 33508.333333333336 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 226341.88095238095 0.0 1.0 0.0 -110262.5 0.0 0.0 1.0 33508.333333333336 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 226341.88095238095 0.0 1.0 0.0 -110262.5 0.0 0.0 1.0 33508.333333333336 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 219378.7857142857 0.0 1.0 0.0 -113786.30952380953 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 228089.5 0.0 1.0 0.0 -110253.57142857143 0.0 0.0 1.0 33507.619047619046 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 228089.5 0.0 1.0 0.0 -110253.57142857143 0.0 0.0 1.0 33507.619047619046 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 228089.5 0.0 1.0 0.0 -110253.57142857143 0.0 0.0 1.0 33507.619047619046 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 229825.80952380953 0.0 1.0 0.0 -108500.59523809524 0.0 0.0 1.0 33507.97619047619 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 229825.80952380953 0.0 1.0 0.0 -108500.59523809524 0.0 0.0 1.0 33507.97619047619 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 229825.80952380953 0.0 1.0 0.0 -108500.59523809524 0.0 0.0 1.0 33507.97619047619 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 228078.7857142857 0.0 1.0 0.0 -108508.33333333333 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 228078.7857142857 0.0 1.0 0.0 -108508.33333333333 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 228078.7857142857 0.0 1.0 0.0 -108508.33333333333 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 226334.7380952381 0.0 1.0 0.0 -108516.66666666667 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 219378.7857142857 0.0 1.0 0.0 -113786.30952380953 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 226334.7380952381 0.0 1.0 0.0 -108516.66666666667 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 226334.7380952381 0.0 1.0 0.0 -108516.66666666667 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 224588.90476190476 0.0 1.0 0.0 -108524.40476190476 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 224588.90476190476 0.0 1.0 0.0 -108524.40476190476 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 224588.90476190476 0.0 1.0 0.0 -108524.40476190476 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 222843.66666666666 0.0 1.0 0.0 -108533.92857142857 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 222843.66666666666 0.0 1.0 0.0 -108533.92857142857 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 222843.66666666666 0.0 1.0 0.0 -108533.92857142857 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 221097.2380952381 0.0 1.0 0.0 -108541.07142857143 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 221097.2380952381 0.0 1.0 0.0 -108541.07142857143 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 219378.7857142857 0.0 1.0 0.0 -113786.30952380953 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 221097.2380952381 0.0 1.0 0.0 -108541.07142857143 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 219351.40476190476 0.0 1.0 0.0 -108550.0 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 219351.40476190476 0.0 1.0 0.0 -108550.0 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 219351.40476190476 0.0 1.0 0.0 -108550.0 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 217607.35714285713 0.0 1.0 0.0 -108558.33333333333 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 217607.35714285713 0.0 1.0 0.0 -108558.33333333333 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 217607.35714285713 0.0 1.0 0.0 -108558.33333333333 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 215860.33333333334 0.0 1.0 0.0 -108566.66666666667 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 215860.33333333334 0.0 1.0 0.0 -108566.66666666667 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 215860.33333333334 0.0 1.0 0.0 -108566.66666666667 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 221122.83333333334 0.0 1.0 0.0 -113777.97619047618 0.0 0.0 1.0 33507.97619047619 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 215853.19047619047 0.0 1.0 0.0 -106820.23809523809 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 215853.19047619047 0.0 1.0 0.0 -106820.23809523809 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 215853.19047619047 0.0 1.0 0.0 -106820.23809523809 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 217600.2142857143 0.0 1.0 0.0 -106811.30952380953 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 217600.2142857143 0.0 1.0 0.0 -106811.30952380953 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 217600.2142857143 0.0 1.0 0.0 -106811.30952380953 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 219343.66666666666 0.0 1.0 0.0 -106805.95238095238 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 219343.66666666666 0.0 1.0 0.0 -106805.95238095238 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 219343.66666666666 0.0 1.0 0.0 -106805.95238095238 0.0 0.0 1.0 33508.21428571428 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + affine + 1.0 0.0 0.0 221091.2857142857 0.0 1.0 0.0 -106795.83333333333 0.0 0.0 1.0 33508.09523809524 + + + calibration + 1.0 0 0 0 0 1.0 0 0 0 0 2.380952380952381 0 + + + + + + + + + diff --git a/tests/fixture/bigstitcher_5.xml b/tests/fixture/bigstitcher_5.xml new file mode 100644 index 0000000..794e234 --- /dev/null +++ b/tests/fixture/bigstitcher_5.xml @@ -0,0 +1,4559 @@ + + + . + + + dataset.n5 + + + + 0 + 0 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 0 + 0 + + + + 1 + 1 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 0 + 0 + + + + 2 + 2 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 0 + 0 + + + + 3 + 3 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 1 + 0 + + + + 4 + 4 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 1 + 0 + + + + 5 + 5 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 1 + 0 + + + + 6 + 6 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 2 + 0 + + + + 7 + 7 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 2 + 0 + + + + 8 + 8 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 2 + 0 + + + + 9 + 9 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 3 + 0 + + + + 10 + 10 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 3 + 0 + + + + 11 + 11 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 3 + 0 + + + + 12 + 12 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 4 + 0 + + + + 13 + 13 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 4 + 0 + + + + 14 + 14 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 4 + 0 + + + + 15 + 15 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 5 + 0 + + + + 16 + 16 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 5 + 0 + + + + 17 + 17 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 5 + 0 + + + + 18 + 18 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 6 + 0 + + + + 19 + 19 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 6 + 0 + + + + 20 + 20 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 6 + 0 + + + + 21 + 21 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 7 + 0 + + + + 22 + 22 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 7 + 0 + + + + 23 + 23 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 7 + 0 + + + + 24 + 24 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 8 + 0 + + + + 25 + 25 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 8 + 0 + + + + 26 + 26 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 8 + 0 + + + + 27 + 27 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 9 + 0 + + + + 28 + 28 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 9 + 0 + + + + 29 + 29 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 9 + 0 + + + + 30 + 30 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 10 + 0 + + + + 31 + 31 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 10 + 0 + + + + 32 + 32 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 10 + 0 + + + + 33 + 33 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 11 + 0 + + + + 34 + 34 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 11 + 0 + + + + 35 + 35 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 11 + 0 + + + + 36 + 36 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 12 + 0 + + + + 37 + 37 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 12 + 0 + + + + 38 + 38 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 12 + 0 + + + + 39 + 39 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 13 + 0 + + + + 40 + 40 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 13 + 0 + + + + 41 + 41 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 13 + 0 + + + + 42 + 42 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 14 + 0 + + + + 43 + 43 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 14 + 0 + + + + 44 + 44 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 14 + 0 + + + + 45 + 45 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 15 + 0 + + + + 46 + 46 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 15 + 0 + + + + 47 + 47 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 15 + 0 + + + + 48 + 48 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 16 + 0 + + + + 49 + 49 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 16 + 0 + + + + 50 + 50 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 16 + 0 + + + + 51 + 51 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 17 + 0 + + + + 52 + 52 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 17 + 0 + + + + 53 + 53 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 17 + 0 + + + + 54 + 54 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 18 + 0 + + + + 55 + 55 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 18 + 0 + + + + 56 + 56 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 18 + 0 + + + + 57 + 57 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 19 + 0 + + + + 58 + 58 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 19 + 0 + + + + 59 + 59 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 19 + 0 + + + + 60 + 60 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 20 + 0 + + + + 61 + 61 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 20 + 0 + + + + 62 + 62 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 20 + 0 + + + + 63 + 63 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 21 + 0 + + + + 64 + 64 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 21 + 0 + + + + 65 + 65 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 21 + 0 + + + + 66 + 66 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 22 + 0 + + + + 67 + 67 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 22 + 0 + + + + 68 + 68 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 22 + 0 + + + + 69 + 69 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 23 + 0 + + + + 70 + 70 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 23 + 0 + + + + 71 + 71 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 23 + 0 + + + + 72 + 72 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 24 + 0 + + + + 73 + 73 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 24 + 0 + + + + 74 + 74 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 24 + 0 + + + + 75 + 75 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 25 + 0 + + + + 76 + 76 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 25 + 0 + + + + 77 + 77 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 25 + 0 + + + + 78 + 78 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 26 + 0 + + + + 79 + 79 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 26 + 0 + + + + 80 + 80 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 26 + 0 + + + + 81 + 81 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 27 + 0 + + + + 82 + 82 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 27 + 0 + + + + 83 + 83 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 27 + 0 + + + + 84 + 84 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 28 + 0 + + + + 85 + 85 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 28 + 0 + + + + 86 + 86 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 28 + 0 + + + + 87 + 87 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 29 + 0 + + + + 88 + 88 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 29 + 0 + + + + 89 + 89 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 29 + 0 + + + + 90 + 90 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 30 + 0 + + + + 91 + 91 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 30 + 0 + + + + 92 + 92 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 30 + 0 + + + + 93 + 93 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 31 + 0 + + + + 94 + 94 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 31 + 0 + + + + 95 + 95 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 31 + 0 + + + + 96 + 96 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 32 + 0 + + + + 97 + 97 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 32 + 0 + + + + 98 + 98 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 32 + 0 + + + + 99 + 99 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 33 + 0 + + + + 100 + 100 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 33 + 0 + + + + 101 + 101 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 33 + 0 + + + + 102 + 102 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 34 + 0 + + + + 103 + 103 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 34 + 0 + + + + 104 + 104 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 34 + 0 + + + + 105 + 105 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 35 + 0 + + + + 106 + 106 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 35 + 0 + + + + 107 + 107 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 35 + 0 + + + + 108 + 108 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 36 + 0 + + + + 109 + 109 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 36 + 0 + + + + 110 + 110 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 36 + 0 + + + + 111 + 111 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 37 + 0 + + + + 112 + 112 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 37 + 0 + + + + 113 + 113 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 37 + 0 + + + + 114 + 114 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 38 + 0 + + + + 115 + 115 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 38 + 0 + + + + 116 + 116 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 38 + 0 + + + + 117 + 117 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 39 + 0 + + + + 118 + 118 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 39 + 0 + + + + 119 + 119 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 39 + 0 + + + + 120 + 120 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 40 + 0 + + + + 121 + 121 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 40 + 0 + + + + 122 + 122 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 40 + 0 + + + + 123 + 123 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 41 + 0 + + + + 124 + 124 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 41 + 0 + + + + 125 + 125 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 41 + 0 + + + + 126 + 126 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 42 + 0 + + + + 127 + 127 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 42 + 0 + + + + 128 + 128 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 42 + 0 + + + + 129 + 129 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 43 + 0 + + + + 130 + 130 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 43 + 0 + + + + 131 + 131 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 43 + 0 + + + + 132 + 132 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 44 + 0 + + + + 133 + 133 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 44 + 0 + + + + 134 + 134 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 44 + 0 + + + + 135 + 135 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 45 + 0 + + + + 136 + 136 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 45 + 0 + + + + 137 + 137 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 45 + 0 + + + + 138 + 138 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 46 + 0 + + + + 139 + 139 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 46 + 0 + + + + 140 + 140 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 46 + 0 + + + + 141 + 141 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 47 + 0 + + + + 142 + 142 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 47 + 0 + + + + 143 + 143 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 47 + 0 + + + + 144 + 144 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 0 + 48 + 0 + + + + 145 + 145 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 1 + 48 + 0 + + + + 146 + 146 + 2048 2048 1289 + + nm + 168.0 168.0 400.0 + + + 0 + 2 + 48 + 0 + + + + + 0 + 0 + + + + + 0 + 0 + + + 1 + 1 + + + 2 + 2 + + + + + 0 + 0 + + + 1 + 1 + + + 2 + 2 + + + 3 + 3 + + + 4 + 4 + + + 5 + 5 + + + 6 + 6 + + + 7 + 7 + + + 8 + 8 + + + 9 + 9 + + + 10 + 10 + + + 11 + 11 + + + 12 + 12 + + + 13 + 13 + + + 14 + 14 + + + 15 + 15 + + + 16 + 16 + + + 17 + 17 + + + 18 + 18 + + + 19 + 19 + + + 20 + 20 + + + 21 + 21 + + + 22 + 22 + + + 23 + 23 + + + 24 + 24 + + + 25 + 25 + + + 26 + 26 + + + 27 + 27 + + + 28 + 28 + + + 29 + 29 + + + 30 + 30 + + + 31 + 31 + + + 32 + 32 + + + 33 + 33 + + + 34 + 34 + + + 35 + 35 + + + 36 + 36 + + + 37 + 37 + + + 38 + 38 + + + 39 + 39 + + + 40 + 40 + + + 41 + 41 + + + 42 + 42 + + + 43 + 43 + + + 44 + 44 + + + 45 + 45 + + + 46 + 46 + + + 47 + 47 + + + 48 + 48 + + + + + 0 + 0 + + + + + 0 + + + + + + + InterpolatedAffineModel3D + 0.9993518150558118 -1.4106955779350563E-4 0.015361554226338652 -432.3819252011101 -9.515731196783546E-4 0.9981308641932889 -0.029904959902341544 1170.5923906660748 -0.018181449906909734 0.02580490574721907 1.0008115715213222 6918.565459885477 + + + affine + 1.0 0.0 0.0 215957.95238095237 0.0 1.0 0.0 -114242.26190476191 0.0 0.0 1.0 33718.80952380953 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9993518150558118 -1.4106955779350563E-4 0.015361554226338652 -432.3819252011101 -9.515731196783546E-4 0.9981308641932889 -0.029904959902341544 1170.5923906660748 -0.018181449906909734 0.02580490574721907 1.0008115715213222 6918.565459885477 + + + affine + 1.0 0.0 0.0 215957.95238095237 0.0 1.0 0.0 -114242.26190476191 0.0 0.0 1.0 33718.80952380953 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9993518150558118 -1.4106955779350563E-4 0.015361554226338652 -432.3819252011101 -9.515731196783546E-4 0.9981308641932889 -0.029904959902341544 1170.5923906660748 -0.018181449906909734 0.02580490574721907 1.0008115715213222 6918.565459885477 + + + affine + 1.0 0.0 0.0 215957.95238095237 0.0 1.0 0.0 -114242.26190476191 0.0 0.0 1.0 33718.80952380953 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9994906824865609 -7.250309741271667E-6 0.01465987122283689 -423.79399747665354 -4.932691217139791E-5 0.9986783415208893 -0.027523119048622015 925.9886864188218 -0.016066562596649094 0.025813629717001216 1.0011046684051186 6451.959324583882 + + + affine + 1.0 0.0 0.0 217706.7619047619 0.0 1.0 0.0 -114234.52380952382 0.0 0.0 1.0 33718.57142857143 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9994906824865609 -7.250309741271667E-6 0.01465987122283689 -423.79399747665354 -4.932691217139791E-5 0.9986783415208893 -0.027523119048622015 925.9886864188218 -0.016066562596649094 0.025813629717001216 1.0011046684051186 6451.959324583882 + + + affine + 1.0 0.0 0.0 217706.7619047619 0.0 1.0 0.0 -114234.52380952382 0.0 0.0 1.0 33718.57142857143 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9994906824865609 -7.250309741271667E-6 0.01465987122283689 -423.79399747665354 -4.932691217139791E-5 0.9986783415208893 -0.027523119048622015 925.9886864188218 -0.016066562596649094 0.025813629717001216 1.0011046684051186 6451.959324583882 + + + affine + 1.0 0.0 0.0 217706.7619047619 0.0 1.0 0.0 -114234.52380952382 0.0 0.0 1.0 33718.57142857143 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9997862189356062 2.4837067042882354E-5 0.014087389533276965 -464.5127389164919 1.0816262826849241E-5 0.999023559197276 -0.027922114472334208 941.9513369481283 -0.01551994221769107 0.025873815413693747 1.0012758706520735 6336.85631431036 + + + affine + 1.0 0.0 0.0 219449.61904761905 0.0 1.0 0.0 -114226.19047619047 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9997862189356062 2.4837067042882354E-5 0.014087389533276965 -464.5127389164919 1.0816262826849241E-5 0.999023559197276 -0.027922114472334208 941.9513369481283 -0.01551994221769107 0.025873815413693747 1.0012758706520735 6336.85631431036 + + + affine + 1.0 0.0 0.0 219449.61904761905 0.0 1.0 0.0 -114226.19047619047 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9997862189356062 2.4837067042882354E-5 0.014087389533276965 -464.5127389164919 1.0816262826849241E-5 0.999023559197276 -0.027922114472334208 941.9513369481283 -0.01551994221769107 0.025873815413693747 1.0012758706520735 6336.85631431036 + + + affine + 1.0 0.0 0.0 219449.61904761905 0.0 1.0 0.0 -114226.19047619047 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9996764657294599 3.6179257909665707E-4 0.013455235420012212 -381.2495800677908 -7.252851871209966E-5 0.9994592285920697 -0.027532978225054912 971.5959862776054 -0.014761910275545765 0.026051945637342748 1.0006300872233924 6217.474638509522 + + + affine + 1.0 0.0 0.0 221196.04761904763 0.0 1.0 0.0 -114218.45238095238 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9996764657294599 3.6179257909665707E-4 0.013455235420012212 -381.2495800677908 -7.252851871209966E-5 0.9994592285920697 -0.027532978225054912 971.5959862776054 -0.014761910275545765 0.026051945637342748 1.0006300872233924 6217.474638509522 + + + affine + 1.0 0.0 0.0 221196.04761904763 0.0 1.0 0.0 -114218.45238095238 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9996764657294599 3.6179257909665707E-4 0.013455235420012212 -381.2495800677908 -7.252851871209966E-5 0.9994592285920697 -0.027532978225054912 971.5959862776054 -0.014761910275545765 0.026051945637342748 1.0006300872233924 6217.474638509522 + + + affine + 1.0 0.0 0.0 221196.04761904763 0.0 1.0 0.0 -114218.45238095238 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9995295260374643 9.411813795934315E-4 0.012793901288174552 -260.1669145806542 -8.360464934391332E-4 0.9999440880853815 -0.027817615226729632 1182.7859007091406 -0.013360176376920075 0.026014521595669936 1.0006855612668335 5901.96401595883 + + + affine + 1.0 0.0 0.0 222940.69047619047 0.0 1.0 0.0 -114210.11904761905 0.0 0.0 1.0 33718.80952380953 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9995295260374643 9.411813795934315E-4 0.012793901288174552 -260.1669145806542 -8.360464934391332E-4 0.9999440880853815 -0.027817615226729632 1182.7859007091406 -0.013360176376920075 0.026014521595669936 1.0006855612668335 5901.96401595883 + + + affine + 1.0 0.0 0.0 222940.69047619047 0.0 1.0 0.0 -114210.11904761905 0.0 0.0 1.0 33718.80952380953 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9995295260374643 9.411813795934315E-4 0.012793901288174552 -260.1669145806542 -8.360464934391332E-4 0.9999440880853815 -0.027817615226729632 1182.7859007091406 -0.013360176376920075 0.026014521595669936 1.0006855612668335 5901.96401595883 + + + affine + 1.0 0.0 0.0 222940.69047619047 0.0 1.0 0.0 -114210.11904761905 0.0 0.0 1.0 33718.80952380953 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9994553293666943 0.001682180961621848 0.012259048454333184 -142.67097506559168 -0.0010171428550995315 1.0006148321628228 -0.028330496951252962 1293.7763694749287 -0.011256036575828148 0.02538423131650343 1.0003707759568379 5371.635673575298 + + + affine + 1.0 0.0 0.0 224687.7142857143 0.0 1.0 0.0 -114201.78571428571 0.0 0.0 1.0 33718.09523809524 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9994553293666943 0.001682180961621848 0.012259048454333184 -142.67097506559168 -0.0010171428550995315 1.0006148321628228 -0.028330496951252962 1293.7763694749287 -0.011256036575828148 0.02538423131650343 1.0003707759568379 5371.635673575298 + + + affine + 1.0 0.0 0.0 224687.7142857143 0.0 1.0 0.0 -114201.78571428571 0.0 0.0 1.0 33718.09523809524 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9994553293666943 0.001682180961621848 0.012259048454333184 -142.67097506559168 -0.0010171428550995315 1.0006148321628228 -0.028330496951252962 1293.7763694749287 -0.011256036575828148 0.02538423131650343 1.0003707759568379 5371.635673575298 + + + affine + 1.0 0.0 0.0 224687.7142857143 0.0 1.0 0.0 -114201.78571428571 0.0 0.0 1.0 33718.09523809524 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.999785591064654 6.513894901208373E-4 0.011099391527755438 -270.0902077121921 -1.1221975507383706E-4 1.0002836921814526 -0.02850651108364502 1032.660554379436 -0.009065802651409688 0.02796492205109548 0.9998916868480592 5185.090462099706 + + + affine + 1.0 0.0 0.0 226425.2142857143 0.0 1.0 0.0 -112451.78571428571 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.999785591064654 6.513894901208373E-4 0.011099391527755438 -270.0902077121921 -1.1221975507383706E-4 1.0002836921814526 -0.02850651108364502 1032.660554379436 -0.009065802651409688 0.02796492205109548 0.9998916868480592 5185.090462099706 + + + affine + 1.0 0.0 0.0 226425.2142857143 0.0 1.0 0.0 -112451.78571428571 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.999785591064654 6.513894901208373E-4 0.011099391527755438 -270.0902077121921 -1.1221975507383706E-4 1.0002836921814526 -0.02850651108364502 1032.660554379436 -0.009065802651409688 0.02796492205109548 0.9998916868480592 5185.090462099706 + + + affine + 1.0 0.0 0.0 226425.2142857143 0.0 1.0 0.0 -112451.78571428571 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.999965299058473 3.272711773427968E-4 0.011594002866172884 -358.87402241087403 -3.166882174343423E-4 0.999906118458243 -0.028392302155770332 1056.9998890933878 -0.010939744511479391 0.027934390644974553 0.999759980651921 5615.857998416183 + + + affine + 1.0 0.0 0.0 224678.7857142857 0.0 1.0 0.0 -112455.35714285714 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.999965299058473 3.272711773427968E-4 0.011594002866172884 -358.87402241087403 -3.166882174343423E-4 0.999906118458243 -0.028392302155770332 1056.9998890933878 -0.010939744511479391 0.027934390644974553 0.999759980651921 5615.857998416183 + + + affine + 1.0 0.0 0.0 224678.7857142857 0.0 1.0 0.0 -112455.35714285714 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.999965299058473 3.272711773427968E-4 0.011594002866172884 -358.87402241087403 -3.166882174343423E-4 0.999906118458243 -0.028392302155770332 1056.9998890933878 -0.010939744511479391 0.027934390644974553 0.999759980651921 5615.857998416183 + + + affine + 1.0 0.0 0.0 224678.7857142857 0.0 1.0 0.0 -112455.35714285714 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9997725133180929 6.043158458993709E-5 0.012371720850120473 -368.87569301394046 -2.6743922641247136E-4 0.9993388249382604 -0.028560726443474647 1013.7751161736646 -0.013068473969679133 0.027859776356282145 1.000025712158268 6080.978779907194 + + + affine + 1.0 0.0 0.0 222932.35714285713 0.0 1.0 0.0 -112464.28571428571 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9997725133180929 6.043158458993709E-5 0.012371720850120473 -368.87569301394046 -2.6743922641247136E-4 0.9993388249382604 -0.028560726443474647 1013.7751161736646 -0.013068473969679133 0.027859776356282145 1.000025712158268 6080.978779907194 + + + affine + 1.0 0.0 0.0 222932.35714285713 0.0 1.0 0.0 -112464.28571428571 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9997725133180929 6.043158458993709E-5 0.012371720850120473 -368.87569301394046 -2.6743922641247136E-4 0.9993388249382604 -0.028560726443474647 1013.7751161736646 -0.013068473969679133 0.027859776356282145 1.000025712158268 6080.978779907194 + + + affine + 1.0 0.0 0.0 222932.35714285713 0.0 1.0 0.0 -112464.28571428571 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9996674671002846 2.8490616388903074E-4 0.012780953431223093 -331.64404839346935 3.8349054367027514E-4 0.9988548908565015 -0.028044914251291853 820.8096326227924 -0.014540197104998067 0.02787788641222579 0.9993850965237013 6439.405559173185 + + + affine + 1.0 0.0 0.0 221186.52380952382 0.0 1.0 0.0 -112472.02380952382 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9996674671002846 2.8490616388903074E-4 0.012780953431223093 -331.64404839346935 3.8349054367027514E-4 0.9988548908565015 -0.028044914251291853 820.8096326227924 -0.014540197104998067 0.02787788641222579 0.9993850965237013 6439.405559173185 + + + affine + 1.0 0.0 0.0 221186.52380952382 0.0 1.0 0.0 -112472.02380952382 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9996674671002846 2.8490616388903074E-4 0.012780953431223093 -331.64404839346935 3.8349054367027514E-4 0.9988548908565015 -0.028044914251291853 820.8096326227924 -0.014540197104998067 0.02787788641222579 0.9993850965237013 6439.405559173185 + + + affine + 1.0 0.0 0.0 221186.52380952382 0.0 1.0 0.0 -112472.02380952382 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9995985547793094 7.077927669358892E-4 0.013461561898664338 -288.5551056373747 4.7954488779171985E-4 0.9989715464505894 -0.0277921087185686 828.6463430021721 -0.015173276994774866 0.0278291238453676 0.9992884938757307 6581.7522541919325 + + + affine + 1.0 0.0 0.0 219440.69047619047 0.0 1.0 0.0 -112479.76190476191 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9995985547793094 7.077927669358892E-4 0.013461561898664338 -288.5551056373747 4.7954488779171985E-4 0.9989715464505894 -0.0277921087185686 828.6463430021721 -0.015173276994774866 0.0278291238453676 0.9992884938757307 6581.7522541919325 + + + affine + 1.0 0.0 0.0 219440.69047619047 0.0 1.0 0.0 -112479.76190476191 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9995985547793094 7.077927669358892E-4 0.013461561898664338 -288.5551056373747 4.7954488779171985E-4 0.9989715464505894 -0.0277921087185686 828.6463430021721 -0.015173276994774866 0.0278291238453676 0.9992884938757307 6581.7522541919325 + + + affine + 1.0 0.0 0.0 219440.69047619047 0.0 1.0 0.0 -112479.76190476191 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9996253282993579 3.935460650154149E-4 0.01433621376233839 -356.2799397466297 -2.899992426044219E-5 0.9989010203064206 -0.028045061898928095 965.5960391112401 -0.015447826710722451 0.027282759236286314 0.9996274708219988 6573.722418105572 + + + affine + 1.0 0.0 0.0 217694.85714285713 0.0 1.0 0.0 -112489.28571428571 0.0 0.0 1.0 33718.333333333336 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9996253282993579 3.935460650154149E-4 0.01433621376233839 -356.2799397466297 -2.899992426044219E-5 0.9989010203064206 -0.028045061898928095 965.5960391112401 -0.015447826710722451 0.027282759236286314 0.9996274708219988 6573.722418105572 + + + affine + 1.0 0.0 0.0 217694.85714285713 0.0 1.0 0.0 -112489.28571428571 0.0 0.0 1.0 33718.333333333336 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9996253282993579 3.935460650154149E-4 0.01433621376233839 -356.2799397466297 -2.899992426044219E-5 0.9989010203064206 -0.028045061898928095 965.5960391112401 -0.015447826710722451 0.027282759236286314 0.9996274708219988 6573.722418105572 + + + affine + 1.0 0.0 0.0 217694.85714285713 0.0 1.0 0.0 -112489.28571428571 0.0 0.0 1.0 33718.333333333336 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.99956453673903 2.1321872832995208E-4 0.01433466071154935 -360.21921810630033 -1.9479956282625937E-4 0.9986937920121258 -0.027646929946197465 988.770209738805 -0.017237087691722816 0.027099086541498698 0.9993541636540438 6956.330669301342 + + + affine + 1.0 0.0 0.0 215950.2142857143 0.0 1.0 0.0 -112497.61904761905 0.0 0.0 1.0 33718.80952380953 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.99956453673903 2.1321872832995208E-4 0.01433466071154935 -360.21921810630033 -1.9479956282625937E-4 0.9986937920121258 -0.027646929946197465 988.770209738805 -0.017237087691722816 0.027099086541498698 0.9993541636540438 6956.330669301342 + + + affine + 1.0 0.0 0.0 215950.2142857143 0.0 1.0 0.0 -112497.61904761905 0.0 0.0 1.0 33718.80952380953 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.99956453673903 2.1321872832995208E-4 0.01433466071154935 -360.21921810630033 -1.9479956282625937E-4 0.9986937920121258 -0.027646929946197465 988.770209738805 -0.017237087691722816 0.027099086541498698 0.9993541636540438 6956.330669301342 + + + affine + 1.0 0.0 0.0 215950.2142857143 0.0 1.0 0.0 -112497.61904761905 0.0 0.0 1.0 33718.80952380953 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9995678491779244 -9.355907323785995E-5 0.014204366513877255 -365.1237483338648 4.0625493994802576E-4 0.9983949162346123 -0.027838040193790634 829.5627327642899 -0.017011108646773986 0.026806545047605938 0.9994650565251153 6872.686648358506 + + + affine + 1.0 0.0 0.0 215941.2857142857 0.0 1.0 0.0 -110752.38095238095 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9995678491779244 -9.355907323785995E-5 0.014204366513877255 -365.1237483338648 4.0625493994802576E-4 0.9983949162346123 -0.027838040193790634 829.5627327642899 -0.017011108646773986 0.026806545047605938 0.9994650565251153 6872.686648358506 + + + affine + 1.0 0.0 0.0 215941.2857142857 0.0 1.0 0.0 -110752.38095238095 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9995678491779244 -9.355907323785995E-5 0.014204366513877255 -365.1237483338648 4.0625493994802576E-4 0.9983949162346123 -0.027838040193790634 829.5627327642899 -0.017011108646773986 0.026806545047605938 0.9994650565251153 6872.686648358506 + + + affine + 1.0 0.0 0.0 215941.2857142857 0.0 1.0 0.0 -110752.38095238095 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9995306916751647 -1.1239936674184153E-4 0.013865932046915452 -349.223691212312 2.8301850136981167E-4 0.9986976168439212 -0.028388505415939916 884.9283360330253 -0.01526874638438123 0.027117741603542966 0.9996121164477386 6522.738101929085 + + + affine + 1.0 0.0 0.0 217689.5 0.0 1.0 0.0 -110743.45238095238 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9995306916751647 -1.1239936674184153E-4 0.013865932046915452 -349.223691212312 2.8301850136981167E-4 0.9986976168439212 -0.028388505415939916 884.9283360330253 -0.01526874638438123 0.027117741603542966 0.9996121164477386 6522.738101929085 + + + affine + 1.0 0.0 0.0 217689.5 0.0 1.0 0.0 -110743.45238095238 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9995306916751647 -1.1239936674184153E-4 0.013865932046915452 -349.223691212312 2.8301850136981167E-4 0.9986976168439212 -0.028388505415939916 884.9283360330253 -0.01526874638438123 0.027117741603542966 0.9996121164477386 6522.738101929085 + + + affine + 1.0 0.0 0.0 217689.5 0.0 1.0 0.0 -110743.45238095238 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9994260175577391 -3.6962583552680757E-4 0.013003387447912997 -326.9755585542622 -1.3676537557475715E-4 0.9987595435853486 -0.02833705022771409 957.8413582527289 -0.014990332418467402 0.027439530391704554 0.9995768036390215 6498.931659327682 + + + affine + 1.0 0.0 0.0 219433.54761904763 0.0 1.0 0.0 -110736.30952380953 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9994260175577391 -3.6962583552680757E-4 0.013003387447912997 -326.9755585542622 -1.3676537557475715E-4 0.9987595435853486 -0.02833705022771409 957.8413582527289 -0.014990332418467402 0.027439530391704554 0.9995768036390215 6498.931659327682 + + + affine + 1.0 0.0 0.0 219433.54761904763 0.0 1.0 0.0 -110736.30952380953 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9994260175577391 -3.6962583552680757E-4 0.013003387447912997 -326.9755585542622 -1.3676537557475715E-4 0.9987595435853486 -0.02833705022771409 957.8413582527289 -0.014990332418467402 0.027439530391704554 0.9995768036390215 6498.931659327682 + + + affine + 1.0 0.0 0.0 219433.54761904763 0.0 1.0 0.0 -110736.30952380953 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9993227051892024 -2.9357882011756887E-4 0.012209743456147995 -269.6451497091644 2.136604795779298E-4 0.9986064784199802 -0.028762548162198278 854.4025992711197 -0.013866257896499413 0.027973213616516487 0.9994586522135365 6313.541579792042 + + + affine + 1.0 0.0 0.0 221178.7857142857 0.0 1.0 0.0 -110726.19047619047 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9993227051892024 -2.9357882011756887E-4 0.012209743456147995 -269.6451497091644 2.136604795779298E-4 0.9986064784199802 -0.028762548162198278 854.4025992711197 -0.013866257896499413 0.027973213616516487 0.9994586522135365 6313.541579792042 + + + affine + 1.0 0.0 0.0 221178.7857142857 0.0 1.0 0.0 -110726.19047619047 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9993227051892024 -2.9357882011756887E-4 0.012209743456147995 -269.6451497091644 2.136604795779298E-4 0.9986064784199802 -0.028762548162198278 854.4025992711197 -0.013866257896499413 0.027973213616516487 0.9994586522135365 6313.541579792042 + + + affine + 1.0 0.0 0.0 221178.7857142857 0.0 1.0 0.0 -110726.19047619047 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9996096432470252 -4.08417284660472E-4 0.011252793527169068 -315.2531390014159 5.146313511425904E-4 0.9988078298354012 -0.029260138629743013 803.1375323203754 -0.012775724324611276 0.02852978855215403 0.9995988758183266 6128.021311545382 + + + affine + 1.0 0.0 0.0 222924.02380952382 0.0 1.0 0.0 -110720.23809523809 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9996096432470252 -4.08417284660472E-4 0.011252793527169068 -315.2531390014159 5.146313511425904E-4 0.9988078298354012 -0.029260138629743013 803.1375323203754 -0.012775724324611276 0.02852978855215403 0.9995988758183266 6128.021311545382 + + + affine + 1.0 0.0 0.0 222924.02380952382 0.0 1.0 0.0 -110720.23809523809 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9996096432470252 -4.08417284660472E-4 0.011252793527169068 -315.2531390014159 5.146313511425904E-4 0.9988078298354012 -0.029260138629743013 803.1375323203754 -0.012775724324611276 0.02852978855215403 0.9995988758183266 6128.021311545382 + + + affine + 1.0 0.0 0.0 222924.02380952382 0.0 1.0 0.0 -110720.23809523809 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9997997858192935 -3.4865355643803696E-4 0.010155818989226762 -316.52446943790704 1.9042537726345033E-4 0.999499844461022 -0.029218234216443942 925.885746268106 -0.010828980627331767 0.028885503360564706 0.9990787869646506 5749.9061170025025 + + + affine + 1.0 0.0 0.0 224668.07142857142 0.0 1.0 0.0 -110710.11904761905 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9997997858192935 -3.4865355643803696E-4 0.010155818989226762 -316.52446943790704 1.9042537726345033E-4 0.999499844461022 -0.029218234216443942 925.885746268106 -0.010828980627331767 0.028885503360564706 0.9990787869646506 5749.9061170025025 + + + affine + 1.0 0.0 0.0 224668.07142857142 0.0 1.0 0.0 -110710.11904761905 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9997997858192935 -3.4865355643803696E-4 0.010155818989226762 -316.52446943790704 1.9042537726345033E-4 0.999499844461022 -0.029218234216443942 925.885746268106 -0.010828980627331767 0.028885503360564706 0.9990787869646506 5749.9061170025025 + + + affine + 1.0 0.0 0.0 224668.07142857142 0.0 1.0 0.0 -110710.11904761905 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9996632270073733 -4.087146549944316E-6 0.009393297940122794 -224.6337295237082 3.235888678327507E-4 0.9999473395425269 -0.02935233865599706 925.5075831024284 -0.008496703900574807 0.02911315625516294 0.9990917847781635 5247.3108843639 + + + affine + 1.0 0.0 0.0 226415.09523809524 0.0 1.0 0.0 -110701.78571428571 0.0 0.0 1.0 33718.80952380953 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9996632270073733 -4.087146549944316E-6 0.009393297940122794 -224.6337295237082 3.235888678327507E-4 0.9999473395425269 -0.02935233865599706 925.5075831024284 -0.008496703900574807 0.02911315625516294 0.9990917847781635 5247.3108843639 + + + affine + 1.0 0.0 0.0 226415.09523809524 0.0 1.0 0.0 -110701.78571428571 0.0 0.0 1.0 33718.80952380953 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9996632270073733 -4.087146549944316E-6 0.009393297940122794 -224.6337295237082 3.235888678327507E-4 0.9999473395425269 -0.02935233865599706 925.5075831024284 -0.008496703900574807 0.02911315625516294 0.9990917847781635 5247.3108843639 + + + affine + 1.0 0.0 0.0 226415.09523809524 0.0 1.0 0.0 -110701.78571428571 0.0 0.0 1.0 33718.80952380953 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9991465245176788 4.1743552118321997E-4 0.0087571890274932 -39.455942632499934 2.928359741384708E-4 1.0002154687806977 -0.02986345319237378 956.717610487005 -0.007073769641294489 0.029162394872099238 0.9994365437285369 4916.831821660479 + + + affine + 1.0 0.0 0.0 228160.33333333334 0.0 1.0 0.0 -110694.64285714286 0.0 0.0 1.0 33718.333333333336 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9991465245176788 4.1743552118321997E-4 0.0087571890274932 -39.455942632499934 2.928359741384708E-4 1.0002154687806977 -0.02986345319237378 956.717610487005 -0.007073769641294489 0.029162394872099238 0.9994365437285369 4916.831821660479 + + + affine + 1.0 0.0 0.0 228160.33333333334 0.0 1.0 0.0 -110694.64285714286 0.0 0.0 1.0 33718.333333333336 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9991465245176788 4.1743552118321997E-4 0.0087571890274932 -39.455942632499934 2.928359741384708E-4 1.0002154687806977 -0.02986345319237378 956.717610487005 -0.007073769641294489 0.029162394872099238 0.9994365437285369 4916.831821660479 + + + affine + 1.0 0.0 0.0 228160.33333333334 0.0 1.0 0.0 -110694.64285714286 0.0 0.0 1.0 33718.333333333336 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9986314914589577 -3.868140518287731E-6 0.007559765300913156 95.84269513280981 4.680324530174424E-4 1.0003125491549127 -0.030616218354763844 926.0347388520906 -0.004171652787627009 0.03017392331842518 1.0000069039839186 4341.464237569248 + + + affine + 1.0 0.0 0.0 229899.61904761905 0.0 1.0 0.0 -108939.88095238095 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9986314914589577 -3.868140518287731E-6 0.007559765300913156 95.84269513280981 4.680324530174424E-4 1.0003125491549127 -0.030616218354763844 926.0347388520906 -0.004171652787627009 0.03017392331842518 1.0000069039839186 4341.464237569248 + + + affine + 1.0 0.0 0.0 229899.61904761905 0.0 1.0 0.0 -108939.88095238095 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9986314914589577 -3.868140518287731E-6 0.007559765300913156 95.84269513280981 4.680324530174424E-4 1.0003125491549127 -0.030616218354763844 926.0347388520906 -0.004171652787627009 0.03017392331842518 1.0000069039839186 4341.464237569248 + + + affine + 1.0 0.0 0.0 229899.61904761905 0.0 1.0 0.0 -108939.88095238095 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9994417533949602 -3.8702377932056084E-4 0.008336887814464398 -154.71361409755997 5.460012712691325E-4 0.9999944060904883 -0.029947400172343513 874.7300731744089 -0.006807490936240833 0.029932018542259433 0.997790984187894 5001.928515403055 + + + affine + 1.0 0.0 0.0 228152.59523809524 0.0 1.0 0.0 -108947.02380952382 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9994417533949602 -3.8702377932056084E-4 0.008336887814464398 -154.71361409755997 5.460012712691325E-4 0.9999944060904883 -0.029947400172343513 874.7300731744089 -0.006807490936240833 0.029932018542259433 0.997790984187894 5001.928515403055 + + + affine + 1.0 0.0 0.0 228152.59523809524 0.0 1.0 0.0 -108947.02380952382 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9994417533949602 -3.8702377932056084E-4 0.008336887814464398 -154.71361409755997 5.460012712691325E-4 0.9999944060904883 -0.029947400172343513 874.7300731744089 -0.006807490936240833 0.029932018542259433 0.997790984187894 5001.928515403055 + + + affine + 1.0 0.0 0.0 228152.59523809524 0.0 1.0 0.0 -108947.02380952382 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9997315757400621 -4.609772381679327E-4 0.009213768676357922 -257.56933042962385 6.821548411520826E-4 0.9996865740533271 -0.03011648832874727 841.4122657606594 -0.00822124818863107 0.029909617636122945 0.998685954518209 5291.49039301714 + + + affine + 1.0 0.0 0.0 226409.7380952381 0.0 1.0 0.0 -108956.54761904762 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9997315757400621 -4.609772381679327E-4 0.009213768676357922 -257.56933042962385 6.821548411520826E-4 0.9996865740533271 -0.03011648832874727 841.4122657606594 -0.00822124818863107 0.029909617636122945 0.998685954518209 5291.49039301714 + + + affine + 1.0 0.0 0.0 226409.7380952381 0.0 1.0 0.0 -108956.54761904762 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9997315757400621 -4.609772381679327E-4 0.009213768676357922 -257.56933042962385 6.821548411520826E-4 0.9996865740533271 -0.03011648832874727 841.4122657606594 -0.00822124818863107 0.029909617636122945 0.998685954518209 5291.49039301714 + + + affine + 1.0 0.0 0.0 226409.7380952381 0.0 1.0 0.0 -108956.54761904762 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9997360303260265 -6.328246641856919E-4 0.0098416455299096 -295.7442313646667 8.517842024397057E-4 0.9992294728713305 -0.029647671479284095 761.0147340288671 -0.010345089208895437 0.029721794896033885 0.9987304930517564 5754.298712605778 + + + affine + 1.0 0.0 0.0 224660.92857142858 0.0 1.0 0.0 -108964.28571428571 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9997360303260265 -6.328246641856919E-4 0.0098416455299096 -295.7442313646667 8.517842024397057E-4 0.9992294728713305 -0.029647671479284095 761.0147340288671 -0.010345089208895437 0.029721794896033885 0.9987304930517564 5754.298712605778 + + + affine + 1.0 0.0 0.0 224660.92857142858 0.0 1.0 0.0 -108964.28571428571 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9997360303260265 -6.328246641856919E-4 0.0098416455299096 -295.7442313646667 8.517842024397057E-4 0.9992294728713305 -0.029647671479284095 761.0147340288671 -0.010345089208895437 0.029721794896033885 0.9987304930517564 5754.298712605778 + + + affine + 1.0 0.0 0.0 224660.92857142858 0.0 1.0 0.0 -108964.28571428571 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9994838921259409 -6.855384993158937E-4 0.010502877621906681 -263.9947698431928 5.93533819427262E-4 0.9990720019441726 -0.029418275549662407 822.0819451702607 -0.011300758821938832 0.02904665562945169 0.9974080014096548 5950.255048678477 + + + affine + 1.0 0.0 0.0 222913.90476190476 0.0 1.0 0.0 -108971.42857142857 0.0 0.0 1.0 33719.04761904762 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9994838921259409 -6.855384993158937E-4 0.010502877621906681 -263.9947698431928 5.93533819427262E-4 0.9990720019441726 -0.029418275549662407 822.0819451702607 -0.011300758821938832 0.02904665562945169 0.9974080014096548 5950.255048678477 + + + affine + 1.0 0.0 0.0 222913.90476190476 0.0 1.0 0.0 -108971.42857142857 0.0 0.0 1.0 33719.04761904762 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9994838921259409 -6.855384993158937E-4 0.010502877621906681 -263.9947698431928 5.93533819427262E-4 0.9990720019441726 -0.029418275549662407 822.0819451702607 -0.011300758821938832 0.02904665562945169 0.9974080014096548 5950.255048678477 + + + affine + 1.0 0.0 0.0 222913.90476190476 0.0 1.0 0.0 -108971.42857142857 0.0 0.0 1.0 33719.04761904762 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.999395415307311 -9.210141178260079E-4 0.011420658877487081 -303.1265526849413 1.774661682874769E-5 0.9990266549668734 -0.029548278181460254 976.5026884435731 -0.013390922539910149 0.028423467891684807 0.9979725644081755 6326.458908781727 + + + affine + 1.0 0.0 0.0 221171.04761904763 0.0 1.0 0.0 -108981.54761904762 0.0 0.0 1.0 33719.166666666664 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.999395415307311 -9.210141178260079E-4 0.011420658877487081 -303.1265526849413 1.774661682874769E-5 0.9990266549668734 -0.029548278181460254 976.5026884435731 -0.013390922539910149 0.028423467891684807 0.9979725644081755 6326.458908781727 + + + affine + 1.0 0.0 0.0 221171.04761904763 0.0 1.0 0.0 -108981.54761904762 0.0 0.0 1.0 33719.166666666664 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.999395415307311 -9.210141178260079E-4 0.011420658877487081 -303.1265526849413 1.774661682874769E-5 0.9990266549668734 -0.029548278181460254 976.5026884435731 -0.013390922539910149 0.028423467891684807 0.9979725644081755 6326.458908781727 + + + affine + 1.0 0.0 0.0 221171.04761904763 0.0 1.0 0.0 -108981.54761904762 0.0 0.0 1.0 33719.166666666664 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9994000530869104 -8.610579539881451E-4 0.012458707269897121 -334.82715217081636 3.967340355743127E-5 0.9987053660749198 -0.029176530987833203 948.1565358857167 -0.01430231959392703 0.027957148531343855 0.9982460774960341 6464.067299197618 + + + affine + 1.0 0.0 0.0 219424.02380952382 0.0 1.0 0.0 -108988.69047619047 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9994000530869104 -8.610579539881451E-4 0.012458707269897121 -334.82715217081636 3.967340355743127E-5 0.9987053660749198 -0.029176530987833203 948.1565358857167 -0.01430231959392703 0.027957148531343855 0.9982460774960341 6464.067299197618 + + + affine + 1.0 0.0 0.0 219424.02380952382 0.0 1.0 0.0 -108988.69047619047 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9994000530869104 -8.610579539881451E-4 0.012458707269897121 -334.82715217081636 3.967340355743127E-5 0.9987053660749198 -0.029176530987833203 948.1565358857167 -0.01430231959392703 0.027957148531343855 0.9982460774960341 6464.067299197618 + + + affine + 1.0 0.0 0.0 219424.02380952382 0.0 1.0 0.0 -108988.69047619047 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9995140443161971 -8.934056456388488E-4 0.013046469168751634 -382.9718517616093 4.461755619413587E-4 0.9984646792949037 -0.02889663999533787 846.5345290073008 -0.014844246047328615 0.027484357422092636 0.9977255798321438 6545.846395359 + + + affine + 1.0 0.0 0.0 217678.7857142857 0.0 1.0 0.0 -108996.42857142857 0.0 0.0 1.0 33718.80952380953 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9995140443161971 -8.934056456388488E-4 0.013046469168751634 -382.9718517616093 4.461755619413587E-4 0.9984646792949037 -0.02889663999533787 846.5345290073008 -0.014844246047328615 0.027484357422092636 0.9977255798321438 6545.846395359 + + + affine + 1.0 0.0 0.0 217678.7857142857 0.0 1.0 0.0 -108996.42857142857 0.0 0.0 1.0 33718.80952380953 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9995140443161971 -8.934056456388488E-4 0.013046469168751634 -382.9718517616093 4.461755619413587E-4 0.9984646792949037 -0.02889663999533787 846.5345290073008 -0.014844246047328615 0.027484357422092636 0.9977255798321438 6545.846395359 + + + affine + 1.0 0.0 0.0 217678.7857142857 0.0 1.0 0.0 -108996.42857142857 0.0 0.0 1.0 33718.80952380953 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9997807650094181 -0.0011174192256996178 0.013661350552492126 -486.71040603631144 7.699253364688657E-4 0.9981441176382173 -0.029083011387910907 771.9194067462786 -0.016928422704064416 0.027329772694982463 0.9985926559864805 6946.773494670502 + + + affine + 1.0 0.0 0.0 215935.33333333334 0.0 1.0 0.0 -109005.95238095238 0.0 0.0 1.0 33718.57142857143 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9997807650094181 -0.0011174192256996178 0.013661350552492126 -486.71040603631144 7.699253364688657E-4 0.9981441176382173 -0.029083011387910907 771.9194067462786 -0.016928422704064416 0.027329772694982463 0.9985926559864805 6946.773494670502 + + + affine + 1.0 0.0 0.0 215935.33333333334 0.0 1.0 0.0 -109005.95238095238 0.0 0.0 1.0 33718.57142857143 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9997807650094181 -0.0011174192256996178 0.013661350552492126 -486.71040603631144 7.699253364688657E-4 0.9981441176382173 -0.029083011387910907 771.9194067462786 -0.016928422704064416 0.027329772694982463 0.9985926559864805 6946.773494670502 + + + affine + 1.0 0.0 0.0 215935.33333333334 0.0 1.0 0.0 -109005.95238095238 0.0 0.0 1.0 33718.57142857143 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 1.0000213314310673 -0.0011534929516067204 0.013434666529609682 -510.9139561678909 0.0015428207936543823 0.9980832053546492 -0.02925211723230337 600.3352575964445 -0.016895527685967755 0.028592672698329668 0.999071035209931 7052.261760355265 + + + affine + 1.0 0.0 0.0 215924.61904761905 0.0 1.0 0.0 -107261.30952380953 0.0 0.0 1.0 33719.04761904762 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 1.0000213314310673 -0.0011534929516067204 0.013434666529609682 -510.9139561678909 0.0015428207936543823 0.9980832053546492 -0.02925211723230337 600.3352575964445 -0.016895527685967755 0.028592672698329668 0.999071035209931 7052.261760355265 + + + affine + 1.0 0.0 0.0 215924.61904761905 0.0 1.0 0.0 -107261.30952380953 0.0 0.0 1.0 33719.04761904762 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 1.0000213314310673 -0.0011534929516067204 0.013434666529609682 -510.9139561678909 0.0015428207936543823 0.9980832053546492 -0.02925211723230337 600.3352575964445 -0.016895527685967755 0.028592672698329668 0.999071035209931 7052.261760355265 + + + affine + 1.0 0.0 0.0 215924.61904761905 0.0 1.0 0.0 -107261.30952380953 0.0 0.0 1.0 33719.04761904762 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9996912488710544 -0.0010066705782468433 0.013224051096236575 -419.77814814305697 6.731948583653233E-4 0.9985628482627029 -0.029378189153564237 819.8963648194956 -0.01472784208250278 0.02875873113465003 0.9983165175434391 6619.0974607992475 + + + affine + 1.0 0.0 0.0 217670.45238095237 0.0 1.0 0.0 -107251.78571428571 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9996912488710544 -0.0010066705782468433 0.013224051096236575 -419.77814814305697 6.731948583653233E-4 0.9985628482627029 -0.029378189153564237 819.8963648194956 -0.01472784208250278 0.02875873113465003 0.9983165175434391 6619.0974607992475 + + + affine + 1.0 0.0 0.0 217670.45238095237 0.0 1.0 0.0 -107251.78571428571 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9996912488710544 -0.0010066705782468433 0.013224051096236575 -419.77814814305697 6.731948583653233E-4 0.9985628482627029 -0.029378189153564237 819.8963648194956 -0.01472784208250278 0.02875873113465003 0.9983165175434391 6619.0974607992475 + + + affine + 1.0 0.0 0.0 217670.45238095237 0.0 1.0 0.0 -107251.78571428571 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9996581994997292 -7.522332416840332E-4 0.012689484893511769 -372.2873269348761 5.00481931712389E-4 0.9988551614220184 -0.029948782818908424 884.76792463701 -0.014055813196483361 0.029119814739371815 0.9995040943691265 6462.1219945576595 + + + affine + 1.0 0.0 0.0 219416.88095238095 0.0 1.0 0.0 -107243.45238095238 0.0 0.0 1.0 33718.333333333336 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9996581994997292 -7.522332416840332E-4 0.012689484893511769 -372.2873269348761 5.00481931712389E-4 0.9988551614220184 -0.029948782818908424 884.76792463701 -0.014055813196483361 0.029119814739371815 0.9995040943691265 6462.1219945576595 + + + affine + 1.0 0.0 0.0 219416.88095238095 0.0 1.0 0.0 -107243.45238095238 0.0 0.0 1.0 33718.333333333336 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9996581994997292 -7.522332416840332E-4 0.012689484893511769 -372.2873269348761 5.00481931712389E-4 0.9988551614220184 -0.029948782818908424 884.76792463701 -0.014055813196483361 0.029119814739371815 0.9995040943691265 6462.1219945576595 + + + affine + 1.0 0.0 0.0 219416.88095238095 0.0 1.0 0.0 -107243.45238095238 0.0 0.0 1.0 33718.333333333336 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9996864817456967 -7.240023218373945E-4 0.01199198126293628 -354.7528403736028 2.973840370343181E-4 0.99915358648337 -0.029727988075897174 928.379646757917 -0.013253178622373463 0.029449067615725712 1.0001265266407244 6292.081280321323 + + + affine + 1.0 0.0 0.0 221163.30952380953 0.0 1.0 0.0 -107235.71428571429 0.0 0.0 1.0 33718.80952380953 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9996864817456967 -7.240023218373945E-4 0.01199198126293628 -354.7528403736028 2.973840370343181E-4 0.99915358648337 -0.029727988075897174 928.379646757917 -0.013253178622373463 0.029449067615725712 1.0001265266407244 6292.081280321323 + + + affine + 1.0 0.0 0.0 221163.30952380953 0.0 1.0 0.0 -107235.71428571429 0.0 0.0 1.0 33718.80952380953 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9996864817456967 -7.240023218373945E-4 0.01199198126293628 -354.7528403736028 2.973840370343181E-4 0.99915358648337 -0.029727988075897174 928.379646757917 -0.013253178622373463 0.029449067615725712 1.0001265266407244 6292.081280321323 + + + affine + 1.0 0.0 0.0 221163.30952380953 0.0 1.0 0.0 -107235.71428571429 0.0 0.0 1.0 33718.80952380953 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9997838904514268 -5.273914153788172E-4 0.011101843005888894 -328.1447582456726 8.886581160231936E-4 0.9993771895816457 -0.029891282917022827 801.9376053036772 -0.011595202930886459 0.029928037903952036 0.9985143745092919 6025.458139527783 + + + affine + 1.0 0.0 0.0 222908.54761904763 0.0 1.0 0.0 -107229.76190476191 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9997838904514268 -5.273914153788172E-4 0.011101843005888894 -328.1447582456726 8.886581160231936E-4 0.9993771895816457 -0.029891282917022827 801.9376053036772 -0.011595202930886459 0.029928037903952036 0.9985143745092919 6025.458139527783 + + + affine + 1.0 0.0 0.0 222908.54761904763 0.0 1.0 0.0 -107229.76190476191 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9997838904514268 -5.273914153788172E-4 0.011101843005888894 -328.1447582456726 8.886581160231936E-4 0.9993771895816457 -0.029891282917022827 801.9376053036772 -0.011595202930886459 0.029928037903952036 0.9985143745092919 6025.458139527783 + + + affine + 1.0 0.0 0.0 222908.54761904763 0.0 1.0 0.0 -107229.76190476191 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 1.0000415831987854 -6.128560459147532E-4 0.010066433989342075 -364.03773736668387 0.0013759738830611352 0.9993261494146974 -0.030487857751982688 683.2951292648421 -0.010459151999923994 0.030410996227505795 0.9999791332478599 5764.301623179796 + + + affine + 1.0 0.0 0.0 224653.19047619047 0.0 1.0 0.0 -107217.26190476191 0.0 0.0 1.0 33718.333333333336 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 1.0000415831987854 -6.128560459147532E-4 0.010066433989342075 -364.03773736668387 0.0013759738830611352 0.9993261494146974 -0.030487857751982688 683.2951292648421 -0.010459151999923994 0.030410996227505795 0.9999791332478599 5764.301623179796 + + + affine + 1.0 0.0 0.0 224653.19047619047 0.0 1.0 0.0 -107217.26190476191 0.0 0.0 1.0 33718.333333333336 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 1.0000415831987854 -6.128560459147532E-4 0.010066433989342075 -364.03773736668387 0.0013759738830611352 0.9993261494146974 -0.030487857751982688 683.2951292648421 -0.010459151999923994 0.030410996227505795 0.9999791332478599 5764.301623179796 + + + affine + 1.0 0.0 0.0 224653.19047619047 0.0 1.0 0.0 -107217.26190476191 0.0 0.0 1.0 33718.333333333336 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 1.0001242697207364 -8.256821740454555E-4 0.009133312450857582 -376.0610264446373 9.997211630114484E-4 0.9995425281279234 -0.03037309461838659 762.8746602350637 -0.008915530168292175 0.03087370469147378 1.000587081243297 5438.816919808204 + + + affine + 1.0 0.0 0.0 226399.61904761905 0.0 1.0 0.0 -107212.5 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 1.0001242697207364 -8.256821740454555E-4 0.009133312450857582 -376.0610264446373 9.997211630114484E-4 0.9995425281279234 -0.03037309461838659 762.8746602350637 -0.008915530168292175 0.03087370469147378 1.000587081243297 5438.816919808204 + + + affine + 1.0 0.0 0.0 226399.61904761905 0.0 1.0 0.0 -107212.5 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 1.0001242697207364 -8.256821740454555E-4 0.009133312450857582 -376.0610264446373 9.997211630114484E-4 0.9995425281279234 -0.03037309461838659 762.8746602350637 -0.008915530168292175 0.03087370469147378 1.000587081243297 5438.816919808204 + + + affine + 1.0 0.0 0.0 226399.61904761905 0.0 1.0 0.0 -107212.5 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9999231965663066 -7.64406746406747E-4 0.008304436305168975 -298.37967391498296 8.558872881271574E-4 0.9998922769675938 -0.03039773140808293 808.7348602887766 -0.006746620310115923 0.031198754613915445 0.9985052273609376 5048.967721249725 + + + affine + 1.0 0.0 0.0 228143.66666666666 0.0 1.0 0.0 -107202.97619047618 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9999231965663066 -7.64406746406747E-4 0.008304436305168975 -298.37967391498296 8.558872881271574E-4 0.9998922769675938 -0.03039773140808293 808.7348602887766 -0.006746620310115923 0.031198754613915445 0.9985052273609376 5048.967721249725 + + + affine + 1.0 0.0 0.0 228143.66666666666 0.0 1.0 0.0 -107202.97619047618 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9999231965663066 -7.64406746406747E-4 0.008304436305168975 -298.37967391498296 8.558872881271574E-4 0.9998922769675938 -0.03039773140808293 808.7348602887766 -0.006746620310115923 0.031198754613915445 0.9985052273609376 5048.967721249725 + + + affine + 1.0 0.0 0.0 228143.66666666666 0.0 1.0 0.0 -107202.97619047618 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9993440207852645 -4.898616251307666E-4 0.007832345841295833 -123.29539999133135 6.395802025690382E-4 1.0002464797435744 -0.03110090733958698 897.0295637073623 -0.004133819321019937 0.03143909213353226 1.0002852470119148 4406.911944299408 + + + affine + 1.0 0.0 0.0 229889.5 0.0 1.0 0.0 -107194.04761904762 0.0 0.0 1.0 33718.45238095238 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9993440207852645 -4.898616251307666E-4 0.007832345841295833 -123.29539999133135 6.395802025690382E-4 1.0002464797435744 -0.03110090733958698 897.0295637073623 -0.004133819321019937 0.03143909213353226 1.0002852470119148 4406.911944299408 + + + affine + 1.0 0.0 0.0 229889.5 0.0 1.0 0.0 -107194.04761904762 0.0 0.0 1.0 33718.45238095238 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9993440207852645 -4.898616251307666E-4 0.007832345841295833 -123.29539999133135 6.395802025690382E-4 1.0002464797435744 -0.03110090733958698 897.0295637073623 -0.004133819321019937 0.03143909213353226 1.0002852470119148 4406.911944299408 + + + affine + 1.0 0.0 0.0 229889.5 0.0 1.0 0.0 -107194.04761904762 0.0 0.0 1.0 33718.45238095238 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9999388577517356 -0.001088258187676163 0.007314523680306053 -283.34692696169674 0.0013890591140078587 1.0003947369177695 -0.030876032470724322 704.9168463340656 0.0110197115987785 0.03290466844248958 0.9991395974477093 1085.9484544824008 + + + affine + 1.0 0.0 0.0 231626.40476190476 0.0 1.0 0.0 -105441.66666666667 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9999388577517356 -0.001088258187676163 0.007314523680306053 -283.34692696169674 0.0013890591140078587 1.0003947369177695 -0.030876032470724322 704.9168463340656 0.0110197115987785 0.03290466844248958 0.9991395974477093 1085.9484544824008 + + + affine + 1.0 0.0 0.0 231626.40476190476 0.0 1.0 0.0 -105441.66666666667 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9999388577517356 -0.001088258187676163 0.007314523680306053 -283.34692696169674 0.0013890591140078587 1.0003947369177695 -0.030876032470724322 704.9168463340656 0.0110197115987785 0.03290466844248958 0.9991395974477093 1085.9484544824008 + + + affine + 1.0 0.0 0.0 231626.40476190476 0.0 1.0 0.0 -105441.66666666667 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9996797670659479 -0.0010937504914898218 0.007725760103018878 -235.92440311324177 9.046882826765581E-4 1.0002085649223855 -0.03062354232592432 811.4914687026669 -0.004206805273521333 0.0326360912506098 0.9988320301635765 4596.182185433616 + + + affine + 1.0 0.0 0.0 229881.16666666666 0.0 1.0 0.0 -105448.80952380953 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9996797670659479 -0.0010937504914898218 0.007725760103018878 -235.92440311324177 9.046882826765581E-4 1.0002085649223855 -0.03062354232592432 811.4914687026669 -0.004206805273521333 0.0326360912506098 0.9988320301635765 4596.182185433616 + + + affine + 1.0 0.0 0.0 229881.16666666666 0.0 1.0 0.0 -105448.80952380953 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9996797670659479 -0.0010937504914898218 0.007725760103018878 -235.92440311324177 9.046882826765581E-4 1.0002085649223855 -0.03062354232592432 811.4914687026669 -0.004206805273521333 0.0326360912506098 0.9988320301635765 4596.182185433616 + + + affine + 1.0 0.0 0.0 229881.16666666666 0.0 1.0 0.0 -105448.80952380953 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9999410566222463 -9.821068041469274E-4 0.008398267317649706 -304.41631813465057 0.0012788287421543769 0.9998839464969896 -0.031148973917164525 734.4642571539134 -0.0063531883635636515 0.03278778505622612 1.000652642835466 5039.337163972218 + + + affine + 1.0 0.0 0.0 228135.33333333334 0.0 1.0 0.0 -105457.73809523809 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9999410566222463 -9.821068041469274E-4 0.008398267317649706 -304.41631813465057 0.0012788287421543769 0.9998839464969896 -0.031148973917164525 734.4642571539134 -0.0063531883635636515 0.03278778505622612 1.000652642835466 5039.337163972218 + + + affine + 1.0 0.0 0.0 228135.33333333334 0.0 1.0 0.0 -105457.73809523809 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9999410566222463 -9.821068041469274E-4 0.008398267317649706 -304.41631813465057 0.0012788287421543769 0.9998839464969896 -0.031148973917164525 734.4642571539134 -0.0063531883635636515 0.03278778505622612 1.000652642835466 5039.337163972218 + + + affine + 1.0 0.0 0.0 228135.33333333334 0.0 1.0 0.0 -105457.73809523809 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 1.000057287803543 -7.76437574304535E-4 0.009083963462090169 -330.2594720502648 0.0012236682606532913 0.9994698204397552 -0.03054285420563057 705.3037712268284 -0.008687586989094534 0.03231755913438899 1.0007815975186365 5518.865201446442 + + + affine + 1.0 0.0 0.0 226391.88095238095 0.0 1.0 0.0 -105466.07142857143 0.0 0.0 1.0 33718.80952380953 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 1.000057287803543 -7.76437574304535E-4 0.009083963462090169 -330.2594720502648 0.0012236682606532913 0.9994698204397552 -0.03054285420563057 705.3037712268284 -0.008687586989094534 0.03231755913438899 1.0007815975186365 5518.865201446442 + + + affine + 1.0 0.0 0.0 226391.88095238095 0.0 1.0 0.0 -105466.07142857143 0.0 0.0 1.0 33718.80952380953 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 1.000057287803543 -7.76437574304535E-4 0.009083963462090169 -330.2594720502648 0.0012236682606532913 0.9994698204397552 -0.03054285420563057 705.3037712268284 -0.008687586989094534 0.03231755913438899 1.0007815975186365 5518.865201446442 + + + affine + 1.0 0.0 0.0 226391.88095238095 0.0 1.0 0.0 -105466.07142857143 0.0 0.0 1.0 33718.80952380953 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9999684503171737 -8.093251472398063E-4 0.009870313986334757 -338.14321164773344 0.0012813245044840538 0.9994815342249591 -0.030402471168009412 712.5792923940551 -0.009465240474654215 0.03219261682425311 0.9993721930438008 5732.046259807206 + + + affine + 1.0 0.0 0.0 224646.64285714287 0.0 1.0 0.0 -105473.80952380953 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9999684503171737 -8.093251472398063E-4 0.009870313986334757 -338.14321164773344 0.0012813245044840538 0.9994815342249591 -0.030402471168009412 712.5792923940551 -0.009465240474654215 0.03219261682425311 0.9993721930438008 5732.046259807206 + + + affine + 1.0 0.0 0.0 224646.64285714287 0.0 1.0 0.0 -105473.80952380953 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 0.9999684503171737 -8.093251472398063E-4 0.009870313986334757 -338.14321164773344 0.0012813245044840538 0.9994815342249591 -0.030402471168009412 712.5792923940551 -0.009465240474654215 0.03219261682425311 0.9993721930438008 5732.046259807206 + + + affine + 1.0 0.0 0.0 224646.64285714287 0.0 1.0 0.0 -105473.80952380953 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 1.0000999026379134 -9.020088143493871E-4 0.011106018997896925 -416.9843375034989 9.013556329995581E-4 0.9994080138989276 -0.030674024664957156 823.6766051771258 -0.011342723649666844 0.03159048338229207 1.0005988331543227 6046.143882336749 + + + affine + 1.0 0.0 0.0 222899.02380952382 0.0 1.0 0.0 -105480.95238095238 0.0 0.0 1.0 33718.57142857143 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 1.0000999026379134 -9.020088143493871E-4 0.011106018997896925 -416.9843375034989 9.013556329995581E-4 0.9994080138989276 -0.030674024664957156 823.6766051771258 -0.011342723649666844 0.03159048338229207 1.0005988331543227 6046.143882336749 + + + affine + 1.0 0.0 0.0 222899.02380952382 0.0 1.0 0.0 -105480.95238095238 0.0 0.0 1.0 33718.57142857143 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 1.0000999026379134 -9.020088143493871E-4 0.011106018997896925 -416.9843375034989 9.013556329995581E-4 0.9994080138989276 -0.030674024664957156 823.6766051771258 -0.011342723649666844 0.03159048338229207 1.0005988331543227 6046.143882336749 + + + affine + 1.0 0.0 0.0 222899.02380952382 0.0 1.0 0.0 -105480.95238095238 0.0 0.0 1.0 33718.57142857143 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 1.000032001491076 -8.367339313927751E-4 0.011623928330774797 -409.5004419261133 8.768121497455587E-4 0.9991860523715207 -0.029926300625205623 802.9903155277364 -0.012747300904583262 0.03112755673529201 0.9993171797666337 6376.45220776283 + + + affine + 1.0 0.0 0.0 221154.38095238095 0.0 1.0 0.0 -105490.47619047618 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 1.000032001491076 -8.367339313927751E-4 0.011623928330774797 -409.5004419261133 8.768121497455587E-4 0.9991860523715207 -0.029926300625205623 802.9903155277364 -0.012747300904583262 0.03112755673529201 0.9993171797666337 6376.45220776283 + + + affine + 1.0 0.0 0.0 221154.38095238095 0.0 1.0 0.0 -105490.47619047618 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 1.000032001491076 -8.367339313927751E-4 0.011623928330774797 -409.5004419261133 8.768121497455587E-4 0.9991860523715207 -0.029926300625205623 802.9903155277364 -0.012747300904583262 0.03112755673529201 0.9993171797666337 6376.45220776283 + + + affine + 1.0 0.0 0.0 221154.38095238095 0.0 1.0 0.0 -105490.47619047618 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 1.000042282624973 -0.0010921431918372933 0.012291476504532018 -459.35738055082584 6.722976412980821E-4 0.9989158317184669 -0.029608555094787416 832.7157004835523 -0.013653234067857033 0.030875004126217274 0.998850297783002 6566.780588238498 + + + affine + 1.0 0.0 0.0 219407.95238095237 0.0 1.0 0.0 -105497.02380952382 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 1.000042282624973 -0.0010921431918372933 0.012291476504532018 -459.35738055082584 6.722976412980821E-4 0.9989158317184669 -0.029608555094787416 832.7157004835523 -0.013653234067857033 0.030875004126217274 0.998850297783002 6566.780588238498 + + + affine + 1.0 0.0 0.0 219407.95238095237 0.0 1.0 0.0 -105497.02380952382 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 1.000042282624973 -0.0010921431918372933 0.012291476504532018 -459.35738055082584 6.722976412980821E-4 0.9989158317184669 -0.029608555094787416 832.7157004835523 -0.013653234067857033 0.030875004126217274 0.998850297783002 6566.780588238498 + + + affine + 1.0 0.0 0.0 219407.95238095237 0.0 1.0 0.0 -105497.02380952382 0.0 0.0 1.0 33718.92857142857 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 1.0000746693246403 -0.001167111303289791 0.013120019565630801 -499.2563250580059 0.0012028355179208665 0.9985423307053071 -0.029840848138080835 710.1650767626676 -0.014417120825528089 0.030786933066088488 1.0001514645462612 6678.398617297527 + + + affine + 1.0 0.0 0.0 217662.11904761905 0.0 1.0 0.0 -105505.35714285714 0.0 0.0 1.0 33718.333333333336 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 1.0000746693246403 -0.001167111303289791 0.013120019565630801 -499.2563250580059 0.0012028355179208665 0.9985423307053071 -0.029840848138080835 710.1650767626676 -0.014417120825528089 0.030786933066088488 1.0001514645462612 6678.398617297527 + + + affine + 1.0 0.0 0.0 217662.11904761905 0.0 1.0 0.0 -105505.35714285714 0.0 0.0 1.0 33718.333333333336 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 1.0000746693246403 -0.001167111303289791 0.013120019565630801 -499.2563250580059 0.0012028355179208665 0.9985423307053071 -0.029840848138080835 710.1650767626676 -0.014417120825528089 0.030786933066088488 1.0001514645462612 6678.398617297527 + + + affine + 1.0 0.0 0.0 217662.11904761905 0.0 1.0 0.0 -105505.35714285714 0.0 0.0 1.0 33718.333333333336 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 1.0004839673645096 -0.0016249568094969438 0.013060700272952471 -631.2293629711764 0.0024171667912960973 0.9979615410324797 -0.02921561516330106 386.1059725223296 -0.016813993970707028 0.030561210493956256 0.9997620276442353 7190.207179439177 + + + affine + 1.0 0.0 0.0 215918.07142857142 0.0 1.0 0.0 -105514.28571428571 0.0 0.0 1.0 33718.80952380953 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 1.0004839673645096 -0.0016249568094969438 0.013060700272952471 -631.2293629711764 0.0024171667912960973 0.9979615410324797 -0.02921561516330106 386.1059725223296 -0.016813993970707028 0.030561210493956256 0.9997620276442353 7190.207179439177 + + + affine + 1.0 0.0 0.0 215918.07142857142 0.0 1.0 0.0 -105514.28571428571 0.0 0.0 1.0 33718.80952380953 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + InterpolatedAffineModel3D + 1.0004839673645096 -0.0016249568094969438 0.013060700272952471 -631.2293629711764 0.0024171667912960973 0.9979615410324797 -0.02921561516330106 386.1059725223296 -0.016813993970707028 0.030561210493956256 0.9997620276442353 7190.207179439177 + + + affine + 1.0 0.0 0.0 215918.07142857142 0.0 1.0 0.0 -105514.28571428571 0.0 0.0 1.0 33718.80952380953 + + + calibration + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2.380952380952381 0.0 + + + + + tpId_0_viewSetupId_0/fiducials + tpId_0_viewSetupId_3/fiducials + tpId_0_viewSetupId_6/fiducials + tpId_0_viewSetupId_9/fiducials + tpId_0_viewSetupId_12/fiducials + tpId_0_viewSetupId_15/fiducials + tpId_0_viewSetupId_18/fiducials + tpId_0_viewSetupId_21/fiducials + tpId_0_viewSetupId_24/fiducials + tpId_0_viewSetupId_27/fiducials + tpId_0_viewSetupId_30/fiducials + tpId_0_viewSetupId_33/fiducials + tpId_0_viewSetupId_36/fiducials + tpId_0_viewSetupId_39/fiducials + tpId_0_viewSetupId_42/fiducials + tpId_0_viewSetupId_45/fiducials + tpId_0_viewSetupId_48/fiducials + tpId_0_viewSetupId_51/fiducials + tpId_0_viewSetupId_54/fiducials + tpId_0_viewSetupId_57/fiducials + tpId_0_viewSetupId_60/fiducials + tpId_0_viewSetupId_63/fiducials + tpId_0_viewSetupId_66/fiducials + tpId_0_viewSetupId_69/fiducials + tpId_0_viewSetupId_72/fiducials + tpId_0_viewSetupId_75/fiducials + tpId_0_viewSetupId_78/fiducials + tpId_0_viewSetupId_81/fiducials + tpId_0_viewSetupId_84/fiducials + tpId_0_viewSetupId_87/fiducials + tpId_0_viewSetupId_90/fiducials + tpId_0_viewSetupId_93/fiducials + tpId_0_viewSetupId_96/fiducials + tpId_0_viewSetupId_99/fiducials + tpId_0_viewSetupId_102/fiducials + tpId_0_viewSetupId_105/fiducials + tpId_0_viewSetupId_108/fiducials + tpId_0_viewSetupId_111/fiducials + tpId_0_viewSetupId_114/fiducials + tpId_0_viewSetupId_117/fiducials + tpId_0_viewSetupId_120/fiducials + tpId_0_viewSetupId_123/fiducials + tpId_0_viewSetupId_126/fiducials + tpId_0_viewSetupId_129/fiducials + tpId_0_viewSetupId_132/fiducials + tpId_0_viewSetupId_135/fiducials + tpId_0_viewSetupId_138/fiducials + tpId_0_viewSetupId_141/fiducials + tpId_0_viewSetupId_144/fiducials + + + + + + diff --git a/tests/test_models.py b/tests/test_models.py index 591eef9..1b77a88 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -7,6 +7,7 @@ from xmldiff.actions import DeleteNode from pydantic_bigstitcher import BasePath, BoundingBoxes, PatternTimePoints, SequenceDescription, SpimData2, ViewInterestPoints, ViewRegistrations, ViewSetup, ViewSetups, ZarrImageLoader, ZGroup from pydantic_bigstitcher.transforms import AffineViewTransform, HoAffine, flatten_hoaffine, stringify_tuple +import deepdiff def test_simple_model(): data = """ @@ -182,7 +183,7 @@ def test_decode_view_interest_points(): ('BasePath', BasePath), ('ViewRegistrations', ViewRegistrations), ]) -@pytest.mark.parametrize('bigstitcher_xml', (0,1,2,3), indirect=True) +@pytest.mark.parametrize('bigstitcher_xml', (0,1,2,3,4,5), indirect=True) def test_view_setups(bigstitcher_xml: str, attribute_path: str, model_class: BaseXmlModel): from xml.etree import ElementTree tree = ElementTree.fromstring(bigstitcher_xml) @@ -197,15 +198,13 @@ def test_view_setups(bigstitcher_xml: str, attribute_path: str, model_class: Bas expected = xmltodict.parse(subnode_str) assert observed == expected - -@pytest.mark.parametrize('bigstitcher_xml', (0,1,2), indirect=True) -def test_encode_decode(bigstitcher_xml: str) -> None: +@pytest.mark.parametrize('bigstitcher_xml', (0,1,2,3,4,5), indirect=True) +def test_encode_decode_dict(bigstitcher_xml: str) -> None: model = SpimData2.from_xml(bigstitcher_xml.encode()) - model_xml = model.to_xml() - data_xml_encoded = bigstitcher_xml.encode() - diff = main.diff_texts(model_xml, data_xml_encoded) - # ensure that the diff only contains deletions, i.e. the modeled xml is larger than the real xml - assert all(isinstance(x, DeleteNode) for x in diff) + observed = xmltodict.parse(model.to_xml()) + expected = xmltodict.parse(bigstitcher_xml) + diff = deepdiff.diff.DeepDiff(observed, expected) + assert diff == {} def test_transform(): trs = {'x': -7096.0, 'y': -5320.0, 'z': -28672.0} From 7432b245479dd8c347d7153bb5300961c467e1fb Mon Sep 17 00:00:00 2001 From: Davis Vann Bennett Date: Wed, 2 Oct 2024 21:33:23 -0400 Subject: [PATCH 2/9] use dict diff tool --- pyproject.toml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 8dcf052..a4422c0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ name = "pydantic-bigstitcher" dynamic = ["version"] description = '' readme = "README.md" -requires-python = ">=3.8" +requires-python = ">=3.10" license = "MIT" keywords = [] authors = [ @@ -16,8 +16,6 @@ authors = [ classifiers = [ "Development Status :: 4 - Beta", "Programming Language :: Python", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", @@ -42,7 +40,8 @@ dependencies = [ "coverage[toml]>=6.5", "pytest", "xmldiff", - "xmltodict" + "xmltodict", + "deepdiff==8.0.1" ] [tool.hatch.envs.test.scripts] @@ -58,7 +57,7 @@ cov = [ ] [[tool.hatch.envs.all.matrix]] -python = ["3.8", "3.9", "3.10", "3.11", "3.12"] +python = ["3.10", "3.11", "3.12"] [tool.hatch.envs.types] dependencies = [ From c20b7d49ef41f44e95eca1081a8fdf50fab9220a Mon Sep 17 00:00:00 2001 From: Davis Vann Bennett Date: Wed, 2 Oct 2024 21:47:10 -0400 Subject: [PATCH 3/9] rename integerpattern to elements --- src/pydantic_bigstitcher/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pydantic_bigstitcher/__init__.py b/src/pydantic_bigstitcher/__init__.py index 5310dfd..a1fb236 100644 --- a/src/pydantic_bigstitcher/__init__.py +++ b/src/pydantic_bigstitcher/__init__.py @@ -88,7 +88,7 @@ class ViewSetups(BaseXmlModel): class PatternTimePoints(BaseXmlModel, tag="Timepoints"): type: Literal["pattern"] = attr(name="type") - integerpattern: list[str] = element() + elements: list[str] = element(tag='integerpattern') class MissingView(BaseXmlModel): From 5cab4b29f4ec98a32d9e55c567b5b2cbb7e5fd18 Mon Sep 17 00:00:00 2001 From: Davis Vann Bennett Date: Wed, 2 Oct 2024 22:10:38 -0400 Subject: [PATCH 4/9] update pyproject.toml --- .pre-commit-config.yaml | 37 +++++++ pyproject.toml | 32 ++++++ src/pydantic_bigstitcher/__init__.py | 122 ++++++++++++++-------- src/pydantic_bigstitcher/transforms.py | 44 ++++---- tests/conftest.py | 8 +- tests/test_models.py | 139 +++++++++++++++---------- 6 files changed, 262 insertions(+), 120 deletions(-) create mode 100644 .pre-commit-config.yaml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..6fe84d5 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,37 @@ +ci: + autoupdate_commit_msg: "chore: update pre-commit hooks" + autofix_commit_msg: "style: pre-commit fixes" + autofix_prs: false +default_stages: [commit, push] +default_language_version: + python: python3 +repos: + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.6.8 + hooks: + - id: ruff + args: ["--fix", "--show-fixes"] + - id: ruff-format + - repo: https://github.com/codespell-project/codespell + rev: v2.3.0 + hooks: + - id: codespell + args: ["-L", "ba,ihs,kake,nd,noe,nwo,te,fo,zar", "-S", "fixture"] + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.6.0 + hooks: + - id: check-yaml + - repo: https://github.com/pre-commit/mirrors-mypy + rev: v1.11.2 + hooks: + - id: mypy + files: src|tests + - repo: https://github.com/scientific-python/cookie + rev: 2024.08.19 + hooks: + - id: sp-repo-review + - repo: https://github.com/pre-commit/pygrep-hooks + rev: v1.10.0 + hooks: + - id: rst-directive-colons + - id: rst-inline-touching-normal \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index a4422c0..c54d772 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -84,3 +84,35 @@ exclude_lines = [ "if __name__ == .__main__.:", "if TYPE_CHECKING:", ] +[tool.mypy] +python_version = "3.11" +ignore_missing_imports = true +namespace_packages = false + +[tool.ruff] +line-length = 100 +force-exclude = true +extend-exclude = [ + ".bzr", + ".direnv", + ".eggs", + ".git", + ".mypy_cache", + ".nox", + ".pants.d", + ".ruff_cache", + ".venv", + "__pypackages__", + "_build", + "buck-out", + "build", + "dist", + "notebooks", # temporary, until we achieve compatibility with ruff ≥ 0.6 + "venv", + "docs", +] + +[tool.pytest.ini_options] +minversion = "7" +testpaths = ["tests"] +log_cli_level = "INFO" \ No newline at end of file diff --git a/src/pydantic_bigstitcher/__init__.py b/src/pydantic_bigstitcher/__init__.py index a1fb236..36759ef 100644 --- a/src/pydantic_bigstitcher/__init__.py +++ b/src/pydantic_bigstitcher/__init__.py @@ -12,6 +12,7 @@ class BasePath(BaseXmlModel): type: Literal["relative", "absolute"] = attr(name="type") path: str + class ZGroup(BaseXmlModel, tag="zgroup"): setup: str = attr() timepoint: str = attr() @@ -26,22 +27,25 @@ class Zarr(BaseXmlModel): type: str = attr(name="type") path: str + class N5(BaseXmlModel): - type: str = attr(name='type') + type: str = attr(name="type") path: str -class ZarrImageLoader(BaseXmlModel, tag='ImageLoader', skip_empty=True): +class ZarrImageLoader(BaseXmlModel, tag="ImageLoader", skip_empty=True): fmt: str = attr(name="format") version: str = attr() s3bucket: Optional[str] = element(default=None) zarr: Zarr = element(tag="zarr") zgroups: ZGroups = element(tag="zgroups") -class BDVN5ImageLoader(BaseXmlModel, tag='ImageLoader', skip_empty=True): + +class BDVN5ImageLoader(BaseXmlModel, tag="ImageLoader", skip_empty=True): fmt: str = attr(name="format") version: str = attr() - n5: N5 = element(tag='n5') + n5: N5 = element(tag="n5") + class VoxelSize(BaseXmlModel): unit: str = element() @@ -54,41 +58,51 @@ class ViewSetupAttributes(BaseXmlModel): tile: str = element() angle: str = element() + class ViewSetup(BaseXmlModel): ident: str = element(tag="id") name: str = element() size: str = element() voxel_size: VoxelSize = element(tag="voxelSize") - attributes: ViewSetupAttributes = element(tag='attributes') + attributes: ViewSetupAttributes = element(tag="attributes") + class Attribute(BaseXmlModel): - id: int = element(tag='id') - name: str = element(tag='name') + id: int = element(tag="id") + name: str = element(tag="name") -class IlluminationAttribute(BaseXmlModel, tag='Attributes'): - name: Literal["illumination"] = attr(tag='name') - illumination: list[Attribute] = element(tag='Illumination') -class TileAttribute(BaseXmlModel, tag='Attributes'): - name: Literal["tile"] = attr(tag='name') - tile: list[Attribute] = element(tag='Tile') +class IlluminationAttribute(BaseXmlModel, tag="Attributes"): + name: Literal["illumination"] = attr(tag="name") + illumination: list[Attribute] = element(tag="Illumination") -class AngleAttribute(BaseXmlModel, tag='Attributes'): - name: Literal["angle"] = attr(tag='name') - angle: list[Attribute] = element(tag='Angle') -class ChannelAttribute(BaseXmlModel, tag='Attributes'): - name: Literal["channel"] = attr(tag='name') - angle: list[Attribute] = element(tag='Channel') +class TileAttribute(BaseXmlModel, tag="Attributes"): + name: Literal["tile"] = attr(tag="name") + tile: list[Attribute] = element(tag="Tile") + + +class AngleAttribute(BaseXmlModel, tag="Attributes"): + name: Literal["angle"] = attr(tag="name") + angle: list[Attribute] = element(tag="Angle") + + +class ChannelAttribute(BaseXmlModel, tag="Attributes"): + name: Literal["channel"] = attr(tag="name") + angle: list[Attribute] = element(tag="Channel") + class ViewSetups(BaseXmlModel): # the order of the definition of these attributes should match the order of the data in xml elements: list[ViewSetup] = element(tag="ViewSetup") - attributes: list[IlluminationAttribute | TileAttribute | AngleAttribute | ChannelAttribute] = element(tag='Attributes') + attributes: list[ + IlluminationAttribute | TileAttribute | AngleAttribute | ChannelAttribute + ] = element(tag="Attributes") + class PatternTimePoints(BaseXmlModel, tag="Timepoints"): type: Literal["pattern"] = attr(name="type") - elements: list[str] = element(tag='integerpattern') + elements: list[str] = element(tag="integerpattern") class MissingView(BaseXmlModel): @@ -100,15 +114,17 @@ class MissingViews(BaseXmlModel): elements: list[MissingView] = element("MissingView", default=None) -class SequenceDescription(BaseXmlModel, search_mode='unordered'): +class SequenceDescription(BaseXmlModel, search_mode="unordered"): """ https://github.com/bigdataviewer/spimdata/blob/46c3878baef80cc4170a33012c8281481dbbfcb2/src/main/java/mpicbg/spim/data/generic/sequence/AbstractSequenceDescription.java#L52 """ - image_loader: ZarrImageLoader | BDVN5ImageLoader | None = element(tag="ImageLoader", default=None) + image_loader: ZarrImageLoader | BDVN5ImageLoader | None = element( + tag="ImageLoader", default=None + ) view_setups: ViewSetups | None = element(tag="ViewSetups", default=None) - time_points: PatternTimePoints | None = element(tag="Timepoints", default=None) - missing_views: MissingViews | None = element(tag="MissingViews", default=None) + time_points: PatternTimePoints | None = element(tag="Timepoints", default=None) + missing_views: MissingViews | None = element(tag="MissingViews", default=None) class ViewRegistration(BaseXmlModel): @@ -120,8 +136,10 @@ class ViewRegistration(BaseXmlModel): setup: str = attr() view_transforms: list[AffineViewTransform] = element(tag="ViewTransform") + class ViewRegistrations(BaseXmlModel): - elements: list[ViewRegistration] = element(tag='ViewRegistration') + elements: list[ViewRegistration] = element(tag="ViewRegistration") + class SpimData(BaseXmlModel): """ @@ -129,8 +147,8 @@ class SpimData(BaseXmlModel): """ version: Literal["0.2"] = attr(version="0.2") - base_path: BasePath = element(tag='BasePath') - sequence_description: SequenceDescription = element(tag='SequenceDescription') + base_path: BasePath = element(tag="BasePath") + sequence_description: SequenceDescription = element(tag="SequenceDescription") view_registrations: ViewRegistrations = element(tag="ViewRegistrations") @@ -139,33 +157,40 @@ class ViewInterestPointsFile(BaseXmlModel): setup: str = attr() label: str = attr() params: str = attr() - path: str + path: str + class ViewInterestPoints(BaseXmlModel): - elements: list[ViewInterestPointsFile] | None = element(tag='ViewInterestPointsFile', default=None) + elements: list[ViewInterestPointsFile] | None = element( + tag="ViewInterestPointsFile", default=None + ) + class BoundingBox(BaseXmlModel): """ https://github.com/PreibischLab/multiview-reconstruction/blob/master/src/main/java/net/preibisch/mvrecon/fiji/spimdata/boundingbox/BoundingBox.java#L30 """ + title: str = attr() - mininum: str = attr(name='min') - maximum: str = attr(name='max') + mininum: str = attr(name="min") + maximum: str = attr(name="max") + class BoundingBoxes(BaseXmlModel): """ https://github.com/PreibischLab/multiview-reconstruction/blob/master/src/main/java/net/preibisch/mvrecon/fiji/spimdata/boundingbox/BoundingBoxes.java#L29 """ - elements: list[BoundingBox] | None = element(tag='BoundingBox', default=None) -class PointSpreadFunctions(BaseXmlModel): - ... + elements: list[BoundingBox] | None = element(tag="BoundingBox", default=None) + + +class PointSpreadFunctions(BaseXmlModel): ... -class StitchingResults(BaseXmlModel): - ... -class IntensityAdjustments(BaseXmlModel): - ... +class StitchingResults(BaseXmlModel): ... + + +class IntensityAdjustments(BaseXmlModel): ... class SpimData2(SpimData, tag="SpimData"): @@ -173,9 +198,16 @@ class SpimData2(SpimData, tag="SpimData"): https://github.com/PreibischLab/multiview-reconstruction/blob/master/src/main/java/net/preibisch/mvrecon/fiji/spimdata/SpimData2.java#L64 """ - view_interest_points: ViewInterestPoints | None = element(tag='ViewInterestPoints', default=None) - bounding_boxes: BoundingBoxes | None = element(tag='BoundingBoxes', default=None) - point_spread_functions: PointSpreadFunctions | None = element(tag='PointSpreadFunctions', default=None) - stitching_results: StitchingResults | None = element(tag='StitchingResults', default=None) - intensity_adjustments: IntensityAdjustments | None = element(tag='IntensityAdjustments', default=None) - + view_interest_points: ViewInterestPoints | None = element( + tag="ViewInterestPoints", default=None + ) + bounding_boxes: BoundingBoxes | None = element(tag="BoundingBoxes", default=None) + point_spread_functions: PointSpreadFunctions | None = element( + tag="PointSpreadFunctions", default=None + ) + stitching_results: StitchingResults | None = element( + tag="StitchingResults", default=None + ) + intensity_adjustments: IntensityAdjustments | None = element( + tag="IntensityAdjustments", default=None + ) diff --git a/src/pydantic_bigstitcher/transforms.py b/src/pydantic_bigstitcher/transforms.py index f22ddd3..c70caca 100644 --- a/src/pydantic_bigstitcher/transforms.py +++ b/src/pydantic_bigstitcher/transforms.py @@ -6,7 +6,7 @@ from typing import Iterable, Mapping, TypeVar, TypeAlias, Literal, Generic from pydantic import BaseModel -T = TypeVar('T', bound=str) +T = TypeVar("T", bound=str) # bigstitcher only represents the 3 classic spatial axes Axes: TypeAlias = Literal["z", "y", "x"] @@ -15,27 +15,32 @@ VectorMap: TypeAlias = Mapping[T, float] MatrixMap: TypeAlias = Mapping[T, VectorMap[T]] + class HoAffine(BaseModel, Generic[T]): """ Model a homogeneous affine transformation with named axes. The transform is decomposed into a translation transform and an affine transform. """ + translation: VectorMap[T] affine: MatrixMap[T] + class Transform(BaseModel, Generic[T]): name: str type: str transform: HoAffine[T] + def destringify_tuple(data: str) -> tuple[str, ...]: - return tuple(data.split(' ')) + return tuple(data.split(" ")) + def stringify_tuple(data: Iterable[str]) -> str: - return ' '.join(data) + return " ".join(data) -class AffineViewTransform(BaseXmlModel, tag='ViewTransform'): +class AffineViewTransform(BaseXmlModel, tag="ViewTransform"): typ: Literal["affine"] = attr(name="type") name: str = element(tag="Name") affine: str = element(tag="affine") @@ -43,31 +48,34 @@ class AffineViewTransform(BaseXmlModel, tag='ViewTransform'): def to_transform(self) -> Transform[Axes]: return parse_transform_xyz(self) + def parse_transform_xyz(tx: AffineViewTransform) -> Transform: - homo_affine_arrayed = np.array(tuple(float(x) for x in destringify_tuple(tx.affine))).reshape(len(axes),len(axes) + 1) - trans_array = homo_affine_arrayed[:,-1] + homo_affine_arrayed = np.array( + tuple(float(x) for x in destringify_tuple(tx.affine)) + ).reshape(len(axes), len(axes) + 1) + trans_array = homo_affine_arrayed[:, -1] aff_array = homo_affine_arrayed[:, :-1] aff_dict = {} - - trans_dict: VectorMap[Axes] = {ax: trans_array[idx] for idx, ax in enumerate(reversed(axes))} + + trans_dict: VectorMap[Axes] = { + ax: trans_array[idx] for idx, ax in enumerate(reversed(axes)) + } for oidx, oax in enumerate(reversed(axes)): - aff_dict[oax] = {iax: aff_array[oidx][iidx] for iidx, iax in enumerate(reversed(axes))} - + aff_dict[oax] = { + iax: aff_array[oidx][iidx] for iidx, iax in enumerate(reversed(axes)) + } + return Transform( name=tx.name, type=tx.typ, - transform= - HoAffine[Axes]( - translation=trans_dict, - affine=aff_dict - ) - ) + transform=HoAffine[Axes](translation=trans_dict, affine=aff_dict), + ) + def flatten_hoaffine(tx: HoAffine, axes_out: tuple[str, ...]) -> tuple[float, ...]: out: tuple[float, ...] = () for ax_o in axes_out: for ax_i in axes_out: out += (tx.affine[ax_o][ax_i],) - out += (tx.translation[ax_o], ) + out += (tx.translation[ax_o],) return out - diff --git a/tests/conftest.py b/tests/conftest.py index 72be61a..7b2f17f 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,9 +1,9 @@ import pytest -@pytest.fixture(scope='session') +@pytest.fixture(scope="session") def bigstitcher_xml(request) -> str: - fname = f'tests/fixture/bigstitcher_{request.param}.xml' + fname = f"tests/fixture/bigstitcher_{request.param}.xml" - with open(fname) as fh: - return fh.read() \ No newline at end of file + with open(fname) as fh: + return fh.read() diff --git a/tests/test_models.py b/tests/test_models.py index 1b77a88..4187e5d 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -4,13 +4,27 @@ import pytest from xmldiff import main import xmltodict -from xmldiff.actions import DeleteNode -from pydantic_bigstitcher import BasePath, BoundingBoxes, PatternTimePoints, SequenceDescription, SpimData2, ViewInterestPoints, ViewRegistrations, ViewSetup, ViewSetups, ZarrImageLoader, ZGroup -from pydantic_bigstitcher.transforms import AffineViewTransform, HoAffine, flatten_hoaffine, stringify_tuple +from pydantic_bigstitcher import ( + BasePath, + PatternTimePoints, + SequenceDescription, + SpimData2, + ViewInterestPoints, + ViewRegistrations, + ZarrImageLoader, + ZGroup, +) +from pydantic_bigstitcher.transforms import ( + AffineViewTransform, + HoAffine, + flatten_hoaffine, + stringify_tuple, +) import deepdiff + def test_simple_model(): - data = """ + data = """ 1 @@ -23,16 +37,19 @@ def test_simple_model(): """ - class B(BaseXmlModel): - prop_b: int = element(tag='prop_b') - - class C(BaseXmlModel): - prop_c: int = element(tag='prop_c') - class A(BaseXmlModel): - b: list[B] = element(tag='B') - c: list[C] = element(tag='C') - A.from_xml(data) + class B(BaseXmlModel): + prop_b: int = element(tag="prop_b") + + class C(BaseXmlModel): + prop_c: int = element(tag="prop_c") + + class A(BaseXmlModel): + b: list[B] = element(tag="B") + c: list[C] = element(tag="C") + + A.from_xml(data) + def test_decode_zarr_image_loader(): data = """ @@ -51,6 +68,7 @@ def test_decode_zarr_image_loader(): diff_result = main.diff_texts(data_xml_str, observed_xml_str) assert diff_result == [] + def test_decode_zarr_image_loader_2(): data = """ aind-open-data @@ -97,6 +115,7 @@ def test_decode_timepoints(): diff_result = main.diff_texts(data_xml_str, observed_xml_str) assert diff_result == [] + def test_decode_sequence_description(): data = """ @@ -162,6 +181,7 @@ def test_decode_sequence_description(): diff_result = main.diff_texts(data_xml_str, observed_xml_str) assert diff_result == [] + def test_decode_view_interest_points(): data = """ @@ -178,27 +198,34 @@ def test_decode_view_interest_points(): assert diff_result == [] -@pytest.mark.parametrize('attribute_path, model_class', [ - ('SequenceDescription', SequenceDescription), - ('BasePath', BasePath), - ('ViewRegistrations', ViewRegistrations), - ]) -@pytest.mark.parametrize('bigstitcher_xml', (0,1,2,3,4,5), indirect=True) -def test_view_setups(bigstitcher_xml: str, attribute_path: str, model_class: BaseXmlModel): - from xml.etree import ElementTree - tree = ElementTree.fromstring(bigstitcher_xml) - for part in attribute_path.split('/'): - tree = tree.find(part) - if tree is None: - raise ValueError(f'Could not find a node at {attribute_path}') - - subnode_str = etree.tostring(tree) - model = model_class.from_xml(subnode_str) - observed = xmltodict.parse(model.to_xml()) - expected = xmltodict.parse(subnode_str) - assert observed == expected - -@pytest.mark.parametrize('bigstitcher_xml', (0,1,2,3,4,5), indirect=True) +@pytest.mark.parametrize( + "attribute_path, model_class", + [ + ("SequenceDescription", SequenceDescription), + ("BasePath", BasePath), + ("ViewRegistrations", ViewRegistrations), + ], +) +@pytest.mark.parametrize("bigstitcher_xml", (0, 1, 2, 3, 4, 5), indirect=True) +def test_view_setups( + bigstitcher_xml: str, attribute_path: str, model_class: BaseXmlModel +): + from xml.etree import ElementTree + + tree = ElementTree.fromstring(bigstitcher_xml) + for part in attribute_path.split("/"): + tree = tree.find(part) + if tree is None: + raise ValueError(f"Could not find a node at {attribute_path}") + + subnode_str = etree.tostring(tree) + model = model_class.from_xml(subnode_str) + observed = xmltodict.parse(model.to_xml()) + expected = xmltodict.parse(subnode_str) + assert observed == expected + + +@pytest.mark.parametrize("bigstitcher_xml", (0, 1, 2, 3, 4, 5), indirect=True) def test_encode_decode_dict(bigstitcher_xml: str) -> None: model = SpimData2.from_xml(bigstitcher_xml.encode()) observed = xmltodict.parse(model.to_xml()) @@ -206,25 +233,31 @@ def test_encode_decode_dict(bigstitcher_xml: str) -> None: diff = deepdiff.diff.DeepDiff(observed, expected) assert diff == {} + def test_transform(): - trs = {'x': -7096.0, 'y': -5320.0, 'z': -28672.0} - aff = { - 'x': {'x': 1.2, 'y': 0.2, 'z': 0.0}, - 'y': {'x': 0.0, 'y': 1.5, 'z': 0.0}, - 'z': {'x': 3.0, 'y': 0.0, 'z': 1.0}, - } - affine_str = f"{aff['x']['x']} {aff['x']['y']} {aff['x']['z']} {trs['x']} {aff['y']['x']} {aff['y']['y']} {aff['y']['z']} {trs['y']} {aff['z']['x']} {aff['z']['y']} {aff['z']['z']} {trs['z']}" - name = "Translation to Nominal Grid" - transform_xml = ( - '' - f'{name}' - f'{affine_str}' - '' + trs = {"x": -7096.0, "y": -5320.0, "z": -28672.0} + aff = { + "x": {"x": 1.2, "y": 0.2, "z": 0.0}, + "y": {"x": 0.0, "y": 1.5, "z": 0.0}, + "z": {"x": 3.0, "y": 0.0, "z": 1.0}, + } + affine_str = f"{aff['x']['x']} {aff['x']['y']} {aff['x']['z']} {trs['x']} {aff['y']['x']} {aff['y']['y']} {aff['y']['z']} {trs['y']} {aff['z']['x']} {aff['z']['y']} {aff['z']['z']} {trs['z']}" + name = "Translation to Nominal Grid" + transform_xml = ( + '' + f"{name}" + f"{affine_str}" + "" ) - tx_model = AffineViewTransform.from_xml(transform_xml) - assert tx_model.name== name - assert tx_model.typ == 'affine' - tx = tx_model.to_transform() - assert tx.transform == HoAffine(affine=aff, translation=trs) - assert stringify_tuple(map(str, flatten_hoaffine(tx.transform, axes_out=('x','y','z')))) == affine_str \ No newline at end of file + tx_model = AffineViewTransform.from_xml(transform_xml) + assert tx_model.name == name + assert tx_model.typ == "affine" + tx = tx_model.to_transform() + assert tx.transform == HoAffine(affine=aff, translation=trs) + assert ( + stringify_tuple( + map(str, flatten_hoaffine(tx.transform, axes_out=("x", "y", "z"))) + ) + == affine_str + ) From cfb6ae6b8b0535231b474afabe87c416a3253044 Mon Sep 17 00:00:00 2001 From: Davis Vann Bennett Date: Wed, 2 Oct 2024 22:12:14 -0400 Subject: [PATCH 5/9] update pyproject.toml --- pyproject.toml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index c54d772..acada58 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -115,4 +115,7 @@ extend-exclude = [ [tool.pytest.ini_options] minversion = "7" testpaths = ["tests"] -log_cli_level = "INFO" \ No newline at end of file +log_cli_level = "INFO" +xfail_strict = true +addopts = ["-ra", "--strict-config", "--strict-markers"] +filterwarnings = ["error"] \ No newline at end of file From b4bdd3dc61f69683b59242a52b3b77e8e1aa8b80 Mon Sep 17 00:00:00 2001 From: Davis Vann Bennett Date: Wed, 2 Oct 2024 23:25:05 -0400 Subject: [PATCH 6/9] repo review --- .github/dependabot.yml | 11 +++++ .github/workflows/test.yml | 43 +++++++++++++++++++ .pre-commit-config.yaml | 23 +++++++--- .readthedocs.yaml | 17 ++++++++ README.md | 2 +- docs/api/pydantic_bigstitcher.md | 1 + docs/api/transform.md | 1 + docs/index.md | 3 ++ mkdocs.yml | 17 ++++++++ pyproject.toml | 42 ++++++++++++++---- src/pydantic_bigstitcher/__init__.py | 19 ++++---- .../{transforms.py => transform.py} | 25 +++++------ tests/conftest.py | 2 +- tests/test_models.py | 41 ++++++++---------- 14 files changed, 185 insertions(+), 62 deletions(-) create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/test.yml create mode 100644 .readthedocs.yaml create mode 100644 docs/api/pydantic_bigstitcher.md create mode 100644 docs/api/transform.md create mode 100644 docs/index.md create mode 100644 mkdocs.yml rename src/pydantic_bigstitcher/{transforms.py => transform.py} (73%) diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..6c4b369 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,11 @@ +version: 2 +updates: + # Maintain dependencies for GitHub Actions + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" + groups: + actions: + patterns: + - "*" diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..fc496e6 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,43 @@ +# This workflow will install Python dependencies, run tests and lint with a variety of Python versions +# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions + +name: Test V3 + +on: + push: + branches: [main] + pull_request: + branches: [main] + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + test: + name: py=${{ matrix.python-version }} + + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.10", "3.11", "3.12"] + + steps: + - uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + cache: "pip" + - name: Install Hatch + run: | + python -m pip install --upgrade pip + pip install hatch + - name: Set Up Hatch Env + run: | + hatch env create test.py${{ matrix.python-version }} + hatch env run -e test.py${{ matrix.python-version }} list-env + - name: Run Tests + run: | + hatch env run --env test.py${{ matrix.python-version }} run diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 6fe84d5..e6fee45 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -9,9 +9,9 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit rev: v0.6.8 hooks: - - id: ruff - args: ["--fix", "--show-fixes"] - - id: ruff-format + - id: ruff + args: ["--fix", "--show-fixes"] + - id: ruff-format - repo: https://github.com/codespell-project/codespell rev: v2.3.0 hooks: @@ -20,12 +20,15 @@ repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.6.0 hooks: - - id: check-yaml + - id: check-yaml - repo: https://github.com/pre-commit/mirrors-mypy rev: v1.11.2 hooks: - id: mypy files: src|tests + additional_dependencies: + - pydantic-xml + - pytest - repo: https://github.com/scientific-python/cookie rev: 2024.08.19 hooks: @@ -34,4 +37,14 @@ repos: rev: v1.10.0 hooks: - id: rst-directive-colons - - id: rst-inline-touching-normal \ No newline at end of file + - id: rst-inline-touching-normal + - repo: https://github.com/adamchainz/blacken-docs + rev: "" # replace with latest tag on GitHub + hooks: + - id: blacken-docs + additional_dependencies: + - black==22.12.0 + - repo: https://github.com/rbubley/mirrors-prettier + rev: "" # Use the sha / tag you want to point at + hooks: + - id: prettier diff --git a/.readthedocs.yaml b/.readthedocs.yaml new file mode 100644 index 0000000..67c194c --- /dev/null +++ b/.readthedocs.yaml @@ -0,0 +1,17 @@ +# Read the Docs configuration file +# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details + +version: 2 + +build: + os: ubuntu-22.04 + tools: + python: "3.12" + commands: + - asdf plugin add uv + - asdf install uv latest + - asdf global uv latest + - uv venv + - uv pip install .[docs] + - .venv/bin/python -m sphinx -T -b html -d docs/_build/doctrees -D + language=en docs $READTHEDOCS_OUTPUT/html diff --git a/README.md b/README.md index 43a1c86..f5c57ea 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ [![PyPI - Version](https://img.shields.io/pypi/v/pydantic-bigstitcher.svg)](https://pypi.org/project/pydantic-bigstitcher) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pydantic-bigstitcher.svg)](https://pypi.org/project/pydantic-bigstitcher) ------ +--- Pydantic models for [bigsticher](https://github.com/PreibischLab/BigStitcher). This is very minimal right now, with features being added only as needed. diff --git a/docs/api/pydantic_bigstitcher.md b/docs/api/pydantic_bigstitcher.md new file mode 100644 index 0000000..43a0c30 --- /dev/null +++ b/docs/api/pydantic_bigstitcher.md @@ -0,0 +1 @@ +::: pydantic_bigstitcher diff --git a/docs/api/transform.md b/docs/api/transform.md new file mode 100644 index 0000000..42c04d7 --- /dev/null +++ b/docs/api/transform.md @@ -0,0 +1 @@ +::: pydantic_bigstitcher.transform diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..680a1df --- /dev/null +++ b/docs/index.md @@ -0,0 +1,3 @@ +# pydantic-bigstitcher + +pydantic models for bigstitcher xml documents diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 0000000..b21b2d7 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,17 @@ +site_name: pydantic-bigstitcher +site_url: https://d-v-b.github.io/pydantic-bigstitcher/ +theme: + name: material +watch: ["src"] +plugins: + - mkdocstrings: + handlers: + python: + options: + docstring_style: numpy + members_order: source + separate_signature: true + filters: ["!^_"] + docstring_options: + ignore_init_summary: true + merge_init_into_class: true diff --git a/pyproject.toml b/pyproject.toml index acada58..872c927 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,15 +28,12 @@ dependencies = [ ] [project.urls] -Documentation = "https://github.com/unknown/pydantic-bigstitcher#readme" -Issues = "https://github.com/unknown/pydantic-bigstitcher/issues" -Source = "https://github.com/unknown/pydantic-bigstitcher" +Documentation = "https://github.com/d-v-b/pydantic-bigstitcher#readme" +Issues = "https://github.com/d-v-b/pydantic-bigstitcher/issues" +Source = "https://github.com/d-v-b/pydantic-bigstitcher" -[tool.hatch.version] -path = "src/pydantic_bigstitcher/__about__.py" - -[tool.hatch.envs.test] -dependencies = [ +[project.optional-dependencies] +test = [ "coverage[toml]>=6.5", "pytest", "xmldiff", @@ -44,6 +41,17 @@ dependencies = [ "deepdiff==8.0.1" ] +docs = [ + "mkdocs-material>=9.5.39", + "mkdocstrings[python]>=0.26.1" + ] + +[tool.hatch.version] +path = "src/pydantic_bigstitcher/__about__.py" + +[tool.hatch.envs.test] +features = ["test"] + [tool.hatch.envs.test.scripts] run = "pytest {args:tests}" run-cov = "coverage run -m pytest {args:tests}" @@ -56,6 +64,14 @@ cov = [ "cov-report", ] +[tool.hatch.envs.docs] +features = ["docs"] + +[tool.hatch.envs.docs.scripts] +"serve" = "mkdocs serve" +"build" = "mkdocs build" +"deploy" = "mkdocs gh-deploy" + [[tool.hatch.envs.all.matrix]] python = ["3.10", "3.11", "3.12"] @@ -88,6 +104,9 @@ exclude_lines = [ python_version = "3.11" ignore_missing_imports = true namespace_packages = false +strict=true +warn_unreachable = true +enable_error_code = ["ignore-without-code", "redundant-expr", "truthy-bool"] [tool.ruff] line-length = 100 @@ -111,6 +130,13 @@ extend-exclude = [ "venv", "docs", ] +[tool.ruff.lint] + extend-select = [ + "B", # flake8-bugbear + "I", # isort + "UP", # pyupgrade + ] + [tool.pytest.ini_options] minversion = "7" diff --git a/src/pydantic_bigstitcher/__init__.py b/src/pydantic_bigstitcher/__init__.py index 36759ef..de35c35 100644 --- a/src/pydantic_bigstitcher/__init__.py +++ b/src/pydantic_bigstitcher/__init__.py @@ -1,11 +1,10 @@ from __future__ import annotations -from typing import Any, Literal, Optional +from typing import Literal from pydantic_xml import BaseXmlModel, attr, element -from pydantic_bigstitcher.transforms import Axes, HoAffine -from pydantic_bigstitcher.transforms import AffineViewTransform +from pydantic_bigstitcher.transform import AffineViewTransform class BasePath(BaseXmlModel): @@ -36,7 +35,7 @@ class N5(BaseXmlModel): class ZarrImageLoader(BaseXmlModel, tag="ImageLoader", skip_empty=True): fmt: str = attr(name="format") version: str = attr() - s3bucket: Optional[str] = element(default=None) + s3bucket: str | None = element(default=None) zarr: Zarr = element(tag="zarr") zgroups: ZGroups = element(tag="zgroups") @@ -95,9 +94,9 @@ class ChannelAttribute(BaseXmlModel, tag="Attributes"): class ViewSetups(BaseXmlModel): # the order of the definition of these attributes should match the order of the data in xml elements: list[ViewSetup] = element(tag="ViewSetup") - attributes: list[ - IlluminationAttribute | TileAttribute | AngleAttribute | ChannelAttribute - ] = element(tag="Attributes") + attributes: list[IlluminationAttribute | TileAttribute | AngleAttribute | ChannelAttribute] = ( + element(tag="Attributes") + ) class PatternTimePoints(BaseXmlModel, tag="Timepoints"): @@ -172,7 +171,7 @@ class BoundingBox(BaseXmlModel): """ title: str = attr() - mininum: str = attr(name="min") + minimum: str = attr(name="min") maximum: str = attr(name="max") @@ -205,9 +204,7 @@ class SpimData2(SpimData, tag="SpimData"): point_spread_functions: PointSpreadFunctions | None = element( tag="PointSpreadFunctions", default=None ) - stitching_results: StitchingResults | None = element( - tag="StitchingResults", default=None - ) + stitching_results: StitchingResults | None = element(tag="StitchingResults", default=None) intensity_adjustments: IntensityAdjustments | None = element( tag="IntensityAdjustments", default=None ) diff --git a/src/pydantic_bigstitcher/transforms.py b/src/pydantic_bigstitcher/transform.py similarity index 73% rename from src/pydantic_bigstitcher/transforms.py rename to src/pydantic_bigstitcher/transform.py index c70caca..83d7382 100644 --- a/src/pydantic_bigstitcher/transforms.py +++ b/src/pydantic_bigstitcher/transform.py @@ -1,10 +1,11 @@ from __future__ import annotations -from pydantic_xml import BaseXmlModel, attr, element -import numpy as np +from collections.abc import Iterable, Mapping +from typing import Any, Generic, Literal, TypeAlias, TypeVar -from typing import Iterable, Mapping, TypeVar, TypeAlias, Literal, Generic +import numpy as np from pydantic import BaseModel +from pydantic_xml import BaseXmlModel, attr, element T = TypeVar("T", bound=str) @@ -49,21 +50,17 @@ def to_transform(self) -> Transform[Axes]: return parse_transform_xyz(self) -def parse_transform_xyz(tx: AffineViewTransform) -> Transform: - homo_affine_arrayed = np.array( - tuple(float(x) for x in destringify_tuple(tx.affine)) - ).reshape(len(axes), len(axes) + 1) +def parse_transform_xyz(tx: AffineViewTransform) -> Transform[Any]: + homo_affine_arrayed = np.array(tuple(float(x) for x in destringify_tuple(tx.affine))).reshape( + len(axes), len(axes) + 1 + ) trans_array = homo_affine_arrayed[:, -1] aff_array = homo_affine_arrayed[:, :-1] aff_dict = {} - trans_dict: VectorMap[Axes] = { - ax: trans_array[idx] for idx, ax in enumerate(reversed(axes)) - } + trans_dict: VectorMap[Axes] = {ax: trans_array[idx] for idx, ax in enumerate(reversed(axes))} for oidx, oax in enumerate(reversed(axes)): - aff_dict[oax] = { - iax: aff_array[oidx][iidx] for iidx, iax in enumerate(reversed(axes)) - } + aff_dict[oax] = {iax: aff_array[oidx][iidx] for iidx, iax in enumerate(reversed(axes))} return Transform( name=tx.name, @@ -72,7 +69,7 @@ def parse_transform_xyz(tx: AffineViewTransform) -> Transform: ) -def flatten_hoaffine(tx: HoAffine, axes_out: tuple[str, ...]) -> tuple[float, ...]: +def flatten_hoaffine(tx: HoAffine[Any], axes_out: tuple[str, ...]) -> tuple[float, ...]: out: tuple[float, ...] = () for ax_o in axes_out: for ax_i in axes_out: diff --git a/tests/conftest.py b/tests/conftest.py index 7b2f17f..3bbc1f6 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -2,7 +2,7 @@ @pytest.fixture(scope="session") -def bigstitcher_xml(request) -> str: +def bigstitcher_xml(request: pytest.FixtureRequest) -> str: fname = f"tests/fixture/bigstitcher_{request.param}.xml" with open(fname) as fh: diff --git a/tests/test_models.py b/tests/test_models.py index 4187e5d..1f1f46b 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -1,9 +1,12 @@ +from xml.etree import ElementTree from xml.etree import ElementTree as etree -from pydantic_xml import BaseXmlModel, element +import deepdiff import pytest -from xmldiff import main import xmltodict +from pydantic_xml import BaseXmlModel, element +from xmldiff import main + from pydantic_bigstitcher import ( BasePath, PatternTimePoints, @@ -20,10 +23,9 @@ flatten_hoaffine, stringify_tuple, ) -import deepdiff -def test_simple_model(): +def test_simple_model() -> None: data = """ @@ -51,7 +53,7 @@ class A(BaseXmlModel): A.from_xml(data) -def test_decode_zarr_image_loader(): +def test_decode_zarr_image_loader() -> None: data = """ /data/foo_dataset/SPIM.ome.zarr @@ -69,7 +71,7 @@ def test_decode_zarr_image_loader(): assert diff_result == [] -def test_decode_zarr_image_loader_2(): +def test_decode_zarr_image_loader_2() -> None: data = """ aind-open-data @@ -89,7 +91,7 @@ def test_decode_zarr_image_loader_2(): assert diff_result == [] -def test_decode_zgroup(): +def test_decode_zgroup() -> None: data = """ tile_x_0000_y_0000_z_0000_ch_488.zarr @@ -102,7 +104,7 @@ def test_decode_zgroup(): assert diff_result == [] -def test_decode_timepoints(): +def test_decode_timepoints() -> None: data = """ 0 @@ -116,7 +118,7 @@ def test_decode_timepoints(): assert diff_result == [] -def test_decode_sequence_description(): +def test_decode_sequence_description() -> None: data = """ @@ -182,7 +184,7 @@ def test_decode_sequence_description(): assert diff_result == [] -def test_decode_view_interest_points(): +def test_decode_view_interest_points() -> None: data = """ None: + tree: etree.Element = ElementTree.fromstring(bigstitcher_xml) for part in attribute_path.split("/"): - tree = tree.find(part) - if tree is None: + maybe_tree = tree.find(part) + if maybe_tree is None: raise ValueError(f"Could not find a node at {attribute_path}") + tree = maybe_tree subnode_str = etree.tostring(tree) model = model_class.from_xml(subnode_str) @@ -234,7 +233,7 @@ def test_encode_decode_dict(bigstitcher_xml: str) -> None: assert diff == {} -def test_transform(): +def test_transform() -> None: trs = {"x": -7096.0, "y": -5320.0, "z": -28672.0} aff = { "x": {"x": 1.2, "y": 0.2, "z": 0.0}, @@ -256,8 +255,6 @@ def test_transform(): tx = tx_model.to_transform() assert tx.transform == HoAffine(affine=aff, translation=trs) assert ( - stringify_tuple( - map(str, flatten_hoaffine(tx.transform, axes_out=("x", "y", "z"))) - ) + stringify_tuple(map(str, flatten_hoaffine(tx.transform, axes_out=("x", "y", "z")))) == affine_str ) From 9550d7c4a830524b1658a30a565031e6d0f57191 Mon Sep 17 00:00:00 2001 From: Davis Vann Bennett Date: Wed, 2 Oct 2024 23:25:52 -0400 Subject: [PATCH 7/9] propagate transforms -> transform name to tests --- tests/test_models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_models.py b/tests/test_models.py index 1f1f46b..96ab351 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -17,7 +17,7 @@ ZarrImageLoader, ZGroup, ) -from pydantic_bigstitcher.transforms import ( +from pydantic_bigstitcher.transform import ( AffineViewTransform, HoAffine, flatten_hoaffine, From 6198a9537a60f4d291cc0ee7af18c311c7abaeb4 Mon Sep 17 00:00:00 2001 From: Davis Vann Bennett Date: Wed, 2 Oct 2024 23:30:50 -0400 Subject: [PATCH 8/9] declare test envs --- pyproject.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 872c927..51cc5c9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -52,6 +52,9 @@ path = "src/pydantic_bigstitcher/__about__.py" [tool.hatch.envs.test] features = ["test"] +[[tool.hatch.envs.test.matrix]] +python = ["3.10", "3.11", "3.12"] + [tool.hatch.envs.test.scripts] run = "pytest {args:tests}" run-cov = "coverage run -m pytest {args:tests}" From cc865dfbc76bc2deeeddbcdcf6b2f014bd14d152 Mon Sep 17 00:00:00 2001 From: Davis Vann Bennett Date: Wed, 2 Oct 2024 23:33:07 -0400 Subject: [PATCH 9/9] remove reference to nonexistent hatch env --- .github/workflows/test.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index fc496e6..c979127 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -37,7 +37,6 @@ jobs: - name: Set Up Hatch Env run: | hatch env create test.py${{ matrix.python-version }} - hatch env run -e test.py${{ matrix.python-version }} list-env - name: Run Tests run: | hatch env run --env test.py${{ matrix.python-version }} run