Skip to main content
Help improve PyPI by participating in a 5-minute user interface survey!

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

Release history Release notifications

This version
History Node


History Node


History Node


History Node


History Node


History Node


Download files

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

Filename, size & hash SHA256 hash help File type Python version Upload date
andor-1.14.tar.gz (237.7 kB) Copy SHA256 hash SHA256 Source None Feb 26, 2016

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page