Commit e4e15758 authored by Remi Perenon's avatar Remi Perenon
Browse files

Merge branch 'release-1.3.x'

parents 6002411b cb84004a
Pipeline #4807 passed with stages
in 24 minutes and 40 seconds
This diff is collapsed.
# **************************************************************************
#
# MDANSE: Molecular Dynamics Analysis for Neutron Scattering Experiments
#
# @file Extensions/xtc/xtc.pyx
# @brief Implements module/class/test xtc
#
# @homepage https://mdanse.org
# @license GNU General Public License v3 or higher (see LICENSE)
# @copyright Institut Laue Langevin 2013-now
# @authors Scientific Computing Group at ILL (see AUTHORS)
#
# **************************************************************************
# cython: c_string_type=str, c_string_encoding=ascii
##############################################################################
# MDTraj: A Python Library for Loading, Saving, and Manipulating
......
MDANSE : An interactive analysis environment for molecular dynamics simulations
Gael Goret, Bachir Aoun, Yannick Raoul, Miguel Gonzalez and Eric Pellegrini
1] ABSTRACT
TODO GG, EP
2] INTRODUCTION
Since the pioneer works of Alder and Wainwright,1 molecular dynamics (MD)
simulations has been recognized as a valuable tool for the study of condensed matter.
Since then, the combined progress in hardware, software and algorithmic led to a tremendous
growth on this field and allows nowadays the study of always more complex molecular systems,
such as molecular liquids and crystals, polymers, and biological macromolecules (e.g. proteins,
nucleic acids, sugars, lipids). This wide range of molecular system on which the simulations can
be applied on, opens the MD field to a large variety of scientific areas. Furthermore, their use
is no longer reserved to experts and the availability of many user-friendly packages
(e.g. CHARMM, 2 NAMD, 3 AMBER,4 DL_POLY5) allowed many experimentalists to use computer simulations
to interpret their measurements whenever they are too complex to be described by simple analytical models.
However, these packages primarly designed for producing with a high efficiency MD trajectories are limited
in their functionality for analyzing these trajectories.
In this article, we present MDANSE (Molecular Dynamics Analyzis for Neutron Scattering Experiments) a new
python interactive environment for analyzing molecular dynamics data designed to cover a wide
range of properties (e.g. dynamical, structural, scattering, thermodynamical) that can be accessed through the
post-processing of a molecular dynamics trajectory. MDANSE is especially suited to explore the structure and dynamics of
atomic or molecular systems in association with thermal neutron scattering experiments (TNS).
Indeed, this experimental technique provides information on time and space correlations of atomic positions. 1,2
Indeed, TNS gives access to temporal and spatial ranges respectively from subpicoseconds to tenth of nanoseconds and
angstrom to tenth of nanometers. This spatio-temporal domain matches very well with the one provided by
classical molecular dynamics simulations and and to this effect both techniques are very complementary.
In the neutron scattering community, few packages allow really to put together experimental and MD data ... (e.g. sassena, nmoldyn).
We have been involved through the years in the developement of nMolDyn and its advertising especially at the Institut
Laue-Langevin [cite ill article using nmoldyn]. This gave us the unique opportunity to be in close contact with users, and to understand
better their needs in term of features and ergonomy. This has motivated the developement of MDANSE application.
2] SCIENTIFIC INTRODUCTION AND CONTEXT (MARK)
3] DESCRIPTION
MDANSE is a python application used to process molecular dynamics trajectories. It has been designed using
modern software engineering techniques (OOP, Version Control System, build server, Graphical User Interface).
A strong emphasis has been put to design a software that offers flexibility, ergonomy, and portability.
MDANSE offers a 2D/3D graphical environment to guide the user from loading and inspecting trajectories to the
visualization of the results of the available analysis. Besides this complete graphical environment, MDANSE has also been designed
to be used as a library through the generation of python scripts using directly its scientific kernel.
As a python application, MDANSE relies on a few dependencie namely:
1) NumPy for working on N-dimensional arrays [ref]
2) Matplotlib for producing 2D plot [ref]
3) VTK for visualizing 3D data [ref]
4) wxPython for designing the GUI [ref]
5) MMTK the molecular simulation library [ref]
The dependency upon MMTK library triggers that the input trajectory file format is netCDF [ref] which a machine independant
compact binary file format. All of these packages are developed and distributed following
the Open Source principles [ref]. The use of a high-level interpreted language may be surprising at first sight for the design of a
scientific application for which high performance computing is required for processing MD trajectories in a reasonable time. A closer
inspection reveals that all the time-critical parts of the algorithms use efficient implementations in C, Cython or Fortran, which are provided
by extensions in MDANSE itself or other packages (e.g. NumPy and MMTK) together with a Python interface.
Moreover the use of a largely used programming language as python allows to open the application to many users in the scientific community.
This article describes MDANSE and announces its first public realease. This software benefits from the experience gained through
the development of nMoldyn and from the feedback of the neutron user community.
The design of MDANSE have been motivated on this feedback which mainly targeted on the : (1) the lack for an interactive graphical environment
(2) the possibility to create new analysis.
A strong emphasis has been put on the design of the GUI, which includes now a 3D viewer for the MD trajectory and a sophisticated plotter for
multi-dimensional data. The 3D molecular viewer allows parts of the molecular system to be selected interactively prior to an analysis and in that
context, MDANSE GUI can now be considered as an interactive graphical environment. The kernel of MDANSE has been designed to make easier the
development and the integration of the components necessary for implementing new analysis.
MDANSE has been implemented using the Oriented Object Programming (OOP) paradigm. The Framework consist in a set of interfaces defining the building
block necessary to write a new analysis (see table 1.). In order to allow any new concrete class derived from one of these interface to be automatically
recognized when launching MDANSE application, these base class are metaclassed and referenced into a tree like structure called Registry at import time.
Hence, each branch of this tree will store the classes that compose each of these interfaces.
In this context the extension of any of these interface is possible by subclassing any of the registred class, and MDANSE will take in charge their automatic
registration at runtime.
Table 1.]
Todo build the table based on the registry
nom | short description
The possibility to visualize and interact with 3D graphics, from the input of data, going through the parameterization of analyses to the visualization
of results in an user friendly and integrated way is an important feature in MDANSE. It is easy to display a molecular trajectory, pick a set of atoms, or
interpret simply 2D or 3D resulting data as 3D representations.
The interactive graphical environment is based on the concept of Plugin. A Plugin is a window, that can be draged and droped into another one allowing
to perform an action in the context of the parent Plugin. This builds a chain of Plugins whose first element is a Plugin storing the data itself which
has to be initialy droped on the main window.
A typical exemple of this concept is the animation of a molecular dynamics trajectory.
the user will 1) load a trajectory 2) drag the corresponding Plugin to the main window 2) drag the molecular viewer Plugin into the data Plugin
3) drag the animation panel in the molecular viewer Plugin and start the animation. the Plugin base class is one of the registry interface, allowing the user
to seemlessly add its own plugins to the enviromment.
3.1] An Interactive Graphical Environment
One of the main features that MDANSE offers is the possibility to visualize and interact with 3D graphics.
Thanks to developments based on wxPython[ref] and the visualization toolkit libraries[ref], it is possible to display a molecular trajectory,
pick a set of atoms, or interpret simply 2D or 3D resulting data as 3D density plot, elevated surface, scalar field...
The MDANSE graphical environment allow to navigate interactively from the input of data, going through the parameterization of analyses
to the visualization of results in an user friendly and integrated way. However, being a python package, MDANSE can also be accessed
through the command line interface.
3.2]Working Environment
The main window is divided in four panels (numbered from 1 to 4 on figure 1). The first panel is the MDANSE workspace where all the actions will
take place via a drag and drop mechanism of data and their related actions (e.g. viewing a molecule, trajectory animation, launching a job …).
The second panel is the data panel that will display all the data that have been loaded in the current MDANSE session. Dragging a data from this panel
and dropping it on the workspace will create a tab that will serve as a container for all subsequent actions related to this data.
Dropping an action on this tab will automatically pop up its related GUI (widget, dialog, viewer …). The third panel is the plugins panel that will
contains all the actions related to the widget currently on focus into the workspace. This panel is dynamically updated each time the user selects
a widget on the workspace. For example, a typical workflow for MDANSE would be the following. 1) The user loads a trajectory.
It is displayed in the data panel. 2) Data is dragged and dropped into the workspace. That creates a tab in the workspace waiting for further actions
which are displayed in the plugins panel. 3) The user drags and drops the molecular viewer plugin into the previously created tab.
The molecular viewer widget pops up in the tab showing the molecular contents of the trajectory. 4) The user animates the trajectory by
dragging and dropping the animation panel into the previously created molecular viewer. And so on. Finally, the fourth panel contains
various widgets related to the current MDANSE session. It contains 1) a logger of the application. 2) a python console, allowing to handle the
MDANSE frameworks interactively. 3) a job manager, showing the states of the running jobs.
3.3] 2D/3D Plotter
In the workflow of MDANSE, once an analyses has finished, a NetCDF file containing the results is written.
To interpret properly this content, we have provided an integrated tool adapted to all the dimensions of the output data.
Based respectively on matplotlib and VTK for 2D and 3D rendering, the MDANSE plotter produces publication quality figures for the
classic rendering types. The 1D and 2D data can be plotted as lines and images in single or multiple windows. To enhance the possibility
cross comparison, the units conversions are handle automatically, and slices coming from different images can be merged into the same plot easily.
For data with higher dimensionality several plotting modes can be used (1) the image elevation mode (see figure 2) displays 2D data as
3D colored landscape, (2) the scalar-field mode displays 3D densities as a field of combined gradient of color and transparency, (3) the iso-surface
mode is another way to plot 3D densities represented in that case as a transparent surface going through all the values with
the same intensity (see figure 3). This plotter includes also the possibility of slicing the density using a cut plan interpolating the data.
Figure 1.]
Snapshot of MDANSE main window with the different panels of the working environment numbered from 1 to 4.
3.4] Properties Editor
Most of the quantities proposed by MDANSE can be weighted by using specific properties (atomic masses and numbers, coherent and
incoherent scattering lengths, etc.). in MDANSE the list of those properties is easily extensible, which open the use of MDANSE to new
experimental techniques (e.g. X-ray scattering, infrared and RMN spectroscopy). Thereby, in MDANSE the properties editor expose the
modification of the elements data base which allow the users to tune freely the weighting scheme (see figure 4).
This properties editor displays the MDANSE elements database. It is editable which allows the management of the atomic properties
of all defined atoms. Additionally, new atom types can be added, in order to fit some special molecular dynamics simulations.
For instance, when computing analyses related to neutron spectrometry, some hydrogen atoms should be turned to deuterium to match the
experience. In such case, the use of properties editor will allow to add the deuterium as a new entry and to further transmute some of
the hydrogen atoms into deuterium.
Figure 4.]
The MDANSE properties editor which gives access to the MDANSE elements database.
Figure 2.]
An elevation plot produced by MDANSE plotting tool.
Figure 3.]
An elevation plot produced by MDANSE plotting tool.
Figure 5.]
The MDANSE extendable components handled by the class registry.
4] EXAMPLE
4.1] Argon/Water (M.G.)
4.2] Water (M.G.)
5] CONCLUSION
6] Acknowledgments
MDANSE development was supported by the Agence Nationale de la Recherche under contract N° ANR-2010-COSI-001-01
\ No newline at end of file
#!/usr/bin/env python
# **************************************************************************
#
# MDANSE: Molecular Dynamics Analysis for Neutron Scattering Experiments
#
# @file Src/__init__.py
# @brief Implements module/class/test __init__
#
# @homepage https://mdanse.org
# @license GNU General Public License v3 or higher (see LICENSE)
# @copyright Institut Laue Langevin 2013-now
# @authors Scientific Computing Group at ILL (see AUTHORS)
#
# **************************************************************************
import cPickle
import glob
import optparse
......
#!/usr/bin/env python
# **************************************************************************
#
# MDANSE: Molecular Dynamics Analysis for Neutron Scattering Experiments
#
# @file Src/__init__.py
# @brief Implements module/class/test __init__
#
# @homepage https://mdanse.org
# @license GNU General Public License v3 or higher (see LICENSE)
# @copyright Institut Laue Langevin 2013-now
# @authors Scientific Computing Group at ILL (see AUTHORS)
#
# **************************************************************************
if __name__ == "__main__":
from MDANSE.GUI.Apps import ElementsDatabaseEditorApp
......
#!/usr/bin/env python
# **************************************************************************
#
# MDANSE: Molecular Dynamics Analysis for Neutron Scattering Experiments
#
# @file Src/__init__.py
# @brief Implements module/class/test __init__
#
# @homepage https://mdanse.org
# @license GNU General Public License v3 or higher (see LICENSE)
# @copyright Institut Laue Langevin 2013-now
# @authors Scientific Computing Group at ILL (see AUTHORS)
#
# **************************************************************************
if __name__ == "__main__":
from MDANSE.GUI.Apps import MainApplication
......
#!/usr/bin/env python
# **************************************************************************
#
# MDANSE: Molecular Dynamics Analysis for Neutron Scattering Experiments
#
# @file Src/__init__.py
# @brief Implements module/class/test __init__
#
# @homepage https://mdanse.org
# @license GNU General Public License v3 or higher (see LICENSE)
# @copyright Institut Laue Langevin 2013-now
# @authors Scientific Computing Group at ILL (see AUTHORS)
#
# **************************************************************************
if __name__ == "__main__":
from MDANSE.GUI.Apps import PeriodicTableViewerApp
......
#!/usr/bin/env python
# **************************************************************************
#
# MDANSE: Molecular Dynamics Analysis for Neutron Scattering Experiments
#
# @file Src/__init__.py
# @brief Implements module/class/test __init__
#
# @homepage https://mdanse.org
# @license GNU General Public License v3 or higher (see LICENSE)
# @copyright Institut Laue Langevin 2013-now
# @authors Scientific Computing Group at ILL (see AUTHORS)
#
# **************************************************************************
if __name__ == "__main__":
from MDANSE.GUI.Apps import PlotterApp
......
#!/usr/bin/env python
# **************************************************************************
#
# MDANSE: Molecular Dynamics Analysis for Neutron Scattering Experiments
#
# @file Src/__init__.py
# @brief Implements module/class/test __init__
#
# @homepage https://mdanse.org
# @license GNU General Public License v3 or higher (see LICENSE)
# @copyright Institut Laue Langevin 2013-now
# @authors Scientific Computing Group at ILL (see AUTHORS)
#
# **************************************************************************
if __name__ == "__main__":
from MDANSE.GUI.Apps import UserDefinitionViewerApp
......
#MDANSE : Molecular Dynamics Analysis for Neutron Scattering Experiments
#------------------------------------------------------------------------------------------
#Copyright (C)
#2015- Eric C. Pellegrini Institut Laue-Langevin
#BP 156
#6, rue Jules Horowitz
#38042 Grenoble Cedex 9
#France
#pellegrini[at]ill.fr
#goret[at]ill.fr
#aoun[at]ill.fr
#
#This library is free software; you can redistribute it and/or
#modify it under the terms of the GNU Lesser General Public
#License as published by the Free Software Foundation; either
#version 2.1 of the License, or (at your option) any later version.
#
#This library is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
#Lesser General Public License for more details.
#
#You should have received a copy of the GNU Lesser General Public
#License along with this library; if not, write to the Free Software
#Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
'''
Created on Mar 30, 2015
:author: Eric C. Pellegrini
'''
# **************************************************************************
#
# MDANSE: Molecular Dynamics Analysis for Neutron Scattering Experiments
#
# @file Src/Core/ClassRegistry.py
# @brief Implements module/class/test ClassRegistry
#
# @homepage https://mdanse.org
# @license GNU General Public License v3 or higher (see LICENSE)
# @copyright Institut Laue Langevin 2013-now
# @authors Scientific Computing Group at ILL (see AUTHORS)
#
# **************************************************************************
import glob
import imp
import inspect
......
#MDANSE : Molecular Dynamics Analysis for Neutron Scattering Experiments
#------------------------------------------------------------------------------------------
#Copyright (C)
#2015- Eric C. Pellegrini Institut Laue-Langevin
#BP 156
#6, rue Jules Horowitz
#38042 Grenoble Cedex 9
#France
#pellegrini[at]ill.fr
#goret[at]ill.fr
#aoun[at]ill.fr
# **************************************************************************
#
#This library is free software; you can redistribute it and/or
#modify it under the terms of the GNU Lesser General Public
#License as published by the Free Software Foundation; either
#version 2.1 of the License, or (at your option) any later version.
# MDANSE: Molecular Dynamics Analysis for Neutron Scattering Experiments
#
#This library is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
#Lesser General Public License for more details.
# @file Src/Core/Error.py
# @brief Implements module/class/test Error
#
#You should have received a copy of the GNU Lesser General Public
#License along with this library; if not, write to the Free Software
#Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
'''
Created on Mar 30, 2015
:author: Eric C. Pellegrini
'''
# @homepage https://mdanse.org
# @license GNU General Public License v3 or higher (see LICENSE)
# @copyright Institut Laue Langevin 2013-now
# @authors Scientific Computing Group at ILL (see AUTHORS)
#
# **************************************************************************
class Error(Exception):
'''
......
#MDANSE : Molecular Dynamics Analysis for Neutron Scattering Experiments
#------------------------------------------------------------------------------------------
#Copyright (C)
#2015- Eric C. Pellegrini Institut Laue-Langevin
#BP 156
#6, rue Jules Horowitz
#38042 Grenoble Cedex 9
#France
#pellegrini[at]ill.fr
#goret[at]ill.fr
#aoun[at]ill.fr
#
#This library is free software; you can redistribute it and/or
#modify it under the terms of the GNU Lesser General Public
#License as published by the Free Software Foundation; either
#version 2.1 of the License, or (at your option) any later version.
#
#This library is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
#Lesser General Public License for more details.
#
#You should have received a copy of the GNU Lesser General Public
#License along with this library; if not, write to the Free Software
#Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
'''
Created on Mar 30, 2015
:author: Eric C. Pellegrini
'''
# **************************************************************************
#
# MDANSE: Molecular Dynamics Analysis for Neutron Scattering Experiments
#
# @file Src/Core/Platform.py
# @brief Implements module/class/test Platform
#
# @homepage https://mdanse.org
# @license GNU General Public License v3 or higher (see LICENSE)
# @copyright Institut Laue Langevin 2013-now
# @authors Scientific Computing Group at ILL (see AUTHORS)
#
# **************************************************************************
import abc
import ctypes
import datetime
......@@ -91,7 +73,17 @@ class Platform(object):
:rtype: str
'''
return os.path.join(self.package_directory(), 'Doc')
return os.path.join(self.package_directory(), 'Doc')
def jobs_launch_delay(self):
'''
Returns the delay (in seconds) for a job to launch.
This is used to determine the delay before updating the GUI and suppressing a job status file
:return: the delay (in seconds) for a job to launch
:rtype: float
'''
return 2.0
def api_path(self):
'''
......
#MDANSE : Molecular Dynamics Analysis for Neutron Scattering Experiments
#------------------------------------------------------------------------------------------
#Copyright (C)
#2015- Eric C. Pellegrini Institut Laue-Langevin
#BP 156
#6, rue Jules Horowitz
#38042 Grenoble Cedex 9
#France
#pellegrini[at]ill.fr
#goret[at]ill.fr
#aoun[at]ill.fr
#
#This library is free software; you can redistribute it and/or
#modify it under the terms of the GNU Lesser General Public
#License as published by the Free Software Foundation; either
#version 2.1 of the License, or (at your option) any later version.
#
#This library is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
#Lesser General Public License for more details.
#
#You should have received a copy of the GNU Lesser General Public
#License along with this library; if not, write to the Free Software
#Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
'''
Created on Mar 30, 2015
:author: Eric C. Pellegrini
'''
# **************************************************************************
#
# MDANSE: Molecular Dynamics Analysis for Neutron Scattering Experiments
#
# @file Src/Core/Singleton.py
# @brief Implements module/class/test Singleton
#
# @homepage https://mdanse.org
# @license GNU General Public License v3 or higher (see LICENSE)
# @copyright Institut Laue Langevin 2013-now
# @authors Scientific Computing Group at ILL (see AUTHORS)
#
# **************************************************************************
class Singleton(type):
'''
Metaclass that implements the singleton pattern.
......
# **************************************************************************
#
# MDANSE: Molecular Dynamics Analysis for Neutron Scattering Experiments
#
# @file Src/Core/__init__.py
# @brief Implements module/class/test __init__
#
# @homepage https://mdanse.org
# @license GNU General Public License v3 or higher (see LICENSE)
# @copyright Institut Laue Langevin 2013-now
# @authors Scientific Computing Group at ILL (see AUTHORS)
#
# **************************************************************************
#MDANSE : Molecular Dynamics Analysis for Neutron Scattering Experiments
#------------------------------------------------------------------------------------------
#Copyright (C)
#2015- Eric C. Pellegrini Institut Laue-Langevin
#BP 156
#6, rue Jules Horowitz
#38042 Grenoble Cedex 9
#France
#pellegrini[at]ill.fr
#goret[at]ill.fr
#aoun[at]ill.fr
# **************************************************************************
#
#This library is free software; you can redistribute it and/or
#modify it under the terms of the GNU Lesser General Public
#License as published by the Free Software Foundation; either
#version 2.1 of the License, or (at your option) any later version.
# MDANSE: Molecular Dynamics Analysis for Neutron Scattering Experiments
#
#This library is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
#Lesser General Public License for more details.
# @file Src/Data/ElementsDatabase.py
# @brief Implements module/class/test ElementsDatabase
#
#You should have received a copy of the GNU Lesser General Public
#License along with this library; if not, write to the Free Software
#Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
'''
Created on Mar 30, 2015
:author: Eric C. Pellegrini
'''
# @homepage https://mdanse.org
# @license GNU General Public License v3 or higher (see LICENSE)
# @copyright Institut Laue Langevin 2013-now
# @authors Scientific Computing Group at ILL (see AUTHORS)
#
# **************************************************************************
import collections
import copy
......
# **************************************************************************
#
# MDANSE: Molecular Dynamics Analysis for Neutron Scattering Experiments
#
# @file Src/Data/__init__.py
# @brief Implements module/class/test __init__
#
# @homepage https://mdanse.org
# @license GNU General Public License v3 or higher (see LICENSE)
# @copyright Institut Laue Langevin 2013-now
# @authors Scientific Computing Group at ILL (see AUTHORS)
#
# **************************************************************************
#MDANSE : Molecular Dynamics Analysis for Neutron Scattering Experiments
#------------------------------------------------------------------------------------------
#Copyright (C)
#2015- Eric C. Pellegrini Institut Laue-Langevin
#BP 156
#6, rue Jules Horowitz
#38042 Grenoble Cedex 9
#France
#pellegrini[at]ill.fr
#goret[at]ill.fr
#aoun[at]ill.fr
# **************************************************************************
#
#This library is free software; you can redistribute it and/or
#modify it under the terms of the GNU Lesser General Public
#License as published by the Free Software Foundation; either
#version 2.1 of the License, or (at your option) any later version.
# MDANSE: Molecular Dynamics Analysis for Neutron Scattering Experiments
#
#This library is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
#Lesser General Public License for more details.
# @file Src/DistributedComputing/MasterSlave.py
# @brief Implements module/class/test MasterSlave
#
#You should have received a copy of the GNU Lesser General Public
#License along with this library; if not, write to the Free Software