def distribute_mm_to_map(p50s: InstrumentContext, plates: [Labware],
                         tuberack: Labware,
                         protocol: protocol_api.ProtocolContext,
                         groups: typing.Generator, platemap: list, volume):

    tubes = tuberack.wells()[:6]
    # next(groups)
    for i in range(len(plates)):
        current_plate = plates[i]
        if i > len(plates) / 2:
            p50s.well_bottom_clearance.aspirate = .8
        else:
            p50s.well_bottom_clearance.aspirate = 1
        for tube in tubes:
            current_group = next(groups)
            map_row_counter = 0
            p50s.pick_up_tip()
            for row in current_plate.rows():
                map_row = platemap[map_row_counter]
                for i in range(12):
                    if map_row[i] == current_group and map_row[i] != '':
                        # p50s.well_bottom_clearance.aspirate = .2
                        p50s.aspirate(volume=volume, location=tube)
                        # p50s.well_bottom_clearance.dispense = 8
                        p50s.dispense(volume=volume, location=row[i])
                    else:
                        pass
                map_row_counter += 1
            p50s.drop_tip()
        protocol.pause("Remove plate and press Resume to continue")
Esempio n. 2
0
def distribute_mm_to_map(p50s: InstrumentContext, plates: [Labware],
                         tuberack: Labware, tipracks: [Labware], facs: Labware,
                         groups: typing.Generator, platemap: list,
                         protocol: protocol_api.ProtocolContext):

    tubes = tuberack.wells()[:3]
    plate = plates[0]
    next(groups)
    # for plate in plates:
    for tube in tubes:
        current_group = next(groups)
        map_row_counter = 0
        p50s.pick_up_tip()
        for row in plate.rows():
            map_row = platemap[map_row_counter]
            for i in range(12):
                if map_row[i] == current_group and map_row[i] != '':
                    p50s.well_bottom_clearance.aspirate = 10
                    p50s.aspirate(volume=50, location=tube)
                    p50s.well_bottom_clearance.dispense = 10
                    p50s.dispense(volume=50, location=row[i])
                else:
                    pass
            map_row_counter += 1
        p50s.drop_tip()
Esempio n. 3
0
def distribute_master_mix(p300m: InstrumentContext, plates: [Labware],
                          tuberack: Labware, tipracks: [Labware]):
    tubes = tuberack.wells()[0:4]
    p300m.well_bottom_clearance.dispense = .02
    tip_counter = 0
    # to_remove is the number of wells to be removed from the final row. all prior rows will be assumed to be filled
    to_remove = 11
    to_remove = 12 - to_remove
    # last_row is the index of the last row (rows() returns 2D list of rows by well)
    last_row = 1
    plate = plates[0]
    # for plate in plates:
    wells = plate.rows()[:2]
    wells[last_row] = wells[last_row][:to_remove]
    # for example, pop the last 8 in a row for a
    # for plate in plates:
    #     # last_row is the index of the last row (rows() returns 2D list of rows by well)
    #
    #     plate = plates[0]
    #     # for plate in plates:
    #     wells = plate.rows()[:2]
    #     wells[last_row] = wells[last_row][:to_remove]
    group_counter = 0
    tip_gen = next_tip(p300m.tip_racks, 1)
    for tube in tubes:
        p300m.well_bottom_clearance.aspirate = .1
        print(wells)
        wells = plate.rows()[:2 + group_counter]
        group_counter += 2
        wells[last_row] = wells[last_row][:to_remove]
        for row in wells:
            for well in row:
                tip = next(tip_gen)
                print(tip)
                p300m.pick_up_tip(location=tip, presses=2, increment=.05)
                print(tube, well)
                p300m.aspirate(volume=100, location=tube)
                p300m.dispense(volume=100, location=well)
                p300m.well_bottom_clearance.aspirate = .02
                p300m.mix(volume=60, repetitions=3, location=well)
                p300m.drop_tip()
                tip_counter += 1
Esempio n. 4
0
 def dispense_while_moving(pip: InstrumentContext,
                           well: Well,
                           vol: float,
                           steps: int,
                           is_verbose: bool = False,
                           pip_offset: float = 0):
     """
     This function dispenses a partial volume = vol/steps and then moves
     a distance/steps and repeats
     """
     well_diameter = float(well.diameter)
     dispense_distance = well_diameter - well_edge_offset
     dy = dispense_distance / steps  # Move a fraction (=steps) of well diatr.
     dv = vol / steps
     start_location = well.bottom().move(
         Point(0, well_diameter / 2 - well_edge_offset, pip_offset))
     pip.move_to(start_location)
     for i in range(steps):
         loc = start_location.move(Point(0, i * dy, 0))
         if is_verbose:
             ctx.comment("Dispensing at: {}".format(loc))
         pip.dispense(dv, loc)