Beispiel #1
0
    def testIMeets(self):
        model = Model([
            ModelEntry(
                Close("figure", "landmark"),
                SpanningInterval(CL, Interval(CL, 1, 3, CL),
                                 Interval(CL, 1, 3, CL), CL)),
        ])
        result = inference(
            model, Tense([iMeets], stub_model.Close("figure", "landmark")))

        self.assertEqual(
            result,
            SpanningIntervalSet([
                SpanningInterval(OP, Interval(OP, NINF, 3.0, OP),
                                 Interval(CL, 1.0, 3.0, CL), OP),
                SpanningInterval(CL, Interval(OP, NINF, 3.0, OP),
                                 Interval(CL, 1.0, 3.0, CL), OP)
            ]))

        result = inference(
            model, Tense([meets], stub_model.Close("figure", "landmark")))
        self.assertEqual(
            result,
            SpanningIntervalSet([
                SpanningInterval(OP, Interval(CL, 1.0, 3.0, CL),
                                 Interval(OP, 1.0, PINF, OP), OP),
                SpanningInterval(OP, Interval(CL, 1.0, 3.0, CL),
                                 Interval(OP, 1.0, PINF, OP), CL)
            ]))
Beispiel #2
0
    def doCompute(self, drawer, situation):
        model = modelForSituation(situation)
        approachResults = inference(model,
                                    approach("figure",
                                             "landmark")).snappedToMin(0)
        drawer.drawPoint("hasApproach", (0, 0), "has approach initial")
        for t in range(situation.startTime, situation.endTime, 100):
            for interval in approachResults:
                if interval.contains(t):
                    x, y, theta = situation.agent("figure").location(t)
                    drawer.drawPoint("hasApproach", (x, y), "approach")

        followResults = inference(model, following("figure",
                                                   "landmark")).snappedToMin(0)
        drawer.drawPoint("hasFollow", (0, 0), "has follow initial")
        for t in range(situation.startTime, situation.endTime, 100):
            for interval in followResults:
                if interval.contains(t):
                    x, y, theta = situation.agent("figure").location(t)
                    drawer.drawPoint("hasFollow", (x, y), "follow")

        ret = {
            "hasApproach":
            True if approachResults != emptySpanningIntervalSet else False,
            "hasFollow":
            True if followResults != emptySpanningIntervalSet else False,
        }
        return ret
Beispiel #3
0
    def testInferenceBase(self):

        model = Model([
            ModelEntry(
                Visible("figure", "landmark"),
                SpanningInterval(CL, Interval(CL, 0, 0, CL),
                                 Interval(CL, 1, 1, CL), CL))
        ])

        result = inference(model, stub_model.Visible("figure", "landmark"))
        self.assertEqual(
            result,
            SpanningIntervalSet([
                SpanningInterval(CL, Interval(CL, 0, 0, CL),
                                 Interval(CL, 1, 1, CL), CL)
            ]))

        result = inference(model, stub_model.Close("figure", "landmark"))
        self.assertEqual(result, emptySpanningIntervalSet)

        result = inference(model, Not(stub_model.Close("figure", "landmark")))
        self.assertEqual(result, allIntervals)

        result = inference(model,
                           overlaps(stub_model.Close("figure", "landmark")))
        self.assertEqual(result, emptySpanningIntervalSet)

        result = inference(
            model, Not(overlaps(stub_model.Close("figure", "landmark"))))
        self.assertEqual(result, allIntervals)
