Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
647fd77
color and marker assignment by test
Jul 22, 2025
5123abd
csv parser compatibility with missing data items
Jul 22, 2025
110679d
integrated linestiles for plotting
Jul 23, 2025
e70dad8
removed logging
Jul 23, 2025
4e14c46
Switched to more recent Python versions
Sep 25, 2025
4d6e1ce
Switched support to python version 3.9
Sep 25, 2025
9162ab4
fixed numpy version
Sep 25, 2025
3eb35dd
skip test_gui
Sep 26, 2025
3a8c8d9
Removed coveralls dependency as currently unavailable
Sep 26, 2025
d68618c
fix qt error
Sep 26, 2025
8c376f6
Made csv parser robust against missing data items and QP column
Sep 28, 2025
cdb1efe
changed build pipeline
Sep 29, 2025
ca6a6d4
Removed gui tests
Sep 29, 2025
338768f
extended support of python versions
Sep 29, 2025
889d134
removed python 3.12 as it does not yet work properly
Sep 29, 2025
07d029c
Increased plot warning to 100 plots
Sep 29, 2025
d02cf33
prevent crash if there are missing values in BD-rate calculation
Sep 29, 2025
2a2eef8
implemented pre-selected line styles for y, u and v components
Sep 29, 2025
3cf4296
included coveralls in build pipeline
Sep 29, 2025
e7297a7
Update appveyor.yml
timclassen Sep 30, 2025
a714cc0
Update requirements.txt
timclassen Sep 30, 2025
5c00074
Update requirements.txt
timclassen Sep 30, 2025
4388252
Update installer.cfg
timclassen Sep 30, 2025
8b597d4
Update installer.cfg
timclassen Sep 30, 2025
ee67552
Update installer.cfg
timclassen Sep 30, 2025
5c82a0e
Update requirements.txt
timclassen Oct 2, 2025
1c3ef6b
Update requirements.txt
timclassen Oct 2, 2025
22ea37a
Update appveyor.yml
timclassen Oct 2, 2025
f04b77c
Update installer.cfg
timclassen Oct 2, 2025
f910f7a
Update installer.cfg
timclassen Oct 2, 2025
1ee1f91
Update installer.cfg
timclassen Oct 3, 2025
4dd3bd7
Update installer.cfg
timclassen Oct 3, 2025
ad49581
Update installer.cfg
timclassen Oct 3, 2025
5acb92b
Update installer.cfg
timclassen Oct 3, 2025
05dd824
removed scipy dependency
Oct 3, 2025
54caa3b
removed scipy dependency
Oct 3, 2025
6d41f15
removed tikzplottlib dependency
timclassen Oct 3, 2025
ea1011b
removed scipy dependency
timclassen Oct 3, 2025
69da1d2
added scipy dependency again
timclassen Oct 3, 2025
0e7cd3a
Removed tikzplotlib export button
timclassen Oct 3, 2025
4fb5373
Fixed linestyle for mos
timclassen Oct 3, 2025
c0c669a
add debug info to PlotWidget
timclassen Oct 3, 2025
94e2785
Added debugging prints
timclassen Oct 4, 2025
594238f
Implemented alternative ci plotting method
timclassen Oct 4, 2025
514ca04
Improved robustness of rate parsing
timclassen Oct 4, 2025
af8dd33
remove debug package restrictions from setup.py
dmehlem Oct 5, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 16 additions & 12 deletions .github/workflows/build_test_rdplot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: [3.7, 3.8]
python-version: ["3.9", "3.10", "3.11"]

steps:
- uses: actions/checkout@v2
Expand All @@ -35,6 +35,10 @@ jobs:
sudo apt-get install libxcb-keysyms1
sudo apt-get install libxcb-image0
sudo apt-get install xvfb

