Beispiel #1
0
 def __init__(self, stage_name, position, title='actuator'):
     super().__init__()
     self.logger = utils.set_logger(f'{logger.name}.{title}.actuator')
     self.hardware = None
     self.stage_name = stage_name
     self.current_position = position
     self.target_position = 0
     self.hardware_adress = None
     self.axis_address = None
     self.motion_stoped = False
Beispiel #2
0
import os, fnmatch
import importlib
from pymodaq.daq_utils import daq_utils as utils

logger = utils.set_logger('viewerND_plugins', add_to_console=True)

path = os.path.abspath(__file__)
(path, tail) = os.path.split(path)

files = list()
for file in os.listdir(path):
    if fnmatch.fnmatch(file, "*.py"):
        files.append(file)

if '__init__.py' in files:
    files.remove('__init__.py')

__all__ = [file[:-3] for file in files]
for mod in __all__:
    try:
        importlib.import_module('.' + mod, 'pymodaq_plugins.daq_viewer_plugins.plugins_ND')
    except Exception as e:
        logger.warning("{:} plugin couldn't be loaded due to some missing packages or errors: {:}".format(mod, str(e)))
        pass
Beispiel #3
0
from collections import OrderedDict
from PyQt5.QtCore import QObject, pyqtSignal, pyqtSlot, QEvent, QBuffer, QIODevice, QLocale, Qt, QVariant, QModelIndex
from PyQt5 import QtGui, QtWidgets, QtCore
import numpy as np
from pathlib import Path
from pyqtgraph.dockarea.DockArea import DockArea, TempAreaWindow

from pymodaq.daq_utils import daq_utils as utils

from pyqtgraph.parametertree import Parameter

logger = utils.set_logger(utils.get_module_name(__file__))

