minor fixes
This commit is contained in:
		@@ -8,6 +8,7 @@ from pyqtgraph import mkPen
 | 
			
		||||
 | 
			
		||||
from nmreval.data.points import Points
 | 
			
		||||
from nmreval.data.signals import Signal
 | 
			
		||||
from nmreval.lib.logger import logger
 | 
			
		||||
from nmreval.utils.text import convert
 | 
			
		||||
from nmreval.data.bds import BDS
 | 
			
		||||
from nmreval.data.dsc import DSC
 | 
			
		||||
@@ -356,7 +357,7 @@ class ExperimentContainer(QtCore.QObject):
 | 
			
		||||
        elif mode in ['imag', 'all'] and self.plot_imag is not None:
 | 
			
		||||
            self.plot_imag.set_symbol(symbol=symbol, size=size, color=color)
 | 
			
		||||
        else:
 | 
			
		||||
            print('Updating symbol failed for ' + str(self.id))
 | 
			
		||||
            logger.warning(f'Updating symbol failed for {self.id}')
 | 
			
		||||
 | 
			
		||||
    def setLine(self, *, width=None, style=None, color=None, mode='real'):
 | 
			
		||||
        if mode in ['real', 'all']:
 | 
			
		||||
@@ -368,7 +369,7 @@ class ExperimentContainer(QtCore.QObject):
 | 
			
		||||
        elif mode in ['imag', 'all'] and self.plot_imag is not None:
 | 
			
		||||
            self.plot_imag.set_line(width=width, style=style, color=color)
 | 
			
		||||
        else:
 | 
			
		||||
            print('Updating line failed for ' + str(self.id))
 | 
			
		||||
            logger.warning(f'Updating line failed for {self.id}')
 | 
			
		||||
 | 
			
		||||
    def update_property(self, key1: str, key2: str, value: Any):
 | 
			
		||||
        keykey = key2.split()
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,4 @@
 | 
			
		||||
from nmreval.lib.logger import logger
 | 
			
		||||
from nmreval.math import apodization
 | 
			
		||||
from nmreval.lib.importer import find_models
 | 
			
		||||
from nmreval.utils.text import convert
 | 
			
		||||
@@ -67,7 +68,7 @@ class EditSignalWidget(QtWidgets.QWidget, Ui_Form):
 | 
			
		||||
                self.do_something.emit(sender, (ph0, ph1, pvt))
 | 
			
		||||
 | 
			
		||||
        else:
 | 
			
		||||
            print('You should never reach this by accident.')
 | 
			
		||||
            logger.warning(f'You should never reach this by accident, invalid sender {sender!r}')
 | 
			
		||||
 | 
			
		||||
    @QtCore.pyqtSlot(int, name='on_apodcombobox_currentIndexChanged')
 | 
			
		||||
    def change_apodization(self, index):
 | 
			
		||||
 
 | 
			
		||||
@@ -175,7 +175,7 @@ class QFitParameterWidget(QtWidgets.QWidget, Ui_FormFit):
 | 
			
		||||
        # disable single parameter if it is set global, enable if global is unset
 | 
			
		||||
        widget = self.sender()
 | 
			
		||||
        idx = self.global_parameter.index(widget)
 | 
			
		||||
        enable = (widget.global_checkbox.checkState() == QtCore.Qt.Unchecked) and (widget.is_linked is None)
 | 
			
		||||
        enable = (widget.global_checkbox.checkState() == QtCore.Qt.Unchecked)
 | 
			
		||||
        self.data_parameter[idx].setEnabled(enable)
 | 
			
		||||
 | 
			
		||||
    def select_next_preview(self, direction):
 | 
			
		||||
 
 | 
			
		||||
@@ -138,9 +138,7 @@ class DrawingsWidget(QtWidgets.QWidget, Ui_Form):
 | 
			
		||||
        graph_id = self.graph_comboBox.currentData()
 | 
			
		||||
        current_lines = self.lines[graph_id]
 | 
			
		||||
 | 
			
		||||
        print(remove_rows)
 | 
			
		||||
        for i in reversed(remove_rows):
 | 
			
		||||
            print(i)
 | 
			
		||||
            self.tableWidget.removeRow(i)
 | 
			
		||||
            self.line_deleted.emit(current_lines[i], graph_id)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -27,7 +27,6 @@ class MdiAreaTile(QtWidgets.QMdiArea):
 | 
			
		||||
        pos = QtCore.QPoint(0, 0)
 | 
			
		||||
 | 
			
		||||
        for win in window_list:
 | 
			
		||||
            print(win.minimumSize())
 | 
			
		||||
            win.setGeometry(rect)
 | 
			
		||||
            win.move(pos)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,110 +0,0 @@
 | 
			
		||||
