Molecular Devices SpectraMax#

The SpectraMax family of plate readers from Molecular Devices communicate over RS-232 serial. Both models share the same serial protocol (MolecularDevicesPlateReader), but differ in what they can read.

Model

PLR Name

Absorbance

Fluorescence

Luminescence

Temperature Control

SpectraMax M5

SpectraMaxM5

yes

yes

yes

yes

SpectraMax 384 Plus

SpectraMax384Plus

yes

no

no

yes

Connect the reader to your computer via an RS-232 serial cable (or USB-to-serial adapter). Note the serial port name (e.g. COM3 on Windows, /dev/ttyUSB0 on Linux).

Setup#

from pylabrobot.molecular_devices.spectramax import SpectraMaxM5

reader = SpectraMaxM5(name="spectramax", port="/dev/ttyUSB0")  # replace with your port
await reader.setup()

For the SpectraMax 384 Plus:

# from pylabrobot.molecular_devices.spectramax import SpectraMax384Plus
#
# reader = SpectraMax384Plus(name="spectramax", port="/dev/ttyUSB0")
# await reader.setup()

Assign a plate to the reader’s loading tray:

from pylabrobot.resources import Cor_96_wellplate_360ul_Fb

plate = Cor_96_wellplate_360ul_Fb(name="plate")
reader.loading_tray.assign_child_resource(plate)

Absorbance#

Both the M5 and 384 Plus support absorbance reads. Pass the plate and the wells to read, plus the wavelength in nm.

results = await reader.read_absorbance(plate, plate.get_wells(), wavelength=450)

Reads are configured with keyword arguments, e.g. speed reads and calibration mode:

results = await reader.read_absorbance(
    plate,
    plate.get_wells(),
    wavelength=450,
    speed_read=True,
    calibrate="once",
)

Fluorescence (M5 only)#

The SpectraMax M5 supports fluorescence reads.

results = await reader.read_fluorescence(
    plate,
    plate.get_wells(),
    excitation_wavelength=485,
    emission_wavelength=520,
    focal_height=0.0,
)

PMT gain accepts one of "auto", "high", "medium", "low", or a raw integer value:

results = await reader.read_fluorescence(
    plate,
    plate.get_wells(),
    excitation_wavelength=485,
    emission_wavelength=520,
    focal_height=0.0,
    pmt_gain="high",
    read_from_bottom=True,
)

Luminescence (M5 only)#

The SpectraMax M5 supports luminescence reads. emission_wavelengths is required.

results = await reader.read_luminescence(
    plate,
    plate.get_wells(),
    focal_height=0.0,
    emission_wavelengths=[460],
)

Temperature control#

Both models can hold a temperature between 0 and 45 C.

await reader.set_temperature(37.0)
current = await reader.request_current_temperature()
print(f"{current:.1f} \u00b0C")
await reader.deactivate()

Tray control#

Open and close the plate tray:

await reader.open()
# load plate
await reader.close()

Teardown#

await reader.stop()