Beispiel #4
0
    def testInferenceNotEmpty1(self):

        model = Model([
            ModelEntry(
                Visible("figure", "landmark"),
                SpanningInterval(CL, Interval(CL, 1, 3, CL),
                                 Interval(CL, 1, 3, CL), CL)),
            ModelEntry(
                Visible("figure", "landmark"),
                SpanningInterval(OP, Interval(CL, 1, 3, CL),
                                 Interval(CL, 1, 3, CL), OP)),
            ModelEntry(
                Visible("figure", "landmark"),
                SpanningInterval(CL, Interval(CL, 1, 3, CL),
                                 Interval(CL, 1, 3, CL), OP)),
            ModelEntry(
                Visible("figure", "landmark"),
                SpanningInterval(OP, Interval(CL, 1, 3, CL),
                                 Interval(CL, 1, 3, CL), CL)),
        ])
        result = inference(model, stub_model.Visible("figure", "landmark"))

        self.assertEqual(
            result,
            SpanningIntervalSet([
                SpanningInterval(CL, Interval(CL, 1.0, 3.0, CL),
                                 Interval(CL, 1.0, 3.0, CL), CL),
                SpanningInterval(OP, Interval(CL, 1.0, 3.0, OP),
                                 Interval(OP, 1.0, 3.0, CL), OP),
                SpanningInterval(CL, Interval(CL, 1.0, 3.0, OP),
                                 Interval(OP, 1.0, 3.0, CL), OP),
                SpanningInterval(OP, Interval(CL, 1.0, 3.0, OP),
                                 Interval(OP, 1.0, 3.0, CL), CL)
            ]))

        result = inference(model, Not(stub_model.Visible("figure",
                                                         "landmark")))
        self.assertEqual(
            result,
            SpanningIntervalSet([
                SpanningInterval(CL, Interval(OP, NINF, 1.0, OP),
                                 Interval(OP, NINF, PINF, OP), CL),
                SpanningInterval(CL, Interval(OP, NINF, PINF, OP),
                                 Interval(OP, 3.0, PINF, OP), CL),
                SpanningInterval(OP, Interval(OP, NINF, 1.0, OP),
                                 Interval(OP, NINF, PINF, OP), CL),
                SpanningInterval(OP, Interval(OP, NINF, PINF, OP),
                                 Interval(OP, 3.0, PINF, OP), CL),
                SpanningInterval(CL, Interval(OP, NINF, 1.0, OP),
                                 Interval(OP, NINF, PINF, OP), OP),
                SpanningInterval(CL, Interval(OP, NINF, PINF, OP),
                                 Interval(OP, 3.0, PINF, OP), OP),
                SpanningInterval(OP, Interval(OP, NINF, 1.0, OP),
                                 Interval(OP, NINF, PINF, OP), OP),
                SpanningInterval(OP, Interval(OP, NINF, PINF, OP),
                                 Interval(OP, 3.0, PINF, OP), OP)
            ]))
Beispiel #5
0
    def testNormal(self):
        map_fn = "%s/data/directions/direction_floor_3/direction_floor_3_small_filled.cmf" % TKLIB_HOME
        cluster_fn = "%s/data/directions/direction_floor_3/skels/direction_floor_3_skel.pck" % TKLIB_HOME
        gtruth_tag_fn = "%s/data/directions/direction_floor_3/tags/df3_small_tags.tag" % TKLIB_HOME
        assignment_fn = "%s/nlp/data/aaai_2010_smv/stefie10/assignment1.1.yaml" % TKLIB_HOME
        tagFile = tag_util.tag_file(gtruth_tag_fn, map_fn)
        tagFile.get_map()
        tagFile.get_tag_names()

        skeleton = carmen_map_skeletonizer.load(cluster_fn, map_fn)
        assignment = Assignment.load(assignment_fn, tagFile, skeleton)

        slowEntry = assignment.entries[27]

        model = modelForSituation(slowEntry.situation)
        print "model", model

        results = inference(model, Inverted(IsClose("figure", "landmark")))
        self.assertEqual(
            results,
            SpanningIntervalSet([
                SpanningInterval(CL, Interval(CL, 0.0, 23500.0, OP),
                                 Interval(OP, 0.0, 23500.0, CL), OP)
            ]) != SpanningIntervalSet([
                SpanningInterval(CL, Interval(CL, 0.0, 23600.0, OP),
                                 Interval(OP, 0.0, 23600.0, CL), OP)
            ]))

        results = inference(model, IsClose("figure", "landmark"))
        self.assertEqual(
            results,
            SpanningIntervalSet([
                SpanningInterval(CL, Interval(CL, 23600.0, 28500.0, CL),
                                 Interval(CL, 23600.0, 28500.0, CL), OP)
            ]))

        results = inference(model, approach("figure", "landmark"))
        print "results", results
        self.assertEqual(
            results,
            SpanningIntervalSet([
                SpanningInterval(CL, Interval(CL, 0.0, 23600.0, CL),
                                 Interval(CL, 23600.0, 28500.0, CL), OP)
            ]))

        results = inference(model, following("figure", "landmark"))
        print "results", results
        self.assertEqual(results, emptySpanningIntervalSet)
