summaryrefslogtreecommitdiff
path: root/silx/sx/__init__.py
blob: 55fa40e89e37f6568458ba9870cb8178e0ba194c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# coding: utf-8
# /*##########################################################################
#
# Copyright (c) 2016-2017 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
#
# ###########################################################################*/
"""Convenient module to use main features of silx from the console.

Usage from (I)Python console or notebook:

>>> from silx import sx

With IPython/jupyter, this also runs %pylab.
From the console, it sets-up Qt in order to allow using GUI widgets.
"""

__authors__ = ["T. Vincent"]
__license__ = "MIT"
__date__ = "16/01/2017"


import logging
import sys as _sys


_logger = logging.getLogger(__name__)


# Probe ipython
try:
    from IPython import get_ipython as _get_ipython
except (NameError, ImportError):
    _get_ipython = None

# Probe ipython/jupyter notebook
if _get_ipython is not None and _get_ipython() is not None:

    # Notebook detection probably fragile
    _IS_NOTEBOOK = ('parent_appname' in _get_ipython().config['IPKernelApp'] or
                    hasattr(_get_ipython(), 'kernel'))
else:
    _IS_NOTEBOOK = False


# Load Qt and widgets only if running from console
if _IS_NOTEBOOK:
    _logger.warning(
        'Not loading silx.gui features: Running from the notebook')

else:
    from silx.gui import qt

    if hasattr(_sys, 'ps1'):  # If from console, make sure QApplication runs
        qapp = qt.QApplication.instance() or qt.QApplication([])

        # Change windows default icon
        from silx.gui import icons as _icons
        qapp.setWindowIcon(_icons.getQIcon('silx'))
        del _icons  # clean-up namespace

    from silx.gui.plot import *  # noqa
    from ._plot import plot, imshow  # noqa


# %pylab
if _get_ipython is not None and _get_ipython() is not None:
    _get_ipython().enable_pylab(gui='inline' if _IS_NOTEBOOK else 'qt')


# Clean-up
del _sys
del _get_ipython
del _IS_NOTEBOOK


# Load some silx stuff in namespace
from silx import *  # noqa
from silx.io import open  # noqa
from silx.io import *  # noqa
from silx.math import Histogramnd, HistogramndLut  # noqa
from silx.math.fit import leastsq  # noqa