import os.path
 | 
			
		||||
import json
 | 
			
		||||
import urllib.request
 | 
			
		||||
import webbrowser
 | 
			
		||||
import random
 | 
			
		||||
 | 
			
		||||
from ..Qt import QtGui, QtCore, QtWidgets
 | 
			
		||||
from .._py.pokemon import Ui_Dialog
 | 
			
		||||
 | 
			
		||||
random.seed()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class QPokemon(QtWidgets.QDialog, Ui_Dialog):
 | 
			
		||||
    def __init__(self, number=None, parent=None):
 | 
			
		||||
        super().__init__(parent=parent)
 | 
			
		||||
        self.setupUi(self)
 | 
			
		||||
        self._js = json.load(open(os.path.join(path_to_module, 'utils', 'pokemon.json'), 'r'), encoding='UTF-8')
 | 
			
		||||
        self._id = 0
 | 
			
		||||
 | 
			
		||||
        if number is not None and number in range(1, len(self._js)+1):
 | 
			
		||||
            poke_nr = f'{number:03d}'
 | 
			
		||||
            self._id = number
 | 
			
		||||
        else:
 | 
			
		||||
            poke_nr = f'{random.randint(1, len(self._js)):03d}'
 | 
			
		||||
            self._id = int(poke_nr)
 | 
			
		||||
 | 
			
		||||
        self._pokemon = None
 | 
			
		||||
        self.show_pokemon(poke_nr)
 | 
			
		||||
        self.label_15.linkActivated.connect(lambda x: webbrowser.open(x))
 | 
			
		||||
 | 
			
		||||
        self.buttonBox.clicked.connect(self.randomize)
 | 
			
		||||
        self.next_button.clicked.connect(self.show_next)
 | 
			
		||||
        self.prev_button.clicked.connect(self.show_prev)
 | 
			
		||||
 | 
			
		||||
    def show_pokemon(self, nr):
 | 
			
		||||
        self._pokemon = self._js[nr]
 | 
			
		||||
        self.setWindowTitle('Pokémon: ' + self._pokemon['Deutsch'])
 | 
			
		||||
 | 
			
		||||
        for i in range(self.tabWidget.count(), -1, -1):
 | 
			
		||||
            print('i', self.tabWidget.count(), i)
 | 
			
		||||
            try:
 | 
			
		||||
                self.tabWidget.widget(i).deleteLater()
 | 
			
		||||
            except AttributeError:
 | 
			
		||||
                pass
 | 
			
		||||
 | 
			
		||||
        for n, img in self._pokemon['Bilder']:
 | 
			
		||||
            w = QtWidgets.QWidget()
 | 
			
		||||
            vl = QtWidgets.QVBoxLayout()
 | 
			
		||||
            l = QtWidgets.QLabel(self)
 | 
			
		||||
            l.setAlignment(QtCore.Qt.AlignHCenter)
 | 
			
		||||
            pixmap = QtGui.QPixmap()
 | 
			
		||||
 | 
			
		||||
            try:
 | 
			
		||||
                pixmap.loadFromData(urllib.request.urlopen(img, timeout=0.5).read())
 | 
			
		||||
            except IOError:
 | 
			
		||||
                l.setText(n)
 | 
			
		||||
            else:
 | 
			
		||||
                sc_pixmap = pixmap.scaled(256, 256, QtCore.Qt.KeepAspectRatio)
 | 
			
		||||
                l.setPixmap(sc_pixmap)
 | 
			
		||||
 | 
			
		||||
            vl.addWidget(l)
 | 
			
		||||
            w.setLayout(vl)
 | 
			
		||||
            self.tabWidget.addTab(w, n)
 | 
			
		||||
 | 
			
		||||
        if len(self._pokemon['Bilder']) <= 1:
 | 
			
		||||
            self.tabWidget.tabBar().setVisible(False)
 | 
			
		||||
        else:
 | 
			
		||||
            self.tabWidget.tabBar().setVisible(True)
 | 
			
		||||
        self.tabWidget.adjustSize()
 | 
			
		||||
 | 
			
		||||
        self.name.clear()
 | 
			
		||||
        keys = ['National-Dex', 'Kategorie', 'Typ', 'Größe', 'Gewicht', 'Farbe', 'Link']
 | 
			
		||||
        label_list = [self.pokedex_nr, self.category, self.poketype, self.weight, self.height, self.color, self.info]
 | 
			
		||||
        for (k, label) in zip(keys, label_list):
 | 
			
		||||
            v = self._pokemon[k]
 | 
			
		||||
            if isinstance(v, list):
 | 
			
		||||
                v = os.path.join('', *v)
 | 
			
		||||
 | 
			
		||||
            if k == 'Link':
 | 
			
		||||
                v = '<a href={}>{}</a>'.format(v, v)
 | 
			
		||||
 | 
			
		||||
            label.setText(v)
 | 
			
		||||
 | 
			
		||||
        for k in ['Deutsch', 'Japanisch', 'Englisch', 'Französisch']:
 | 
			
		||||
            v = self._pokemon[k]
 | 
			
		||||
            self.name.addItem(k + ': ' + v)
 | 
			
		||||
 | 
			
		||||
        self.adjustSize()
 | 
			
		||||
 | 
			
		||||
    def randomize(self, idd):
 | 
			
		||||
        if idd.text() == 'Retry':
 | 
			
		||||
            new_number = f'{random.randint(1, len(self._js)):03d}'
 | 
			
		||||
            self._id = int(new_number)
 | 
			
		||||
            self.show_pokemon(new_number)
 | 
			
		||||
        else:
 | 
			
		||||
            self.close()
 | 
			
		||||
 | 
			
		||||
    def show_next(self):
 | 
			
		||||
        new_number = self._id + 1
 | 
			
		||||
        if new_number > len(self._js):
 | 
			
		||||
            new_number = 1
 | 
			
		||||
        self._id = new_number
 | 
			
		||||
        self.show_pokemon(f'{new_number:03d}')
 | 
			
		||||
 | 
			
		||||
    def show_prev(self):
 | 
			
		||||
        new_number = self._id - 1
 | 
			
		||||
        if new_number == 0:
 | 
			
		||||
            new_number = len(self._js)
 | 
			
		||||
        self._id = new_number
 | 
			
		||||
        self.show_pokemon(f'{new_number:03d}')
 | 
			
		||||