Beispiel #6
0
    def testGt(self):
        model = Model([
            ModelEntry(
                Close("figure", "landmark"),
                SpanningInterval(CL, Interval(CL, 1, 3, CL),
                                 Interval(CL, 1, 3, CL), CL)),
        ])
        result = inference(
            model,
            AndR(Not(overlaps(stub_model.Close("figure", "landmark"))),
                 [equals],
                 Tense([greaterThan], stub_model.Close("figure", "landmark"))))

        self.assertEqual(
            result,
            SpanningIntervalSet([
                SpanningInterval(OP, Interval(OP, NINF, 1.0, OP),
                                 Interval(OP, NINF, 1.0, CL), OP),
                SpanningInterval(CL, Interval(OP, NINF, 1.0, OP),
                                 Interval(OP, NINF, 1.0, CL), OP),
                SpanningInterval(OP, Interval(OP, NINF, 1.0, OP),
                                 Interval(OP, NINF, 1.0, OP), CL),
                SpanningInterval(CL, Interval(OP, NINF, 1.0, OP),
                                 Interval(OP, NINF, 1.0, OP), CL)
            ]))
Beispiel #7
0
    def testInferenceOr(self):

        model = Model([
            ModelEntry(
                Visible("figure", "landmark"),
                SpanningInterval(CL, Interval(CL, 1, 3, CL),
                                 Interval(CL, 1, 3, CL), CL)),
            ModelEntry(
                Close("figure", "landmark"),
                SpanningInterval(CL, Interval(CL, 2, 3, CL),
                                 Interval(CL, 2, 3, CL), CL)),
            ModelEntry(
                Following("figure", "landmark"),
                SpanningInterval(CL, Interval(CL, 1, 3, CL),
                                 Interval(CL, 1, 3, CL), CL))
        ])

        result = inference(model, stub_model.Visible("figure", "landmark"))
        self.assertEqual(
            result,
            SpanningIntervalSet([
                SpanningInterval(True, Interval(True, 1.0, 3.0, True),
                                 Interval(True, 1.0, 3.0, True), True)
            ]))

        result = inference(
            model,
            Or(stub_model.Visible("figure", "landmark"),
               stub_model.Following("figure", "landmark")))
        self.assertEqual(
            result,
            SpanningIntervalSet([
                SpanningInterval(True, Interval(True, 1.0, 3.0, True),
                                 Interval(True, 1.0, 3.0, True), True)
            ]))

        result = inference(
            model,
            Or(stub_model.Close("figure", "landmark"),
               stub_model.Following("figure", "landmark")))

        self.assertEqual(
            result,
            SpanningIntervalSet([
                SpanningInterval(CL, Interval(CL, 1.0, 3.0, CL),
                                 Interval(CL, 1.0, 3.0, CL), CL)
            ]))
Beispiel #8
0
    def testTenseAndStarts(self):

        model = Model([
            ModelEntry(
                Close("figure", "landmark"),
                SpanningInterval(CL, Interval(CL, 1, 3, CL),
                                 Interval(CL, 1, 3, CL), CL)),
        ])

        result = inference(
            model, Tense([starts], stub_model.Close("figure", "landmark")))
        self.assertEqual(
            result,
            SpanningIntervalSet([
                SpanningInterval(CL, Interval(CL, 1.0, 3.0, CL),
                                 Interval(OP, 1.0, PINF, OP), OP),
                SpanningInterval(CL, Interval(CL, 1.0, 3.0, CL),
                                 Interval(OP, 1.0, PINF, OP), CL)
            ]))

        result = inference(
            model, Tense([iStarts], stub_model.Close("figure", "landmark")))
        self.assertEqual(
            result,
            SpanningIntervalSet([
                SpanningInterval(CL, Interval(CL, 1.0, 3.0, OP),
                                 Interval(OP, 1.0, 3.0, CL), OP),
                SpanningInterval(CL, Interval(CL, 1.0, 3.0, OP),
                                 Interval(CL, 1.0, 3.0, OP), CL)
            ]))

        result = inference(
            model,
            Tense([starts, iStarts], stub_model.Close("figure", "landmark")))
        self.assertEqual(
            result.condensed(),
            SpanningIntervalSet([
                SpanningInterval(CL, Interval(CL, 1.0, 3.0, CL),
                                 Interval(OP, 1.0, PINF, OP), OP),
                SpanningInterval(CL, Interval(CL, 1.0, 3.0, CL),
                                 Interval(CL, 1.0, PINF, OP), CL)
            ]))
