Welcome to SimCADocs!

The (slowly expanding) documentation base for SimCADO, the instrument data simulation package for MICADO at the ELT.


SimCADO is currently under active development. The current version of SimCADO (dubbed v0.7) is however capable to answer many questions about the future performance of MICADO imaging mode and your favorite science case. For the spectroscopic mode, please consult SpecCADO.

In this latest version SimCADO is able to correctly simulate DIT and NDITs. Accordingly, the keyword OBS_EXPTIME has been replaced by OBS_DIT, with total observing time given by OBS_DIT*OBS_NDIT. Please update your scripts and configuration files after downloading the latest version.

SimCADO in a nutshell

SimCADO is a python package designed to simulate the effects of the Atmosphere, E-ELT, and MICADO instrument on incoming light. The current version (v0.7) can simulate the MICADO imaging mode (4mas and 1.5mas per pixel in the wavelength range 0.7µm to 2.5µm).


A simple simulation in 30 seconds with SimCADO.

Reference Material

Downloading and Installing

For more information, see the Download section

SimCADO has only been tested in Python 3.x.

It is hightly recommended to use Python 3, however the basics of generating images will still work in Python 2.7. We cannot guarantee this though.

The quick way:

$ pip install SimCADO

We also recomend to install SimCADO in an anaconda/miniconda/etc python distributions as it is much easier to keep control over your python environment.

The first time in python you should update the SimCADO data directory with get_extras():

>>> import simcado
>>> simcado.get_extras()
>>> # !! Only works in Python 3 - See Downloads section
>>> simcado.install_noise_cube()

If you running Python 3, it would be helpful to expand the internal detector noise cube with install_noise_cube().

Keeping SimCADO updated

As MICADO developes, the data files that SimCADO uses will also be updated. Therefore before you do any major work with SimCADO we HIGHLY recommend calling get_extras():

>>> simcado.get_extras()

iPython/Jupyter notebooks

A (continualy expanding) series of iPython Notebooks detailing how to use SimCADO are available here in the Notebooks section.


Don’t feel like sifting through documentation? Common commands and examples are on the SimCADO cheat-sheet:

Running a simulation in 3 lines

The easiest way to run a simulation is to create, or load, a Source object and then call the run() command. If you specify a filename, the resulting image will be output to a FITS file under that name. If you do not specify a filename, the output will be returned to the console/notebook as an HDUList object.

To begin, we will import the simcado module (assuming it is already installed).:

>>> import simcado

At the very least, we need to create a Source object which contains both spatial and spectral information on our object of interest. Here we use the built-in command simcado.source.cluster() to create a Source object for a 10000-Msun stellar cluster. (Creating Sources for more information).:

>>> src = simcado.source.cluster()

We now pass the Source object through SimCADO. This is as easy as calling run(). If we specify a filename, SimCADO will write the output to disk in the form of a FITS file. If no filename is given, then SimCADO returns an astropy fits object to the console or notebook.:

>>> simcado.run(src, filename="my_first_sim.fits")

Changing simulation parameters

The run() also takes any configuration keywords as parameters for running the simulation. For example, the default exposure time for the simulation is 60 seconds, however this can be increased of decreased by using the keyword OBS_EXPTIME (and/or combining it with OBS_NDIT). A stacked 6x 10 minute observation sequence would look like:

>>> simcado.run(src, filename="my_first_sim.fits", OBS_DIT=600, OBS_NDIT=6)

That’s it. Of course SimCADO can also go in the other direction, providing many more levels of complexity, but for that the reader is directed to the examples pages and/or the API documentation.

SimCADO building blocks

For a brief explanation of how SimCADO works and which classes are relevant, please see either the GettingStarted or SimCADO in depth section.

Using SimCADO

Bugs and Issues

We freely admit that there may still be several bugs that we have not found. If you come across an buggy part of SimCADO, please please tell us. We can’t make SimCADO better if we don’t know about things.

The preferable option is to open an issue on our Github page: astronomyk/SimCADO/issues, or you can contact one of us directly.


For questions and complaints alike, please contact the authors:

Developers (Vienna): Kieran Leschinski, Oliver Czoske, Miguel Verdugo

Data Flow Team Leader (Gronigen): Gijs Verdoes Kleijn

MICADO home office (MPE): http://www.mpe.mpg.de/ir/micado