Пример #1
0
 def test_get_all_children(self):
     c1 = generate_plate(4, 2, (5, 5), (0, 0), 5)
     c2 = generate_plate(4, 2, (5, 5), (0, 0), 5)
     deck = Deck()
     deck.add(c1, "A1", (0, 0, 0))
     deck.add(c2, "A2", (50, 50, 50))
     self.assertEqual(len(deck.get_all_children()), 10)
Пример #2
0
def test_get_all_children():
    c1 = generate_plate(4, 2, (5, 5), (0, 0), 5)
    c2 = generate_plate(4, 2, (5, 5), (0, 0), 5)
    deck = Deck()
    deck.add(c1, "A1", (0, 0, 0))
    deck.add(c2, "A2", (50, 50, 50))
    assert len(deck.get_all_children()) == 10
Пример #3
0
 def test_chain_method(self):
     a = generate_plate(4, 2, (5, 5), (0, 0), 5)
     b = generate_plate(4, 2, (5, 5), (0, 0), 5)
     c = generate_plate(4, 2, (5, 5), (0, 0), 5)
     cycle_iter = a.chain(b, c)
     for i in range(4):
         self.assertEqual(next(cycle_iter), a[i])
     for i in range(4):
         self.assertEqual(next(cycle_iter), b[i])
     for i in range(4):
         self.assertEqual(next(cycle_iter), c[i])
Пример #4
0
    def test_tip_tracking_chain(self):
        # TODO (ben 20171130): revise this test to make more sense in the
        # context of required tip pick_up/drop sequencing, etc.

        total_tips_per_plate = 4

        self.tiprack1 = generate_plate(
            total_tips_per_plate, 2, (5, 5), (0, 0), 5)
        self.tiprack2 = generate_plate(
            total_tips_per_plate, 2, (5, 5), (0, 0), 5)
        self.robot._deck['1'].add(self.tiprack1, 'tiprack1')
        self.robot._deck['2'].add(self.tiprack2, 'tiprack2')

        self.p200 = Pipette(
            self.robot,
            mount='right',
            tip_racks=[self.tiprack1, self.tiprack2],
            trash_container=self.tiprack1,
            name='pipette-for-transfer-tests',
            ul_per_mm=18.5
        )
        self.p200.max_volume = 200

        self.p200.move_to = mock.Mock()

        for _ in range(0, total_tips_per_plate * 2):
            self.p200.pick_up_tip()
            self.p200.tip_attached = False  # prior expectation, for test only

        expected = []
        for i in range(0, total_tips_per_plate):
            expected.extend(self.build_pick_up_tip(self.tiprack1[i]))
        for i in range(0, total_tips_per_plate):
            expected.extend(self.build_pick_up_tip(self.tiprack2[i]))

        self.assertEqual(
            self.p200.move_to.mock_calls,
            expected
        )

        # test then when we go over the total number of tips,
        # Pipette raises a RuntimeWarning
        self.robot.clear_commands()
        self.p200.reset()
        for _ in range(0, total_tips_per_plate * 2):
            self.p200.pick_up_tip()
            self.p200.tip_attached = False  # prior expectation, for test only

        self.assertRaises(RuntimeWarning, self.p200.pick_up_tip)
def test_tip_tracking_chain(local_test_pipette, robot):
    trash, tiprack1, tiprack2, plate, p200 = local_test_pipette
    # TODO (ben 20171130): revise this test to make more sense in the
    # context of required tip pick_up/drop sequencing, etc.

    total_tips_per_plate = 4

    tiprack1 = generate_plate(
        total_tips_per_plate, 2, (5, 5), (0, 0), 5)
    tiprack2 = generate_plate(
        total_tips_per_plate, 2, (5, 5), (0, 0), 5)
    robot._deck['1'].add(tiprack1, 'tiprack1')
    robot._deck['2'].add(tiprack2, 'tiprack2')

    p200 = Pipette(
        robot,
        mount='right',
        tip_racks=[tiprack1, tiprack2],
        trash_container=tiprack1,
        name='pipette-for-transfer-tests',
        max_volume=200,
        ul_per_mm=18.5
    )

    p200.move_to = mock.Mock()

    for _ in range(0, total_tips_per_plate * 2):
        p200.pick_up_tip()
        p200.tip_attached = False  # prior expectation, for test only

    expected = []
    for i in range(0, total_tips_per_plate):
        expected.extend(build_pick_up_tip(p200, tiprack1[i]))
    for i in range(0, total_tips_per_plate):
        expected.extend(build_pick_up_tip(p200, tiprack2[i]))

    assert p200.move_to.mock_calls == expected

    # test then when we go over the total number of tips,
    # Pipette raises a RuntimeWarning
    robot.clear_commands()
    p200.reset()
    for _ in range(0, total_tips_per_plate * 2):
        p200.pick_up_tip()
        p200.tip_attached = False  # prior expectation, for test only

    with pytest.raises(RuntimeWarning):
        p200.pick_up_tip()