Beispiel #9
0
    def testInferenceNotEmpty(self):

        model = Model([
            ModelEntry(
                Visible("figure", "landmark"),
                SpanningInterval(CL, Interval(CL, 1, 3, CL),
                                 Interval(CL, 1, 3, CL), CL))
        ])

        result = inference(model, stub_model.Visible("figure", "landmark"))

        self.assertEqual(
            result,
            SpanningIntervalSet([
                SpanningInterval(CL, Interval(CL, 1, 3, CL),
                                 Interval(CL, 1, 3, CL), CL)
            ]))

        complement = result[0].complement()

        self.assertEqual(
            complement,
            SpanningIntervalSet([
                SpanningInterval(CL, Interval(CL, NINF, PINF, CL),
                                 Interval(CL, NINF, 1.0, OP), CL),
                SpanningInterval(CL, Interval(CL, NINF, PINF, CL),
                                 Interval(OP, 3.0, PINF, CL), CL),
                SpanningInterval(CL, Interval(CL, NINF, 1.0, OP),
                                 Interval(CL, NINF, PINF, CL), CL),
                SpanningInterval(CL, Interval(OP, 3.0, PINF, CL),
                                 Interval(CL, NINF, PINF, CL), CL),
                SpanningInterval(OP, Interval(CL, NINF, PINF, CL),
                                 Interval(CL, NINF, PINF, CL), CL),
                SpanningInterval(CL, Interval(CL, NINF, PINF, CL),
                                 Interval(CL, NINF, PINF, CL), OP),
                SpanningInterval(OP, Interval(CL, NINF, PINF, CL),
                                 Interval(CL, NINF, PINF, CL), OP)
            ]))

        result = inference(model, Not(stub_model.Visible("figure",
                                                         "landmark")))
        self.assertEqual(result, SpanningIntervalSet(complement).condensed())
Beispiel #10
0
 def run():
     results = inference(model, approach("figure", "landmark"))
     print "results", results
     self.assertEqual(
         results,
         SpanningIntervalSet([
             SpanningInterval(CL, Interval(CL, 0.0, 3600.0, CL),
                              Interval(CL, 3600.0, 6300.0, CL), OP),
             SpanningInterval(CL, Interval(CL, 6300.0, 24800.0, CL),
                              Interval(CL, 24800.0, 31800.0, CL), OP)
         ]))
Beispiel #11
0
    def testInferenceAnd(self):
        model = Model([
            ModelEntry(
                Visible("figure", "landmark"),
                SpanningInterval(CL, Interval(CL, 1, 3, CL),
                                 Interval(CL, 1, 3, CL), CL)),
            ModelEntry(
                Close("figure", "landmark"),
                SpanningInterval(CL, Interval(CL, 2, 3, CL),
                                 Interval(CL, 2, 3, CL), CL)),
            ModelEntry(
                Following("figure", "landmark"),
                SpanningInterval(CL, Interval(CL, 1, 3, CL),
                                 Interval(CL, 1, 3, CL), CL))
        ])

        result = inference(
            model,
            AndR(stub_model.Visible("figure", "landmark"),
                 [allenRelations.finishes],
                 stub_model.Close("figure", "landmark")))

        self.assertEqual(
            result,
            SpanningIntervalSet([
                SpanningInterval(CL, Interval(CL, 2.0, 3.0, CL),
                                 Interval(CL, 2.0, 3.0, CL), CL)
            ]))

        result = inference(
            model,
            AndR(stub_model.Close("figure", "landmark"),
                 [allenRelations.finishes],
                 stub_model.Visible("figure", "landmark")))

        self.assertEqual(
            result,
            SpanningIntervalSet([
                SpanningInterval(CL, Interval(CL, 1.0, 3.0, CL),
                                 Interval(CL, 2.0, 3.0, CL), CL)
            ]))
