Skip to content

4Q Data

Class documentation

Bases: QWidget

A class representing a widget for displaying 4Q position parameters.

Attributes:

Name Type Description
graphWidget_primary PlotWidget

Widget for displaying primary axis position graph.

graphWidget_secondary PlotWidget

Widget for displaying secondary axis position graph.

data_line_primary PlotDataItem

Data line for primary axis position graph.

data_line_secondary PlotDataItem

Data line for secondary axis position graph.

x_axis list

List to store primary axis position data.

y_axis list

List to store secondary axis position data.

Source code in GUI.py
class FourQ(QWidget):
    """
    A class representing a widget for displaying 4Q position parameters.

    Attributes:
        graphWidget_primary (PlotWidget): Widget for displaying primary axis position graph.
        graphWidget_secondary (PlotWidget): Widget for displaying secondary axis position graph.
        data_line_primary (PlotDataItem): Data line for primary axis position graph.
        data_line_secondary (PlotDataItem): Data line for secondary axis position graph.
        x_axis (list): List to store primary axis position data.
        y_axis (list): List to store secondary axis position data.
    """

    def __init__(self):
        """

        Initialize the FourQ widget.

        """
        super(FourQ, self).__init__()
        loadUi("ui_files/4QParameters.ui", self)
        self.findChild(QWidget, "fourq_parameters")

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

        pen = pg.mkPen(color=(255, 0, 0))
        self.data_line_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\">4Q Position primary axis [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.secondary_axis.addWidget(self.graphWidget)

        pen = pg.mkPen(color=(255, 0, 0))
        self.data_line_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\">4Q Position secondary axis [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.x_axis = []
        self.y_axis = []    
    def update_fourq_plot(self, t, pos):
        """
        Update the position graphs with new data.

        Args:
            t (list): List of time values.
            pos (dict): Dictionary containing 4Q position data for primary and secondary axes.
        """
        self.x_axis.append(pos['FQ'][0])
        if len(self.x_axis) == 100:
            self.x_axis= self.x_axis[1:]
        self.data_line_primary.setData(t,self.x_axis)

        self.y_axis.append(pos['FQ'][1])
        if len(self.y_axis) == 100:
            self.y_axis= self.y_axis[1:]
        self.data_line_secondary.setData(t,self.y_axis)

__init__()

Initialize the FourQ widget.

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

    Initialize the FourQ widget.

    """
    super(FourQ, self).__init__()
    loadUi("ui_files/4QParameters.ui", self)
    self.findChild(QWidget, "fourq_parameters")

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

    pen = pg.mkPen(color=(255, 0, 0))
    self.data_line_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\">4Q Position primary axis [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.secondary_axis.addWidget(self.graphWidget)

    pen = pg.mkPen(color=(255, 0, 0))
    self.data_line_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\">4Q Position secondary axis [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.x_axis = []
    self.y_axis = []    

update_fourq_plot(t, pos)

Update the position graphs with new data.

Parameters:

Name Type Description Default
t list

List of time values.

required
pos dict

Dictionary containing 4Q position data for primary and secondary axes.

required
Source code in GUI.py
def update_fourq_plot(self, t, pos):
    """
    Update the position graphs with new data.

    Args:
        t (list): List of time values.
        pos (dict): Dictionary containing 4Q position data for primary and secondary axes.
    """
    self.x_axis.append(pos['FQ'][0])
    if len(self.x_axis) == 100:
        self.x_axis= self.x_axis[1:]
    self.data_line_primary.setData(t,self.x_axis)

    self.y_axis.append(pos['FQ'][1])
    if len(self.y_axis) == 100:
        self.y_axis= self.y_axis[1:]
    self.data_line_secondary.setData(t,self.y_axis)