def __init__(self): objs1 = tg.Select(color=sg.random_color(), when=sg.random_when()) a2 = sg.random_shape() a1 = tg.GetShape(objs1) if random.random() > 0.5: self._operator = tg.IsSame(a1, a2) else: self._operator = tg.IsSame(a2, a1)
def testSetChild(self): objs1 = tg.Select(when='last1') objs2 = tg.Select(when='now') s1 = tg.GetShape(objs1) s2 = tg.GetShape(objs2) c1 = tg.GetColor(objs1) c2 = tg.GetColor(objs2) and1 = tg.And(tg.IsSame(s1, s2), tg.IsSame(c1, c2)) self.assertEqual(len(and1.child), 2)
def __init__(self): color1, color2, color3, color4 = sg.sample_color(4) objs1 = tg.Select(color=color1, when=sg.random_when()) objs2 = tg.Select(color=color2, when=sg.random_when()) objs3 = tg.Select(color=color3, when=sg.random_when()) objs4 = tg.Select(color=color4, when=sg.random_when()) a1 = tg.GetShape(objs1) a2 = tg.GetShape(objs2) a3 = tg.GetShape(objs3) a4 = tg.GetShape(objs4) self._operator = tg.And(tg.IsSame(a1, a2), tg.IsSame(a3, a4))
def __init__(self): shape1, shape2, shape3, shape4 = sg.sample_shape(4) objs1 = tg.Select(shape=shape1, when=sg.random_when()) objs2 = tg.Select(shape=shape2, when=sg.random_when()) objs3 = tg.Select(shape=shape3, when=sg.random_when()) objs4 = tg.Select(shape=shape4, when=sg.random_when()) a1 = tg.GetColor(objs1) a2 = tg.GetColor(objs2) a3 = tg.GetColor(objs3) a4 = tg.GetColor(objs4) self._operator = tg.And(tg.IsSame(a1, a2), tg.IsSame(a3, a4))
def testAndOperatorSize(self): objs1 = tg.Select(when='last1') objs2 = tg.Select(when='now') s1 = tg.GetShape(objs1) s2 = tg.GetShape(objs2) c1 = tg.GetColor(objs1) c2 = tg.GetColor(objs2) and1 = tg.And(tg.IsSame(s1, s2), tg.IsSame(c1, c2)) task = tg.Task(and1) self.assertEqual(task.operator_size, 9)
def __init__(self): color1, color2 = sg.sample_color(2) objs1 = tg.Select(color=color1, when=sg.random_when()) objs2 = tg.Select(color=color2, when=sg.random_when()) a1 = tg.GetShape(objs1) a2 = tg.GetShape(objs2) self._operator = tg.IsSame(a1, a2)
def __init__(self): shape1, shape2 = sg.sample_shape(2) objs1 = tg.Select(shape=shape1, when=sg.random_when()) objs2 = tg.Select(shape=shape2, when=sg.random_when()) a1 = tg.GetColor(objs1) a2 = tg.GetColor(objs2) self._operator = tg.IsSame(a1, a2)
def __init__(self): color1, color2 = sg.sample_color(2) objs1 = tg.Select(color=color1, when=sg.random_when()) objs2 = tg.Select(color=color2, when=sg.random_when()) shape11 = tg.GetShape(objs1) shape21 = tg.GetShape(objs2) shape12, shape22 = sg.random_shape(), sg.random_shape() if random.random() > 0.5: bool1 = tg.IsSame(shape11, shape12) else: bool1 = tg.IsSame(shape11, shape12) if random.random() > 0.5: bool2 = tg.IsSame(shape21, shape22) else: bool2 = tg.IsSame(shape21, shape22) self._operator = tg.And(bool1, bool2)
def testGenerateObjset(self): objs1 = tg.Select(shape=sg.Shape('square'), when='last1') objs2 = tg.Select(shape=sg.Shape('circle'), when='last1') attr1 = tg.GetColor(objs1) attr2 = tg.GetColor(objs2) task = tg.Task(tg.IsSame(attr1, attr2)) task.generate_objset(n_epoch=20, n_distractor=3, average_memory_span=3)
def testOperatorSize(self): objs1 = tg.Select(shape=sg.Shape('circle'), when='now') color1 = tg.GetColor(objs1) objs2 = tg.Select(color=color1, shape=sg.Shape('square'), when='now') exist = tg.Exist(objs2) task = tg.Task(exist) self.assertEqual(task.operator_size, 4) objs1 = tg.Select(when='last1') objs2 = tg.Select(when='now') s1 = tg.GetShape(objs1) s2 = tg.GetShape(objs2) c1 = tg.GetColor(objs1) c2 = tg.GetColor(objs2) bool1 = tg.And(tg.IsSame(s1, s2), tg.IsSame(c1, c2)) task = tg.Task(bool1) self.assertEqual(task.operator_size, 9)
def __init__(self): shape1, shape2 = sg.sample_shape(2) objs1 = tg.Select(shape=shape1, when=sg.random_when()) objs2 = tg.Select(shape=shape2, when=sg.random_when()) color11 = tg.GetColor(objs1) color21 = tg.GetColor(objs2) color12, color22 = sg.random_color(), sg.random_color() if random.random() > 0.5: bool1 = tg.IsSame(color11, color12) else: bool1 = tg.IsSame(color11, color12) if random.random() > 0.5: bool2 = tg.IsSame(color21, color22) else: bool2 = tg.IsSame(color21, color22) self._operator = tg.And(bool1, bool2)
def testAndCompareColorGuessObjset(self): objs1 = tg.Select(shape=sg.Shape('circle'), when='last1') objs2 = tg.Select(shape=sg.Shape('square'), when='last1') objs3 = tg.Select(shape=sg.Shape('triangle'), when='last1') objs4 = tg.Select(shape=sg.Shape('hbar'), when='last1') a1 = tg.Get('color', objs1) a2 = tg.Get('color', objs2) a3 = tg.Get('color', objs3) a4 = tg.Get('color', objs4) task = tg.Task(tg.And(tg.IsSame(a1, a2), tg.IsSame(a3, a4))) n_epoch = 10 for i in range(100): epoch_now = random.randint(1, n_epoch - 1) objset = sg.ObjectSet(n_epoch=n_epoch) should_be = random.random() > 0.5 objset = task.guess_objset(objset, epoch_now, should_be=should_be) self.assertEqual(task(objset, epoch_now), should_be)
def testAndGuessObjset(self): objs1 = tg.Select(when='last1') objs2 = tg.Select(when='now') s1 = tg.GetShape(objs1) s2 = tg.GetShape(objs2) c1 = tg.GetColor(objs1) c2 = tg.GetColor(objs2) task = tg.Task(tg.And(tg.IsSame(s1, s2), tg.IsSame(c1, c2))) objset = sg.ObjectSet(n_epoch=10) obj0 = sg.Object([sg.Color('green'), sg.Shape('square')], when='now') obj1 = sg.Object([sg.Color('red'), sg.Shape('circle')], when='now') objset.add(obj0, epoch_now=0) objset.add(obj1, epoch_now=1) objset = task.guess_objset(objset, epoch_now=2, should_be=True) obj2 = objset.last_added_obj self.assertEqual(obj1.color.value, obj2.color.value) self.assertEqual(obj1.shape.value, obj2.shape.value)
def testBasicIsSameGuessObject(self): objset = sg.ObjectSet(n_epoch=10) objs1 = tg.Select(shape=sg.Shape('square'), when='now') attr1 = tg.GetColor(objs1) task = tg.Task(tg.IsSame(attr1, sg.Color('red'))) epoch_now = 1 objset = task.guess_objset(objset, epoch_now, should_be=True) c1 = objset.select(epoch_now, shape=sg.Shape('square'), when='now')[0].color self.assertEqual(c1, sg.Color('red'))
def __init__(self): color1, color2 = sg.sample_color(2) when1 = sg.random_when() a2 = sg.random_shape() shape1, shape2 = sg.sample_shape(2) objs1 = tg.Select(color=color1, when=when1) a1 = tg.GetShape(objs1) if random.random() > 0.5: bool1 = tg.IsSame(a1, a2) else: bool1 = tg.IsSame(a2, a1) objs2 = tg.Select(color=color2, shape=shape1) objs3 = tg.Select(color=color2, shape=shape2) go1 = tg.Go(objs2) go2 = tg.Go(objs3) self._operator = tg.Switch(bool1, go1, go2, both_options_avail=True)
def testIsSameGuessObjsetManyEpochs(self): objs1 = tg.Select(shape=sg.Shape('square'), when='last1') objs2 = tg.Select(shape=sg.Shape('circle'), when='now') attr1 = tg.GetColor(objs1) attr2 = tg.GetColor(objs2) task = tg.Task(tg.IsSame(attr1, attr2)) n_epoch = 100 objset = sg.ObjectSet(n_epoch=n_epoch) for i in range(1, n_epoch)[::-1]: should_be = random.random() > 0.5 objset = task.guess_objset(objset, i, should_be=should_be) self.assertEqual(task(objset, i), should_be)
def testIsSameGuessObjsetLast1(self): objset = sg.ObjectSet(n_epoch=10) objs1 = tg.Select(shape=sg.Shape('square'), when='last1') objs2 = tg.Select(shape=sg.Shape('circle'), when='last1') attr1 = tg.GetColor(objs1) attr2 = tg.GetColor(objs2) task = tg.Task(tg.IsSame(attr1, attr2)) objset = task.guess_objset(objset, epoch_now=1, should_be=True) self.assertEqual(2, len(objset.select(epoch_now=0, when='now'))) c1 = objset.select(epoch_now=0, shape=sg.Shape('square'), when='now')[0].color c2 = objset.select(epoch_now=0, shape=sg.Shape('circle'), when='now')[0].color self.assertEqual(c1, c2)
def __init__(self): color1, color2, color3 = sg.sample_color(3) shape3, shape4 = sg.sample_shape(2) when1 = sg.random_when() when2 = sg.random_when() objs1 = tg.Select(color=color1, when=when1) objs2 = tg.Select(color=color2, when=when2) s1 = tg.GetShape(objs1) s2 = tg.GetShape(objs2) bool1 = tg.IsSame(s1, s2) objs3 = tg.Select(color=color3, shape=shape3) objs4 = tg.Select(color=color3, shape=shape4) go1 = tg.Go(objs3) go2 = tg.Go(objs4) self._operator = tg.Switch(bool1, go1, go2, both_options_avail=True)
def __init__(self): shape1, shape2, shape3 = sg.sample_shape(3) color1, color2 = sg.sample_color(2) when1 = sg.random_when() when2 = sg.random_when() objs1 = tg.Select(shape=shape1, when=when1) objs2 = tg.Select(shape=shape2, when=when2) a1 = tg.GetColor(objs1) a2 = tg.GetColor(objs2) bool1 = tg.IsSame(a1, a2) objs3 = tg.Select(color=color1, shape=shape3) objs4 = tg.Select(color=color2, shape=shape3) go1 = tg.Go(objs3) go2 = tg.Go(objs4) self._operator = tg.Switch(bool1, go1, go2, both_options_avail=True)
def testIsSameGuessObjsetWithDistractors(self): objs1 = tg.Select(shape=sg.Shape('square'), when='last1') objs2 = tg.Select(shape=sg.Shape('circle'), when='last1') attr1 = tg.GetColor(objs1) attr2 = tg.GetColor(objs2) task = tg.Task(tg.IsSame(attr1, attr2)) n_epoch = 10 objset = sg.ObjectSet(n_epoch=n_epoch) obj1 = sg.Object( [sg.Color('green'), sg.Shape('square')], when='now', deletable=True) objset.add(obj1, 0, add_if_exist=True) obj1 = sg.Object([sg.Color('red'), sg.Shape('circle')], when='now', deletable=True) objset.add(obj1, 0, add_if_exist=True) objset = task.guess_objset(objset, 0, should_be=True) objset.add_distractor(1) objset = task.guess_objset(objset, 1, should_be=True) self.assertTrue(task(objset, 1))