Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DM-10096 Add unit test asserts for SpherePoint, SpherePointList and PointList #17

Merged
merged 4 commits into from
Apr 6, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
_build.*
.sconsign.dblite
config.log
.sconf_temp
Expand All @@ -11,5 +12,6 @@ doc/xml
doc/*.tag
doc/*.inc
doc/doxygen.conf
lib/libmeas_extensions_simpleShape.*
tests/.tests
version.py
4 changes: 2 additions & 2 deletions tests/testMeasurementFramework.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
#!/usr/bin/env python
#
# LSST Data Management System
#
# Copyright 2008-2016 AURA/LSST.
# Copyright 2008-2017 AURA/LSST.
#
# This product includes software developed by the
# LSST Project (http://www.lsst.org/).
Expand Down Expand Up @@ -94,6 +93,7 @@ class TestMemory(lsst.utils.tests.MemoryTestCase):
def setup_module(module):
lsst.utils.tests.init()


if __name__ == "__main__":
lsst.utils.tests.init()
unittest.main()
45 changes: 23 additions & 22 deletions tests/testSimpleShape.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
#!/usr/bin/env python
#
# LSST Data Management System
#
# Copyright 2008-2016 AURA/LSST.
# Copyright 2008-2017 AURA/LSST.
#
# This product includes software developed by the
# LSST Project (http://www.lsst.org/).
Expand All @@ -22,7 +21,8 @@
# see <https://www.lsstcorp.org/LegalNotices/>.
#
import unittest
import numpy

import numpy as np

import lsst.utils.tests
import lsst.afw.geom
Expand All @@ -47,9 +47,9 @@ def setUp(self):
for ellipseCore in self.ellipseCores:
ellipseCore.scale(2)
self.bbox = lsst.afw.geom.Box2I(lsst.afw.geom.Point2I(-500, -500), lsst.afw.geom.Point2I(50, 50))
self.xg, self.yg = numpy.meshgrid(
numpy.arange(self.bbox.getBeginX(), self.bbox.getEndX(), dtype=float),
numpy.arange(self.bbox.getBeginY(), self.bbox.getEndY(), dtype=float)
self.xg, self.yg = np.meshgrid(
np.arange(self.bbox.getBeginX(), self.bbox.getEndX(), dtype=float),
np.arange(self.bbox.getBeginY(), self.bbox.getEndY(), dtype=float)
)

def evaluateGaussian(self, ellipse):
Expand All @@ -59,7 +59,7 @@ def evaluateGaussian(self, ellipse):
gt = ellipse.getGridTransform()
xt = gt[gt.XX] * self.xg + gt[gt.XY] * self.yg + gt[gt.X]
yt = gt[gt.YX] * self.xg + gt[gt.YY] * self.yg + gt[gt.Y]
return numpy.exp(-0.5 * (xt**2 + yt**2))
return np.exp(-0.5 * (xt**2 + yt**2))

def buildImageAndMoments(self, dEllipseCore, dCenter, wEllipseCore, wCenter):
'''
Expand Down Expand Up @@ -92,18 +92,18 @@ def testCorrectWeightedMoments(self):
wEllipse = el.Ellipse(wEllipseCore, wCenter)
wArray = self.evaluateGaussian(wEllipse)
product = dArray * wArray
i0 = numpy.sum(product)
ix = numpy.sum(product * self.xg) / i0
iy = numpy.sum(product * self.yg) / i0
ixx = numpy.sum(product * (self.xg - ix)**2) / i0
iyy = numpy.sum(product * (self.yg - iy)**2) / i0
ixy = numpy.sum(product * (self.xg - ix) * (self.yg - iy)) / i0
i0 = np.sum(product)
ix = np.sum(product * self.xg) / i0
iy = np.sum(product * self.yg) / i0
ixx = np.sum(product * (self.xg - ix)**2) / i0
iyy = np.sum(product * (self.yg - iy)**2) / i0
ixy = np.sum(product * (self.xg - ix) * (self.yg - iy)) / i0
mEllipseCore = el.Quadrupole(ixx, iyy, ixy)
mCenter = lsst.afw.geom.Point2D(ix, iy)
SimpleShape.correctWeightedMoments(wEllipseCore, mEllipseCore, mCenter)
self.assertClose(mEllipseCore.getParameterVector(),
dEllipseCore.getParameterVector(),
rtol=1E-8, atol=1E-11)
self.assertFloatsAlmostEqual(mEllipseCore.getParameterVector(),
dEllipseCore.getParameterVector(),
rtol=1E-8, atol=1E-11)

def testNoNoiseGaussians(self):
'''
Expand All @@ -112,12 +112,12 @@ def testNoNoiseGaussians(self):
for ellipseCore in self.ellipseCores:
for center in self.centers:
result = self.buildImageAndMoments(ellipseCore, center, ellipseCore, center)
self.assertClose(result.ellipse.getParameterVector(),
ellipseCore.getParameterVector(),
rtol=3E-3, atol=1E-15)
self.assertClose(numpy.array(result.center),
numpy.array(center),
rtol=1E-8, atol=1E-15)
self.assertFloatsAlmostEqual(result.ellipse.getParameterVector(),
ellipseCore.getParameterVector(),
rtol=3E-3, atol=1E-15)
self.assertFloatsAlmostEqual(np.array(result.center),
np.array(center),
rtol=1E-8, atol=1E-15)


class TestMemory(lsst.utils.tests.MemoryTestCase):
Expand All @@ -127,6 +127,7 @@ class TestMemory(lsst.utils.tests.MemoryTestCase):
def setup_module(module):
lsst.utils.tests.init()


if __name__ == "__main__":
lsst.utils.tests.init()
unittest.main()