[{"data":1,"prerenderedAt":7581},["ShallowReactive",2],{"navigation":3,"\u002Fdevice-guides\u002Freaders\u002Fbiotek-gen5":750,"\u002Fdevice-guides\u002Freaders\u002Fbiotek-gen5-surround":7576},[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":408,"body":752,"description":866,"extension":7571,"links":7572,"meta":7573,"navigation":960,"path":409,"seo":7574,"stem":410,"__hash__":7575},"docs\u002F06.device-guides\u002F40.readers\u002F10.biotek-gen5.md",{"type":753,"value":754,"toc":7538},"minimark",[755,760,772,857,860,1056,1060,1063,1100,1108,1112,1155,1184,1190,1194,1197,1214,1229,1235,1240,1247,1279,1285,1289,1292,1296,1323,1329,1356,1362,1389,1395,1422,1428,1540,1546,1550,1553,1564,1567,1854,1860,1886,1892,1897,1904,1911,1928,1934,1952,1958,1962,1969,1984,2006,2012,2016,2023,2609,2615,2771,2777,2781,2788,2812,2815,2833,3580,3586,3592,3596,3600,3608,3986,3989,3992,3998,4002,4005,4019,4023,4034,4172,4178,4182,4185,4281,4287,4291,4294,4314,4470,4476,4480,4483,4776,4782,4786,4789,4800,4803,4905,4910,4931,4936,4940,4943,4946,4977,4981,4988,5053,5058,5062,5068,5071,5089,5095,5099,5105,5119,5174,5187,5248,5254,5258,5263,5280,5341,5346,5353,5369,5375,5413,5419,5423,5442,5445,5463,5469,5507,5567,5573,5577,5580,5993,5996,5999,6005,6009,6012,6015,6035,6038,6049,6051,6055,6061,6065,6070,6074,6079,6083,6179,6183,6188,6192,6211,6215,6241,6245,6250,6254,6296,6300,6313,6317,6333,6337,6364,6368,6373,6377,6401,6405,6418,6422,6449,6453,6466,6470,6483,6487,6500,6504,6517,6521,6534,6538,6566,6570,6596,6600,6642,6646,6664,6668,6684,6688,6712,6716,6752,6756,6769,6773,6789,6793,6806,6810,6823,6827,6840,6844,6857,6861,6874,6878,7071,7075,7088,7092,7105,7109,7114,7116,7120,7125,7129,7134,7138,7143,7178,7182,7186,7217,7219,7223,7228,7232,7237,7241,7257,7259,7263,7310,7314,7338,7342,7347,7350,7354,7359,7363,7368,7372,7397,7401,7417,7421,7455,7459,7490,7494,7499,7503,7508,7512,7534],[756,757,759],"h2",{"id":758},"getting-started-with-the-gen5-connector-for-the-agilent-biotek-gen5-software","Getting started with the Gen5 connector for the Agilent Biotek Gen5 software",[761,762,763,764,771],"p",{},"This jupyter notebook introduces how the Gen5 connector is used with the UniteLabs SDK. The Gen5 connector is provided by UniteLabs. It is based on the UniteLabs CDK and is directly connected to the UniteLabs platform. The SiLA 2 interface can be used as is and implements a range of high-level commands. The UniteLabs SDK (extension) contains a range of further classes and methods related to this connector specifically. The ",[765,766,770],"a",{"href":767,"rel":768},"https:\u002F\u002Fwww.agilent.com\u002Fen\u002Fproduct\u002Fcell-analysis\u002Fcell-imaging-microscopy\u002Fcell-imaging-microscopy-software\u002Fbiotek-gen5-software-for-imaging-microscopy-1623226",[769],"nofollow","Agilent Biotek Gen5 software"," connects to a wide range of plate readers from Agilent Biotek:",[773,774,775,779,782,785,788,791,794,797,800,803,806,809,812,815,818,821,824,827,830,833,836,839,842,845,848,851,854],"ul",{},[776,777,778],"li",{},"ELx800",[776,780,781],{},"ELx808",[776,783,784],{},"Synergy HT",[776,786,787],{},"FLx800",[776,789,790],{},"Powerwave",[776,792,793],{},"Clarity",[776,795,796],{},"Synergy2",[776,798,799],{},"PowerWaveXS 2",[776,801,802],{},"Synergy Mx",[776,804,805],{},"Epoch",[776,807,808],{},"Synergy H4",[776,810,811],{},"Synergy H1",[776,813,814],{},"Eon",[776,816,817],{},"Synergy Neo",[776,819,820],{},"Cytation3",[776,822,823],{},"Synergy HTX",[776,825,826],{},"Cytation5",[776,828,829],{},"Epoch 2",[776,831,832],{},"Synergy Neo2",[776,834,835],{},"Lionheart FX",[776,837,838],{},"800TS",[776,840,841],{},"Cytation1",[776,843,844],{},"Synergy LX",[776,846,847],{},"Lionheart LX",[776,849,850],{},"Cytation7",[776,852,853],{},"LogPhase 600",[776,855,856],{},"Cytation C10",[761,858,859],{},"The connector was developed and tested with Gen5 software version 3.14.",[861,862,867],"pre",{"className":863,"code":864,"language":865,"meta":866,"style":866},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import asyncio\nimport json\nfrom datetime import datetime, timezone\nimport matplotlib.pyplot as plt\nimport numpy as np\nimport csv\n\nfrom IPython.display import clear_output\nimport nest_asyncio\nnest_asyncio.apply()\n\nimport unitelabs\nfrom unitelabs.sdk import AsyncApiClient\nfrom unitelabs.sdk.core import ExecutionError\n","python","",[868,869,870,883,891,912,933,947,955,962,980,988,1003,1008,1016,1034],"code",{"__ignoreMap":866},[871,872,875,879],"span",{"class":873,"line":874},"line",1,[871,876,878],{"class":877},"s7zQu","import",[871,880,882],{"class":881},"sTEyZ"," asyncio\n",[871,884,886,888],{"class":873,"line":885},2,[871,887,878],{"class":877},[871,889,890],{"class":881}," json\n",[871,892,894,897,900,902,905,909],{"class":873,"line":893},3,[871,895,896],{"class":877},"from",[871,898,899],{"class":881}," datetime ",[871,901,878],{"class":877},[871,903,904],{"class":881}," datetime",[871,906,908],{"class":907},"sMK4o",",",[871,910,911],{"class":881}," timezone\n",[871,913,915,917,920,923,927,930],{"class":873,"line":914},4,[871,916,878],{"class":877},[871,918,919],{"class":881}," matplotlib",[871,921,922],{"class":907},".",[871,924,926],{"class":925},"swJcz","pyplot",[871,928,929],{"class":877}," as",[871,931,932],{"class":881}," plt\n",[871,934,936,938,941,944],{"class":873,"line":935},5,[871,937,878],{"class":877},[871,939,940],{"class":881}," numpy ",[871,942,943],{"class":877},"as",[871,945,946],{"class":881}," np\n",[871,948,950,952],{"class":873,"line":949},6,[871,951,878],{"class":877},[871,953,954],{"class":881}," csv\n",[871,956,958],{"class":873,"line":957},7,[871,959,961],{"emptyLinePlaceholder":960},true,"\n",[871,963,965,967,970,972,975,977],{"class":873,"line":964},8,[871,966,896],{"class":877},[871,968,969],{"class":881}," IPython",[871,971,922],{"class":907},[871,973,974],{"class":881},"display ",[871,976,878],{"class":877},[871,978,979],{"class":881}," clear_output\n",[871,981,983,985],{"class":873,"line":982},9,[871,984,878],{"class":877},[871,986,987],{"class":881}," nest_asyncio\n",[871,989,991,994,996,1000],{"class":873,"line":990},10,[871,992,993],{"class":881},"nest_asyncio",[871,995,922],{"class":907},[871,997,999],{"class":998},"s2Zo4","apply",[871,1001,1002],{"class":907},"()\n",[871,1004,1006],{"class":873,"line":1005},11,[871,1007,961],{"emptyLinePlaceholder":960},[871,1009,1011,1013],{"class":873,"line":1010},12,[871,1012,878],{"class":877},[871,1014,1015],{"class":881}," unitelabs\n",[871,1017,1019,1021,1024,1026,1029,1031],{"class":873,"line":1018},13,[871,1020,896],{"class":877},[871,1022,1023],{"class":881}," unitelabs",[871,1025,922],{"class":907},[871,1027,1028],{"class":881},"sdk ",[871,1030,878],{"class":877},[871,1032,1033],{"class":881}," AsyncApiClient\n",[871,1035,1037,1039,1041,1043,1046,1048,1051,1053],{"class":873,"line":1036},14,[871,1038,896],{"class":877},[871,1040,1023],{"class":881},[871,1042,922],{"class":907},[871,1044,1045],{"class":881},"sdk",[871,1047,922],{"class":907},[871,1049,1050],{"class":881},"core ",[871,1052,878],{"class":877},[871,1054,1055],{"class":881}," ExecutionError\n",[756,1057,1059],{"id":1058},"list-all-connected-devices","List all connected devices",[761,1061,1062],{},"Requests all connected connectors from the UniteLabs API",[861,1064,1066],{"className":863,"code":1065,"language":865,"meta":866,"style":866},"client = AsyncApiClient()\n\nawait client.list_services()\n",[868,1067,1068,1081,1085],{"__ignoreMap":866},[871,1069,1070,1073,1076,1079],{"class":873,"line":874},[871,1071,1072],{"class":881},"client ",[871,1074,1075],{"class":907},"=",[871,1077,1078],{"class":998}," AsyncApiClient",[871,1080,1002],{"class":907},[871,1082,1083],{"class":873,"line":885},[871,1084,961],{"emptyLinePlaceholder":960},[871,1086,1087,1090,1093,1095,1098],{"class":873,"line":893},[871,1088,1089],{"class":877},"await",[871,1091,1092],{"class":881}," client",[871,1094,922],{"class":907},[871,1096,1097],{"class":998},"list_services",[871,1099,1002],{"class":907},[861,1101,1106],{"className":1102,"code":1104,"language":1105},[1103],"language-text","[\n...,\n Gen5Software(client=\u003Cunitelabs.sdk.client.client.AsyncApiClient object at 0x7f5ed9101a50>, id='\u003Cuuid>', name='Gen5 Software'),\n...\n]\n","text",[868,1107,1104],{"__ignoreMap":866},[756,1109,1111],{"id":1110},"instantiate-a-gen5-object","Instantiate a Gen5 object",[861,1113,1115],{"className":863,"code":1114,"language":865,"meta":866,"style":866},"# Current option: get service by name\ngen5 = await client.get_service_by_name('Gen5 Software')\n",[868,1116,1117,1123],{"__ignoreMap":866},[871,1118,1119],{"class":873,"line":874},[871,1120,1122],{"class":1121},"sHwdD","# Current option: get service by name\n",[871,1124,1125,1128,1130,1133,1135,1137,1140,1143,1146,1150,1152],{"class":873,"line":885},[871,1126,1127],{"class":881},"gen5 ",[871,1129,1075],{"class":907},[871,1131,1132],{"class":877}," await",[871,1134,1092],{"class":881},[871,1136,922],{"class":907},[871,1138,1139],{"class":998},"get_service_by_name",[871,1141,1142],{"class":907},"(",[871,1144,1145],{"class":907},"'",[871,1147,1149],{"class":1148},"sfazB","Gen5 Software",[871,1151,1145],{"class":907},[871,1153,1154],{"class":907},")\n",[861,1156,1158],{"className":863,"code":1157,"language":865,"meta":866,"style":866},"# To make sure the command set is still the same, check the server version\nawait gen5.sila_service.get_server_version()\n",[868,1159,1160,1165],{"__ignoreMap":866},[871,1161,1162],{"class":873,"line":874},[871,1163,1164],{"class":1121},"# To make sure the command set is still the same, check the server version\n",[871,1166,1167,1169,1172,1174,1177,1179,1182],{"class":873,"line":885},[871,1168,1089],{"class":877},[871,1170,1171],{"class":881}," gen5",[871,1173,922],{"class":907},[871,1175,1176],{"class":925},"sila_service",[871,1178,922],{"class":907},[871,1180,1181],{"class":998},"get_server_version",[871,1183,1002],{"class":907},[861,1185,1188],{"className":1186,"code":1187,"language":1105},[1103],"'1.0.1'\n",[868,1189,1187],{"__ignoreMap":866},[756,1191,1193],{"id":1192},"explore-the-gen5-modules","Explore the Gen5 modules",[761,1195,1196],{},"The Gen5 connector has 5 modules for different functionalities:",[773,1198,1199,1202,1205,1208,1211],{},[776,1200,1201],{},"sila_service: a standard suit of getters to retrieve information concerning the SiLA server",[776,1203,1204],{},"gen5_service: all the low-level calls needed to process a plate using a previously established protocol",[776,1206,1207],{},"door_controller: calls to get information about the carrier state and open and close the carrier",[776,1209,1210],{},"temperature_controller: calls to manage the incubation in readers supporting temperature control.",[776,1212,1213],{},"protocol_controller: currently supports creating a protocol with absorbance and\u002For shaker steps.",[861,1215,1217],{"className":863,"code":1216,"language":865,"meta":866,"style":866},"gen5.modules\n",[868,1218,1219],{"__ignoreMap":866},[871,1220,1221,1224,1226],{"class":873,"line":874},[871,1222,1223],{"class":881},"gen5",[871,1225,922],{"class":907},[871,1227,1228],{"class":925},"modules\n",[861,1230,1233],{"className":1231,"code":1232,"language":1105},[1103],"{'sila_service': SiLAService(client=\u003Cunitelabs.sdk.client.client.AsyncApiClient object at 0x7f5ed9101a50>, id='9ee85a5f-af0a-4d4c-bd7b-62fcad0a3364', name='SiLA Service'),\n 'gen5_service': Gen5Service(client=\u003Cunitelabs.sdk.client.client.AsyncApiClient object at 0x7f5ed9101a50>, id='92e02f01-f877-44c0-bbcf-c225e3a9e56f', name='Gen5 Service'),\n 'door_controller': DoorController(client=\u003Cunitelabs.sdk.client.client.AsyncApiClient object at 0x7f5ed9101a50>, id='b536db1c-e343-4b64-a697-ea4d91ac6166', name='Door Controller'),\n 'simulation_controller': SimulationController(client=\u003Cunitelabs.sdk.client.client.AsyncApiClient object at 0x7f5ed9101a50>, id='ab8bb1b8-6a26-49f8-bace-5086b3d4a344', name='Simulation Controller'),\n 'temperature_controller': TemperatureController(client=\u003Cunitelabs.sdk.client.client.AsyncApiClient object at 0x7f5ed9101a50>, id='6c59aa90-740d-40ae-acae-ab8fa3e55aeb', name='Temperature Controller'),\n 'shake_controller': ShakeController(client=\u003Cunitelabs.sdk.client.client.AsyncApiClient object at 0x7f5ed9101a50>, id='416a0b31-fe5d-4fd8-9777-0c4ca569f483', name='Shake Controller'),\n 'protocol_controller': ProtocolController(client=\u003Cunitelabs.sdk.client.client.AsyncApiClient object at 0x7f5ed9101a50>, id='9db6a059-f693-4bc2-9ba0-0c9afe577ba0', name='Protocol Controller')}\n",[868,1234,1232],{"__ignoreMap":866},[1236,1237,1239],"h3",{"id":1238},"get-gen5-module-actions","Get Gen5 module actions",[761,1241,1242,1243],{},"Get the actions (callable methods) associated with each module by calling gen5.",[1244,1245,1246],"module",{},".actions.keys()",[861,1248,1250],{"className":863,"code":1249,"language":865,"meta":866,"style":866},"print(gen5.gen5_service.actions.keys())\n",[868,1251,1252],{"__ignoreMap":866},[871,1253,1254,1257,1259,1261,1263,1266,1268,1271,1273,1276],{"class":873,"line":874},[871,1255,1256],{"class":998},"print",[871,1258,1142],{"class":907},[871,1260,1223],{"class":998},[871,1262,922],{"class":907},[871,1264,1265],{"class":925},"gen5_service",[871,1267,922],{"class":907},[871,1269,1270],{"class":925},"actions",[871,1272,922],{"class":907},[871,1274,1275],{"class":998},"keys",[871,1277,1278],{"class":907},"())\n",[861,1280,1283],{"className":1281,"code":1282,"language":1105},[1103],"dict_keys(['get_deactivate_plate', 'get_delete_active_plate', 'get_active_plate', 'get_available_protocols', 'get_column_count', 'get_data_set_names', 'get_device_connected', 'get_device_info', 'get_experiment_open', 'get_image_folder_path', 'get_modifiable_procedure', 'get_plate_calibration_type', 'get_plate_is_labware', 'get_plate_layout', 'get_plate_list', 'get_plate_types', 'get_procedure', 'get_protocol_path', 'get_read_in_progress', 'get_read_status', 'get_reader_status', 'get_row_count', 'get_sample_count', 'get_sample_description', 'get_version', 'get_vessel_count', 'abort_read', 'activate_plate', 'close_experiment', 'get_plate_data', 'new_experiment', 'resume_read', 'save_experiment', 'set_modifiable_procedure', 'set_plate_layout', 'set_procedure', 'set_protocol_path', 'start_read', 'validate_procedure'])\n",[868,1284,1282],{"__ignoreMap":866},[756,1286,1288],{"id":1287},"the-gen5-service-module","The Gen5 service module",[761,1290,1291],{},"The Gen5 service module inlcudes a lot of low level methods to get information, device status and data, start reads, get information about reads, the current protocol, and the plate.",[1236,1293,1295],{"id":1294},"call-basic-reader-info","Call basic reader info",[861,1297,1299],{"className":863,"code":1298,"language":865,"meta":866,"style":866},"# Get Gen5 version\nawait gen5.gen5_service.get_version()\n",[868,1300,1301,1306],{"__ignoreMap":866},[871,1302,1303],{"class":873,"line":874},[871,1304,1305],{"class":1121},"# Get Gen5 version\n",[871,1307,1308,1310,1312,1314,1316,1318,1321],{"class":873,"line":885},[871,1309,1089],{"class":877},[871,1311,1171],{"class":881},[871,1313,922],{"class":907},[871,1315,1265],{"class":925},[871,1317,922],{"class":907},[871,1319,1320],{"class":998},"get_version",[871,1322,1002],{"class":907},[861,1324,1327],{"className":1325,"code":1326,"language":1105},[1103],"'3.14.03'\n",[868,1328,1326],{"__ignoreMap":866},[861,1330,1332],{"className":863,"code":1331,"language":865,"meta":866,"style":866},"# Check if the device is connected\nawait gen5.gen5_service.get_device_connected()\n",[868,1333,1334,1339],{"__ignoreMap":866},[871,1335,1336],{"class":873,"line":874},[871,1337,1338],{"class":1121},"# Check if the device is connected\n",[871,1340,1341,1343,1345,1347,1349,1351,1354],{"class":873,"line":885},[871,1342,1089],{"class":877},[871,1344,1171],{"class":881},[871,1346,922],{"class":907},[871,1348,1265],{"class":925},[871,1350,922],{"class":907},[871,1352,1353],{"class":998},"get_device_connected",[871,1355,1002],{"class":907},[861,1357,1360],{"className":1358,"code":1359,"language":1105},[1103],"True\n",[868,1361,1359],{"__ignoreMap":866},[861,1363,1365],{"className":863,"code":1364,"language":865,"meta":866,"style":866},"# Get the protocols that are available on the computer connected to the reader\nawait gen5.gen5_service.get_available_protocols()\n",[868,1366,1367,1372],{"__ignoreMap":866},[871,1368,1369],{"class":873,"line":874},[871,1370,1371],{"class":1121},"# Get the protocols that are available on the computer connected to the reader\n",[871,1373,1374,1376,1378,1380,1382,1384,1387],{"class":873,"line":885},[871,1375,1089],{"class":877},[871,1377,1171],{"class":881},[871,1379,922],{"class":907},[871,1381,1265],{"class":925},[871,1383,922],{"class":907},[871,1385,1386],{"class":998},"get_available_protocols",[871,1388,1002],{"class":907},[861,1390,1393],{"className":1391,"code":1392,"language":1105},[1103],"[\n 'protocol.prt',\n 'protocol2.prt',\n 'Absorbance600nm.prt',\n 'ADH kinetic assay.prt',\n ]\n",[868,1394,1392],{"__ignoreMap":866},[861,1396,1398],{"className":863,"code":1397,"language":865,"meta":866,"style":866},"# The path at which protocols are read from. This can be changed using gen5.gen5_service.set_protocol_path().\nawait gen5.gen5_service.get_protocol_path()\n",[868,1399,1400,1405],{"__ignoreMap":866},[871,1401,1402],{"class":873,"line":874},[871,1403,1404],{"class":1121},"# The path at which protocols are read from. This can be changed using gen5.gen5_service.set_protocol_path().\n",[871,1406,1407,1409,1411,1413,1415,1417,1420],{"class":873,"line":885},[871,1408,1089],{"class":877},[871,1410,1171],{"class":881},[871,1412,922],{"class":907},[871,1414,1265],{"class":925},[871,1416,922],{"class":907},[871,1418,1419],{"class":998},"get_protocol_path",[871,1421,1002],{"class":907},[861,1423,1426],{"className":1424,"code":1425,"language":1105},[1103],"'C:\\\\Users\\\\Public\\\\Documents\\\\Protocols'\n",[868,1427,1425],{"__ignoreMap":866},[861,1429,1431],{"className":863,"code":1430,"language":865,"meta":866,"style":866},"# Check if read in progress. Works always.\nprint(await gen5.gen5_service.get_read_in_progress())\n\n# Check read status. Only works while the experiment is open and the plate is selected.\ntry:\n    print(await gen5.gen5_service.get_read_status())\nexcept ExecutionError as error:\n    print(json.loads(error.message))\n",[868,1432,1433,1438,1459,1463,1468,1476,1498,1513],{"__ignoreMap":866},[871,1434,1435],{"class":873,"line":874},[871,1436,1437],{"class":1121},"# Check if read in progress. Works always.\n",[871,1439,1440,1442,1444,1446,1448,1450,1452,1454,1457],{"class":873,"line":885},[871,1441,1256],{"class":998},[871,1443,1142],{"class":907},[871,1445,1089],{"class":877},[871,1447,1171],{"class":998},[871,1449,922],{"class":907},[871,1451,1265],{"class":925},[871,1453,922],{"class":907},[871,1455,1456],{"class":998},"get_read_in_progress",[871,1458,1278],{"class":907},[871,1460,1461],{"class":873,"line":893},[871,1462,961],{"emptyLinePlaceholder":960},[871,1464,1465],{"class":873,"line":914},[871,1466,1467],{"class":1121},"# Check read status. Only works while the experiment is open and the plate is selected.\n",[871,1469,1470,1473],{"class":873,"line":935},[871,1471,1472],{"class":877},"try",[871,1474,1475],{"class":907},":\n",[871,1477,1478,1481,1483,1485,1487,1489,1491,1493,1496],{"class":873,"line":949},[871,1479,1480],{"class":998},"    print",[871,1482,1142],{"class":907},[871,1484,1089],{"class":877},[871,1486,1171],{"class":998},[871,1488,922],{"class":907},[871,1490,1265],{"class":925},[871,1492,922],{"class":907},[871,1494,1495],{"class":998},"get_read_status",[871,1497,1278],{"class":907},[871,1499,1500,1503,1506,1508,1511],{"class":873,"line":957},[871,1501,1502],{"class":877},"except",[871,1504,1505],{"class":881}," ExecutionError ",[871,1507,943],{"class":877},[871,1509,1510],{"class":881}," error",[871,1512,1475],{"class":907},[871,1514,1515,1517,1519,1522,1524,1527,1529,1532,1534,1537],{"class":873,"line":964},[871,1516,1480],{"class":998},[871,1518,1142],{"class":907},[871,1520,1521],{"class":998},"json",[871,1523,922],{"class":907},[871,1525,1526],{"class":998},"loads",[871,1528,1142],{"class":907},[871,1530,1531],{"class":998},"error",[871,1533,922],{"class":907},[871,1535,1536],{"class":925},"message",[871,1538,1539],{"class":907},"))\n",[861,1541,1544],{"className":1542,"code":1543,"language":1105},[1103],"False\n{'errorIdentifier': 'io.unitelabs\u002Fgen5\u002FGen5Service\u002Fv1\u002FDefinedExecutionError\u002FNoActivePlateError', 'message': 'None is not a valid active plate. Please make a new experiment and activate a plate before using this method.'}\n",[868,1545,1543],{"__ignoreMap":866},[1236,1547,1549],{"id":1548},"read-a-plate","Read a plate",[761,1551,1552],{},"To read a plate using a protocol created previously 3 steps are needed:",[773,1554,1555,1558,1561],{},[776,1556,1557],{},"Create a new experiment",[776,1559,1560],{},"Select a plate",[776,1562,1563],{},"Start the read",[761,1565,1566],{},"This section uses the following methods: close_experiment, new_experiment, activate_plate, get_current_active_plate, get_device_connected and start_read",[861,1568,1570],{"className":863,"code":1569,"language":865,"meta":866,"style":866},"gen5_service = gen5.gen5_service\n# Close any open experiment. An open experiment will prevent a new one from being created.\n# The close_experiment command does close the previous experiment without saving.\n# For saving the experiment on the machine connected to the reader, the save_experiment() call can be used.\n# It is advisable to utilize the get_plate_data() function to retrieve data and then save it manually or using Python\n# calls, rather than using the save_experiment() method. Further details on how to implement this approach are\n# provided later in this guide.\nif (await gen5_service.get_experiment_open()):\n    await gen5_service.close_experiment()\n    print('Previous experiment closed without saving.')\n\n# Create a new experiment that uses the \"protocol\" protocol. Absolute paths are possible, relative paths are relative to\n# the protocol path (gen5_service.get_protocol_path())\n# New protocols can be created in Gen5.\n# Creating new protocols with UniteLabs SDK is partially possible (see \"protocol controller\")\nawait gen5_service.new_experiment(protocol='protocol.prt')\n\n# Each experiment can hold multiple plates. The default is one plate, which means most of the time, activating the\n# first plate in the experiment is sufficient.\nawait gen5_service.activate_plate(plate_name=(await gen5_service.get_plate_list())[0])\n\nprint('Active plate is: ', await gen5_service.get_active_plate()) # The standard name of the first plate is \"Plate 1\"\n\n# If the device is connected, the read is started\nif (await gen5_service.get_device_connected()):\n    await gen5_service.start_read()\n",[868,1571,1572,1586,1591,1596,1601,1606,1611,1616,1637,1651,1666,1670,1675,1680,1685,1691,1720,1725,1731,1737,1776,1781,1812,1817,1823,1840],{"__ignoreMap":866},[871,1573,1574,1577,1579,1581,1583],{"class":873,"line":874},[871,1575,1576],{"class":881},"gen5_service ",[871,1578,1075],{"class":907},[871,1580,1171],{"class":881},[871,1582,922],{"class":907},[871,1584,1585],{"class":925},"gen5_service\n",[871,1587,1588],{"class":873,"line":885},[871,1589,1590],{"class":1121},"# Close any open experiment. An open experiment will prevent a new one from being created.\n",[871,1592,1593],{"class":873,"line":893},[871,1594,1595],{"class":1121},"# The close_experiment command does close the previous experiment without saving.\n",[871,1597,1598],{"class":873,"line":914},[871,1599,1600],{"class":1121},"# For saving the experiment on the machine connected to the reader, the save_experiment() call can be used.\n",[871,1602,1603],{"class":873,"line":935},[871,1604,1605],{"class":1121},"# It is advisable to utilize the get_plate_data() function to retrieve data and then save it manually or using Python\n",[871,1607,1608],{"class":873,"line":949},[871,1609,1610],{"class":1121},"# calls, rather than using the save_experiment() method. Further details on how to implement this approach are\n",[871,1612,1613],{"class":873,"line":957},[871,1614,1615],{"class":1121},"# provided later in this guide.\n",[871,1617,1618,1621,1624,1626,1629,1631,1634],{"class":873,"line":964},[871,1619,1620],{"class":877},"if",[871,1622,1623],{"class":907}," (",[871,1625,1089],{"class":877},[871,1627,1628],{"class":881}," gen5_service",[871,1630,922],{"class":907},[871,1632,1633],{"class":998},"get_experiment_open",[871,1635,1636],{"class":907},"()):\n",[871,1638,1639,1642,1644,1646,1649],{"class":873,"line":982},[871,1640,1641],{"class":877},"    await",[871,1643,1628],{"class":881},[871,1645,922],{"class":907},[871,1647,1648],{"class":998},"close_experiment",[871,1650,1002],{"class":907},[871,1652,1653,1655,1657,1659,1662,1664],{"class":873,"line":990},[871,1654,1480],{"class":998},[871,1656,1142],{"class":907},[871,1658,1145],{"class":907},[871,1660,1661],{"class":1148},"Previous experiment closed without saving.",[871,1663,1145],{"class":907},[871,1665,1154],{"class":907},[871,1667,1668],{"class":873,"line":1005},[871,1669,961],{"emptyLinePlaceholder":960},[871,1671,1672],{"class":873,"line":1010},[871,1673,1674],{"class":1121},"# Create a new experiment that uses the \"protocol\" protocol. Absolute paths are possible, relative paths are relative to\n",[871,1676,1677],{"class":873,"line":1018},[871,1678,1679],{"class":1121},"# the protocol path (gen5_service.get_protocol_path())\n",[871,1681,1682],{"class":873,"line":1036},[871,1683,1684],{"class":1121},"# New protocols can be created in Gen5.\n",[871,1686,1688],{"class":873,"line":1687},15,[871,1689,1690],{"class":1121},"# Creating new protocols with UniteLabs SDK is partially possible (see \"protocol controller\")\n",[871,1692,1694,1696,1698,1700,1703,1705,1709,1711,1713,1716,1718],{"class":873,"line":1693},16,[871,1695,1089],{"class":877},[871,1697,1628],{"class":881},[871,1699,922],{"class":907},[871,1701,1702],{"class":998},"new_experiment",[871,1704,1142],{"class":907},[871,1706,1708],{"class":1707},"sHdIc","protocol",[871,1710,1075],{"class":907},[871,1712,1145],{"class":907},[871,1714,1715],{"class":1148},"protocol.prt",[871,1717,1145],{"class":907},[871,1719,1154],{"class":907},[871,1721,1723],{"class":873,"line":1722},17,[871,1724,961],{"emptyLinePlaceholder":960},[871,1726,1728],{"class":873,"line":1727},18,[871,1729,1730],{"class":1121},"# Each experiment can hold multiple plates. The default is one plate, which means most of the time, activating the\n",[871,1732,1734],{"class":873,"line":1733},19,[871,1735,1736],{"class":1121},"# first plate in the experiment is sufficient.\n",[871,1738,1740,1742,1744,1746,1749,1751,1754,1757,1759,1761,1763,1766,1769,1773],{"class":873,"line":1739},20,[871,1741,1089],{"class":877},[871,1743,1628],{"class":881},[871,1745,922],{"class":907},[871,1747,1748],{"class":998},"activate_plate",[871,1750,1142],{"class":907},[871,1752,1753],{"class":1707},"plate_name",[871,1755,1756],{"class":907},"=(",[871,1758,1089],{"class":877},[871,1760,1628],{"class":998},[871,1762,922],{"class":907},[871,1764,1765],{"class":998},"get_plate_list",[871,1767,1768],{"class":907},"())[",[871,1770,1772],{"class":1771},"sbssI","0",[871,1774,1775],{"class":907},"])\n",[871,1777,1779],{"class":873,"line":1778},21,[871,1780,961],{"emptyLinePlaceholder":960},[871,1782,1784,1786,1788,1790,1793,1795,1797,1799,1801,1803,1806,1809],{"class":873,"line":1783},22,[871,1785,1256],{"class":998},[871,1787,1142],{"class":907},[871,1789,1145],{"class":907},[871,1791,1792],{"class":1148},"Active plate is: ",[871,1794,1145],{"class":907},[871,1796,908],{"class":907},[871,1798,1132],{"class":877},[871,1800,1628],{"class":998},[871,1802,922],{"class":907},[871,1804,1805],{"class":998},"get_active_plate",[871,1807,1808],{"class":907},"())",[871,1810,1811],{"class":1121}," # The standard name of the first plate is \"Plate 1\"\n",[871,1813,1815],{"class":873,"line":1814},23,[871,1816,961],{"emptyLinePlaceholder":960},[871,1818,1820],{"class":873,"line":1819},24,[871,1821,1822],{"class":1121},"# If the device is connected, the read is started\n",[871,1824,1826,1828,1830,1832,1834,1836,1838],{"class":873,"line":1825},25,[871,1827,1620],{"class":877},[871,1829,1623],{"class":907},[871,1831,1089],{"class":877},[871,1833,1628],{"class":881},[871,1835,922],{"class":907},[871,1837,1353],{"class":998},[871,1839,1636],{"class":907},[871,1841,1843,1845,1847,1849,1852],{"class":873,"line":1842},26,[871,1844,1641],{"class":877},[871,1846,1628],{"class":881},[871,1848,922],{"class":907},[871,1850,1851],{"class":998},"start_read",[871,1853,1002],{"class":907},[861,1855,1858],{"className":1856,"code":1857,"language":1105},[1103],"Active plate is:  Plate 1\n",[868,1859,1857],{"__ignoreMap":866},[861,1861,1863],{"className":863,"code":1862,"language":865,"meta":866,"style":866},"# Get a list of all plates defined within the active experiment\nawait gen5.gen5_service.get_plate_list()\n",[868,1864,1865,1870],{"__ignoreMap":866},[871,1866,1867],{"class":873,"line":874},[871,1868,1869],{"class":1121},"# Get a list of all plates defined within the active experiment\n",[871,1871,1872,1874,1876,1878,1880,1882,1884],{"class":873,"line":885},[871,1873,1089],{"class":877},[871,1875,1171],{"class":881},[871,1877,922],{"class":907},[871,1879,1265],{"class":925},[871,1881,922],{"class":907},[871,1883,1765],{"class":998},[871,1885,1002],{"class":907},[861,1887,1890],{"className":1888,"code":1889,"language":1105},[1103],"['Plate 1']\n",[868,1891,1889],{"__ignoreMap":866},[1893,1894,1896],"h4",{"id":1895},"read-status-abort","Read Status & Abort",[761,1898,1899,1900,1903],{},"If a read has been started, the status of said read can be checked by calling ",[868,1901,1902],{},"get_read_status()",".\nThis method returns a integer with the following meanings:\n1: In progress\n2: Aborted\n3: Paused\n4: Error\n5: Completed",[761,1905,1906,1907,1910],{},"To abort a read, ",[868,1908,1909],{},"abort_read()"," is used. The connector will try to abort the read as soon as possible, but the reader sometimes blocks the abort for an undeterminable amount of time.",[861,1912,1914],{"className":863,"code":1913,"language":865,"meta":866,"style":866},"await gen5_service.get_read_status()\n",[868,1915,1916],{"__ignoreMap":866},[871,1917,1918,1920,1922,1924,1926],{"class":873,"line":874},[871,1919,1089],{"class":877},[871,1921,1628],{"class":881},[871,1923,922],{"class":907},[871,1925,1495],{"class":998},[871,1927,1002],{"class":907},[861,1929,1932],{"className":1930,"code":1931,"language":1105},[1103],"1\n",[868,1933,1931],{"__ignoreMap":866},[861,1935,1937],{"className":863,"code":1936,"language":865,"meta":866,"style":866},"await gen5_service.abort_read()\n",[868,1938,1939],{"__ignoreMap":866},[871,1940,1941,1943,1945,1947,1950],{"class":873,"line":874},[871,1942,1089],{"class":877},[871,1944,1628],{"class":881},[871,1946,922],{"class":907},[871,1948,1949],{"class":998},"abort_read",[871,1951,1002],{"class":907},[861,1953,1956],{"className":1954,"code":1955,"language":1105},[1103],"'Measurement aborted with final read status 2 (0: Not started, 1: In progress, 2: Aborted, 3: Paused, 4: Error, 5: Completed).'\n",[868,1957,1955],{"__ignoreMap":866},[1893,1959,1961],{"id":1960},"data-sets","Data sets",[761,1963,1964,1965,1968],{},"Depending on the used protocol, different data sets are available. To get the expected data set names for a plate, ",[868,1966,1967],{},"get_data_set_names()"," can be called (after a plate within an experiment was selected).",[761,1970,1971,1972,1975,1976,1979,1980,1983],{},"In this example the plate will be read using two wavelengths: $750,nm$ and $750,nm$, thus the two datasets to be expected are called ",[868,1973,1974],{},"750"," and ",[868,1977,1978],{},"600",". Dataset names starting with ",[868,1981,1982],{},"T°"," will not produce a data series on read and can be ignored for future implementations.",[861,1985,1987],{"className":863,"code":1986,"language":865,"meta":866,"style":866},"await gen5.gen5_service.get_data_set_names()\n",[868,1988,1989],{"__ignoreMap":866},[871,1990,1991,1993,1995,1997,1999,2001,2004],{"class":873,"line":874},[871,1992,1089],{"class":877},[871,1994,1171],{"class":881},[871,1996,922],{"class":907},[871,1998,1265],{"class":925},[871,2000,922],{"class":907},[871,2002,2003],{"class":998},"get_data_set_names",[871,2005,1002],{"class":907},[861,2007,2010],{"className":2008,"code":2009,"language":1105},[1103],"['750', '600', 'T° 750']\n",[868,2011,2009],{"__ignoreMap":866},[1236,2013,2015],{"id":2014},"getting-and-using-the-read-data","Getting and using the read data",[761,2017,2018,2019,2022],{},"A couple of example how to get and handle the data after starting a read.\nFor visual feedback, the following utility function ",[868,2020,2021],{},"plot_heatmap"," can be used.",[861,2024,2026],{"className":863,"code":2025,"language":865,"meta":866,"style":866},"# Plot data as heatmap (utility function):\ndef plot_heatmap(data, data_set_name):\n    try:\n        data = data[data_set_name]\n    except KeyError:\n        print(f'No data found for {data_set_name}')\n        return\n    max_row = max(max(row) for row in data[\"row\"]) + 1\n    max_col = max(max(col) for col in data[\"column\"]) + 1\n    grid = np.zeros((max_row, max_col))\n\n    for row, col, val in zip(data[\"row\"], data[\"column\"], data[\"value\"]):\n        for r, c, v in zip(row, col, val):\n            grid[r, c] = v\n\n    plt.figure(figsize=(6, 5))\n    plt.imshow(grid, cmap='hot', interpolation='nearest')\n    plt.title(f\"Active Read ({data_set_name})\")\n    plt.colorbar()\n    plt.grid(which='both', color='white', linestyle='-', linewidth=0.5)\n    plt.xticks(np.arrange(max_col))\n    plt.yticks(np.arrange(max_row))\n    plt.show()\n",[868,2027,2028,2033,2055,2062,2081,2092,2117,2122,2174,2218,2246,2250,2314,2351,2374,2378,2405,2449,2476,2487,2549,2575,2598],{"__ignoreMap":866},[871,2029,2030],{"class":873,"line":874},[871,2031,2032],{"class":1121},"# Plot data as heatmap (utility function):\n",[871,2034,2035,2039,2042,2044,2047,2049,2052],{"class":873,"line":885},[871,2036,2038],{"class":2037},"spNyl","def",[871,2040,2041],{"class":998}," plot_heatmap",[871,2043,1142],{"class":907},[871,2045,2046],{"class":1707},"data",[871,2048,908],{"class":907},[871,2050,2051],{"class":1707}," data_set_name",[871,2053,2054],{"class":907},"):\n",[871,2056,2057,2060],{"class":873,"line":893},[871,2058,2059],{"class":877},"    try",[871,2061,1475],{"class":907},[871,2063,2064,2067,2069,2072,2075,2078],{"class":873,"line":914},[871,2065,2066],{"class":881},"        data ",[871,2068,1075],{"class":907},[871,2070,2071],{"class":881}," data",[871,2073,2074],{"class":907},"[",[871,2076,2077],{"class":881},"data_set_name",[871,2079,2080],{"class":907},"]\n",[871,2082,2083,2086,2090],{"class":873,"line":935},[871,2084,2085],{"class":877},"    except",[871,2087,2089],{"class":2088},"sBMFI"," KeyError",[871,2091,1475],{"class":907},[871,2093,2094,2097,2099,2102,2105,2108,2110,2113,2115],{"class":873,"line":949},[871,2095,2096],{"class":998},"        print",[871,2098,1142],{"class":907},[871,2100,2101],{"class":2037},"f",[871,2103,2104],{"class":1148},"'No data found for ",[871,2106,2107],{"class":1771},"{",[871,2109,2077],{"class":998},[871,2111,2112],{"class":1771},"}",[871,2114,1145],{"class":1148},[871,2116,1154],{"class":907},[871,2118,2119],{"class":873,"line":957},[871,2120,2121],{"class":877},"        return\n",[871,2123,2124,2127,2129,2132,2134,2137,2139,2142,2145,2148,2151,2154,2156,2158,2161,2163,2165,2168,2171],{"class":873,"line":964},[871,2125,2126],{"class":881},"    max_row ",[871,2128,1075],{"class":907},[871,2130,2131],{"class":998}," max",[871,2133,1142],{"class":907},[871,2135,2136],{"class":998},"max",[871,2138,1142],{"class":907},[871,2140,2141],{"class":998},"row",[871,2143,2144],{"class":907},")",[871,2146,2147],{"class":877}," for",[871,2149,2150],{"class":998}," row ",[871,2152,2153],{"class":877},"in",[871,2155,2071],{"class":998},[871,2157,2074],{"class":907},[871,2159,2160],{"class":907},"\"",[871,2162,2141],{"class":1148},[871,2164,2160],{"class":907},[871,2166,2167],{"class":907},"])",[871,2169,2170],{"class":907}," +",[871,2172,2173],{"class":1771}," 1\n",[871,2175,2176,2179,2181,2183,2185,2187,2189,2192,2194,2196,2199,2201,2203,2205,2207,2210,2212,2214,2216],{"class":873,"line":982},[871,2177,2178],{"class":881},"    max_col ",[871,2180,1075],{"class":907},[871,2182,2131],{"class":998},[871,2184,1142],{"class":907},[871,2186,2136],{"class":998},[871,2188,1142],{"class":907},[871,2190,2191],{"class":998},"col",[871,2193,2144],{"class":907},[871,2195,2147],{"class":877},[871,2197,2198],{"class":998}," col ",[871,2200,2153],{"class":877},[871,2202,2071],{"class":998},[871,2204,2074],{"class":907},[871,2206,2160],{"class":907},[871,2208,2209],{"class":1148},"column",[871,2211,2160],{"class":907},[871,2213,2167],{"class":907},[871,2215,2170],{"class":907},[871,2217,2173],{"class":1771},[871,2219,2220,2223,2225,2228,2230,2233,2236,2239,2241,2244],{"class":873,"line":990},[871,2221,2222],{"class":881},"    grid ",[871,2224,1075],{"class":907},[871,2226,2227],{"class":881}," np",[871,2229,922],{"class":907},[871,2231,2232],{"class":998},"zeros",[871,2234,2235],{"class":907},"((",[871,2237,2238],{"class":998},"max_row",[871,2240,908],{"class":907},[871,2242,2243],{"class":998}," max_col",[871,2245,1539],{"class":907},[871,2247,2248],{"class":873,"line":1005},[871,2249,961],{"emptyLinePlaceholder":960},[871,2251,2252,2255,2258,2260,2263,2265,2268,2270,2273,2275,2277,2279,2281,2283,2285,2288,2290,2292,2294,2296,2298,2300,2302,2304,2306,2309,2311],{"class":873,"line":1010},[871,2253,2254],{"class":877},"    for",[871,2256,2257],{"class":881}," row",[871,2259,908],{"class":907},[871,2261,2262],{"class":881}," col",[871,2264,908],{"class":907},[871,2266,2267],{"class":881}," val ",[871,2269,2153],{"class":877},[871,2271,2272],{"class":998}," zip",[871,2274,1142],{"class":907},[871,2276,2046],{"class":998},[871,2278,2074],{"class":907},[871,2280,2160],{"class":907},[871,2282,2141],{"class":1148},[871,2284,2160],{"class":907},[871,2286,2287],{"class":907},"],",[871,2289,2071],{"class":998},[871,2291,2074],{"class":907},[871,2293,2160],{"class":907},[871,2295,2209],{"class":1148},[871,2297,2160],{"class":907},[871,2299,2287],{"class":907},[871,2301,2071],{"class":998},[871,2303,2074],{"class":907},[871,2305,2160],{"class":907},[871,2307,2308],{"class":1148},"value",[871,2310,2160],{"class":907},[871,2312,2313],{"class":907},"]):\n",[871,2315,2316,2319,2322,2324,2327,2329,2332,2334,2336,2338,2340,2342,2344,2346,2349],{"class":873,"line":1018},[871,2317,2318],{"class":877},"        for",[871,2320,2321],{"class":881}," r",[871,2323,908],{"class":907},[871,2325,2326],{"class":881}," c",[871,2328,908],{"class":907},[871,2330,2331],{"class":881}," v ",[871,2333,2153],{"class":877},[871,2335,2272],{"class":998},[871,2337,1142],{"class":907},[871,2339,2141],{"class":998},[871,2341,908],{"class":907},[871,2343,2262],{"class":998},[871,2345,908],{"class":907},[871,2347,2348],{"class":998}," val",[871,2350,2054],{"class":907},[871,2352,2353,2356,2358,2361,2363,2365,2368,2371],{"class":873,"line":1036},[871,2354,2355],{"class":881},"            grid",[871,2357,2074],{"class":907},[871,2359,2360],{"class":881},"r",[871,2362,908],{"class":907},[871,2364,2326],{"class":881},[871,2366,2367],{"class":907},"]",[871,2369,2370],{"class":907}," =",[871,2372,2373],{"class":881}," v\n",[871,2375,2376],{"class":873,"line":1687},[871,2377,961],{"emptyLinePlaceholder":960},[871,2379,2380,2383,2385,2388,2390,2393,2395,2398,2400,2403],{"class":873,"line":1693},[871,2381,2382],{"class":881},"    plt",[871,2384,922],{"class":907},[871,2386,2387],{"class":998},"figure",[871,2389,1142],{"class":907},[871,2391,2392],{"class":1707},"figsize",[871,2394,1756],{"class":907},[871,2396,2397],{"class":1771},"6",[871,2399,908],{"class":907},[871,2401,2402],{"class":1771}," 5",[871,2404,1539],{"class":907},[871,2406,2407,2409,2411,2414,2416,2419,2421,2424,2426,2428,2431,2433,2435,2438,2440,2442,2445,2447],{"class":873,"line":1722},[871,2408,2382],{"class":881},[871,2410,922],{"class":907},[871,2412,2413],{"class":998},"imshow",[871,2415,1142],{"class":907},[871,2417,2418],{"class":998},"grid",[871,2420,908],{"class":907},[871,2422,2423],{"class":1707}," cmap",[871,2425,1075],{"class":907},[871,2427,1145],{"class":907},[871,2429,2430],{"class":1148},"hot",[871,2432,1145],{"class":907},[871,2434,908],{"class":907},[871,2436,2437],{"class":1707}," interpolation",[871,2439,1075],{"class":907},[871,2441,1145],{"class":907},[871,2443,2444],{"class":1148},"nearest",[871,2446,1145],{"class":907},[871,2448,1154],{"class":907},[871,2450,2451,2453,2455,2458,2460,2462,2465,2467,2469,2471,2474],{"class":873,"line":1727},[871,2452,2382],{"class":881},[871,2454,922],{"class":907},[871,2456,2457],{"class":998},"title",[871,2459,1142],{"class":907},[871,2461,2101],{"class":2037},[871,2463,2464],{"class":1148},"\"Active Read (",[871,2466,2107],{"class":1771},[871,2468,2077],{"class":998},[871,2470,2112],{"class":1771},[871,2472,2473],{"class":1148},")\"",[871,2475,1154],{"class":907},[871,2477,2478,2480,2482,2485],{"class":873,"line":1733},[871,2479,2382],{"class":881},[871,2481,922],{"class":907},[871,2483,2484],{"class":998},"colorbar",[871,2486,1002],{"class":907},[871,2488,2489,2491,2493,2495,2497,2500,2502,2504,2507,2509,2511,2514,2516,2518,2521,2523,2525,2528,2530,2532,2535,2537,2539,2542,2544,2547],{"class":873,"line":1739},[871,2490,2382],{"class":881},[871,2492,922],{"class":907},[871,2494,2418],{"class":998},[871,2496,1142],{"class":907},[871,2498,2499],{"class":1707},"which",[871,2501,1075],{"class":907},[871,2503,1145],{"class":907},[871,2505,2506],{"class":1148},"both",[871,2508,1145],{"class":907},[871,2510,908],{"class":907},[871,2512,2513],{"class":1707}," color",[871,2515,1075],{"class":907},[871,2517,1145],{"class":907},[871,2519,2520],{"class":1148},"white",[871,2522,1145],{"class":907},[871,2524,908],{"class":907},[871,2526,2527],{"class":1707}," linestyle",[871,2529,1075],{"class":907},[871,2531,1145],{"class":907},[871,2533,2534],{"class":1148},"-",[871,2536,1145],{"class":907},[871,2538,908],{"class":907},[871,2540,2541],{"class":1707}," linewidth",[871,2543,1075],{"class":907},[871,2545,2546],{"class":1771},"0.5",[871,2548,1154],{"class":907},[871,2550,2551,2553,2555,2558,2560,2563,2565,2568,2570,2573],{"class":873,"line":1778},[871,2552,2382],{"class":881},[871,2554,922],{"class":907},[871,2556,2557],{"class":998},"xticks",[871,2559,1142],{"class":907},[871,2561,2562],{"class":998},"np",[871,2564,922],{"class":907},[871,2566,2567],{"class":998},"arrange",[871,2569,1142],{"class":907},[871,2571,2572],{"class":998},"max_col",[871,2574,1539],{"class":907},[871,2576,2577,2579,2581,2584,2586,2588,2590,2592,2594,2596],{"class":873,"line":1783},[871,2578,2382],{"class":881},[871,2580,922],{"class":907},[871,2582,2583],{"class":998},"yticks",[871,2585,1142],{"class":907},[871,2587,2562],{"class":998},[871,2589,922],{"class":907},[871,2591,2567],{"class":998},[871,2593,1142],{"class":907},[871,2595,2238],{"class":998},[871,2597,1539],{"class":907},[871,2599,2600,2602,2604,2607],{"class":873,"line":1814},[871,2601,2382],{"class":881},[871,2603,922],{"class":907},[871,2605,2606],{"class":998},"show",[871,2608,1002],{"class":907},[761,2610,2611,2612,2614],{},"The setup to start a new read with the ",[868,2613,1715],{}," as explained before:",[861,2616,2618],{"className":863,"code":2617,"language":865,"meta":866,"style":866},"protocol = 'protocol.prt'\n\ngen5_service = gen5.gen5_service\nif (await gen5_service.get_experiment_open()):\n    await gen5_service.close_experiment()\n    print('Previous experiment closed without saving.')\nawait gen5_service.new_experiment(protocol=protocol)\nawait gen5_service.activate_plate(plate_name=(await gen5_service.get_plate_list())[0])\nif (await gen5_service.get_device_connected()):\n    await gen5_service.start_read()\n",[868,2619,2620,2635,2639,2651,2667,2679,2693,2713,2743,2759],{"__ignoreMap":866},[871,2621,2622,2625,2627,2630,2632],{"class":873,"line":874},[871,2623,2624],{"class":881},"protocol ",[871,2626,1075],{"class":907},[871,2628,2629],{"class":907}," '",[871,2631,1715],{"class":1148},[871,2633,2634],{"class":907},"'\n",[871,2636,2637],{"class":873,"line":885},[871,2638,961],{"emptyLinePlaceholder":960},[871,2640,2641,2643,2645,2647,2649],{"class":873,"line":893},[871,2642,1576],{"class":881},[871,2644,1075],{"class":907},[871,2646,1171],{"class":881},[871,2648,922],{"class":907},[871,2650,1585],{"class":925},[871,2652,2653,2655,2657,2659,2661,2663,2665],{"class":873,"line":914},[871,2654,1620],{"class":877},[871,2656,1623],{"class":907},[871,2658,1089],{"class":877},[871,2660,1628],{"class":881},[871,2662,922],{"class":907},[871,2664,1633],{"class":998},[871,2666,1636],{"class":907},[871,2668,2669,2671,2673,2675,2677],{"class":873,"line":935},[871,2670,1641],{"class":877},[871,2672,1628],{"class":881},[871,2674,922],{"class":907},[871,2676,1648],{"class":998},[871,2678,1002],{"class":907},[871,2680,2681,2683,2685,2687,2689,2691],{"class":873,"line":949},[871,2682,1480],{"class":998},[871,2684,1142],{"class":907},[871,2686,1145],{"class":907},[871,2688,1661],{"class":1148},[871,2690,1145],{"class":907},[871,2692,1154],{"class":907},[871,2694,2695,2697,2699,2701,2703,2705,2707,2709,2711],{"class":873,"line":957},[871,2696,1089],{"class":877},[871,2698,1628],{"class":881},[871,2700,922],{"class":907},[871,2702,1702],{"class":998},[871,2704,1142],{"class":907},[871,2706,1708],{"class":1707},[871,2708,1075],{"class":907},[871,2710,1708],{"class":998},[871,2712,1154],{"class":907},[871,2714,2715,2717,2719,2721,2723,2725,2727,2729,2731,2733,2735,2737,2739,2741],{"class":873,"line":964},[871,2716,1089],{"class":877},[871,2718,1628],{"class":881},[871,2720,922],{"class":907},[871,2722,1748],{"class":998},[871,2724,1142],{"class":907},[871,2726,1753],{"class":1707},[871,2728,1756],{"class":907},[871,2730,1089],{"class":877},[871,2732,1628],{"class":998},[871,2734,922],{"class":907},[871,2736,1765],{"class":998},[871,2738,1768],{"class":907},[871,2740,1772],{"class":1771},[871,2742,1775],{"class":907},[871,2744,2745,2747,2749,2751,2753,2755,2757],{"class":873,"line":982},[871,2746,1620],{"class":877},[871,2748,1623],{"class":907},[871,2750,1089],{"class":877},[871,2752,1628],{"class":881},[871,2754,922],{"class":907},[871,2756,1353],{"class":998},[871,2758,1636],{"class":907},[871,2760,2761,2763,2765,2767,2769],{"class":873,"line":990},[871,2762,1641],{"class":877},[871,2764,1628],{"class":881},[871,2766,922],{"class":907},[871,2768,1851],{"class":998},[871,2770,1002],{"class":907},[861,2772,2775],{"className":2773,"code":2774,"language":1105},[1103],"Previous experiment closed without saving.\n",[868,2776,2774],{"__ignoreMap":866},[1893,2778,2780],{"id":2779},"read-the-data-1","Read the data (1)",[761,2782,2783,2784,2787],{},"The data is buffered within the connector until a new read is started. This means however the data is accessed, it is temporarily available with the ",[868,2785,2786],{},"get_plate_data()"," call until a new read is started (can \u002F needs to be called multiple times).",[761,2789,2790,2791,2793,2794,2797,2798,2801,2802,2805,2806,2808,2809,2811],{},"The ",[868,2792,2786],{}," updates the buffered data one line at a time. This means it needs to be called multiple times until no more updates are happening. Within the data there is a ",[868,2795,2796],{},"current_data_status"," integer (",[868,2799,2800],{},"data[\"current_data_status\"]","), which can be used to check if more data is available:",[2803,2804],"br",{},"\n0: No raw data is currently available.",[2803,2807],{},"\n1: Raw data was found. More data is available.",[2803,2810],{},"\n2: Raw data was found. No additional data is currently available.",[761,2813,2814],{},"There are a couple of ways to read the produced data.",[2816,2817,2818],"ol",{},[776,2819,2820,2821,2823,2824,2826,2827,2829,2830,2832],{},"Wait until the read is concluded",[2803,2822],{},"\na. Print the data to the command line",[2803,2825],{},"\nb. Write the data to a json file",[2803,2828],{},"\nc. Save the different wavelengths reads to multiple csv files",[2803,2831],{},"\nd. Display and save as a heatmap",[861,2834,2836],{"className":863,"code":2835,"language":865,"meta":866,"style":866},"# 1. To wait until the read is concluded use:\nwhile (await gen5_service.get_read_status()) != 5:\n    clear_output()\n    print('Waiting')\n    await asyncio.sleep(2)\nprint('Read concluded')\n\n# Now call get_plate_data until no more data is found:\n# This is necessary as get_plate_data reads one line at a time.\ndata = json.loads(await gen5_service.get_plate_data())\nwhile (data[\"current_data_status\"] == 1): # 0: No raw data is currently available, 1: Raw data was found. More data is available., 2: Raw data was found. No additional data is currently available.\n    data = json.loads(await gen5_service.get_plate_data())\n\n# a. print the data\nprint(data)\n\n# b. save the whole data as .json file:\nwith open('output_raw.json', 'w') as file:\n    json.dump(data, file)\n\n# c. save only values as CSVs:\nfor dataset, content in data.items(): # loop through all the wavelength measured\n    if dataset == \"current_data_status\":\n        continue\n    max_row = max(max(row) for row in content['row'])\n    max_col = max(max(col) for col in content['column'])\n    csv_matrix = [['' for _ in range(max_col + 1)] for _ in range(max_row + 1)]\n\n    for row, col, val in zip(content['row'], content['column'], content['value']):\n        for r, c, v in zip(row, col, val):\n            csv_matrix[r][c] = v\n\n    with open(f'output_{dataset}.csv', 'w', newline='') as file:\n        writer = csv.writer(file)\n        writer.writerows(csv_matrix)\n\n\n# d. display plate as heatmap:\nfor dataset in data.keys():\n    if dataset == \"current_data_status\":\n        continue\n    plot_heatmap(data, dataset)\n",[868,2837,2838,2843,2867,2874,2889,2908,2923,2927,2932,2937,2964,2994,3019,3023,3028,3038,3042,3047,3082,3102,3106,3111,3139,3159,3164,3201,3237,3294,3299,3357,3390,3412,3417,3467,3490,3508,3513,3518,3524,3542,3559,3564],{"__ignoreMap":866},[871,2839,2840],{"class":873,"line":874},[871,2841,2842],{"class":1121},"# 1. To wait until the read is concluded use:\n",[871,2844,2845,2848,2850,2852,2854,2856,2858,2860,2863,2865],{"class":873,"line":885},[871,2846,2847],{"class":877},"while",[871,2849,1623],{"class":907},[871,2851,1089],{"class":877},[871,2853,1628],{"class":881},[871,2855,922],{"class":907},[871,2857,1495],{"class":998},[871,2859,1808],{"class":907},[871,2861,2862],{"class":907}," !=",[871,2864,2402],{"class":1771},[871,2866,1475],{"class":907},[871,2868,2869,2872],{"class":873,"line":893},[871,2870,2871],{"class":998},"    clear_output",[871,2873,1002],{"class":907},[871,2875,2876,2878,2880,2882,2885,2887],{"class":873,"line":914},[871,2877,1480],{"class":998},[871,2879,1142],{"class":907},[871,2881,1145],{"class":907},[871,2883,2884],{"class":1148},"Waiting",[871,2886,1145],{"class":907},[871,2888,1154],{"class":907},[871,2890,2891,2893,2896,2898,2901,2903,2906],{"class":873,"line":935},[871,2892,1641],{"class":877},[871,2894,2895],{"class":881}," asyncio",[871,2897,922],{"class":907},[871,2899,2900],{"class":998},"sleep",[871,2902,1142],{"class":907},[871,2904,2905],{"class":1771},"2",[871,2907,1154],{"class":907},[871,2909,2910,2912,2914,2916,2919,2921],{"class":873,"line":949},[871,2911,1256],{"class":998},[871,2913,1142],{"class":907},[871,2915,1145],{"class":907},[871,2917,2918],{"class":1148},"Read concluded",[871,2920,1145],{"class":907},[871,2922,1154],{"class":907},[871,2924,2925],{"class":873,"line":957},[871,2926,961],{"emptyLinePlaceholder":960},[871,2928,2929],{"class":873,"line":964},[871,2930,2931],{"class":1121},"# Now call get_plate_data until no more data is found:\n",[871,2933,2934],{"class":873,"line":982},[871,2935,2936],{"class":1121},"# This is necessary as get_plate_data reads one line at a time.\n",[871,2938,2939,2942,2944,2947,2949,2951,2953,2955,2957,2959,2962],{"class":873,"line":990},[871,2940,2941],{"class":881},"data ",[871,2943,1075],{"class":907},[871,2945,2946],{"class":881}," json",[871,2948,922],{"class":907},[871,2950,1526],{"class":998},[871,2952,1142],{"class":907},[871,2954,1089],{"class":877},[871,2956,1628],{"class":998},[871,2958,922],{"class":907},[871,2960,2961],{"class":998},"get_plate_data",[871,2963,1278],{"class":907},[871,2965,2966,2968,2970,2972,2974,2976,2978,2980,2982,2985,2988,2991],{"class":873,"line":1005},[871,2967,2847],{"class":877},[871,2969,1623],{"class":907},[871,2971,2046],{"class":881},[871,2973,2074],{"class":907},[871,2975,2160],{"class":907},[871,2977,2796],{"class":1148},[871,2979,2160],{"class":907},[871,2981,2367],{"class":907},[871,2983,2984],{"class":907}," ==",[871,2986,2987],{"class":1771}," 1",[871,2989,2990],{"class":907},"):",[871,2992,2993],{"class":1121}," # 0: No raw data is currently available, 1: Raw data was found. More data is available., 2: Raw data was found. No additional data is currently available.\n",[871,2995,2996,2999,3001,3003,3005,3007,3009,3011,3013,3015,3017],{"class":873,"line":1010},[871,2997,2998],{"class":881},"    data ",[871,3000,1075],{"class":907},[871,3002,2946],{"class":881},[871,3004,922],{"class":907},[871,3006,1526],{"class":998},[871,3008,1142],{"class":907},[871,3010,1089],{"class":877},[871,3012,1628],{"class":998},[871,3014,922],{"class":907},[871,3016,2961],{"class":998},[871,3018,1278],{"class":907},[871,3020,3021],{"class":873,"line":1018},[871,3022,961],{"emptyLinePlaceholder":960},[871,3024,3025],{"class":873,"line":1036},[871,3026,3027],{"class":1121},"# a. print the data\n",[871,3029,3030,3032,3034,3036],{"class":873,"line":1687},[871,3031,1256],{"class":998},[871,3033,1142],{"class":907},[871,3035,2046],{"class":998},[871,3037,1154],{"class":907},[871,3039,3040],{"class":873,"line":1693},[871,3041,961],{"emptyLinePlaceholder":960},[871,3043,3044],{"class":873,"line":1722},[871,3045,3046],{"class":1121},"# b. save the whole data as .json file:\n",[871,3048,3049,3052,3055,3057,3059,3062,3064,3066,3068,3071,3073,3075,3077,3080],{"class":873,"line":1727},[871,3050,3051],{"class":877},"with",[871,3053,3054],{"class":998}," open",[871,3056,1142],{"class":907},[871,3058,1145],{"class":907},[871,3060,3061],{"class":1148},"output_raw.json",[871,3063,1145],{"class":907},[871,3065,908],{"class":907},[871,3067,2629],{"class":907},[871,3069,3070],{"class":1148},"w",[871,3072,1145],{"class":907},[871,3074,2144],{"class":907},[871,3076,929],{"class":877},[871,3078,3079],{"class":881}," file",[871,3081,1475],{"class":907},[871,3083,3084,3087,3089,3092,3094,3096,3098,3100],{"class":873,"line":1733},[871,3085,3086],{"class":881},"    json",[871,3088,922],{"class":907},[871,3090,3091],{"class":998},"dump",[871,3093,1142],{"class":907},[871,3095,2046],{"class":998},[871,3097,908],{"class":907},[871,3099,3079],{"class":881},[871,3101,1154],{"class":907},[871,3103,3104],{"class":873,"line":1739},[871,3105,961],{"emptyLinePlaceholder":960},[871,3107,3108],{"class":873,"line":1778},[871,3109,3110],{"class":1121},"# c. save only values as CSVs:\n",[871,3112,3113,3116,3119,3121,3124,3126,3128,3130,3133,3136],{"class":873,"line":1783},[871,3114,3115],{"class":877},"for",[871,3117,3118],{"class":881}," dataset",[871,3120,908],{"class":907},[871,3122,3123],{"class":881}," content ",[871,3125,2153],{"class":877},[871,3127,2071],{"class":881},[871,3129,922],{"class":907},[871,3131,3132],{"class":998},"items",[871,3134,3135],{"class":907},"():",[871,3137,3138],{"class":1121}," # loop through all the wavelength measured\n",[871,3140,3141,3144,3147,3150,3153,3155,3157],{"class":873,"line":1814},[871,3142,3143],{"class":877},"    if",[871,3145,3146],{"class":881}," dataset ",[871,3148,3149],{"class":907},"==",[871,3151,3152],{"class":907}," \"",[871,3154,2796],{"class":1148},[871,3156,2160],{"class":907},[871,3158,1475],{"class":907},[871,3160,3161],{"class":873,"line":1819},[871,3162,3163],{"class":877},"        continue\n",[871,3165,3166,3168,3170,3172,3174,3176,3178,3180,3182,3184,3186,3188,3191,3193,3195,3197,3199],{"class":873,"line":1825},[871,3167,2126],{"class":881},[871,3169,1075],{"class":907},[871,3171,2131],{"class":998},[871,3173,1142],{"class":907},[871,3175,2136],{"class":998},[871,3177,1142],{"class":907},[871,3179,2141],{"class":998},[871,3181,2144],{"class":907},[871,3183,2147],{"class":877},[871,3185,2150],{"class":998},[871,3187,2153],{"class":877},[871,3189,3190],{"class":998}," content",[871,3192,2074],{"class":907},[871,3194,1145],{"class":907},[871,3196,2141],{"class":1148},[871,3198,1145],{"class":907},[871,3200,1775],{"class":907},[871,3202,3203,3205,3207,3209,3211,3213,3215,3217,3219,3221,3223,3225,3227,3229,3231,3233,3235],{"class":873,"line":1842},[871,3204,2178],{"class":881},[871,3206,1075],{"class":907},[871,3208,2131],{"class":998},[871,3210,1142],{"class":907},[871,3212,2136],{"class":998},[871,3214,1142],{"class":907},[871,3216,2191],{"class":998},[871,3218,2144],{"class":907},[871,3220,2147],{"class":877},[871,3222,2198],{"class":998},[871,3224,2153],{"class":877},[871,3226,3190],{"class":998},[871,3228,2074],{"class":907},[871,3230,1145],{"class":907},[871,3232,2209],{"class":1148},[871,3234,1145],{"class":907},[871,3236,1775],{"class":907},[871,3238,3240,3243,3245,3248,3251,3253,3256,3258,3261,3263,3266,3269,3271,3274,3276,3278,3280,3282,3284,3287,3289,3291],{"class":873,"line":3239},27,[871,3241,3242],{"class":881},"    csv_matrix ",[871,3244,1075],{"class":907},[871,3246,3247],{"class":907}," [[",[871,3249,3250],{"class":907},"''",[871,3252,2147],{"class":877},[871,3254,3255],{"class":881}," _ ",[871,3257,2153],{"class":877},[871,3259,3260],{"class":998}," range",[871,3262,1142],{"class":907},[871,3264,3265],{"class":998},"max_col ",[871,3267,3268],{"class":907},"+",[871,3270,2987],{"class":1771},[871,3272,3273],{"class":907},")]",[871,3275,2147],{"class":877},[871,3277,3255],{"class":881},[871,3279,2153],{"class":877},[871,3281,3260],{"class":998},[871,3283,1142],{"class":907},[871,3285,3286],{"class":998},"max_row ",[871,3288,3268],{"class":907},[871,3290,2987],{"class":1771},[871,3292,3293],{"class":907},")]\n",[871,3295,3297],{"class":873,"line":3296},28,[871,3298,961],{"emptyLinePlaceholder":960},[871,3300,3302,3304,3306,3308,3310,3312,3314,3316,3318,3320,3323,3325,3327,3329,3331,3333,3335,3337,3339,3341,3343,3345,3347,3349,3351,3353,3355],{"class":873,"line":3301},29,[871,3303,2254],{"class":877},[871,3305,2257],{"class":881},[871,3307,908],{"class":907},[871,3309,2262],{"class":881},[871,3311,908],{"class":907},[871,3313,2267],{"class":881},[871,3315,2153],{"class":877},[871,3317,2272],{"class":998},[871,3319,1142],{"class":907},[871,3321,3322],{"class":998},"content",[871,3324,2074],{"class":907},[871,3326,1145],{"class":907},[871,3328,2141],{"class":1148},[871,3330,1145],{"class":907},[871,3332,2287],{"class":907},[871,3334,3190],{"class":998},[871,3336,2074],{"class":907},[871,3338,1145],{"class":907},[871,3340,2209],{"class":1148},[871,3342,1145],{"class":907},[871,3344,2287],{"class":907},[871,3346,3190],{"class":998},[871,3348,2074],{"class":907},[871,3350,1145],{"class":907},[871,3352,2308],{"class":1148},[871,3354,1145],{"class":907},[871,3356,2313],{"class":907},[871,3358,3360,3362,3364,3366,3368,3370,3372,3374,3376,3378,3380,3382,3384,3386,3388],{"class":873,"line":3359},30,[871,3361,2318],{"class":877},[871,3363,2321],{"class":881},[871,3365,908],{"class":907},[871,3367,2326],{"class":881},[871,3369,908],{"class":907},[871,3371,2331],{"class":881},[871,3373,2153],{"class":877},[871,3375,2272],{"class":998},[871,3377,1142],{"class":907},[871,3379,2141],{"class":998},[871,3381,908],{"class":907},[871,3383,2262],{"class":998},[871,3385,908],{"class":907},[871,3387,2348],{"class":998},[871,3389,2054],{"class":907},[871,3391,3393,3396,3398,3400,3403,3406,3408,3410],{"class":873,"line":3392},31,[871,3394,3395],{"class":881},"            csv_matrix",[871,3397,2074],{"class":907},[871,3399,2360],{"class":881},[871,3401,3402],{"class":907},"][",[871,3404,3405],{"class":881},"c",[871,3407,2367],{"class":907},[871,3409,2370],{"class":907},[871,3411,2373],{"class":881},[871,3413,3415],{"class":873,"line":3414},32,[871,3416,961],{"emptyLinePlaceholder":960},[871,3418,3420,3423,3425,3427,3429,3432,3434,3437,3439,3442,3444,3446,3448,3450,3452,3455,3457,3459,3461,3463,3465],{"class":873,"line":3419},33,[871,3421,3422],{"class":877},"    with",[871,3424,3054],{"class":998},[871,3426,1142],{"class":907},[871,3428,2101],{"class":2037},[871,3430,3431],{"class":1148},"'output_",[871,3433,2107],{"class":1771},[871,3435,3436],{"class":998},"dataset",[871,3438,2112],{"class":1771},[871,3440,3441],{"class":1148},".csv'",[871,3443,908],{"class":907},[871,3445,2629],{"class":907},[871,3447,3070],{"class":1148},[871,3449,1145],{"class":907},[871,3451,908],{"class":907},[871,3453,3454],{"class":1707}," newline",[871,3456,1075],{"class":907},[871,3458,3250],{"class":907},[871,3460,2144],{"class":907},[871,3462,929],{"class":877},[871,3464,3079],{"class":881},[871,3466,1475],{"class":907},[871,3468,3470,3473,3475,3478,3480,3483,3485,3488],{"class":873,"line":3469},34,[871,3471,3472],{"class":881},"        writer ",[871,3474,1075],{"class":907},[871,3476,3477],{"class":881}," csv",[871,3479,922],{"class":907},[871,3481,3482],{"class":998},"writer",[871,3484,1142],{"class":907},[871,3486,3487],{"class":881},"file",[871,3489,1154],{"class":907},[871,3491,3493,3496,3498,3501,3503,3506],{"class":873,"line":3492},35,[871,3494,3495],{"class":881},"        writer",[871,3497,922],{"class":907},[871,3499,3500],{"class":998},"writerows",[871,3502,1142],{"class":907},[871,3504,3505],{"class":998},"csv_matrix",[871,3507,1154],{"class":907},[871,3509,3511],{"class":873,"line":3510},36,[871,3512,961],{"emptyLinePlaceholder":960},[871,3514,3516],{"class":873,"line":3515},37,[871,3517,961],{"emptyLinePlaceholder":960},[871,3519,3521],{"class":873,"line":3520},38,[871,3522,3523],{"class":1121},"# d. display plate as heatmap:\n",[871,3525,3527,3529,3531,3533,3535,3537,3539],{"class":873,"line":3526},39,[871,3528,3115],{"class":877},[871,3530,3146],{"class":881},[871,3532,2153],{"class":877},[871,3534,2071],{"class":881},[871,3536,922],{"class":907},[871,3538,1275],{"class":998},[871,3540,3541],{"class":907},"():\n",[871,3543,3545,3547,3549,3551,3553,3555,3557],{"class":873,"line":3544},40,[871,3546,3143],{"class":877},[871,3548,3146],{"class":881},[871,3550,3149],{"class":907},[871,3552,3152],{"class":907},[871,3554,2796],{"class":1148},[871,3556,2160],{"class":907},[871,3558,1475],{"class":907},[871,3560,3562],{"class":873,"line":3561},41,[871,3563,3163],{"class":877},[871,3565,3567,3570,3572,3574,3576,3578],{"class":873,"line":3566},42,[871,3568,3569],{"class":998},"    plot_heatmap",[871,3571,1142],{"class":907},[871,3573,2046],{"class":998},[871,3575,908],{"class":907},[871,3577,3118],{"class":998},[871,3579,1154],{"class":907},[861,3581,3584],{"className":3582,"code":3583,"language":1105},[1103],"Waiting\nRead concluded\n{'750': {'status': [], 'row': [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4], [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], [6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6], [7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7]], 'column': [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], [11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], [11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], [11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], [11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]], 'kineticIndex': [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], 'wavelengthIndex': [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], 'horizontalIndex': [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], 'verticalIndex': [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], 'value': [[-0.0, -0.0, 0.0, -0.0, -0.0, 0.0, 0.0, 0.0, -0.0, -0.0, -0.0, 0.0], [-0.0, 0.0, -0.0, -0.0, -0.0, 0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0], [0.0, 0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, 0.0, -0.0, 0.0], [-0.0, 0.0001, -0.0, -0.0, 0.0, -0.0, 0.0, -0.0, -0.0, -0.0, -0.0, -0.0], [-0.0, -0.0, -0.0, 0.0, -0.0, -0.0, -0.0, 0.0, -0.0, -0.0, -0.0, 0.0], [-0.0, 0.0, -0.0, -0.0, -0.0, -0.0, 0.0, 0.0, -0.0, -0.0, -0.0, -0.0], [-0.0, -0.0, -0.0, -0.0, -0.0, 0.0, -0.0, -0.0, -0.0, -0.0, 0.0, -0.0], [-0.0, -0.0, -0.0, -0.0, 0.0, -0.0, 0.0, -0.0, -0.0, -0.0, 0.0, 0.0]], 'primaryStatus': [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], 'secondaryStatus': [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]}, 'current_data_status': 2, '600': {'status': [], 'row': [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4], [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], [6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6], [7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7]], 'column': [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], [11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], [11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], [11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], [11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]], 'kineticIndex': [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], 'wavelengthIndex': [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], 'horizontalIndex': [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], 'verticalIndex': [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], 'value': [[0.0001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0001, -0.0, 0.0001, -0.0, 0.0, -0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0], [0.0, -0.0, 0.0001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, -0.0, 0.0, -0.0], [0.0, 0.0, 0.0001, 0.0, -0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0001, 0.0], [0.0, 0.0, -0.0, 0.0, 0.0, 0.0001, 0.0, 0.0001, 0.0, 0.0, 0.0, 0.0001], [-0.0, 0.0001, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0001, 0.0001, 0.0, 0.0], [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, 0.0, 0.0001, 0.0, 0.0, 0.0001]], 'primaryStatus': [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], 'secondaryStatus': [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]}}\n",[868,3585,3583],{"__ignoreMap":866},[3587,3588],"img",{"src":3589,"alt":3590,"width":3591},"\u002Fimages\u002Fguides\u002Fgen5\u002Fs_heatmap_750.webp","The output data from the 750nm read plotted as a heatmap",500,[3587,3593],{"src":3594,"alt":3595,"width":3591},"\u002Fimages\u002Fguides\u002Fgen5\u002Fs_heatmap_600.webp","The output data from the 600nm read plotted as a heatmap",[1893,3597,3599],{"id":3598},"read-the-data-2","Read the data (2)",[2816,3601,3602],{"start":885},[776,3603,3604,3605,3607],{},"Read the data during the read (live)",[2803,3606],{},"\nThe heatmap is updated each time new data is available",[861,3609,3611],{"className":863,"code":3610,"language":865,"meta":866,"style":866},"# As long as the read is running, we gather the result data.\ndata = {}\nwhile (await gen5_service.get_read_status()) == 1:\n    try:\n        new_data = json.loads(await gen5_service.get_plate_data())\n        if new_data[\"current_data_status\"] != 0 and data != new_data:\n            data = new_data\n            # perform one of the options shown above. For example plot the heatmap of the first dataset:\n            data_set_names = await gen5_service.get_data_set_names()\n            clear_output()\n            for data_set_name in data_set_names:\n                plot_heatmap(data, data_set_name)\n        await asyncio.sleep(1)\n    except Exception as e:\n        print(e)\nprint(data)\n\n\n# when the read is concluded, there might still be leftover data saved on the plate.\n# The same lines as shown in the previous section can be used to collect all of this data:\ndata = json.loads(await gen5_service.get_plate_data())\ndata_set_names = await gen5_service.get_data_set_names()\n\nwhile (data[\"current_data_status\"] == 1):\n    data = json.loads(await gen5_service.get_plate_data())\n\nclear_output()\nfor data_set_name in data_set_names:\n    plot_heatmap(data, data_set_name)\n",[868,3612,3613,3618,3627,3649,3655,3680,3716,3726,3731,3748,3755,3770,3785,3803,3817,3828,3838,3842,3846,3851,3856,3880,3897,3901,3925,3949,3953,3960,3972],{"__ignoreMap":866},[871,3614,3615],{"class":873,"line":874},[871,3616,3617],{"class":1121},"# As long as the read is running, we gather the result data.\n",[871,3619,3620,3622,3624],{"class":873,"line":885},[871,3621,2941],{"class":881},[871,3623,1075],{"class":907},[871,3625,3626],{"class":907}," {}\n",[871,3628,3629,3631,3633,3635,3637,3639,3641,3643,3645,3647],{"class":873,"line":893},[871,3630,2847],{"class":877},[871,3632,1623],{"class":907},[871,3634,1089],{"class":877},[871,3636,1628],{"class":881},[871,3638,922],{"class":907},[871,3640,1495],{"class":998},[871,3642,1808],{"class":907},[871,3644,2984],{"class":907},[871,3646,2987],{"class":1771},[871,3648,1475],{"class":907},[871,3650,3651,3653],{"class":873,"line":914},[871,3652,2059],{"class":877},[871,3654,1475],{"class":907},[871,3656,3657,3660,3662,3664,3666,3668,3670,3672,3674,3676,3678],{"class":873,"line":935},[871,3658,3659],{"class":881},"        new_data ",[871,3661,1075],{"class":907},[871,3663,2946],{"class":881},[871,3665,922],{"class":907},[871,3667,1526],{"class":998},[871,3669,1142],{"class":907},[871,3671,1089],{"class":877},[871,3673,1628],{"class":998},[871,3675,922],{"class":907},[871,3677,2961],{"class":998},[871,3679,1278],{"class":907},[871,3681,3682,3685,3688,3690,3692,3694,3696,3698,3700,3703,3706,3709,3712,3714],{"class":873,"line":949},[871,3683,3684],{"class":877},"        if",[871,3686,3687],{"class":881}," new_data",[871,3689,2074],{"class":907},[871,3691,2160],{"class":907},[871,3693,2796],{"class":1148},[871,3695,2160],{"class":907},[871,3697,2367],{"class":907},[871,3699,2862],{"class":907},[871,3701,3702],{"class":1771}," 0",[871,3704,3705],{"class":907}," and",[871,3707,3708],{"class":881}," data ",[871,3710,3711],{"class":907},"!=",[871,3713,3687],{"class":881},[871,3715,1475],{"class":907},[871,3717,3718,3721,3723],{"class":873,"line":957},[871,3719,3720],{"class":881},"            data ",[871,3722,1075],{"class":907},[871,3724,3725],{"class":881}," new_data\n",[871,3727,3728],{"class":873,"line":964},[871,3729,3730],{"class":1121},"            # perform one of the options shown above. For example plot the heatmap of the first dataset:\n",[871,3732,3733,3736,3738,3740,3742,3744,3746],{"class":873,"line":982},[871,3734,3735],{"class":881},"            data_set_names ",[871,3737,1075],{"class":907},[871,3739,1132],{"class":877},[871,3741,1628],{"class":881},[871,3743,922],{"class":907},[871,3745,2003],{"class":998},[871,3747,1002],{"class":907},[871,3749,3750,3753],{"class":873,"line":990},[871,3751,3752],{"class":998},"            clear_output",[871,3754,1002],{"class":907},[871,3756,3757,3760,3763,3765,3768],{"class":873,"line":1005},[871,3758,3759],{"class":877},"            for",[871,3761,3762],{"class":881}," data_set_name ",[871,3764,2153],{"class":877},[871,3766,3767],{"class":881}," data_set_names",[871,3769,1475],{"class":907},[871,3771,3772,3775,3777,3779,3781,3783],{"class":873,"line":1010},[871,3773,3774],{"class":998},"                plot_heatmap",[871,3776,1142],{"class":907},[871,3778,2046],{"class":998},[871,3780,908],{"class":907},[871,3782,2051],{"class":998},[871,3784,1154],{"class":907},[871,3786,3787,3790,3792,3794,3796,3798,3801],{"class":873,"line":1018},[871,3788,3789],{"class":877},"        await",[871,3791,2895],{"class":881},[871,3793,922],{"class":907},[871,3795,2900],{"class":998},[871,3797,1142],{"class":907},[871,3799,3800],{"class":1771},"1",[871,3802,1154],{"class":907},[871,3804,3805,3807,3810,3812,3815],{"class":873,"line":1036},[871,3806,2085],{"class":877},[871,3808,3809],{"class":2088}," Exception",[871,3811,929],{"class":877},[871,3813,3814],{"class":881}," e",[871,3816,1475],{"class":907},[871,3818,3819,3821,3823,3826],{"class":873,"line":1687},[871,3820,2096],{"class":998},[871,3822,1142],{"class":907},[871,3824,3825],{"class":998},"e",[871,3827,1154],{"class":907},[871,3829,3830,3832,3834,3836],{"class":873,"line":1693},[871,3831,1256],{"class":998},[871,3833,1142],{"class":907},[871,3835,2046],{"class":998},[871,3837,1154],{"class":907},[871,3839,3840],{"class":873,"line":1722},[871,3841,961],{"emptyLinePlaceholder":960},[871,3843,3844],{"class":873,"line":1727},[871,3845,961],{"emptyLinePlaceholder":960},[871,3847,3848],{"class":873,"line":1733},[871,3849,3850],{"class":1121},"# when the read is concluded, there might still be leftover data saved on the plate.\n",[871,3852,3853],{"class":873,"line":1739},[871,3854,3855],{"class":1121},"# The same lines as shown in the previous section can be used to collect all of this data:\n",[871,3857,3858,3860,3862,3864,3866,3868,3870,3872,3874,3876,3878],{"class":873,"line":1778},[871,3859,2941],{"class":881},[871,3861,1075],{"class":907},[871,3863,2946],{"class":881},[871,3865,922],{"class":907},[871,3867,1526],{"class":998},[871,3869,1142],{"class":907},[871,3871,1089],{"class":877},[871,3873,1628],{"class":998},[871,3875,922],{"class":907},[871,3877,2961],{"class":998},[871,3879,1278],{"class":907},[871,3881,3882,3885,3887,3889,3891,3893,3895],{"class":873,"line":1783},[871,3883,3884],{"class":881},"data_set_names ",[871,3886,1075],{"class":907},[871,3888,1132],{"class":877},[871,3890,1628],{"class":881},[871,3892,922],{"class":907},[871,3894,2003],{"class":998},[871,3896,1002],{"class":907},[871,3898,3899],{"class":873,"line":1814},[871,3900,961],{"emptyLinePlaceholder":960},[871,3902,3903,3905,3907,3909,3911,3913,3915,3917,3919,3921,3923],{"class":873,"line":1819},[871,3904,2847],{"class":877},[871,3906,1623],{"class":907},[871,3908,2046],{"class":881},[871,3910,2074],{"class":907},[871,3912,2160],{"class":907},[871,3914,2796],{"class":1148},[871,3916,2160],{"class":907},[871,3918,2367],{"class":907},[871,3920,2984],{"class":907},[871,3922,2987],{"class":1771},[871,3924,2054],{"class":907},[871,3926,3927,3929,3931,3933,3935,3937,3939,3941,3943,3945,3947],{"class":873,"line":1825},[871,3928,2998],{"class":881},[871,3930,1075],{"class":907},[871,3932,2946],{"class":881},[871,3934,922],{"class":907},[871,3936,1526],{"class":998},[871,3938,1142],{"class":907},[871,3940,1089],{"class":877},[871,3942,1628],{"class":998},[871,3944,922],{"class":907},[871,3946,2961],{"class":998},[871,3948,1278],{"class":907},[871,3950,3951],{"class":873,"line":1842},[871,3952,961],{"emptyLinePlaceholder":960},[871,3954,3955,3958],{"class":873,"line":3239},[871,3956,3957],{"class":998},"clear_output",[871,3959,1002],{"class":907},[871,3961,3962,3964,3966,3968,3970],{"class":873,"line":3296},[871,3963,3115],{"class":877},[871,3965,3762],{"class":881},[871,3967,2153],{"class":877},[871,3969,3767],{"class":881},[871,3971,1475],{"class":907},[871,3973,3974,3976,3978,3980,3982,3984],{"class":873,"line":3301},[871,3975,3569],{"class":998},[871,3977,1142],{"class":907},[871,3979,2046],{"class":998},[871,3981,908],{"class":907},[871,3983,2051],{"class":998},[871,3985,1154],{"class":907},[3587,3987],{"src":3988,"alt":3590,"width":3591},"\u002Fimages\u002Fguides\u002Fgen5\u002Fs_live_heatmap_750.webp",[3587,3990],{"src":3991,"alt":3595,"width":3591},"\u002Fimages\u002Fguides\u002Fgen5\u002Fs_live_heatmap_600.webp",[861,3993,3996],{"className":3994,"code":3995,"language":1105},[1103],"No data found for T° 750\n",[868,3997,3995],{"__ignoreMap":866},[756,3999,4001],{"id":4000},"door-controller-carrier-controller","Door controller (= carrier controller)",[761,4003,4004],{},"The door_controller module contains properties to monitor and commands to control the carrier of the reader:",[773,4006,4007,4010,4013,4016],{},[776,4008,4009],{},"subscribe_door_open()",[776,4011,4012],{},"get_door_open_once()",[776,4014,4015],{},"close_door()",[776,4017,4018],{},"open_door()",[1236,4020,4022],{"id":4021},"subscribe-to-the-door-state","Subscribe to the door state",[761,4024,4025,4026,4029,4030,4033],{},"A door state of ",[868,4027,4028],{},"True"," indicates an open door (carrier outside) while ",[868,4031,4032],{},"False"," indicates a closed door (carrier inside)",[861,4035,4037],{"className":863,"code":4036,"language":865,"meta":866,"style":866},"from contextlib import suppress\n\nsubscription = await gen5.door_controller.subscribe_door_open()\ntry:\n    with suppress(asyncio.CancelledError):\n        async with subscription:\n            async for item in subscription:\n                print(item)\nexcept KeyboardInterrupt as e:\n    print(\"Stopped by user\")\n",[868,4038,4039,4051,4055,4078,4084,4103,4116,4132,4144,4157],{"__ignoreMap":866},[871,4040,4041,4043,4046,4048],{"class":873,"line":874},[871,4042,896],{"class":877},[871,4044,4045],{"class":881}," contextlib ",[871,4047,878],{"class":877},[871,4049,4050],{"class":881}," suppress\n",[871,4052,4053],{"class":873,"line":885},[871,4054,961],{"emptyLinePlaceholder":960},[871,4056,4057,4060,4062,4064,4066,4068,4071,4073,4076],{"class":873,"line":893},[871,4058,4059],{"class":881},"subscription ",[871,4061,1075],{"class":907},[871,4063,1132],{"class":877},[871,4065,1171],{"class":881},[871,4067,922],{"class":907},[871,4069,4070],{"class":925},"door_controller",[871,4072,922],{"class":907},[871,4074,4075],{"class":998},"subscribe_door_open",[871,4077,1002],{"class":907},[871,4079,4080,4082],{"class":873,"line":914},[871,4081,1472],{"class":877},[871,4083,1475],{"class":907},[871,4085,4086,4088,4091,4093,4096,4098,4101],{"class":873,"line":935},[871,4087,3422],{"class":877},[871,4089,4090],{"class":998}," suppress",[871,4092,1142],{"class":907},[871,4094,4095],{"class":998},"asyncio",[871,4097,922],{"class":907},[871,4099,4100],{"class":925},"CancelledError",[871,4102,2054],{"class":907},[871,4104,4105,4108,4111,4114],{"class":873,"line":949},[871,4106,4107],{"class":877},"        async",[871,4109,4110],{"class":877}," with",[871,4112,4113],{"class":881}," subscription",[871,4115,1475],{"class":907},[871,4117,4118,4121,4123,4126,4128,4130],{"class":873,"line":957},[871,4119,4120],{"class":877},"            async",[871,4122,2147],{"class":877},[871,4124,4125],{"class":881}," item ",[871,4127,2153],{"class":877},[871,4129,4113],{"class":881},[871,4131,1475],{"class":907},[871,4133,4134,4137,4139,4142],{"class":873,"line":964},[871,4135,4136],{"class":998},"                print",[871,4138,1142],{"class":907},[871,4140,4141],{"class":998},"item",[871,4143,1154],{"class":907},[871,4145,4146,4148,4151,4153,4155],{"class":873,"line":982},[871,4147,1502],{"class":877},[871,4149,4150],{"class":2088}," KeyboardInterrupt",[871,4152,929],{"class":877},[871,4154,3814],{"class":881},[871,4156,1475],{"class":907},[871,4158,4159,4161,4163,4165,4168,4170],{"class":873,"line":990},[871,4160,1480],{"class":998},[871,4162,1142],{"class":907},[871,4164,2160],{"class":907},[871,4166,4167],{"class":1148},"Stopped by user",[871,4169,2160],{"class":907},[871,4171,1154],{"class":907},[861,4173,4176],{"className":4174,"code":4175,"language":1105},[1103],"False\nTrue\n",[868,4177,4175],{"__ignoreMap":866},[1236,4179,4181],{"id":4180},"toggle-the-door","Toggle the door",[761,4183,4184],{},"Here a simple door toggle mechanism is shown.",[861,4186,4188],{"className":863,"code":4187,"language":865,"meta":866,"style":866},"# Example: a carrier toggle:\nif (await gen5.door_controller.get_door_open_once()):\n    await gen5.door_controller.close_door()\nelse:\n    await gen5.door_controller.open_door()\n\nprint(await gen5.door_controller.get_door_open_once())\n",[868,4189,4190,4195,4216,4233,4240,4257,4261],{"__ignoreMap":866},[871,4191,4192],{"class":873,"line":874},[871,4193,4194],{"class":1121},"# Example: a carrier toggle:\n",[871,4196,4197,4199,4201,4203,4205,4207,4209,4211,4214],{"class":873,"line":885},[871,4198,1620],{"class":877},[871,4200,1623],{"class":907},[871,4202,1089],{"class":877},[871,4204,1171],{"class":881},[871,4206,922],{"class":907},[871,4208,4070],{"class":925},[871,4210,922],{"class":907},[871,4212,4213],{"class":998},"get_door_open_once",[871,4215,1636],{"class":907},[871,4217,4218,4220,4222,4224,4226,4228,4231],{"class":873,"line":893},[871,4219,1641],{"class":877},[871,4221,1171],{"class":881},[871,4223,922],{"class":907},[871,4225,4070],{"class":925},[871,4227,922],{"class":907},[871,4229,4230],{"class":998},"close_door",[871,4232,1002],{"class":907},[871,4234,4235,4238],{"class":873,"line":914},[871,4236,4237],{"class":877},"else",[871,4239,1475],{"class":907},[871,4241,4242,4244,4246,4248,4250,4252,4255],{"class":873,"line":935},[871,4243,1641],{"class":877},[871,4245,1171],{"class":881},[871,4247,922],{"class":907},[871,4249,4070],{"class":925},[871,4251,922],{"class":907},[871,4253,4254],{"class":998},"open_door",[871,4256,1002],{"class":907},[871,4258,4259],{"class":873,"line":949},[871,4260,961],{"emptyLinePlaceholder":960},[871,4262,4263,4265,4267,4269,4271,4273,4275,4277,4279],{"class":873,"line":957},[871,4264,1256],{"class":998},[871,4266,1142],{"class":907},[871,4268,1089],{"class":877},[871,4270,1171],{"class":998},[871,4272,922],{"class":907},[871,4274,4070],{"class":925},[871,4276,922],{"class":907},[871,4278,4213],{"class":998},[871,4280,1278],{"class":907},[861,4282,4285],{"className":4283,"code":4284,"language":1105},[1103],"False\n",[868,4286,4284],{"__ignoreMap":866},[756,4288,4290],{"id":4289},"temperature-controller","Temperature Controller",[761,4292,4293],{},"The temperature_controller module contains properties to monitor and commands to control the temperature set point:",[773,4295,4296,4299,4302,4305,4308,4311],{},[776,4297,4298],{},"subscribe_current_temperature()",[776,4300,4301],{},"get_target_temperature()",[776,4303,4304],{},"set_target_temperature(temperature in °C)",[776,4306,4307],{},"get_incubation_on()",[776,4309,4310],{},"turn_incubation_on()",[776,4312,4313],{},"turn_incubation_off()",[861,4315,4317],{"className":863,"code":4316,"language":865,"meta":866,"style":866},"from contextlib import suppress\n\nsubscription = await gen5.temperature_controller.subscribe_current_temperature()\ntry:\n    with suppress(asyncio.CancelledError):\n        async with subscription:\n            async for current_temperature in subscription:\n                clear_output()\n                print(f\"Current temperature: {round(current_temperature, 2)}°C\")\nexcept KeyboardInterrupt as e:\n    print(\"Stopped by user\")\n",[868,4318,4319,4329,4333,4355,4361,4377,4387,4402,4409,4444,4456],{"__ignoreMap":866},[871,4320,4321,4323,4325,4327],{"class":873,"line":874},[871,4322,896],{"class":877},[871,4324,4045],{"class":881},[871,4326,878],{"class":877},[871,4328,4050],{"class":881},[871,4330,4331],{"class":873,"line":885},[871,4332,961],{"emptyLinePlaceholder":960},[871,4334,4335,4337,4339,4341,4343,4345,4348,4350,4353],{"class":873,"line":893},[871,4336,4059],{"class":881},[871,4338,1075],{"class":907},[871,4340,1132],{"class":877},[871,4342,1171],{"class":881},[871,4344,922],{"class":907},[871,4346,4347],{"class":925},"temperature_controller",[871,4349,922],{"class":907},[871,4351,4352],{"class":998},"subscribe_current_temperature",[871,4354,1002],{"class":907},[871,4356,4357,4359],{"class":873,"line":914},[871,4358,1472],{"class":877},[871,4360,1475],{"class":907},[871,4362,4363,4365,4367,4369,4371,4373,4375],{"class":873,"line":935},[871,4364,3422],{"class":877},[871,4366,4090],{"class":998},[871,4368,1142],{"class":907},[871,4370,4095],{"class":998},[871,4372,922],{"class":907},[871,4374,4100],{"class":925},[871,4376,2054],{"class":907},[871,4378,4379,4381,4383,4385],{"class":873,"line":949},[871,4380,4107],{"class":877},[871,4382,4110],{"class":877},[871,4384,4113],{"class":881},[871,4386,1475],{"class":907},[871,4388,4389,4391,4393,4396,4398,4400],{"class":873,"line":957},[871,4390,4120],{"class":877},[871,4392,2147],{"class":877},[871,4394,4395],{"class":881}," current_temperature ",[871,4397,2153],{"class":877},[871,4399,4113],{"class":881},[871,4401,1475],{"class":907},[871,4403,4404,4407],{"class":873,"line":964},[871,4405,4406],{"class":998},"                clear_output",[871,4408,1002],{"class":907},[871,4410,4411,4413,4415,4417,4420,4422,4425,4427,4430,4432,4435,4437,4439,4442],{"class":873,"line":982},[871,4412,4136],{"class":998},[871,4414,1142],{"class":907},[871,4416,2101],{"class":2037},[871,4418,4419],{"class":1148},"\"Current temperature: ",[871,4421,2107],{"class":1771},[871,4423,4424],{"class":998},"round",[871,4426,1142],{"class":907},[871,4428,4429],{"class":998},"current_temperature",[871,4431,908],{"class":907},[871,4433,4434],{"class":1771}," 2",[871,4436,2144],{"class":907},[871,4438,2112],{"class":1771},[871,4440,4441],{"class":1148},"°C\"",[871,4443,1154],{"class":907},[871,4445,4446,4448,4450,4452,4454],{"class":873,"line":990},[871,4447,1502],{"class":877},[871,4449,4150],{"class":2088},[871,4451,929],{"class":877},[871,4453,3814],{"class":881},[871,4455,1475],{"class":907},[871,4457,4458,4460,4462,4464,4466,4468],{"class":873,"line":1005},[871,4459,1480],{"class":998},[871,4461,1142],{"class":907},[871,4463,2160],{"class":907},[871,4465,4167],{"class":1148},[871,4467,2160],{"class":907},[871,4469,1154],{"class":907},[861,4471,4474],{"className":4472,"code":4473,"language":1105},[1103],"Current temperature: 24.8°C\n",[868,4475,4473],{"__ignoreMap":866},[756,4477,4479],{"id":4478},"example-implementation-for-demonstration","Example implementation for demonstration",[761,4481,4482],{},"In this implementation:\na. set a target temperature\nb. turn incubation on\nc. monitor the temperature change with a subscription\nd. stop the monitoring as soon as target temperature is reached\ne. turn incubation off",[861,4484,4486],{"className":863,"code":4485,"language":865,"meta":866,"style":866},"target_temperature = 25\n\n# a\nawait gen5.temperature_controller.set_target_temperature(target_temperature=target_temperature)\n\n# b\nawait gen5.temperature_controller.turn_incubation_on()\n\n# c\nsubscription = await gen5.temperature_controller.subscribe_current_temperature()\ntry:\n    with suppress(asyncio.CancelledError):\n        async with subscription:\n            async for current_temperature in subscription:\n                clear_output()\n                print(f\"Current temperature: {round(current_temperature, 2)}°C\")\n# d\n                if current_temperature >= target_temperature:\n                    print(f\"Target temperature of {round(target_temperature, 2)}°C reached.\")\n                    break\nexcept KeyboardInterrupt:\n    print(\"Stopped by user\")\n\n# e\nawait gen5.temperature_controller.turn_incubation_off()\n",[868,4487,4488,4498,4502,4507,4533,4537,4542,4559,4563,4568,4588,4594,4610,4620,4634,4640,4670,4675,4690,4723,4728,4736,4750,4754,4759],{"__ignoreMap":866},[871,4489,4490,4493,4495],{"class":873,"line":874},[871,4491,4492],{"class":881},"target_temperature ",[871,4494,1075],{"class":907},[871,4496,4497],{"class":1771}," 25\n",[871,4499,4500],{"class":873,"line":885},[871,4501,961],{"emptyLinePlaceholder":960},[871,4503,4504],{"class":873,"line":893},[871,4505,4506],{"class":1121},"# a\n",[871,4508,4509,4511,4513,4515,4517,4519,4522,4524,4527,4529,4531],{"class":873,"line":914},[871,4510,1089],{"class":877},[871,4512,1171],{"class":881},[871,4514,922],{"class":907},[871,4516,4347],{"class":925},[871,4518,922],{"class":907},[871,4520,4521],{"class":998},"set_target_temperature",[871,4523,1142],{"class":907},[871,4525,4526],{"class":1707},"target_temperature",[871,4528,1075],{"class":907},[871,4530,4526],{"class":998},[871,4532,1154],{"class":907},[871,4534,4535],{"class":873,"line":935},[871,4536,961],{"emptyLinePlaceholder":960},[871,4538,4539],{"class":873,"line":949},[871,4540,4541],{"class":1121},"# b\n",[871,4543,4544,4546,4548,4550,4552,4554,4557],{"class":873,"line":957},[871,4545,1089],{"class":877},[871,4547,1171],{"class":881},[871,4549,922],{"class":907},[871,4551,4347],{"class":925},[871,4553,922],{"class":907},[871,4555,4556],{"class":998},"turn_incubation_on",[871,4558,1002],{"class":907},[871,4560,4561],{"class":873,"line":964},[871,4562,961],{"emptyLinePlaceholder":960},[871,4564,4565],{"class":873,"line":982},[871,4566,4567],{"class":1121},"# c\n",[871,4569,4570,4572,4574,4576,4578,4580,4582,4584,4586],{"class":873,"line":990},[871,4571,4059],{"class":881},[871,4573,1075],{"class":907},[871,4575,1132],{"class":877},[871,4577,1171],{"class":881},[871,4579,922],{"class":907},[871,4581,4347],{"class":925},[871,4583,922],{"class":907},[871,4585,4352],{"class":998},[871,4587,1002],{"class":907},[871,4589,4590,4592],{"class":873,"line":1005},[871,4591,1472],{"class":877},[871,4593,1475],{"class":907},[871,4595,4596,4598,4600,4602,4604,4606,4608],{"class":873,"line":1010},[871,4597,3422],{"class":877},[871,4599,4090],{"class":998},[871,4601,1142],{"class":907},[871,4603,4095],{"class":998},[871,4605,922],{"class":907},[871,4607,4100],{"class":925},[871,4609,2054],{"class":907},[871,4611,4612,4614,4616,4618],{"class":873,"line":1018},[871,4613,4107],{"class":877},[871,4615,4110],{"class":877},[871,4617,4113],{"class":881},[871,4619,1475],{"class":907},[871,4621,4622,4624,4626,4628,4630,4632],{"class":873,"line":1036},[871,4623,4120],{"class":877},[871,4625,2147],{"class":877},[871,4627,4395],{"class":881},[871,4629,2153],{"class":877},[871,4631,4113],{"class":881},[871,4633,1475],{"class":907},[871,4635,4636,4638],{"class":873,"line":1687},[871,4637,4406],{"class":998},[871,4639,1002],{"class":907},[871,4641,4642,4644,4646,4648,4650,4652,4654,4656,4658,4660,4662,4664,4666,4668],{"class":873,"line":1693},[871,4643,4136],{"class":998},[871,4645,1142],{"class":907},[871,4647,2101],{"class":2037},[871,4649,4419],{"class":1148},[871,4651,2107],{"class":1771},[871,4653,4424],{"class":998},[871,4655,1142],{"class":907},[871,4657,4429],{"class":998},[871,4659,908],{"class":907},[871,4661,4434],{"class":1771},[871,4663,2144],{"class":907},[871,4665,2112],{"class":1771},[871,4667,4441],{"class":1148},[871,4669,1154],{"class":907},[871,4671,4672],{"class":873,"line":1722},[871,4673,4674],{"class":1121},"# d\n",[871,4676,4677,4680,4682,4685,4688],{"class":873,"line":1727},[871,4678,4679],{"class":877},"                if",[871,4681,4395],{"class":881},[871,4683,4684],{"class":907},">=",[871,4686,4687],{"class":881}," target_temperature",[871,4689,1475],{"class":907},[871,4691,4692,4695,4697,4699,4702,4704,4706,4708,4710,4712,4714,4716,4718,4721],{"class":873,"line":1733},[871,4693,4694],{"class":998},"                    print",[871,4696,1142],{"class":907},[871,4698,2101],{"class":2037},[871,4700,4701],{"class":1148},"\"Target temperature of ",[871,4703,2107],{"class":1771},[871,4705,4424],{"class":998},[871,4707,1142],{"class":907},[871,4709,4526],{"class":998},[871,4711,908],{"class":907},[871,4713,4434],{"class":1771},[871,4715,2144],{"class":907},[871,4717,2112],{"class":1771},[871,4719,4720],{"class":1148},"°C reached.\"",[871,4722,1154],{"class":907},[871,4724,4725],{"class":873,"line":1739},[871,4726,4727],{"class":877},"                    break\n",[871,4729,4730,4732,4734],{"class":873,"line":1778},[871,4731,1502],{"class":877},[871,4733,4150],{"class":2088},[871,4735,1475],{"class":907},[871,4737,4738,4740,4742,4744,4746,4748],{"class":873,"line":1783},[871,4739,1480],{"class":998},[871,4741,1142],{"class":907},[871,4743,2160],{"class":907},[871,4745,4167],{"class":1148},[871,4747,2160],{"class":907},[871,4749,1154],{"class":907},[871,4751,4752],{"class":873,"line":1814},[871,4753,961],{"emptyLinePlaceholder":960},[871,4755,4756],{"class":873,"line":1819},[871,4757,4758],{"class":1121},"# e\n",[871,4760,4761,4763,4765,4767,4769,4771,4774],{"class":873,"line":1825},[871,4762,1089],{"class":877},[871,4764,1171],{"class":881},[871,4766,922],{"class":907},[871,4768,4347],{"class":925},[871,4770,922],{"class":907},[871,4772,4773],{"class":998},"turn_incubation_off",[871,4775,1002],{"class":907},[861,4777,4780],{"className":4778,"code":4779,"language":1105},[1103],"Current temperature: 25.0°C\nTarget temperature of 25°C reached.\n",[868,4781,4779],{"__ignoreMap":866},[756,4783,4785],{"id":4784},"shaker-controller","Shaker controller",[761,4787,4788],{},"The shaker controller has three calls to perform a simple shaker step, monitor it's state and abort it:",[773,4790,4791,4794,4797],{},[776,4792,4793],{},"start_shake_step(mode,duration_sec,displacement_mm,orbital_speed)",[776,4795,4796],{},"abort_shake",[776,4798,4799],{},"get_shake_in_progress",[761,4801,4802],{},"The abort_shake and get_shake_in_progress are the same implementation as the abort_read and get_read_in_progress, as the internal mechanism does not record the difference between these steps. This means that a abort_shake call will also abort a read if one is in progress.",[861,4804,4806],{"className":863,"code":4805,"language":865,"meta":866,"style":866},"if (await gen5_service.get_experiment_open()):\n    await gen5_service.close_experiment()\n    print('Previous experiment closed without saving.')\nawait gen5.shake_controller.start_shake_step(mode=0,duration_sec=60.0,displacement_mm=2,orbital_speed=0)\n",[868,4807,4808,4824,4836,4850],{"__ignoreMap":866},[871,4809,4810,4812,4814,4816,4818,4820,4822],{"class":873,"line":874},[871,4811,1620],{"class":877},[871,4813,1623],{"class":907},[871,4815,1089],{"class":877},[871,4817,1628],{"class":881},[871,4819,922],{"class":907},[871,4821,1633],{"class":998},[871,4823,1636],{"class":907},[871,4825,4826,4828,4830,4832,4834],{"class":873,"line":885},[871,4827,1641],{"class":877},[871,4829,1628],{"class":881},[871,4831,922],{"class":907},[871,4833,1648],{"class":998},[871,4835,1002],{"class":907},[871,4837,4838,4840,4842,4844,4846,4848],{"class":873,"line":893},[871,4839,1480],{"class":998},[871,4841,1142],{"class":907},[871,4843,1145],{"class":907},[871,4845,1661],{"class":1148},[871,4847,1145],{"class":907},[871,4849,1154],{"class":907},[871,4851,4852,4854,4856,4858,4861,4863,4866,4868,4871,4873,4875,4877,4880,4882,4885,4887,4890,4892,4894,4896,4899,4901,4903],{"class":873,"line":914},[871,4853,1089],{"class":877},[871,4855,1171],{"class":881},[871,4857,922],{"class":907},[871,4859,4860],{"class":925},"shake_controller",[871,4862,922],{"class":907},[871,4864,4865],{"class":998},"start_shake_step",[871,4867,1142],{"class":907},[871,4869,4870],{"class":1707},"mode",[871,4872,1075],{"class":907},[871,4874,1772],{"class":1771},[871,4876,908],{"class":907},[871,4878,4879],{"class":1707},"duration_sec",[871,4881,1075],{"class":907},[871,4883,4884],{"class":1771},"60.0",[871,4886,908],{"class":907},[871,4888,4889],{"class":1707},"displacement_mm",[871,4891,1075],{"class":907},[871,4893,2905],{"class":1771},[871,4895,908],{"class":907},[871,4897,4898],{"class":1707},"orbital_speed",[871,4900,1075],{"class":907},[871,4902,1772],{"class":1771},[871,4904,1154],{"class":907},[861,4906,4908],{"className":4907,"code":2774,"language":1105},[1103],[868,4909,2774],{"__ignoreMap":866},[861,4911,4913],{"className":863,"code":4912,"language":865,"meta":866,"style":866},"await gen5.shake_controller.abort_shake()\n",[868,4914,4915],{"__ignoreMap":866},[871,4916,4917,4919,4921,4923,4925,4927,4929],{"class":873,"line":874},[871,4918,1089],{"class":877},[871,4920,1171],{"class":881},[871,4922,922],{"class":907},[871,4924,4860],{"class":925},[871,4926,922],{"class":907},[871,4928,4796],{"class":998},[871,4930,1002],{"class":907},[861,4932,4934],{"className":4933,"code":1955,"language":1105},[1103],[868,4935,1955],{"__ignoreMap":866},[756,4937,4939],{"id":4938},"protocol-controller","Protocol controller",[761,4941,4942],{},"The protocol controller offers the automated creation of a protocol with only absorption steps and shake steps.\nThis controller also allows to change the plate type to a predefined plate type within Gen5.",[761,4944,4945],{},"All the actions that do not change the protocol itself (plate editing, protocol information getters) also work for protocols previously designed in Gen5.",[861,4947,4949],{"className":863,"code":4948,"language":865,"meta":866,"style":866},"gen5_pc = gen5.protocol_controller\ngen5_service = gen5.gen5_service\n",[868,4950,4951,4965],{"__ignoreMap":866},[871,4952,4953,4956,4958,4960,4962],{"class":873,"line":874},[871,4954,4955],{"class":881},"gen5_pc ",[871,4957,1075],{"class":907},[871,4959,1171],{"class":881},[871,4961,922],{"class":907},[871,4963,4964],{"class":925},"protocol_controller\n",[871,4966,4967,4969,4971,4973,4975],{"class":873,"line":885},[871,4968,1576],{"class":881},[871,4970,1075],{"class":907},[871,4972,1171],{"class":881},[871,4974,922],{"class":907},[871,4976,1585],{"class":925},[1236,4978,4980],{"id":4979},"initialize-an-empty-protocol","Initialize an empty protocol",[761,4982,4983,4984,4987],{},"The first step to create a protocol is to call ",[868,4985,4986],{},"initialize_empty_protocol()"," (if there is already a protocol open, it needs to be closed first)",[861,4989,4991],{"className":863,"code":4990,"language":865,"meta":866,"style":866},"if (await gen5_service.get_experiment_open()):\n    await gen5_service.close_experiment()\n    print('Previous experiment closed without saving.')\n\nawait gen5_pc.initialize_empty_protocol()\n",[868,4992,4993,5009,5021,5035,5039],{"__ignoreMap":866},[871,4994,4995,4997,4999,5001,5003,5005,5007],{"class":873,"line":874},[871,4996,1620],{"class":877},[871,4998,1623],{"class":907},[871,5000,1089],{"class":877},[871,5002,1628],{"class":881},[871,5004,922],{"class":907},[871,5006,1633],{"class":998},[871,5008,1636],{"class":907},[871,5010,5011,5013,5015,5017,5019],{"class":873,"line":885},[871,5012,1641],{"class":877},[871,5014,1628],{"class":881},[871,5016,922],{"class":907},[871,5018,1648],{"class":998},[871,5020,1002],{"class":907},[871,5022,5023,5025,5027,5029,5031,5033],{"class":873,"line":893},[871,5024,1480],{"class":998},[871,5026,1142],{"class":907},[871,5028,1145],{"class":907},[871,5030,1661],{"class":1148},[871,5032,1145],{"class":907},[871,5034,1154],{"class":907},[871,5036,5037],{"class":873,"line":914},[871,5038,961],{"emptyLinePlaceholder":960},[871,5040,5041,5043,5046,5048,5051],{"class":873,"line":935},[871,5042,1089],{"class":877},[871,5044,5045],{"class":881}," gen5_pc",[871,5047,922],{"class":907},[871,5049,5050],{"class":998},"initialize_empty_protocol",[871,5052,1002],{"class":907},[861,5054,5056],{"className":5055,"code":2774,"language":1105},[1103],[868,5057,2774],{"__ignoreMap":866},[1236,5059,5061],{"id":5060},"get-and-set-steps","Get and set steps",[761,5063,2790,5064,5067],{},[868,5065,5066],{},"get_step_list()"," call of the protocol controller can be used to inspect all the steps currently planned in the protocol. This also works for previously defined protocols.",[761,5069,5070],{},"The empty protocol which was just initialized returns an empty list as no steps have been defined.",[861,5072,5074],{"className":863,"code":5073,"language":865,"meta":866,"style":866},"await gen5_pc.get_step_list()\n",[868,5075,5076],{"__ignoreMap":866},[871,5077,5078,5080,5082,5084,5087],{"class":873,"line":874},[871,5079,1089],{"class":877},[871,5081,5045],{"class":881},[871,5083,922],{"class":907},[871,5085,5086],{"class":998},"get_step_list",[871,5088,1002],{"class":907},[861,5090,5093],{"className":5091,"code":5092,"language":1105},[1103],"[]\n",[868,5094,5092],{"__ignoreMap":866},[1893,5096,5098],{"id":5097},"create-an-absorbance-step","Create an absorbance step",[761,5100,2790,5101,5104],{},[868,5102,5103],{},"add_absorbance_step"," method requires the following settings:",[773,5106,5107,5110,5113,5116],{},[776,5108,5109],{},"index: integer; the index at which the step should be placed",[776,5111,5112],{},"wavelength: string; of comma separated integers of the wavelengths to be read",[776,5114,5115],{},"read_speed: integer; the speed of the read step (0: normal, 1: sweep)",[776,5117,5118],{},"wavelength_switching: boolean; whether to switch wavelengths per well. Only if multiple wavelengths are provided.",[861,5120,5122],{"className":863,"code":5121,"language":865,"meta":866,"style":866},"await gen5_pc.add_absorbance_step(index=0, wavelengths=\"450,700\", read_speed=1, wavelength_switching=True)\n",[868,5123,5124],{"__ignoreMap":866},[871,5125,5126,5128,5130,5132,5134,5136,5139,5141,5143,5145,5148,5150,5152,5155,5157,5159,5162,5164,5166,5168,5171],{"class":873,"line":874},[871,5127,1089],{"class":877},[871,5129,5045],{"class":881},[871,5131,922],{"class":907},[871,5133,5103],{"class":998},[871,5135,1142],{"class":907},[871,5137,5138],{"class":1707},"index",[871,5140,1075],{"class":907},[871,5142,1772],{"class":1771},[871,5144,908],{"class":907},[871,5146,5147],{"class":1707}," wavelengths",[871,5149,1075],{"class":907},[871,5151,2160],{"class":907},[871,5153,5154],{"class":1148},"450,700",[871,5156,2160],{"class":907},[871,5158,908],{"class":907},[871,5160,5161],{"class":1707}," read_speed",[871,5163,1075],{"class":907},[871,5165,3800],{"class":1771},[871,5167,908],{"class":907},[871,5169,5170],{"class":1707}," wavelength_switching",[871,5172,5173],{"class":907},"=True)\n",[761,5175,5176,5177,5179,5180,5183,5184,922],{},"Now ",[868,5178,5066],{}," returns a list with a single ",[868,5181,5182],{},"ReadStep",".\nThe details of a step can be read by using ",[868,5185,5186],{},"get_step(index)",[861,5188,5190],{"className":863,"code":5189,"language":865,"meta":866,"style":866},"print(await gen5_pc.get_step_list())\nprint('--------')\nprint(await gen5_pc.get_step(index=0))\n",[868,5191,5192,5208,5223],{"__ignoreMap":866},[871,5193,5194,5196,5198,5200,5202,5204,5206],{"class":873,"line":874},[871,5195,1256],{"class":998},[871,5197,1142],{"class":907},[871,5199,1089],{"class":877},[871,5201,5045],{"class":998},[871,5203,922],{"class":907},[871,5205,5086],{"class":998},[871,5207,1278],{"class":907},[871,5209,5210,5212,5214,5216,5219,5221],{"class":873,"line":885},[871,5211,1256],{"class":998},[871,5213,1142],{"class":907},[871,5215,1145],{"class":907},[871,5217,5218],{"class":1148},"--------",[871,5220,1145],{"class":907},[871,5222,1154],{"class":907},[871,5224,5225,5227,5229,5231,5233,5235,5238,5240,5242,5244,5246],{"class":873,"line":893},[871,5226,1256],{"class":998},[871,5228,1142],{"class":907},[871,5230,1089],{"class":877},[871,5232,5045],{"class":998},[871,5234,922],{"class":907},[871,5236,5237],{"class":998},"get_step",[871,5239,1142],{"class":907},[871,5241,5138],{"class":1707},[871,5243,1075],{"class":907},[871,5245,1772],{"class":1771},[871,5247,1539],{"class":907},[861,5249,5252],{"className":5250,"code":5251,"language":1105},[1103],"['ReadStep']\n--------\n\u003CReadStep>\n  \u003CDetection>Absorbance\u003C\u002FDetection>\n  \u003CReadType>EndPoint\u003C\u002FReadType>\n  \u003CWells>Full Plate\u003C\u002FWells>\n  \u003CMeasurements>\n    \u003CMeasurement Index=\"1\">\n      \u003CWavelength>450\u003C\u002FWavelength>\n    \u003C\u002FMeasurement>\n    \u003CMeasurement Index=\"2\">\n      \u003CWavelength>700\u003C\u002FWavelength>\n    \u003C\u002FMeasurement>\n  \u003C\u002FMeasurements>\n  \u003CReadSpeed>Sweep\u003C\u002FReadSpeed>\n  \u003CDelayAfterPlateMovementMSec>100\u003C\u002FDelayAfterPlateMovementMSec>\n  \u003CMeasurementsPerDataPoint>8\u003C\u002FMeasurementsPerDataPoint>\n\u003C\u002FReadStep>\n",[868,5253,5251],{"__ignoreMap":866},[1893,5255,5257],{"id":5256},"create-an-shake-step","Create an shake step",[761,5259,2790,5260,5104],{},[868,5261,5262],{},"add_shake_step",[773,5264,5265,5268,5271,5274,5277],{},[776,5266,5267],{},"index: integer; the index of the shake step.",[776,5269,5270],{},"mode: integer; the mode of the shake step (0: linear, 1: orbital or 2: double orbital).",[776,5272,5273],{},"duration_sec: float; the duration of the shake step in seconds.",[776,5275,5276],{},"displacement_mm: integer; the displacement of the shake step in millimeters.",[776,5278,5279],{},"orbital_speed: integer; the orbital speed of the shake step (0: slow, 1: fast). Only for orbital and double orbital mode.",[861,5281,5283],{"className":863,"code":5282,"language":865,"meta":866,"style":866},"await gen5_pc.add_shake_step(index=0, mode=0, duration_sec=60.0, displacement_mm=2, orbital_speed=1)\n",[868,5284,5285],{"__ignoreMap":866},[871,5286,5287,5289,5291,5293,5295,5297,5299,5301,5303,5305,5308,5310,5312,5314,5317,5319,5321,5323,5326,5328,5330,5332,5335,5337,5339],{"class":873,"line":874},[871,5288,1089],{"class":877},[871,5290,5045],{"class":881},[871,5292,922],{"class":907},[871,5294,5262],{"class":998},[871,5296,1142],{"class":907},[871,5298,5138],{"class":1707},[871,5300,1075],{"class":907},[871,5302,1772],{"class":1771},[871,5304,908],{"class":907},[871,5306,5307],{"class":1707}," mode",[871,5309,1075],{"class":907},[871,5311,1772],{"class":1771},[871,5313,908],{"class":907},[871,5315,5316],{"class":1707}," duration_sec",[871,5318,1075],{"class":907},[871,5320,4884],{"class":1771},[871,5322,908],{"class":907},[871,5324,5325],{"class":1707}," displacement_mm",[871,5327,1075],{"class":907},[871,5329,2905],{"class":1771},[871,5331,908],{"class":907},[871,5333,5334],{"class":1707}," orbital_speed",[871,5336,1075],{"class":907},[871,5338,3800],{"class":1771},[871,5340,1154],{"class":907},[761,5342,5176,5343,5345],{},[868,5344,5066],{}," returns a list with a two steps.\nNote that because the shake step was also added at index 0, the read step was pushed back.",[761,5347,5348,5349,5352],{},"To delete a step ",[868,5350,5351],{},"delete_step(index)"," is available.",[861,5354,5355],{"className":863,"code":5073,"language":865,"meta":866,"style":866},[868,5356,5357],{"__ignoreMap":866},[871,5358,5359,5361,5363,5365,5367],{"class":873,"line":874},[871,5360,1089],{"class":877},[871,5362,5045],{"class":881},[871,5364,922],{"class":907},[871,5366,5086],{"class":998},[871,5368,1002],{"class":907},[861,5370,5373],{"className":5371,"code":5372,"language":1105},[1103],"['ShakeStep', 'ReadStep']\n",[868,5374,5372],{"__ignoreMap":866},[861,5376,5378],{"className":863,"code":5377,"language":865,"meta":866,"style":866},"await gen5_pc.delete_step(index=0)\nawait gen5_pc.get_step_list()\n",[868,5379,5380,5401],{"__ignoreMap":866},[871,5381,5382,5384,5386,5388,5391,5393,5395,5397,5399],{"class":873,"line":874},[871,5383,1089],{"class":877},[871,5385,5045],{"class":881},[871,5387,922],{"class":907},[871,5389,5390],{"class":998},"delete_step",[871,5392,1142],{"class":907},[871,5394,5138],{"class":1707},[871,5396,1075],{"class":907},[871,5398,1772],{"class":1771},[871,5400,1154],{"class":907},[871,5402,5403,5405,5407,5409,5411],{"class":873,"line":885},[871,5404,1089],{"class":877},[871,5406,5045],{"class":881},[871,5408,922],{"class":907},[871,5410,5086],{"class":998},[871,5412,1002],{"class":907},[861,5414,5417],{"className":5415,"code":5416,"language":1105},[1103],"['ReadStep']\n",[868,5418,5416],{"__ignoreMap":866},[1236,5420,5422],{"id":5421},"change-plate-type","Change plate type",[761,5424,5425,5426,5429,5430,5433,5434,5437,5438,5441],{},"The plate to be read can be changed using the ",[868,5427,5428],{},"get_plate_type()"," call.\nThe default plate of an \"empty_protocol\" is a ",[868,5431,5432],{},"96 WELL PLATE",".\nThe plate type can only be changed to plate types defined within Gen5.\nTo check the available types ",[868,5435,5436],{},"get_supported_plate_types()"," can be used (note: in the example below ",[868,5439,5440],{},"[:10]"," is used to only print the first 10).",[761,5443,5444],{},"This also works for protocols previously designed in Gen5.",[861,5446,5448],{"className":863,"code":5447,"language":865,"meta":866,"style":866},"await gen5_pc.get_plate_type()\n",[868,5449,5450],{"__ignoreMap":866},[871,5451,5452,5454,5456,5458,5461],{"class":873,"line":874},[871,5453,1089],{"class":877},[871,5455,5045],{"class":881},[871,5457,922],{"class":907},[871,5459,5460],{"class":998},"get_plate_type",[871,5462,1002],{"class":907},[861,5464,5467],{"className":5465,"code":5466,"language":1105},[1103],"'96 WELL PLATE, Lid: true'\n",[868,5468,5466],{"__ignoreMap":866},[861,5470,5472],{"className":863,"code":5471,"language":865,"meta":866,"style":866},"await gen5_pc.set_plate_type(plate_type='24 WELL PLATE', use_lid=False)\n",[868,5473,5474],{"__ignoreMap":866},[871,5475,5476,5478,5480,5482,5485,5487,5490,5492,5494,5497,5499,5501,5504],{"class":873,"line":874},[871,5477,1089],{"class":877},[871,5479,5045],{"class":881},[871,5481,922],{"class":907},[871,5483,5484],{"class":998},"set_plate_type",[871,5486,1142],{"class":907},[871,5488,5489],{"class":1707},"plate_type",[871,5491,1075],{"class":907},[871,5493,1145],{"class":907},[871,5495,5496],{"class":1148},"24 WELL PLATE",[871,5498,1145],{"class":907},[871,5500,908],{"class":907},[871,5502,5503],{"class":1707}," use_lid",[871,5505,5506],{"class":907},"=False)\n",[861,5508,5510],{"className":863,"code":5509,"language":865,"meta":866,"style":866},"print(await gen5_pc.get_plate_type())\nprint('\\n\\n Defined plates (10 examples):')\n(await gen5_pc.get_supported_plate_types())[:10]\n",[868,5511,5512,5528,5546],{"__ignoreMap":866},[871,5513,5514,5516,5518,5520,5522,5524,5526],{"class":873,"line":874},[871,5515,1256],{"class":998},[871,5517,1142],{"class":907},[871,5519,1089],{"class":877},[871,5521,5045],{"class":998},[871,5523,922],{"class":907},[871,5525,5460],{"class":998},[871,5527,1278],{"class":907},[871,5529,5530,5532,5534,5536,5539,5542,5544],{"class":873,"line":885},[871,5531,1256],{"class":998},[871,5533,1142],{"class":907},[871,5535,1145],{"class":907},[871,5537,5538],{"class":881},"\\n\\n",[871,5540,5541],{"class":1148}," Defined plates (10 examples):",[871,5543,1145],{"class":907},[871,5545,1154],{"class":907},[871,5547,5548,5550,5552,5554,5556,5559,5562,5565],{"class":873,"line":893},[871,5549,1142],{"class":907},[871,5551,1089],{"class":877},[871,5553,5045],{"class":881},[871,5555,922],{"class":907},[871,5557,5558],{"class":998},"get_supported_plate_types",[871,5560,5561],{"class":907},"())[:",[871,5563,5564],{"class":1771},"10",[871,5566,2080],{"class":907},[861,5568,5571],{"className":5569,"code":5570,"language":1105},[1103],"24 WELL PLATE, Lid: false\n\n\n Defined plates (10 examples):\n\n\n\n\n\n['24 WELL PLATE',\n '48 WELL PLATE',\n '96 WELL PLATE',\n '384 WELL PLATE',\n '72 WELL PLATE TERASAKI',\n '60 WELL PLATE TERASAKI',\n '96 WELL PLATE TERASAKI',\n '96 WELL PLATE HELMA',\n '6 WELL PLATE',\n '12 WELL PLATE']\n",[868,5572,5570],{"__ignoreMap":866},[1236,5574,5576],{"id":5575},"run-the-newly-created-protocol","Run the newly created protocol",[761,5578,5579],{},"The newly created protocol (here with one read step using two wavelength and a 24 well plate) can now be run and observed using the previously written code (see The Gen5 service module>Read the data (2)).",[861,5581,5583],{"className":863,"code":5582,"language":865,"meta":866,"style":866},"await gen5_service.activate_plate(plate_name=(await gen5_service.get_plate_list())[0])\nif (await gen5_service.get_device_connected()):\n    await gen5_service.start_read()\n\n# As long as the read is running, we gather the result data.\ndata = {}\nwhile (await gen5_service.get_read_status()) == 1:\n    try:\n        new_data = json.loads(await gen5_service.get_plate_data())\n        if new_data[\"current_data_status\"] != 0 and data != new_data:\n            data = new_data\n            # perform one of the options shown above. For example plot the heatmap of the first dataset:\n            data_set_names = await gen5_service.get_data_set_names()\n            clear_output()\n            for data_set_name in data_set_names:\n                plot_heatmap(data, data_set_name)\n        await asyncio.sleep(1)\n    except Exception as e:\n        print(e)\nprint(data)\n\n\n# when the read is concluded, there might still be leftover data saved on the plate.\n# The same lines as shown in the previous section can be used to collect all of this data:\ndata = json.loads(await gen5_service.get_plate_data())\ndata_set_names = await gen5_service.get_data_set_names()\n\nwhile (data[\"current_data_status\"] == 1):\n    data = json.loads(await gen5_service.get_plate_data())\n\nclear_output()\nfor data_set_name in data_set_names:\n    plot_heatmap(data, data_set_name)\n",[868,5584,5585,5615,5631,5643,5647,5651,5659,5681,5687,5711,5741,5749,5753,5769,5775,5787,5801,5817,5829,5839,5849,5853,5857,5861,5865,5889,5905,5909,5933,5957,5961,5967,5979],{"__ignoreMap":866},[871,5586,5587,5589,5591,5593,5595,5597,5599,5601,5603,5605,5607,5609,5611,5613],{"class":873,"line":874},[871,5588,1089],{"class":877},[871,5590,1628],{"class":881},[871,5592,922],{"class":907},[871,5594,1748],{"class":998},[871,5596,1142],{"class":907},[871,5598,1753],{"class":1707},[871,5600,1756],{"class":907},[871,5602,1089],{"class":877},[871,5604,1628],{"class":998},[871,5606,922],{"class":907},[871,5608,1765],{"class":998},[871,5610,1768],{"class":907},[871,5612,1772],{"class":1771},[871,5614,1775],{"class":907},[871,5616,5617,5619,5621,5623,5625,5627,5629],{"class":873,"line":885},[871,5618,1620],{"class":877},[871,5620,1623],{"class":907},[871,5622,1089],{"class":877},[871,5624,1628],{"class":881},[871,5626,922],{"class":907},[871,5628,1353],{"class":998},[871,5630,1636],{"class":907},[871,5632,5633,5635,5637,5639,5641],{"class":873,"line":893},[871,5634,1641],{"class":877},[871,5636,1628],{"class":881},[871,5638,922],{"class":907},[871,5640,1851],{"class":998},[871,5642,1002],{"class":907},[871,5644,5645],{"class":873,"line":914},[871,5646,961],{"emptyLinePlaceholder":960},[871,5648,5649],{"class":873,"line":935},[871,5650,3617],{"class":1121},[871,5652,5653,5655,5657],{"class":873,"line":949},[871,5654,2941],{"class":881},[871,5656,1075],{"class":907},[871,5658,3626],{"class":907},[871,5660,5661,5663,5665,5667,5669,5671,5673,5675,5677,5679],{"class":873,"line":957},[871,5662,2847],{"class":877},[871,5664,1623],{"class":907},[871,5666,1089],{"class":877},[871,5668,1628],{"class":881},[871,5670,922],{"class":907},[871,5672,1495],{"class":998},[871,5674,1808],{"class":907},[871,5676,2984],{"class":907},[871,5678,2987],{"class":1771},[871,5680,1475],{"class":907},[871,5682,5683,5685],{"class":873,"line":964},[871,5684,2059],{"class":877},[871,5686,1475],{"class":907},[871,5688,5689,5691,5693,5695,5697,5699,5701,5703,5705,5707,5709],{"class":873,"line":982},[871,5690,3659],{"class":881},[871,5692,1075],{"class":907},[871,5694,2946],{"class":881},[871,5696,922],{"class":907},[871,5698,1526],{"class":998},[871,5700,1142],{"class":907},[871,5702,1089],{"class":877},[871,5704,1628],{"class":998},[871,5706,922],{"class":907},[871,5708,2961],{"class":998},[871,5710,1278],{"class":907},[871,5712,5713,5715,5717,5719,5721,5723,5725,5727,5729,5731,5733,5735,5737,5739],{"class":873,"line":990},[871,5714,3684],{"class":877},[871,5716,3687],{"class":881},[871,5718,2074],{"class":907},[871,5720,2160],{"class":907},[871,5722,2796],{"class":1148},[871,5724,2160],{"class":907},[871,5726,2367],{"class":907},[871,5728,2862],{"class":907},[871,5730,3702],{"class":1771},[871,5732,3705],{"class":907},[871,5734,3708],{"class":881},[871,5736,3711],{"class":907},[871,5738,3687],{"class":881},[871,5740,1475],{"class":907},[871,5742,5743,5745,5747],{"class":873,"line":1005},[871,5744,3720],{"class":881},[871,5746,1075],{"class":907},[871,5748,3725],{"class":881},[871,5750,5751],{"class":873,"line":1010},[871,5752,3730],{"class":1121},[871,5754,5755,5757,5759,5761,5763,5765,5767],{"class":873,"line":1018},[871,5756,3735],{"class":881},[871,5758,1075],{"class":907},[871,5760,1132],{"class":877},[871,5762,1628],{"class":881},[871,5764,922],{"class":907},[871,5766,2003],{"class":998},[871,5768,1002],{"class":907},[871,5770,5771,5773],{"class":873,"line":1036},[871,5772,3752],{"class":998},[871,5774,1002],{"class":907},[871,5776,5777,5779,5781,5783,5785],{"class":873,"line":1687},[871,5778,3759],{"class":877},[871,5780,3762],{"class":881},[871,5782,2153],{"class":877},[871,5784,3767],{"class":881},[871,5786,1475],{"class":907},[871,5788,5789,5791,5793,5795,5797,5799],{"class":873,"line":1693},[871,5790,3774],{"class":998},[871,5792,1142],{"class":907},[871,5794,2046],{"class":998},[871,5796,908],{"class":907},[871,5798,2051],{"class":998},[871,5800,1154],{"class":907},[871,5802,5803,5805,5807,5809,5811,5813,5815],{"class":873,"line":1722},[871,5804,3789],{"class":877},[871,5806,2895],{"class":881},[871,5808,922],{"class":907},[871,5810,2900],{"class":998},[871,5812,1142],{"class":907},[871,5814,3800],{"class":1771},[871,5816,1154],{"class":907},[871,5818,5819,5821,5823,5825,5827],{"class":873,"line":1727},[871,5820,2085],{"class":877},[871,5822,3809],{"class":2088},[871,5824,929],{"class":877},[871,5826,3814],{"class":881},[871,5828,1475],{"class":907},[871,5830,5831,5833,5835,5837],{"class":873,"line":1733},[871,5832,2096],{"class":998},[871,5834,1142],{"class":907},[871,5836,3825],{"class":998},[871,5838,1154],{"class":907},[871,5840,5841,5843,5845,5847],{"class":873,"line":1739},[871,5842,1256],{"class":998},[871,5844,1142],{"class":907},[871,5846,2046],{"class":998},[871,5848,1154],{"class":907},[871,5850,5851],{"class":873,"line":1778},[871,5852,961],{"emptyLinePlaceholder":960},[871,5854,5855],{"class":873,"line":1783},[871,5856,961],{"emptyLinePlaceholder":960},[871,5858,5859],{"class":873,"line":1814},[871,5860,3850],{"class":1121},[871,5862,5863],{"class":873,"line":1819},[871,5864,3855],{"class":1121},[871,5866,5867,5869,5871,5873,5875,5877,5879,5881,5883,5885,5887],{"class":873,"line":1825},[871,5868,2941],{"class":881},[871,5870,1075],{"class":907},[871,5872,2946],{"class":881},[871,5874,922],{"class":907},[871,5876,1526],{"class":998},[871,5878,1142],{"class":907},[871,5880,1089],{"class":877},[871,5882,1628],{"class":998},[871,5884,922],{"class":907},[871,5886,2961],{"class":998},[871,5888,1278],{"class":907},[871,5890,5891,5893,5895,5897,5899,5901,5903],{"class":873,"line":1842},[871,5892,3884],{"class":881},[871,5894,1075],{"class":907},[871,5896,1132],{"class":877},[871,5898,1628],{"class":881},[871,5900,922],{"class":907},[871,5902,2003],{"class":998},[871,5904,1002],{"class":907},[871,5906,5907],{"class":873,"line":3239},[871,5908,961],{"emptyLinePlaceholder":960},[871,5910,5911,5913,5915,5917,5919,5921,5923,5925,5927,5929,5931],{"class":873,"line":3296},[871,5912,2847],{"class":877},[871,5914,1623],{"class":907},[871,5916,2046],{"class":881},[871,5918,2074],{"class":907},[871,5920,2160],{"class":907},[871,5922,2796],{"class":1148},[871,5924,2160],{"class":907},[871,5926,2367],{"class":907},[871,5928,2984],{"class":907},[871,5930,2987],{"class":1771},[871,5932,2054],{"class":907},[871,5934,5935,5937,5939,5941,5943,5945,5947,5949,5951,5953,5955],{"class":873,"line":3301},[871,5936,2998],{"class":881},[871,5938,1075],{"class":907},[871,5940,2946],{"class":881},[871,5942,922],{"class":907},[871,5944,1526],{"class":998},[871,5946,1142],{"class":907},[871,5948,1089],{"class":877},[871,5950,1628],{"class":998},[871,5952,922],{"class":907},[871,5954,2961],{"class":998},[871,5956,1278],{"class":907},[871,5958,5959],{"class":873,"line":3359},[871,5960,961],{"emptyLinePlaceholder":960},[871,5962,5963,5965],{"class":873,"line":3392},[871,5964,3957],{"class":998},[871,5966,1002],{"class":907},[871,5968,5969,5971,5973,5975,5977],{"class":873,"line":3414},[871,5970,3115],{"class":877},[871,5972,3762],{"class":881},[871,5974,2153],{"class":877},[871,5976,3767],{"class":881},[871,5978,1475],{"class":907},[871,5980,5981,5983,5985,5987,5989,5991],{"class":873,"line":3419},[871,5982,3569],{"class":998},[871,5984,1142],{"class":907},[871,5986,2046],{"class":998},[871,5988,908],{"class":907},[871,5990,2051],{"class":998},[871,5992,1154],{"class":907},[3587,5994],{"src":5995,"alt":3595,"width":3591},"\u002Fimages\u002Fguides\u002Fgen5\u002Fpc_heatmap_450.webp",[3587,5997],{"src":5998,"alt":3595,"width":3591},"\u002Fimages\u002Fguides\u002Fgen5\u002Fpc_heatmap_700.webp",[861,6000,6003],{"className":6001,"code":6002,"language":1105},[1103],"No data found for T° 450\n",[868,6004,6002],{"__ignoreMap":866},[756,6006,6008],{"id":6007},"command-set","Command set",[761,6010,6011],{},"Refer to this if you want to use an action that was not (sufficiently) explained in the examples above.",[761,6013,6014],{},"Other helpful calls to explore actions:",[773,6016,6017,6023,6029],{},[776,6018,6019,6020],{},"Type of action (Property, Sensor or Control): ",[868,6021,6022],{},"print(await gen5.\u003Cmodule>.\u003Caction>.type)",[776,6024,6025,6026],{},"Parameters: ",[868,6027,6028],{},"print(await gen5.\u003Cmodule>.\u003Caction>.parameters)",[776,6030,6031,6032],{},"Returns: ",[868,6033,6034],{},"print(await gen5.\u003Cmodule>.\u003Caction>.responses)",[761,6036,6037],{},"Note:",[773,6039,6040,6043,6046],{},[776,6041,6042],{},"A PROPERTY returns a response and doesn't require any parameters.",[776,6044,6045],{},"A SENSOR returns a subscription of responses and doesn't require parameters.",[776,6047,6048],{},"A CONTROL requires parameters and can return a single response or a subscription of responses.",[1236,6050,1265],{"id":1265},[1893,6052,6054],{"id":6053},"gen5gen5_serviceget_version","gen5.gen5_service.get_version()",[6056,6057,6058],"blockquote",{},[761,6059,6060],{},"Get the version of the installed Gen5 software.",[1893,6062,6064],{"id":6063},"gen5gen5_serviceget_device_connected","gen5.gen5_service.get_device_connected()",[6056,6066,6067],{},[761,6068,6069],{},"Test the connection to the connected reader device. Returns false if in simulation mode.",[1893,6071,6073],{"id":6072},"gen5gen5_serviceget_plate_types","gen5.gen5_service.get_plate_types()",[6056,6075,6076],{},[761,6077,6078],{},"Return a list of all available plate names.",[1893,6080,6082],{"id":6081},"gen5gen5_serviceget_device_info","gen5.gen5_service.get_device_info()",[6056,6084,6085,6088],{},[761,6086,6087],{},"Return a JSON string with information about the connected device:",[861,6089,6092],{"className":6090,"code":6091,"language":1521,"meta":866,"style":866},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n    \"eAbsorbanceReadSupported\": bool,\n    \"eAbsorbanceWavelengthMin\": int,\n    \"eAbsorbanceWavelengthMax\": int,\n    \"eAbsorbanceReadModeCount\": int,\n    \"eAbsorbanceReadModeName\": dict,\n    \"eTemperatureControlOption\": [str],\n    \"eTemperatureMin\": int,\n    \"eTemperatureMax\": int,\n    \"eTemperatureGradientMax\": int,\n    \"eShakeSupported\": bool,\n    \"eSerialNumber\": str,\n    \"eInstrumentName\": str,\n    \"eFilterFluorescenceSupported\": bool,\n    \"eMonoFluorescenceSupported\": bool,\n    \"eReaderArchitectureLevel\": int\n}\n",[868,6093,6094,6099,6104,6109,6114,6119,6124,6129,6134,6139,6144,6149,6154,6159,6164,6169,6174],{"__ignoreMap":866},[871,6095,6096],{"class":873,"line":874},[871,6097,6098],{},"{\n",[871,6100,6101],{"class":873,"line":885},[871,6102,6103],{},"    \"eAbsorbanceReadSupported\": bool,\n",[871,6105,6106],{"class":873,"line":893},[871,6107,6108],{},"    \"eAbsorbanceWavelengthMin\": int,\n",[871,6110,6111],{"class":873,"line":914},[871,6112,6113],{},"    \"eAbsorbanceWavelengthMax\": int,\n",[871,6115,6116],{"class":873,"line":935},[871,6117,6118],{},"    \"eAbsorbanceReadModeCount\": int,\n",[871,6120,6121],{"class":873,"line":949},[871,6122,6123],{},"    \"eAbsorbanceReadModeName\": dict,\n",[871,6125,6126],{"class":873,"line":957},[871,6127,6128],{},"    \"eTemperatureControlOption\": [str],\n",[871,6130,6131],{"class":873,"line":964},[871,6132,6133],{},"    \"eTemperatureMin\": int,\n",[871,6135,6136],{"class":873,"line":982},[871,6137,6138],{},"    \"eTemperatureMax\": int,\n",[871,6140,6141],{"class":873,"line":990},[871,6142,6143],{},"    \"eTemperatureGradientMax\": int,\n",[871,6145,6146],{"class":873,"line":1005},[871,6147,6148],{},"    \"eShakeSupported\": bool,\n",[871,6150,6151],{"class":873,"line":1010},[871,6152,6153],{},"    \"eSerialNumber\": str,\n",[871,6155,6156],{"class":873,"line":1018},[871,6157,6158],{},"    \"eInstrumentName\": str,\n",[871,6160,6161],{"class":873,"line":1036},[871,6162,6163],{},"    \"eFilterFluorescenceSupported\": bool,\n",[871,6165,6166],{"class":873,"line":1687},[871,6167,6168],{},"    \"eMonoFluorescenceSupported\": bool,\n",[871,6170,6171],{"class":873,"line":1693},[871,6172,6173],{},"    \"eReaderArchitectureLevel\": int\n",[871,6175,6176],{"class":873,"line":1722},[871,6177,6178],{},"}\n",[1893,6180,6182],{"id":6181},"gen5gen5_serviceget_reader_status","gen5.gen5_service.get_reader_status()",[6056,6184,6185],{},[761,6186,6187],{},"Return the status of the reader.",[1893,6189,6191],{"id":6190},"gen5gen5_serviceget_available_protocols","gen5.gen5_service.get_available_protocols()",[6056,6193,6194,6197,6203],{},[761,6195,6196],{},"Return a list of available protocols.",[761,6198,6199],{},[6200,6201,6202],"strong",{},"Potential errors:",[773,6204,6205,6208],{},[776,6206,6207],{},"PathNotFoundError",[776,6209,6210],{},"DBError",[1893,6212,6214],{"id":6213},"gen5gen5_servicenew_experimentprotocol-str","gen5.gen5_service.new_experiment(protocol: str)",[6056,6216,6217,6220,6225,6232,6236],{},[761,6218,6219],{},"Create a new experiment.",[761,6221,6222],{},[6200,6223,6224],{},"Parameters:",[773,6226,6227],{},[776,6228,6229,6231],{},[868,6230,1708],{},": The name of the protocol (must be available in the list of available protocols).",[761,6233,6234],{},[6200,6235,6202],{},[773,6237,6238],{},[776,6239,6240],{},"ExperimentAlreadyOpenError",[1893,6242,6244],{"id":6243},"gen5gen5_serviceget_experiment_open","gen5.gen5_service.get_experiment_open()",[6056,6246,6247],{},[761,6248,6249],{},"Return True if an experiment is currently open.",[1893,6251,6253],{"id":6252},"gen5gen5_servicesave_experimentpath-str-name-str","gen5.gen5_service.save_experiment(path: str, name: str)",[6056,6255,6256,6259,6263,6277,6282,6287,6291],{},[761,6257,6258],{},"Save the current experiment to the given path.",[761,6260,6261],{},[6200,6262,6224],{},[773,6264,6265,6271],{},[776,6266,6267,6270],{},[868,6268,6269],{},"path",": The path to save the experiment to.",[776,6272,6273,6276],{},[868,6274,6275],{},"name",": The file name of the experiment.",[761,6278,6279],{},[6200,6280,6281],{},"Returns:",[773,6283,6284],{},[776,6285,6286],{},"A confirmation message.",[761,6288,6289],{},[6200,6290,6202],{},[773,6292,6293],{},[776,6294,6295],{},"NoExperimentError",[1893,6297,6299],{"id":6298},"gen5gen5_serviceclose_experiment","gen5.gen5_service.close_experiment()",[6056,6301,6302,6305,6309],{},[761,6303,6304],{},"Close the current experiment without saving.",[761,6306,6307],{},[6200,6308,6202],{},[773,6310,6311],{},[776,6312,6295],{},[1893,6314,6316],{"id":6315},"gen5gen5_serviceget_plate_layout","gen5.gen5_service.get_plate_layout()",[6056,6318,6319,6322,6326],{},[761,6320,6321],{},"Returns the layout of the plate in a BTIPlateLayout XML format.",[761,6323,6324],{},[6200,6325,6202],{},[773,6327,6328,6331],{},[776,6329,6330],{},"NoActivePlateError",[776,6332,6295],{},[1893,6334,6336],{"id":6335},"gen5gen5_serviceset_plate_layoutlayout-str","gen5.gen5_service.set_plate_layout(layout: str)",[6056,6338,6339,6342,6346,6354,6358],{},[761,6340,6341],{},"Set the layout of the plate.",[761,6343,6344],{},[6200,6345,6224],{},[773,6347,6348],{},[776,6349,6350,6353],{},[868,6351,6352],{},"layout",": The layout of the plate in a BTIPlateLayout XML format.",[761,6355,6356],{},[6200,6357,6202],{},[773,6359,6360,6362],{},[776,6361,6330],{},[776,6363,6295],{},[1893,6365,6367],{"id":6366},"gen5gen5_serviceget_protocol_path","gen5.gen5_service.get_protocol_path()",[6056,6369,6370],{},[761,6371,6372],{},"Return the path of the protocol folder.",[1893,6374,6376],{"id":6375},"gen5gen5_serviceset_protocol_pathpath-str","gen5.gen5_service.set_protocol_path(path: str)",[6056,6378,6379,6382,6386,6393,6397],{},[761,6380,6381],{},"Sets the path to the protocol folder. Doesn't remember if connector is restarted.",[761,6383,6384],{},[6200,6385,6224],{},[773,6387,6388],{},[776,6389,6390,6392],{},[868,6391,6269],{},": The absolute path where the .prt files are located.",[761,6394,6395],{},[6200,6396,6202],{},[773,6398,6399],{},[776,6400,6207],{},[1893,6402,6404],{"id":6403},"gen5gen5_serviceget_plate_list","gen5.gen5_service.get_plate_list()",[6056,6406,6407,6410,6414],{},[761,6408,6409],{},"A list of names of available plates.",[761,6411,6412],{},[6200,6413,6202],{},[773,6415,6416],{},[776,6417,6295],{},[1893,6419,6421],{"id":6420},"gen5gen5_serviceactivate_plateplate_name-str","gen5.gen5_service.activate_plate(plate_name: str)",[6056,6423,6424,6427,6431,6438,6442],{},[761,6425,6426],{},"Activate a plate for the current experiment.",[761,6428,6429],{},[6200,6430,6224],{},[773,6432,6433],{},[776,6434,6435,6437],{},[868,6436,1753],{},": The name of the plate to activate (must be in the list of available plates).",[761,6439,6440],{},[6200,6441,6202],{},[773,6443,6444,6446],{},[776,6445,6295],{},[776,6447,6448],{},"PlateNotFoundError",[1893,6450,6452],{"id":6451},"gen5gen5_servicedeactivate_plate","gen5.gen5_service.deactivate_plate()",[6056,6454,6455,6458,6462],{},[761,6456,6457],{},"Deactivate the currently active plate.",[761,6459,6460],{},[6200,6461,6202],{},[773,6463,6464],{},[776,6465,6330],{},[1893,6467,6469],{"id":6468},"gen5gen5_serviceget_active_plate","gen5.gen5_service.get_active_plate()",[6056,6471,6472,6475,6479],{},[761,6473,6474],{},"Return the name of the currently active plate.",[761,6476,6477],{},[6200,6478,6202],{},[773,6480,6481],{},[776,6482,6330],{},[1893,6484,6486],{"id":6485},"gen5gen5_servicedelete_active_plate","gen5.gen5_service.delete_active_plate()",[6056,6488,6489,6492,6496],{},[761,6490,6491],{},"Delete the currently active plate. (Not deactivating, deletes plate and all data!)",[761,6493,6494],{},[6200,6495,6202],{},[773,6497,6498],{},[776,6499,6330],{},[1893,6501,6503],{"id":6502},"gen5gen5_serviceget_procedure","gen5.gen5_service.get_procedure()",[6056,6505,6506,6509,6513],{},[761,6507,6508],{},"Return the current procedure.",[761,6510,6511],{},[6200,6512,6202],{},[773,6514,6515],{},[776,6516,6330],{},[1893,6518,6520],{"id":6519},"gen5gen5_serviceget_modifiable_procedure","gen5.gen5_service.get_modifiable_procedure()",[6056,6522,6523,6526,6530],{},[761,6524,6525],{},"Return the part of the current procedure, which can be modified.",[761,6527,6528],{},[6200,6529,6202],{},[773,6531,6532],{},[776,6533,6330],{},[1893,6535,6537],{"id":6536},"gen5gen5_serviceset_procedureprocedure-str","gen5.gen5_service.set_procedure(procedure: str)",[6056,6539,6540,6543,6547,6555,6559],{},[761,6541,6542],{},"Set the procedure for the current experiment.",[761,6544,6545],{},[6200,6546,6224],{},[773,6548,6549],{},[776,6550,6551,6554],{},[868,6552,6553],{},"procedure",": The procedure to set.",[761,6556,6557],{},[6200,6558,6202],{},[773,6560,6561,6563],{},[776,6562,6330],{},[776,6564,6565],{},"ReadInProgressError",[1893,6567,6569],{"id":6568},"gen5gen5_serviceset_modifiable_procedureprocedure-str","gen5.gen5_service.set_modifiable_procedure(procedure: str)",[6056,6571,6572,6575,6579,6586,6590],{},[761,6573,6574],{},"Set the modifiable part of the procedure.",[761,6576,6577],{},[6200,6578,6224],{},[773,6580,6581],{},[776,6582,6583,6585],{},[868,6584,6553],{},": The modifiable part of the procedure to set.",[761,6587,6588],{},[6200,6589,6202],{},[773,6591,6592,6594],{},[776,6593,6330],{},[776,6595,6565],{},[1893,6597,6599],{"id":6598},"gen5gen5_servicevalidate_procedureflip-bool","gen5.gen5_service.validate_procedure(flip: bool)",[6056,6601,6602,6605,6609,6617,6621,6629,6633],{},[761,6603,6604],{},"Validate the current procedure.",[761,6606,6607],{},[6200,6608,6224],{},[773,6610,6611],{},[776,6612,6613,6616],{},[868,6614,6615],{},"flip",": Whether to flip the plate for validation.",[761,6618,6619],{},[6200,6620,6281],{},[773,6622,6623,6626],{},[776,6624,6625],{},"A validation status (1: OK, any other number: Error Code).",[776,6627,6628],{},"A validation message.",[761,6630,6631],{},[6200,6632,6202],{},[773,6634,6635,6637,6639],{},[776,6636,6330],{},[776,6638,6565],{},[776,6640,6641],{},"MethodNotSupportedError",[1893,6643,6645],{"id":6644},"gen5gen5_servicestart_read","gen5.gen5_service.start_read()",[6056,6647,6648,6651,6655],{},[761,6649,6650],{},"Start reading the active plate.",[761,6652,6653],{},[6200,6654,6202],{},[773,6656,6657,6659,6661],{},[776,6658,6330],{},[776,6660,6565],{},[776,6662,6663],{},"ReadStartError",[1893,6665,6667],{"id":6666},"gen5gen5_serviceresume_read","gen5.gen5_service.resume_read()",[6056,6669,6670,6673,6677],{},[761,6671,6672],{},"Resume the current read.",[761,6674,6675],{},[6200,6676,6202],{},[773,6678,6679,6681],{},[776,6680,6330],{},[776,6682,6683],{},"NoActiveReadError",[1893,6685,6687],{"id":6686},"gen5gen5_serviceabort_read","gen5.gen5_service.abort_read()",[6056,6689,6690,6693,6697,6702,6706],{},[761,6691,6692],{},"Abort the current read.",[761,6694,6695],{},[6200,6696,6281],{},[773,6698,6699],{},[776,6700,6701],{},"A confirmation message that the read was aborted.",[761,6703,6704],{},[6200,6705,6202],{},[773,6707,6708,6710],{},[776,6709,6330],{},[776,6711,6683],{},[1893,6713,6715],{"id":6714},"gen5gen5_serviceget_read_status","gen5.gen5_service.get_read_status()",[6056,6717,6718,6721,6724,6744,6748],{},[761,6719,6720],{},"Return the status of the current read.",[761,6722,6723],{},"Status codes:",[773,6725,6726,6729,6732,6735,6738,6741],{},[776,6727,6728],{},"0: Not started",[776,6730,6731],{},"1: In progress",[776,6733,6734],{},"2: Aborted",[776,6736,6737],{},"3: Paused",[776,6739,6740],{},"4: Error",[776,6742,6743],{},"5: Completed",[761,6745,6746],{},[6200,6747,6202],{},[773,6749,6750],{},[776,6751,6330],{},[1893,6753,6755],{"id":6754},"gen5gen5_serviceget_plate_calibration_type","gen5.gen5_service.get_plate_calibration_type()",[6056,6757,6758,6761,6765],{},[761,6759,6760],{},"Return the calibration type of the active plate. Can be either Standard Plate (0) or Calibration Plate (1).",[761,6762,6763],{},[6200,6764,6202],{},[773,6766,6767],{},[776,6768,6330],{},[1893,6770,6772],{"id":6771},"gen5gen5_serviceget_sample_count","gen5.gen5_service.get_sample_count()",[6056,6774,6775,6778,6781,6785],{},[761,6776,6777],{},"Return the number of samples assigned to the current plate. This property only applies to experiments based on Custom or Open Protocols.",[761,6779,6780],{},"Note: This property is not applicable to panels that have unique samples for each protocol.",[761,6782,6783],{},[6200,6784,6202],{},[773,6786,6787],{},[776,6788,6330],{},[1893,6790,6792],{"id":6791},"gen5gen5_serviceget_row_count","gen5.gen5_service.get_row_count()",[6056,6794,6795,6798,6802],{},[761,6796,6797],{},"Return the number of rows in the active plate.",[761,6799,6800],{},[6200,6801,6202],{},[773,6803,6804],{},[776,6805,6330],{},[1893,6807,6809],{"id":6808},"gen5gen5_serviceget_column_count","gen5.gen5_service.get_column_count()",[6056,6811,6812,6815,6819],{},[761,6813,6814],{},"Return the number of columns in the active plate.",[761,6816,6817],{},[6200,6818,6202],{},[773,6820,6821],{},[776,6822,6330],{},[1893,6824,6826],{"id":6825},"gen5gen5_serviceget_plate_is_labware","gen5.gen5_service.get_plate_is_labware()",[6056,6828,6829,6832,6836],{},[761,6830,6831],{},"Return True if the active plate is labware.",[761,6833,6834],{},[6200,6835,6202],{},[773,6837,6838],{},[776,6839,6330],{},[1893,6841,6843],{"id":6842},"gen5gen5_serviceget_vessel_count","gen5.gen5_service.get_vessel_count()",[6056,6845,6846,6849,6853],{},[761,6847,6848],{},"Return the number of vessels for the current plate type. If the plate is not labware the vessel count = 1.",[761,6850,6851],{},[6200,6852,6202],{},[773,6854,6855],{},[776,6856,6330],{},[1893,6858,6860],{"id":6859},"gen5gen5_serviceget_data_set_names","gen5.gen5_service.get_data_set_names()",[6056,6862,6863,6866,6870],{},[761,6864,6865],{},"Return a list of available data set names.",[761,6867,6868],{},[6200,6869,6202],{},[773,6871,6872],{},[776,6873,6330],{},[1893,6875,6877],{"id":6876},"gen5gen5_serviceget_plate_data","gen5.gen5_service.get_plate_data()",[6056,6879,6880,6883,6887,6892,7063,7067],{},[761,6881,6882],{},"Return the topmost entry in the data stack. Must be called more than once to retrieve all data.",[761,6884,6885],{},[6200,6886,6281],{},[773,6888,6889],{},[776,6890,6891],{},"A JSON (string) of the data:",[861,6893,6895],{"className":6090,"code":6894,"language":1521,"meta":866,"style":866},"{\n    \"str dataset_name (f.ex. wavelength)\": {\n        \"row\": [[int]]; An array of longs (int) containing the row (0-based) of the current read,\n        \"column\": [[int]]; An array of longs (int) containing the column (0-based) of the current read,\n        \"value\": [[float]]; An array of doubles (float) containing the value of the current read,\n        \"kineticIndex\": [[int]]; An array of longs (int) containing the kinetic index (0-based) of the current read,\n        \"wavelengthIndex\": [[int]]; An array of longs (int) containing the spectrum wavelength index (0-based) of the current read,\n        \"horizontalIndex\": [[int]]; An array of longs (int) containing the horizontal index (0-based) of the current read,\n        \"verticalIndex\": [[int]]; An array of longs (int) containing the vertical index (0-based) of the current read,\n        \"primaryStatus\": [[int]]; An array of longs (int) containing the primary status of the current read,\n            (\n                0: The well was successfully read,\n                1: The well data was outside the reader's range,\n                2: The reader was not able to capture the well data,\n                3: The well was masked (read from file only),\n                4: An error was encountered reading the well,\n                5: The well was not read\n            )\n        \"secondaryStatus\": [[int]]; An array of longs (int) containing the secondary status of the current read,\n            (\n                0: There are no secondary status conditions,\n                1: The well was being dispensed with injector 1 during the read,\n                2: The well was being dispensed with injector 2 during the read,\n                3: The well was being dispensed with injector 3 during the read,\n                4: The well was being dispensed with injector 4 during the read\n            )\n    },\n    \"600\": {\n        \"row\": [[0, 0, 0], [1, 1, 1], [2, 2, 2]],\n        \"column\": [[0, 1, 2], [0, 1, 2], [0, 1, 2]],\n        \"value\": [[0.1, 0.2, 0.3], [0.4, 0.5, 0.6], [0.7, 0.8, 0.9]],\n        ...\n    }\n}\n",[868,6896,6897,6901,6906,6911,6916,6921,6926,6931,6936,6941,6946,6951,6956,6961,6966,6971,6976,6981,6986,6991,6995,7000,7005,7010,7015,7020,7024,7029,7034,7039,7044,7049,7054,7059],{"__ignoreMap":866},[871,6898,6899],{"class":873,"line":874},[871,6900,6098],{},[871,6902,6903],{"class":873,"line":885},[871,6904,6905],{},"    \"str dataset_name (f.ex. wavelength)\": {\n",[871,6907,6908],{"class":873,"line":893},[871,6909,6910],{},"        \"row\": [[int]]; An array of longs (int) containing the row (0-based) of the current read,\n",[871,6912,6913],{"class":873,"line":914},[871,6914,6915],{},"        \"column\": [[int]]; An array of longs (int) containing the column (0-based) of the current read,\n",[871,6917,6918],{"class":873,"line":935},[871,6919,6920],{},"        \"value\": [[float]]; An array of doubles (float) containing the value of the current read,\n",[871,6922,6923],{"class":873,"line":949},[871,6924,6925],{},"        \"kineticIndex\": [[int]]; An array of longs (int) containing the kinetic index (0-based) of the current read,\n",[871,6927,6928],{"class":873,"line":957},[871,6929,6930],{},"        \"wavelengthIndex\": [[int]]; An array of longs (int) containing the spectrum wavelength index (0-based) of the current read,\n",[871,6932,6933],{"class":873,"line":964},[871,6934,6935],{},"        \"horizontalIndex\": [[int]]; An array of longs (int) containing the horizontal index (0-based) of the current read,\n",[871,6937,6938],{"class":873,"line":982},[871,6939,6940],{},"        \"verticalIndex\": [[int]]; An array of longs (int) containing the vertical index (0-based) of the current read,\n",[871,6942,6943],{"class":873,"line":990},[871,6944,6945],{},"        \"primaryStatus\": [[int]]; An array of longs (int) containing the primary status of the current read,\n",[871,6947,6948],{"class":873,"line":1005},[871,6949,6950],{},"            (\n",[871,6952,6953],{"class":873,"line":1010},[871,6954,6955],{},"                0: The well was successfully read,\n",[871,6957,6958],{"class":873,"line":1018},[871,6959,6960],{},"                1: The well data was outside the reader's range,\n",[871,6962,6963],{"class":873,"line":1036},[871,6964,6965],{},"                2: The reader was not able to capture the well data,\n",[871,6967,6968],{"class":873,"line":1687},[871,6969,6970],{},"                3: The well was masked (read from file only),\n",[871,6972,6973],{"class":873,"line":1693},[871,6974,6975],{},"                4: An error was encountered reading the well,\n",[871,6977,6978],{"class":873,"line":1722},[871,6979,6980],{},"                5: The well was not read\n",[871,6982,6983],{"class":873,"line":1727},[871,6984,6985],{},"            )\n",[871,6987,6988],{"class":873,"line":1733},[871,6989,6990],{},"        \"secondaryStatus\": [[int]]; An array of longs (int) containing the secondary status of the current read,\n",[871,6992,6993],{"class":873,"line":1739},[871,6994,6950],{},[871,6996,6997],{"class":873,"line":1778},[871,6998,6999],{},"                0: There are no secondary status conditions,\n",[871,7001,7002],{"class":873,"line":1783},[871,7003,7004],{},"                1: The well was being dispensed with injector 1 during the read,\n",[871,7006,7007],{"class":873,"line":1814},[871,7008,7009],{},"                2: The well was being dispensed with injector 2 during the read,\n",[871,7011,7012],{"class":873,"line":1819},[871,7013,7014],{},"                3: The well was being dispensed with injector 3 during the read,\n",[871,7016,7017],{"class":873,"line":1825},[871,7018,7019],{},"                4: The well was being dispensed with injector 4 during the read\n",[871,7021,7022],{"class":873,"line":1842},[871,7023,6985],{},[871,7025,7026],{"class":873,"line":3239},[871,7027,7028],{},"    },\n",[871,7030,7031],{"class":873,"line":3296},[871,7032,7033],{},"    \"600\": {\n",[871,7035,7036],{"class":873,"line":3301},[871,7037,7038],{},"        \"row\": [[0, 0, 0], [1, 1, 1], [2, 2, 2]],\n",[871,7040,7041],{"class":873,"line":3359},[871,7042,7043],{},"        \"column\": [[0, 1, 2], [0, 1, 2], [0, 1, 2]],\n",[871,7045,7046],{"class":873,"line":3392},[871,7047,7048],{},"        \"value\": [[0.1, 0.2, 0.3], [0.4, 0.5, 0.6], [0.7, 0.8, 0.9]],\n",[871,7050,7051],{"class":873,"line":3414},[871,7052,7053],{},"        ...\n",[871,7055,7056],{"class":873,"line":3419},[871,7057,7058],{},"    }\n",[871,7060,7061],{"class":873,"line":3469},[871,7062,6178],{},[761,7064,7065],{},[6200,7066,6202],{},[773,7068,7069],{},[776,7070,6330],{},[1893,7072,7074],{"id":7073},"gen5gen5_serviceget_sample_description","gen5.gen5_service.get_sample_description()",[6056,7076,7077,7080,7084],{},[761,7078,7079],{},"Return a dictionary with the sample description.",[761,7081,7082],{},[6200,7083,6202],{},[773,7085,7086],{},[776,7087,6330],{},[1893,7089,7091],{"id":7090},"gen5gen5_serviceget_image_folder_path","gen5.gen5_service.get_image_folder_path()",[6056,7093,7094,7097,7101],{},[761,7095,7096],{},"Return the count and the list of image folders that apply to the current plate.",[761,7098,7099],{},[6200,7100,6202],{},[773,7102,7103],{},[776,7104,6330],{},[1893,7106,7108],{"id":7107},"gen5gen5_serviceget_read_in_progress","gen5.gen5_service.get_read_in_progress()",[6056,7110,7111],{},[761,7112,7113],{},"Return True if a read is currently in progress.",[1236,7115,4070],{"id":4070},[1893,7117,7119],{"id":7118},"gen5door_controllersubscribe_door_open","gen5.door_controller.subscribe_door_open()",[6056,7121,7122],{},[761,7123,7124],{},"Subscribe to the state of the door.",[1893,7126,7128],{"id":7127},"gen5door_controllerget_door_open_once","gen5.door_controller.get_door_open_once()",[6056,7130,7131],{},[761,7132,7133],{},"Retrieve the door state once.",[1893,7135,7137],{"id":7136},"gen5door_controlleropen_doorstatus-silastatus-intermediate-silaintermediate","gen5.door_controller.open_door(status: sila.Status, intermediate: sila.Intermediate",[761,7139,7140,2144],{},[871,7141,7142],{},"str",[6056,7144,7145,7148,7153,7158,7162,7170,7174],{},[761,7146,7147],{},"The abstract method to open the door.",[761,7149,7150],{},[6200,7151,7152],{},"Yields:",[773,7154,7155],{},[776,7156,7157],{},"The current status of the door opening process as a string.",[761,7159,7160],{},[6200,7161,6281],{},[773,7163,7164,7167],{},[776,7165,7166],{},"The state of the door where true means open.",[776,7168,7169],{},"The end status of the door as a string.",[761,7171,7172],{},[6200,7173,6202],{},[773,7175,7176],{},[776,7177,6565],{},[1893,7179,7181],{"id":7180},"gen5door_controllerclose_doorstatus-silastatus-intermediate-silaintermediate","gen5.door_controller.close_door(status: sila.Status, intermediate: sila.Intermediate",[761,7183,7184,2144],{},[871,7185,7142],{},[6056,7187,7188,7191,7195,7199,7203,7209,7213],{},[761,7189,7190],{},"The abstract method to close the door.",[761,7192,7193],{},[6200,7194,7152],{},[773,7196,7197],{},[776,7198,7157],{},[761,7200,7201],{},[6200,7202,6281],{},[773,7204,7205,7207],{},[776,7206,7166],{},[776,7208,7169],{},[761,7210,7211],{},[6200,7212,6202],{},[773,7214,7215],{},[776,7216,6565],{},[1236,7218,4347],{"id":4347},[1893,7220,7222],{"id":7221},"gen5temperature_controllersubscribe_current_temperature","gen5.temperature_controller.subscribe_current_temperature()",[6056,7224,7225],{},[761,7226,7227],{},"Returns the currently measured temperature in °C.",[1893,7229,7231],{"id":7230},"gen5temperature_controllerget_target_temperature","gen5.temperature_controller.get_target_temperature()",[6056,7233,7234],{},[761,7235,7236],{},"Returns the currently set target temperature in °C.",[1893,7238,7240],{"id":7239},"gen5temperature_controllerset_target_temperaturetarget_temperature-int","gen5.temperature_controller.set_target_temperature(target_temperature: int)",[6056,7242,7243,7246,7250],{},[761,7244,7245],{},"Set the target temperature in °C.",[761,7247,7248],{},[6200,7249,6224],{},[773,7251,7252],{},[776,7253,7254,7256],{},[868,7255,4526],{},": The target temperature to set in °C.",[1236,7258,4860],{"id":4860},[1893,7260,7262],{"id":7261},"gen5shake_controllerstart_shake_stepmode-int-duration_sec-float-displacement_mm-int-orbital_speed-int","gen5.shake_controller.start_shake_step(mode: int, duration_sec: float, displacement_mm: int, orbital_speed: int)",[6056,7264,7265,7268,7272,7294,7298],{},[761,7266,7267],{},"Start a shake step with the given parameters. This creates a new experiment with only the shake step. Any previous experiment has to be closed before calling this method. Closing an experiment will discard all unsaved data of the experiment.",[761,7269,7270],{},[6200,7271,6224],{},[773,7273,7274,7279,7284,7289],{},[776,7275,7276,7278],{},[868,7277,4870],{},": The mode of the shake step (0: linear, 1: orbital, 2: double orbital).",[776,7280,7281,7283],{},[868,7282,4879],{},": The duration of the shake step in seconds.",[776,7285,7286,7288],{},[868,7287,4889],{},": The displacement of the shake step in millimeters.",[776,7290,7291,7293],{},[868,7292,4898],{},": The orbital speed of the shake step (0: slow, 1: fast). Only for orbital and double orbital mode.",[761,7295,7296],{},[6200,7297,6202],{},[773,7299,7300,7302,7304,7307],{},[776,7301,6565],{},[776,7303,6240],{},[776,7305,7306],{},"InvalidParameterError",[776,7308,7309],{},"ShakeStartError",[1893,7311,7313],{"id":7312},"gen5shake_controllerabort_shake","gen5.shake_controller.abort_shake()",[6056,7315,7316,7319,7323,7327,7331],{},[761,7317,7318],{},"Abort the current read step. Shaking is considered a read step. Is the same as gen5_service.abort_read().",[761,7320,7321],{},[6200,7322,6281],{},[773,7324,7325],{},[776,7326,6701],{},[761,7328,7329],{},[6200,7330,6202],{},[773,7332,7333,7335],{},[776,7334,6330],{},[776,7336,7337],{},"NoActiveShakeError",[1893,7339,7341],{"id":7340},"gen5shake_controllerget_shake_in_progress","gen5.shake_controller.get_shake_in_progress()",[6056,7343,7344],{},[761,7345,7346],{},"Return True if a read is currently in progress. Shaking is considered a read in progress. Does the same as gen5_service.get_read_in_progress().",[1236,7348,7349],{"id":7349},"protocol_controller",[1893,7351,7353],{"id":7352},"gen5protocol_controllerinitialize_empty_protocol","gen5.protocol_controller.initialize_empty_protocol()",[6056,7355,7356],{},[761,7357,7358],{},"Initializes an empty protocol.\nPotential errors: ReadInProgressError, ExperimentAlreadyOpenError",[1893,7360,7362],{"id":7361},"gen5protocol_controllerget_step_list","gen5.protocol_controller.get_step_list()",[6056,7364,7365],{},[761,7366,7367],{},"Returns the list of steps in the current protocol.",[1893,7369,7371],{"id":7370},"gen5protocol_controllerget_stepindex-int","gen5.protocol_controller.get_step(index: int)",[6056,7373,7374,7377,7381,7388,7392],{},[761,7375,7376],{},"Returns the step at the given index.",[761,7378,7379],{},[6200,7380,6224],{},[773,7382,7383],{},[776,7384,7385,7387],{},[868,7386,5138],{},": The index of the step to return.",[761,7389,7390],{},[6200,7391,6281],{},[773,7393,7394],{},[776,7395,7396],{},"The step at the given index.",[1893,7398,7400],{"id":7399},"gen5protocol_controllerdelete_stepindex-int","gen5.protocol_controller.delete_step(index: int)",[6056,7402,7403,7406,7410],{},[761,7404,7405],{},"Deletes the step at the given index.",[761,7407,7408],{},[6200,7409,6224],{},[773,7411,7412],{},[776,7413,7414,7416],{},[868,7415,5138],{},": The index of the step to delete.",[1893,7418,7420],{"id":7419},"gen5protocol_controlleradd_absorbance_stepindex-int-wavelengths-str-read_speed-int-wavelength_switching-bool","gen5.protocol_controller.add_absorbance_step(index: int, wavelengths: str, read_speed: int, wavelength_switching: bool)",[6056,7422,7423,7426,7430],{},[761,7424,7425],{},"Start an absorbance step with the given parameters. This creates a new experiment with only the absorbance step. Any previous experiment has to be closed before calling this method. Closing an experiment will discard all unsaved data of the experiment.",[761,7427,7428],{},[6200,7429,6224],{},[773,7431,7432,7437,7443,7449],{},[776,7433,7434,7436],{},[868,7435,5138],{},": The index of the absorbance step.",[776,7438,7439,7442],{},[868,7440,7441],{},"wavelengths",": Wavelength(s) to measure. For multiple wavelengths, use comma-separated values.",[776,7444,7445,7448],{},[868,7446,7447],{},"read_speed",": The speed of the read step (0: normal, 1: sweep).",[776,7450,7451,7454],{},[868,7452,7453],{},"wavelength_switching",": Whether to switch wavelengths per well. Only if multiple wavelengths are provided.",[1893,7456,7458],{"id":7457},"gen5protocol_controlleradd_shake_stepindex-int-mode-int-duration_sec-float-displacement_mm-int-orbital_speed-int","gen5.protocol_controller.add_shake_step(index: int, mode: int, duration_sec: float, displacement_mm: int, orbital_speed: int)",[6056,7460,7461,7463,7467],{},[761,7462,7267],{},[761,7464,7465],{},[6200,7466,6224],{},[773,7468,7469,7474,7478,7482,7486],{},[776,7470,7471,7473],{},[868,7472,5138],{},": The index of the shake step.",[776,7475,7476,7278],{},[868,7477,4870],{},[776,7479,7480,7283],{},[868,7481,4879],{},[776,7483,7484,7288],{},[868,7485,4889],{},[776,7487,7488,7293],{},[868,7489,4898],{},[1893,7491,7493],{"id":7492},"gen5protocol_controllerget_plate_type","gen5.protocol_controller.get_plate_type()",[6056,7495,7496],{},[761,7497,7498],{},"Returns the type of the plate.",[1893,7500,7502],{"id":7501},"gen5protocol_controllerget_supported_plate_types","gen5.protocol_controller.get_supported_plate_types()",[6056,7504,7505],{},[761,7506,7507],{},"Returns the supported plate types.",[1893,7509,7511],{"id":7510},"gen5protocol_controllerset_plate_typeplate_type-str-use_lid-bool","gen5.protocol_controller.set_plate_type(plate_type: str, use_lid: bool)",[6056,7513,7514,7517,7521],{},[761,7515,7516],{},"Sets the type of the plate.",[761,7518,7519],{},[6200,7520,6224],{},[773,7522,7523,7528],{},[776,7524,7525,7527],{},[868,7526,5489],{},": The type of the plate. This has to be one of the supported plate types.",[776,7529,7530,7533],{},[868,7531,7532],{},"use_lid",": Whether to use a lid.",[7535,7536,7537],"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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 .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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":866,"searchDepth":874,"depth":885,"links":7539},[7540,7541,7542,7543,7546,7551,7555,7556,7557,7558,7564],{"id":758,"depth":885,"text":759},{"id":1058,"depth":885,"text":1059},{"id":1110,"depth":885,"text":1111},{"id":1192,"depth":885,"text":1193,"children":7544},[7545],{"id":1238,"depth":893,"text":1239},{"id":1287,"depth":885,"text":1288,"children":7547},[7548,7549,7550],{"id":1294,"depth":893,"text":1295},{"id":1548,"depth":893,"text":1549},{"id":2014,"depth":893,"text":2015},{"id":4000,"depth":885,"text":4001,"children":7552},[7553,7554],{"id":4021,"depth":893,"text":4022},{"id":4180,"depth":893,"text":4181},{"id":4289,"depth":885,"text":4290},{"id":4478,"depth":885,"text":4479},{"id":4784,"depth":885,"text":4785},{"id":4938,"depth":885,"text":4939,"children":7559},[7560,7561,7562,7563],{"id":4979,"depth":893,"text":4980},{"id":5060,"depth":893,"text":5061},{"id":5421,"depth":893,"text":5422},{"id":5575,"depth":893,"text":5576},{"id":6007,"depth":885,"text":6008,"children":7565},[7566,7567,7568,7569,7570],{"id":1265,"depth":893,"text":1265},{"id":4070,"depth":893,"text":4070},{"id":4347,"depth":893,"text":4347},{"id":4860,"depth":893,"text":4860},{"id":7349,"depth":893,"text":7349},"md",null,{},{"description":866},"2dQa5I8Tjie1NmnBdjeUQRFrgrifCMCl2_2kVhD-RHg",[7577,7579],{"title":399,"path":400,"stem":401,"description":7578},"Getting started with the QInstruments ColdPlate.",{"title":412,"path":413,"stem":414,"description":7580},"Getting started with the Bioshake Synergy H1 (without Gen5).",1783607781798]