Beispiel #12
0
    def testNoApproach(self):
        model = Model([
            ModelEntry(
                Close("figure", "landmark"),
                SpanningInterval(CL, Interval(CL, 0, 3, CL),
                                 Interval(CL, 0, 3, CL), CL)),
        ])
        result = inference(
            model,
            AndR(Not(overlaps(stub_model.Close("figure", "landmark"))),
                 [equals],
                 Tense([iMeets], stub_model.Close("figure", "landmark"))))

        self.assertEqual(
            result,
            SpanningIntervalSet([
                SpanningInterval(CL, Interval(OP, NINF, 0, OP),
                                 Interval(CL, 0, 0, CL), OP),
                SpanningInterval(OP, Interval(OP, NINF, 0, OP),
                                 Interval(CL, 0, 0, CL), OP)
            ]))

        self.assertEqual(result.snappedToMin(0), emptySpanningIntervalSet)
Beispiel #13
0
    def testInferenceNot(self):

        model = Model([
            ModelEntry(
                Visible("figure", "landmark"),
                SpanningInterval(CL, Interval(CL, 1, 3, CL),
                                 Interval(CL, 1, 3, CL), CL)),
            ModelEntry(
                Close("figure", "landmark"),
                SpanningInterval(CL, Interval(CL, 2, 3, CL),
                                 Interval(CL, 2, 3, CL), CL)),
            ModelEntry(
                Following("figure", "landmark"),
                SpanningInterval(CL, Interval(CL, 1, 3, CL),
                                 Interval(CL, 1, 3, CL), CL))
        ])

        result = inference(model, Not(stub_model.Visible("figure",
                                                         "landmark")))

        print "result", result

        self.assertEqual(
            result,
            SpanningIntervalSet([
                SpanningInterval(CL, Interval(OP, NINF, 1.0, OP),
                                 Interval(OP, NINF, PINF, OP), CL),
                SpanningInterval(CL, Interval(OP, NINF, PINF, OP),
                                 Interval(OP, 3.0, PINF, OP), CL),
                SpanningInterval(OP, Interval(OP, NINF, PINF, OP),
                                 Interval(OP, NINF, PINF, OP), CL),
                SpanningInterval(CL, Interval(OP, NINF, PINF, OP),
                                 Interval(OP, NINF, PINF, OP), OP),
                SpanningInterval(OP, Interval(OP, NINF, PINF, OP),
                                 Interval(OP, NINF, PINF, OP), OP)
            ]))
Beispiel #14
0
    def testInferenceTense(self):
        model = Model([
            ModelEntry(
                Visible("figure", "landmark"),
                SpanningInterval(CL, Interval(CL, 1, 3, CL),
                                 Interval(CL, 1, 3, CL), CL)),
            ModelEntry(
                Close("figure", "landmark"),
                SpanningInterval(CL, Interval(CL, 2, 3, CL),
                                 Interval(CL, 2, 3, CL), CL)),
            ModelEntry(
                Following("figure", "landmark"),
                SpanningInterval(CL, Interval(CL, 1, 3, CL),
                                 Interval(CL, 1, 3, CL), CL))
        ])
        result = inference(
            model,
            Tense([allenRelations.finishes],
                  stub_model.Visible("figure", "landmark")))

        self.assertEqual(
            result,
            SpanningIntervalSet([
                SpanningInterval(OP, Interval(OP, NINF, 3.0, OP),
                                 Interval(CL, 1.0, 3.0, CL), CL),
                SpanningInterval(CL, Interval(OP, NINF, 3.0, OP),
                                 Interval(CL, 1.0, 3.0, CL), CL)
            ]))

        result = inference(
            model,
            Tense([allenRelations.overlaps],
                  stub_model.Visible("figure", "landmark")))

        self.assertEqual(
            result,
            SpanningIntervalSet([
                SpanningInterval(OP, Interval(CL, 1.0, 3.0, OP),
                                 Interval(OP, 1.0, PINF, OP), OP),
                SpanningInterval(OP, Interval(CL, 1.0, 3.0, OP),
                                 Interval(OP, 1.0, PINF, OP), CL),
                SpanningInterval(CL, Interval(OP, 1.0, 3.0, CL),
                                 Interval(OP, 1.0, PINF, OP), OP),
                SpanningInterval(CL, Interval(OP, 1.0, 3.0, CL),
                                 Interval(OP, 1.0, PINF, OP), CL)
            ]))

        result = inference(model,
                           overlaps(stub_model.Visible("figure", "landmark")))
        self.assertEqual(
            result,
            SpanningIntervalSet([
                SpanningInterval(OP, Interval(OP, NINF, 3.0, OP),
                                 Interval(OP, 1.0, PINF, OP), OP),
                SpanningInterval(OP, Interval(OP, NINF, 3.0, OP),
                                 Interval(CL, 1.0, PINF, OP), CL),
                SpanningInterval(CL, Interval(OP, NINF, 3.0, CL),
                                 Interval(OP, 1.0, PINF, OP), OP),
                SpanningInterval(CL, Interval(OP, NINF, 3.0, CL),
                                 Interval(CL, 1.0, PINF, OP), CL)
            ]))