dashboard_submodules_params = [
    {
        'title': 'Save 2D datas and above:',
        'name': 'save_2D',
        'type': 'bool',
        'value': True
    },
    {
        'title':
        'Save raw datas only:',
        'name':
        'save_raw_only',
        'type':
        'bool',
        'value':
        True,
        'tooltip':
        'if True, will not save extracted ROIs used to do live plotting, only raw datas will be saved'
Beispiel #4
0
import importlib
from pathlib import Path
from pymodaq.daq_utils import daq_utils as utils
logger = utils.set_logger('move_plugins', add_to_console=False)

for path in Path(__file__).parent.iterdir():
    try:
        if '__init__' not in str(path):
            importlib.import_module('.' + path.stem, __package__)
    except Exception as e:
        logger.warning(
            "{:} plugin couldn't be loaded due to some missing packages or errors: {:}"
            .format(path.stem, str(e)))
        pass
Beispiel #5
0
import importlib
from pathlib import Path
from pymodaq.daq_utils import daq_utils as utils

logger = utils.set_logger('viewer1D_plugins', add_to_console=False)

for path in Path(__file__).parent.iterdir():
    try:
        if '__init__' not in str(path):
            importlib.import_module('.' + path.stem, __package__)
    except Exception as e:
        logger.warning(
            "{:} plugin couldn't be loaded due to some missing packages or errors: {:}"
            .format(path.stem, str(e)))
        pass
Beispiel #6
0
import numpy
import numpy as np
from PyQt5 import QtWidgets, QtGui
from PyQt5.QtCore import QObject, pyqtSignal
from pyqtgraph import LinearRegionItem

from pymodaq.daq_utils.daq_utils import ftAxis_time, ft, find_index, gauss1D, ift, set_logger, get_module_name
from pymodaq.daq_utils.plotting.viewer1D.viewer1Dbasic import Viewer1DBasic

logger = set_logger(get_module_name(__file__))


class FourierFilterer(QObject):
    filter_changed = pyqtSignal(dict)

    def __init__(self, parent=None):
        super(FourierFilterer, self).__init__()
        if parent is None:
            parent = QtWidgets.QWidget()

        self.parent = parent

        self.raw_data = None
        self.data = None
        self.data_fft = None
        self.filter = None
        self.xaxis = None
        self.yaxis = None
        self.xaxisft = None
        self.yaxisft = None
Beispiel #7
0
    def __init__(self,
                 parent,
                 title="pymodaq Move",
                 preset=None,
                 init=False,
                 controller_ID=-1):
        """DAQ_Move object is a module used to control one motor from a specified list.
        managers is an optional list of dicts used to managers programatically settings such as the name of the
        controller from the list of possible controllers, COM address...
        init is a boolean to tell the programm to initialize the controller at the start of the programm given the
        managers options
        controller_ID is a unique random integer generated by the parent caller.
        To differenciate various instance of this class
        """
        self.logger = utils.set_logger(f'{logger.name}.{title}')
        self.logger.info(f'Initializing DAQ_Move: {title}')
        QLocale.setDefault(QLocale(QLocale.English, QLocale.UnitedStates))
        super().__init__()

        here = Path(__file__).parent
        splash = QtGui.QPixmap(str(here.parent.joinpath('splash.png')))
        self.splash_sc = QtWidgets.QSplashScreen(splash,
                                                 Qt.WindowStaysOnTopHint)

        self.ui = Ui_Form()
        self.ui.setupUi(parent)
        self.ui.Moveto_pb_bis_2.setVisible(False)
        self.parent = parent
        self.ui.title_label.setText(title)
        self.title = title
        self.ui.statusbar = QtWidgets.QStatusBar(parent)
        self.ui.StatusBarLayout.addWidget(self.ui.statusbar)
        self.ui.statusbar.setMaximumHeight(20)

        self.send_to_tcpip = False
        self.tcpclient_thread = None

        self.wait_time = 1000
        self.ui.Ini_state_LED

        self.ui.Ini_state_LED.clickable = False
        self.ui.Ini_state_LED.set_as_false()
        self.ui.Move_Done_LED.clickable = False
        self.ui.Move_Done_LED.set_as_false()
        self.initialized_state = False
        self.ui.Current_position_sb.setReadOnly(False)
        self.move_done_bool = True

        # ###########IMPORTANT############################
        self.controller = None  # the hardware controller/set after initialization and to be used by other modules
        # ################################################

        self.current_position = 0
        self.target_position = 0
        self.wait_position_flag = True

        self.ui.Current_position_sb.setValue(self.current_position)
        self.set_enabled_move_buttons(enable=False)
        self.ui.groupBox.hide()
        self.parent.resize(150, 200)

        # #Setting stages types
        self.stage_types = [mov['name'] for mov in DAQ_Move_Stage_type]
        self.ui.Stage_type_combo.clear()
        self.ui.Stage_type_combo.addItems(self.stage_types)

        # create main parameter tree
        self.ui.settings_tree = ParameterTree()
        self.ui.verticalLayout_2.addWidget(self.ui.settings_tree)
        self.ui.settings_tree.setMinimumWidth(300)

        self.settings = Parameter.create(name='Settings',
                                         type='group',
                                         children=self.params)
        self.ui.settings_tree.setParameters(self.settings, showTop=False)

        # connecting from tree
        self.settings.sigTreeStateChanged.connect(
            self.parameter_tree_changed
        )  # any changes on the settings will update accordingly the detector
        self.ui.settings_tree.setVisible(False)
        self.set_setting_tree()
        self.settings.child('main_settings',
                            'controller_ID').setValue(controller_ID)

        QtWidgets.QApplication.processEvents()
        # #Connecting buttons:
        self.ui.Stage_type_combo.currentIndexChanged.connect(
            self.set_setting_tree)
        self.ui.Stage_type_combo.currentIndexChanged.connect(
            self.stage_changed)

        self.ui.Quit_pb.clicked.connect(self.quit_fun)
        self.ui.IniStage_pb.clicked.connect(self.ini_stage_fun)

        self.update_status("Ready", wait_time=self.wait_time)
        self.ui.Move_Abs_pb.clicked.connect(
            lambda: self.move_Abs(self.ui.Abs_position_sb.value()))
        self.ui.Move_Rel_plus_pb.clicked.connect(
            lambda: self.move_Rel(self.ui.Rel_position_sb.value()))
        self.ui.Move_Rel_minus_pb.clicked.connect(
            lambda: self.move_Rel(-self.ui.Rel_position_sb.value()))
        self.ui.Find_Home_pb.clicked.connect(self.move_Home)
        self.ui.Get_position_pb.clicked.connect(self.get_position)
        self.ui.Stop_pb.clicked.connect(self.stop_Motion)

        self.ui.parameters_pb.clicked.connect(self.show_settings)
        self.ui.fine_tuning_pb.clicked.connect(self.show_fine_tuning)
        self.ui.Abs_position_sb.valueChanged.connect(
            self.ui.Abs_position_sb_bis.setValue)
        self.ui.Abs_position_sb_bis.valueChanged.connect(
            self.ui.Abs_position_sb.setValue)
        self.ui.Moveto_pb_bis.clicked.connect(
            lambda: self.move_Abs(self.ui.Abs_position_sb_bis.value()))

        # set managers options
        if preset is not None:
            for preset_dict in preset:
                # fo instance preset_dict=dict(object='Stage_type_combo',method='setCurrentIndex',value=1)
                if hasattr(self.ui, preset_dict['object']):
                    obj = getattr(self.ui, preset_dict['object'])
                    if hasattr(obj, preset_dict['method']):
                        setattr(obj, preset_dict['method'],
                                preset_dict['value'])
            QtWidgets.QApplication.processEvents()
        # initialize the controller if init=True
        if init:
            self.ui.IniStage_pb.click()
from pymodaq.daq_utils.plotting.qled import QLED
from pymodaq.daq_utils.managers.preset_manager import PresetManager
from pyqtgraph.dockarea import Dock

from pymodaq.daq_utils.daq_utils import ThreadCommand, set_param_from_param, getLineInfo, set_logger, get_module_name, get_set_pid_path
import importlib
from simple_pid import PID
import time
import datetime
from pymodaq.daq_viewer.daq_viewer_main import DAQ_Viewer
from pymodaq.daq_move.daq_move_main import DAQ_Move
import numpy as np
from collections import OrderedDict
from pymodaq.daq_utils.pid.pid_params import params

logger = set_logger(get_module_name(__file__), __name__ == '__main__')

class DAQ_PID(QObject):
    """
    """
    log_signal = pyqtSignal(str)
    #look for eventual model files
    command_pid = pyqtSignal(ThreadCommand)
    command_stage = pyqtSignal(ThreadCommand)
    move_done_signal = pyqtSignal(str, float)

    models = []
    try:
        model_mod = importlib.import_module('pymodaq_pid_models')
        for ind_file, entry in enumerate(os.scandir(os.path.join(model_mod.__path__[0], 'models'))):
            if not entry.is_dir() and entry.name != '__init__.py':
Beispiel #9
0
try:  #in a try statement for compilation on readthedocs server but if this fail, you cannot use the code
    from pymodaq.daq_utils import daq_utils as utils
    logger = utils.set_logger('pymodaq', True, True)
except:
    print("Couldn't create the local folder to store logs , presets...")