def test_CombineFeatMaps(self):
        data1 = self.paramTxt + "BeginPoints\nfamily=Acceptor pos=(1.0, 0.0, 0.0) weight=1.0\nEndPoints"
        data2 = self.paramTxt + "BeginPoints\nfamily=Acceptor pos=(0.0, 0.0, 0.0) weight=1.0\nEndPoints"

        self.p.SetData(data1)
        fm1 = self.p.Parse()
        self.assertEqual(fm1.GetNumFeatures(), 1)
        self.p.SetData(data2)
        fm2 = self.p.Parse()
        self.assertEqual(fm2.GetNumFeatures(), 1)

        # Combine without merging
        fm12 = FeatMapUtils.CombineFeatMaps(fm1, fm2)
        self.assertEqual(fm12.GetNumFeatures(), 2)

        # Combine with distance based merging
        fm12 = FeatMapUtils.CombineFeatMaps(fm1,
                                            fm2,
                                            mergeMetric=MergeMetric.Distance,
                                            mergeTol=1.0)
        self.assertEqual(fm12.GetNumFeatures(), 2)
        fm12 = FeatMapUtils.CombineFeatMaps(fm1,
                                            fm2,
                                            mergeMetric=MergeMetric.Distance,
                                            mergeTol=1.1)
        self.assertEqual(fm12.GetNumFeatures(), 1)

        self.assertRaises(ValueError,
                          FeatMapUtils.CombineFeatMaps,
                          fm1,
                          fm2,
                          mergeMetric='typo')
    def test1BasicsRepeated(self):
        txt = self.paramTxt + """
BeginPoints
  family=Acceptor pos=(0.7, 0.0, 0.0) weight=1.0
  family=Acceptor pos=(1.0, 0.0, 0.0) weight=1.0
  family=Acceptor pos=(1.2, 0.0, 0.0) weight=1.0
  family=Acceptor pos=(1.3, 0.0, 0.0) weight=1.0
  family=Acceptor pos=(4.0, 0.0, 0.0) weight=1.0
EndPoints
    """
        self.p.SetData(txt)
        fm1 = self.p.Parse()

        self.assertTrue(fm1.GetNumFeatures() == 5)
        self.assertTrue(
            FeatMapUtils.MergeFeatPoints(fm1,
                                         FeatMapUtils.MergeMetric.Distance))
        self.assertTrue(fm1.GetNumFeatures() == 4)
        self.assertTrue(pteq(fm1.GetFeature(0).GetPos(), Point3D(0.7, 0, 0)))
        self.assertTrue(pteq(fm1.GetFeature(1).GetPos(), Point3D(1.0, 0, 0)))
        self.assertTrue(pteq(fm1.GetFeature(2).GetPos(), Point3D(1.25, 0, 0)))
        self.assertTrue(pteq(fm1.GetFeature(3).GetPos(), Point3D(4.0, 0, 0)))

        self.assertTrue(
            FeatMapUtils.MergeFeatPoints(fm1,
                                         FeatMapUtils.MergeMetric.Distance))
        self.assertTrue(fm1.GetNumFeatures() == 3)
        self.assertTrue(pteq(fm1.GetFeature(0).GetPos(), Point3D(0.7, 0, 0)))
        self.assertTrue(pteq(fm1.GetFeature(1).GetPos(), Point3D(1.125, 0, 0)))
        self.assertTrue(pteq(fm1.GetFeature(2).GetPos(), Point3D(4.0, 0, 0)))

        self.assertTrue(
            FeatMapUtils.MergeFeatPoints(fm1,
                                         FeatMapUtils.MergeMetric.Distance))
        self.assertTrue(fm1.GetNumFeatures() == 2)
        self.assertTrue(pteq(
            fm1.GetFeature(0).GetPos(), Point3D(0.9125, 0, 0)))
        self.assertTrue(pteq(fm1.GetFeature(1).GetPos(), Point3D(4.0, 0, 0)))
    def test1Basics(self):
        txt = self.paramTxt + """
BeginPoints
  family=Acceptor pos=(1.0, 0.0, 0.0) weight=1.0
  family=Acceptor pos=(1.1, 0.0, 0.0) weight=1.0
  family=Acceptor pos=(3.0, 0.0, 0.0) weight=1.0
EndPoints
    """
        self.p.SetData(txt)
        fm1 = self.p.Parse()

        self.assertTrue(fm1.GetNumFeatures() == 3)
        self.assertFalse(FeatMapUtils.MergeFeatPoints(fm1))
        self.assertTrue(
            FeatMapUtils.MergeFeatPoints(fm1,
                                         FeatMapUtils.MergeMetric.Distance))
        self.assertTrue(fm1.GetNumFeatures() == 2)
        self.assertTrue(pteq(fm1.GetFeature(0).GetPos(), Point3D(1.05, 0, 0)))
        self.assertTrue(pteq(fm1.GetFeature(1).GetPos(), Point3D(3.0, 0, 0)))

        txt = self.paramTxt + """
BeginPoints
  family=Acceptor pos=(1.0, 0.0, 0.0) weight=1.0
  family=Acceptor pos=(1.1, 0.0, 0.0) weight=1.0
  family=Acceptor pos=(3.0, 0.0, 0.0) weight=1.0
  family=Acceptor pos=(4.0, 0.0, 0.0) weight=1.0
EndPoints
    """
        self.p.SetData(txt)
        fm1 = self.p.Parse()

        self.assertTrue(fm1.GetNumFeatures() == 4)
        self.assertTrue(
            FeatMapUtils.MergeFeatPoints(fm1,
                                         FeatMapUtils.MergeMetric.Distance))
        self.assertTrue(fm1.GetNumFeatures() == 2)
        self.assertTrue(pteq(fm1.GetFeature(0).GetPos(), Point3D(1.05, 0, 0)))
        self.assertTrue(pteq(fm1.GetFeature(1).GetPos(), Point3D(3.5, 0, 0)))

        txt = self.paramTxt + """
BeginPoints
  family=Acceptor pos=(1.0, 0.0, 0.0) weight=1.0
  family=Acceptor pos=(1.2, 0.0, 0.0) weight=1.0
  family=Acceptor pos=(1.3, 0.0, 0.0) weight=1.0
  family=Acceptor pos=(4.0, 0.0, 0.0) weight=1.0
EndPoints
    """
        self.p.SetData(txt)
        fm1 = self.p.Parse()

        self.assertTrue(fm1.GetNumFeatures() == 4)
        self.assertTrue(
            FeatMapUtils.MergeFeatPoints(fm1,
                                         FeatMapUtils.MergeMetric.Distance))
        self.assertTrue(fm1.GetNumFeatures() == 3)
        self.assertTrue(pteq(fm1.GetFeature(0).GetPos(), Point3D(1.00, 0, 0)))
        self.assertTrue(pteq(fm1.GetFeature(1).GetPos(), Point3D(1.25, 0, 0)))
        self.assertTrue(pteq(fm1.GetFeature(2).GetPos(), Point3D(4.0, 0, 0)))

        txt = self.paramTxt + """
BeginPoints
  family=Acceptor pos=(1.0, 0.0, 0.0) weight=1.0
  family=Acceptor pos=(1.2, 0.0, 0.0) weight=3.0
  family=Acceptor pos=(1.3, 0.0, 0.0) weight=1.0
  family=Acceptor pos=(4.0, 0.0, 0.0) weight=1.0
EndPoints
    """
        self.p.SetData(txt)
        fm1 = self.p.Parse()

        self.assertTrue(fm1.GetNumFeatures() == 4)
        self.assertTrue(
            FeatMapUtils.MergeFeatPoints(
                fm1,
                FeatMapUtils.MergeMetric.Distance,
                mergeMethod=FeatMapUtils.MergeMethod.Average))
        self.assertTrue(fm1.GetNumFeatures() == 3)
        self.assertTrue(pteq(fm1.GetFeature(0).GetPos(), Point3D(1.00, 0, 0)))
        self.assertTrue(pteq(fm1.GetFeature(1).GetPos(), Point3D(1.25, 0, 0)))
        self.assertTrue(pteq(fm1.GetFeature(2).GetPos(), Point3D(4.0, 0, 0)))

        self.p.SetData(txt)
        fm1 = self.p.Parse()
        self.assertTrue(fm1.GetNumFeatures() == 4)
        self.assertTrue(
            FeatMapUtils.MergeFeatPoints(
                fm1,
                FeatMapUtils.MergeMetric.Distance,
                mergeMethod=FeatMapUtils.MergeMethod.WeightedAverage))
        self.assertTrue(fm1.GetNumFeatures() == 3)
        self.assertTrue(pteq(fm1.GetFeature(0).GetPos(), Point3D(1.00, 0, 0)))
        self.assertTrue(pteq(fm1.GetFeature(1).GetPos(), Point3D(1.225, 0, 0)))
        self.assertTrue(pteq(fm1.GetFeature(2).GetPos(), Point3D(4.0, 0, 0)))

        self.p.SetData(txt)
        fm1 = self.p.Parse()
        self.assertTrue(fm1.GetNumFeatures() == 4)
        self.assertTrue(
            FeatMapUtils.MergeFeatPoints(
                fm1,
                FeatMapUtils.MergeMetric.Distance,
                mergeMethod=FeatMapUtils.MergeMethod.UseLarger))
        self.assertTrue(fm1.GetNumFeatures() == 3)
        self.assertTrue(pteq(fm1.GetFeature(0).GetPos(), Point3D(1.00, 0, 0)))
        self.assertTrue(pteq(fm1.GetFeature(1).GetPos(), Point3D(1.2, 0, 0)))
        self.assertTrue(pteq(fm1.GetFeature(2).GetPos(), Point3D(4.0, 0, 0)))

        # Order of points doesn't matter
        txt = self.paramTxt + """
BeginPoints
  family=Acceptor pos=(1.0, 0.0, 0.0) weight=1.0
  family=Acceptor pos=(1.3, 0.0, 0.0) weight=1.0
  family=Acceptor pos=(1.2, 0.0, 0.0) weight=3.0
  family=Acceptor pos=(4.0, 0.0, 0.0) weight=1.0
EndPoints
    """
        self.p.SetData(txt)
        fm1 = self.p.Parse()
        self.assertTrue(fm1.GetNumFeatures() == 4)
        self.assertTrue(
            FeatMapUtils.MergeFeatPoints(
                fm1,
                FeatMapUtils.MergeMetric.Distance,
                mergeMethod=FeatMapUtils.MergeMethod.UseLarger))
        self.assertTrue(fm1.GetNumFeatures() == 3)
        self.assertTrue(pteq(fm1.GetFeature(0).GetPos(), Point3D(1.00, 0, 0)))
        self.assertTrue(pteq(fm1.GetFeature(1).GetPos(), Point3D(1.2, 0, 0)))
        self.assertTrue(pteq(fm1.GetFeature(2).GetPos(), Point3D(4.0, 0, 0)))

        self.assertRaises(ValueError,
                          FeatMapUtils.MergeFeatPoints,
                          fm1,
                          FeatMapUtils.MergeMetric.Distance,
                          mergeMethod='typo')
    def test2ScoreBasics(self):
        txt = self.paramTxt + """
BeginPoints
  family=Acceptor pos=(1.0, 0.0, 0.0) weight=1.0
  family=Acceptor pos=(1.2, 0.0, 0.0) weight=3.0
  family=Acceptor pos=(4.0, 0.0, 0.0) weight=1.0
EndPoints
    """
        self.p.SetData(txt)
        fm1 = self.p.Parse()

        self.assertTrue(fm1.GetNumFeatures() == 3)
        self.assertTrue(
            FeatMapUtils.MergeFeatPoints(
                fm1,
                FeatMapUtils.MergeMetric.Overlap,
                mergeMethod=FeatMapUtils.MergeMethod.Average))
        self.assertTrue(fm1.GetNumFeatures() == 2)
        self.assertTrue(pteq(fm1.GetFeature(0).GetPos(), Point3D(1.1, 0, 0)))
        self.assertTrue(pteq(fm1.GetFeature(1).GetPos(), Point3D(4.0, 0, 0)))

        txt = self.paramTxt + """
BeginPoints
  family=Acceptor pos=(1.0, 0.0, 0.0) weight=1.0
  family=Acceptor pos=(1.1, 0.0, 0.0) weight=1.0
  family=Acceptor pos=(1.3, 0.0, 0.0) weight=3.0
  family=Acceptor pos=(4.0, 0.0, 0.0) weight=1.0
EndPoints
    """
        self.p.SetData(txt)
        fm1 = self.p.Parse()

        self.assertTrue(fm1.GetNumFeatures() == 4)
        self.assertTrue(
            FeatMapUtils.MergeFeatPoints(
                fm1,
                FeatMapUtils.MergeMetric.Overlap,
                mergeMethod=FeatMapUtils.MergeMethod.Average))
        self.assertTrue(fm1.GetNumFeatures() == 3)
        self.assertTrue(pteq(fm1.GetFeature(0).GetPos(), Point3D(1.15, 0, 0)))
        self.assertTrue(pteq(fm1.GetFeature(1).GetPos(), Point3D(1.1, 0, 0)))
        self.assertTrue(pteq(fm1.GetFeature(2).GetPos(), Point3D(4.0, 0, 0)))

        txt = self.paramTxt + """
BeginPoints
  family=Acceptor pos=(1.0, 0.0, 0.0) weight=1.0
  family=Acceptor pos=(1.2, 0.0, 0.0) weight=1.0
  family=Acceptor pos=(1.6, 0.0, 0.0) weight=3.0
  family=Acceptor pos=(4.0, 0.0, 0.0) weight=1.0
EndPoints
    """
        self.p.SetData(txt)
        fm1 = self.p.Parse()

        self.assertTrue(fm1.GetNumFeatures() == 4)
        self.assertTrue(
            FeatMapUtils.MergeFeatPoints(
                fm1,
                FeatMapUtils.MergeMetric.Overlap,
                mergeMethod=FeatMapUtils.MergeMethod.Average))
        self.assertTrue(fm1.GetNumFeatures() == 3)
        self.assertTrue(pteq(fm1.GetFeature(0).GetPos(), Point3D(1.0, 0, 0)))
        self.assertTrue(pteq(fm1.GetFeature(1).GetPos(), Point3D(1.4, 0, 0)))
        self.assertTrue(pteq(fm1.GetFeature(2).GetPos(), Point3D(4.0, 0, 0)))