Beispiel #15
0
    def testOverlaps(self):

        model = Model([
            ModelEntry(
                Close("figure", "landmark"),
                SpanningInterval(CL, Interval(CL, 1, 3, CL),
                                 Interval(CL, 1, 3, CL), CL)),
        ])

        result = inference(
            model, Not(overlaps(stub_model.Visible("figure", "landmark"))))

        self.assertEqual(
            result,
            SpanningIntervalSet([
                SpanningInterval(OP, Interval(OP, NINF, PINF, OP),
                                 Interval(OP, NINF, PINF, OP), OP),
                SpanningInterval(OP, Interval(OP, NINF, PINF, OP),
                                 Interval(OP, NINF, PINF, OP), CL),
                SpanningInterval(CL, Interval(OP, NINF, PINF, OP),
                                 Interval(OP, NINF, PINF, OP), OP),
                SpanningInterval(CL, Interval(OP, NINF, PINF, OP),
                                 Interval(OP, NINF, PINF, OP), CL)
            ]))

        result = inference(model,
                           overlaps(stub_model.Close("figure", "landmark")))
        self.assertEqual(
            result,
            SpanningIntervalSet([
                SpanningInterval(OP, Interval(OP, NINF, 3.0, OP),
                                 Interval(OP, 1.0, PINF, OP), OP),
                SpanningInterval(OP, Interval(OP, NINF, 3.0, OP),
                                 Interval(CL, 1.0, PINF, OP), CL),
                SpanningInterval(CL, Interval(OP, NINF, 3.0, CL),
                                 Interval(OP, 1.0, PINF, OP), OP),
                SpanningInterval(CL, Interval(OP, NINF, 3.0, CL),
                                 Interval(CL, 1.0, PINF, OP), CL)
            ]))

        result = inference(
            model, Not(overlaps(stub_model.Close("figure", "landmark"))))

        self.assertEqual(
            result,
            SpanningIntervalSet([
                SpanningInterval(OP, Interval(OP, NINF, 1.0, OP),
                                 Interval(OP, NINF, 1.0, CL), OP),
                SpanningInterval(OP, Interval(CL, 3.0, PINF, OP),
                                 Interval(OP, 3.0, PINF, OP), OP),
                SpanningInterval(CL, Interval(OP, NINF, 1.0, OP),
                                 Interval(OP, NINF, 1.0, CL), OP),
                SpanningInterval(CL, Interval(OP, 3.0, PINF, OP),
                                 Interval(OP, 3.0, PINF, OP), OP),
                SpanningInterval(OP, Interval(OP, NINF, 1.0, OP),
                                 Interval(OP, NINF, 1.0, OP), CL),
                SpanningInterval(OP, Interval(CL, 3.0, PINF, OP),
                                 Interval(OP, 3.0, PINF, OP), CL),
                SpanningInterval(CL, Interval(OP, NINF, 1.0, OP),
                                 Interval(OP, NINF, 1.0, OP), CL),
                SpanningInterval(CL, Interval(OP, 3.0, PINF, OP),
                                 Interval(OP, 3.0, PINF, OP), CL)
            ]))