sudo apt update
sudo apt install -y qtwayland5 libxkbcommon0 libxkbcommon-x11-0
export QT_QPA_PLATFORM=wayland
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
Expand All @@ -60,14 +64,14 @@ jobs:
COVERALLS_FLAG_NAME: ${{ matrix.test-name }}
COVERALLS_PARALLEL: true
coveralls:
name: Coveralls
needs: build
runs-on: ubuntu-latest
container: python:3-slim
steps:
- name: Finished
run: |
pip3 install --upgrade coveralls
coveralls --service=github --finish
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
name: Coveralls
needs: build
runs-on: ubuntu-latest
container: python:3-slim
steps:
- name: Finished
run: |
pip3 install --upgrade coveralls
coveralls --service=github --finish
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
3 changes: 2 additions & 1 deletion appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,12 @@ branches:
only:
- master
- development
- plot_color_consistent

environment:
matrix:
- PYTHON: "C:\\Python39-x64"
PYTHON_VERSION: "3.9.1"
PYTHON_VERSION: "3.9.13"
PYTHON_ARCH: "64"

install:
Expand Down
17 changes: 10 additions & 7 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -123,16 +123,20 @@ def get_install_requires():
install_requires=['cycler', 'matplotlib', 'numpy',
'py', 'pyparsing', 'pyqt5', 'pytest',
'python-dateutil', 'pytz', 'six',
'scipy', 'tabulate', 'mpldatacursor',
'scipy',
'tabulate', 'mpldatacursor',
'xmltodict', 'jsonpickle',
'tikzplotlib', 'Pillow'],
# 'tikzplotlib',
'Pillow'],
else:
install_requires=['cycler', 'matplotlib==3.4.2', 'numpy',
install_requires=['cycler', 'matplotlib', 'numpy',
'py', 'pyparsing', 'pyqt5', 'pytest',
'python-dateutil', 'pytz', 'six',
'scipy', 'tabulate', 'mpldatacursor',
'scipy',
'tabulate', 'mpldatacursor',
'xmltodict', 'jsonpickle',
'tikzplotlib', 'Pillow'],
# 'tikzplotlib',
'Pillow'],
return install_requires

setup(
Expand Down Expand Up @@ -176,8 +180,7 @@ def get_install_requires():
# Specify the Python versions you support here. In particular, ensure
# that you indicate whether you support Python 2, Python 3 or both.
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8'
'Programming Language :: Python :: 3.9',
],

# What does your project relate to?
Expand Down
14 changes: 7 additions & 7 deletions src/installer.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ entry_point=rdplot.__main__:main
icon=rdplot/logo/plot512_0wd_icon.ico

[Python]
version=3.9.1
version=3.9.13
bitness=64

[Include]
Expand All @@ -16,24 +16,24 @@ packages = rdplot
pkg_resources
cycler
kiwisolver
numpy
py
pyparsing
PyQt5
pytest
dateutil
pytz
six
scipy
tabulate
mpldatacursor
jsonpickle
xmltodict
tikzplotlib
# tikzplotlib
PIL

pypi_wheels= matplotlib==3.4.2

pypi_wheels= matplotlib==3.4.2
numpy==1.26.4
scipy==1.11.3

# Other files and folders that should be installed
files = ../LICENSE.txt
exclude = rdplot/tests
Expand All @@ -46,4 +46,4 @@ console=false

[Build]
directory = ../build/nsis/
installer_name = install-rdplot.exe
installer_name = install-rdplot.exe
5 changes: 4 additions & 1 deletion src/rdplot/SimulationDataItem.py
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,10 @@ def __init__(self, identifiers=[], values=[], path=[], label=()):
self.values = values
self.path = path
self.label = label
self.has_ci = False
self.has_ci = False
self.color = " "
self.marker = " "


# plot data has confidence interval if tuple has 3 entries
# tuple: (rate, value, ci-value)
Expand Down
55 changes: 42 additions & 13 deletions src/rdplot/SimulationDataItemClasses/CsvLogs.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,17 +33,36 @@ def __init__(self, config, header, line):
header = re.split(r'[,;]',header.lower())
header = list(filter(None, header))
sequence_idx = header.index("sequence")
qp_idx = header.index("qp")