Пример #6
0
    def test_wells(self):
        c = generate_plate(96, 8, (9, 9), (16, 11), 2.5, 40)

        self.assertWellSeriesEqual(c.well(0), c[0])
        self.assertWellSeriesEqual(c.well('A2'), c['A2'])
        self.assertWellSeriesEqual(c.wells(0), c[0])
        self.assertWellSeriesEqual(c.wells(), c[0:])

        expected = [c[n] for n in ['A1', 'B2', 'C3']]
        self.assertWellSeriesEqual(c.wells('A1', 'B2', 'C3'), expected)
        self.assertWellSeriesEqual(c.get('A1', 'B2', 'C3'), expected)
        self.assertWellSeriesEqual(c('A1', 'B2', 'C3'), expected)

        expected = [c.rows[0][0], c.rows[0][5]]
        self.assertWellSeriesEqual(c.rows['A'].wells('1', '6'), expected)
        self.assertWellSeriesEqual(c.rows['A'].get('1', '6'), expected)

        expected = [c.rows[0][0], c.rows[0][5]]
        self.assertWellSeriesEqual(c.rows['A'].wells(['1', '6']), expected)
        self.assertWellSeriesEqual(c.rows['A'].get('1', '6'), expected)
        self.assertWellSeriesEqual(c.rows('A').get('1', '6'), expected)

        expected = c.wells('A1', 'B1', 'C1', 'D1', 'E1', 'F1', 'G1', 'H1')
        self.assertWellSeriesEqual(c.wells('A1', to='H1'), expected)
        self.assertWellSeriesEqual(c.get('A1', to='H1'), expected)

        expected = c.wells('A1', 'C1', 'E1', 'G1')
        self.assertWellSeriesEqual(c.wells('A1', to='H1', step=2), expected)
        self.assertWellSeriesEqual(c.get('A1', to='H1', step=2), expected)

        expected = c.cols['1':'12':2]
        self.assertWellSeriesEqual(c.cols('1', to='12', step=2), expected)

        expected = c.wells('A3', 'G2', 'E2', 'C2', 'A2', 'G1', 'E1', 'C1',
                           'A1')
        self.assertWellSeriesEqual(c.wells('A3', to='A1', step=2), expected)
        self.assertWellSeriesEqual(c.get('A3', to='A1', step=2), expected)

        expected = c.wells('A1', 'B1', 'C1', 'D1', 'E1', 'F1', 'G1', 'H1')
        self.assertWellSeriesEqual(c.wells('A1', length=8), expected)

        expected = c.wells('A1', 'C1', 'E1', 'G1', 'A2', 'C2', 'E2', 'G2')
        self.assertWellSeriesEqual(c.wells('A1', length=8, step=2), expected)

        expected = c.wells('A1', 'H12', 'G12', 'F12')
        self.assertWellSeriesEqual(c.wells('A1', length=4, step=-1), expected)

        expected = c.wells('A1', 'H12', 'G12', 'F12')
        self.assertWellSeriesEqual(c.wells('A1', length=-4, step=-1), expected)

        expected = c.wells('A1', 'H12', 'G12', 'F12')
        self.assertWellSeriesEqual(c.wells('A1', length=-4, step=1), expected)

        expected = c.wells('A1', 'B1', 'C1', 'D1')
        self.assertWellSeriesEqual(c.wells(length=4), expected)

        self.assertWellSeriesEqual(c.wells(43), c.wells(x=3, y=5))
        self.assertWellSeriesEqual(c.rows(3), c.wells(y=3))
        self.assertWellSeriesEqual(c.cols(4), c.wells(x=4))
        self.assertRaises(ValueError, c.wells, **{'x': '1', 'y': '2'})
Пример #7
0
 def test_slice_with_strings(self):
     c = generate_plate(96, 8, (9, 9), (16, 11), 2.5, 40)
     self.assertWellSeriesEqual(c['A1':'A2'], c[0:8])
     self.assertWellSeriesEqual(c['A12':], c.cols[-1][0:])
     self.assertWellSeriesEqual(c.cols['4':'8'], c.cols[3:7])
     self.assertWellSeriesEqual(c.rows['B':'E'], c.rows[1:4])
     self.assertWellSeriesEqual(c.rows['B']['1':'7'], c.rows[1][0:6])
