feat: добавлены "Распределения" (#116)

Closes #110 
Closes #111
Closes #112
This commit is contained in:
Maxim Slipenko 2024-02-11 21:09:52 +03:00 committed by GitHub
parent ded55cb5d7
commit 981580f46d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 285 additions and 212 deletions

View File

@ -144,7 +144,6 @@ dependencies:
- pyyaml==6.0.1 - pyyaml==6.0.1
- setuptools-scm==8.0.4 - setuptools-scm==8.0.4
- six==1.16.0 - six==1.16.0
- statapp==0.10.2
- sympy==1.12 - sympy==1.12
- tomli==2.0.1 - tomli==2.0.1
- tomlkit==0.12.1 - tomlkit==0.12.1

View File

@ -0,0 +1,86 @@
import numpy as np
from PySide2.QtWidgets import QDialog, QVBoxLayout, QComboBox
from statapp.polynoms.polynom_window import MplCanvas
from statapp.utils import addIcon
from statapp.models.utils import yxHeader
class DistributionWindow(QDialog):
def __init__(self, title: str, data: np.ndarray):
super().__init__()
self.setWindowTitle(title)
addIcon(self)
self.layout = QVBoxLayout()
self.setLayout(self.layout)
self.data = data
self.values = yxHeader(data.shape[1])
self.comboBox = QComboBox()
self.comboBox.addItems(self.values)
self.comboBox.currentIndexChanged.connect(self.onChange)
self.sc = self.getSc(data[:, 0])
self.layout.addWidget(self.comboBox)
self.l = QVBoxLayout()
self.l.addWidget(self.sc)
self.layout.addLayout(self.l)
def onChange(self):
while ((child := self.l.takeAt(0)) != None):
child.widget().deleteLater()
self.sc = self.getSc(self.data[:, self.comboBox.currentIndex()])
self.l.addWidget(self.sc)
class UniformDistributionWindow(DistributionWindow):
def __init__(self, data: np.array):
super().__init__("Равномерное распределение", data)
def getSc(self, points):
sc = MplCanvas(self, width=5, height=4, dpi=100)
points = np.sort(points)
points = np.array(
[points[0]] +
[pt for pt, next_pt in zip(points[:-1], points[1:]) if pt != next_pt]
)
differences = np.diff(points)
inverseDifferences = 1 / differences
for i, (start, end) in enumerate(zip(points[:-1], points[1:])):
sc.axes.hlines(inverseDifferences[i], start, end, colors='r', linestyles='solid')
return sc
def normalDensity(x, mu, sigmaSquared):
return 1 / np.sqrt(2 * np.pi * sigmaSquared) * np.exp(-(x - mu) ** 2 / (2 * sigmaSquared))
class NormalDistributionWindow(DistributionWindow):
def __init__(self, data: np.array):
super().__init__("Нормальное распределение", data)
def getSc(self, points):
sc = MplCanvas(self, width=5, height=4, dpi=100)
points = np.sort(points)
mu = np.mean(points)
sigmaSquared = np.var(points)
yValues = normalDensity(points, mu, sigmaSquared)
sc.axes.plot(points, yValues)
return sc
class ExponentialDistributionWindow(DistributionWindow):
def __init__(self, data: np.array):
super().__init__("Экспоненциальное распределение", data)
def getSc(self, points):
sc = MplCanvas(self, width=5, height=4, dpi=100)
points = np.sort(points)
mu = np.mean(points)
lambdaParam = 1 / mu
yValues = lambdaParam * np.exp(-lambdaParam * points)
sc.axes.plot(points, yValues)
return sc

View File

@ -24,6 +24,8 @@ from PySide2.QtWidgets import QMainWindow, QMessageBox, QAction, QMenu
from statapp.calculations import generateXValues, generateYValues from statapp.calculations import generateXValues, generateYValues
from statapp.constants import NUMBERS_PRECISION from statapp.constants import NUMBERS_PRECISION
from statapp.distribution_window import NormalDistributionWindow, UniformDistributionWindow, \
ExponentialDistributionWindow
from statapp.generate_factor_window import GenerateFactorWindow from statapp.generate_factor_window import GenerateFactorWindow
from statapp.polynoms.linear_polynom_window import LinearPolynomWindow from statapp.polynoms.linear_polynom_window import LinearPolynomWindow
from statapp.mathtex_header_view import MathTexHeaderView from statapp.mathtex_header_view import MathTexHeaderView
@ -257,6 +259,30 @@ class MainWindow(QMainWindow):
except Exception as error: except Exception as error:
onError(error) onError(error)
@Slot()
def on_uniformDistributionAction_triggered(self):
try:
dw = UniformDistributionWindow(self.model.getData())
dw.exec()
except Exception as error:
onError(error)
@Slot()
def on_normalDistributionAction_triggered(self):
try:
dw = NormalDistributionWindow(self.model.getData())
dw.exec()
except Exception as error:
onError(error)
@Slot()
def on_exponentialDistributionAction_triggered(self):
try:
dw = ExponentialDistributionWindow(self.model.getData())
dw.exec()
except Exception as error:
onError(error)
def closeEvent(self, event): def closeEvent(self, event):
if self.isDataChanged: if self.isDataChanged:
file = '' file = ''

View File

@ -74,10 +74,6 @@ class PolynomWindow(QDialog):
realY = predictionResult[:, 0] realY = predictionResult[:, 0]
calculatedY = predictionResult[:, 1] calculatedY = predictionResult[:, 1]
print(xAxes)
print(realY)
print(calculatedY)
sc.axes.scatter(xAxes, realY) sc.axes.scatter(xAxes, realY)
# xnew = np.linspace(xAxes.min(), xAxes.max(), 300) # xnew = np.linspace(xAxes.min(), xAxes.max(), 300)

View File

@ -87,7 +87,6 @@ class TransformPolynomWindow(QDialog):
def on_data_changed(self): def on_data_changed(self):
data = np.copy(self.data) data = np.copy(self.data)
print(len(data[0:]))
for i in range(len(data[0:])): for i in range(len(data[0:])):
for j in range(1, len(data[i])): for j in range(1, len(data[i])):
tr = self.model.data(self.model.createIndex(j, 0), Qt.DisplayRole) tr = self.model.data(self.model.createIndex(j, 0), Qt.DisplayRole)

View File

@ -101,15 +101,6 @@
<pointsize>12</pointsize> <pointsize>12</pointsize>
</font> </font>
</property> </property>
<property name="editable">
<bool>false</bool>
</property>
<property name="currentText">
<string/>
</property>
<property name="placeholderText">
<string/>
</property>
</widget> </widget>
</item> </item>
</layout> </layout>

View File

@ -40,7 +40,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>800</width> <width>800</width>
<height>22</height> <height>29</height>
</rect> </rect>
</property> </property>
<widget class="QMenu" name="filemenu"> <widget class="QMenu" name="filemenu">
@ -80,10 +80,19 @@
<addaction name="usageaction"/> <addaction name="usageaction"/>
<addaction name="aboutmenuaction"/> <addaction name="aboutmenuaction"/>
</widget> </widget>
<widget class="QMenu" name="menu">
<property name="title">
<string>Распределения</string>
</property>
<addaction name="uniformDistributionAction"/>
<addaction name="normalDistributionAction"/>
<addaction name="exponentialDistributionAction"/>
</widget>
<addaction name="filemenu"/> <addaction name="filemenu"/>
<addaction name="generatemenu"/> <addaction name="generatemenu"/>
<addaction name="analyzemenu"/> <addaction name="analyzemenu"/>
<addaction name="modelmenu"/> <addaction name="modelmenu"/>
<addaction name="menu"/>
<addaction name="helpmenu"/> <addaction name="helpmenu"/>
</widget> </widget>
<widget class="QStatusBar" name="statusbar"/> <widget class="QStatusBar" name="statusbar"/>
@ -147,6 +156,21 @@
<string>Использование</string> <string>Использование</string>
</property> </property>
</action> </action>
<action name="uniformDistributionAction">
<property name="text">
<string>Равномерное</string>
</property>
</action>
<action name="normalDistributionAction">
<property name="text">
<string>Нормальное</string>
</property>
</action>
<action name="exponentialDistributionAction">
<property name="text">
<string>Экспоненциальное</string>
</property>
</action>
</widget> </widget>
<resources/> <resources/>
<connections/> <connections/>

View File

@ -1,111 +1,78 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
#
# Copyright (c) 2024 Maxim Slipenko, Eugene Lazurenko.
#
# This file is part of Statapp
# (see https://github.com/shizand/statapp).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# Form implementation generated from reading ui file 'statapp/ui/generate_factor_window.ui',
# licensing of 'statapp/ui/generate_factor_window.ui' applies.
#
# Created: Sun Feb 11 18:12:25 2024
# by: pyside2-uic running on PySide2 5.13.2
#
# WARNING! All changes made in this file will be lost!
################################################################################ from PySide2 import QtCore, QtGui, QtWidgets
## Form generated from reading UI file 'generate_factor_window.ui'
##
## Created by: Qt User Interface Compiler version 5.15.2
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
class Ui_GenerateFactorWindow(object): class Ui_GenerateFactorWindow(object):
def setupUi(self, GenerateFactorWindow): def setupUi(self, GenerateFactorWindow):
if not GenerateFactorWindow.objectName(): GenerateFactorWindow.setObjectName("GenerateFactorWindow")
GenerateFactorWindow.setObjectName(u"GenerateFactorWindow")
GenerateFactorWindow.resize(503, 193) GenerateFactorWindow.resize(503, 193)
self.gridLayout_2 = QGridLayout(GenerateFactorWindow) self.gridLayout_2 = QtWidgets.QGridLayout(GenerateFactorWindow)
self.gridLayout_2.setObjectName(u"gridLayout_2") self.gridLayout_2.setObjectName("gridLayout_2")
self.gridLayout = QGridLayout() self.gridLayout = QtWidgets.QGridLayout()
self.gridLayout.setObjectName(u"gridLayout") self.gridLayout.setObjectName("gridLayout")
self.label = QLabel(GenerateFactorWindow) self.label = QtWidgets.QLabel(GenerateFactorWindow)
self.label.setObjectName(u"label") font = QtGui.QFont()
font = QFont()
font.setPointSize(12) font.setPointSize(12)
self.label.setFont(font) self.label.setFont(font)
self.label.setObjectName("label")
self.gridLayout.addWidget(self.label, 0, 0, 1, 1) self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
self.label_3 = QtWidgets.QLabel(GenerateFactorWindow)
self.label_3 = QLabel(GenerateFactorWindow) font = QtGui.QFont()
self.label_3.setObjectName(u"label_3") font.setPointSize(12)
self.label_3.setFont(font) self.label_3.setFont(font)
self.label_3.setObjectName("label_3")
self.gridLayout.addWidget(self.label_3, 2, 0, 1, 1) self.gridLayout.addWidget(self.label_3, 2, 0, 1, 1)
self.generatePushButton = QtWidgets.QPushButton(GenerateFactorWindow)
self.generatePushButton = QPushButton(GenerateFactorWindow) font = QtGui.QFont()
self.generatePushButton.setObjectName(u"generatePushButton") font.setPointSize(12)
self.generatePushButton.setFont(font) self.generatePushButton.setFont(font)
self.generatePushButton.setObjectName("generatePushButton")
self.gridLayout.addWidget(self.generatePushButton, 3, 0, 1, 2) self.gridLayout.addWidget(self.generatePushButton, 3, 0, 1, 2)
self.label_2 = QtWidgets.QLabel(GenerateFactorWindow)
self.label_2 = QLabel(GenerateFactorWindow) font = QtGui.QFont()
self.label_2.setObjectName(u"label_2") font.setPointSize(12)
self.label_2.setFont(font) self.label_2.setFont(font)
self.label_2.setObjectName("label_2")
self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1) self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)
self.matSpinBox = QtWidgets.QDoubleSpinBox(GenerateFactorWindow)
self.matSpinBox = QDoubleSpinBox(GenerateFactorWindow) font = QtGui.QFont()
self.matSpinBox.setObjectName(u"matSpinBox") font.setPointSize(12)
self.matSpinBox.setFont(font) self.matSpinBox.setFont(font)
self.matSpinBox.setDecimals(5) self.matSpinBox.setDecimals(5)
self.matSpinBox.setMaximum(1000000.000000000000000) self.matSpinBox.setMaximum(1000000.0)
self.matSpinBox.setObjectName("matSpinBox")
self.gridLayout.addWidget(self.matSpinBox, 1, 1, 1, 1) self.gridLayout.addWidget(self.matSpinBox, 1, 1, 1, 1)
self.deviationSpinBox = QtWidgets.QDoubleSpinBox(GenerateFactorWindow)
self.deviationSpinBox = QDoubleSpinBox(GenerateFactorWindow) font = QtGui.QFont()
self.deviationSpinBox.setObjectName(u"deviationSpinBox") font.setPointSize(12)
self.deviationSpinBox.setFont(font) self.deviationSpinBox.setFont(font)
self.deviationSpinBox.setDecimals(5) self.deviationSpinBox.setDecimals(5)
self.deviationSpinBox.setMaximum(1000000.000000000000000) self.deviationSpinBox.setMaximum(1000000.0)
self.deviationSpinBox.setObjectName("deviationSpinBox")
self.gridLayout.addWidget(self.deviationSpinBox, 2, 1, 1, 1) self.gridLayout.addWidget(self.deviationSpinBox, 2, 1, 1, 1)
self.typeComboBox = QtWidgets.QComboBox(GenerateFactorWindow)
self.typeComboBox = QComboBox(GenerateFactorWindow) font = QtGui.QFont()
self.typeComboBox.setObjectName(u"typeComboBox") font.setPointSize(12)
self.typeComboBox.setFont(font) self.typeComboBox.setFont(font)
self.typeComboBox.setEditable(False) self.typeComboBox.setObjectName("typeComboBox")
self.gridLayout.addWidget(self.typeComboBox, 0, 1, 1, 1) self.gridLayout.addWidget(self.typeComboBox, 0, 1, 1, 1)
self.gridLayout_2.addLayout(self.gridLayout, 0, 0, 1, 1) self.gridLayout_2.addLayout(self.gridLayout, 0, 0, 1, 1)
self.retranslateUi(GenerateFactorWindow) self.retranslateUi(GenerateFactorWindow)
QtCore.QMetaObject.connectSlotsByName(GenerateFactorWindow)
QMetaObject.connectSlotsByName(GenerateFactorWindow)
# setupUi
def retranslateUi(self, GenerateFactorWindow): def retranslateUi(self, GenerateFactorWindow):
GenerateFactorWindow.setWindowTitle(QCoreApplication.translate("GenerateFactorWindow", u"\u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432", None)) GenerateFactorWindow.setWindowTitle(QtWidgets.QApplication.translate("GenerateFactorWindow", "Генерация факторов", None, -1))
self.label.setText(QCoreApplication.translate("GenerateFactorWindow", u"\u0422\u0438\u043f \u0441\u0432\u044f\u0437\u0438", None)) self.label.setText(QtWidgets.QApplication.translate("GenerateFactorWindow", "Тип связи", None, -1))
self.label_3.setText(QCoreApplication.translate("GenerateFactorWindow", u"\u0421\u0440\u0435\u0434\u043d\u0435\u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u0447\u043d\u043e\u0435 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0435", None)) self.label_3.setText(QtWidgets.QApplication.translate("GenerateFactorWindow", "Среднеквадратичное отклонение", None, -1))
self.generatePushButton.setText(QCoreApplication.translate("GenerateFactorWindow", u"\u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c", None)) self.generatePushButton.setText(QtWidgets.QApplication.translate("GenerateFactorWindow", "Сгенерировать", None, -1))
self.label_2.setText(QCoreApplication.translate("GenerateFactorWindow", u"\u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435", None)) self.label_2.setText(QtWidgets.QApplication.translate("GenerateFactorWindow", "Математическое ожидание", None, -1))
self.typeComboBox.setCurrentText("")
self.typeComboBox.setPlaceholderText("")
# retranslateUi

