[{"data":1,"prerenderedAt":2275},["ShallowReactive",2],{"navigation":3,"\u002Fliquid-handling-and-robots\u002Fhamilton-star\u002Fiswap":909,"\u002Fliquid-handling-and-robots\u002Fhamilton-star\u002Fiswap-surround":2270},[4,59,188,271,445,591,760,791],{"title":5,"type":6,"device":6,"path":7,"stem":8,"children":9,"page":41},"Get Started",null,"\u002Fget-started\u002F","01.get-started",[10,15,42,47,51,55],{"title":11,"path":12,"stem":13,"type":14,"device":6},"Welcome to UniteLabs","\u002Fget-started\u002Fwelcome\u002F","01.get-started\u002F00.welcome","landing",{"title":16,"type":6,"device":6,"path":17,"stem":18,"children":19,"page":41},"Setup","\u002Fget-started\u002Fsetup\u002F","01.get-started\u002F01.setup",[20,25,29,33,37],{"title":21,"path":22,"stem":23,"type":24,"device":6},"Get access","\u002Fget-started\u002Fsetup\u002Fget-access\u002F","01.get-started\u002F01.setup\u002F00.get-access","howto",{"title":26,"path":27,"stem":28,"type":24,"device":6},"GroundControl","\u002Fget-started\u002Fsetup\u002Fgroundcontrol\u002F","01.get-started\u002F01.setup\u002F10.groundcontrol",{"title":30,"path":31,"stem":32,"type":24,"device":6},"Connect to Platform","\u002Fget-started\u002Fsetup\u002Fconnect-to-platform\u002F","01.get-started\u002F01.setup\u002F20.connect-to-platform",{"title":34,"path":35,"stem":36,"type":24,"device":6},"Set up your development machine","\u002Fget-started\u002Fsetup\u002Fdeveloper-machine\u002F","01.get-started\u002F01.setup\u002F30.developer-machine",{"title":38,"path":39,"stem":40,"type":24,"device":6},"SDK installation","\u002Fget-started\u002Fsetup\u002Fsdk-installation\u002F","01.get-started\u002F01.setup\u002F40.sdk-installation",false,{"title":43,"path":44,"stem":45,"type":46,"device":6},"Control a device","\u002Fget-started\u002Fcontrol-a-device\u002F","01.get-started\u002F02.control-a-device","tutorial",{"title":48,"path":49,"stem":50,"type":46,"device":6},"Liquid handling as code","\u002Fget-started\u002Fliquid-handling-as-code\u002F","01.get-started\u002F03.liquid-handling-as-code",{"title":52,"path":53,"stem":54,"type":46,"device":6},"Automate your workflows","\u002Fget-started\u002Fautomate-your-workflows\u002F","01.get-started\u002F04.automate-your-workflows",{"title":56,"path":57,"stem":58,"type":6,"device":6},"Self-Paced Setup Guide","\u002Fget-started\u002Fself-onboarding\u002F","01.get-started\u002F90.self-onboarding",{"title":60,"type":6,"device":6,"path":61,"stem":62,"children":63,"page":41},"How-to","\u002Fhow-to\u002F","02.how-to",[64,118,163,180],{"title":65,"type":6,"device":6,"path":66,"stem":67,"children":68,"page":41},"Connectors and devices","\u002Fhow-to\u002Fintegrate\u002F","02.how-to\u002F02.integrate",[69,102],{"title":70,"type":6,"device":6,"path":71,"stem":72,"children":73,"page":41},"Connect a device","\u002Fhow-to\u002Fintegrate\u002Fconnect-a-device\u002F","02.how-to\u002F02.integrate\u002F20.connect-a-device",[74,78,82,86,90,94,98],{"title":75,"path":76,"stem":77,"type":24,"device":6},"Connector Configuration","\u002Fhow-to\u002Fintegrate\u002Fconnect-a-device\u002Fconnector-configuration\u002F","02.how-to\u002F02.integrate\u002F20.connect-a-device\u002F10.connector-configuration",{"title":79,"path":80,"stem":81,"type":24,"device":6},"With an executable","\u002Fhow-to\u002Fintegrate\u002Fconnect-a-device\u002Fwith-an-executable\u002F","02.how-to\u002F02.integrate\u002F20.connect-a-device\u002F20.with-an-executable",{"title":83,"path":84,"stem":85,"type":24,"device":6},"From source","\u002Fhow-to\u002Fintegrate\u002Fconnect-a-device\u002Ffrom-source\u002F","02.how-to\u002F02.integrate\u002F20.connect-a-device\u002F30.from-source",{"title":87,"path":88,"stem":89,"type":24,"device":6},"Build your own","\u002Fhow-to\u002Fintegrate\u002Fconnect-a-device\u002Fbuild-yourself\u002F","02.how-to\u002F02.integrate\u002F20.connect-a-device\u002F40.build-yourself",{"title":91,"path":92,"stem":93,"type":24,"device":6},"Headless install","\u002Fhow-to\u002Fintegrate\u002Fconnect-a-device\u002Fheadless-install\u002F","02.how-to\u002F02.integrate\u002F20.connect-a-device\u002F50.headless-install",{"title":95,"path":96,"stem":97,"type":24,"device":6},"Raspberry Pi","\u002Fhow-to\u002Fintegrate\u002Fconnect-a-device\u002Fraspberry-pi\u002F","02.how-to\u002F02.integrate\u002F20.connect-a-device\u002F55.raspberry-pi",{"title":99,"path":100,"stem":101,"type":24,"device":6},"Multi-device Networking","\u002Fhow-to\u002Fintegrate\u002Fconnect-a-device\u002Fmultiple-devices\u002F","02.how-to\u002F02.integrate\u002F20.connect-a-device\u002F60.multiple-devices",{"title":103,"type":6,"device":6,"path":104,"stem":105,"children":106,"page":41},"Use a device","\u002Fhow-to\u002Fintegrate\u002Fuse-a-device\u002F","02.how-to\u002F02.integrate\u002F30.use-a-device",[107,110,114],{"title":26,"path":108,"stem":109,"type":24,"device":6},"\u002Fhow-to\u002Fintegrate\u002Fuse-a-device\u002Fgroundcontrol\u002F","02.how-to\u002F02.integrate\u002F30.use-a-device\u002F10.groundcontrol",{"title":111,"path":112,"stem":113,"type":24,"device":6},"Platform","\u002Fhow-to\u002Fintegrate\u002Fuse-a-device\u002Fplatform\u002F","02.how-to\u002F02.integrate\u002F30.use-a-device\u002F20.platform",{"title":115,"path":116,"stem":117,"type":24,"device":6},"UniteLabs SDK & REST API","\u002Fhow-to\u002Fintegrate\u002Fuse-a-device\u002Fpython\u002F","02.how-to\u002F02.integrate\u002F30.use-a-device\u002F30.python",{"title":119,"type":6,"device":6,"path":120,"stem":121,"children":122,"page":41},"Workflows","\u002Fhow-to\u002Fautomate\u002F","02.how-to\u002F07.automate",[123,127,131,135,139,143,147,151,155,159],{"title":124,"path":125,"stem":126,"type":24,"device":6},"Deploy a workflow","\u002Fhow-to\u002Fautomate\u002Fdeploy-a-workflow\u002F","02.how-to\u002F07.automate\u002F30.deploy-a-workflow",{"title":128,"path":129,"stem":130,"type":24,"device":6},"Run a workflow","\u002Fhow-to\u002Fautomate\u002Frun-a-workflow\u002F","02.how-to\u002F07.automate\u002F35.run-a-workflow",{"title":132,"path":133,"stem":134,"type":24,"device":6},"CI\u002FCD for workflows","\u002Fhow-to\u002Fautomate\u002Fcicd-for-workflows\u002F","02.how-to\u002F07.automate\u002F40.cicd-for-workflows",{"title":136,"path":137,"stem":138,"type":24,"device":6},"HITL basics","\u002Fhow-to\u002Fautomate\u002Fbasic-hitl\u002F","02.how-to\u002F07.automate\u002F50.basic-hitl",{"title":140,"path":141,"stem":142,"type":24,"device":6},"Slack notifications and operator confirmation","\u002Fhow-to\u002Fautomate\u002Fslack-notifications\u002F","02.how-to\u002F07.automate\u002F52.slack-notifications",{"title":144,"path":145,"stem":146,"type":24,"device":6},"Typed operator inputs","\u002Fhow-to\u002Fautomate\u002Ftyped-operator-inputs\u002F","02.how-to\u002F07.automate\u002F55.typed-operator-inputs",{"title":148,"path":149,"stem":150,"type":24,"device":6},"Pause and resume a run","\u002Fhow-to\u002Fautomate\u002Fpause-and-resume\u002F","02.how-to\u002F07.automate\u002F57.pause-and-resume",{"title":152,"path":153,"stem":154,"type":24,"device":6},"Error recovery","\u002Fhow-to\u002Fautomate\u002Fbasic-error-handling\u002F","02.how-to\u002F07.automate\u002F60.basic-error-handling",{"title":156,"path":157,"stem":158,"type":24,"device":6},"Advanced error handling","\u002Fhow-to\u002Fautomate\u002Fadvanced-error-handling\u002F","02.how-to\u002F07.automate\u002F70.advanced-error-handling",{"title":160,"path":161,"stem":162,"type":24,"device":6},"Emit lineage events","\u002Fhow-to\u002Fautomate\u002Femitting-lineage-events\u002F","02.how-to\u002F07.automate\u002F90.emitting-lineage-events",{"title":164,"type":6,"device":6,"path":165,"stem":166,"children":167,"page":41},"Data","\u002Fhow-to\u002Fobserve\u002F","02.how-to\u002F08.observe",[168,172,176],{"title":169,"path":170,"stem":171,"type":24,"device":6},"File System Connector","\u002Fhow-to\u002Fobserve\u002Ffilesystem-connector\u002F","02.how-to\u002F08.observe\u002F10.filesystem-connector",{"title":173,"path":174,"stem":175,"type":24,"device":6},"Building an ETL","\u002Fhow-to\u002Fobserve\u002Fbuilding-an-etl\u002F","02.how-to\u002F08.observe\u002F20.building-an-etl",{"title":177,"path":178,"stem":179,"type":24,"device":6},"Read lineage events","\u002Fhow-to\u002Fobserve\u002Freading-lineage-events\u002F","02.how-to\u002F08.observe\u002F30.reading-lineage-events",{"title":111,"type":6,"device":6,"path":181,"stem":182,"children":183,"page":41},"\u002Fhow-to\u002Fplatform\u002F","02.how-to\u002F09.platform",[184],{"title":185,"path":186,"stem":187,"type":24,"device":6},"UniteLabs Desktop","\u002Fhow-to\u002Fplatform\u002Funitelabs-desktop\u002F","02.how-to\u002F09.platform\u002F10.unitelabs-desktop",{"title":189,"type":6,"device":6,"path":190,"stem":191,"children":192},"Technical Reference","\u002Ftechnical-reference\u002F","03.technical-reference",[193,196,201,213,226,235,244,253,262],{"title":194,"path":190,"stem":195,"type":14,"device":6},"Overview","03.technical-reference\u002Findex",{"title":197,"path":198,"stem":199,"type":200,"device":6},"REST API","\u002Ftechnical-reference\u002Frest-api\u002F","03.technical-reference\u002F01.rest-api","reference",{"title":119,"type":6,"device":6,"path":202,"stem":203,"children":204,"page":41},"\u002Ftechnical-reference\u002Fautomate\u002F","03.technical-reference\u002F07.automate",[205,209],{"title":206,"path":207,"stem":208,"type":200,"device":6},"Workflow template","\u002Ftechnical-reference\u002Fautomate\u002Fworkflow-template\u002F","03.technical-reference\u002F07.automate\u002F05.workflow-template",{"title":210,"path":211,"stem":212,"type":200,"device":6},"Workflows REST API","\u002Ftechnical-reference\u002Fautomate\u002Fworkflows-api\u002F","03.technical-reference\u002F07.automate\u002F80.workflows-api",{"title":26,"type":6,"device":6,"path":214,"stem":215,"children":216},"\u002Ftechnical-reference\u002Fgroundcontrol\u002F","03.technical-reference\u002F10.groundcontrol\u002Findex",[217,218,222],{"title":194,"path":214,"stem":215,"type":14,"device":6},{"title":219,"path":220,"stem":221,"type":200,"device":6},"Network requirements","\u002Ftechnical-reference\u002Fgroundcontrol\u002Fnetwork-requirements\u002F","03.technical-reference\u002F10.groundcontrol\u002F10.network-requirements",{"title":223,"path":224,"stem":225,"type":200,"device":6},"Changelog","\u002Ftechnical-reference\u002Fgroundcontrol\u002Fchangelog\u002F","03.technical-reference\u002F10.groundcontrol\u002F20.changelog",{"title":227,"type":6,"device":6,"path":228,"stem":229,"children":230},"UniteLabs SDK","\u002Ftechnical-reference\u002Fpython-sdk\u002F","03.technical-reference\u002F20.python-sdk\u002Findex",[231,232],{"title":194,"path":228,"stem":229,"type":14,"device":6},{"title":223,"path":233,"stem":234,"type":200,"device":6},"\u002Ftechnical-reference\u002Fpython-sdk\u002Fchangelog\u002F","03.technical-reference\u002F20.python-sdk\u002F20.changelog",{"title":236,"type":6,"device":6,"path":237,"stem":238,"children":239},"Liquid Handling SDK","\u002Ftechnical-reference\u002Fpython-liquid-handling-sdk\u002F","03.technical-reference\u002F30.python-liquid-handling-sdk\u002Findex",[240,241],{"title":194,"path":237,"stem":238,"type":14,"device":6},{"title":223,"path":242,"stem":243,"type":200,"device":6},"\u002Ftechnical-reference\u002Fpython-liquid-handling-sdk\u002Fchangelog\u002F","03.technical-reference\u002F30.python-liquid-handling-sdk\u002F20.changelog",{"title":245,"type":6,"device":6,"path":246,"stem":247,"children":248},"Labware","\u002Ftechnical-reference\u002Flabware\u002F","03.technical-reference\u002F40.labware\u002Findex",[249,250],{"title":194,"path":246,"stem":247,"type":14,"device":6},{"title":223,"path":251,"stem":252,"type":200,"device":6},"\u002Ftechnical-reference\u002Flabware\u002Fchangelog\u002F","03.technical-reference\u002F40.labware\u002F20.changelog",{"title":254,"type":6,"device":6,"path":255,"stem":256,"children":257},"Python Omnibus","\u002Ftechnical-reference\u002Fpython-omnibus\u002F","03.technical-reference\u002F50.python-omnibus\u002Findex",[258,259],{"title":194,"path":255,"stem":256,"type":14,"device":6},{"title":223,"path":260,"stem":261,"type":200,"device":6},"\u002Ftechnical-reference\u002Fpython-omnibus\u002Fchangelog\u002F","03.technical-reference\u002F50.python-omnibus\u002F20.changelog",{"title":263,"type":6,"device":6,"path":264,"stem":265,"children":266},"Python CDK","\u002Ftechnical-reference\u002Fpython-cdk\u002F","03.technical-reference\u002F60.python-cdk\u002Findex",[267,268],{"title":194,"path":264,"stem":265,"type":14,"device":6},{"title":223,"path":269,"stem":270,"type":200,"device":6},"\u002Ftechnical-reference\u002Fpython-cdk\u002Fchangelog\u002F","03.technical-reference\u002F60.python-cdk\u002F20.changelog",{"title":272,"type":6,"device":6,"path":273,"stem":274,"children":275,"page":41},"Concepts","\u002Fconcepts\u002F","04.concepts",[276,315,339,383,422],{"title":277,"type":6,"device":6,"path":278,"stem":279,"children":280,"page":41},"Labs as code","\u002Fconcepts\u002Flabs-as-code\u002F","04.concepts\u002F01.labs-as-code",[281,286,290],{"title":282,"path":283,"stem":284,"type":285,"device":6},"Lab as Code","\u002Fconcepts\u002Flabs-as-code\u002Fwhy-code\u002F","04.concepts\u002F01.labs-as-code\u002F00.why-code","explanation",{"title":287,"path":288,"stem":289,"type":285,"device":6},"How it works","\u002Fconcepts\u002Flabs-as-code\u002Fhow-it-works\u002F","04.concepts\u002F01.labs-as-code\u002F01.how-it-works",{"title":291,"type":6,"device":6,"path":292,"stem":293,"children":294,"page":41},"Use Cases","\u002Fconcepts\u002Flabs-as-code\u002Fuse-cases\u002F","04.concepts\u002F01.labs-as-code\u002F02.use-cases",[295,299,303,307,311],{"title":296,"path":297,"stem":298,"type":285,"device":6},"Instrument Control","\u002Fconcepts\u002Flabs-as-code\u002Fuse-cases\u002Flow-level-instrument-control\u002F","04.concepts\u002F01.labs-as-code\u002F02.use-cases\u002F10.low-level-instrument-control",{"title":300,"path":301,"stem":302,"type":285,"device":6},"Multi-device Control","\u002Fconcepts\u002Flabs-as-code\u002Fuse-cases\u002Fmulti-device-control\u002F","04.concepts\u002F01.labs-as-code\u002F02.use-cases\u002F20.multi-device-control",{"title":304,"path":305,"stem":306,"type":285,"device":6},"Workflow Orchestration","\u002Fconcepts\u002Flabs-as-code\u002Fuse-cases\u002Fworkflow-orchestration\u002F","04.concepts\u002F01.labs-as-code\u002F02.use-cases\u002F30.workflow-orchestration",{"title":308,"path":309,"stem":310,"type":285,"device":6},"Custom Apps and LIMS Integration","\u002Fconcepts\u002Flabs-as-code\u002Fuse-cases\u002Fcustom-apps-lims\u002F","04.concepts\u002F01.labs-as-code\u002F02.use-cases\u002F40.custom-apps-lims",{"title":312,"path":313,"stem":314,"type":285,"device":6},"Scale and Fleet Management","\u002Fconcepts\u002Flabs-as-code\u002Fuse-cases\u002Fscale-and-fleet\u002F","04.concepts\u002F01.labs-as-code\u002F02.use-cases\u002F50.scale-and-fleet",{"title":65,"type":6,"device":6,"path":316,"stem":317,"children":318,"page":41},"\u002Fconcepts\u002Fintegrate\u002F","04.concepts\u002F02.integrate",[319,323,327,331,335],{"title":320,"path":321,"stem":322,"type":285,"device":6},"Device","\u002Fconcepts\u002Fintegrate\u002Fdevice\u002F","04.concepts\u002F02.integrate\u002F05.device",{"title":324,"path":325,"stem":326,"type":285,"device":6},"Connector","\u002Fconcepts\u002Fintegrate\u002Fconnector\u002F","04.concepts\u002F02.integrate\u002F10.connector",{"title":328,"path":329,"stem":330,"type":285,"device":6},"Module","\u002Fconcepts\u002Fintegrate\u002Fmodule\u002F","04.concepts\u002F02.integrate\u002F20.module",{"title":332,"path":333,"stem":334,"type":285,"device":6},"Action","\u002Fconcepts\u002Fintegrate\u002Faction\u002F","04.concepts\u002F02.integrate\u002F30.action",{"title":336,"path":337,"stem":338,"type":285,"device":6},"Subscription","\u002Fconcepts\u002Fintegrate\u002Fsubscription\u002F","04.concepts\u002F02.integrate\u002F40.subscription",{"title":340,"type":6,"device":6,"path":341,"stem":342,"children":343,"page":41},"Liquid handling and robots","\u002Fconcepts\u002Foperate\u002F","04.concepts\u002F03.operate",[344,348,352,356,359,363,367,371,375,379],{"title":345,"path":346,"stem":347,"type":285,"device":6},"Liquid Handling","\u002Fconcepts\u002Foperate\u002Fliquid-handling\u002F","04.concepts\u002F03.operate\u002F10.liquid-handling",{"title":349,"path":350,"stem":351,"type":285,"device":6},"Modules","\u002Fconcepts\u002Foperate\u002Fmodules\u002F","04.concepts\u002F03.operate\u002F20.modules",{"title":353,"path":354,"stem":355,"type":285,"device":6},"Deck","\u002Fconcepts\u002Foperate\u002Fdeck\u002F","04.concepts\u002F03.operate\u002F30.deck",{"title":245,"path":357,"stem":358,"type":285,"device":6},"\u002Fconcepts\u002Foperate\u002Flabware\u002F","04.concepts\u002F03.operate\u002F40.labware",{"title":360,"path":361,"stem":362,"type":285,"device":6},"Liquids","\u002Fconcepts\u002Foperate\u002Fliquids\u002F","04.concepts\u002F03.operate\u002F50.liquids",{"title":364,"path":365,"stem":366,"type":285,"device":6},"Liquid Classes","\u002Fconcepts\u002Foperate\u002Fliquid-classes\u002F","04.concepts\u002F03.operate\u002F60.liquid-classes",{"title":368,"path":369,"stem":370,"type":285,"device":6},"Parameter Sets","\u002Fconcepts\u002Foperate\u002Fparameter-sets\u002F","04.concepts\u002F03.operate\u002F65.parameter-sets",{"title":372,"path":373,"stem":374,"type":285,"device":6},"Tips and Tip Tracking","\u002Fconcepts\u002Foperate\u002Ftips\u002F","04.concepts\u002F03.operate\u002F70.tips",{"title":376,"path":377,"stem":378,"type":285,"device":6},"Simulation","\u002Fconcepts\u002Foperate\u002Fsimulation\u002F","04.concepts\u002F03.operate\u002F80.simulation",{"title":380,"path":381,"stem":382,"type":285,"device":6},"Error Handling","\u002Fconcepts\u002Foperate\u002Ferror-handling\u002F","04.concepts\u002F03.operate\u002F90.error-handling",{"title":119,"type":6,"device":6,"path":384,"stem":385,"children":386,"page":41},"\u002Fconcepts\u002Fautomate\u002F","04.concepts\u002F07.automate",[387,391,395,399,403,407,411,415,419],{"title":388,"path":389,"stem":390,"type":285,"device":6},"Workflow","\u002Fconcepts\u002Fautomate\u002Fworkflow\u002F","04.concepts\u002F07.automate\u002F10.workflow",{"title":392,"path":393,"stem":394,"type":285,"device":6},"Phase","\u002Fconcepts\u002Fautomate\u002Fphase\u002F","04.concepts\u002F07.automate\u002F20.phase",{"title":396,"path":397,"stem":398,"type":285,"device":6},"Step","\u002Fconcepts\u002Fautomate\u002Fstep\u002F","04.concepts\u002F07.automate\u002F30.step",{"title":400,"path":401,"stem":402,"type":285,"device":6},"Runs","\u002Fconcepts\u002Fautomate\u002Fruns\u002F","04.concepts\u002F07.automate\u002F40.runs",{"title":404,"path":405,"stem":406,"type":285,"device":6},"Input","\u002Fconcepts\u002Fautomate\u002Finput\u002F","04.concepts\u002F07.automate\u002F50.input",{"title":408,"path":409,"stem":410,"type":285,"device":6},"Artifacts","\u002Fconcepts\u002Fautomate\u002Fartifacts\u002F","04.concepts\u002F07.automate\u002F60.artifacts",{"title":412,"path":413,"stem":414,"type":285,"device":6},"Logs","\u002Fconcepts\u002Fautomate\u002Flogs\u002F","04.concepts\u002F07.automate\u002F70.logs",{"title":416,"path":417,"stem":418,"type":285,"device":6},"Human in the Loop","\u002Fconcepts\u002Fautomate\u002Fhuman-in-the-loop\u002F","04.concepts\u002F07.automate\u002F80.human-in-the-loop",{"title":380,"path":420,"stem":421,"type":285,"device":6},"\u002Fconcepts\u002Fautomate\u002Ferror-handling\u002F","04.concepts\u002F07.automate\u002F90.error-handling",{"title":164,"type":6,"device":6,"path":423,"stem":424,"children":425,"page":41},"\u002Fconcepts\u002Fobserve\u002F","04.concepts\u002F08.observe",[426,429,433,437,441],{"title":194,"path":427,"stem":428,"type":14,"device":6},"\u002Fconcepts\u002Fobserve\u002Foverview\u002F","04.concepts\u002F08.observe\u002F10.overview",{"title":430,"path":431,"stem":432,"type":285,"device":6},"Object Storage","\u002Fconcepts\u002Fobserve\u002Fstorage\u002F","04.concepts\u002F08.observe\u002F10.storage",{"title":434,"path":435,"stem":436,"type":285,"device":6},"Secrets","\u002Fconcepts\u002Fobserve\u002Fsecrets\u002F","04.concepts\u002F08.observe\u002F20.secrets",{"title":438,"path":439,"stem":440,"type":285,"device":6},"Data sources","\u002Fconcepts\u002Fobserve\u002Fdata-sources\u002F","04.concepts\u002F08.observe\u002F30.data-sources",{"title":442,"path":443,"stem":444,"type":285,"device":6},"Data lineage","\u002Fconcepts\u002Fobserve\u002Fdata-lineage\u002F","04.concepts\u002F08.observe\u002F40.data-lineage",{"title":446,"type":6,"device":6,"path":447,"stem":448,"children":449,"page":41},"Devices","\u002Fdevices\u002F","05.devices",[450,453,501,514,530,567],{"title":194,"path":451,"stem":452,"type":14,"device":6},"\u002Fdevices\u002Foverview\u002F","05.devices\u002F00.overview",{"title":454,"path":455,"page":41,"children":456},"Heater-shakers","\u002Fdevices\u002Fheater-shakers\u002F",[457,478,488],{"title":458,"path":459,"stem":460,"type":200,"device":461},"QInstruments BioShake","\u002Fdevices\u002Fqinstruments-bioshake\u002F","05.devices\u002F10.qinstruments-bioshake",{"slug":462,"vendor":463,"category":464,"connector":462,"package":465,"models":466,"communication":473,"vendor_software":6,"os":474},"qinstruments-bioshake","QInstruments","Plate Shakers & Temperature Control","unitelabs-qinstruments-bioshake",[467,468,469,470,471,472],"BioShake 3000 \u002F 3000 elm \u002F 3000 elm DWP","BioShake 3000-T \u002F 3000-T elm","BioShake 5000 elm","BioShake D30 \u002F D30 elm \u002F D30-T \u002F D30-T elm","BioShake Q1 \u002F Q1 (1.2 mm) \u002F Q1 (3.0 mm) \u002F Q2","HeatPlate","serial (RS-232 over USB)",[475,476,477],"windows","linux","macos",{"title":479,"path":480,"stem":481,"type":200,"device":482},"QInstruments ColdPlate","\u002Fdevices\u002Fqinstruments-coldplate\u002F","05.devices\u002F20.qinstruments-coldplate",{"slug":483,"vendor":463,"category":464,"connector":462,"package":465,"models":484,"communication":473,"vendor_software":6,"os":487},"qinstruments-coldplate",[485,486],"ColdPlate","ColdPlate slim",[475,476,477],{"title":489,"path":490,"stem":491,"type":200,"device":492},"Inheco Thermoshake","\u002Fdevices\u002Finheco-thermoshake\u002F","05.devices\u002F30.inheco-thermoshake",{"slug":493,"vendor":494,"category":464,"connector":495,"models":496},"inheco-thermoshake","Inheco","inheco-tec-controller",[497,498,499,500],"Thermoshake AC","Thermoshake AC LC","Thermoshake Classic","Thermoshake RM",{"title":502,"path":503,"page":41,"children":504},"Incubation","\u002Fdevices\u002Fincubation\u002F",[505],{"title":506,"path":507,"stem":508,"type":200,"device":509},"Inheco SCILA","\u002Fdevices\u002Finheco-scila\u002F","05.devices\u002F40.inheco-scila",{"slug":510,"vendor":494,"category":502,"connector":510,"models":511},"inheco-scila",[512,513],"SCILA","SCILA MIX 2-gas mixing device",{"title":515,"path":516,"page":41,"children":517},"Thermal cyclers","\u002Fdevices\u002Fthermal-cyclers\u002F",[518],{"title":519,"path":520,"stem":521,"type":200,"device":522},"Inheco ODTC","\u002Fdevices\u002Finheco-odtc\u002F","05.devices\u002F50.inheco-odtc",{"slug":523,"vendor":494,"category":524,"connector":523,"models":525},"inheco-odtc","Thermal Cycler",[526,527,528,529],"ODTC 96","ODTC 96XL","ODTC 384","ODTC 384XL",{"title":531,"path":532,"page":41,"children":533},"Readers","\u002Fdevices\u002Freaders\u002F",[534,543,552],{"title":535,"path":536,"stem":537,"type":200,"device":538},"Agilent Biotek Gen5","\u002Fdevices\u002Fbiotek-gen5\u002F","05.devices\u002F60.biotek-gen5",{"slug":539,"vendor":540,"category":541,"connector":542},"biotek-gen5","Agilent","Readers & Imagers","gen5",{"title":544,"path":545,"stem":546,"type":200,"device":547},"Biotek Synergy H1","\u002Fdevices\u002Fbiotek-synergy-h1\u002F","05.devices\u002F70.biotek-synergy-h1",{"slug":548,"vendor":540,"category":541,"connector":549,"models":550},"biotek-synergy-h1","agilent-synergy-h1",[551],"BioTek Synergy H1",{"title":553,"path":554,"stem":555,"type":200,"device":556},"Tecan Infinite 200","\u002Fdevices\u002Ftecan-infinite-200\u002F","05.devices\u002F75.tecan-infinite-200",{"slug":557,"vendor":558,"category":541,"connector":557,"package":559,"models":560,"communication":564,"vendor_software":565,"os":566},"tecan-infinite-200","Tecan","unitelabs-tecan-infinite-200",[561,562,563],"Infinite F200","Infinite M200","Infinite M200 Pro","USB","i-control on Windows only, for its USB driver",[475,476,477],{"title":568,"path":569,"page":41,"children":570},"Tilt & turn","\u002Fdevices\u002Ftilt-and-turn\u002F",[571,581],{"title":572,"path":573,"stem":574,"type":200,"device":575},"QInstruments TiltStation","\u002Fdevices\u002Fqinstruments-tiltstation\u002F","05.devices\u002F80.qinstruments-tiltstation",{"slug":576,"vendor":463,"category":577,"connector":462,"package":465,"models":578,"communication":473,"vendor_software":6,"os":580},"qinstruments-tiltstation","Plate Tilting",[579],"TiltStation",[475,476,477],{"title":582,"path":583,"stem":584,"type":200,"device":585},"QInstruments TurnStation","\u002Fdevices\u002Fqinstruments-turnstation\u002F","05.devices\u002F90.qinstruments-turnstation",{"slug":586,"vendor":463,"category":587,"connector":462,"package":465,"models":588,"communication":473,"vendor_software":6,"os":590},"qinstruments-turnstation","Plate Rotating",[589],"TurnStation",[475,476,477],{"title":592,"type":6,"device":6,"path":593,"stem":594,"children":595,"page":41},"Liquid Handling and Robots","\u002Fliquid-handling-and-robots\u002F","06.liquid-handling-and-robots",[596,599,611,635,638,679,704,721,738],{"title":194,"path":597,"stem":598,"type":14,"device":6},"\u002Fliquid-handling-and-robots\u002Foverview\u002F","06.liquid-handling-and-robots\u002F00.overview",{"title":353,"type":6,"device":6,"path":600,"stem":601,"children":602,"page":41},"\u002Fliquid-handling-and-robots\u002Fdeck\u002F","06.liquid-handling-and-robots\u002F10.deck",[603,607],{"title":604,"path":605,"stem":606,"type":24,"device":6},"Building a Deck","\u002Fliquid-handling-and-robots\u002Fdeck\u002Fbuilding-a-deck\u002F","06.liquid-handling-and-robots\u002F10.deck\u002F10.building-a-deck",{"title":608,"path":609,"stem":610,"type":24,"device":6},"Save\u002FLoad a Deck","\u002Fliquid-handling-and-robots\u002Fdeck\u002Fsave-load-deck\u002F","06.liquid-handling-and-robots\u002F10.deck\u002F20.save-load-deck",{"title":612,"type":6,"device":6,"path":613,"stem":614,"children":615,"page":41},"Pipetting","\u002Fliquid-handling-and-robots\u002Fpipetting\u002F","06.liquid-handling-and-robots\u002F20.pipetting",[616,620,624,628,631],{"title":617,"path":618,"stem":619,"type":24,"device":6},"Basic Pipetting","\u002Fliquid-handling-and-robots\u002Fpipetting\u002Fbasic-pipetting\u002F","06.liquid-handling-and-robots\u002F20.pipetting\u002F10.basic-pipetting",{"title":621,"path":622,"stem":623,"type":24,"device":6},"Advanced Pipetting","\u002Fliquid-handling-and-robots\u002Fpipetting\u002Fadvanced-pipetting\u002F","06.liquid-handling-and-robots\u002F20.pipetting\u002F20.advanced-pipetting",{"title":625,"path":626,"stem":627,"type":24,"device":6},"Tip Handling","\u002Fliquid-handling-and-robots\u002Fpipetting\u002Ftip-handling\u002F","06.liquid-handling-and-robots\u002F20.pipetting\u002F30.tip-handling",{"title":364,"path":629,"stem":630,"type":24,"device":6},"\u002Fliquid-handling-and-robots\u002Fpipetting\u002Fliquid-classes\u002F","06.liquid-handling-and-robots\u002F20.pipetting\u002F40.liquid-classes",{"title":632,"path":633,"stem":634,"type":24,"device":6},"Labware Transport","\u002Fliquid-handling-and-robots\u002Fpipetting\u002Flabware-transport\u002F","06.liquid-handling-and-robots\u002F20.pipetting\u002F50.labware-transport",{"title":376,"path":636,"stem":637,"type":24,"device":6},"\u002Fliquid-handling-and-robots\u002Fsimulation\u002F","06.liquid-handling-and-robots\u002F30.simulation",{"title":639,"type":6,"device":6,"path":640,"stem":641,"children":642,"page":41},"Hamilton STAR","\u002Fliquid-handling-and-robots\u002Fhamilton-star\u002F","06.liquid-handling-and-robots\u002F41.hamilton-star",[643,647,651,655,659,663,667,671,675],{"title":644,"path":645,"stem":646,"type":24,"device":6},"Positioning & Movement","\u002Fliquid-handling-and-robots\u002Fhamilton-star\u002Fpositioning\u002F","06.liquid-handling-and-robots\u002F41.hamilton-star\u002F10.positioning",{"title":648,"path":649,"stem":650,"type":24,"device":6},"Gripper Module","\u002Fliquid-handling-and-robots\u002Fhamilton-star\u002Fcore-gripper\u002F","06.liquid-handling-and-robots\u002F41.hamilton-star\u002F20.core-gripper",{"title":652,"path":653,"stem":654,"type":24,"device":6},"iSWAP Module","\u002Fliquid-handling-and-robots\u002Fhamilton-star\u002Fiswap\u002F","06.liquid-handling-and-robots\u002F41.hamilton-star\u002F30.iswap",{"title":656,"path":657,"stem":658,"type":24,"device":6},"Using TADM","\u002Fliquid-handling-and-robots\u002Fhamilton-star\u002Ftadm\u002F","06.liquid-handling-and-robots\u002F41.hamilton-star\u002F40.tadm",{"title":660,"path":661,"stem":662,"type":24,"device":6},"Autoload Module","\u002Fliquid-handling-and-robots\u002Fhamilton-star\u002Fautoload\u002F","06.liquid-handling-and-robots\u002F41.hamilton-star\u002F50.autoload",{"title":664,"path":665,"stem":666,"type":24,"device":6},"Waste Block","\u002Fliquid-handling-and-robots\u002Fhamilton-star\u002Fwaste-block\u002F","06.liquid-handling-and-robots\u002F41.hamilton-star\u002F60.waste-block",{"title":668,"path":669,"stem":670,"type":24,"device":6},"Complex Mixing","\u002Fliquid-handling-and-robots\u002Fhamilton-star\u002Fcomplex-mixing\u002F","06.liquid-handling-and-robots\u002F41.hamilton-star\u002F66.complex-mixing",{"title":672,"path":673,"stem":674,"type":24,"device":6},"Teaching Gripper Paddle Positions","\u002Fliquid-handling-and-robots\u002Fhamilton-star\u002Fgripper-positions\u002F","06.liquid-handling-and-robots\u002F41.hamilton-star\u002F70.gripper-positions",{"title":676,"path":677,"stem":678,"type":24,"device":6},"Training a Custom Deck Position With the iSWAP","\u002Fliquid-handling-and-robots\u002Fhamilton-star\u002Fcustom-deck-position\u002F","06.liquid-handling-and-robots\u002F41.hamilton-star\u002F75.custom-deck-position",{"title":680,"type":6,"device":6,"path":681,"stem":682,"children":683,"page":41},"Hamilton Vantage","\u002Fliquid-handling-and-robots\u002Fhamilton-vantage\u002F","06.liquid-handling-and-robots\u002F42.hamilton-vantage",[684,688,692,696,700],{"title":685,"path":686,"stem":687,"type":24,"device":6},"Waste Configuration","\u002Fliquid-handling-and-robots\u002Fhamilton-vantage\u002Fwaste-configuration\u002F","06.liquid-handling-and-robots\u002F42.hamilton-vantage\u002F05.waste-configuration",{"title":689,"path":690,"stem":691,"type":24,"device":6},"Covers and Lights","\u002Fliquid-handling-and-robots\u002Fhamilton-vantage\u002Fcovers-and-lights\u002F","06.liquid-handling-and-robots\u002F42.hamilton-vantage\u002F10.covers-and-lights",{"title":693,"path":694,"stem":695,"type":24,"device":6},"IDL Module","\u002Fliquid-handling-and-robots\u002Fhamilton-vantage\u002Fidl\u002F","06.liquid-handling-and-robots\u002F42.hamilton-vantage\u002F20.idl",{"title":697,"path":698,"stem":699,"type":24,"device":6},"IPG Module","\u002Fliquid-handling-and-robots\u002Fhamilton-vantage\u002Fipg\u002F","06.liquid-handling-and-robots\u002F42.hamilton-vantage\u002F30.ipg",{"title":701,"path":702,"stem":703,"type":24,"device":6},"XL Pipettes","\u002Fliquid-handling-and-robots\u002Fhamilton-vantage\u002Fxl-channels\u002F","06.liquid-handling-and-robots\u002F42.hamilton-vantage\u002F40.xl-channels",{"title":705,"type":6,"device":6,"path":706,"stem":707,"children":708,"page":41},"Agilent Bravo","\u002Fliquid-handling-and-robots\u002Fagilent-bravo\u002F","06.liquid-handling-and-robots\u002F43.agilent-bravo",[709,712,715,718],{"title":625,"path":710,"stem":711,"type":24,"device":6},"\u002Fliquid-handling-and-robots\u002Fagilent-bravo\u002Ftip-handling\u002F","06.liquid-handling-and-robots\u002F43.agilent-bravo\u002F10.tip-handling",{"title":617,"path":713,"stem":714,"type":24,"device":6},"\u002Fliquid-handling-and-robots\u002Fagilent-bravo\u002Fbasic-pipetting\u002F","06.liquid-handling-and-robots\u002F43.agilent-bravo\u002F20.basic-pipetting",{"title":364,"path":716,"stem":717,"type":24,"device":6},"\u002Fliquid-handling-and-robots\u002Fagilent-bravo\u002Fliquid-classes\u002F","06.liquid-handling-and-robots\u002F43.agilent-bravo\u002F25.liquid-classes",{"title":648,"path":719,"stem":720,"type":24,"device":6},"\u002Fliquid-handling-and-robots\u002Fagilent-bravo\u002Fusing-the-gripper\u002F","06.liquid-handling-and-robots\u002F43.agilent-bravo\u002F30.using-the-gripper",{"title":722,"type":6,"device":6,"path":723,"stem":724,"children":725,"page":41},"Tecan FluentControl","\u002Fliquid-handling-and-robots\u002Ftecan-fluentcontrol\u002F","06.liquid-handling-and-robots\u002F44.tecan-fluentcontrol",[726,730,734],{"title":727,"path":728,"stem":729,"type":24,"device":6},"Connect & Run a Method","\u002Fliquid-handling-and-robots\u002Ftecan-fluentcontrol\u002Fconnect-and-run\u002F","06.liquid-handling-and-robots\u002F44.tecan-fluentcontrol\u002F10.connect-and-run",{"title":731,"path":732,"stem":733,"type":24,"device":6},"Sending XML Commands","\u002Fliquid-handling-and-robots\u002Ftecan-fluentcontrol\u002Fsending-xml-commands\u002F","06.liquid-handling-and-robots\u002F44.tecan-fluentcontrol\u002F20.sending-xml-commands",{"title":735,"path":736,"stem":737,"type":24,"device":6},"Full Workflow Example","\u002Fliquid-handling-and-robots\u002Ftecan-fluentcontrol\u002Ffull-workflow-example\u002F","06.liquid-handling-and-robots\u002F44.tecan-fluentcontrol\u002F30.full-workflow-example",{"title":739,"type":6,"device":6,"path":740,"stem":741,"children":742,"page":41},"Tecan Freedom EVO","\u002Fliquid-handling-and-robots\u002Ftecan-freedom-evo\u002F","06.liquid-handling-and-robots\u002F45.tecan-freedom-evo",[743,747,750,753,757],{"title":744,"path":745,"stem":746,"type":24,"device":6},"Deck & Carriers","\u002Fliquid-handling-and-robots\u002Ftecan-freedom-evo\u002Fdeck-and-carriers\u002F","06.liquid-handling-and-robots\u002F45.tecan-freedom-evo\u002F10.deck-and-carriers",{"title":625,"path":748,"stem":749,"type":24,"device":6},"\u002Fliquid-handling-and-robots\u002Ftecan-freedom-evo\u002Ftip-handling\u002F","06.liquid-handling-and-robots\u002F45.tecan-freedom-evo\u002F20.tip-handling",{"title":617,"path":751,"stem":752,"type":24,"device":6},"\u002Fliquid-handling-and-robots\u002Ftecan-freedom-evo\u002Fbasic-pipetting\u002F","06.liquid-handling-and-robots\u002F45.tecan-freedom-evo\u002F30.basic-pipetting",{"title":754,"path":755,"stem":756,"type":24,"device":6},"Using the Gripper (RoMa)","\u002Fliquid-handling-and-robots\u002Ftecan-freedom-evo\u002Fusing-the-gripper\u002F","06.liquid-handling-and-robots\u002F45.tecan-freedom-evo\u002F40.using-the-gripper",{"title":364,"path":758,"stem":759,"type":24,"device":6},"\u002Fliquid-handling-and-robots\u002Ftecan-freedom-evo\u002Fliquid-classes\u002F","06.liquid-handling-and-robots\u002F45.tecan-freedom-evo\u002F50.liquid-classes",{"title":245,"type":6,"device":6,"path":761,"stem":762,"children":763,"page":41},"\u002Flabware\u002F","07.labware",[764,767,771,775,779,783,787],{"title":194,"path":765,"stem":766,"type":14,"device":6},"\u002Flabware\u002Foverview\u002F","07.labware\u002F00.overview",{"title":768,"path":769,"stem":770,"type":200,"device":6},"Standard Labware","\u002Flabware\u002Fstandard-labware\u002F","07.labware\u002F10.standard-labware",{"title":772,"path":773,"stem":774,"type":200,"device":6},"Plates","\u002Flabware\u002Fplates\u002F","07.labware\u002F20.plates",{"title":776,"path":777,"stem":778,"type":200,"device":6},"Tips and Tip Racks","\u002Flabware\u002Ftips-and-racks\u002F","07.labware\u002F30.tips-and-racks",{"title":780,"path":781,"stem":782,"type":200,"device":6},"Tubes and Tube Racks","\u002Flabware\u002Ftubes-and-tube-racks\u002F","07.labware\u002F40.tubes-and-tube-racks",{"title":784,"path":785,"stem":786,"type":200,"device":6},"Troughs","\u002Flabware\u002Ftroughs\u002F","07.labware\u002F50.troughs",{"title":788,"path":789,"stem":790,"type":200,"device":6},"Carriers and Adapters","\u002Flabware\u002Fcarriers-and-adapters\u002F","07.labware\u002F60.carriers-and-adapters",{"title":792,"type":6,"device":6,"path":793,"stem":794,"children":795},"Connector Development (CDK)","\u002Fconnector-development\u002F","20.connector-development",[796,798,822,855,863,903],{"title":194,"path":793,"stem":797,"type":14,"device":6},"20.connector-development\u002Findex",{"title":799,"path":800,"stem":801,"children":802,"page":41},"Getting Started","\u002Fconnector-development\u002Fgetting-started\u002F","20.connector-development\u002F10.getting-started",[803,806,810,814,818],{"title":194,"path":804,"stem":805,"type":285,"device":6},"\u002Fconnector-development\u002Fgetting-started\u002Foverview\u002F","20.connector-development\u002F10.getting-started\u002F10.overview",{"title":807,"path":808,"stem":809,"type":24,"device":6},"What's new","\u002Fconnector-development\u002Fgetting-started\u002Fwhats-new\u002F","20.connector-development\u002F10.getting-started\u002F20.whats-new",{"title":811,"path":812,"stem":813,"type":24,"device":6},"Installation","\u002Fconnector-development\u002Fgetting-started\u002Finstallation\u002F","20.connector-development\u002F10.getting-started\u002F30.installation",{"title":815,"path":816,"stem":817,"type":24,"device":6},"Python Environment and Project Management","\u002Fconnector-development\u002Fgetting-started\u002Fpython-environments\u002F","20.connector-development\u002F10.getting-started\u002F35.python-environments",{"title":819,"path":820,"stem":821,"type":24,"device":6},"Contributing","\u002Fconnector-development\u002Fgetting-started\u002Fcontributing\u002F","20.connector-development\u002F10.getting-started\u002F40.contributing",{"title":823,"path":824,"stem":825,"children":826,"page":41},"Tutorial","\u002Fconnector-development\u002Ftutorial\u002F","20.connector-development\u002F20.tutorial",[827,831,835,839,843,847,851],{"title":828,"path":829,"stem":830,"type":46,"device":6},"Walkthrough","\u002Fconnector-development\u002Ftutorial\u002Fwalkthrough\u002F","20.connector-development\u002F20.tutorial\u002F00.walkthrough",{"title":832,"path":833,"stem":834,"type":46,"device":6},"SiLA Endpoints","\u002Fconnector-development\u002Ftutorial\u002Fsila-endpoints\u002F","20.connector-development\u002F20.tutorial\u002F10.sila-endpoints",{"title":836,"path":837,"stem":838,"type":46,"device":6},"Data Endpoints","\u002Fconnector-development\u002Ftutorial\u002Fdata-endpoints\u002F","20.connector-development\u002F20.tutorial\u002F20.data-endpoints",{"title":840,"path":841,"stem":842,"type":46,"device":6},"Controls","\u002Fconnector-development\u002Ftutorial\u002Fcontrols\u002F","20.connector-development\u002F20.tutorial\u002F30.controls",{"title":844,"path":845,"stem":846,"type":46,"device":6},"SiLA Data Types","\u002Fconnector-development\u002Ftutorial\u002Fdata-types\u002F","20.connector-development\u002F20.tutorial\u002F40.data-types",{"title":848,"path":849,"stem":850,"type":46,"device":6},"Feature","\u002Fconnector-development\u002Ftutorial\u002Fconnector-structure\u002F","20.connector-development\u002F20.tutorial\u002F70.connector-structure",{"title":852,"path":853,"stem":854,"type":46,"device":6},"Hardware Communication","\u002Fconnector-development\u002Ftutorial\u002Fhardware-communication\u002F","20.connector-development\u002F20.tutorial\u002F90.hardware-communication",{"title":272,"type":6,"device":6,"path":856,"stem":857,"children":858,"page":41},"\u002Fconnector-development\u002Fconcepts\u002F","20.connector-development\u002F30.concepts",[859],{"title":860,"path":861,"stem":862,"type":285,"device":6},"SiLA","\u002Fconnector-development\u002Fconcepts\u002Fsila\u002F","20.connector-development\u002F30.concepts\u002Fsila",{"title":864,"path":865,"stem":866,"children":867,"page":41},"Guides","\u002Fconnector-development\u002Fguides\u002F","20.connector-development\u002F40.guides",[868,872,876,880,884,888,892,895,899],{"title":869,"path":870,"stem":871,"type":24,"device":6},"Configuration","\u002Fconnector-development\u002Fguides\u002Fconfiguration\u002F","20.connector-development\u002F40.guides\u002F20.configuration",{"title":873,"path":874,"stem":875,"type":24,"device":6},"Logging","\u002Fconnector-development\u002Fguides\u002Flogging\u002F","20.connector-development\u002F40.guides\u002F21.logging",{"title":877,"path":878,"stem":879,"type":24,"device":6},"Deployment","\u002Fconnector-development\u002Fguides\u002Fdeployment\u002F","20.connector-development\u002F40.guides\u002F30.deployment",{"title":881,"path":882,"stem":883,"type":24,"device":6},"Security","\u002Fconnector-development\u002Fguides\u002Fsecurity\u002F","20.connector-development\u002F40.guides\u002F40.security",{"title":885,"path":886,"stem":887,"type":24,"device":6},"Subscriptions","\u002Fconnector-development\u002Fguides\u002Fsubscriptions\u002F","20.connector-development\u002F40.guides\u002F45.subscriptions",{"title":889,"path":890,"stem":891,"type":24,"device":6},"Execution Modes","\u002Fconnector-development\u002Fguides\u002Fexecution-modes\u002F","20.connector-development\u002F40.guides\u002F46.execution-modes",{"title":380,"path":893,"stem":894,"type":24,"device":6},"\u002Fconnector-development\u002Fguides\u002Ferror-handling\u002F","20.connector-development\u002F40.guides\u002F50.error-handling",{"title":896,"path":897,"stem":898,"type":24,"device":6},"Serial Troubleshooting","\u002Fconnector-development\u002Fguides\u002Fserial-troubleshooting\u002F","20.connector-development\u002F40.guides\u002F70.serial-troubleshooting",{"title":900,"path":901,"stem":902,"type":24,"device":6},"Testing","\u002Fconnector-development\u002Fguides\u002Ftesting\u002F","20.connector-development\u002F40.guides\u002F80.testing",{"title":904,"path":905,"stem":906,"children":907,"type":6,"device":6},"References","\u002Fconnector-development\u002Freference\u002F","20.connector-development\u002F50.reference\u002Findex",[908],{"title":904,"path":905,"stem":906,"type":200,"device":6},{"id":910,"title":652,"body":911,"description":2264,"device":6,"extension":2265,"links":6,"meta":2266,"navigation":1077,"path":2267,"seo":2268,"stem":654,"type":24,"__hash__":2269},"docs\u002F06.liquid-handling-and-robots\u002F41.hamilton-star\u002F30.iswap.md",{"type":912,"value":913,"toc":2247},"minimark",[914,918,921,927,954,959,962,967,975,983,1008,1018,1055,1189,1261,1335,1340,1346,1405,1462,1472,1476,1479,1486,1554,1557,1576,1587,1591,1594,1598,1601,1700,1704,1707,1794,1798,1802,1816,1894,1901,1961,1975,1978,2013,2017,2026,2111,2120,2124,2134,2185,2188,2217,2221,2224,2236,2240,2243],[915,916,917],"p",{},"In addition to the CO-RE gripper, the iSWAP module provides advanced plate handling capabilities for the Hamilton Microlab STAR. This module enables precise manipulation of labware across the deck, including tasks like plate covering, transportation to readers, and complex positioning scenarios that go beyond standard pipetting operations.",[915,919,920],{},"The iSWAP module offers a rotatable arm that can pick up and place labware at any position on the deck, providing greater flexibility for complex workflows. In addition, it has a better reach beyond the standard deck envelope, allowing for better access to off-deck integrations such as readers, incubators, and other laboratory equipment.",[915,922,923],{},[924,925,926],"strong",{},"Prerequisites",[928,929,930,934,937,940,948],"ul",{},[931,932,933],"li",{},"A switched on Hamilton STAR device",[931,935,936],{},"A plate carrier and a plate",[931,938,939],{},"A running Hamilton STAR connector",[931,941,942,943,947],{},"Basic understanding of the liquid handler class (See the ",[944,945,946],"a",{"href":346},"liquid handler tutorial",")",[931,949,950,951,947],{},"Basic understanding of how labware is used (See the ",[944,952,953],{"href":769},"using standard labware tutorial",[955,956,958],"h2",{"id":957},"key-iswap-concepts","Key iSWAP Concepts",[915,960,961],{},"Before getting started, let's review a few key concepts when working with the iSWAP module.",[963,964,966],"h3",{"id":965},"positional-reference-frame","Positional Reference Frame",[915,968,969,970,974],{},"Like the CO-RE gripper, the iSWAP's location is defined as the ",[971,972,973],"em",{},"center point"," between its two gripper fingers. This center point serves as the reference for all its positioning operations, and is crucial to account for when using the module. However, this can easily cause confusion when working with other deck resources, since the default reference point for other labware is typically defined as its origin (front-left corner).",[915,976,977,978,982],{},"The UniteLabs labware library provides utilities to help with coordinate transformations and positioning calculations when working with the iSWAP module, in particular for converting between these two coordinate base frames (iSWAP center point vs. labware front-left origin). The key utility is the resource ",[979,980,981],"code",{},".center"," property.",[915,984,985,986,988,989,992,993,1000,1001,1003,1004,1007],{},"The ",[979,987,981],{}," property returns a ",[979,990,991],{},"Vector"," instance representing the center point of the resource ",[971,994,995,996,999],{},"relative to ",[924,997,998],{},"that resource's"," own origin"," (the front-left corner). This ",[979,1002,991],{}," will have only x- and y-components. It does ",[924,1005,1006],{},"not"," represent the absolute location of the labware's center on the deck, therefore you must sum the plate's location and center to get the absolute position of the center point, as illustrated below.",[915,1009,1010,1011,1014,1015,1017],{},"Additionally, the ",[979,1012,1013],{},".location"," property of a resource gives its absolute position on the deck, and when combined with ",[979,1016,981],{},", you can calculate the absolute center position of any labware.",[1019,1020,1023],"callout",{"color":1021,"icon":1022},"info","i-heroicons-information-circle",[915,1024,1025,1028,1029,1032,1033,1036,1037,1036,1040,1036,1043,1046,1047,1050,1051,1054],{},[924,1026,1027],{},"Note",": This utility is only necessary when using iSWAP methods that expect absolute coordinates. The only one that does so is ",[979,1030,1031],{},"move_to",", while the rest (",[979,1034,1035],{},"pick_up",", ",[979,1038,1039],{},"pick_up_from",[979,1041,1042],{},"put_down",[979,1044,1045],{},"transfer",", and ",[979,1048,1049],{},"transfer_from",") all perform the center calculation internally, inferring the center point from the labware arguments passed to those methods.\nThis distinction is particularly important to remember when training new deck locations with the iSWAP, as described in the guide on ",[944,1052,1053],{"href":677},"training a custom deck position",".",[1056,1057,1062],"pre",{"className":1058,"code":1059,"language":1060,"meta":1061,"style":1061},"language-ascii shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-default","    Deck View - Illustrating the Reference Frames\n\n               ┌──────────────────────────────────────────────────────────┐\n               │                                                          │\n               │         ┌─────────┐                                      │\n               │         └─────────┘                                      │\n               │              ● ← iswap.current_location                  │\n               │         ┌─────────┐                                      │\n               │         └─────────┘                                      │\n               │                                                          │\n               │    ┌─────────────────┐                                   │\n               │    │                 │                                   │\n               │    │        ● ← my_plate.location + my_plate.center      │\n               │    │                 │                                   │\n               │    ●─────────────────┘                                   │\n    y          │    ▲                                                     │\n    ↑          │    └─ my_plate.location                                  │\n    |          │                                                          │\n    └ - → x    └──────────────────────────────────────────────────────────┘\n ↙\nz\n","ascii","",[979,1063,1064,1072,1079,1085,1091,1097,1103,1109,1114,1119,1124,1130,1136,1142,1147,1153,1159,1165,1171,1177,1183],{"__ignoreMap":1061},[1065,1066,1069],"span",{"class":1067,"line":1068},"line",1,[1065,1070,1071],{},"    Deck View - Illustrating the Reference Frames\n",[1065,1073,1075],{"class":1067,"line":1074},2,[1065,1076,1078],{"emptyLinePlaceholder":1077},true,"\n",[1065,1080,1082],{"class":1067,"line":1081},3,[1065,1083,1084],{},"               ┌──────────────────────────────────────────────────────────┐\n",[1065,1086,1088],{"class":1067,"line":1087},4,[1065,1089,1090],{},"               │                                                          │\n",[1065,1092,1094],{"class":1067,"line":1093},5,[1065,1095,1096],{},"               │         ┌─────────┐                                      │\n",[1065,1098,1100],{"class":1067,"line":1099},6,[1065,1101,1102],{},"               │         └─────────┘                                      │\n",[1065,1104,1106],{"class":1067,"line":1105},7,[1065,1107,1108],{},"               │              ● ← iswap.current_location                  │\n",[1065,1110,1112],{"class":1067,"line":1111},8,[1065,1113,1096],{},[1065,1115,1117],{"class":1067,"line":1116},9,[1065,1118,1102],{},[1065,1120,1122],{"class":1067,"line":1121},10,[1065,1123,1090],{},[1065,1125,1127],{"class":1067,"line":1126},11,[1065,1128,1129],{},"               │    ┌─────────────────┐                                   │\n",[1065,1131,1133],{"class":1067,"line":1132},12,[1065,1134,1135],{},"               │    │                 │                                   │\n",[1065,1137,1139],{"class":1067,"line":1138},13,[1065,1140,1141],{},"               │    │        ● ← my_plate.location + my_plate.center      │\n",[1065,1143,1145],{"class":1067,"line":1144},14,[1065,1146,1135],{},[1065,1148,1150],{"class":1067,"line":1149},15,[1065,1151,1152],{},"               │    ●─────────────────┘                                   │\n",[1065,1154,1156],{"class":1067,"line":1155},16,[1065,1157,1158],{},"    y          │    ▲                                                     │\n",[1065,1160,1162],{"class":1067,"line":1161},17,[1065,1163,1164],{},"    ↑          │    └─ my_plate.location                                  │\n",[1065,1166,1168],{"class":1067,"line":1167},18,[1065,1169,1170],{},"    |          │                                                          │\n",[1065,1172,1174],{"class":1067,"line":1173},19,[1065,1175,1176],{},"    └ - → x    └──────────────────────────────────────────────────────────┘\n",[1065,1178,1180],{"class":1067,"line":1179},20,[1065,1181,1182],{}," ↙\n",[1065,1184,1186],{"class":1067,"line":1185},21,[1065,1187,1188],{},"z\n",[1056,1190,1192],{"className":1058,"code":1191,"language":1060,"meta":1061,"style":1061},"    Deck View - iSWAP Correctly Aligned to Plate Center\n\n               ┌──────────────────────────────────────────────────────────┐\n               │                                                          │\n               │        ┌─────────┐                                       │\n               │    ┌───└─────────┘───┐                                   │\n               │    │                 │                                   │\n               │    │        ● ←      │  iswap.current_location ==        │\n               │    │                 │    my_plate.location              |\n    y          │    ●───┌─────────┐───┘      + my_plate.center            │\n    ↑          │        └─────────┘                                       │\n    |          │                                                          │\n    └ - → x    └──────────────────────────────────────────────────────────┘\n ↙\nz\n",[979,1193,1194,1199,1203,1207,1211,1216,1221,1225,1230,1235,1240,1245,1249,1253,1257],{"__ignoreMap":1061},[1065,1195,1196],{"class":1067,"line":1068},[1065,1197,1198],{},"    Deck View - iSWAP Correctly Aligned to Plate Center\n",[1065,1200,1201],{"class":1067,"line":1074},[1065,1202,1078],{"emptyLinePlaceholder":1077},[1065,1204,1205],{"class":1067,"line":1081},[1065,1206,1084],{},[1065,1208,1209],{"class":1067,"line":1087},[1065,1210,1090],{},[1065,1212,1213],{"class":1067,"line":1093},[1065,1214,1215],{},"               │        ┌─────────┐                                       │\n",[1065,1217,1218],{"class":1067,"line":1099},[1065,1219,1220],{},"               │    ┌───└─────────┘───┐                                   │\n",[1065,1222,1223],{"class":1067,"line":1105},[1065,1224,1135],{},[1065,1226,1227],{"class":1067,"line":1111},[1065,1228,1229],{},"               │    │        ● ←      │  iswap.current_location ==        │\n",[1065,1231,1232],{"class":1067,"line":1116},[1065,1233,1234],{},"               │    │                 │    my_plate.location              |\n",[1065,1236,1237],{"class":1067,"line":1121},[1065,1238,1239],{},"    y          │    ●───┌─────────┐───┘      + my_plate.center            │\n",[1065,1241,1242],{"class":1067,"line":1126},[1065,1243,1244],{},"    ↑          │        └─────────┘                                       │\n",[1065,1246,1247],{"class":1067,"line":1132},[1065,1248,1170],{},[1065,1250,1251],{"class":1067,"line":1138},[1065,1252,1176],{},[1065,1254,1255],{"class":1067,"line":1144},[1065,1256,1182],{},[1065,1258,1259],{"class":1067,"line":1149},[1065,1260,1188],{},[1056,1262,1264],{"className":1058,"code":1263,"language":1060,"meta":1061,"style":1061},"    Deck View - iSWAP Incorrectly Aligned to Plate Origin\n\n               ┌──────────────────────────────────────────────────────────┐\n               │                                                          │\n               │         ┌─────────────────┐                              │\n               │         │                 │                              │\n               │    ┌─────────┐   ●        │                              │\n               │    └─────────┘            │                              │\n               │       → ●─────────────────┘  iswap.current_location ==   |\n    y          │    ┌─────────┐                 my_plate.location         │\n    ↑          |    └─────────┘                                           │\n    |          │                                                          │\n    └ - → x    └──────────────────────────────────────────────────────────┘\n  ↙\nz\n",[979,1265,1266,1271,1275,1279,1283,1288,1293,1298,1303,1308,1313,1318,1322,1326,1331],{"__ignoreMap":1061},[1065,1267,1268],{"class":1067,"line":1068},[1065,1269,1270],{},"    Deck View - iSWAP Incorrectly Aligned to Plate Origin\n",[1065,1272,1273],{"class":1067,"line":1074},[1065,1274,1078],{"emptyLinePlaceholder":1077},[1065,1276,1277],{"class":1067,"line":1081},[1065,1278,1084],{},[1065,1280,1281],{"class":1067,"line":1087},[1065,1282,1090],{},[1065,1284,1285],{"class":1067,"line":1093},[1065,1286,1287],{},"               │         ┌─────────────────┐                              │\n",[1065,1289,1290],{"class":1067,"line":1099},[1065,1291,1292],{},"               │         │                 │                              │\n",[1065,1294,1295],{"class":1067,"line":1105},[1065,1296,1297],{},"               │    ┌─────────┐   ●        │                              │\n",[1065,1299,1300],{"class":1067,"line":1111},[1065,1301,1302],{},"               │    └─────────┘            │                              │\n",[1065,1304,1305],{"class":1067,"line":1116},[1065,1306,1307],{},"               │       → ●─────────────────┘  iswap.current_location ==   |\n",[1065,1309,1310],{"class":1067,"line":1121},[1065,1311,1312],{},"    y          │    ┌─────────┐                 my_plate.location         │\n",[1065,1314,1315],{"class":1067,"line":1126},[1065,1316,1317],{},"    ↑          |    └─────────┘                                           │\n",[1065,1319,1320],{"class":1067,"line":1132},[1065,1321,1170],{},[1065,1323,1324],{"class":1067,"line":1138},[1065,1325,1176],{},[1065,1327,1328],{"class":1067,"line":1144},[1065,1329,1330],{},"  ↙\n",[1065,1332,1333],{"class":1067,"line":1149},[1065,1334,1188],{},[915,1336,985,1337,1339],{},[979,1338,981],{}," utility helps simplify coordinate transformations when working with the iSWAP module, making it easier to specify absolute coordinates that account for the different reference frames between the iSWAP and other deck resources.",[915,1341,1342,1343,1345],{},"With a plate on the deck, one would use these properties with the ",[979,1344,1031],{}," method like so:",[1056,1347,1351],{"className":1348,"code":1349,"language":1350,"meta":1061,"style":1061},"language-python shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-default","# Move to a plate location\n# Calculate absolute center position\nplate_center_absolute = my_plate.location + my_plate.center\n# Use with iSWAP move_to method\nawait hamilton.iswap.move_to(location=plate_center_absolute)\n","python",[979,1352,1353,1359,1364,1383,1388],{"__ignoreMap":1061},[1065,1354,1355],{"class":1067,"line":1068},[1065,1356,1358],{"class":1357},"sIsDC","# Move to a plate location\n",[1065,1360,1361],{"class":1067,"line":1074},[1065,1362,1363],{"class":1357},"# Calculate absolute center position\n",[1065,1365,1366,1370,1374,1377,1380],{"class":1067,"line":1081},[1065,1367,1369],{"class":1368},"sc-9e","plate_center_absolute ",[1065,1371,1373],{"class":1372},"sxkbv","=",[1065,1375,1376],{"class":1368}," my_plate.location ",[1065,1378,1379],{"class":1372},"+",[1065,1381,1382],{"class":1368}," my_plate.center\n",[1065,1384,1385],{"class":1067,"line":1087},[1065,1386,1387],{"class":1357},"# Use with iSWAP move_to method\n",[1065,1389,1390,1393,1396,1400,1402],{"class":1067,"line":1093},[1065,1391,1392],{"class":1372},"await",[1065,1394,1395],{"class":1368}," hamilton.iswap.move_to(",[1065,1397,1399],{"class":1398},"sNqAu","location",[1065,1401,1373],{"class":1372},[1065,1403,1404],{"class":1368},"plate_center_absolute)\n",[1056,1406,1408],{"className":1348,"code":1407,"language":1350,"meta":1061,"style":1061},"# Move to a carrier site location\n# Calculate absolute center position\ncarrier_center_absolute = my_carrier[0].location + my_carrier[0].center\n# Use with iSWAP move_to method\nawait hamilton.iswap.move_to(location=carrier_center_absolute)\n",[979,1409,1410,1415,1419,1445,1449],{"__ignoreMap":1061},[1065,1411,1412],{"class":1067,"line":1068},[1065,1413,1414],{"class":1357},"# Move to a carrier site location\n",[1065,1416,1417],{"class":1067,"line":1074},[1065,1418,1363],{"class":1357},[1065,1420,1421,1424,1426,1429,1433,1436,1438,1440,1442],{"class":1067,"line":1081},[1065,1422,1423],{"class":1368},"carrier_center_absolute ",[1065,1425,1373],{"class":1372},[1065,1427,1428],{"class":1368}," my_carrier[",[1065,1430,1432],{"class":1431},"sOiAX","0",[1065,1434,1435],{"class":1368},"].location ",[1065,1437,1379],{"class":1372},[1065,1439,1428],{"class":1368},[1065,1441,1432],{"class":1431},[1065,1443,1444],{"class":1368},"].center\n",[1065,1446,1447],{"class":1067,"line":1087},[1065,1448,1387],{"class":1357},[1065,1450,1451,1453,1455,1457,1459],{"class":1067,"line":1093},[1065,1452,1392],{"class":1372},[1065,1454,1395],{"class":1368},[1065,1456,1399],{"class":1398},[1065,1458,1373],{"class":1372},[1065,1460,1461],{"class":1368},"carrier_center_absolute)\n",[1019,1463,1466],{"color":1464,"icon":1465},"error","i-heroicons-shield-exclamation",[915,1467,1468,1471],{},[924,1469,1470],{},"Warning",": To avoid collision, make sure to either open the grippers before moving to a plate location, or add a z offset to the move command.",[963,1473,1475],{"id":1474},"rotation-and-direction","Rotation and Direction",[915,1477,1478],{},"The iSWAP has a unique rotational element which allows it to pick and place labware in multiple orientations.",[915,1480,1481,1482,1485],{},"The UniteLabs liquid handling SDK provides support for specifying rotation direction when handling labware with the iSWAP module in the form of the ",[979,1483,1484],{},"Direction"," enum:",[1056,1487,1489],{"className":1348,"code":1488,"language":1350,"meta":1061,"style":1061},"class Direction(enum.IntEnum):\n    FRONT = 1\n    RIGHT = 2\n    BACK = 3\n    LEFT = 4\n",[979,1490,1491,1513,1524,1534,1544],{"__ignoreMap":1061},[1065,1492,1493,1496,1499,1502,1505,1507,1510],{"class":1067,"line":1068},[1065,1494,1495],{"class":1372},"class",[1065,1497,1498],{"class":1398}," Direction",[1065,1500,1501],{"class":1368},"(",[1065,1503,1504],{"class":1431},"enum",[1065,1506,1054],{"class":1368},[1065,1508,1509],{"class":1431},"IntEnum",[1065,1511,1512],{"class":1368},"):\n",[1065,1514,1515,1518,1521],{"class":1067,"line":1074},[1065,1516,1517],{"class":1431},"    FRONT",[1065,1519,1520],{"class":1372}," =",[1065,1522,1523],{"class":1431}," 1\n",[1065,1525,1526,1529,1531],{"class":1067,"line":1081},[1065,1527,1528],{"class":1431},"    RIGHT",[1065,1530,1520],{"class":1372},[1065,1532,1533],{"class":1431}," 2\n",[1065,1535,1536,1539,1541],{"class":1067,"line":1087},[1065,1537,1538],{"class":1431},"    BACK",[1065,1540,1520],{"class":1372},[1065,1542,1543],{"class":1431}," 3\n",[1065,1545,1546,1549,1551],{"class":1067,"line":1093},[1065,1547,1548],{"class":1431},"    LEFT",[1065,1550,1520],{"class":1372},[1065,1552,1553],{"class":1431}," 4\n",[915,1555,1556],{},"This enum defines the four cardinal directions from which the iSWAP can approach and handle labware. It can be imported directly from the liquid handling SDK like so:",[1056,1558,1560],{"className":1348,"code":1559,"language":1350,"meta":1061,"style":1061},"from unitelabs.liquid_handling.hamilton import Direction\n",[979,1561,1562],{"__ignoreMap":1061},[1065,1563,1564,1567,1570,1573],{"class":1067,"line":1068},[1065,1565,1566],{"class":1372},"from",[1065,1568,1569],{"class":1368}," unitelabs.liquid_handling.hamilton ",[1065,1571,1572],{"class":1372},"import",[1065,1574,1575],{"class":1368}," Direction\n",[915,1577,1578,1579,1582,1583,1586],{},"All of the iSWAP's pick and place methods contain a ",[979,1580,1581],{},"direction"," parameter that accepts values from this enum. This parameter determines from which side the iSWAP ",[971,1584,1585],{},"approaches"," the labware for the operation. It is possible to use the corresponding integer values directly (1-4), but we recommend importing and using the enum values for better code readability.",[955,1588,1590],{"id":1589},"basic-setup","Basic Setup",[915,1592,1593],{},"Here we describe the necessary steps to initialize and configure the iSWAP module for operation.",[963,1595,1597],{"id":1596},"power-on-the-system","Power On the System",[915,1599,1600],{},"Ensure that the Hamilton STAR is powered on and ready for operation. Verify that the connector is running and connected to the UniteLabs platform.",[1056,1602,1604],{"className":1348,"code":1603,"language":1350,"meta":1061,"style":1061},"from unitelabs.sdk import AsyncApiClient\nfrom unitelabs.liquid_handling.hamilton import MicrolabSTAR\n\nclient = AsyncApiClient()\n\n# Initialize the Hamilton Microlab STAR\nhamilton = MicrolabSTAR(\n    name=\"Microlab STAR\", # Or your connector's name on the UniteLabs platform\n    client=client,\n)\nawait hamilton.initialize()\n",[979,1605,1606,1618,1629,1633,1643,1647,1652,1662,1678,1688,1693],{"__ignoreMap":1061},[1065,1607,1608,1610,1613,1615],{"class":1067,"line":1068},[1065,1609,1566],{"class":1372},[1065,1611,1612],{"class":1368}," unitelabs.sdk ",[1065,1614,1572],{"class":1372},[1065,1616,1617],{"class":1368}," AsyncApiClient\n",[1065,1619,1620,1622,1624,1626],{"class":1067,"line":1074},[1065,1621,1566],{"class":1372},[1065,1623,1569],{"class":1368},[1065,1625,1572],{"class":1372},[1065,1627,1628],{"class":1368}," MicrolabSTAR\n",[1065,1630,1631],{"class":1067,"line":1081},[1065,1632,1078],{"emptyLinePlaceholder":1077},[1065,1634,1635,1638,1640],{"class":1067,"line":1087},[1065,1636,1637],{"class":1368},"client ",[1065,1639,1373],{"class":1372},[1065,1641,1642],{"class":1368}," AsyncApiClient()\n",[1065,1644,1645],{"class":1067,"line":1093},[1065,1646,1078],{"emptyLinePlaceholder":1077},[1065,1648,1649],{"class":1067,"line":1099},[1065,1650,1651],{"class":1357},"# Initialize the Hamilton Microlab STAR\n",[1065,1653,1654,1657,1659],{"class":1067,"line":1105},[1065,1655,1656],{"class":1368},"hamilton ",[1065,1658,1373],{"class":1372},[1065,1660,1661],{"class":1368}," MicrolabSTAR(\n",[1065,1663,1664,1667,1669,1673,1675],{"class":1067,"line":1111},[1065,1665,1666],{"class":1398},"    name",[1065,1668,1373],{"class":1372},[1065,1670,1672],{"class":1671},"sCx38","\"Microlab STAR\"",[1065,1674,1036],{"class":1368},[1065,1676,1677],{"class":1357},"# Or your connector's name on the UniteLabs platform\n",[1065,1679,1680,1683,1685],{"class":1067,"line":1116},[1065,1681,1682],{"class":1398},"    client",[1065,1684,1373],{"class":1372},[1065,1686,1687],{"class":1368},"client,\n",[1065,1689,1690],{"class":1067,"line":1121},[1065,1691,1692],{"class":1368},")\n",[1065,1694,1695,1697],{"class":1067,"line":1126},[1065,1696,1392],{"class":1372},[1065,1698,1699],{"class":1368}," hamilton.initialize()\n",[963,1701,1703],{"id":1702},"arrange-the-deck","Arrange the Deck",[915,1705,1706],{},"Arrange the deck layout using the components from the labware library. This guide uses a plate carrier with one standard 96 well microtiter plate that we move from one carrier site to another.",[1056,1708,1710],{"className":1348,"code":1709,"language":1350,"meta":1061,"style":1061},"from unitelabs.labware import Standard96Plate, Vector\nfrom unitelabs.labware.hamilton import PLT_CAR_L5MD_A00\n\nplate_carrier = PLT_CAR_L5MD_A00()\nplate = Standard96Plate()\n\nplate_carrier[0] = plate\nhamilton.deck.add(plate_carrier, track=1)\n",[979,1711,1712,1724,1736,1740,1750,1760,1764,1779],{"__ignoreMap":1061},[1065,1713,1714,1716,1719,1721],{"class":1067,"line":1068},[1065,1715,1566],{"class":1372},[1065,1717,1718],{"class":1368}," unitelabs.labware ",[1065,1720,1572],{"class":1372},[1065,1722,1723],{"class":1368}," Standard96Plate, Vector\n",[1065,1725,1726,1728,1731,1733],{"class":1067,"line":1074},[1065,1727,1566],{"class":1372},[1065,1729,1730],{"class":1368}," unitelabs.labware.hamilton ",[1065,1732,1572],{"class":1372},[1065,1734,1735],{"class":1431}," PLT_CAR_L5MD_A00\n",[1065,1737,1738],{"class":1067,"line":1081},[1065,1739,1078],{"emptyLinePlaceholder":1077},[1065,1741,1742,1745,1747],{"class":1067,"line":1087},[1065,1743,1744],{"class":1368},"plate_carrier ",[1065,1746,1373],{"class":1372},[1065,1748,1749],{"class":1368}," PLT_CAR_L5MD_A00()\n",[1065,1751,1752,1755,1757],{"class":1067,"line":1093},[1065,1753,1754],{"class":1368},"plate ",[1065,1756,1373],{"class":1372},[1065,1758,1759],{"class":1368}," Standard96Plate()\n",[1065,1761,1762],{"class":1067,"line":1099},[1065,1763,1078],{"emptyLinePlaceholder":1077},[1065,1765,1766,1769,1771,1774,1776],{"class":1067,"line":1105},[1065,1767,1768],{"class":1368},"plate_carrier[",[1065,1770,1432],{"class":1431},[1065,1772,1773],{"class":1368},"] ",[1065,1775,1373],{"class":1372},[1065,1777,1778],{"class":1368}," plate\n",[1065,1780,1781,1784,1787,1789,1792],{"class":1067,"line":1111},[1065,1782,1783],{"class":1368},"hamilton.deck.add(plate_carrier, ",[1065,1785,1786],{"class":1398},"track",[1065,1788,1373],{"class":1372},[1065,1790,1791],{"class":1431},"1",[1065,1793,1692],{"class":1368},[955,1795,1797],{"id":1796},"using-the-iswap","Using the iSWAP",[963,1799,1801],{"id":1800},"pick-up-labware","Pick up Labware",[915,1803,1804,1805,1807,1808,1811,1812,1815],{},"Training locations should be done with labware in the iSWAP to ensure accuracy. This ensures that the positioning is valid for the specific labware to be transferred. Make sure that the plate is placed on the site and pass it to the iSWAP's ",[979,1806,1039],{}," method. The iSWAP moves on a safe traverse height to the site and picks up the plate. The method automatically transfers the plate from the carrier site to the iSWAP module. When the ",[979,1809,1810],{},"pick_up_direction"," argument is omitted, the iSWAP will approach from whichever orientation it is currently in. Here the ",[979,1813,1814],{},"strength"," parameter is set to the default value, which is used if not specified.",[1056,1817,1819],{"className":1348,"code":1818,"language":1350,"meta":1061,"style":1061},"from unitelabs.liquid_handling.hamilton import Direction\n\nawait hamilton.iswap.pick_up_from(\n    plate_carrier[0],\n    # The direction from which the iSWAP arm approaches the labware to pick up.\n    pick_up_direction=Direction.LEFT,\n    # The pressure to apply on the plate ranging from 0 (low) to 99 (high).\n    strength=30,\n)\n",[979,1820,1821,1831,1835,1842,1852,1857,1873,1878,1890],{"__ignoreMap":1061},[1065,1822,1823,1825,1827,1829],{"class":1067,"line":1068},[1065,1824,1566],{"class":1372},[1065,1826,1569],{"class":1368},[1065,1828,1572],{"class":1372},[1065,1830,1575],{"class":1368},[1065,1832,1833],{"class":1067,"line":1074},[1065,1834,1078],{"emptyLinePlaceholder":1077},[1065,1836,1837,1839],{"class":1067,"line":1081},[1065,1838,1392],{"class":1372},[1065,1840,1841],{"class":1368}," hamilton.iswap.pick_up_from(\n",[1065,1843,1844,1847,1849],{"class":1067,"line":1087},[1065,1845,1846],{"class":1368},"    plate_carrier[",[1065,1848,1432],{"class":1431},[1065,1850,1851],{"class":1368},"],\n",[1065,1853,1854],{"class":1067,"line":1093},[1065,1855,1856],{"class":1357},"    # The direction from which the iSWAP arm approaches the labware to pick up.\n",[1065,1858,1859,1862,1864,1867,1870],{"class":1067,"line":1099},[1065,1860,1861],{"class":1398},"    pick_up_direction",[1065,1863,1373],{"class":1372},[1065,1865,1866],{"class":1368},"Direction.",[1065,1868,1869],{"class":1431},"LEFT",[1065,1871,1872],{"class":1368},",\n",[1065,1874,1875],{"class":1067,"line":1105},[1065,1876,1877],{"class":1357},"    # The pressure to apply on the plate ranging from 0 (low) to 99 (high).\n",[1065,1879,1880,1883,1885,1888],{"class":1067,"line":1111},[1065,1881,1882],{"class":1398},"    strength",[1065,1884,1373],{"class":1372},[1065,1886,1887],{"class":1431},"30",[1065,1889,1872],{"class":1368},[1065,1891,1892],{"class":1067,"line":1116},[1065,1893,1692],{"class":1368},[915,1895,1896,1897,1900],{},"The parameters such as grip width and grip height are determined based on the ",[944,1898,1899],{"href":769},"definition of the labware"," that is being picked up while others have default values. All parameters can be specified explicitly if desired:",[928,1902,1903,1925,1932,1944,1952],{},[931,1904,1905,1907,1908,1036,1911,1036,1914,1917,1918,1920,1921,1924],{},[979,1906,1810],{},": Approach direction (",[979,1909,1910],{},"Direction.FRONT",[979,1912,1913],{},"RIGHT",[979,1915,1916],{},"BACK",", or ",[979,1919,1869],{},"). Default: ",[979,1922,1923],{},"None"," (uses current orientation).",[931,1926,1927,1929,1930,1054],{},[979,1928,1814],{},": Grip pressure ranging from 0 (low) to 99 (high). Default: ",[979,1931,1887],{},[931,1933,1934,1937,1938,1941,1942,1054],{},[979,1935,1936],{},"pick_up_offset",": A ",[979,1939,1940],{},"Vector(dx, dy)"," offset in mm to adjust the pick up location. Default: ",[979,1943,1923],{},[931,1945,1946,1949,1950,1054],{},[979,1947,1948],{},"width_offset",": Offset in mm to adjust the labware size for grip width calculation. Default: ",[979,1951,1432],{},[931,1953,1954,1957,1958,1054],{},[979,1955,1956],{},"grip_gap",": Initial gap in mm between the gripper and the labware. Default: ",[979,1959,1960],{},"6",[1019,1962,1963],{"color":1021,"icon":1022},[915,1964,1965,1968,1969,1971,1972,1974],{},[979,1966,1967],{},"grab_height"," is read from the labware definition and is not exposed as a pick-up parameter. To adjust the grip height, either edit the ",[979,1970,1967],{}," field on your labware definition or use ",[979,1973,1936],{}," for fine-tuning.",[915,1976,1977],{},"The plate is now accessible on the iSWAP and the carrier site should be empty.",[1056,1979,1981],{"className":1348,"code":1980,"language":1350,"meta":1061,"style":1061},"assert plate_carrier[0].get() == None\nassert hamilton.iswap.get() == plate\n",[979,1982,1983,2002],{"__ignoreMap":1061},[1065,1984,1985,1988,1991,1993,1996,1999],{"class":1067,"line":1068},[1065,1986,1987],{"class":1372},"assert",[1065,1989,1990],{"class":1368}," plate_carrier[",[1065,1992,1432],{"class":1431},[1065,1994,1995],{"class":1368},"].get() ",[1065,1997,1998],{"class":1372},"==",[1065,2000,2001],{"class":1431}," None\n",[1065,2003,2004,2006,2009,2011],{"class":1067,"line":1074},[1065,2005,1987],{"class":1372},[1065,2007,2008],{"class":1368}," hamilton.iswap.get() ",[1065,2010,1998],{"class":1372},[1065,2012,1778],{"class":1368},[963,2014,2016],{"id":2015},"move-labware","Move Labware",[915,2018,2019,2020,2022,2023,2025],{},"Now that the plate is picked up, it can be moved to another position. The plate's center will be placed at the provided location. In ",[979,2021,1031],{},", the ",[979,2024,1581],{}," parameter specifies the approach direction for the iSWAP arm.",[1056,2027,2029],{"className":1348,"code":2028,"language":1350,"meta":1061,"style":1061},"# Location 20 mm above the 5th carrier site's center\ntarget_location = plate_carrier[4].absolute_location \\\n    + plate_carrier[4].center.update(z=20)\n\nawait hamilton.iswap.move_to(\n    location=target_location,\n    direction=Direction.RIGHT,\n)\n",[979,2030,2031,2036,2051,2073,2077,2084,2094,2107],{"__ignoreMap":1061},[1065,2032,2033],{"class":1067,"line":1068},[1065,2034,2035],{"class":1357},"# Location 20 mm above the 5th carrier site's center\n",[1065,2037,2038,2041,2043,2045,2048],{"class":1067,"line":1074},[1065,2039,2040],{"class":1368},"target_location ",[1065,2042,1373],{"class":1372},[1065,2044,1990],{"class":1368},[1065,2046,2047],{"class":1431},"4",[1065,2049,2050],{"class":1368},"].absolute_location \\\n",[1065,2052,2053,2056,2058,2060,2063,2066,2068,2071],{"class":1067,"line":1081},[1065,2054,2055],{"class":1372},"    +",[1065,2057,1990],{"class":1368},[1065,2059,2047],{"class":1431},[1065,2061,2062],{"class":1368},"].center.update(",[1065,2064,2065],{"class":1398},"z",[1065,2067,1373],{"class":1372},[1065,2069,2070],{"class":1431},"20",[1065,2072,1692],{"class":1368},[1065,2074,2075],{"class":1067,"line":1087},[1065,2076,1078],{"emptyLinePlaceholder":1077},[1065,2078,2079,2081],{"class":1067,"line":1093},[1065,2080,1392],{"class":1372},[1065,2082,2083],{"class":1368}," hamilton.iswap.move_to(\n",[1065,2085,2086,2089,2091],{"class":1067,"line":1099},[1065,2087,2088],{"class":1398},"    location",[1065,2090,1373],{"class":1372},[1065,2092,2093],{"class":1368},"target_location,\n",[1065,2095,2096,2099,2101,2103,2105],{"class":1067,"line":1105},[1065,2097,2098],{"class":1398},"    direction",[1065,2100,1373],{"class":1372},[1065,2102,1866],{"class":1368},[1065,2104,1913],{"class":1431},[1065,2106,1872],{"class":1368},[1065,2108,2109],{"class":1067,"line":1111},[1065,2110,1692],{"class":1368},[1019,2112,2115],{"color":2113,"icon":2114},"neutral","i-heroicons-magnifying-glass",[915,2116,2117,2119],{},[924,2118,1027],{},": The iSWAP can be moved to any location even without carrying labware.",[963,2121,2123],{"id":2122},"release-labware","Release Labware",[915,2125,2126,2127,2129,2130,2133],{},"Labware can only be placed on carrier sites. Make sure that the site is empty and pass it to the iSWAP's ",[979,2128,1042],{}," method. The method automatically transfers the plate from the iSWAP module to the site. The ",[979,2131,2132],{},"drop_direction"," parameter specifies the approach direction for the iSWAP arm when putting down the labware.",[1056,2135,2137],{"className":1348,"code":2136,"language":1350,"meta":1061,"style":1061},"await hamilton.iswap.put_down(\n    # The carrier's 5th site\n    carrier_site=plate_carrier[4],\n    # The direction from which the iSWAP arm approaches the labware to put it down.\n    drop_direction=Direction.LEFT\n)\n",[979,2138,2139,2146,2151,2164,2169,2181],{"__ignoreMap":1061},[1065,2140,2141,2143],{"class":1067,"line":1068},[1065,2142,1392],{"class":1372},[1065,2144,2145],{"class":1368}," hamilton.iswap.put_down(\n",[1065,2147,2148],{"class":1067,"line":1074},[1065,2149,2150],{"class":1357},"    # The carrier's 5th site\n",[1065,2152,2153,2156,2158,2160,2162],{"class":1067,"line":1081},[1065,2154,2155],{"class":1398},"    carrier_site",[1065,2157,1373],{"class":1372},[1065,2159,1768],{"class":1368},[1065,2161,2047],{"class":1431},[1065,2163,1851],{"class":1368},[1065,2165,2166],{"class":1067,"line":1087},[1065,2167,2168],{"class":1357},"    # The direction from which the iSWAP arm approaches the labware to put it down.\n",[1065,2170,2171,2174,2176,2178],{"class":1067,"line":1093},[1065,2172,2173],{"class":1398},"    drop_direction",[1065,2175,1373],{"class":1372},[1065,2177,1866],{"class":1368},[1065,2179,2180],{"class":1431},"LEFT\n",[1065,2182,2183],{"class":1067,"line":1099},[1065,2184,1692],{"class":1368},[915,2186,2187],{},"The plate is now accessible on the carrier site and the iSWAP should be empty again.",[1056,2189,2191],{"className":1348,"code":2190,"language":1350,"meta":1061,"style":1061},"assert hamilton.iswap.get() == None\nassert plate_carrier[4].get() == plate\n",[979,2192,2193,2203],{"__ignoreMap":1061},[1065,2194,2195,2197,2199,2201],{"class":1067,"line":1068},[1065,2196,1987],{"class":1372},[1065,2198,2008],{"class":1368},[1065,2200,1998],{"class":1372},[1065,2202,2001],{"class":1431},[1065,2204,2205,2207,2209,2211,2213,2215],{"class":1067,"line":1074},[1065,2206,1987],{"class":1372},[1065,2208,1990],{"class":1368},[1065,2210,2047],{"class":1431},[1065,2212,1995],{"class":1368},[1065,2214,1998],{"class":1372},[1065,2216,1778],{"class":1368},[963,2218,2220],{"id":2219},"home-iswap","Home iSWAP",[915,2222,2223],{},"Repeat the above steps as necessary to manipulate additional labware. When you are done, using any other tool (e.g. the CoRe96 pipetting head) will return the iSWAP back to its home position. You can also home iSWAP explicitly:",[1056,2225,2227],{"className":1348,"code":2226,"language":1350,"meta":1061,"style":1061},"await hamilton.iswap.home()\n",[979,2228,2229],{"__ignoreMap":1061},[1065,2230,2231,2233],{"class":1067,"line":1068},[1065,2232,1392],{"class":1372},[1065,2234,2235],{"class":1368}," hamilton.iswap.home()\n",[955,2237,2239],{"id":2238},"conclusion","Conclusion",[915,2241,2242],{},"You should now be able to utilize the iSWAP gripper as an efficient solution for transporting labware during liquid handling workflows.",[2244,2245,2246],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sIsDC, html code.shiki .sIsDC{--shiki-light:#66707B;--shiki-default:#66707B;--shiki-dark:#8B949E}html pre.shiki code .sc-9e, html code.shiki .sc-9e{--shiki-light:#0E1116;--shiki-default:#0E1116;--shiki-dark:#E6EDF3}html pre.shiki code .sxkbv, html code.shiki .sxkbv{--shiki-light:#A0111F;--shiki-default:#A0111F;--shiki-dark:#FF7B72}html pre.shiki code .sNqAu, html code.shiki .sNqAu{--shiki-light:#702C00;--shiki-default:#702C00;--shiki-dark:#FFA657}html pre.shiki code .sOiAX, html code.shiki .sOiAX{--shiki-light:#023B95;--shiki-default:#023B95;--shiki-dark:#79C0FF}html pre.shiki code .sCx38, html code.shiki .sCx38{--shiki-light:#032563;--shiki-default:#032563;--shiki-dark:#A5D6FF}",{"title":1061,"searchDepth":1068,"depth":1074,"links":2248},[2249,2253,2257,2263],{"id":957,"depth":1074,"text":958,"children":2250},[2251,2252],{"id":965,"depth":1081,"text":966},{"id":1474,"depth":1081,"text":1475},{"id":1589,"depth":1074,"text":1590,"children":2254},[2255,2256],{"id":1596,"depth":1081,"text":1597},{"id":1702,"depth":1081,"text":1703},{"id":1796,"depth":1074,"text":1797,"children":2258},[2259,2260,2261,2262],{"id":1800,"depth":1081,"text":1801},{"id":2015,"depth":1081,"text":2016},{"id":2122,"depth":1081,"text":2123},{"id":2219,"depth":1081,"text":2220},{"id":2238,"depth":1074,"text":2239},"Use the iSWAP module for plate handling.","md",{},"\u002Fliquid-handling-and-robots\u002Fhamilton-star\u002Fiswap",{"title":652,"description":2264},"1YtjgaOdVrjhgDXPkX3CuUGKOFaftw55tLAL0oWgAHU",[2271,2273],{"title":648,"description":2272,"path":649},"Moving labware with the integrated CO-RE gripper.",{"title":656,"description":2274,"path":657},"How to measure TADM curves and control liquid handling steps with them.",1791294185890]