[{"data":1,"prerenderedAt":3477},["ShallowReactive",2],{"navigation":3,"\u002Foperate\u002Fguides\u002Fpipetting\u002Fadvanced-pipetting":750,"\u002Foperate\u002Fguides\u002Fpipetting\u002Fadvanced-pipetting-surround":3472},[4,80,134,364,428,530,567,646],{"title":5,"path":6,"stem":7,"children":8,"page":42},"Get Started","\u002Fget-started","01.get-started",[9,13,17,43,47],{"title":10,"path":11,"stem":12},"Welcome to UniteLabs","\u002Fget-started\u002Fwelcome","01.get-started\u002F00.welcome",{"title":14,"path":15,"stem":16},"How it works","\u002Fget-started\u002Fhow-it-works","01.get-started\u002F01.how-it-works",{"title":18,"path":19,"stem":20,"children":21,"page":42},"Use Cases","\u002Fget-started\u002Fuse-cases","01.get-started\u002F02.use-cases",[22,26,30,34,38],{"title":23,"path":24,"stem":25},"Instrument Control","\u002Fget-started\u002Fuse-cases\u002Flow-level-instrument-control","01.get-started\u002F02.use-cases\u002F10.low-level-instrument-control",{"title":27,"path":28,"stem":29},"Multi-device Control","\u002Fget-started\u002Fuse-cases\u002Fmulti-device-control","01.get-started\u002F02.use-cases\u002F20.multi-device-control",{"title":31,"path":32,"stem":33},"Workflow Orchestration","\u002Fget-started\u002Fuse-cases\u002Fworkflow-orchestration","01.get-started\u002F02.use-cases\u002F30.workflow-orchestration",{"title":35,"path":36,"stem":37},"Custom Apps and LIMS Integration","\u002Fget-started\u002Fuse-cases\u002Fcustom-apps-lims","01.get-started\u002F02.use-cases\u002F40.custom-apps-lims",{"title":39,"path":40,"stem":41},"Scale and Fleet Management","\u002Fget-started\u002Fuse-cases\u002Fscale-and-fleet","01.get-started\u002F02.use-cases\u002F50.scale-and-fleet",false,{"title":44,"path":45,"stem":46},"Lab as Code","\u002Fget-started\u002Fwhy-code","01.get-started\u002F03.why-code",{"title":48,"path":49,"stem":50,"children":51,"page":42},"Setup","\u002Fget-started\u002Fsetup","01.get-started\u002F20.setup",[52,56,60,64,68,72,76],{"title":53,"path":54,"stem":55},"GroundControl","\u002Fget-started\u002Fsetup\u002Fgroundcontrol","01.get-started\u002F20.setup\u002F10.groundcontrol",{"title":57,"path":58,"stem":59},"Network requirements","\u002Fget-started\u002Fsetup\u002Fnetwork-requirements","01.get-started\u002F20.setup\u002F20.network-requirements",{"title":61,"path":62,"stem":63},"Multi-device Networking","\u002Fget-started\u002Fsetup\u002Fmultiple-devices","01.get-started\u002F20.setup\u002F30.multiple-devices",{"title":65,"path":66,"stem":67},"Connect to Platform","\u002Fget-started\u002Fsetup\u002Fconnect-to-platform","01.get-started\u002F20.setup\u002F40.connect-to-platform",{"title":69,"path":70,"stem":71},"Headless install","\u002Fget-started\u002Fsetup\u002Fheadless-install","01.get-started\u002F20.setup\u002F50.headless-install",{"title":73,"path":74,"stem":75},"Raspberry Pi","\u002Fget-started\u002Fsetup\u002Fraspberry-pi","01.get-started\u002F20.setup\u002F55.raspberry-pi",{"title":77,"path":78,"stem":79},"Installation","\u002Fget-started\u002Fsetup\u002Fsdk-installation","01.get-started\u002F20.setup\u002F60.sdk-installation",{"title":81,"path":82,"stem":83,"children":84,"page":42},"Integrate","\u002Fintegrate","02.integrate",[85,89,93,118],{"title":86,"path":87,"stem":88},"What is a connector?","\u002Fintegrate\u002Fwhat-is-a-connector","02.integrate\u002F00.what-is-a-connector",{"title":90,"path":91,"stem":92},"Calling a Connector","\u002Fintegrate\u002Fcontrol-with-code","02.integrate\u002F05.control-with-code",{"title":94,"path":95,"stem":96,"children":97,"page":42},"Concepts","\u002Fintegrate\u002Fconcepts","02.integrate\u002F10.concepts",[98,102,106,110,114],{"title":99,"path":100,"stem":101},"Connector","\u002Fintegrate\u002Fconcepts\u002Fconnector","02.integrate\u002F10.concepts\u002F10.connector",{"title":103,"path":104,"stem":105},"Module","\u002Fintegrate\u002Fconcepts\u002Fmodule","02.integrate\u002F10.concepts\u002F20.module",{"title":107,"path":108,"stem":109},"Action","\u002Fintegrate\u002Fconcepts\u002Faction","02.integrate\u002F10.concepts\u002F30.action",{"title":111,"path":112,"stem":113},"Subscription","\u002Fintegrate\u002Fconcepts\u002Fsubscription","02.integrate\u002F10.concepts\u002F40.subscription",{"title":115,"path":116,"stem":117},"Device","\u002Fintegrate\u002Fconcepts\u002Fdevice","02.integrate\u002F10.concepts\u002F50.device",{"title":119,"path":120,"stem":121,"children":122,"page":42},"Use a connector","\u002Fintegrate\u002Fuse-a-connector","02.integrate\u002F30.use-a-connector",[123,126,130],{"title":53,"path":124,"stem":125},"\u002Fintegrate\u002Fuse-a-connector\u002Fgroundcontrol","02.integrate\u002F30.use-a-connector\u002F10.groundcontrol",{"title":127,"path":128,"stem":129},"Platform","\u002Fintegrate\u002Fuse-a-connector\u002Fplatform","02.integrate\u002F30.use-a-connector\u002F20.platform",{"title":131,"path":132,"stem":133},"UniteLabs SDK & REST API","\u002Fintegrate\u002Fuse-a-connector\u002Fpython","02.integrate\u002F30.use-a-connector\u002F30.python",{"title":135,"path":136,"stem":137,"children":138,"page":42},"Operate","\u002Foperate","03.operate",[139,142,146,186,259],{"title":135,"path":140,"stem":141},"\u002Foperate\u002Foverview","03.operate\u002F00.overview",{"title":143,"path":144,"stem":145},"Your First Protocol","\u002Foperate\u002Fyour-first-protocol","03.operate\u002F05.your-first-protocol",{"title":94,"path":147,"stem":148,"children":149,"page":42},"\u002Foperate\u002Fconcepts","03.operate\u002F10.concepts",[150,154,158,162,166,170,174,178,182],{"title":151,"path":152,"stem":153},"Liquid Handling","\u002Foperate\u002Fconcepts\u002Fliquid-handling","03.operate\u002F10.concepts\u002F10.liquid-handling",{"title":155,"path":156,"stem":157},"Modules","\u002Foperate\u002Fconcepts\u002Fmodules","03.operate\u002F10.concepts\u002F20.modules",{"title":159,"path":160,"stem":161},"Deck","\u002Foperate\u002Fconcepts\u002Fdeck","03.operate\u002F10.concepts\u002F30.deck",{"title":163,"path":164,"stem":165},"Labware","\u002Foperate\u002Fconcepts\u002Flabware","03.operate\u002F10.concepts\u002F40.labware",{"title":167,"path":168,"stem":169},"Liquids","\u002Foperate\u002Fconcepts\u002Fliquids","03.operate\u002F10.concepts\u002F50.liquids",{"title":171,"path":172,"stem":173},"Liquid Classes","\u002Foperate\u002Fconcepts\u002Fliquid-classes","03.operate\u002F10.concepts\u002F60.liquid-classes",{"title":175,"path":176,"stem":177},"Tips and Tip Tracking","\u002Foperate\u002Fconcepts\u002Ftips","03.operate\u002F10.concepts\u002F70.tips",{"title":179,"path":180,"stem":181},"Simulation","\u002Foperate\u002Fconcepts\u002Fsimulation","03.operate\u002F10.concepts\u002F80.simulation",{"title":183,"path":184,"stem":185},"Error Handling","\u002Foperate\u002Fconcepts\u002Ferror-handling","03.operate\u002F10.concepts\u002F90.error-handling",{"title":187,"path":188,"stem":189,"children":190,"page":42},"Guides","\u002Foperate\u002Fguides","03.operate\u002F20.guides",[191,220,232,256],{"title":163,"path":192,"stem":193,"children":194},"\u002Foperate\u002Fguides\u002Flabware","03.operate\u002F20.guides\u002F10.labware\u002Findex",[195,196,200,204,208,212,216],{"title":163,"path":192,"stem":193},{"title":197,"path":198,"stem":199},"Standard Labware","\u002Foperate\u002Fguides\u002Flabware\u002Fstandard-labware","03.operate\u002F20.guides\u002F10.labware\u002F05.standard-labware",{"title":201,"path":202,"stem":203},"Plates","\u002Foperate\u002Fguides\u002Flabware\u002Fplates","03.operate\u002F20.guides\u002F10.labware\u002F10.plates",{"title":205,"path":206,"stem":207},"Tips and Tip Racks","\u002Foperate\u002Fguides\u002Flabware\u002Ftips-and-racks","03.operate\u002F20.guides\u002F10.labware\u002F20.tips-and-racks",{"title":209,"path":210,"stem":211},"Tubes and Tube Racks","\u002Foperate\u002Fguides\u002Flabware\u002Ftubes-and-tube-racks","03.operate\u002F20.guides\u002F10.labware\u002F30.tubes-and-tube-racks",{"title":213,"path":214,"stem":215},"Troughs","\u002Foperate\u002Fguides\u002Flabware\u002Ftroughs","03.operate\u002F20.guides\u002F10.labware\u002F35.troughs",{"title":217,"path":218,"stem":219},"Carriers and Adapters","\u002Foperate\u002Fguides\u002Flabware\u002Fcarriers-and-adapters","03.operate\u002F20.guides\u002F10.labware\u002F40.carriers-and-adapters",{"title":159,"path":221,"stem":222,"children":223,"page":42},"\u002Foperate\u002Fguides\u002Fdeck","03.operate\u002F20.guides\u002F20.deck",[224,228],{"title":225,"path":226,"stem":227},"Building a Deck","\u002Foperate\u002Fguides\u002Fdeck\u002Fbuilding-a-deck","03.operate\u002F20.guides\u002F20.deck\u002F10.building-a-deck",{"title":229,"path":230,"stem":231},"Save\u002FLoad a Deck","\u002Foperate\u002Fguides\u002Fdeck\u002Fsave-load-deck","03.operate\u002F20.guides\u002F20.deck\u002F20.save-load-deck",{"title":233,"path":234,"stem":235,"children":236,"page":42},"Pipetting","\u002Foperate\u002Fguides\u002Fpipetting","03.operate\u002F20.guides\u002F30.pipetting",[237,241,245,249,252],{"title":238,"path":239,"stem":240},"Basic Pipetting","\u002Foperate\u002Fguides\u002Fpipetting\u002Fbasic-pipetting","03.operate\u002F20.guides\u002F30.pipetting\u002F10.basic-pipetting",{"title":242,"path":243,"stem":244},"Advanced Pipetting","\u002Foperate\u002Fguides\u002Fpipetting\u002Fadvanced-pipetting","03.operate\u002F20.guides\u002F30.pipetting\u002F20.advanced-pipetting",{"title":246,"path":247,"stem":248},"Tip Handling","\u002Foperate\u002Fguides\u002Fpipetting\u002Ftip-handling","03.operate\u002F20.guides\u002F30.pipetting\u002F30.tip-handling",{"title":171,"path":250,"stem":251},"\u002Foperate\u002Fguides\u002Fpipetting\u002Fliquid-classes","03.operate\u002F20.guides\u002F30.pipetting\u002F40.liquid-classes",{"title":253,"path":254,"stem":255},"Labware Transport","\u002Foperate\u002Fguides\u002Fpipetting\u002Flabware-transport","03.operate\u002F20.guides\u002F30.pipetting\u002F50.labware-transport",{"title":179,"path":257,"stem":258},"\u002Foperate\u002Fguides\u002Fsimulation","03.operate\u002F20.guides\u002F40.simulation",{"title":260,"path":261,"stem":262,"children":263,"page":42},"Liquid Handler Guides","\u002Foperate\u002Fdevices","03.operate\u002F30.devices",[264,305,330,347],{"title":265,"path":266,"stem":267,"children":268,"page":42},"Hamilton STAR","\u002Foperate\u002Fdevices\u002Fhamilton-star","03.operate\u002F30.devices\u002F10.hamilton-star",[269,273,277,281,285,289,293,297,301],{"title":270,"path":271,"stem":272},"Positioning & Movement","\u002Foperate\u002Fdevices\u002Fhamilton-star\u002Fpositioning","03.operate\u002F30.devices\u002F10.hamilton-star\u002F10.positioning",{"title":274,"path":275,"stem":276},"Gripper Module","\u002Foperate\u002Fdevices\u002Fhamilton-star\u002Fcore-gripper","03.operate\u002F30.devices\u002F10.hamilton-star\u002F20.core-gripper",{"title":278,"path":279,"stem":280},"iSWAP Module","\u002Foperate\u002Fdevices\u002Fhamilton-star\u002Fiswap","03.operate\u002F30.devices\u002F10.hamilton-star\u002F30.iswap",{"title":282,"path":283,"stem":284},"Using TADM","\u002Foperate\u002Fdevices\u002Fhamilton-star\u002Ftadm","03.operate\u002F30.devices\u002F10.hamilton-star\u002F40.tadm",{"title":286,"path":287,"stem":288},"Autoload Module","\u002Foperate\u002Fdevices\u002Fhamilton-star\u002Fautoload","03.operate\u002F30.devices\u002F10.hamilton-star\u002F50.autoload",{"title":290,"path":291,"stem":292},"Waste Block","\u002Foperate\u002Fdevices\u002Fhamilton-star\u002Fwaste-block","03.operate\u002F30.devices\u002F10.hamilton-star\u002F60.waste-block",{"title":294,"path":295,"stem":296},"Complex Mixing","\u002Foperate\u002Fdevices\u002Fhamilton-star\u002Fcomplex-mixing","03.operate\u002F30.devices\u002F10.hamilton-star\u002F66.complex-mixing",{"title":298,"path":299,"stem":300},"Teaching Gripper Paddle Positions","\u002Foperate\u002Fdevices\u002Fhamilton-star\u002Fgripper-positions","03.operate\u002F30.devices\u002F10.hamilton-star\u002F70.gripper-positions",{"title":302,"path":303,"stem":304},"Training a Custom Deck Position With the iSWAP","\u002Foperate\u002Fdevices\u002Fhamilton-star\u002Fcustom-deck-position","03.operate\u002F30.devices\u002F10.hamilton-star\u002F75.custom-deck-position",{"title":306,"path":307,"stem":308,"children":309,"page":42},"Hamilton Vantage","\u002Foperate\u002Fdevices\u002Fhamilton-vantage","03.operate\u002F30.devices\u002F20.hamilton-vantage",[310,314,318,322,326],{"title":311,"path":312,"stem":313},"Waste Configuration","\u002Foperate\u002Fdevices\u002Fhamilton-vantage\u002Fwaste-configuration","03.operate\u002F30.devices\u002F20.hamilton-vantage\u002F05.waste-configuration",{"title":315,"path":316,"stem":317},"Covers and Lights","\u002Foperate\u002Fdevices\u002Fhamilton-vantage\u002Fcovers-and-lights","03.operate\u002F30.devices\u002F20.hamilton-vantage\u002F10.covers-and-lights",{"title":319,"path":320,"stem":321},"IDL Module","\u002Foperate\u002Fdevices\u002Fhamilton-vantage\u002Fidl","03.operate\u002F30.devices\u002F20.hamilton-vantage\u002F20.idl",{"title":323,"path":324,"stem":325},"IPG Module","\u002Foperate\u002Fdevices\u002Fhamilton-vantage\u002Fipg","03.operate\u002F30.devices\u002F20.hamilton-vantage\u002F30.ipg",{"title":327,"path":328,"stem":329},"XL Pipettes","\u002Foperate\u002Fdevices\u002Fhamilton-vantage\u002Fxl-channels","03.operate\u002F30.devices\u002F20.hamilton-vantage\u002F40.xl-channels",{"title":331,"path":332,"stem":333,"children":334,"page":42},"Agilent Bravo","\u002Foperate\u002Fdevices\u002Fagilent-bravo","03.operate\u002F30.devices\u002F30.agilent-bravo",[335,338,341,344],{"title":246,"path":336,"stem":337},"\u002Foperate\u002Fdevices\u002Fagilent-bravo\u002Ftip-handling","03.operate\u002F30.devices\u002F30.agilent-bravo\u002F10.tip-handling",{"title":238,"path":339,"stem":340},"\u002Foperate\u002Fdevices\u002Fagilent-bravo\u002Fbasic-pipetting","03.operate\u002F30.devices\u002F30.agilent-bravo\u002F20.basic-pipetting",{"title":171,"path":342,"stem":343},"\u002Foperate\u002Fdevices\u002Fagilent-bravo\u002Fliquid-classes","03.operate\u002F30.devices\u002F30.agilent-bravo\u002F25.liquid-classes",{"title":274,"path":345,"stem":346},"\u002Foperate\u002Fdevices\u002Fagilent-bravo\u002Fusing-the-gripper","03.operate\u002F30.devices\u002F30.agilent-bravo\u002F30.using-the-gripper",{"title":348,"path":349,"stem":350,"children":351,"page":42},"Tecan FluentControl","\u002Foperate\u002Fdevices\u002Ftecan-fluentcontrol","03.operate\u002F30.devices\u002F40.tecan-fluentcontrol",[352,356,360],{"title":353,"path":354,"stem":355},"Connect & Run a Method","\u002Foperate\u002Fdevices\u002Ftecan-fluentcontrol\u002Fconnect-and-run","03.operate\u002F30.devices\u002F40.tecan-fluentcontrol\u002F10.connect-and-run",{"title":357,"path":358,"stem":359},"Sending XML Commands","\u002Foperate\u002Fdevices\u002Ftecan-fluentcontrol\u002Fsending-xml-commands","03.operate\u002F30.devices\u002F40.tecan-fluentcontrol\u002F20.sending-xml-commands",{"title":361,"path":362,"stem":363},"Full Workflow Example","\u002Foperate\u002Fdevices\u002Ftecan-fluentcontrol\u002Ffull-workflow-example","03.operate\u002F30.devices\u002F40.tecan-fluentcontrol\u002F30.full-workflow-example",{"title":365,"path":366,"stem":367,"children":368,"page":42},"Device Guides","\u002Fdevice-guides","06.device-guides",[369,372,385,402,415],{"title":365,"path":370,"stem":371},"\u002Fdevice-guides\u002Foverview","06.device-guides\u002F00.overview",{"title":373,"path":374,"stem":375,"children":376,"page":42},"Incubation","\u002Fdevice-guides\u002Fincubation","06.device-guides\u002F20.incubation",[377,381],{"title":378,"path":379,"stem":380},"Inheco ODTC","\u002Fdevice-guides\u002Fincubation\u002Finheco-odtc","06.device-guides\u002F20.incubation\u002F10.inheco-odtc",{"title":382,"path":383,"stem":384},"Inheco SCILA","\u002Fdevice-guides\u002Fincubation\u002Finheco-scila","06.device-guides\u002F20.incubation\u002F20.inheco-scila",{"title":386,"path":387,"stem":388,"children":389,"page":42},"Heater-Shakers","\u002Fdevice-guides\u002Fheater-shakers","06.device-guides\u002F30.heater-shakers",[390,394,398],{"title":391,"path":392,"stem":393},"Inheco Thermoshake","\u002Fdevice-guides\u002Fheater-shakers\u002Finheco-thermoshake","06.device-guides\u002F30.heater-shakers\u002F10.inheco-thermoshake",{"title":395,"path":396,"stem":397},"QInstruments Bioshake","\u002Fdevice-guides\u002Fheater-shakers\u002Fqinstruments-bioshake","06.device-guides\u002F30.heater-shakers\u002F20.qinstruments-bioshake",{"title":399,"path":400,"stem":401},"QInstruments ColdPlate","\u002Fdevice-guides\u002Fheater-shakers\u002Fqinstruments-coldplate","06.device-guides\u002F30.heater-shakers\u002F30.qinstruments-coldplate",{"title":403,"path":404,"stem":405,"children":406,"page":42},"Readers","\u002Fdevice-guides\u002Freaders","06.device-guides\u002F40.readers",[407,411],{"title":408,"path":409,"stem":410},"Biotek Gen5","\u002Fdevice-guides\u002Freaders\u002Fbiotek-gen5","06.device-guides\u002F40.readers\u002F10.biotek-gen5",{"title":412,"path":413,"stem":414},"Biotek Synergy H1","\u002Fdevice-guides\u002Freaders\u002Fbiotek-synergy-h1","06.device-guides\u002F40.readers\u002F20.biotek-synergy-H1",{"title":416,"path":417,"stem":418,"children":419,"page":42},"Tilt & Turn","\u002Fdevice-guides\u002Ftilt-and-turn","06.device-guides\u002F50.tilt-and-turn",[420,424],{"title":421,"path":422,"stem":423},"TurnStation","\u002Fdevice-guides\u002Ftilt-and-turn\u002Fqinstruments-turnstation","06.device-guides\u002F50.tilt-and-turn\u002F10.qinstruments-turnstation",{"title":425,"path":426,"stem":427},"TiltStation","\u002Fdevice-guides\u002Ftilt-and-turn\u002Fqinstruments-tiltstation","06.device-guides\u002F50.tilt-and-turn\u002F20.qinstruments-tiltstation",{"title":429,"path":430,"stem":431,"children":432,"page":42},"Automate","\u002Fautomate","07.automate",[433,437,441,445,494],{"title":434,"path":435,"stem":436},"What is a workflow?","\u002Fautomate\u002Fwhat-is-a-workflow","07.automate\u002F00.what-is-a-workflow",{"title":438,"path":439,"stem":440},"Workflow template","\u002Fautomate\u002Fworkflow-template","07.automate\u002F05.workflow-template",{"title":442,"path":443,"stem":444},"Your First Workflow","\u002Fautomate\u002Fyour-first-workflow","07.automate\u002F08.your-first-workflow",{"title":94,"pages":446,"path":456,"stem":457,"children":458,"page":42},[447,448,449,450,451,452,453,454,455],"workflow","phase","step","runs","input","artifacts","logs","human-in-the-loop","error-handling","\u002Fautomate\u002Fconcepts","07.automate\u002F10.concepts",[459,463,467,471,475,479,483,487,491],{"title":460,"path":461,"stem":462},"Workflow","\u002Fautomate\u002Fconcepts\u002Fworkflow","07.automate\u002F10.concepts\u002F10.workflow",{"title":464,"path":465,"stem":466},"Phase","\u002Fautomate\u002Fconcepts\u002Fphase","07.automate\u002F10.concepts\u002F20.phase",{"title":468,"path":469,"stem":470},"Step","\u002Fautomate\u002Fconcepts\u002Fstep","07.automate\u002F10.concepts\u002F30.step",{"title":472,"path":473,"stem":474},"Runs","\u002Fautomate\u002Fconcepts\u002Fruns","07.automate\u002F10.concepts\u002F40.runs",{"title":476,"path":477,"stem":478},"Input","\u002Fautomate\u002Fconcepts\u002Finput","07.automate\u002F10.concepts\u002F50.input",{"title":480,"path":481,"stem":482},"Artifacts","\u002Fautomate\u002Fconcepts\u002Fartifacts","07.automate\u002F10.concepts\u002F60.artifacts",{"title":484,"path":485,"stem":486},"Logs","\u002Fautomate\u002Fconcepts\u002Flogs","07.automate\u002F10.concepts\u002F70.logs",{"title":488,"path":489,"stem":490},"Human in the Loop","\u002Fautomate\u002Fconcepts\u002Fhuman-in-the-loop","07.automate\u002F10.concepts\u002F80.human-in-the-loop",{"title":183,"path":492,"stem":493},"\u002Fautomate\u002Fconcepts\u002Ferror-handling","07.automate\u002F10.concepts\u002F90.error-handling",{"title":187,"path":495,"stem":496,"children":497,"page":42},"\u002Fautomate\u002Fguides","07.automate\u002F25.guides",[498,502,506,510,514,518,522,526],{"title":499,"path":500,"stem":501},"Deploy a workflow","\u002Fautomate\u002Fguides\u002Fdeploy-a-workflow","07.automate\u002F25.guides\u002F30.deploy-a-workflow",{"title":503,"path":504,"stem":505},"Run a workflow","\u002Fautomate\u002Fguides\u002Frun-a-workflow","07.automate\u002F25.guides\u002F35.run-a-workflow",{"title":507,"path":508,"stem":509},"CI\u002FCD for workflows","\u002Fautomate\u002Fguides\u002Fcicd-for-workflows","07.automate\u002F25.guides\u002F40.cicd-for-workflows",{"title":511,"path":512,"stem":513},"HITL basics","\u002Fautomate\u002Fguides\u002Fbasic-hitl","07.automate\u002F25.guides\u002F50.basic-hitl",{"title":515,"path":516,"stem":517},"Typed operator inputs","\u002Fautomate\u002Fguides\u002Ftyped-operator-inputs","07.automate\u002F25.guides\u002F55.typed-operator-inputs",{"title":519,"path":520,"stem":521},"Error recovery","\u002Fautomate\u002Fguides\u002Fbasic-error-handling","07.automate\u002F25.guides\u002F60.basic-error-handling",{"title":523,"path":524,"stem":525},"Advanced error handling","\u002Fautomate\u002Fguides\u002Fadvanced-error-handling","07.automate\u002F25.guides\u002F70.advanced-error-handling",{"title":527,"path":528,"stem":529},"Workflows REST API","\u002Fautomate\u002Fguides\u002Fworkflows-api","07.automate\u002F25.guides\u002F80.workflows-api",{"title":531,"path":532,"stem":533,"children":534,"page":42},"Observe","\u002Fobserve","08.observe",[535,539,555],{"title":536,"path":537,"stem":538},"Overview","\u002Fobserve\u002Foverview","08.observe\u002F10.overview",{"title":94,"path":540,"stem":541,"children":542,"page":42},"\u002Fobserve\u002Fconcepts","08.observe\u002F20.concepts",[543,547,551],{"title":544,"path":545,"stem":546},"Object Storage","\u002Fobserve\u002Fconcepts\u002Fstorage","08.observe\u002F20.concepts\u002F10.storage",{"title":548,"path":549,"stem":550},"Secrets","\u002Fobserve\u002Fconcepts\u002Fsecrets","08.observe\u002F20.concepts\u002F20.secrets",{"title":552,"path":553,"stem":554},"Data sources","\u002Fobserve\u002Fconcepts\u002Fdata-sources","08.observe\u002F20.concepts\u002F30.data-sources",{"title":187,"path":556,"stem":557,"children":558,"page":42},"\u002Fobserve\u002Fguides","08.observe\u002F30.guides",[559,563],{"title":560,"path":561,"stem":562},"File System Connector","\u002Fobserve\u002Fguides\u002Ffilesystem-connector","08.observe\u002F30.guides\u002F10.filesystem-connector",{"title":564,"path":565,"stem":566},"Building an ETL","\u002Fobserve\u002Fguides\u002Fbuilding-an-etl","08.observe\u002F30.guides\u002F20.building-an-etl",{"title":568,"path":569,"stem":570,"children":571,"page":42},"Technical Reference","\u002Ftechnical-reference","10.technical-reference",[572,576,580,592,603,614,624,635],{"title":573,"path":574,"stem":575},"Introduction","\u002Ftechnical-reference\u002Fplatform-blueprint","10.technical-reference\u002F00.platform-blueprint",{"title":577,"path":578,"stem":579},"REST API","\u002Ftechnical-reference\u002Frest-api","10.technical-reference\u002F01.rest-api",{"title":53,"path":581,"stem":582,"children":583,"page":42},"\u002Ftechnical-reference\u002Fgroundcontrol","10.technical-reference\u002F10.groundcontrol",[584,588],{"title":585,"path":586,"stem":587},"Install & Setup","\u002Ftechnical-reference\u002Fgroundcontrol\u002Finstall","10.technical-reference\u002F10.groundcontrol\u002F10.install",{"title":589,"path":590,"stem":591},"Changelog","\u002Ftechnical-reference\u002Fgroundcontrol\u002Fchangelog","10.technical-reference\u002F10.groundcontrol\u002F20.changelog",{"title":593,"path":594,"stem":595,"children":596,"page":42},"UniteLabs SDK","\u002Ftechnical-reference\u002Fpython-sdk","10.technical-reference\u002F20.python-sdk",[597,600],{"title":585,"path":598,"stem":599},"\u002Ftechnical-reference\u002Fpython-sdk\u002Finstall","10.technical-reference\u002F20.python-sdk\u002F10.install",{"title":589,"path":601,"stem":602},"\u002Ftechnical-reference\u002Fpython-sdk\u002Fchangelog","10.technical-reference\u002F20.python-sdk\u002F20.changelog",{"title":604,"path":605,"stem":606,"children":607,"page":42},"Liquid Handling SDK","\u002Ftechnical-reference\u002Fpython-liquid-handling-sdk","10.technical-reference\u002F30.python-liquid-handling-sdk",[608,611],{"title":585,"path":609,"stem":610},"\u002Ftechnical-reference\u002Fpython-liquid-handling-sdk\u002Finstall","10.technical-reference\u002F30.python-liquid-handling-sdk\u002F10.install",{"title":589,"path":612,"stem":613},"\u002Ftechnical-reference\u002Fpython-liquid-handling-sdk\u002Fchangelog","10.technical-reference\u002F30.python-liquid-handling-sdk\u002F20.changelog",{"title":163,"path":615,"stem":616,"children":617,"page":42},"\u002Ftechnical-reference\u002Flabware","10.technical-reference\u002F40.labware",[618,621],{"title":585,"path":619,"stem":620},"\u002Ftechnical-reference\u002Flabware\u002Finstall","10.technical-reference\u002F40.labware\u002F10.install",{"title":589,"path":622,"stem":623},"\u002Ftechnical-reference\u002Flabware\u002Fchangelog","10.technical-reference\u002F40.labware\u002F20.changelog",{"title":625,"path":626,"stem":627,"children":628,"page":42},"Python Omnibus","\u002Ftechnical-reference\u002Fpython-omnibus","10.technical-reference\u002F50.python-omnibus",[629,632],{"title":585,"path":630,"stem":631},"\u002Ftechnical-reference\u002Fpython-omnibus\u002Finstall","10.technical-reference\u002F50.python-omnibus\u002F10.install",{"title":589,"path":633,"stem":634},"\u002Ftechnical-reference\u002Fpython-omnibus\u002Fchangelog","10.technical-reference\u002F50.python-omnibus\u002F20.changelog",{"title":636,"path":637,"stem":638,"children":639,"page":42},"Python CDK","\u002Ftechnical-reference\u002Fpython-cdk","10.technical-reference\u002F60.python-cdk",[640,643],{"title":585,"path":641,"stem":642},"\u002Ftechnical-reference\u002Fpython-cdk\u002Finstall","10.technical-reference\u002F60.python-cdk\u002F10.install",{"title":589,"path":644,"stem":645},"\u002Ftechnical-reference\u002Fpython-cdk\u002Fchangelog","10.technical-reference\u002F60.python-cdk\u002F20.changelog",{"title":647,"path":648,"stem":649,"children":650},"Connector Development (CDK)","\u002Fconnector-development","20.connector-development",[651,653,672,705,713,744],{"title":647,"path":648,"stem":652},"20.connector-development\u002Findex",{"title":654,"path":655,"stem":656,"children":657,"page":42},"Getting Started","\u002Fconnector-development\u002Fgetting-started","20.connector-development\u002F10.getting-started",[658,661,665,668],{"title":536,"path":659,"stem":660},"\u002Fconnector-development\u002Fgetting-started\u002Foverview","20.connector-development\u002F10.getting-started\u002F10.overview",{"title":662,"path":663,"stem":664},"What's new","\u002Fconnector-development\u002Fgetting-started\u002Fwhats-new","20.connector-development\u002F10.getting-started\u002F20.whats-new",{"title":77,"path":666,"stem":667},"\u002Fconnector-development\u002Fgetting-started\u002Finstallation","20.connector-development\u002F10.getting-started\u002F30.installation",{"title":669,"path":670,"stem":671},"Contributing","\u002Fconnector-development\u002Fgetting-started\u002Fcontributing","20.connector-development\u002F10.getting-started\u002F40.contributing",{"title":673,"path":674,"stem":675,"children":676,"page":42},"Tutorial","\u002Fconnector-development\u002Ftutorial","20.connector-development\u002F20.tutorial",[677,681,685,689,693,697,701],{"title":678,"path":679,"stem":680},"Walkthrough","\u002Fconnector-development\u002Ftutorial\u002Fwalkthrough","20.connector-development\u002F20.tutorial\u002F00.walkthrough",{"title":682,"path":683,"stem":684},"SiLA Endpoints","\u002Fconnector-development\u002Ftutorial\u002Fsila-endpoints","20.connector-development\u002F20.tutorial\u002F10.sila-endpoints",{"title":686,"path":687,"stem":688},"Data Endpoints","\u002Fconnector-development\u002Ftutorial\u002Fdata-endpoints","20.connector-development\u002F20.tutorial\u002F20.data-endpoints",{"title":690,"path":691,"stem":692},"Controls","\u002Fconnector-development\u002Ftutorial\u002Fcontrols","20.connector-development\u002F20.tutorial\u002F30.controls",{"title":694,"path":695,"stem":696},"SiLA Data Types","\u002Fconnector-development\u002Ftutorial\u002Fdata-types","20.connector-development\u002F20.tutorial\u002F40.data-types",{"title":698,"path":699,"stem":700},"Feature","\u002Fconnector-development\u002Ftutorial\u002Fconnector-structure","20.connector-development\u002F20.tutorial\u002F70.connector-structure",{"title":702,"path":703,"stem":704},"Hardware Communication","\u002Fconnector-development\u002Ftutorial\u002Fhardware-communication","20.connector-development\u002F20.tutorial\u002F90.hardware-communication",{"title":94,"path":706,"stem":707,"children":708,"page":42},"\u002Fconnector-development\u002Fconcepts","20.connector-development\u002F30.concepts",[709],{"title":710,"path":711,"stem":712},"SiLA","\u002Fconnector-development\u002Fconcepts\u002Fsila","20.connector-development\u002F30.concepts\u002Fsila",{"title":187,"path":714,"stem":715,"children":716,"page":42},"\u002Fconnector-development\u002Fguides","20.connector-development\u002F40.guides",[717,721,725,729,733,736,740],{"title":718,"path":719,"stem":720},"Configuration","\u002Fconnector-development\u002Fguides\u002Fconfiguration","20.connector-development\u002F40.guides\u002F20.configuration",{"title":722,"path":723,"stem":724},"Deployment","\u002Fconnector-development\u002Fguides\u002Fdeployment","20.connector-development\u002F40.guides\u002F30.deployment",{"title":726,"path":727,"stem":728},"Security","\u002Fconnector-development\u002Fguides\u002Fsecurity","20.connector-development\u002F40.guides\u002F40.security",{"title":730,"path":731,"stem":732},"Subscriptions","\u002Fconnector-development\u002Fguides\u002Fsubscriptions","20.connector-development\u002F40.guides\u002F45.subscriptions",{"title":183,"path":734,"stem":735},"\u002Fconnector-development\u002Fguides\u002Ferror-handling","20.connector-development\u002F40.guides\u002F50.error-handling",{"title":737,"path":738,"stem":739},"Serial Troubleshooting","\u002Fconnector-development\u002Fguides\u002Fserial-troubleshooting","20.connector-development\u002F40.guides\u002F70.serial-troubleshooting",{"title":741,"path":742,"stem":743},"Testing","\u002Fconnector-development\u002Fguides\u002Ftesting","20.connector-development\u002F40.guides\u002F80.testing",{"title":745,"path":746,"stem":747,"children":748},"References","\u002Fconnector-development\u002Freference","20.connector-development\u002F50.reference\u002Findex",[749],{"title":745,"path":746,"stem":747},{"id":751,"title":242,"body":752,"description":3466,"extension":3467,"links":3468,"meta":3469,"navigation":951,"path":243,"seo":3470,"stem":244,"__hash__":3471},"docs\u002F03.operate\u002F20.guides\u002F30.pipetting\u002F20.advanced-pipetting.md",{"type":753,"value":754,"toc":3447},"minimark",[755,768,771,777,789,794,1428,1432,1452,1633,1637,1640,1727,1731,1844,1847,1851,1858,1873,1988,1993,1999,2045,2048,2052,2069,2197,2203,2231,2359,2371,2375,2378,2633,2635,2639,2644,2647,2801,2807,2811,2986,2990,3146,3148,3152,3170,3175,3322,3327,3443],[756,757,758,759,763,764,767],"p",{},"Parameter sets let you group, validate, and reuse pipetting parameters as Python dataclasses. Instead of passing many keyword arguments to every ",[760,761,762],"code",{},"aspirate"," or ",[760,765,766],{},"dispense"," call, you define the parameters once, optionally validate them before running, and pass the object to the pipetting method.",[756,769,770],{},"Both Hamilton and Bravo support parameter sets, though the feature depth differs. Hamilton's CoRe96 parameter sets include a full context\u002Fvalidation system and nested sub-parameter sets. Bravo's are simpler, covering the most common options.",[756,772,773],{},[774,775,776],"strong",{},"Prerequisites",[778,779,780],"ul",{},[781,782,783,784,788],"li",{},"Basic understanding of pipetting (See ",[785,786,238],"a",{"href":787},"\u002Foperate\u002Fguides\u002Fpipetting\u002Fbasic-pipetting\u002F",")",[790,791,793],"h2",{"id":792},"creating-and-using-a-parameter-set","Creating and Using a Parameter Set",[795,796,797,1180],"tabs",{},[798,799,801],"div",{"label":800},"Hamilton CoRe96",[802,803,808],"pre",{"className":804,"code":805,"language":806,"meta":807,"style":807},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","from unitelabs.labware.hamilton.liquids import LiquidClass\nfrom unitelabs.liquid_handling.hamilton.interfaces import LLDMode\nfrom unitelabs.liquid_handling.modules import PipetteMode\nfrom unitelabs.liquid_handling.hamilton.modules.core96 import (\n    CoRe96AspirateParameterSet,\n    CoRe96DispenseParameterSet,\n)\n\n# Build a parameter set explicitly\naspirate_params = CoRe96AspirateParameterSet(\n    volume=150,\n    lld_mode=LLDMode.OFF,\n    pipette_mode=PipetteMode.BOTTOM,\n    liquid_offset=1.5,\n)\n\n# Or use a factory method\naspirate_params = CoRe96AspirateParameterSet.simple_bottom_mode(\n    volume=150,\n    liquid_offset=1.5,\n)\n\n# Pass to the pipetting method\nawait hamilton.core96.aspirate(trough, aspirate_params)\nawait hamilton.core96.dispense(plate, CoRe96DispenseParameterSet(volume=150))\n","python","",[760,809,810,846,872,893,923,932,940,946,953,960,976,991,1010,1028,1041,1046,1051,1057,1073,1084,1095,1100,1105,1111,1143],{"__ignoreMap":807},[811,812,815,819,823,827,830,832,835,837,840,843],"span",{"class":813,"line":814},"line",1,[811,816,818],{"class":817},"s7zQu","from",[811,820,822],{"class":821},"sTEyZ"," unitelabs",[811,824,826],{"class":825},"sMK4o",".",[811,828,829],{"class":821},"labware",[811,831,826],{"class":825},[811,833,834],{"class":821},"hamilton",[811,836,826],{"class":825},[811,838,839],{"class":821},"liquids ",[811,841,842],{"class":817},"import",[811,844,845],{"class":821}," LiquidClass\n",[811,847,849,851,853,855,858,860,862,864,867,869],{"class":813,"line":848},2,[811,850,818],{"class":817},[811,852,822],{"class":821},[811,854,826],{"class":825},[811,856,857],{"class":821},"liquid_handling",[811,859,826],{"class":825},[811,861,834],{"class":821},[811,863,826],{"class":825},[811,865,866],{"class":821},"interfaces ",[811,868,842],{"class":817},[811,870,871],{"class":821}," LLDMode\n",[811,873,875,877,879,881,883,885,888,890],{"class":813,"line":874},3,[811,876,818],{"class":817},[811,878,822],{"class":821},[811,880,826],{"class":825},[811,882,857],{"class":821},[811,884,826],{"class":825},[811,886,887],{"class":821},"modules ",[811,889,842],{"class":817},[811,891,892],{"class":821}," PipetteMode\n",[811,894,896,898,900,902,904,906,908,910,913,915,918,920],{"class":813,"line":895},4,[811,897,818],{"class":817},[811,899,822],{"class":821},[811,901,826],{"class":825},[811,903,857],{"class":821},[811,905,826],{"class":825},[811,907,834],{"class":821},[811,909,826],{"class":825},[811,911,912],{"class":821},"modules",[811,914,826],{"class":825},[811,916,917],{"class":821},"core96 ",[811,919,842],{"class":817},[811,921,922],{"class":825}," (\n",[811,924,926,929],{"class":813,"line":925},5,[811,927,928],{"class":821},"    CoRe96AspirateParameterSet",[811,930,931],{"class":825},",\n",[811,933,935,938],{"class":813,"line":934},6,[811,936,937],{"class":821},"    CoRe96DispenseParameterSet",[811,939,931],{"class":825},[811,941,943],{"class":813,"line":942},7,[811,944,945],{"class":825},")\n",[811,947,949],{"class":813,"line":948},8,[811,950,952],{"emptyLinePlaceholder":951},true,"\n",[811,954,956],{"class":813,"line":955},9,[811,957,959],{"class":958},"sHwdD","# Build a parameter set explicitly\n",[811,961,963,966,969,973],{"class":813,"line":962},10,[811,964,965],{"class":821},"aspirate_params ",[811,967,968],{"class":825},"=",[811,970,972],{"class":971},"s2Zo4"," CoRe96AspirateParameterSet",[811,974,975],{"class":825},"(\n",[811,977,979,983,985,989],{"class":813,"line":978},11,[811,980,982],{"class":981},"sHdIc","    volume",[811,984,968],{"class":825},[811,986,988],{"class":987},"sbssI","150",[811,990,931],{"class":825},[811,992,994,997,999,1002,1004,1008],{"class":813,"line":993},12,[811,995,996],{"class":981},"    lld_mode",[811,998,968],{"class":825},[811,1000,1001],{"class":971},"LLDMode",[811,1003,826],{"class":825},[811,1005,1007],{"class":1006},"swJcz","OFF",[811,1009,931],{"class":825},[811,1011,1013,1016,1018,1021,1023,1026],{"class":813,"line":1012},13,[811,1014,1015],{"class":981},"    pipette_mode",[811,1017,968],{"class":825},[811,1019,1020],{"class":971},"PipetteMode",[811,1022,826],{"class":825},[811,1024,1025],{"class":1006},"BOTTOM",[811,1027,931],{"class":825},[811,1029,1031,1034,1036,1039],{"class":813,"line":1030},14,[811,1032,1033],{"class":981},"    liquid_offset",[811,1035,968],{"class":825},[811,1037,1038],{"class":987},"1.5",[811,1040,931],{"class":825},[811,1042,1044],{"class":813,"line":1043},15,[811,1045,945],{"class":825},[811,1047,1049],{"class":813,"line":1048},16,[811,1050,952],{"emptyLinePlaceholder":951},[811,1052,1054],{"class":813,"line":1053},17,[811,1055,1056],{"class":958},"# Or use a factory method\n",[811,1058,1060,1062,1064,1066,1068,1071],{"class":813,"line":1059},18,[811,1061,965],{"class":821},[811,1063,968],{"class":825},[811,1065,972],{"class":821},[811,1067,826],{"class":825},[811,1069,1070],{"class":971},"simple_bottom_mode",[811,1072,975],{"class":825},[811,1074,1076,1078,1080,1082],{"class":813,"line":1075},19,[811,1077,982],{"class":981},[811,1079,968],{"class":825},[811,1081,988],{"class":987},[811,1083,931],{"class":825},[811,1085,1087,1089,1091,1093],{"class":813,"line":1086},20,[811,1088,1033],{"class":981},[811,1090,968],{"class":825},[811,1092,1038],{"class":987},[811,1094,931],{"class":825},[811,1096,1098],{"class":813,"line":1097},21,[811,1099,945],{"class":825},[811,1101,1103],{"class":813,"line":1102},22,[811,1104,952],{"emptyLinePlaceholder":951},[811,1106,1108],{"class":813,"line":1107},23,[811,1109,1110],{"class":958},"# Pass to the pipetting method\n",[811,1112,1114,1117,1120,1122,1125,1127,1129,1132,1135,1138,1141],{"class":813,"line":1113},24,[811,1115,1116],{"class":817},"await",[811,1118,1119],{"class":821}," hamilton",[811,1121,826],{"class":825},[811,1123,1124],{"class":1006},"core96",[811,1126,826],{"class":825},[811,1128,762],{"class":971},[811,1130,1131],{"class":825},"(",[811,1133,1134],{"class":971},"trough",[811,1136,1137],{"class":825},",",[811,1139,1140],{"class":971}," aspirate_params",[811,1142,945],{"class":825},[811,1144,1146,1148,1150,1152,1154,1156,1158,1160,1163,1165,1168,1170,1173,1175,1177],{"class":813,"line":1145},25,[811,1147,1116],{"class":817},[811,1149,1119],{"class":821},[811,1151,826],{"class":825},[811,1153,1124],{"class":1006},[811,1155,826],{"class":825},[811,1157,766],{"class":971},[811,1159,1131],{"class":825},[811,1161,1162],{"class":971},"plate",[811,1164,1137],{"class":825},[811,1166,1167],{"class":971}," CoRe96DispenseParameterSet",[811,1169,1131],{"class":825},[811,1171,1172],{"class":981},"volume",[811,1174,968],{"class":825},[811,1176,988],{"class":987},[811,1178,1179],{"class":825},"))\n",[798,1181,1183,1421],{"label":1182},"Bravo",[802,1184,1186],{"className":804,"code":1185,"language":806,"meta":807,"style":807},"from unitelabs.liquid_handling.agilent.interfaces.parameters import (\n    BravoAspirateParameterSet,\n    BravoDispenseParameterSet,\n)\nfrom unitelabs.liquid_handling.modules import PipetteMode\n\naspirate_params = BravoAspirateParameterSet(\n    volume=100,\n    pipette_mode=PipetteMode.SURFACE,\n    liquid_offset=0.0,\n)\n\ndispense_params = BravoDispenseParameterSet(\n    volume=100,\n    pipette_mode=PipetteMode.BOTTOM,\n    liquid_offset=3.0,\n)\n\nawait bravo.pipette_head.aspirate(source_reservoir, aspirate_params)\nawait bravo.pipette_head.dispense(dest_plate, dispense_params)\n",[760,1187,1188,1217,1224,1231,1235,1253,1257,1268,1279,1294,1305,1309,1313,1325,1335,1349,1360,1364,1368,1395],{"__ignoreMap":807},[811,1189,1190,1192,1194,1196,1198,1200,1203,1205,1208,1210,1213,1215],{"class":813,"line":814},[811,1191,818],{"class":817},[811,1193,822],{"class":821},[811,1195,826],{"class":825},[811,1197,857],{"class":821},[811,1199,826],{"class":825},[811,1201,1202],{"class":821},"agilent",[811,1204,826],{"class":825},[811,1206,1207],{"class":821},"interfaces",[811,1209,826],{"class":825},[811,1211,1212],{"class":821},"parameters ",[811,1214,842],{"class":817},[811,1216,922],{"class":825},[811,1218,1219,1222],{"class":813,"line":848},[811,1220,1221],{"class":821},"    BravoAspirateParameterSet",[811,1223,931],{"class":825},[811,1225,1226,1229],{"class":813,"line":874},[811,1227,1228],{"class":821},"    BravoDispenseParameterSet",[811,1230,931],{"class":825},[811,1232,1233],{"class":813,"line":895},[811,1234,945],{"class":825},[811,1236,1237,1239,1241,1243,1245,1247,1249,1251],{"class":813,"line":925},[811,1238,818],{"class":817},[811,1240,822],{"class":821},[811,1242,826],{"class":825},[811,1244,857],{"class":821},[811,1246,826],{"class":825},[811,1248,887],{"class":821},[811,1250,842],{"class":817},[811,1252,892],{"class":821},[811,1254,1255],{"class":813,"line":934},[811,1256,952],{"emptyLinePlaceholder":951},[811,1258,1259,1261,1263,1266],{"class":813,"line":942},[811,1260,965],{"class":821},[811,1262,968],{"class":825},[811,1264,1265],{"class":971}," BravoAspirateParameterSet",[811,1267,975],{"class":825},[811,1269,1270,1272,1274,1277],{"class":813,"line":948},[811,1271,982],{"class":981},[811,1273,968],{"class":825},[811,1275,1276],{"class":987},"100",[811,1278,931],{"class":825},[811,1280,1281,1283,1285,1287,1289,1292],{"class":813,"line":955},[811,1282,1015],{"class":981},[811,1284,968],{"class":825},[811,1286,1020],{"class":971},[811,1288,826],{"class":825},[811,1290,1291],{"class":1006},"SURFACE",[811,1293,931],{"class":825},[811,1295,1296,1298,1300,1303],{"class":813,"line":962},[811,1297,1033],{"class":981},[811,1299,968],{"class":825},[811,1301,1302],{"class":987},"0.0",[811,1304,931],{"class":825},[811,1306,1307],{"class":813,"line":978},[811,1308,945],{"class":825},[811,1310,1311],{"class":813,"line":993},[811,1312,952],{"emptyLinePlaceholder":951},[811,1314,1315,1318,1320,1323],{"class":813,"line":1012},[811,1316,1317],{"class":821},"dispense_params ",[811,1319,968],{"class":825},[811,1321,1322],{"class":971}," BravoDispenseParameterSet",[811,1324,975],{"class":825},[811,1326,1327,1329,1331,1333],{"class":813,"line":1030},[811,1328,982],{"class":981},[811,1330,968],{"class":825},[811,1332,1276],{"class":987},[811,1334,931],{"class":825},[811,1336,1337,1339,1341,1343,1345,1347],{"class":813,"line":1043},[811,1338,1015],{"class":981},[811,1340,968],{"class":825},[811,1342,1020],{"class":971},[811,1344,826],{"class":825},[811,1346,1025],{"class":1006},[811,1348,931],{"class":825},[811,1350,1351,1353,1355,1358],{"class":813,"line":1048},[811,1352,1033],{"class":981},[811,1354,968],{"class":825},[811,1356,1357],{"class":987},"3.0",[811,1359,931],{"class":825},[811,1361,1362],{"class":813,"line":1053},[811,1363,945],{"class":825},[811,1365,1366],{"class":813,"line":1059},[811,1367,952],{"emptyLinePlaceholder":951},[811,1369,1370,1372,1375,1377,1380,1382,1384,1386,1389,1391,1393],{"class":813,"line":1075},[811,1371,1116],{"class":817},[811,1373,1374],{"class":821}," bravo",[811,1376,826],{"class":825},[811,1378,1379],{"class":1006},"pipette_head",[811,1381,826],{"class":825},[811,1383,762],{"class":971},[811,1385,1131],{"class":825},[811,1387,1388],{"class":971},"source_reservoir",[811,1390,1137],{"class":825},[811,1392,1140],{"class":971},[811,1394,945],{"class":825},[811,1396,1397,1399,1401,1403,1405,1407,1409,1411,1414,1416,1419],{"class":813,"line":1086},[811,1398,1116],{"class":817},[811,1400,1374],{"class":821},[811,1402,826],{"class":825},[811,1404,1379],{"class":1006},[811,1406,826],{"class":825},[811,1408,766],{"class":971},[811,1410,1131],{"class":825},[811,1412,1413],{"class":971},"dest_plate",[811,1415,1137],{"class":825},[811,1417,1418],{"class":971}," dispense_params",[811,1420,945],{"class":825},[756,1422,1423,1424,826],{},"For the full Bravo parameter reference see ",[785,1425,1427],{"href":1426},"\u002Foperate\u002Fdevices\u002Fagilent-bravo\u002Fbasic-pipetting\u002F","Bravo Basic Pipetting",[790,1429,1431],{"id":1430},"device-independent-parameter-sets","Device-Independent Parameter Sets",[756,1433,1434,1435,1438,1439,1442,1443,763,1445,1447,1448,1451],{},"You do not have to build a device-specific parameter set. The base ",[760,1436,1437],{},"AspirateParameterSet"," and ",[760,1440,1441],{},"DispenseParameterSet"," can be passed to any device's ",[760,1444,762],{},[760,1446,766],{},"; the set is adopted onto that device's class, carrying over equivalent fields. A field the device cannot represent is rejected with a ",[760,1449,1450],{},"ValueError"," rather than silently dropped, so the same set can be reused across instruments.",[802,1453,1455],{"className":804,"code":1454,"language":806,"meta":807,"style":807},"from unitelabs.liquid_handling.modules.parameters import (\n    AspirateParameterSet,\n    DispenseParameterSet,\n)\nfrom unitelabs.liquid_handling.modules import AspiratePipetteMode\n\n# Define once, device-independent\naspirate_params = AspirateParameterSet(\n    volume=100,\n    pipette_mode=AspiratePipetteMode.SURFACE,\n    liquid_offset=1.0,\n)\n\n# Pass the same set to either device — each adopts it onto its own class\nawait hamilton.core96.aspirate(trough, aspirate_params)\nawait bravo.pipette_head.aspirate(source_reservoir, aspirate_params)\n",[760,1456,1457,1479,1486,1493,1497,1516,1520,1525,1536,1546,1561,1572,1576,1580,1585,1609],{"__ignoreMap":807},[811,1458,1459,1461,1463,1465,1467,1469,1471,1473,1475,1477],{"class":813,"line":814},[811,1460,818],{"class":817},[811,1462,822],{"class":821},[811,1464,826],{"class":825},[811,1466,857],{"class":821},[811,1468,826],{"class":825},[811,1470,912],{"class":821},[811,1472,826],{"class":825},[811,1474,1212],{"class":821},[811,1476,842],{"class":817},[811,1478,922],{"class":825},[811,1480,1481,1484],{"class":813,"line":848},[811,1482,1483],{"class":821},"    AspirateParameterSet",[811,1485,931],{"class":825},[811,1487,1488,1491],{"class":813,"line":874},[811,1489,1490],{"class":821},"    DispenseParameterSet",[811,1492,931],{"class":825},[811,1494,1495],{"class":813,"line":895},[811,1496,945],{"class":825},[811,1498,1499,1501,1503,1505,1507,1509,1511,1513],{"class":813,"line":925},[811,1500,818],{"class":817},[811,1502,822],{"class":821},[811,1504,826],{"class":825},[811,1506,857],{"class":821},[811,1508,826],{"class":825},[811,1510,887],{"class":821},[811,1512,842],{"class":817},[811,1514,1515],{"class":821}," AspiratePipetteMode\n",[811,1517,1518],{"class":813,"line":934},[811,1519,952],{"emptyLinePlaceholder":951},[811,1521,1522],{"class":813,"line":942},[811,1523,1524],{"class":958},"# Define once, device-independent\n",[811,1526,1527,1529,1531,1534],{"class":813,"line":948},[811,1528,965],{"class":821},[811,1530,968],{"class":825},[811,1532,1533],{"class":971}," AspirateParameterSet",[811,1535,975],{"class":825},[811,1537,1538,1540,1542,1544],{"class":813,"line":955},[811,1539,982],{"class":981},[811,1541,968],{"class":825},[811,1543,1276],{"class":987},[811,1545,931],{"class":825},[811,1547,1548,1550,1552,1555,1557,1559],{"class":813,"line":962},[811,1549,1015],{"class":981},[811,1551,968],{"class":825},[811,1553,1554],{"class":971},"AspiratePipetteMode",[811,1556,826],{"class":825},[811,1558,1291],{"class":1006},[811,1560,931],{"class":825},[811,1562,1563,1565,1567,1570],{"class":813,"line":978},[811,1564,1033],{"class":981},[811,1566,968],{"class":825},[811,1568,1569],{"class":987},"1.0",[811,1571,931],{"class":825},[811,1573,1574],{"class":813,"line":993},[811,1575,945],{"class":825},[811,1577,1578],{"class":813,"line":1012},[811,1579,952],{"emptyLinePlaceholder":951},[811,1581,1582],{"class":813,"line":1030},[811,1583,1584],{"class":958},"# Pass the same set to either device — each adopts it onto its own class\n",[811,1586,1587,1589,1591,1593,1595,1597,1599,1601,1603,1605,1607],{"class":813,"line":1043},[811,1588,1116],{"class":817},[811,1590,1119],{"class":821},[811,1592,826],{"class":825},[811,1594,1124],{"class":1006},[811,1596,826],{"class":825},[811,1598,762],{"class":971},[811,1600,1131],{"class":825},[811,1602,1134],{"class":971},[811,1604,1137],{"class":825},[811,1606,1140],{"class":971},[811,1608,945],{"class":825},[811,1610,1611,1613,1615,1617,1619,1621,1623,1625,1627,1629,1631],{"class":813,"line":1048},[811,1612,1116],{"class":817},[811,1614,1374],{"class":821},[811,1616,826],{"class":825},[811,1618,1379],{"class":1006},[811,1620,826],{"class":825},[811,1622,762],{"class":971},[811,1624,1131],{"class":825},[811,1626,1388],{"class":971},[811,1628,1137],{"class":825},[811,1630,1140],{"class":971},[811,1632,945],{"class":825},[790,1634,1636],{"id":1635},"serialization","Serialization",[756,1638,1639],{},"Parameter sets can be saved to and loaded from plain dictionaries, making them easy to store in configuration files or databases.",[802,1641,1643],{"className":804,"code":1642,"language":806,"meta":807,"style":807},"# Dump to a dictionary\nsaved = aspirate_params.dumps()\nprint(saved)\n# {'volume': 150, 'lld_mode': 'OFF', 'pipette_mode': 'BOTTOM', 'liquid_offset': 1.5}\n\n# Load from a dictionary (string values for enum fields)\nloaded = CoRe96AspirateParameterSet.loads(saved)\nassert loaded == aspirate_params\n",[760,1644,1645,1650,1667,1679,1684,1688,1693,1713],{"__ignoreMap":807},[811,1646,1647],{"class":813,"line":814},[811,1648,1649],{"class":958},"# Dump to a dictionary\n",[811,1651,1652,1655,1657,1659,1661,1664],{"class":813,"line":848},[811,1653,1654],{"class":821},"saved ",[811,1656,968],{"class":825},[811,1658,1140],{"class":821},[811,1660,826],{"class":825},[811,1662,1663],{"class":971},"dumps",[811,1665,1666],{"class":825},"()\n",[811,1668,1669,1672,1674,1677],{"class":813,"line":874},[811,1670,1671],{"class":971},"print",[811,1673,1131],{"class":825},[811,1675,1676],{"class":971},"saved",[811,1678,945],{"class":825},[811,1680,1681],{"class":813,"line":895},[811,1682,1683],{"class":958},"# {'volume': 150, 'lld_mode': 'OFF', 'pipette_mode': 'BOTTOM', 'liquid_offset': 1.5}\n",[811,1685,1686],{"class":813,"line":925},[811,1687,952],{"emptyLinePlaceholder":951},[811,1689,1690],{"class":813,"line":934},[811,1691,1692],{"class":958},"# Load from a dictionary (string values for enum fields)\n",[811,1694,1695,1698,1700,1702,1704,1707,1709,1711],{"class":813,"line":942},[811,1696,1697],{"class":821},"loaded ",[811,1699,968],{"class":825},[811,1701,972],{"class":821},[811,1703,826],{"class":825},[811,1705,1706],{"class":971},"loads",[811,1708,1131],{"class":825},[811,1710,1676],{"class":971},[811,1712,945],{"class":825},[811,1714,1715,1718,1721,1724],{"class":813,"line":948},[811,1716,1717],{"class":817},"assert",[811,1719,1720],{"class":821}," loaded ",[811,1722,1723],{"class":825},"==",[811,1725,1726],{"class":821}," aspirate_params\n",[790,1728,1730],{"id":1729},"copy-and-update","Copy and Update",[802,1732,1734],{"className":804,"code":1733,"language":806,"meta":807,"style":807},"# Copy\ncopy = aspirate_params.copy()\n\n# Update (modifies in place, also returns the updated set)\naspirate_params.update(\n    CoRe96AspirateParameterSet(liquid_offset=2.0)\n)\n\n# Update only missing fields\naspirate_params.update(\n    CoRe96AspirateParameterSet(liquid_offset=2.0),\n    missing_only=True,\n)\n",[760,1735,1736,1741,1757,1761,1766,1778,1794,1798,1802,1807,1817,1832,1840],{"__ignoreMap":807},[811,1737,1738],{"class":813,"line":814},[811,1739,1740],{"class":958},"# Copy\n",[811,1742,1743,1746,1748,1750,1752,1755],{"class":813,"line":848},[811,1744,1745],{"class":821},"copy ",[811,1747,968],{"class":825},[811,1749,1140],{"class":821},[811,1751,826],{"class":825},[811,1753,1754],{"class":971},"copy",[811,1756,1666],{"class":825},[811,1758,1759],{"class":813,"line":874},[811,1760,952],{"emptyLinePlaceholder":951},[811,1762,1763],{"class":813,"line":895},[811,1764,1765],{"class":958},"# Update (modifies in place, also returns the updated set)\n",[811,1767,1768,1771,1773,1776],{"class":813,"line":925},[811,1769,1770],{"class":821},"aspirate_params",[811,1772,826],{"class":825},[811,1774,1775],{"class":971},"update",[811,1777,975],{"class":825},[811,1779,1780,1782,1784,1787,1789,1792],{"class":813,"line":934},[811,1781,928],{"class":971},[811,1783,1131],{"class":825},[811,1785,1786],{"class":981},"liquid_offset",[811,1788,968],{"class":825},[811,1790,1791],{"class":987},"2.0",[811,1793,945],{"class":825},[811,1795,1796],{"class":813,"line":942},[811,1797,945],{"class":825},[811,1799,1800],{"class":813,"line":948},[811,1801,952],{"emptyLinePlaceholder":951},[811,1803,1804],{"class":813,"line":955},[811,1805,1806],{"class":958},"# Update only missing fields\n",[811,1808,1809,1811,1813,1815],{"class":813,"line":962},[811,1810,1770],{"class":821},[811,1812,826],{"class":825},[811,1814,1775],{"class":971},[811,1816,975],{"class":825},[811,1818,1819,1821,1823,1825,1827,1829],{"class":813,"line":978},[811,1820,928],{"class":971},[811,1822,1131],{"class":825},[811,1824,1786],{"class":981},[811,1826,968],{"class":825},[811,1828,1791],{"class":987},[811,1830,1831],{"class":825},"),\n",[811,1833,1834,1837],{"class":813,"line":993},[811,1835,1836],{"class":981},"    missing_only",[811,1838,1839],{"class":825},"=True,\n",[811,1841,1842],{"class":813,"line":1012},[811,1843,945],{"class":825},[1845,1846],"hr",{},[790,1848,1850],{"id":1849},"hamilton-context-validation","Hamilton: Context & Validation",[1852,1853,1855],"callout",{"icon":1854},"i-heroicons-information-circle",[756,1856,1857],{},"This section is Hamilton-specific. The context system validates parameter sets against live liquid handler state (tip volume, container fill level, module configuration) before a run.",[756,1859,1860,1861,1864,1865,1868,1869,1872],{},"A context captures the current state of the module and target labware. ",[760,1862,1863],{},"validate"," checks the parameter set against the context without running; ",[760,1866,1867],{},"compile"," resolves all ",[760,1870,1871],{},"MISSING"," fields into concrete values.",[802,1874,1876],{"className":804,"code":1875,"language":806,"meta":807,"style":807},"from unitelabs.liquid_handling.hamilton.modules.core96 import CoRe96Context\n\ncontext = CoRe96Context(module=hamilton.core96, target=plate)\n\n# Explicit validate + compile (optional — done automatically inside aspirate\u002Fdispense)\nassert aspirate_params.validate(context)\ncompiled = aspirate_params.compile(context)\n",[760,1877,1878,1905,1909,1943,1947,1952,1969],{"__ignoreMap":807},[811,1879,1880,1882,1884,1886,1888,1890,1892,1894,1896,1898,1900,1902],{"class":813,"line":814},[811,1881,818],{"class":817},[811,1883,822],{"class":821},[811,1885,826],{"class":825},[811,1887,857],{"class":821},[811,1889,826],{"class":825},[811,1891,834],{"class":821},[811,1893,826],{"class":825},[811,1895,912],{"class":821},[811,1897,826],{"class":825},[811,1899,917],{"class":821},[811,1901,842],{"class":817},[811,1903,1904],{"class":821}," CoRe96Context\n",[811,1906,1907],{"class":813,"line":848},[811,1908,952],{"emptyLinePlaceholder":951},[811,1910,1911,1914,1916,1919,1921,1924,1926,1928,1930,1932,1934,1937,1939,1941],{"class":813,"line":874},[811,1912,1913],{"class":821},"context ",[811,1915,968],{"class":825},[811,1917,1918],{"class":971}," CoRe96Context",[811,1920,1131],{"class":825},[811,1922,1923],{"class":981},"module",[811,1925,968],{"class":825},[811,1927,834],{"class":971},[811,1929,826],{"class":825},[811,1931,1124],{"class":1006},[811,1933,1137],{"class":825},[811,1935,1936],{"class":981}," target",[811,1938,968],{"class":825},[811,1940,1162],{"class":971},[811,1942,945],{"class":825},[811,1944,1945],{"class":813,"line":895},[811,1946,952],{"emptyLinePlaceholder":951},[811,1948,1949],{"class":813,"line":925},[811,1950,1951],{"class":958},"# Explicit validate + compile (optional — done automatically inside aspirate\u002Fdispense)\n",[811,1953,1954,1956,1958,1960,1962,1964,1967],{"class":813,"line":934},[811,1955,1717],{"class":817},[811,1957,1140],{"class":821},[811,1959,826],{"class":825},[811,1961,1863],{"class":971},[811,1963,1131],{"class":825},[811,1965,1966],{"class":971},"context",[811,1968,945],{"class":825},[811,1970,1971,1974,1976,1978,1980,1982,1984,1986],{"class":813,"line":942},[811,1972,1973],{"class":821},"compiled ",[811,1975,968],{"class":825},[811,1977,1140],{"class":821},[811,1979,826],{"class":825},[811,1981,1867],{"class":971},[811,1983,1131],{"class":825},[811,1985,1966],{"class":971},[811,1987,945],{"class":825},[1989,1990,1992],"h3",{"id":1991},"missing-fields","Missing Fields",[756,1994,1995,1996,1998],{},"Omit any field to let the context fill it in at compile time. For example, ",[760,1997,1172],{}," defaults to the minimum of the tip's free volume and the container's available volume.",[802,2000,2002],{"className":804,"code":2001,"language":806,"meta":807,"style":807},"# Fully default parameter set — all fields resolved from context\ndefault_aspiration = CoRe96AspirateParameterSet()\nawait hamilton.core96.aspirate(trough, default_aspiration)\n",[760,2003,2004,2009,2020],{"__ignoreMap":807},[811,2005,2006],{"class":813,"line":814},[811,2007,2008],{"class":958},"# Fully default parameter set — all fields resolved from context\n",[811,2010,2011,2014,2016,2018],{"class":813,"line":848},[811,2012,2013],{"class":821},"default_aspiration ",[811,2015,968],{"class":825},[811,2017,972],{"class":971},[811,2019,1666],{"class":825},[811,2021,2022,2024,2026,2028,2030,2032,2034,2036,2038,2040,2043],{"class":813,"line":874},[811,2023,1116],{"class":817},[811,2025,1119],{"class":821},[811,2027,826],{"class":825},[811,2029,1124],{"class":1006},[811,2031,826],{"class":825},[811,2033,762],{"class":971},[811,2035,1131],{"class":825},[811,2037,1134],{"class":971},[811,2039,1137],{"class":825},[811,2041,2042],{"class":971}," default_aspiration",[811,2044,945],{"class":825},[756,2046,2047],{},"Always provide explicit values for fields that must stay constant across different deck states.",[1989,2049,2051],{"id":2050},"previewing-resolved-defaults","Previewing Resolved Defaults",[756,2053,2054,2056,2057,2061,2062,2065,2066,2068],{},[760,2055,1867],{}," returns the low-level dictionary sent to the instrument. To see how your inputs resolve ",[2058,2059,2060],"em",{},"as a parameter set"," — without running anything — use ",[760,2063,2064],{},"show_defaults",". It returns a copy with every ",[760,2067,1871],{}," field replaced by the value it would default to for the given context, and passes fields you set explicitly through their resolver so you see the effective value.",[802,2070,2072],{"className":804,"code":2071,"language":806,"meta":807,"style":807},"context = CoRe96Context(module=hamilton.core96, target=plate)\n\nparams = CoRe96AspirateParameterSet(volume=150)\nresolved = params.show_defaults(context)\n\n# `volume` was set explicitly, so it comes back unchanged.\nassert resolved.volume == 150\n\n# `liquid_offset` was MISSING; the result shows what the context inferred.\nprint(resolved.liquid_offset)\n",[760,2073,2074,2104,2108,2127,2147,2151,2156,2173,2177,2182],{"__ignoreMap":807},[811,2075,2076,2078,2080,2082,2084,2086,2088,2090,2092,2094,2096,2098,2100,2102],{"class":813,"line":814},[811,2077,1913],{"class":821},[811,2079,968],{"class":825},[811,2081,1918],{"class":971},[811,2083,1131],{"class":825},[811,2085,1923],{"class":981},[811,2087,968],{"class":825},[811,2089,834],{"class":971},[811,2091,826],{"class":825},[811,2093,1124],{"class":1006},[811,2095,1137],{"class":825},[811,2097,1936],{"class":981},[811,2099,968],{"class":825},[811,2101,1162],{"class":971},[811,2103,945],{"class":825},[811,2105,2106],{"class":813,"line":848},[811,2107,952],{"emptyLinePlaceholder":951},[811,2109,2110,2113,2115,2117,2119,2121,2123,2125],{"class":813,"line":874},[811,2111,2112],{"class":821},"params ",[811,2114,968],{"class":825},[811,2116,972],{"class":971},[811,2118,1131],{"class":825},[811,2120,1172],{"class":981},[811,2122,968],{"class":825},[811,2124,988],{"class":987},[811,2126,945],{"class":825},[811,2128,2129,2132,2134,2137,2139,2141,2143,2145],{"class":813,"line":895},[811,2130,2131],{"class":821},"resolved ",[811,2133,968],{"class":825},[811,2135,2136],{"class":821}," params",[811,2138,826],{"class":825},[811,2140,2064],{"class":971},[811,2142,1131],{"class":825},[811,2144,1966],{"class":971},[811,2146,945],{"class":825},[811,2148,2149],{"class":813,"line":925},[811,2150,952],{"emptyLinePlaceholder":951},[811,2152,2153],{"class":813,"line":934},[811,2154,2155],{"class":958},"# `volume` was set explicitly, so it comes back unchanged.\n",[811,2157,2158,2160,2163,2165,2167,2170],{"class":813,"line":942},[811,2159,1717],{"class":817},[811,2161,2162],{"class":821}," resolved",[811,2164,826],{"class":825},[811,2166,1172],{"class":1006},[811,2168,2169],{"class":825}," ==",[811,2171,2172],{"class":987}," 150\n",[811,2174,2175],{"class":813,"line":948},[811,2176,952],{"emptyLinePlaceholder":951},[811,2178,2179],{"class":813,"line":955},[811,2180,2181],{"class":958},"# `liquid_offset` was MISSING; the result shows what the context inferred.\n",[811,2183,2184,2186,2188,2191,2193,2195],{"class":813,"line":962},[811,2185,1671],{"class":971},[811,2187,1131],{"class":825},[811,2189,2190],{"class":971},"resolved",[811,2192,826],{"class":825},[811,2194,1786],{"class":1006},[811,2196,945],{"class":825},[756,2198,2199,2200,2202],{},"Compare a field between the original and the result to tell whether a value was inferred: a field that is ",[760,2201,1871],{}," before but populated after was defaulted.",[756,2204,2205,2206,1438,2209,2212,2213,2216,2217,2220,2221,2223,2224,2227,2228,2230],{},"Resolution recurses into nested parameter sets, so ",[760,2207,2208],{},"mixing",[760,2210,2211],{},"tadm"," are resolved too. For example, a ",[760,2214,2215],{},"MixingParameterSet"," with no ",[760,2218,2219],{},"cycles"," reports the effective ",[760,2222,2219],{}," (",[760,2225,2226],{},"0",", i.e. no mixing) rather than ",[760,2229,1871],{},":",[802,2232,2234],{"className":804,"code":2233,"language":806,"meta":807,"style":807},"from unitelabs.labware import MISSING\n\naspiration = CoRe96AspirateParameterSet(mixing=MixingParameterSet(volume=50))\n\n# Before: cycles is unset.\nassert aspiration.mixing.cycles is MISSING\n\n# After: cycles reports its effective value (0 = no mixing).\nresolved = aspiration.show_defaults(context)\nassert resolved.mixing.cycles == 0\n",[760,2235,2236,2252,2256,2284,2288,2293,2313,2317,2322,2340],{"__ignoreMap":807},[811,2237,2238,2240,2242,2244,2247,2249],{"class":813,"line":814},[811,2239,818],{"class":817},[811,2241,822],{"class":821},[811,2243,826],{"class":825},[811,2245,2246],{"class":821},"labware ",[811,2248,842],{"class":817},[811,2250,2251],{"class":821}," MISSING\n",[811,2253,2254],{"class":813,"line":848},[811,2255,952],{"emptyLinePlaceholder":951},[811,2257,2258,2261,2263,2265,2267,2269,2271,2273,2275,2277,2279,2282],{"class":813,"line":874},[811,2259,2260],{"class":821},"aspiration ",[811,2262,968],{"class":825},[811,2264,972],{"class":971},[811,2266,1131],{"class":825},[811,2268,2208],{"class":981},[811,2270,968],{"class":825},[811,2272,2215],{"class":971},[811,2274,1131],{"class":825},[811,2276,1172],{"class":981},[811,2278,968],{"class":825},[811,2280,2281],{"class":987},"50",[811,2283,1179],{"class":825},[811,2285,2286],{"class":813,"line":895},[811,2287,952],{"emptyLinePlaceholder":951},[811,2289,2290],{"class":813,"line":925},[811,2291,2292],{"class":958},"# Before: cycles is unset.\n",[811,2294,2295,2297,2300,2302,2304,2306,2308,2311],{"class":813,"line":934},[811,2296,1717],{"class":817},[811,2298,2299],{"class":821}," aspiration",[811,2301,826],{"class":825},[811,2303,2208],{"class":1006},[811,2305,826],{"class":825},[811,2307,2219],{"class":1006},[811,2309,2310],{"class":825}," is",[811,2312,2251],{"class":821},[811,2314,2315],{"class":813,"line":942},[811,2316,952],{"emptyLinePlaceholder":951},[811,2318,2319],{"class":813,"line":948},[811,2320,2321],{"class":958},"# After: cycles reports its effective value (0 = no mixing).\n",[811,2323,2324,2326,2328,2330,2332,2334,2336,2338],{"class":813,"line":955},[811,2325,2131],{"class":821},[811,2327,968],{"class":825},[811,2329,2299],{"class":821},[811,2331,826],{"class":825},[811,2333,2064],{"class":971},[811,2335,1131],{"class":825},[811,2337,1966],{"class":971},[811,2339,945],{"class":825},[811,2341,2342,2344,2346,2348,2350,2352,2354,2356],{"class":813,"line":962},[811,2343,1717],{"class":817},[811,2345,2162],{"class":821},[811,2347,826],{"class":825},[811,2349,2208],{"class":1006},[811,2351,826],{"class":825},[811,2353,2219],{"class":1006},[811,2355,2169],{"class":825},[811,2357,2358],{"class":987}," 0\n",[756,2360,2361,2363,2364,2366,2367,2370],{},[760,2362,2064],{}," emits the same warnings as ",[760,2365,1867],{},"; capture them with ",[760,2368,2369],{},"warnings.catch_warnings"," if you want to inspect them. The original set is never mutated — the result is always a fresh copy of the same type.",[1989,2372,2374],{"id":2373},"nested-parameter-sets","Nested Parameter Sets",[756,2376,2377],{},"Mixing and TADM settings are nested inside aspirate\u002Fdispense parameter sets.",[802,2379,2381],{"className":804,"code":2380,"language":806,"meta":807,"style":807},"from unitelabs.liquid_handling.hamilton.modules.core96 import (\n    MixingParameterSet,\n    TADMParameterSet,\n    TADMMode,\n)\n\nmix_3x50 = MixingParameterSet(volume=50, cycles=3)\n\naspiration = CoRe96AspirateParameterSet(\n    volume=150,\n    mixing=mix_3x50,\n)\ndispense = CoRe96DispenseParameterSet(\n    volume=150,\n    mixing=mix_3x50,\n    tadm=TADMParameterSet(tadm_mode=TADMMode.ON, tadm_limit_curve=1),\n)\n\nawait hamilton.core96.aspirate(trough, aspiration)\nawait hamilton.core96.dispense(plate, dispense)\n",[760,2382,2383,2409,2416,2423,2430,2434,2438,2468,2472,2482,2492,2504,2508,2519,2529,2539,2576,2580,2584,2608],{"__ignoreMap":807},[811,2384,2385,2387,2389,2391,2393,2395,2397,2399,2401,2403,2405,2407],{"class":813,"line":814},[811,2386,818],{"class":817},[811,2388,822],{"class":821},[811,2390,826],{"class":825},[811,2392,857],{"class":821},[811,2394,826],{"class":825},[811,2396,834],{"class":821},[811,2398,826],{"class":825},[811,2400,912],{"class":821},[811,2402,826],{"class":825},[811,2404,917],{"class":821},[811,2406,842],{"class":817},[811,2408,922],{"class":825},[811,2410,2411,2414],{"class":813,"line":848},[811,2412,2413],{"class":821},"    MixingParameterSet",[811,2415,931],{"class":825},[811,2417,2418,2421],{"class":813,"line":874},[811,2419,2420],{"class":821},"    TADMParameterSet",[811,2422,931],{"class":825},[811,2424,2425,2428],{"class":813,"line":895},[811,2426,2427],{"class":821},"    TADMMode",[811,2429,931],{"class":825},[811,2431,2432],{"class":813,"line":925},[811,2433,945],{"class":825},[811,2435,2436],{"class":813,"line":934},[811,2437,952],{"emptyLinePlaceholder":951},[811,2439,2440,2443,2445,2448,2450,2452,2454,2456,2458,2461,2463,2466],{"class":813,"line":942},[811,2441,2442],{"class":821},"mix_3x50 ",[811,2444,968],{"class":825},[811,2446,2447],{"class":971}," MixingParameterSet",[811,2449,1131],{"class":825},[811,2451,1172],{"class":981},[811,2453,968],{"class":825},[811,2455,2281],{"class":987},[811,2457,1137],{"class":825},[811,2459,2460],{"class":981}," cycles",[811,2462,968],{"class":825},[811,2464,2465],{"class":987},"3",[811,2467,945],{"class":825},[811,2469,2470],{"class":813,"line":948},[811,2471,952],{"emptyLinePlaceholder":951},[811,2473,2474,2476,2478,2480],{"class":813,"line":955},[811,2475,2260],{"class":821},[811,2477,968],{"class":825},[811,2479,972],{"class":971},[811,2481,975],{"class":825},[811,2483,2484,2486,2488,2490],{"class":813,"line":962},[811,2485,982],{"class":981},[811,2487,968],{"class":825},[811,2489,988],{"class":987},[811,2491,931],{"class":825},[811,2493,2494,2497,2499,2502],{"class":813,"line":978},[811,2495,2496],{"class":981},"    mixing",[811,2498,968],{"class":825},[811,2500,2501],{"class":971},"mix_3x50",[811,2503,931],{"class":825},[811,2505,2506],{"class":813,"line":993},[811,2507,945],{"class":825},[811,2509,2510,2513,2515,2517],{"class":813,"line":1012},[811,2511,2512],{"class":821},"dispense ",[811,2514,968],{"class":825},[811,2516,1167],{"class":971},[811,2518,975],{"class":825},[811,2520,2521,2523,2525,2527],{"class":813,"line":1030},[811,2522,982],{"class":981},[811,2524,968],{"class":825},[811,2526,988],{"class":987},[811,2528,931],{"class":825},[811,2530,2531,2533,2535,2537],{"class":813,"line":1043},[811,2532,2496],{"class":981},[811,2534,968],{"class":825},[811,2536,2501],{"class":971},[811,2538,931],{"class":825},[811,2540,2541,2544,2546,2549,2551,2554,2556,2559,2561,2564,2566,2569,2571,2574],{"class":813,"line":1048},[811,2542,2543],{"class":981},"    tadm",[811,2545,968],{"class":825},[811,2547,2548],{"class":971},"TADMParameterSet",[811,2550,1131],{"class":825},[811,2552,2553],{"class":981},"tadm_mode",[811,2555,968],{"class":825},[811,2557,2558],{"class":971},"TADMMode",[811,2560,826],{"class":825},[811,2562,2563],{"class":1006},"ON",[811,2565,1137],{"class":825},[811,2567,2568],{"class":981}," tadm_limit_curve",[811,2570,968],{"class":825},[811,2572,2573],{"class":987},"1",[811,2575,1831],{"class":825},[811,2577,2578],{"class":813,"line":1053},[811,2579,945],{"class":825},[811,2581,2582],{"class":813,"line":1059},[811,2583,952],{"emptyLinePlaceholder":951},[811,2585,2586,2588,2590,2592,2594,2596,2598,2600,2602,2604,2606],{"class":813,"line":1075},[811,2587,1116],{"class":817},[811,2589,1119],{"class":821},[811,2591,826],{"class":825},[811,2593,1124],{"class":1006},[811,2595,826],{"class":825},[811,2597,762],{"class":971},[811,2599,1131],{"class":825},[811,2601,1134],{"class":971},[811,2603,1137],{"class":825},[811,2605,2299],{"class":971},[811,2607,945],{"class":825},[811,2609,2610,2612,2614,2616,2618,2620,2622,2624,2626,2628,2631],{"class":813,"line":1086},[811,2611,1116],{"class":817},[811,2613,1119],{"class":821},[811,2615,826],{"class":825},[811,2617,1124],{"class":1006},[811,2619,826],{"class":825},[811,2621,766],{"class":971},[811,2623,1131],{"class":825},[811,2625,1162],{"class":971},[811,2627,1137],{"class":825},[811,2629,2630],{"class":971}," dispense",[811,2632,945],{"class":825},[1845,2634],{},[790,2636,2638],{"id":2637},"hamilton-channels-parameter-sets","Hamilton: Channels Parameter Sets",[1852,2640,2641],{"icon":1854},[756,2642,2643],{},"This section is Hamilton-specific. Channels parameter sets represent operations across multiple independent pipetting channels simultaneously.",[756,2645,2646],{},"Each channel can have a different volume, liquid offset, or mixing step. Think of a channels parameter set as a list of per-channel sub-parameter sets.",[802,2648,2650],{"className":804,"code":2649,"language":806,"meta":807,"style":807},"from unitelabs.liquid_handling.hamilton.modules.pipettes import ChannelsAspirateParameterSet\n\naspirate_channels = ChannelsAspirateParameterSet(\n    channels=[0, 2, 4, 6],         # zero-based channel indices\n    volume=[100, 200, 300, 400],    # one value per channel\n    liquid_offset=1.5,              # single value → applied to all channels\n    lld_mode=False,\n    mixing=[mix_3x50, MixingParameterSet()] * 2,\n)\n",[760,2651,2652,2680,2684,2696,2727,2755,2768,2775,2797],{"__ignoreMap":807},[811,2653,2654,2656,2658,2660,2662,2664,2666,2668,2670,2672,2675,2677],{"class":813,"line":814},[811,2655,818],{"class":817},[811,2657,822],{"class":821},[811,2659,826],{"class":825},[811,2661,857],{"class":821},[811,2663,826],{"class":825},[811,2665,834],{"class":821},[811,2667,826],{"class":825},[811,2669,912],{"class":821},[811,2671,826],{"class":825},[811,2673,2674],{"class":821},"pipettes ",[811,2676,842],{"class":817},[811,2678,2679],{"class":821}," ChannelsAspirateParameterSet\n",[811,2681,2682],{"class":813,"line":848},[811,2683,952],{"emptyLinePlaceholder":951},[811,2685,2686,2689,2691,2694],{"class":813,"line":874},[811,2687,2688],{"class":821},"aspirate_channels ",[811,2690,968],{"class":825},[811,2692,2693],{"class":971}," ChannelsAspirateParameterSet",[811,2695,975],{"class":825},[811,2697,2698,2701,2704,2706,2708,2711,2713,2716,2718,2721,2724],{"class":813,"line":895},[811,2699,2700],{"class":981},"    channels",[811,2702,2703],{"class":825},"=[",[811,2705,2226],{"class":987},[811,2707,1137],{"class":825},[811,2709,2710],{"class":987}," 2",[811,2712,1137],{"class":825},[811,2714,2715],{"class":987}," 4",[811,2717,1137],{"class":825},[811,2719,2720],{"class":987}," 6",[811,2722,2723],{"class":825},"],",[811,2725,2726],{"class":958},"         # zero-based channel indices\n",[811,2728,2729,2731,2733,2735,2737,2740,2742,2745,2747,2750,2752],{"class":813,"line":925},[811,2730,982],{"class":981},[811,2732,2703],{"class":825},[811,2734,1276],{"class":987},[811,2736,1137],{"class":825},[811,2738,2739],{"class":987}," 200",[811,2741,1137],{"class":825},[811,2743,2744],{"class":987}," 300",[811,2746,1137],{"class":825},[811,2748,2749],{"class":987}," 400",[811,2751,2723],{"class":825},[811,2753,2754],{"class":958},"    # one value per channel\n",[811,2756,2757,2759,2761,2763,2765],{"class":813,"line":934},[811,2758,1033],{"class":981},[811,2760,968],{"class":825},[811,2762,1038],{"class":987},[811,2764,1137],{"class":825},[811,2766,2767],{"class":958},"              # single value → applied to all channels\n",[811,2769,2770,2772],{"class":813,"line":942},[811,2771,996],{"class":981},[811,2773,2774],{"class":825},"=False,\n",[811,2776,2777,2779,2781,2783,2785,2787,2790,2793,2795],{"class":813,"line":948},[811,2778,2496],{"class":981},[811,2780,2703],{"class":825},[811,2782,2501],{"class":971},[811,2784,1137],{"class":825},[811,2786,2447],{"class":971},[811,2788,2789],{"class":825},"()]",[811,2791,2792],{"class":825}," *",[811,2794,2710],{"class":987},[811,2796,931],{"class":825},[811,2798,2799],{"class":813,"line":955},[811,2800,945],{"class":825},[756,2802,2803,2804,826],{},"Scalar fields are broadcast to all channels; list fields must match the length of ",[760,2805,2806],{},"channels",[1989,2808,2810],{"id":2809},"channels-context","Channels Context",[802,2812,2814],{"className":804,"code":2813,"language":806,"meta":807,"style":807},"from unitelabs.liquid_handling.hamilton.modules.pipettes import ChannelsContext\n\ncontext = ChannelsContext(\n    channels=[0, 2, 4, 6],\n    module=hamilton.pipettes,\n    target=[plate[\"A1\"], plate[\"C1\"], plate[\"E1\"], plate[\"G1\"]],\n)\n\nassert aspirate_channels.validate(context)\n",[760,2815,2816,2843,2847,2858,2881,2897,2961,2965,2969],{"__ignoreMap":807},[811,2817,2818,2820,2822,2824,2826,2828,2830,2832,2834,2836,2838,2840],{"class":813,"line":814},[811,2819,818],{"class":817},[811,2821,822],{"class":821},[811,2823,826],{"class":825},[811,2825,857],{"class":821},[811,2827,826],{"class":825},[811,2829,834],{"class":821},[811,2831,826],{"class":825},[811,2833,912],{"class":821},[811,2835,826],{"class":825},[811,2837,2674],{"class":821},[811,2839,842],{"class":817},[811,2841,2842],{"class":821}," ChannelsContext\n",[811,2844,2845],{"class":813,"line":848},[811,2846,952],{"emptyLinePlaceholder":951},[811,2848,2849,2851,2853,2856],{"class":813,"line":874},[811,2850,1913],{"class":821},[811,2852,968],{"class":825},[811,2854,2855],{"class":971}," ChannelsContext",[811,2857,975],{"class":825},[811,2859,2860,2862,2864,2866,2868,2870,2872,2874,2876,2878],{"class":813,"line":895},[811,2861,2700],{"class":981},[811,2863,2703],{"class":825},[811,2865,2226],{"class":987},[811,2867,1137],{"class":825},[811,2869,2710],{"class":987},[811,2871,1137],{"class":825},[811,2873,2715],{"class":987},[811,2875,1137],{"class":825},[811,2877,2720],{"class":987},[811,2879,2880],{"class":825},"],\n",[811,2882,2883,2886,2888,2890,2892,2895],{"class":813,"line":925},[811,2884,2885],{"class":981},"    module",[811,2887,968],{"class":825},[811,2889,834],{"class":971},[811,2891,826],{"class":825},[811,2893,2894],{"class":1006},"pipettes",[811,2896,931],{"class":825},[811,2898,2899,2902,2904,2906,2909,2912,2916,2918,2920,2923,2925,2927,2930,2932,2934,2936,2938,2940,2943,2945,2947,2949,2951,2953,2956,2958],{"class":813,"line":934},[811,2900,2901],{"class":981},"    target",[811,2903,2703],{"class":825},[811,2905,1162],{"class":971},[811,2907,2908],{"class":825},"[",[811,2910,2911],{"class":825},"\"",[811,2913,2915],{"class":2914},"sfazB","A1",[811,2917,2911],{"class":825},[811,2919,2723],{"class":825},[811,2921,2922],{"class":971}," plate",[811,2924,2908],{"class":825},[811,2926,2911],{"class":825},[811,2928,2929],{"class":2914},"C1",[811,2931,2911],{"class":825},[811,2933,2723],{"class":825},[811,2935,2922],{"class":971},[811,2937,2908],{"class":825},[811,2939,2911],{"class":825},[811,2941,2942],{"class":2914},"E1",[811,2944,2911],{"class":825},[811,2946,2723],{"class":825},[811,2948,2922],{"class":971},[811,2950,2908],{"class":825},[811,2952,2911],{"class":825},[811,2954,2955],{"class":2914},"G1",[811,2957,2911],{"class":825},[811,2959,2960],{"class":825},"]],\n",[811,2962,2963],{"class":813,"line":942},[811,2964,945],{"class":825},[811,2966,2967],{"class":813,"line":948},[811,2968,952],{"emptyLinePlaceholder":951},[811,2970,2971,2973,2976,2978,2980,2982,2984],{"class":813,"line":955},[811,2972,1717],{"class":817},[811,2974,2975],{"class":821}," aspirate_channels",[811,2977,826],{"class":825},[811,2979,1863],{"class":971},[811,2981,1131],{"class":825},[811,2983,1966],{"class":971},[811,2985,945],{"class":825},[1989,2987,2989],{"id":2988},"building-from-sub-parameters","Building from Sub-Parameters",[802,2991,2993],{"className":804,"code":2992,"language":806,"meta":807,"style":807},"from unitelabs.liquid_handling.hamilton.modules.pipettes import ChannelAspirateParameterSet\n\nsub_params = [ChannelAspirateParameterSet(liquid_offset=i, volume=100\u002Fi) for i in range(1, 5)]\n\nchannels_aspirate = ChannelsAspirateParameterSet.from_sub_parameters(\n    channels=[3, 4, 5, 6],\n    sub_parameters=sub_params,\n)\n",[760,2994,2995,3022,3026,3088,3092,3108,3130,3142],{"__ignoreMap":807},[811,2996,2997,2999,3001,3003,3005,3007,3009,3011,3013,3015,3017,3019],{"class":813,"line":814},[811,2998,818],{"class":817},[811,3000,822],{"class":821},[811,3002,826],{"class":825},[811,3004,857],{"class":821},[811,3006,826],{"class":825},[811,3008,834],{"class":821},[811,3010,826],{"class":825},[811,3012,912],{"class":821},[811,3014,826],{"class":825},[811,3016,2674],{"class":821},[811,3018,842],{"class":817},[811,3020,3021],{"class":821}," ChannelAspirateParameterSet\n",[811,3023,3024],{"class":813,"line":848},[811,3025,952],{"emptyLinePlaceholder":951},[811,3027,3028,3031,3033,3036,3039,3041,3043,3045,3048,3050,3053,3055,3057,3060,3062,3064,3067,3070,3073,3076,3078,3080,3082,3085],{"class":813,"line":874},[811,3029,3030],{"class":821},"sub_params ",[811,3032,968],{"class":825},[811,3034,3035],{"class":825}," [",[811,3037,3038],{"class":971},"ChannelAspirateParameterSet",[811,3040,1131],{"class":825},[811,3042,1786],{"class":981},[811,3044,968],{"class":825},[811,3046,3047],{"class":971},"i",[811,3049,1137],{"class":825},[811,3051,3052],{"class":981}," volume",[811,3054,968],{"class":825},[811,3056,1276],{"class":987},[811,3058,3059],{"class":825},"\u002F",[811,3061,3047],{"class":971},[811,3063,788],{"class":825},[811,3065,3066],{"class":817}," for",[811,3068,3069],{"class":821}," i ",[811,3071,3072],{"class":817},"in",[811,3074,3075],{"class":971}," range",[811,3077,1131],{"class":825},[811,3079,2573],{"class":987},[811,3081,1137],{"class":825},[811,3083,3084],{"class":987}," 5",[811,3086,3087],{"class":825},")]\n",[811,3089,3090],{"class":813,"line":895},[811,3091,952],{"emptyLinePlaceholder":951},[811,3093,3094,3097,3099,3101,3103,3106],{"class":813,"line":925},[811,3095,3096],{"class":821},"channels_aspirate ",[811,3098,968],{"class":825},[811,3100,2693],{"class":821},[811,3102,826],{"class":825},[811,3104,3105],{"class":971},"from_sub_parameters",[811,3107,975],{"class":825},[811,3109,3110,3112,3114,3116,3118,3120,3122,3124,3126,3128],{"class":813,"line":934},[811,3111,2700],{"class":981},[811,3113,2703],{"class":825},[811,3115,2465],{"class":987},[811,3117,1137],{"class":825},[811,3119,2715],{"class":987},[811,3121,1137],{"class":825},[811,3123,3084],{"class":987},[811,3125,1137],{"class":825},[811,3127,2720],{"class":987},[811,3129,2880],{"class":825},[811,3131,3132,3135,3137,3140],{"class":813,"line":942},[811,3133,3134],{"class":981},"    sub_parameters",[811,3136,968],{"class":825},[811,3138,3139],{"class":971},"sub_params",[811,3141,931],{"class":825},[811,3143,3144],{"class":813,"line":948},[811,3145,945],{"class":825},[1845,3147],{},[790,3149,3151],{"id":3150},"compiled-parameters-glossary","Compiled Parameters Glossary",[756,3153,3154,3155,3158,3159,1438,3162,3165,3166,3169],{},"The tables below describe the dictionary keys returned by ",[760,3156,3157],{},"compile()"," for ",[760,3160,3161],{},"CoRe96AspirateParameterSet",[760,3163,3164],{},"CoRe96DispenseParameterSet",". Fields marked ",[2058,3167,3168],{},"from liquid class"," should be set on the liquid class before passing it to the parameter set.",[1989,3171,3173],{"id":3172},"core96aspirateparameterset",[760,3174,3161],{},[3176,3177,3178,3194],"table",{},[3179,3180,3181],"thead",{},[3182,3183,3184,3188,3191],"tr",{},[3185,3186,3187],"th",{},"Compiled key",[3185,3189,3190],{},"Source",[3185,3192,3193],{},"Description",[3195,3196,3197,3210,3222,3238,3249,3262,3274,3286,3298,3310],"tbody",{},[3182,3198,3199,3204,3207],{},[3200,3201,3202],"td",{},[760,3203,1172],{},[3200,3205,3206],{},"parameter set",[3200,3208,3209],{},"Volume in µL to aspirate",[3182,3211,3212,3217,3219],{},[3200,3213,3214],{},[760,3215,3216],{},"lld_mode",[3200,3218,3206],{},[3200,3220,3221],{},"Liquid level detection mode",[3182,3223,3224,3229,3231],{},[3200,3225,3226],{},[760,3227,3228],{},"pipette_mode",[3200,3230,3206],{},[3200,3232,3233,763,3235,3237],{},[760,3234,1291],{},[760,3236,1025],{}," positioning",[3182,3239,3240,3244,3246],{},[3200,3241,3242],{},[760,3243,1786],{},[3200,3245,3206],{},[3200,3247,3248],{},"Z-offset from reference point (mm)",[3182,3250,3251,3256,3259],{},[3200,3252,3253],{},[760,3254,3255],{},"flow_rate",[3200,3257,3258],{},"liquid class",[3200,3260,3261],{},"Plunger speed (µL\u002Fs)",[3182,3263,3264,3269,3271],{},[3200,3265,3266],{},[760,3267,3268],{},"swap_speed",[3200,3270,3258],{},[3200,3272,3273],{},"Retract speed after aspiration (mm\u002Fs)",[3182,3275,3276,3281,3283],{},[3200,3277,3278],{},[760,3279,3280],{},"settling_time",[3200,3282,3258],{},[3200,3284,3285],{},"Dwell time in liquid (s)",[3182,3287,3288,3293,3295],{},[3200,3289,3290],{},[760,3291,3292],{},"over_aspirate_volume",[3200,3294,3258],{},[3200,3296,3297],{},"Pre-wetting extra volume (µL)",[3182,3299,3300,3305,3307],{},[3200,3301,3302],{},[760,3303,3304],{},"transport_air_volume",[3200,3306,3258],{},[3200,3308,3309],{},"Air drawn after aspiration (µL)",[3182,3311,3312,3317,3319],{},[3200,3313,3314],{},[760,3315,3316],{},"blowout_air_volume",[3200,3318,3258],{},[3200,3320,3321],{},"Pre-dispense blowout air (µL)",[1989,3323,3325],{"id":3324},"core96dispenseparameterset",[760,3326,3164],{},[3176,3328,3329,3339],{},[3179,3330,3331],{},[3182,3332,3333,3335,3337],{},[3185,3334,3187],{},[3185,3336,3190],{},[3185,3338,3193],{},[3195,3340,3341,3352,3366,3376,3386,3397,3409,3421,3432],{},[3182,3342,3343,3347,3349],{},[3200,3344,3345],{},[760,3346,1172],{},[3200,3348,3206],{},[3200,3350,3351],{},"Volume in µL to dispense",[3182,3353,3354,3358,3360],{},[3200,3355,3356],{},[760,3357,3228],{},[3200,3359,3206],{},[3200,3361,3362,763,3364,3237],{},[760,3363,1291],{},[760,3365,1025],{},[3182,3367,3368,3372,3374],{},[3200,3369,3370],{},[760,3371,1786],{},[3200,3373,3206],{},[3200,3375,3248],{},[3182,3377,3378,3382,3384],{},[3200,3379,3380],{},[760,3381,3255],{},[3200,3383,3258],{},[3200,3385,3261],{},[3182,3387,3388,3392,3394],{},[3200,3389,3390],{},[760,3391,3268],{},[3200,3393,3258],{},[3200,3395,3396],{},"Retract speed after dispense (mm\u002Fs)",[3182,3398,3399,3404,3406],{},[3200,3400,3401],{},[760,3402,3403],{},"stop_flow_rate",[3200,3405,3258],{},[3200,3407,3408],{},"Flow rate at end of dispense (µL\u002Fs)",[3182,3410,3411,3416,3418],{},[3200,3412,3413],{},[760,3414,3415],{},"stop_back_volume",[3200,3417,3258],{},[3200,3419,3420],{},"Air volume re-aspirated after dispense (µL)",[3182,3422,3423,3427,3429],{},[3200,3424,3425],{},[760,3426,3304],{},[3200,3428,3258],{},[3200,3430,3431],{},"Air drawn at end of dispense step (µL)",[3182,3433,3434,3438,3440],{},[3200,3435,3436],{},[760,3437,3316],{},[3200,3439,3258],{},[3200,3441,3442],{},"Blowout air dispensed before liquid (µL)",[3444,3445,3446],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}",{"title":807,"searchDepth":814,"depth":848,"links":3448},[3449,3450,3451,3452,3453,3458,3462],{"id":792,"depth":848,"text":793},{"id":1430,"depth":848,"text":1431},{"id":1635,"depth":848,"text":1636},{"id":1729,"depth":848,"text":1730},{"id":1849,"depth":848,"text":1850,"children":3454},[3455,3456,3457],{"id":1991,"depth":874,"text":1992},{"id":2050,"depth":874,"text":2051},{"id":2373,"depth":874,"text":2374},{"id":2637,"depth":848,"text":2638,"children":3459},[3460,3461],{"id":2809,"depth":874,"text":2810},{"id":2988,"depth":874,"text":2989},{"id":3150,"depth":848,"text":3151,"children":3463},[3464,3465],{"id":3172,"depth":874,"text":3161},{"id":3324,"depth":874,"text":3164},"Using parameter sets for precise, reusable pipetting operations on Hamilton and Bravo.","md",null,{},{"title":242,"description":3466},"P8UMhcuucyh9yummgJCvI-PzMErRxyzxj0apqcnnt5E",[3473,3475],{"title":238,"path":239,"stem":240,"description":3474},"Aspirating and dispensing liquid with Hamilton and Agilent Bravo liquid handlers.",{"title":246,"path":247,"stem":248,"description":3476},"Picking up, returning, and discarding tips on Hamilton and Agilent Bravo liquid handlers.",1783607768897]