Supported today Thermal Cycler

Inheco ODTC Integration

Write, load and start ODTC thermal methods via Python

Store and edit thermal methods, start a run by name, open and close the door, and stream block and lid temperatures in code. No SOAP client to build.

Models supported
ODTC 96, 384, 96XL, 384XL
Connects over
Ethernet (SiLA 1)
Vendor software
None required
Runs on
Linux / Windows / MacOS

What You Can Command on the ODTC

Methods, runs, temperatures, the door and device status each arrive as their own callable capability, so your code runs the ODTC directly.

Method Library

Add, replace and delete methods and pre-methods by name, as typed steps or as raw MethodSet XML, without touching the rest of the library.

Method Steps

Plateau temperature and time, ramp slope, overshoot, loops, lid temperature and PID set per step, all typed with their units.

Run Control

Start a stored method by name with live progress and time remaining, and stop it mid-run.

Temperature Monitoring

A live stream of mount, lid, heatsink and ambient temperatures, plus the temperature trace of the last run.

Door Control

Open and close the door from code, so a plate handler can load and unload without an operator.

Status and Recovery

A status stream, device identification, pause and resume between processes, and a reset that re-initializes the ODTC.

Run a Method From Python

Ordinary async Python. Version it, test it, generate it at runtime like any other code.

# find the ODTC, list its methods, run one, read the trace
from unitelabs.sdk import AsyncApiClient

client = AsyncApiClient()
odtc = await client.get_service_by_name(name="Inheco ODTC")

print(await odtc.method_service.get_method_names())

await odtc.door_controller.close()

# resolves when the run finishes
await odtc.method_service.start(method="PCR_30_cycles", priority=1)

trace = await odtc.temperature_provider.get_last_data()
await odtc.door_controller.open()
How connectors work

Know One Connector, and You Know Them All

Three calls bring any instrument online, and the same Python drives whatever comes next.

One API, Every Instrument

Three calls to start: configure(), initialize(), activate(). The same on a liquid handler, a reader or an incubator, whatever the vendor ships underneath.

Ask a Connector What It Can Do

Modules and actions are discoverable at runtime, and parameters carry their own types, units and constraints. You don't need a PDF to find out.

One Outbound Connection

One outbound TLS connection on port 443 to your tenant, so nothing needs opening inbound. Ports, hostnames and setup are in the docs.

Also Works With…

The same Python script can drive every instrument on the bench. A liquid handler sets up the plate, a thermal cycler can cycle it, and a reader measures it, all from one script.

FAQ

Inheco ODTC FAQ

The questions automation engineers ask before integrating an ODTC.

Yes. With the UniteLabs connector you call the ODTC from Python: store a thermal method, start it by name, open and close the door, and read block and lid temperatures. It's ordinary async Python, so it can be version-controlled, tested and generated at runtime like any other code.

Over Ethernet, using the ODTC's own SiLA 1 interface. The connector finds the device by the node name on its SiLA label (ODTC_ followed by six characters), and falls back to a static IP or a MAC address sweep where name discovery is unreliable on your network.

The ODTC reports finished commands back to a small event listener on the connector host, so it needs to reach that host on the lab network. On Windows the connector adds the firewall rule itself. Toward your tenant it opens one outbound TLS connection on port 443.

Yes. The ODTC ships with a SiLA 1 interface, and the connector exposes it as a SiLA 2 service on a local gRPC port, grouped into modules you can list at runtime. Find out more about how we use the SiLA 2 standard for instrument interoperability.

Yes. Add or replace a single method or pre-method by name and the rest of the library stays as it is. Build steps as typed data (plateau temperature and time, slope, overshoot, loops, lid temperature, PID set) or push MethodSet XML you already have.

A method's start block temperature has to match the last pre-method or the previous method's post-heating temperature. When it doesn't, the connector says so in the error.

The ODTC 96, ODTC 384, ODTC 96XL and ODTC 384XL, currently. Each method declares whether it targets the 96-well or 384-well block.

Yes. Set the connector to simulated mode and it keeps a method library in memory, preloaded with an example method, so you can add, replace, delete and start methods from your script before a run on hardware.

Tell us what you want to automate

Put Your ODTC to Work