Пример #8
0
    def test_top_bottom(self):
        deck = Deck()
        slot = Slot()
        plate = generate_plate(wells=4,
                               cols=2,
                               spacing=(10, 10),
                               offset=(0, 0),
                               radius=5,
                               height=10)
        deck.add(slot, 'A1', (0, 0, 0))
        slot.add(plate)

        self.assertEqual(plate['A1'].bottom(10),
                         (plate['A1'], Vector(5, 5, 10)))
        self.assertEqual(plate['A1'].top(10), (plate['A1'], Vector(5, 5, 20)))

        self.assertEqual(plate['A1'].bottom(10, radius=1.0, degrees=90),
                         (plate['A1'], Vector(5, 10, 10)))
        self.assertEqual(plate['A1'].top(10, radius=1.0, degrees=90),
                         (plate['A1'], Vector(5, 10, 20)))

        self.assertEqual(plate['A1'].bottom(10, radius=0.5, degrees=270),
                         (plate['A1'], Vector(5, 2.5, 10.00)))
        self.assertEqual(plate['A1'].top(10, radius=0.5, degrees=270),
                         (plate['A1'], Vector(5, 2.5, 20.00)))
Пример #9
0
    def test_add_placeables(self):
        a = generate_plate(4, 2, (5, 5), (0, 0), 5)
        b = generate_plate(4, 2, (5, 5), (0, 0), 5)

        result = a + b
        self.assertEqual(len(result), 8)
        for i in range(len(a)):
            self.assertEqual(a[i], result[i])
        for i in range(len(b)):
            self.assertEqual(b[i], result[i + len(a)])

        result = a.cols(0) + b.rows(0)
        self.assertEqual(len(result), 4)
        self.assertEqual(a[0], result[0])
        self.assertEqual(a[1], result[1])
        self.assertEqual(b[0], result[2])
        self.assertEqual(b[2], result[3])
Пример #10
0
def test_add_placeables():
    a = generate_plate(4, 2, (5, 5), (0, 0), 5)
    b = generate_plate(4, 2, (5, 5), (0, 0), 5)

    result = a + b
    assert len(result) == 8
    for i in range(len(a)):
        assert a[i] == result[i]
    for i in range(len(b)):
        assert b[i] == result[i + len(a)]

    result = a.cols(0) + b.rows(0)
    assert len(result) == 4
    assert a[0] == result[0]
    assert a[1] == result[1]
    assert b[0] == result[2]
    assert b[2] == result[3]
Пример #11
0
    def test_generate_plate(self):
        c = generate_plate(wells=96,
                           cols=8,
                           spacing=(10, 15),
                           offset=(5, 15),
                           radius=5)

        self.assertEqual(c['A1'].coordinates(), (5, 15, 0))
        self.assertEqual(c['B2'].coordinates(), (15, 30, 0))
Пример #12
0
def test_generate_plate(robot):
    c = generate_plate(wells=96,
                       cols=8,
                       spacing=(10, 15),
                       offset=(5, 15),
                       radius=5)

    assert c['A1'].coordinates() == (5, 15, 0)
    assert c['B2'].coordinates() == (15, 30, 0)
Пример #13
0
def test_coordinates(robot):
    deck = Deck()
    slot = Slot()
    plate = generate_plate(wells=96,
                           cols=8,
                           spacing=(10, 15),
                           offset=(5, 15),
                           radius=5)
    deck.add(slot, 'B2', (100, 200, 0))
    slot.add(plate)

    assert plate['A1'].coordinates(deck) == (105, 215, 0)
Пример #14
0
def test_well_from_center(robot):
    deck = Deck()
    slot = Slot()
    plate = generate_plate(wells=4,
                           cols=2,
                           spacing=(10, 10),
                           offset=(0, 0),
                           radius=5)
    deck.add(slot, 'A1', (0, 0, 0))
    slot.add(plate)

    assert plate['B2'].center() == (5, 5, 0)
    assert plate['B2'].from_center(x=0.0, y=0.0, z=0.0) == (5, 5, 0)
    assert plate['B2'].from_center(r=1.0, theta=math.pi / 2, h=0.0)\
        == (5.0, 10.0, 0.0)
