Skip to content

Motion parameters

Class documentation

Bases: QWidget

A class representing a widget for displaying motion parameters.

Attributes:

Name Type Description
graphWidget_pos_primary PlotWidget

Widget for displaying primary axis position graph.

graphWidget_error_primary PlotWidget

Widget for displaying primary axis error graph.

graphWidget_pos_secondary PlotWidget

Widget for displaying secondary axis position graph.

graphWidget_error_secondary PlotWidget

Widget for displaying secondary axis error graph.

data_line_pos_primary PlotDataItem

Data line for primary axis position graph.

data_line_error_primary PlotDataItem

Data line for primary axis error graph.

data_line_pos_secondary PlotDataItem

Data line for secondary axis position graph.

data_line_error_secondary PlotDataItem

Data line for secondary axis error graph.

pos_primary list

List to store primary axis position data.

error_primary list

List to store primary axis error data.

pos_secondary list

List to store secondary axis position data.

error_secondary list

List to store secondary axis error data.

Source code in GUI.py
class MotionParams(QWidget):
    """
    A class representing a widget for displaying motion parameters.

    Attributes:
        graphWidget_pos_primary (PlotWidget): Widget for displaying primary axis position graph.
        graphWidget_error_primary (PlotWidget): Widget for displaying primary axis error graph.
        graphWidget_pos_secondary (PlotWidget): Widget for displaying secondary axis position graph.
        graphWidget_error_secondary (PlotWidget): Widget for displaying secondary axis error graph.
        data_line_pos_primary (PlotDataItem): Data line for primary axis position graph.
        data_line_error_primary (PlotDataItem): Data line for primary axis error graph.
        data_line_pos_secondary (PlotDataItem): Data line for secondary axis position graph.
        data_line_error_secondary (PlotDataItem): Data line for secondary axis error graph.
        pos_primary (list): List to store primary axis position data.
        error_primary (list): List to store primary axis error data.
        pos_secondary (list): List to store secondary axis position data.
        error_secondary (list): List to store secondary axis error data.

    """
    def __init__(self):
        """

        Initialize the MotionParams widget.

        """
        super(MotionParams, self).__init__()
        loadUi("ui_files/MotionParameter.ui", self)
        self.findChild(QWidget, "motion_parameters")

        #Initiating graph         
        self.graphWidget = pg.PlotWidget()
        self.pos_primary.addWidget(self.graphWidget)

        pen = pg.mkPen(color=(255, 0, 0))
        self.data_line_pos_primary = self.graphWidget.plot([], [], pen=pen,symbol="+",symbolSize=10,symbolBrush="b")
        self.graphWidget.setBackground("w")
        self.graphWidget.setLabel("left", "<span style=\"color:black;font-size:11px\">Primary position [deg]</span>")
        self.graphWidget.setLabel("bottom", "<span style=\"color:black;font-size:11px\">Time [UTC + 1]</span>")
        self.graphWidget.showGrid(x=True, y=True)

        #Initiating graph         
        self.graphWidget = pg.PlotWidget()
        self.error_pri.addWidget(self.graphWidget)

        pen = pg.mkPen(color=(255, 0, 0))
        self.data_line_error_pri = self.graphWidget.plot([], [], pen=pen,symbol="+",symbolSize=10,symbolBrush="b")
        self.graphWidget.setBackground("w")
        self.graphWidget.setLabel("left", "<span style=\"color:black;font-size:11px\">Error passive PRI [deg]</span>")
        self.graphWidget.setLabel("bottom", "<span style=\"color:black;font-size:11px\">Time [UTC + 1]</span>")
        self.graphWidget.showGrid(x=True, y=True)

        #Initiating graph         
        self.graphWidget = pg.PlotWidget()
        self.pos_secondary.addWidget(self.graphWidget)

        pen = pg.mkPen(color=(255, 0, 0))
        self.data_line_pos_secondary = self.graphWidget.plot([], [], pen=pen,symbol="+",symbolSize=10,symbolBrush="b")
        self.graphWidget.setBackground("w")
        self.graphWidget.setLabel("left", "<span style=\"color:black;font-size:11px\">Secondary position [deg]</span>")
        self.graphWidget.setLabel("bottom", "<span style=\"color:black;font-size:11px\">Time [UTC + 1]</span>")
        self.graphWidget.showGrid(x=True, y=True)

        #Initiating graph         
        self.graphWidget = pg.PlotWidget()
        self.error_sec.addWidget(self.graphWidget)

        pen = pg.mkPen(color=(255, 0, 0))
        self.data_line_error_sec= self.graphWidget.plot([], [], pen=pen,symbol="+",symbolSize=10,symbolBrush="b")
        self.graphWidget.setBackground("w")
        self.graphWidget.setLabel("left", "<span style=\"color:black;font-size:11px\">Error passive SEC [deg]</span>")
        self.graphWidget.setLabel("bottom", "<span style=\"color:black;font-size:11px\">Time [UTC + 1]</span>")
        self.graphWidget.showGrid(x=True, y=True)

        self.pos_primary = []
        self.error_pri = []
        self.pos_secondary = []
        self.error_sec = []

    def update_motion_plot(self, t, pos, error):
        """
        Update the motion parameters graphs with new data.

        Args:
            t (list): List of time values.
            pos (dict): Dictionary containing position data for primary and secondary axes.
            error (dict): Dictionary containing error data for primary and secondary axes.
        """
        self.pos_primary.append(pos['A'])
        if len(self.pos_primary) == 100:
            self.pos_primary = self.pos_primary[1:]
        self.data_line_pos_primary.setData(t,self.pos_primary)

        self.error_pri.append(error['DA'])
        if len(self.error_pri) == 100:
            self.error_pri = self.error_pri[1:]
        self.data_line_error_pri.setData(t,self.error_pri)

        self.pos_secondary.append(pos['E'])
        if len(self.pos_secondary) == 100:
            self.pos_secondary = self.pos_secondary[1:]
        self.data_line_pos_secondary.setData(t,self.pos_secondary)

        self.error_sec.append(error['DE'])
        if len(self.error_sec) == 100:
            self.error_sec = self.error_sec[1:]
        self.data_line_error_sec.setData(t,self.error_sec)

