.. _introduction: What is Taurus? =============== Taurus is a Python framework for creating command-line and graphical user interfaces for experiment control and data acquisition. It was originally conceived as a library for connecting client-side applications to Tango_ device servers. Since Taurus 4, its core is control-system agnostic and can support other control systems and data sources through plugins. Taurus was developed within the Sardana_ project, but it was later moved to a separate project because it is also useful for applications that are not based on Sardana. The two projects remain closely related. Models and user interfaces -------------------------- Taurus uses the Model-View-Controller (MVC) pattern to build interfaces. The :mod:`taurus.core` package provides *models* that abstract interactions with data and control objects. Plugins known as *schemes* provide support for specific data sources, such as Tango, EPICS, or evaluation models. This abstraction allows Taurus applications to work with model names instead of directly depending on a particular control-system API. See :ref:`taurus-core-tutorial` for a detailed explanation of Taurus models, schemes, model names, and model fragments. The view and controller components are most commonly implemented as Qt-based GUIs. The :mod:`taurus.qt` package provides widgets such as labels, editors, forms, plots, tables, buttons, and synoptics. These widgets extend regular Qt widgets with the ability to attach to Taurus models and display or modify their data. For example, a :class:`~taurus.qt.qtgui.panel.TaurusForm` can display and edit several models, while plotting widgets can represent numeric attribute data. See :ref:`forms`, :ref:`taurusplot_ui`, and :ref:`taurusgui_ui` for more about the corresponding user-interface concepts. Where to start -------------- If you are new to Taurus, start with :doc:`../installation/index` and then follow :ref:`examples` to build a small Taurus GUI step by step. Task-oriented instructions are available in :doc:`../howto/index`, while the complete Python API is available in :doc:`../reference/index`. .. _Sardana: https://www.sardana-controls.org/ .. _Tango: https://www.tango-controls.org/