try:
qp_idx = header.index("qp")
except ValueError:
try:
qp_idx = header.index("rate point")
except ValueError:
qp_idx = header.index("bitrate")

# split also the line
line = re.split(r'[,;]',line)
line = list(filter(None, line))
line = list(line)
# line = list(filter(None, line))

# I want to allow for all header fields looking like the bitrate
# Therefore, it is a little bit more complicated here
tmp = list(map(lambda x: 'rate' in x, header))
rate_idx = tmp.index(1)
rate = float(line[rate_idx])
rate_idx = -1
try:
rate_idx = header.index("bitrate")
except ValueError:
pass

if rate_idx == -1:
tmp = list(map(lambda x: 'rate' in x, header))
rate_idx = tmp.index(1)

try:
rate = float(line[rate_idx])
except ValueError:
rate = float('nan')

self.sequence = line[sequence_idx]
self.qp = line[qp_idx]
Expand Down Expand Up @@ -72,14 +91,24 @@ def __init__(self, config, header, line):
ci_idx = j
break

if ci_idx == -1:
# Read only the data (no CI available)
data[header[i]] = [(rate, float(line[i]))]
continue
else:
# Read the data and CI in one tuple
data[header[i]] = [(rate, float(line[i]), float(line[ci_idx]))]
continue
try: # Prevent errors from missing last data item
if ci_idx == -1:
# Read only the data (no CI available)
try:
data[header[i]] = [(rate, float(line[i]))]
except ValueError:
data[header[i]] = [(rate, float('nan'))]
continue
else:
# Read the data and CI in one tuple
try:
data[header[i]] = [(rate, float(line[i]), float(line[ci_idx]))]
except ValueError:
data[header[i]] = [(rate, float('nan'), float('nan'))]

continue
except Exception as e:
pass

self.summary_data = data

Expand Down
17 changes: 10 additions & 7 deletions src/rdplot/Widgets/MainWindow.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
from os import path
from os.path import sep, isfile, isdir
from os import listdir
import csv
import cProfile, pstats

Expand Down Expand Up @@ -105,10 +104,6 @@ def __init__(self, ):
self.save_bd_table
)

self.actionExport_Figure_as_Tikzpicture.triggered.connect(
self.plotPreview.export_plot_tikz
)

self.actionExport_TableWidget.triggered.connect(
self.export_table_to_csv
)
Expand Down Expand Up @@ -146,6 +141,7 @@ def __init__(self, ):

# set up bd plot checkbox
self.checkBox_bdplot.stateChanged.connect(self.update_bd_plot)
self.checkBox_plot_ci.stateChanged.connect(self.update_plot_ci_setting)

self.curveWidget.hide()
self.curveListModel = OrderedDictModel()
Expand Down Expand Up @@ -400,10 +396,10 @@ def check_labels(self):
selectionmodel.clearSelection()

# updates the plot if the plot variable is changed
def update_plot(self):
def update_plot(self, force=False):
# user-generated curves and curves loaded from files are not supposed to be mixed
user_generated_curves = False
if self.sender() == self._variable_tree_selection_model or self.sender() == self.curveListSelectionModel:
if self.sender() == self._variable_tree_selection_model or self.sender() == self.curveListSelectionModel or force:
self.check_labels()
data_collection = self.get_plot_data_collection_from_selected_variables()
data_collection_user_generated = []
Expand Down Expand Up @@ -678,6 +674,13 @@ def update_bd_user_generated_curves_table(self, index):
# update the plot
self.plotPreview.change_plot(data_collection_user_generated, True)

def update_plot_ci_setting(self):
if self.checkBox_plot_ci.isChecked():
self.plotPreview.ci_visible = True
else:
self.plotPreview.ci_visible = False
self.update_plot(force=True)

def update_bd_plot(self):
data_collection = self.get_plot_data_collection_from_selected_variables()
data_collection_user_generated = []
Expand Down
Loading