예제 #1
0
    def update_derivative(self, index):
        """
        Recalculates the derivative at index and overwrites the data at that index.
        Recursively does this for all following derivatives because they all changed
        because they are all dependent on the previous dataset.
        Recursion will stop once the index of the derivative data does not exist

        Parameters
        ----------
        index : int
            The index of the derivative data.

        Returns
        -------
        None.

        """
        if index in self.config_btns.keys():
            x_dataset = []
            y_dataset = []
            for x, y in zip(self.x_datasets[index - 1],
                            self.y_datasets[index - 1]):
                x_data, y_data = data_analysis.derivative(
                    x, y, **self.config_btns[index][1])
                x_dataset.append(x_data)
                y_dataset.append(y_data)

            self.x_datasets[index] = x_dataset
            self.y_datasets[index] = y_dataset
            self.plot_updates.append(self.__get_matrix_coordinates(index))

            self.update_derivative(index +
                                   1)  # update all following derivative graphs
예제 #2
0
    def new_derivative(self, _):
        """
        Button callback for adding a new (derivative). This looks at the last dataset
        present and differentiates it. It then makes a new figure with new
        dimensions so that the derivative graph will be displayed.

        Parameters
        ----------
        _ : any (not used)
            Necessary so that it is the proper architechture for a callback function.

        Returns
        -------
        None.

        """
        x_dataset = []
        y_dataset = []
        for x, y in zip(self.x_datasets[-1], self.y_datasets[-1]):
            x_data, y_data = data_analysis.derivative(x, y)
            x_dataset.append(x_data)
            y_dataset.append(y_data)

        self.allow_exit = False
        with self.mainloop_lock:
            plt.close(self.figure)
            self.new_figure(self.fig_rows, self.fig_columns + 1)
            self.add_derivative_dataset(x_dataset, y_dataset,
                                        self.labels_dataset[-1])
        self.allow_exit = True
    def update_plot_data(self, index):
        """
        Recalculates the derivative at index and overwrites the data at that index.
        Recursively does this for all following derivatives because they all changed
        because they are all dependent on the previous dataset.
        Recursion will stop once the index of the derivative data does not exist

        Parameters
        ----------
        index : int
            The index of the derivative data.

        Returns
        -------
        None.

        """
        if index < len(self.x_datasets) and index > 0:
            x_dataset = []
            y_dataset = []
            for x, y in zip(self.x_datasets[index - 1],
                            self.y_datasets[index - 1]):
                x_data, y_data = data_analysis.derivative(x, y)
                if self.plot_configurations[index]["smooth"]:
                    x_data, y_data = data_analysis.smooth_dataset(
                        x_data, y_data, **self.plot_configurations[index])
                x_dataset.append(x_data)
                y_dataset.append(y_data)

            self.x_datasets[index] = x_dataset
            self.y_datasets[index] = y_dataset
            self.plots_changed.append(index)

            self.update_plot_data(index +
                                  1)  # update all following derivative graphs

        elif index == 0:
            x_dataset = []
            y_dataset = []
            for i, dataset in enumerate(
                    zip(self.x_datasets[0], self.y_datasets[0])):
                x_data = self.original_x[0][i]
                y_data = self.original_y[0][i]
                if self.plot_configurations[index]["smooth"]:
                    x_data, y_data = data_analysis.smooth_dataset(
                        x_data, y_data, **self.plot_configurations[0])

                x_dataset.append(x_data)
                y_dataset.append(y_data)

            self.x_datasets[0] = x_dataset
            self.y_datasets[0] = y_dataset
            self.plots_changed.append(0)

            self.update_plot_data(index +
                                  1)  # update all following derivative graphs
    def new_derivative(self):
        """
        Creates a new derivative of the dataset

        Returns
        -------
        None.

        """
        x_dataset = []
        y_dataset = []
        for x, y in zip(self.x_datasets[-1], self.y_datasets[-1]):
            x_data, y_data = data_analysis.derivative(x, y)
            x_dataset.append(x_data)
            y_dataset.append(y_data)

        self.add_dataset(x_dataset, y_dataset, self.labels_dataset[-1])
예제 #5
0
    9046,
    9385,
    9668,
    9889,
    10164,
    10464,
    10700,
    11101,
    11373,
    11674,
    11771,
    12086,
    ]
print(len(y_data))
x_data = range(20, len(y_data) + 20)
x, y = data_analysis.derivative(x_data, y_data, smooth=False, iters=1)
x1, y1 = data_analysis.derivative(x_data, y_data, smooth=True, iters=1)

# interp = scipy.interpolate.interp1d(x_data, y_data, kind="linear")
# x_interp = []
# y_interp = []
# for i in range(x_data[0], len(x_data) - 1):
#     x_interp.append(i)
#     y_interp.append(interp(i))

# dx = np.diff(x_interp)
# dy = np.diff(y_interp) / dx

figure, axes = plt.subplots(2, 1, squeeze=False)
axes[0, 0].plot(x, y, color="red")
axes[1, 0].plot(x1, y1, color="red")