@@ -445,7 +445,6 @@ class UpperManagement(QtCore.QObject):
 | 
			
		||||
                models[model_id] = m
 | 
			
		||||
 | 
			
		||||
                m_complex = model_p['complex']
 | 
			
		||||
                print(model_p)
 | 
			
		||||
 | 
			
		||||
                # sets are not in active order but in order they first appeared in fit dialog
 | 
			
		||||
                # iterate over order of set id in active order and access parameter inside loop
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,7 @@ from __future__ import annotations
 | 
			
		||||
 | 
			
		||||
import re
 | 
			
		||||
from collections import OrderedDict
 | 
			
		||||
from io import StringIO
 | 
			
		||||
from pathlib import Path
 | 
			
		||||
from typing import Any
 | 
			
		||||
 | 
			
		||||
@@ -223,22 +224,25 @@ class FitResult(Points):
 | 
			
		||||
        return self.nobs-self.nvar
 | 
			
		||||
 | 
			
		||||
    def pprint(self, statistics=True, correlations=True):
 | 
			
		||||
        print('Fit result:')
 | 
			
		||||
        print('  model :', self.name)
 | 
			
		||||
        print('  #data :', self.nobs)
 | 
			
		||||
        print('  #var  :', self.nvar)
 | 
			
		||||
        print('\nParameter')
 | 
			
		||||
        print(self.parameter_string())
 | 
			
		||||
        s = StringIO()
 | 
			
		||||
        s.write('Fit result:\n')
 | 
			
		||||
        s.write(f'  model : {self.name}\n')
 | 
			
		||||
        s.write(f'  #data : {self.nobs}\n')
 | 
			
		||||
        s.write(f'  #var  : {self.nvar}\n')
 | 
			
		||||
        s.write('\nParameter\n')
 | 
			
		||||
        s.write(self.parameter_string())
 | 
			
		||||
 | 
			
		||||
        if statistics:
 | 
			
		||||
            print('Statistics')
 | 
			
		||||
            s.write('Statistics\n')
 | 
			
		||||
            for k, v in self.statistics.items():
 | 
			
		||||
                print(f'  {k} : {v:.4f}')
 | 
			
		||||
                s.write(f'  {k} : {v:.4f}')
 | 
			
		||||
 | 
			
		||||
        if correlations and self.correlation is not None:
 | 
			
		||||
            print('\nCorrelation (partial corr.)')
 | 
			
		||||
            print(self._correlation_string())
 | 
			
		||||
            print()
 | 
			
		||||
            s.write('\nCorrelation (partial corr.)\n')
 | 
			
		||||
            s.write(self._correlation_string())
 | 
			
		||||
            s.write('\n')
 | 
			
		||||
 | 
			
		||||
        print(s.getvalue())
 | 
			
		||||
 | 
			
		||||
    def parameter_string(self):
 | 
			
		||||
        ret_val = ''
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user