def resource_list_with_prefix(layout_manager, prefix, res_class, num_ress): def name_from_line(line): field = LayoutManager.layline_objid(line) if field: return field return LayoutManager.layline_first_field(line) layline_test = lambda line: LayoutManager.field_starts_with(name_from_line(line), prefix) res_type = ResourceType(res_class, layline_test, name_from_line) res_list = [layout_manager.assign_unused_resource(res_type) for _ in range(num_ress)] res_list.sort(key=lambda r: r.layout_name()) return res_list
import os from pyhamilton import (HamiltonInterface, LayoutManager, ResourceType, Tip96, INITIALIZE, PICKUP, NoTipError, HardwareError) layfile = os.path.abspath(os.path.join('.', 'minimal_error_example.lay')) lmgr = LayoutManager(layfile) tip_name_from_line = lambda line: LayoutManager.layline_first_field(line) tip_name_condition = lambda line: LayoutManager.field_starts_with( tip_name_from_line(line), 'HTF_L_') tips_type = ResourceType(Tip96, tip_name_condition, tip_name_from_line) tips = lmgr.assign_unused_resource(tips_type) if __name__ == '__main__': with HamiltonInterface() as hammy: print('INITIALIZED!!', hammy.wait_on_response(hammy.send_command(INITIALIZE))) try: id = hammy.send_command(PICKUP, labwarePositions=str(tips.layout_name()) + ', 1;') print(hammy.wait_on_response(id, raise_first_exception=True)) except NoTipError: print('\n' * 10 + 'THERE WAS NO TIP THERE' + '\n' * 10) except HardwareError: print('\n' * 10 + 'Did I just crash into something?' + '\n' * 10)