Skip to main content

Object-oriented interface for Andor EMCCD cameras

Project description

Object-oriented, high-level interface for Andor cameras (SDK2), written in Cython.


  • This is not a stand-alone driver. Andor’s proprietary drivers must be installed. The setup script expects to find in /usr/local/lib/ (the driver’s default installation directory).

  • Andor provides a low-level, ctypes wrapper on their SDK, called atcmd. If available, it will be imported as Andor._sdk.

  • This documentation should be read along Andor’s Software Development Kit manual.

  • To build the extension:

    $ python2.7 build_ext --inplace


This module is not thread-safe. If AcqMode.wait is blocking a background thread, and another function call is made from the main thread, the main thread will block too.


The camera is controlled via the top-level class Andor:

>>> from andor2 import Andor
>>> cam = Andor()

The Andor instance is just a container for other objects that control various aspect of the camera:

  • Info : camera information and available features
  • Temperature : cooler control
  • Shutter : shutter control
  • EM: electron-multiplying gain control
  • Detector: CCD control, including:
    • VSS: vertical shift speed
    • HSS: horizontal shift speed
    • ADC: analog-to-digital converter
    • OutputAmp: the output amplifier
    • PreAmp: pre-amplifier control
  • ReadMode: select the CCD read-out mode (full frame, vertical binning, tracks, etc.)
  • Acquire <AcqMode>: control the acquisition mode (single shot, video, accumulate, kinetic)


>>> from andor2 import Andor
>>> cam = Andor()
>>> cam.Temperature.setpoint = -74  # start cooling
>>> cam.Temperature.cooler = True
>>> cam.Detector.OutputAmp(1)       # use conventional CCD amplifier instead of electron multiplying
>>> cam.PreAmp(2)                   # set pre-amplifier gain to 4.9
>>> cam.exposure = 10               # set exposure time to 10 ms
>>> cam.ReadMode.SingleTrack(590,5) # set readout mode: single track, 5 pixels wide, centered at 590 pixels
>>> cam.Acquire.Video()             # set acquisition mode to video (continuous)
>>> data = cam.Acquire.Newest(10)   # collect latest 10 images as numpy array
>>> cam.Acquire.stop()
>>> cam.Acquire.Kinetic(10, 0.1, 5, 0.01)    # set up kinetic sequence of 10 images every 100ms
                                         # with each image being an accumulation of 5 images
                                         # taken 10ms apart
>>> cam.Acquire.start()                      # start acquiring
>>> cam.Acquire.wait()                       # block until acquisition terminates
>>> data = cam.Acquire.GetAcquiredData()     # collect all data

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for andor, version 1.14
Filename, size File type Python version Upload date Hashes
Filename, size andor-1.14.tar.gz (237.7 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page