def checkPersistence(self, transform): """Check persistence of a transform """ className = type(transform).__name__ # check writeString and readString transformStr = transform.writeString() serialVersion, serialClassName, serialRest = transformStr.split(" ", 2) self.assertEqual(int(serialVersion), 1) self.assertEqual(serialClassName, className) badStr1 = " ".join(["2", serialClassName, serialRest]) with self.assertRaises(lsst.pex.exceptions.InvalidParameterError): transform.readString(badStr1) badClassName = "x" + serialClassName badStr2 = " ".join(["1", badClassName, serialRest]) with self.assertRaises(lsst.pex.exceptions.InvalidParameterError): transform.readString(badStr2) transformFromStr1 = transform.readString(transformStr) self.assertTransformsEqual(transform, transformFromStr1) # check transformFromString transformFromStr2 = afwGeom.transformFromString(transformStr) self.assertTransformsEqual(transform, transformFromStr2) # Check pickling self.assertTransformsEqual(transform, pickle.loads(pickle.dumps(transform))) # Check afw::table::io persistence round-trip with lsst.utils.tests.getTempFilePath(".fits") as filename: transform.writeFits(filename) self.assertTransformsEqual(transform, type(transform).readFits(filename))
def checkPersistence(self, transform): """Check persistence of a transform """ className = type(transform).__name__ # check writeString and readString transformStr = transform.writeString() serialVersion, serialClassName, serialRest = transformStr.split(" ", 2) self.assertEqual(int(serialVersion), 1) self.assertEqual(serialClassName, className) badStr1 = " ".join(["2", serialClassName, serialRest]) with self.assertRaises(lsst.pex.exceptions.InvalidParameterError): transform.readString(badStr1) badClassName = "x" + serialClassName badStr2 = " ".join(["1", badClassName, serialRest]) with self.assertRaises(lsst.pex.exceptions.InvalidParameterError): transform.readString(badStr2) transformFromStr1 = transform.readString(transformStr) self.assertEqual(type(transform), type(transformFromStr1)) self.assertEqual(transform.getFrameSet(), transformFromStr1.getFrameSet()) # check transformFromString transformFromStr2 = afwGeom.transformFromString(transformStr) self.assertEqual(type(transform), type(transformFromStr2)) self.assertEqual(transform.getFrameSet(), transformFromStr2.getFrameSet()) fromEndpoint = transform.fromEndpoint toEndpoint = transform.toEndpoint frameSet = transform.getFrameSet() nIn = frameSet.nIn nOut = frameSet.nOut if frameSet.hasForward: nPoints = 7 # arbitrary rawInArray = self.makeRawArrayData(nPoints, nIn) inArray = fromEndpoint.arrayFromData(rawInArray) outArray = transform.applyForward(inArray) outData = toEndpoint.dataFromArray(outArray) outArrayRoundTrip = transformFromStr1.applyForward(inArray) outDataRoundTrip = toEndpoint.dataFromArray(outArrayRoundTrip) assert_allclose(outData, outDataRoundTrip) if frameSet.hasInverse: nPoints = 7 # arbitrary rawOutArray = self.makeRawArrayData(nPoints, nOut) outArray = toEndpoint.arrayFromData(rawOutArray) inArray = transform.applyInverse(outArray) inData = fromEndpoint.dataFromArray(inArray) inArrayRoundTrip = transformFromStr1.applyInverse(outArray) inDataRoundTrip = fromEndpoint.dataFromArray(inArrayRoundTrip) assert_allclose(inData, inDataRoundTrip)