Пример #15
0
def test_well_from_center():
    deck = Deck()
    slot = Slot()
    plate = generate_plate(wells=4,
                           cols=2,
                           spacing=(10, 10),
                           offset=(0, 0),
                           radius=5,
                           height=20)
    deck.add(slot, 'A1', (0, 0, 0))
    slot.add(plate)

    assert plate['B2'].center() == (5, 5, 10)
    assert plate['B2'].from_center(x=0.0, y=0.0, z=2.0) == (5, 5, 30)
    assert plate['B2'].from_center(r=1.0, theta=pi / 2, h=5.0) == (5, 10, 60)
    assert plate['B2'].top()[1] == (5, 5, 20)
    assert plate['B2'].bottom()[1] == (5, 5, 0)
Пример #16
0
def test_well_from_center_new(split_labware_def):
    print("Split labware definitions? {}".format(
        ff.split_labware_definitions()))
    deck = Deck()
    slot = Slot()
    plate = generate_plate(wells=4,
                           cols=2,
                           spacing=(10, 10),
                           offset=(0, 0),
                           radius=5,
                           height=20)
    deck.add(slot, 'A1', (0, 0, 0))
    slot.add(plate)

    assert plate['B2'].center() == (5, 5, 10)
    assert plate['B2'].from_center(x=0.0, y=0.0, z=2.0) == (5, 5, 30)
    assert plate['B2'].from_center(r=1.0, theta=pi / 2, h=5.0) == (5, 10, 60)
    assert plate['B2'].top()[1] == (5, 5, 20)
    assert plate['B2'].bottom()[1] == (5, 5, 0)
Пример #17
0
    def test_next(self):
        c = generate_plate(4, 2, (5, 5), (0, 0), 5)
        well = c['A1']
        expected = c.get_child_by_name('B1')

        self.assertEqual(next(well), expected)
Пример #18
0
 def test_iterate_without_parent(self):
     c = generate_plate(4, 2, (5, 5), (0, 0), 5)
     self.assertRaises(Exception, next, c)
Пример #19
0
def test_int_index(robot):
    c = generate_plate(4, 2, (5, 5), (0, 0), 5)

    assert c[3] == c.get_child_by_name('B2')
    assert c[1] == c.get_child_by_name('B1')
Пример #20
0
def test_next(robot):
    c = generate_plate(4, 2, (5, 5), (0, 0), 5)
    well = c['A1']
    expected = c.get_child_by_name('B1')

    assert next(well) == expected
Пример #21
0
def test_iterator(robot):
    c = generate_plate(4, 2, (5, 5), (0, 0), 5)
    res = [well.coordinates() for well in c]
    expected = [(0, 0, 0), (5, 0, 0), (0, 5, 0), (5, 5, 0)]
    assert res == expected
Пример #22
0
def test_back_container_getitem(robot):
    c = generate_plate(4, 2, (5, 5), (0, 0), 5)
    with pytest.raises(TypeError):
        c.__getitem__((1, 1))
Пример #23
0
def test_iterate_without_parent(robot):
    c = generate_plate(4, 2, (5, 5), (0, 0), 5)
    with pytest.raises(Exception):
        next(c)
Пример #24
0
    def test_int_index(self):
        c = generate_plate(4, 2, (5, 5), (0, 0), 5)

        self.assertEqual(c[3], c.get_child_by_name('B2'))
        self.assertEqual(c[1], c.get_child_by_name('B1'))
Пример #25
0
 def test_back_container_getitem(self):
     c = generate_plate(4, 2, (5, 5), (0, 0), 5)
     self.assertRaises(TypeError, c.__getitem__, (1, 1))
Пример #26
0
 def test_get_name(self):
     c = generate_plate(4, 2, (5, 5), (0, 0), 5)
     expected = '<Well A1>'
     self.assertEqual(str(c['A1']), expected)
     expected = '<Container>'
     self.assertEqual(str(c), expected)
Пример #27
0
 def test_iter_method(self):
     c = generate_plate(4, 2, (5, 5), (0, 0), 5)
     cycle_iter = c.iter()
     for i in range(4):
         self.assertEqual(next(cycle_iter), c[i])
Пример #28
0
 def test_cycle(self):
     c = generate_plate(4, 2, (5, 5), (0, 0), 5)
     cycle_iter = c.cycle()
     for n in range(3):
         for i in range(4):
             self.assertEqual(next(cycle_iter), c[i])
Пример #29
0
def test_iter_method():
    c = generate_plate(4, 2, (5, 5), (0, 0), 5)
    cycle_iter = c.iter()
    for i in range(4):
        assert next(cycle_iter) == c[i]
Пример #30
0
    def test_iterator(self):
        c = generate_plate(4, 2, (5, 5), (0, 0), 5)
        res = [well.coordinates() for well in c]
        expected = [(0, 0, 0), (5, 0, 0), (0, 5, 0), (5, 5, 0)]

        self.assertListEqual(res, expected)