View File

@ -1,107 +1,81 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
#
# Copyright (c) 2024 Maxim Slipenko, Eugene Lazurenko.
#
# This file is part of Statapp
# (see https://github.com/shizand/statapp).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# Form implementation generated from reading ui file 'statapp/ui/main_window.ui',
# licensing of 'statapp/ui/main_window.ui' applies.
#
# Created: Sun Feb 11 18:12:22 2024
# by: pyside2-uic running on PySide2 5.13.2
#
# WARNING! All changes made in this file will be lost!
################################################################################ from PySide2 import QtCore, QtGui, QtWidgets
## Form generated from reading UI file 'main_window.ui'
##
## Created by: Qt User Interface Compiler version 5.15.2
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
class Ui_MainWindow(object): class Ui_MainWindow(object):
def setupUi(self, MainWindow): def setupUi(self, MainWindow):
if not MainWindow.objectName(): MainWindow.setObjectName("MainWindow")
MainWindow.setObjectName(u"MainWindow")
MainWindow.resize(800, 600) MainWindow.resize(800, 600)
self.aboutmenuaction = QAction(MainWindow) self.centralwidget = QtWidgets.QWidget(MainWindow)
self.aboutmenuaction.setObjectName(u"aboutmenuaction") self.centralwidget.setObjectName("centralwidget")
self.generateYaction = QAction(MainWindow) self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
self.generateYaction.setObjectName(u"generateYaction") self.gridLayout.setObjectName("gridLayout")
self.generateXaction = QAction(MainWindow) self.label = QtWidgets.QLabel(self.centralwidget)
self.generateXaction.setObjectName(u"generateXaction") self.label.setAlignment(QtCore.Qt.AlignCenter)
self.openfileaction = QAction(MainWindow) self.label.setObjectName("label")
self.openfileaction.setObjectName(u"openfileaction")
self.savefileaction = QAction(MainWindow)
self.savefileaction.setObjectName(u"savefileaction")
self.closefileaction = QAction(MainWindow)
self.closefileaction.setObjectName(u"closefileaction")
self.varianceAnalysisAction = QAction(MainWindow)
self.varianceAnalysisAction.setObjectName(u"varianceAnalysisAction")
self.correlationAnalisisAction = QAction(MainWindow)
self.correlationAnalisisAction.setObjectName(u"correlationAnalisisAction")
self.linearPolynomAction = QAction(MainWindow)
self.linearPolynomAction.setObjectName(u"linearPolynomAction")
self.squaredPolynomAction = QAction(MainWindow)
self.squaredPolynomAction.setObjectName(u"squaredPolynomAction")
self.transformPolynomAction = QAction(MainWindow)
self.transformPolynomAction.setObjectName(u"transformPolynomAction")
self.usageaction = QAction(MainWindow)
self.usageaction.setObjectName(u"usageaction")
self.centralwidget = QWidget(MainWindow)
self.centralwidget.setObjectName(u"centralwidget")
self.gridLayout = QGridLayout(self.centralwidget)
self.gridLayout.setObjectName(u"gridLayout")
self.label = QLabel(self.centralwidget)
self.label.setObjectName(u"label")
self.label.setAlignment(Qt.AlignCenter)
self.gridLayout.addWidget(self.label, 0, 0, 1, 1) self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
self.tableView = QtWidgets.QTableView(self.centralwidget)
self.tableView = QTableView(self.centralwidget) self.tableView.setObjectName("tableView")
self.tableView.setObjectName(u"tableView")
self.tableView.verticalHeader().setVisible(False) self.tableView.verticalHeader().setVisible(False)
self.gridLayout.addWidget(self.tableView, 1, 0, 1, 1) self.gridLayout.addWidget(self.tableView, 1, 0, 1, 1)
MainWindow.setCentralWidget(self.centralwidget) MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QMenuBar(MainWindow) self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setObjectName(u"menubar") self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 29))
self.menubar.setGeometry(QRect(0, 0, 800, 22)) self.menubar.setObjectName("menubar")
self.filemenu = QMenu(self.menubar) self.filemenu = QtWidgets.QMenu(self.menubar)
self.filemenu.setObjectName(u"filemenu") self.filemenu.setObjectName("filemenu")
self.generatemenu = QMenu(self.menubar) self.generatemenu = QtWidgets.QMenu(self.menubar)
self.generatemenu.setObjectName(u"generatemenu") self.generatemenu.setObjectName("generatemenu")
self.analyzemenu = QMenu(self.menubar) self.analyzemenu = QtWidgets.QMenu(self.menubar)
self.analyzemenu.setObjectName(u"analyzemenu") self.analyzemenu.setObjectName("analyzemenu")
self.modelmenu = QMenu(self.menubar) self.modelmenu = QtWidgets.QMenu(self.menubar)
self.modelmenu.setObjectName(u"modelmenu") self.modelmenu.setObjectName("modelmenu")
self.helpmenu = QMenu(self.menubar) self.helpmenu = QtWidgets.QMenu(self.menubar)
self.helpmenu.setObjectName(u"helpmenu") self.helpmenu.setObjectName("helpmenu")
self.menu = QtWidgets.QMenu(self.menubar)
self.menu.setObjectName("menu")
MainWindow.setMenuBar(self.menubar) MainWindow.setMenuBar(self.menubar)
self.statusbar = QStatusBar(MainWindow) self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName(u"statusbar") self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar) MainWindow.setStatusBar(self.statusbar)
self.aboutmenuaction = QtWidgets.QAction(MainWindow)
self.menubar.addAction(self.filemenu.menuAction()) self.aboutmenuaction.setObjectName("aboutmenuaction")
self.menubar.addAction(self.generatemenu.menuAction()) self.generateYaction = QtWidgets.QAction(MainWindow)
self.menubar.addAction(self.analyzemenu.menuAction()) self.generateYaction.setObjectName("generateYaction")
self.menubar.addAction(self.modelmenu.menuAction()) self.generateXaction = QtWidgets.QAction(MainWindow)
self.menubar.addAction(self.helpmenu.menuAction()) self.generateXaction.setObjectName("generateXaction")
self.openfileaction = QtWidgets.QAction(MainWindow)
self.openfileaction.setObjectName("openfileaction")
self.savefileaction = QtWidgets.QAction(MainWindow)
self.savefileaction.setObjectName("savefileaction")
self.closefileaction = QtWidgets.QAction(MainWindow)
self.closefileaction.setObjectName("closefileaction")
self.varianceAnalysisAction = QtWidgets.QAction(MainWindow)
self.varianceAnalysisAction.setObjectName("varianceAnalysisAction")
self.correlationAnalisisAction = QtWidgets.QAction(MainWindow)
self.correlationAnalisisAction.setObjectName("correlationAnalisisAction")
self.linearPolynomAction = QtWidgets.QAction(MainWindow)
self.linearPolynomAction.setObjectName("linearPolynomAction")
self.squaredPolynomAction = QtWidgets.QAction(MainWindow)
self.squaredPolynomAction.setObjectName("squaredPolynomAction")
self.transformPolynomAction = QtWidgets.QAction(MainWindow)
self.transformPolynomAction.setObjectName("transformPolynomAction")
self.usageaction = QtWidgets.QAction(MainWindow)
self.usageaction.setObjectName("usageaction")
self.uniformDistributionAction = QtWidgets.QAction(MainWindow)
self.uniformDistributionAction.setObjectName("uniformDistributionAction")
self.normalDistributionAction = QtWidgets.QAction(MainWindow)
self.normalDistributionAction.setObjectName("normalDistributionAction")
self.exponentialDistributionAction = QtWidgets.QAction(MainWindow)
self.exponentialDistributionAction.setObjectName("exponentialDistributionAction")
self.filemenu.addAction(self.openfileaction) self.filemenu.addAction(self.openfileaction)
self.filemenu.addAction(self.savefileaction) self.filemenu.addAction(self.savefileaction)
self.filemenu.addAction(self.closefileaction) self.filemenu.addAction(self.closefileaction)
@ -114,30 +88,41 @@ class Ui_MainWindow(object):
self.modelmenu.addAction(self.transformPolynomAction) self.modelmenu.addAction(self.transformPolynomAction)
self.helpmenu.addAction(self.usageaction) self.helpmenu.addAction(self.usageaction)
self.helpmenu.addAction(self.aboutmenuaction) self.helpmenu.addAction(self.aboutmenuaction)
self.menu.addAction(self.uniformDistributionAction)
self.menu.addAction(self.normalDistributionAction)
self.menu.addAction(self.exponentialDistributionAction)
self.menubar.addAction(self.filemenu.menuAction())
self.menubar.addAction(self.generatemenu.menuAction())
self.menubar.addAction(self.analyzemenu.menuAction())
self.menubar.addAction(self.modelmenu.menuAction())
self.menubar.addAction(self.menu.menuAction())
self.menubar.addAction(self.helpmenu.menuAction())
self.retranslateUi(MainWindow) self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
QMetaObject.connectSlotsByName(MainWindow)
# setupUi
def retranslateUi(self, MainWindow): def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435", None)) MainWindow.setWindowTitle(QtWidgets.QApplication.translate("MainWindow", "Статистическое моделирование", None, -1))
self.aboutmenuaction.setText(QCoreApplication.translate("MainWindow", u"\u041e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435", None)) self.label.setText(QtWidgets.QApplication.translate("MainWindow", "СТАТИСТИЧЕСКИЕ ДАННЫЕ", None, -1))
self.generateYaction.setText(QCoreApplication.translate("MainWindow", u"\u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043e\u0442\u043a\u043b\u0438\u043a\u0430", None)) self.filemenu.setTitle(QtWidgets.QApplication.translate("MainWindow", "Файл", None, -1))
self.generateXaction.setText(QCoreApplication.translate("MainWindow", u"\u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0444\u0430\u043a\u0442\u043e\u0440\u0430", None)) self.generatemenu.setTitle(QtWidgets.QApplication.translate("MainWindow", "Генерация показателей", None, -1))
self.openfileaction.setText(QCoreApplication.translate("MainWindow", u"\u041e\u0442\u043a\u0440\u044b\u0442\u044c", None)) self.analyzemenu.setTitle(QtWidgets.QApplication.translate("MainWindow", "Анализ данных", None, -1))
self.savefileaction.setText(QCoreApplication.translate("MainWindow", u"\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c", None)) self.modelmenu.setTitle(QtWidgets.QApplication.translate("MainWindow", "Моделирование", None, -1))
self.closefileaction.setText(QCoreApplication.translate("MainWindow", u"\u0417\u0430\u043a\u0440\u044b\u0442\u044c", None)) self.helpmenu.setTitle(QtWidgets.QApplication.translate("MainWindow", "Справка", None, -1))
self.varianceAnalysisAction.setText(QCoreApplication.translate("MainWindow", u"\u0414\u0438\u0441\u043f\u0435\u0440\u0441\u0438\u043e\u043d\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437", None)) self.menu.setTitle(QtWidgets.QApplication.translate("MainWindow", "Распределения", None, -1))
self.correlationAnalisisAction.setText(QCoreApplication.translate("MainWindow", u"\u041a\u043e\u0440\u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437", None)) self.aboutmenuaction.setText(QtWidgets.QApplication.translate("MainWindow", "О программе", None, -1))
self.linearPolynomAction.setText(QCoreApplication.translate("MainWindow", u"\u041b\u0438\u043d\u0435\u0439\u043d\u044b\u0439 \u043f\u043e\u043b\u0438\u043d\u043e\u043c", None)) self.generateYaction.setText(QtWidgets.QApplication.translate("MainWindow", "Генерация отклика", None, -1))
self.squaredPolynomAction.setText(QCoreApplication.translate("MainWindow", u"\u041a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u0447\u043d\u044b\u0439 \u043f\u043e\u043b\u0438\u043d\u043e\u043c", None)) self.generateXaction.setText(QtWidgets.QApplication.translate("MainWindow", "Генерация фактора", None, -1))
self.transformPolynomAction.setText(QCoreApplication.translate("MainWindow", u"\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f", None)) self.openfileaction.setText(QtWidgets.QApplication.translate("MainWindow", "Открыть", None, -1))
self.usageaction.setText(QCoreApplication.translate("MainWindow", u"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435", None)) self.savefileaction.setText(QtWidgets.QApplication.translate("MainWindow", "Сохранить", None, -1))
self.label.setText(QCoreApplication.translate("MainWindow", u"\u0421\u0422\u0410\u0422\u0418\u0421\u0422\u0418\u0427\u0415\u0421\u041a\u0418\u0415 \u0414\u0410\u041d\u041d\u042b\u0415", None)) self.closefileaction.setText(QtWidgets.QApplication.translate("MainWindow", "Закрыть", None, -1))
self.filemenu.setTitle(QCoreApplication.translate("MainWindow", u"\u0424\u0430\u0439\u043b", None)) self.varianceAnalysisAction.setText(QtWidgets.QApplication.translate("MainWindow", "Дисперсионный анализ", None, -1))
self.generatemenu.setTitle(QCoreApplication.translate("MainWindow", u"\u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439", None)) self.correlationAnalisisAction.setText(QtWidgets.QApplication.translate("MainWindow", "Корреляционный анализ", None, -1))
self.analyzemenu.setTitle(QCoreApplication.translate("MainWindow", u"\u0410\u043d\u0430\u043b\u0438\u0437 \u0434\u0430\u043d\u043d\u044b\u0445", None)) self.linearPolynomAction.setText(QtWidgets.QApplication.translate("MainWindow", "Линейный полином", None, -1))
self.modelmenu.setTitle(QCoreApplication.translate("MainWindow", u"\u041c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435", None)) self.squaredPolynomAction.setText(QtWidgets.QApplication.translate("MainWindow", "Квадратичный полином", None, -1))
self.helpmenu.setTitle(QCoreApplication.translate("MainWindow", u"\u0421\u043f\u0440\u0430\u0432\u043a\u0430", None)) self.transformPolynomAction.setText(QtWidgets.QApplication.translate("MainWindow", "Преобразования", None, -1))
# retranslateUi self.usageaction.setText(QtWidgets.QApplication.translate("MainWindow", "Использование", None, -1))
self.uniformDistributionAction.setText(QtWidgets.QApplication.translate("MainWindow", "Равномерное", None, -1))
self.normalDistributionAction.setText(QtWidgets.QApplication.translate("MainWindow", "Нормальное", None, -1))
self.exponentialDistributionAction.setText(QtWidgets.QApplication.translate("MainWindow", "Экспоненциальное", None, -1))