Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/_static/devices.json
Original file line number Diff line number Diff line change
Expand Up @@ -654,7 +654,7 @@
"luminescence"
],
"status": "Mostly",
"docs": "/user_guide/02_analytical/plate-reading/tecan-infinite.html",
"docs": "/user_guide/tecan/infinite/hello-world.html",
"oem": "https://lifesciences.tecan.com/infinite-200-pro"
},
{
Expand Down
1 change: 1 addition & 0 deletions docs/api/pylabrobot.rst
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,5 @@ Manufacturers
pylabrobot.molecular_devices
pylabrobot.opentrons
pylabrobot.qinstruments
pylabrobot.tecan
pylabrobot.thermo_fisher
55 changes: 55 additions & 0 deletions docs/api/pylabrobot.tecan.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
.. currentmodule:: pylabrobot.tecan

pylabrobot.tecan package
========================

Infinite 200 PRO
-----------------

.. currentmodule:: pylabrobot.tecan.infinite.infinite

.. autosummary::
:toctree: _autosummary
:nosignatures:
:recursive:

TecanInfinite200Pro

.. currentmodule:: pylabrobot.tecan.infinite.driver

.. autosummary::
:toctree: _autosummary
:nosignatures:
:recursive:

TecanInfiniteDriver

.. currentmodule:: pylabrobot.tecan.infinite.absorbance_backend

.. autosummary::
:toctree: _autosummary
:nosignatures:
:recursive:

TecanInfiniteAbsorbanceBackend
TecanInfiniteAbsorbanceParams

.. currentmodule:: pylabrobot.tecan.infinite.fluorescence_backend

.. autosummary::
:toctree: _autosummary
:nosignatures:
:recursive:

TecanInfiniteFluorescenceBackend
TecanInfiniteFluorescenceParams

.. currentmodule:: pylabrobot.tecan.infinite.luminescence_backend

.. autosummary::
:toctree: _autosummary
:nosignatures:
:recursive:

TecanInfiniteLuminescenceBackend
TecanInfiniteLuminescenceParams
2 changes: 1 addition & 1 deletion docs/user_guide/machines.md
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ tr > td:nth-child(5) { width: 15%; }
| Molecular Devices | SpectraMax M5e | <span class="badge badge-absorbance">absorbance</span><span class="badge badge-fluorescence">fluorescence</span> <span class="badge badge-time-resolved-fluo">time-resolved fluorescence</span><span class="badge badge-fluo-polarization">fluorescence polarization</span> | Full | [OEM](https://www.moleculardevices.com/products/microplate-readers/multi-mode-readers/spectramax-m-series-readers) |
| Molecular Devices | SpectraMax 384plus | <span class="badge badge-absorbance">absorbance</span> | Full | [OEM](https://www.moleculardevices.com/products/microplate-readers/absorbance-readers/spectramax-abs-plate-readers) |
| Molecular Devices | ImageXpress Pico | <span class="badge badge-microscopy">microscopy</span> | Basics | [PLR](02_analytical/plate-reading/pico.ipynb) / [OEM](https://www.moleculardevices.com/products/cellular-imaging-systems/high-content-imaging/imagexpress-pico) |
| Tecan | Infinite 200 PRO | <span class="badge badge-absorbance">absorbance</span><span class="badge badge-fluorescence">fluorescence</span><span class="badge badge-luminescence">luminescence</span> | Mostly | [PLR](02_analytical/plate-reading/tecan-infinite.ipynb) / [OEM](https://lifesciences.tecan.com/infinite-200-pro) |
| Tecan | Infinite 200 PRO | <span class="badge badge-absorbance">absorbance</span><span class="badge badge-fluorescence">fluorescence</span><span class="badge badge-luminescence">luminescence</span> | Mostly | [PLR](tecan/infinite/hello-world.ipynb) / [OEM](https://lifesciences.tecan.com/infinite-200-pro) |


### Flow Cytometers
Expand Down
7 changes: 7 additions & 0 deletions docs/user_guide/tecan/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Tecan

```{toctree}
:maxdepth: 1

infinite/hello-world
```
132 changes: 132 additions & 0 deletions docs/user_guide/tecan/infinite/hello-world.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": "# Tecan Infinite 200 PRO\n\nThe Tecan Infinite 200 PRO is a multimode microplate reader that supports:\n\n- [Absorbance](../../capabilities/absorbance) (230--1000 nm)\n- [Fluorescence](../../capabilities/fluorescence) (230--850 nm excitation/emission)\n- [Luminescence](../../capabilities/luminescence)\n\nThis backend targets the Infinite \"M\" series (e.g., Infinite 200 PRO M Plex). The \"F\" series uses a different optical path and is not covered here."
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": "from pylabrobot.tecan.infinite import TecanInfinite200Pro\n\nreader = TecanInfinite200Pro(name=\"reader\")\nawait reader.setup()"
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": "await reader.loading_tray.open()"
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Before closing, assign a plate to the reader. This determines the well positions for measurements."
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": "from pylabrobot.resources import Cor_96_wellplate_360ul_Fb\nplate = Cor_96_wellplate_360ul_Fb(name=\"plate\")\nreader.loading_tray.assign_child_resource(plate)"
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": "await reader.loading_tray.close()"
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## Absorbance\n\nRead absorbance at a specified wavelength (230--1000 nm). For the full API, see [Absorbance](../../capabilities/absorbance)."
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": "results = await reader.absorbance.read(plate=plate, wavelength=450)\nresults[0].data # 2D array indexed [row][col]"
},
{
"cell_type": "markdown",
"metadata": {},
"source": "### Backend-specific parameters\n\nUse {class}`~pylabrobot.tecan.infinite.TecanInfiniteAbsorbanceParams` to configure flashes and bandwidth."
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": "from pylabrobot.tecan.infinite import TecanInfiniteAbsorbanceParams\n\nresults = await reader.absorbance.read(\n plate=plate,\n wavelength=450,\n backend_params=TecanInfiniteAbsorbanceParams(flashes=50, bandwidth=9.0),\n)"
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## Fluorescence\n\nRead fluorescence with specified excitation and emission wavelengths (230--850 nm). The focal height is in millimeters. For the full API, see [Fluorescence](../../capabilities/fluorescence)."
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": "results = await reader.fluorescence.read(\n plate=plate,\n excitation_wavelength=485,\n emission_wavelength=528,\n focal_height=20.0,\n)\nresults[0].data"
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## Luminescence\n\nRead luminescence. The focal height is in millimeters. For the full API, see [Luminescence](../../capabilities/luminescence)."
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": "results = await reader.luminescence.read(plate=plate, focal_height=20.0)\nresults[0].data"
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## Reading specific wells\n\nYou can specify a subset of wells to read instead of the entire plate."
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": "wells = plate.get_items([\"A1\", \"A2\", \"B1\", \"B2\"])\nresults = await reader.absorbance.read(plate=plate, wavelength=450, wells=wells)"
},
{
"cell_type": "markdown",
"source": "## Teardown",
"metadata": {}
},
{
"cell_type": "code",
"source": "await reader.stop()",
"metadata": {},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": "## Installation\n\nThe Infinite 200 PRO connects via USB. PyLabRobot uses `pyusb` for communication, which requires `libusb` on your system.\n\n### macOS\n\n```bash\nbrew install libusb\n```\n\n### Linux (Debian/Ubuntu)\n\n```bash\nsudo apt-get install libusb-1.0-0-dev\n```\n\n### Windows\n\nInstall [Zadig](https://zadig.akeo.ie/) and replace the Infinite's default USB driver with `WinUSB` or `libusb-win32`.",
"metadata": {}
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"name": "python",
"version": "3.10.0"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Loading
Loading