Skip to content

Releases: agallenne/GUIcandid

v1.1.1

14 May 20:58
c7b11da

Choose a tag to compare

This is a suite of Python 2/3 tools to find faint companion around star in interferometric data in the OIFITS format. This tool allows to systematically search for faint companions in OIFITS data, and if not found, estimates the detection limit. This code is presented in the article Gallenne et al. 2015, although it has evolved slightly since the paper was published.

To install Candid, run:

python setup.py install --user
it will compile the C source used in Cython, and install CANDID.

What does it do for you?

Companion Search

The tool is based on model fitting and Chi2 minimization (scipy.optimize.leastsq), with a grid for the starting points of the companion position. It ensures that all positions are explored by estimating a-posteriori if the grid was dense enough, and provide an estimate of the optimum grid density (see example).

Note that if you use LITpro, you might find that the results given by CANDID are different:

In general, position of the found companion is the same for LITpro and CANDID
LITpro tends to overestimate the flux ratio, because it does not take into account bandwidth smearing, whereas CANDID does. For AX Cir, the flux ratio found bt CANDID is 1%, whereas it is 0.8% for LITpro (or CANDID when bandwidth smearing is disabled). Note that the latest versions of CANDID compute numerically the bandwidth smearing to make sure we never run into restrictions of the analytical approximation of Lachaume & Berger (2013). the variable CONFIG['Nsmear'] is automatically adjusted, so do not try to adjust it yourself.
Detection limit

It uses Chi2 statistics to estimate the level of detection in "number of sigmas".

Non-Detection Limit

There are two approaches implemented: Absil et al. 2011 and CANDID's Analytical Companion Injection Gallenne et al. 2015.

Known limitations

The code has not been deeply error proofed. If you encounter problems or bugs, do not hesitate to contact the developers.

The (non-)detection levels are given assuming the errors bars in the data are uncorrelated. This is of course not the case for real data, in particular when a lot of spectral channels are present.
The works only with simple OIFITS files: all observations should be with the same instrument (same OI_WAVELENGTH) and all data will be taken, assuming a single target is present. Several OIFITS files can be loaded at once (giving a list of files) but it assumes that all files contain only one target.
The UD visibility is computed using a polynomial approximation, so only first and second lobe visibilities for the primary can be handled. That should be enough but might lead to some (unknown yet) side effects.
The code has been tested of OIFITS files form CHARA/MIRC and VLTI/PIONIER. If you use other instruments and encounter problems, please contact the developers!
The code can take lots of memory because it stores lots of intermediate results, so using a 64bit python is advisable.
The code is not particularly fast, but uses multiprocessing: our experience on Macs is that it leads to several problems:
It does not work properly with IPython Notebooks. ipython/ipython#6109.
It works better with the IPython console, though it sometimes seems unresponsive (it makes sometimes the estimation of running time unreliable). Moreover, ctrl+C sometimes does not stop the code.
The smoothest behavior is obtained by running in a python shell.
Examples:

The following example can be found in axcir.py.

chi2 Maps. These are useful because fast, but dangerous because it is easy to miss a companion just using those. On FIG1 and FIG2, we show to runs for different diameters and flux ratio: either the diameter is fitted to the V2 data (FIG1). The chi2 map shows a minimum only if the grid if fine enough (the structure in the map should be clear, not pixelated) but also if the parameters (inc. the flux ratio) are very close to the actual ones.
fit Maps. These are MUCH better, but slower than chi2 maps. If V2 are present, the diameter will be fitted (FIG2). Note that once a companion is found, it can be removed analytically from the data and the fit map ran again (FIG4): this demonstrates that, in the case of our example, the secondary "detections" are only artifact from the main companion.
detection limits. We implemented 2 methods; Absil's and our companion injection (Gallenne et al. 2015). Note that they give slightly different results: we argue that our method is more robust to correlated noise (read our paper!). When you have detected a companion and wish to estimate the detection limit, it is important to first remove the companion (FIG5).

v1.1

09 May 16:06
c7b11da

Choose a tag to compare

This is a PyQT5 Graphical user interface for the CANDID algorithm to find faint companion around star in interferometric data in the OIFITS format. This tool allows to systematically search for faint companions in OIFITS data, and if not found, estimates the detection limit. This code is presented in the article Gallenne et al. 2015, although it has evolved slightly since the paper was published.

Visit the main Github for more explanations and examples: https://github.com/agallenne/GUIcandid

v1.0

03 May 20:09
d56d603

Choose a tag to compare

This is a PyQT5 Graphical user interface for the CANDID algorithm to find faint companion around star in interferometric data in the OIFITS format. This tool allows to systematically search for faint companions in OIFITS data, and if not found, estimates the detection limit. This code is presented in the article Gallenne et al. 2015, although it has evolved slightly since the paper was published.

Visit the main Github for more explanations and examples: https://github.com/agallenne/GUIcandid