Exemple #5
0
    def test1Basics(self):
        txt = self.paramTxt + """
BeginPoints
  family=Acceptor pos=(1.0, 0.0, 0.0) weight=1.0
  family=Acceptor pos=(1.1, 0.0, 0.0) weight=1.0
  family=Acceptor pos=(3.0, 0.0, 0.0) weight=1.0
EndPoints
    """
        self.p.SetData(txt)
        fm1 = self.p.Parse()

        self.failUnless(fm1.GetNumFeatures() == 3)
        self.failIf(FeatMapUtils.MergeFeatPoints(fm1))
        self.failUnless(
            FeatMapUtils.MergeFeatPoints(fm1,
                                         FeatMapUtils.MergeMetric.Distance))
        self.failUnless(fm1.GetNumFeatures() == 2)
        self.failUnless(pteq(fm1.GetFeature(0).GetPos(), Point3D(1.05, 0, 0)))
        self.failUnless(pteq(fm1.GetFeature(1).GetPos(), Point3D(3.0, 0, 0)))

        txt = self.paramTxt + """
BeginPoints
  family=Acceptor pos=(1.0, 0.0, 0.0) weight=1.0
  family=Acceptor pos=(1.1, 0.0, 0.0) weight=1.0
  family=Acceptor pos=(3.0, 0.0, 0.0) weight=1.0
  family=Acceptor pos=(4.0, 0.0, 0.0) weight=1.0
EndPoints
    """
        self.p.SetData(txt)
        fm1 = self.p.Parse()

        self.failUnless(fm1.GetNumFeatures() == 4)
        self.failUnless(
            FeatMapUtils.MergeFeatPoints(fm1,
                                         FeatMapUtils.MergeMetric.Distance))
        self.failUnless(fm1.GetNumFeatures() == 2)
        self.failUnless(pteq(fm1.GetFeature(0).GetPos(), Point3D(1.05, 0, 0)))
        self.failUnless(pteq(fm1.GetFeature(1).GetPos(), Point3D(3.5, 0, 0)))

        txt = self.paramTxt + """
BeginPoints
  family=Acceptor pos=(1.0, 0.0, 0.0) weight=1.0
  family=Acceptor pos=(1.2, 0.0, 0.0) weight=1.0
  family=Acceptor pos=(1.3, 0.0, 0.0) weight=1.0
  family=Acceptor pos=(4.0, 0.0, 0.0) weight=1.0
EndPoints
    """
        self.p.SetData(txt)
        fm1 = self.p.Parse()

        self.failUnless(fm1.GetNumFeatures() == 4)
        self.failUnless(
            FeatMapUtils.MergeFeatPoints(fm1,
                                         FeatMapUtils.MergeMetric.Distance))
        self.failUnless(fm1.GetNumFeatures() == 3)
        self.failUnless(pteq(fm1.GetFeature(0).GetPos(), Point3D(1.00, 0, 0)))
        self.failUnless(pteq(fm1.GetFeature(1).GetPos(), Point3D(1.25, 0, 0)))
        self.failUnless(pteq(fm1.GetFeature(2).GetPos(), Point3D(4.0, 0, 0)))

        txt = self.paramTxt + """
BeginPoints
  family=Acceptor pos=(1.0, 0.0, 0.0) weight=1.0
  family=Acceptor pos=(1.2, 0.0, 0.0) weight=3.0
  family=Acceptor pos=(1.3, 0.0, 0.0) weight=1.0
  family=Acceptor pos=(4.0, 0.0, 0.0) weight=1.0
EndPoints
    """
        self.p.SetData(txt)
        fm1 = self.p.Parse()

        self.failUnless(fm1.GetNumFeatures() == 4)
        self.failUnless(
            FeatMapUtils.MergeFeatPoints(
                fm1,
                FeatMapUtils.MergeMetric.Distance,
                mergeMethod=FeatMapUtils.MergeMethod.Average))
        self.failUnless(fm1.GetNumFeatures() == 3)
        self.failUnless(pteq(fm1.GetFeature(0).GetPos(), Point3D(1.00, 0, 0)))
        self.failUnless(pteq(fm1.GetFeature(1).GetPos(), Point3D(1.25, 0, 0)))
        self.failUnless(pteq(fm1.GetFeature(2).GetPos(), Point3D(4.0, 0, 0)))

        self.p.SetData(txt)
        fm1 = self.p.Parse()
        self.failUnless(fm1.GetNumFeatures() == 4)
        self.failUnless(
            FeatMapUtils.MergeFeatPoints(
                fm1,
                FeatMapUtils.MergeMetric.Distance,
                mergeMethod=FeatMapUtils.MergeMethod.WeightedAverage))
        self.failUnless(fm1.GetNumFeatures() == 3)
        self.failUnless(pteq(fm1.GetFeature(0).GetPos(), Point3D(1.00, 0, 0)))
        self.failUnless(pteq(fm1.GetFeature(1).GetPos(), Point3D(1.225, 0, 0)))
        self.failUnless(pteq(fm1.GetFeature(2).GetPos(), Point3D(4.0, 0, 0)))

        self.p.SetData(txt)
        fm1 = self.p.Parse()
        self.failUnless(fm1.GetNumFeatures() == 4)
        self.failUnless(
            FeatMapUtils.MergeFeatPoints(
                fm1,
                FeatMapUtils.MergeMetric.Distance,
                mergeMethod=FeatMapUtils.MergeMethod.UseLarger))
        self.failUnless(fm1.GetNumFeatures() == 3)
        self.failUnless(pteq(fm1.GetFeature(0).GetPos(), Point3D(1.00, 0, 0)))
        self.failUnless(pteq(fm1.GetFeature(1).GetPos(), Point3D(1.2, 0, 0)))
        self.failUnless(pteq(fm1.GetFeature(2).GetPos(), Point3D(4.0, 0, 0)))