__init__()

Initialize the MotionParams widget.

Source code in GUI.py
def __init__(self):
    """

    Initialize the MotionParams widget.

    """
    super(MotionParams, self).__init__()
    loadUi("ui_files/MotionParameter.ui", self)
    self.findChild(QWidget, "motion_parameters")

    #Initiating graph         
    self.graphWidget = pg.PlotWidget()
    self.pos_primary.addWidget(self.graphWidget)

    pen = pg.mkPen(color=(255, 0, 0))
    self.data_line_pos_primary = self.graphWidget.plot([], [], pen=pen,symbol="+",symbolSize=10,symbolBrush="b")
    self.graphWidget.setBackground("w")
    self.graphWidget.setLabel("left", "<span style=\"color:black;font-size:11px\">Primary position [deg]</span>")
    self.graphWidget.setLabel("bottom", "<span style=\"color:black;font-size:11px\">Time [UTC + 1]</span>")
    self.graphWidget.showGrid(x=True, y=True)

    #Initiating graph         
    self.graphWidget = pg.PlotWidget()
    self.error_pri.addWidget(self.graphWidget)

    pen = pg.mkPen(color=(255, 0, 0))
    self.data_line_error_pri = self.graphWidget.plot([], [], pen=pen,symbol="+",symbolSize=10,symbolBrush="b")
    self.graphWidget.setBackground("w")
    self.graphWidget.setLabel("left", "<span style=\"color:black;font-size:11px\">Error passive PRI [deg]</span>")
    self.graphWidget.setLabel("bottom", "<span style=\"color:black;font-size:11px\">Time [UTC + 1]</span>")
    self.graphWidget.showGrid(x=True, y=True)

    #Initiating graph         
    self.graphWidget = pg.PlotWidget()
    self.pos_secondary.addWidget(self.graphWidget)

    pen = pg.mkPen(color=(255, 0, 0))
    self.data_line_pos_secondary = self.graphWidget.plot([], [], pen=pen,symbol="+",symbolSize=10,symbolBrush="b")
    self.graphWidget.setBackground("w")
    self.graphWidget.setLabel("left", "<span style=\"color:black;font-size:11px\">Secondary position [deg]</span>")
    self.graphWidget.setLabel("bottom", "<span style=\"color:black;font-size:11px\">Time [UTC + 1]</span>")
    self.graphWidget.showGrid(x=True, y=True)

    #Initiating graph         
    self.graphWidget = pg.PlotWidget()
    self.error_sec.addWidget(self.graphWidget)

    pen = pg.mkPen(color=(255, 0, 0))
    self.data_line_error_sec= self.graphWidget.plot([], [], pen=pen,symbol="+",symbolSize=10,symbolBrush="b")
    self.graphWidget.setBackground("w")
    self.graphWidget.setLabel("left", "<span style=\"color:black;font-size:11px\">Error passive SEC [deg]</span>")
    self.graphWidget.setLabel("bottom", "<span style=\"color:black;font-size:11px\">Time [UTC + 1]</span>")
    self.graphWidget.showGrid(x=True, y=True)

    self.pos_primary = []
    self.error_pri = []
    self.pos_secondary = []
    self.error_sec = []

update_motion_plot(t, pos, error)

Update the motion parameters graphs with new data.

Parameters:

Name Type Description Default
t list

List of time values.

required
pos dict

Dictionary containing position data for primary and secondary axes.

required
error dict

Dictionary containing error data for primary and secondary axes.

required
Source code in GUI.py
def update_motion_plot(self, t, pos, error):
    """
    Update the motion parameters graphs with new data.

    Args:
        t (list): List of time values.
        pos (dict): Dictionary containing position data for primary and secondary axes.
        error (dict): Dictionary containing error data for primary and secondary axes.
    """
    self.pos_primary.append(pos['A'])
    if len(self.pos_primary) == 100:
        self.pos_primary = self.pos_primary[1:]
    self.data_line_pos_primary.setData(t,self.pos_primary)

    self.error_pri.append(error['DA'])
    if len(self.error_pri) == 100:
        self.error_pri = self.error_pri[1:]
    self.data_line_error_pri.setData(t,self.error_pri)

    self.pos_secondary.append(pos['E'])
    if len(self.pos_secondary) == 100:
        self.pos_secondary = self.pos_secondary[1:]
    self.data_line_pos_secondary.setData(t,self.pos_secondary)

    self.error_sec.append(error['DE'])
    if len(self.error_sec) == 100:
        self.error_sec = self.error_sec[1:]
    self.data_line_error_sec.setData(t,self.error_sec)