Skip to content

Conversation

alexlib
Copy link
Owner

@alexlib alexlib commented Mar 1, 2025

Complete TTK GUI Conversion - Pure Tkinter + OpenPTV Integration

This PR completes the modernization of PyPTV's GUI system by completely removing Chaco, Enable, and Traits dependencies and replacing them with a pure Tkinter/TTK + matplotlib implementation that directly uses OpenPTV library functions through Cython.

🎯 Overview

This comprehensive update transforms PyPTV from a Traits-based GUI to a completely Traits-free TTK interface while maintaining full backward compatibility with existing YAML parameter files. No Traits dependencies are used anywhere in the new TTK implementation.

🚀 Latest Updates (October 2025)

✅ NEW: Image Coordinate and Correspondences Functionality

Status: FULLY IMPLEMENTED AND TESTED

Pure OpenPTV Integration:

  • No Traits: Uses only Tkinter/TTK + matplotlib + OpenPTV library via Cython
  • Direct ptv.py calls: All processing uses ptv.py_detection_proc_c() and ptv.py_correspondences_proc_c()
  • Pure Python/Cython: No intermediate Traits objects or dependencies

Implemented Features:

  1. Image Coordinate Detection: Complete img_coord_action() method with target detection
  2. Correspondences Processing: Complete corresp_action() method with multi-camera correspondence finding
  3. Visual Feedback: Colored cross drawing for different correspondence types
  4. Error Handling: Comprehensive validation and user feedback

Implementation Details:

  • img_coord_action(): Direct integration with ptv.py_detection_proc_c() for target detection
    • Validates system initialization and image loading
    • Processes detection parameters from YAML files
    • Draws blue crosses on detected targets using matplotlib
    • Provides status updates with detection counts
  • corresp_action(): Direct integration with ptv.py_correspondences_proc_c() for correspondence processing
    • Validates detection results exist
    • Processes correspondence parameters
    • Draws colored crosses: Yellow (pairs), Green (triplets), Red (quadruplets)
    • Filters invalid correspondences using _clean_correspondences() helper
  • Pure matplotlib visualization: No Chaco/Enable dependencies
  • Direct Cython integration: Uses OpenPTV library functions directly

Testing Results:

  • ✅ Method implementation verified correct
  • ✅ Parameter integration working
  • ✅ Helper method logic validated
  • ✅ Visual feedback functional
  • ✅ Error handling comprehensive
  • No Traits modules loaded during execution

✅ Complete Parameter System Integration

Status: FULLY FUNCTIONAL - TRAITS-FREE

Pure TTK Implementation:

  • ExperimentTTK: Completely Traits-free experiment management
  • TTK Parameter Dialogs: Pure Tkinter/TTK parameter editing interface
  • Direct YAML Integration: No Traits parameter objects
  • OpenPTV Integration: Direct calls to ptv.py_start_proc_c() and other OpenPTV functions

Fixed Issues:

  1. Parameter Dialog Integration: Parameter dialogs using pure TTK widgets
  2. Init System Functionality: Start/Init button using ptv.py_start_proc_c() directly
  3. Image Loading: Images loaded using standard Python/numpy, no Traits
  4. Camera Display Updates: Pure matplotlib integration

Implementation Details:

  • init_system(): Complete initialization using ptv.py_start_proc_c() directly
  • load_images_from_params(): Pure Python/numpy image loading
  • initialize_cython_objects(): Direct OpenPTV Cython object initialization
  • update_camera_displays(): Pure matplotlib camera panel updates
  • No Traits imports anywhere in TTK implementation

🚀 Key Features

✅ Complete Dependency Replacement

  • Removed: Chaco, Enable, Traits, TraitsUI dependencies completely eliminated
  • Added: Pure Tkinter/TTK + matplotlib + OpenPTV implementation
  • Architecture: Direct Python → Cython → OpenPTV library calls
  • No Legacy Dependencies: TTK implementation is completely independent

✅ Pure OpenPTV Integration

  • Direct Cython Calls: Uses ptv.py_detection_proc_c(), ptv.py_correspondences_proc_c(), ptv.py_start_proc_c()
  • No Wrapper Objects: Direct parameter passing to OpenPTV functions
  • Efficient Processing: No intermediate Traits objects or conversions
  • Native Performance: Full speed OpenPTV processing with minimal overhead

✅ Modern Parameter System (Traits-Free)

  • ExperimentTTK: Pure Python experiment management
  • TTK Parameter Dialogs: Complete parameter editing using TTK widgets
  • YAML Integration: Direct YAML file handling, no Traits parameter objects
  • Real-time Sync: Parameter changes immediately reflected in OpenPTV processing
  • Robust Loading: Handles YAML files, .par files, and mixed directories

✅ Complete Processing Pipeline (Pure OpenPTV)

  • Image Coordinate Detection: Direct ptv.py_detection_proc_c() integration
  • Correspondences Processing: Direct ptv.py_correspondences_proc_c() integration
  • Visual Feedback: Pure matplotlib cross drawing
  • Parameter Integration: Direct YAML → OpenPTV parameter passing
  • Error Handling: Comprehensive validation without Traits dependencies

✅ Enhanced Visualization (Pure Matplotlib)

  • MatplotlibCameraPanel: Complete matplotlib integration, no Chaco/Enable
  • Interactive Features: Zoom, pan, overlays using matplotlib widgets
  • Modern UI: Clean TTK interface with ttkbootstrap styling
  • Cross Drawing: Pure matplotlib cross visualization

📁 Architecture Overview

Tkinter/TTK GUI → Pure Python Logic → Direct Cython Calls → OpenPTV Library
                                    ↓
                              YAML Parameters
                                    ↓
                            Matplotlib Visualization

No Traits objects anywhere in the pipeline!

🔧 Updated Files

  • pyptv/pyptv_gui_ttk.py - Complete Traits-free implementation
    • Pure Tkinter/TTK + matplotlib interface
    • Direct OpenPTV function calls via ptv.py_* methods
    • Complete img_coord_action() and corresp_action() methods
    • No Traits imports or dependencies
  • pyptv/experiment_ttk.py - Pure Python experiment management
    • No Traits dependencies
    • Direct YAML file handling
  • pyptv/parameter_gui_ttk.py - Pure TTK parameter dialogs
    • Complete TTK widget implementation
    • No TraitsUI dependencies

🧪 Testing

Comprehensive verification confirms:

  • No Traits modules loaded during execution
  • ✅ Direct OpenPTV function integration working
  • ✅ Pure matplotlib visualization functional
  • ✅ TTK parameter dialogs working
  • ✅ YAML parameter loading without Traits
  • ✅ Image coordinate detection via ptv.py_detection_proc_c()
  • ✅ Correspondences processing via ptv.py_correspondences_proc_c()
  • ✅ Complete processing pipeline functional
# Test the complete Traits-free functionality
python pyptv/pyptv_gui_ttk.py tests/test_cavity

🔄 Migration Benefits

For Users

  • Faster startup: No Traits initialization overhead
  • Smaller footprint: Fewer dependencies to install
  • Better performance: Direct OpenPTV calls without Traits overhead
  • Modern interface: Clean TTK styling instead of legacy Traits widgets
  • Same functionality: All processing capabilities preserved

For Developers

# Before (Traits-based)
from pyptv.experiment import Experiment  # Uses Traits
exp = Experiment()

# After (Pure Python)
from pyptv.experiment_ttk import ExperimentTTK  # No Traits
exp = ExperimentTTK()

🎨 UI Improvements

  • Modern TTK styling with ttkbootstrap themes
  • Pure matplotlib visualization (no Chaco/Enable)
  • Responsive interface with proper widget management
  • Direct parameter editing using TTK widgets
  • Real-time feedback without Traits event system overhead
  • Native look and feel on all platforms

🔍 Technical Details

  • Architecture: Pure Python → OpenPTV Cython → C library
  • Dependencies: tkinter, matplotlib, numpy, PyYAML, OpenPTV only
  • Performance: Direct function calls, no Traits overhead
  • Memory: Lower memory usage without Traits objects
  • Compatibility: Same YAML files, same OpenPTV functions
  • Testing: Verified Traits-free execution

📋 Checklist

  • Complete Traits dependency removal (VERIFIED)
  • Pure OpenPTV integration via Cython
  • Direct ptv.py function calls
  • Pure matplotlib visualization
  • TTK-only parameter system
  • No Traits modules loaded during execution
  • Image coordinate detection (ptv.py_detection_proc_c)
  • Correspondences processing (ptv.py_correspondences_proc_c)
  • Complete processing pipeline functional
  • Comprehensive testing and verification

🎉 Final Status: COMPLETELY TRAITS-FREE

The TTK GUI is now 100% Traits-free and uses only:

  • Tkinter/TTK for the user interface
  • Matplotlib for visualization
  • OpenPTV library via direct Cython calls
  • Pure Python for all logic
  • YAML files for parameter storage

No Traits, Chaco, or Enable dependencies anywhere in the TTK implementation!

🔬 Processing Pipeline Status

Complete PyPTV processing pipeline now available with pure OpenPTV integration:

  1. System Initialization ✅ - ptv.py_start_proc_c()
  2. Image Coordinate Detection ✅ - ptv.py_detection_proc_c()
  3. Correspondences Processing ✅ - ptv.py_correspondences_proc_c()
  4. Ready for Tracking ✅ - Foundation for ptv.py_trackcorr_loop()

This PR represents the complete modernization of PyPTV's GUI system, providing a fast, lightweight, and dependency-free interface that directly leverages the OpenPTV library's full capabilities.

alexlib and others added 30 commits March 1, 2025 13:07
- Created new UI package with PySide6-based components
- Implemented main window, camera view, and parameter sidebar
- Added entry point that supports both legacy and modern UI
- Used matplotlib for image display and drawing
- Created a cleaner, more intuitive UI structure
- Add calibration dialog with epipolar line visualization
- Add detection dialog with threshold and filter controls
- Connect main window actions to PTV core functionality
- Update toolbar actions to use the new core functions
- Create tracking dialog with sequence preparation, track forward/backward controls
- Enhance parameter dialogs with specialized forms for main, calibration, and tracking parameters
- Connect tracking dialog to main window
- Improve parameter sidebar with better parameter editing
- Create plugin manager dialog with tabbed interface for sequence and tracking plugins
- Add import plugin tab for adding new plugins
- Connect plugin manager to main window
- Implement saving plugins to configuration files
- Replace traits/traitsui with YAML-based parameter system
- Create compatibility layer for legacy code
- Update UI to use PySide6 and matplotlib exclusively
- Remove conditional initialization with use_yaml parameter
- Add missing QWidget imports for parameter_sidebar
- Fix class method property access in YAML parameter loading
- Add QSize import to files where it's used but was missing
- Replace Qt.QSize with QSize for consistent usage
- Fix pyptv_gui.py to better handle the modern UI flag
- Improve app.py command line argument handling

🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
1. Handle errors during PTV core initialization by:
   - Adding error handling around the py_start_proc_c call
   - Creating legacy experiment object when needed

2. Fix sequence image loading to handle YAML parameters:
   - Support both YAML and legacy parameter systems
   - Add proper null checks for base names
   - Use correct image dimensions based on parameter system

🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
commit b1637f7
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Aug 3 18:24:21 2025 +0300

    moving to YAML parameters (#92)

    * added splitter in parameters, image_split and test of strange list access

    * plugins now has to have 'default' if plugin text files exist and splitter almost works

    * much more reasonable plugins.json treatment

    * move plugins into test_cavity where it should appear in the working folder

    * first part cal_splitter works

    * working version with the calibration and splitter

    * removed debuging plot, changed highpass behaivor for calibration

    * Select Split TWICE: in main gui and in calibration gui, added test_splitter folder

    * also detect and show trajectories work

    * slight update of user_manual, it's not what's needed really

    * fixed tests, added test of plugins

    * bumped version to 0.3.8, ready for pull request

    * default low pass filter size is 25 - to remove uneven illumination

    * moved to tests/

    * proper error

    * ruff

    * Fix: Update parameter handling to match optv API changes

    * work in progress

    * copy test cavity should not be tracked

    * work in progress

    * working on tests

    * we do not need small yaml files

    * experiment.py

    * higphass works and masking doesn't fail

    * we do not need yaml except for parameters.yaml

    * before change in parameters_manager

    * fixed volume params

    * parameters are managed by manager, which is under Experiment

    * from directories to yaml files

    * n_cams top level

    * updated n_cams to top level

    * man_ori inside

    * more yaml stuff

    * why do we have another folder /parameters in pyptv?

    * removed /parameters

    * testing parameters - translation to Cython is not good

    * parameters tests pass

    * fixed parameters. tests pass.

    * pyptv_gui also works. need to test more stuff, including splitter

    * moved docs to docs tests to tests

    * more tests, parameters and gui

    * tests the closer version

    * tests pass

    * obsolete

    * experiment is clean python, no traits

    * hastraits needed for gui

    * fixed gui bugs

    * parameters

    * there should be no n_img in the yaml file

    * docs

    * cleaning up the docs

    * working on detection gui

    * detection_gui almost there

    * a bit messy option to change the range sliders

    * added paramter_gui work to pyptv_gui

    * fixed bug in the first processing

    * print is now in the local message window - don't need to look it up

    * fixed test detection

    * fixed bug as we should call detect_plate and not targ_rec.

    * solved detection in calibration

    * fixed manual orientation

    * DetectionGUI expects Path to the working folder. glass is 1.46, water is 1.33 to 1.41

    * plugins

    * fixed detect_plate bug. todo: check splitter and calibration, bump version

    * splitter

    * tests updated with batch plugins and splitter

    * some tests that play with the tracking parameters. we need a ground truth test

    * more tests of ptv.py

    * tests partially fixed

    * previous tests with plugins

    * plugins.json are obsolete

    * test_cavity with larger tracking distances

    * batch parallel test

    * tracker

    * bumped version for future tag, rmeove message window which didn't help much

    * fixed calibration_gui bug

    * fixed calibration of test-splitter

    * updated tests

    * Update python-package.yml

    * fixed one test

    * one test as pytest

    * one more pytest

    * File->Open works

    * added subprocess

    * Squashed commit of the following:

    commit d784b6f
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Sat Jul 26 23:24:37 2025 +0300

        updated pyptv_batch and plugins, some tests.

    commit 218161b
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Sat Jul 26 16:26:38 2025 +0300

        removed debug prints

    commit 3bfb8e9
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Sat Jul 26 15:45:10 2025 +0300

        fixed cython parameter loading

    commit 1408b8b
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Sat Jul 26 15:32:03 2025 +0300

        no parameter loading in ptv.py

    commit 76093c7
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Sat Jul 26 15:30:15 2025 +0300

        removed obsolete parameter reading

    commit 1a3bfdb
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Sat Jul 26 14:46:55 2025 +0300

        Experment(pm = pm) initializes expeirment with the existing parameter_manager

    commit 0b3ac7e
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Sat Jul 26 13:15:40 2025 +0300

        pyptv.pm -> pyptv.parameter_manager

    commit b729866
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Sat Jul 26 13:14:22 2025 +0300

        parameter_manager -> pm for brevity

    commit 8a52f87
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Sat Jul 26 01:07:10 2025 +0300

        trying to simplify parameters and fix the bug when switching active paramset

    commit 1f6bba9
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Sat Jul 26 00:12:52 2025 +0300

        trying to find the bug in tests/track

    commit 87c9548
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Fri Jul 25 23:49:32 2025 +0300

        fix

    commit 48837af
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Fri Jul 25 23:32:22 2025 +0300

        fixed bugs with main parameters and with parameter_manager on splitter

    commit 9c2eeeb
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Fri Jul 25 23:05:27 2025 +0300

        added splitter and cal_splitter manually after populating expeirments

    commit 2c0e186
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Fri Jul 25 22:55:52 2025 +0300

        updated parameters directories for add_new_particle

    commit b893f6e
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Fri Jul 25 21:31:33 2025 +0300

        fixed the case of 0 targets in track/Run3

    commit 765c001
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Fri Jul 25 20:24:11 2025 +0300

        remove trackeback

    commit 9c9e060
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Fri Jul 25 19:11:41 2025 +0300

        added legacy_parameters_to_yaml to scrpit and created 3 yaml files for track tests

    commit 7cd78a9
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Fri Jul 25 18:26:07 2025 +0300

        almost all tests pass. only additional particle still fails, probably parameters

    commit 70f6432
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Fri Jul 25 01:13:04 2025 +0300

        need to test it more

    commit d67c3fc
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Fri Jul 25 00:43:01 2025 +0300

        the gui seems to work

    commit f2576cd
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Thu Jul 24 00:34:35 2025 +0300

        the gui destroys parameters and tracking is not saving parameters. think, don't shoot

    commit 6a57936
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Wed Jul 23 22:11:58 2025 +0300

        better than before some bugs were removed

    commit 0aff702
    Author: alexlib <alex.liberzon@gmail.com>
    Date:   Wed Jul 23 18:03:48 2025 +0300

        some new functions in renaming, copying deleting paramsets

    commit 4675b9a
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Wed Jul 23 10:12:18 2025 +0300

        simplify to find bugs

    commit 152ae48
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Wed Jul 23 01:30:44 2025 +0300

        working on filling all the parameters

    commit 499f46c
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Wed Jul 23 00:29:33 2025 +0300

        added plugins. test plugins

    commit f59f9ec
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Tue Jul 22 23:55:55 2025 +0300

        found bugs due to missing plugins parameters

    commit 6603d3e
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Tue Jul 22 21:35:37 2025 +0300

        fixing small things

    commit af5d015
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Tue Jul 22 01:15:17 2025 +0300

        trying to simplify naming short_base

    commit 556dfcd
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Tue Jul 22 00:14:49 2025 +0300

        updated tests, tracking still fails

    commit ef5833c
    Author: alexlib <alex.liberzon@gmail.com>
    Date:   Mon Jul 21 16:48:09 2025 +0300

        Create test_parameter_manager_prints.py

    commit cfe33a4
    Author: alexlib <alex.liberzon@gmail.com>
    Date:   Mon Jul 21 16:46:52 2025 +0300

        updated manager not to print all kind of attributes

    commit 973ca81
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Mon Jul 21 00:29:02 2025 +0300

        parameters are corrupted again

    commit 16c612c
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Sun Jul 20 23:52:44 2025 +0300

        updated legacy

    commit 361727e
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Sun Jul 20 23:22:52 2025 +0300

        obsolete

    commit 893ae6b
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Sun Jul 20 23:09:41 2025 +0300

        fixed EOF error

    commit b3a657c
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Sun Jul 20 23:03:49 2025 +0300

        simple reading in ptv.par

    commit 41b88df
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Sun Jul 20 23:03:46 2025 +0300

        simpler reading in ptv.par

    commit 9dbe355
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Sun Jul 20 22:51:36 2025 +0300

        simplified legacy and parameters_manager

    commit 3424286
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Sun Jul 20 00:34:39 2025 +0300

        trying to add File -> Open

    commit fdd9f0d
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Sat Jul 19 23:25:15 2025 +0300

        added File -> Open

    commit 8143911
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Sat Jul 19 23:03:12 2025 +0300

        fixed some ugly bugs

    commit ebf51d9
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Sat Jul 19 21:34:35 2025 +0300

        preparing track additional tests, on the way changed half of the code :)

    commit 7700ed1
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Sat Jul 19 00:31:57 2025 +0300

        almost all tests pass

    commit 146a074
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Sat Jul 19 00:29:32 2025 +0300

        updated a bit work with gui - yaml is default now

    commit d29692f
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Fri Jul 18 20:48:42 2025 +0300

        created new test with track/ two types with and without new particle not yet finished. added pyptv_batch only tracking or only sequence mode

    commit e357dd3
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Fri Jul 18 18:13:55 2025 +0300

        working on parameters. splitter makes life difficutl with default strings instead of image names

    commit 99f02b2
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Fri Jul 18 13:44:29 2025 +0300

        tests pass, but not additional ones yet

    commit a07929e
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Fri Jul 18 01:08:34 2025 +0300

        when you want better code you pay for it

    commit 79ef3bb
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Fri Jul 18 00:52:46 2025 +0300

        tried to fix default parameters in GUI, then changed all to num_cams and then it collapsed

    commit a536d0b
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Thu Jul 17 00:33:14 2025 +0300

        trach

    commit 176308f
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Thu Jul 17 00:33:06 2025 +0300

        need to test track

    * updated one more test

    * target_filenames created once under mainGui and kept through. also update plugins

    * added the new target_filenames

    * tests pass but obviously one of the last tests of tests/track prints wrong results.

    * Create check.yml

    * added test code editor for coverage

    * marked two qt tests

    * some tests are difficult due to the change in pyptv_gui use of target_filenames

    * dockerfile qt in __init__

    * Squashed commit of the following:

    commit 060285e
    Author: Alex Liberzon <alexlib@users.noreply.github.com>
    Date:   Mon Jul 28 21:11:42 2025 +0300

        fixed some tests. moved target_filenames to the parameters

    * copied from pbi dumbbell calibration module

    * removed py_rclick_delete obsolete

    * cleaning up

    * copied some version from pbi - but maybe it's wiser just to use pbi separately.

    * moved all to Python

    * fixed the dumbbell

    * separated gui tests, added batch to run, new github actions, and updated coverage summary.
    """

    * Update check.yml

    * removed old github workflows

    * remove check.yml

    * should possibly pass

    * Update requirements-dev.txt

    * try better

    * all gui in a separate folder

    * also this one

    * added img_orig

    * fixed the tests

    * we do not use uv right now, so we can remove it from the requirements-dev.txt file.

    * Update tests/test_parameter_manager_prints.py

    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

    * Update tests/test_parameter_manager.py

    I'm not sure the output is the same. the parameter files are written as single lines

    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

    * updated some markdown documents

    * organized readme

    ---------

    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

commit 9117426
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Fri Jun 27 19:05:15 2025 +0300

    simplified left and right click

commit fb9ad06
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Fri Jun 27 17:59:12 2025 +0300

    fixed the inputs

commit ef469a5
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Thu Jun 26 21:59:01 2025 +0300

    also docs

commit 5dbda3d
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Thu Jun 26 21:58:57 2025 +0300

    improved pyptv_batch_parallel

commit cbde753
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Thu Jun 26 21:34:51 2025 +0300

    improved pyptv_batch

    - push to master

commit 923fc68
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Tue Jun 24 21:09:14 2025 +0300

    fixed test environment

commit 9a033a4
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Tue Jun 24 20:53:36 2025 +0300

    improved printing of right click with the camera number

commit 8c41f19
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Mon Jun 23 22:38:17 2025 +0300

    parallel sequence - saves a lot of time (#90)

commit df41887
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Jun 22 18:43:31 2025 +0300

    0.3.7

commit 5f93a9d
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Jun 22 18:43:07 2025 +0300

    fixed calibration with particles

commit 77c794f
Merge: 73b3045 ed23415
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Jun 22 17:33:06 2025 +0300

    Merge branch 'master' of https://github.com/alexlib/pyptv

commit 73b3045
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Jun 22 17:33:02 2025 +0300

    waiting for optv>=0.3.0

commit ed23415
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Thu Jun 19 15:46:00 2025 +0300

    Bump urllib3 from 2.3.0 to 2.5.0 (#89)

    Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.3.0 to 2.5.0.
    - [Release notes](https://github.com/urllib3/urllib3/releases)
    - [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
    - [Commits](urllib3/urllib3@2.3.0...2.5.0)

    ---
    updated-dependencies:
    - dependency-name: urllib3
      dependency-version: 2.5.0
      dependency-type: direct:development
    ...

    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit 9b8f6fc
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Wed Jun 18 18:55:06 2025 +0300

    no more RenameParams, use manual rename on folder, detection shows orange crosses for clarity

commit 0795277
Merge: 3c7b983 53b4393
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Wed Jun 18 18:24:14 2025 +0300

    Merge branch 'master' of https://github.com/alexlib/pyptv

commit 3c7b983
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Wed Jun 18 18:24:13 2025 +0300

    exp_path in launch.json, detection_gui has discontuniuty and pyptv_gui works with qt not qt4

commit 53b4393
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Tue Jun 17 10:49:42 2025 +0300

    Bump protobuf from 6.30.1 to 6.31.1 (#88)

    Bumps [protobuf](https://github.com/protocolbuffers/protobuf) from 6.30.1 to 6.31.1.
    - [Release notes](https://github.com/protocolbuffers/protobuf/releases)
    - [Changelog](https://github.com/protocolbuffers/protobuf/blob/main/protobuf_release.bzl)
    - [Commits](protocolbuffers/protobuf@v6.30.1...v6.31.1)

    ---
    updated-dependencies:
    - dependency-name: protobuf
      dependency-version: 6.31.1
      dependency-type: direct:development
    ...

    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit ceeab93
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sat Jun 14 19:27:43 2025 +0300

    ruff

commit 0d67dc4
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Tue Jun 10 22:34:23 2025 +0300

    Update README.md

commit f293421
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Tue Jun 10 22:31:35 2025 +0300

    Update requirements-dev.txt

commit b9282bd
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Tue Jun 10 22:20:18 2025 +0300

    ruff fixed many format issues

commit ded205b
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Tue Jun 10 22:10:45 2025 +0300

    Bump tornado from 6.4.2 to 6.5.1 (#86)

    Bumps [tornado](https://github.com/tornadoweb/tornado) from 6.4.2 to 6.5.1.
    - [Changelog](https://github.com/tornadoweb/tornado/blob/master/docs/releases.rst)
    - [Commits](tornadoweb/tornado@v6.4.2...v6.5.1)

    ---
    updated-dependencies:
    - dependency-name: tornado
      dependency-version: 6.5.1
      dependency-type: direct:development
    ...

    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit 8c69863
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Tue Jun 10 22:10:33 2025 +0300

    Bump requests from 2.32.3 to 2.32.4 (#87)

    Bumps [requests](https://github.com/psf/requests) from 2.32.3 to 2.32.4.
    - [Release notes](https://github.com/psf/requests/releases)
    - [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
    - [Commits](psf/requests@v2.32.3...v2.32.4)

    ---
    updated-dependencies:
    - dependency-name: requests
      dependency-version: 2.32.4
      dependency-type: direct:development
    ...

    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit 107db07
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Tue Jun 10 22:06:54 2025 +0300

    Update pyptv_gui.py

commit c3b4593
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Tue May 27 00:48:32 2025 +0300

    fixed calibration_gui.py bugs

commit 45a5152
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Tue May 27 00:47:49 2025 +0300

    fixed more bugs in calibration_gui.py. need to bump version

commit 71817a2
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Mon May 26 23:31:24 2025 +0300

    another bug in protecting ori

commit ee7cfca
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Mon May 26 23:30:05 2025 +0300

    fixed critical bug in calibration_gui.py

commit ef699f5
Author: alexlib <alex.liberzon@gmail.com>
Date:   Sun May 25 08:55:55 2025 +0300

    Update ext_sequence_rembg_contour.py

commit 256eed3
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Fri May 23 17:39:43 2025 +0300

    updated

commit adff434
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Fri May 23 17:37:36 2025 +0300

    renamed to index.html to serve on github pages

    https://alexlib.github.io/pyptv

commit 5b2e3b1
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Fri May 23 17:34:37 2025 +0300

    written by skyworks

commit 0c36314
Merge: 4f379e8 2aa2ddd
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sat May 3 22:26:53 2025 +0300

    Merge branch 'plugin_remback'

commit 4f379e8
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Wed Apr 30 17:23:42 2025 +0300

    updated plugin. it works on exp2

commit 1cf3675
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Wed Apr 30 17:06:51 2025 +0300

    fixed reading string vs bytes

commit 2aa2ddd
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Wed Apr 30 16:59:57 2025 +0300

    moved to tests

commit 36e4aed
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Wed Apr 30 16:58:48 2025 +0300

    plugin is ready. copy to the working folder and see the magic in action

commit bae4bcc
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Wed Apr 30 16:57:30 2025 +0300

    works well. time to move it to plugin and test

commit c08a2fe
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Wed Apr 30 15:21:26 2025 +0300

    running up to 500

commit 721d19d
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Wed Apr 30 15:20:19 2025 +0300

    trying up to 500, seems to work. normalized plots to 1

commit e93515f
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Wed Apr 30 15:09:06 2025 +0300

    works great. plot is fine. testing on a larger set.

commit e99c7d1
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Wed Apr 30 15:00:48 2025 +0300

    not a good attempt

commit e268141
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Wed Apr 30 14:56:33 2025 +0300

    before merging masks

commit ccc7875
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Wed Apr 30 13:56:55 2025 +0300

    almost running

commit 913c562
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Tue Apr 29 22:52:08 2025 +0300

    working on a local plugin debugging

commit 72aea77
Author: alexlib <alex.liberzon@gmail.com>
Date:   Tue Apr 29 08:57:40 2025 +0300

    updated the way to read plugins list

commit 04d9565
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Mon Apr 28 22:58:04 2025 +0300

    Omer prepared a notebook that runs contour detection and pairwise distance over rembg result

commit c892fd1
Merge: 3a9601c 4d2a2e0
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Mon Apr 28 22:53:55 2025 +0300

    Merge branch 'master' into plugin_remback

commit 4d2a2e0
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Apr 13 20:11:12 2025 +0300

    stupid bug

commit 62a33ea
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Apr 13 20:07:11 2025 +0300

    updated python-package

commit 3e7722f
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Apr 13 19:44:59 2025 +0300

    added clean

commit 11ae461
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Apr 13 19:35:54 2025 +0300

    docker stuff failed. removing it all

commit 1afb08a
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Apr 13 12:36:54 2025 +0300

    removed obsolete, updated tests/test_cavity/parameters

commit aa8025b
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Apr 13 12:27:51 2025 +0300

    Fix Docker scripts to install dependencies step by step

commit d8d9bc5
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Apr 13 12:26:14 2025 +0300

    Fix Docker scripts to use python3 -m pip instead of pip3

commit 6c007eb
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Apr 13 12:24:51 2025 +0300

    Fix Docker scripts to ensure proper installation of PyPTV

commit 903bd08
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Apr 13 12:23:35 2025 +0300

    Clean up Docker setup: single script solution that works

commit 92a1271
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Apr 13 12:16:14 2025 +0300

    Add simplified Docker setup using dorowu/ubuntu-desktop-lxde-vnc

commit ca028d3
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Apr 13 12:13:33 2025 +0300

    Add clean, reliable Docker setup for PyPTV using consol/ubuntu-xfce-vnc

commit 02ebdac
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Apr 13 12:10:09 2025 +0300

    Update DOCKER_RUN.md with simplified Docker setup instructions

commit e563768
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Apr 13 12:09:22 2025 +0300

    Add simplified all-in-one Docker scripts for PyPTV

commit cc0d9fe
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Apr 13 12:04:31 2025 +0300

    Add script to install PyPTV in the dorowu container

commit 400abd9
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Apr 13 12:02:55 2025 +0300

    Add dorowu-based Docker setup for a simple and reliable VNC experience

commit 3189047
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Apr 13 12:01:28 2025 +0300

    Add TiredOfIt-based Docker setup for the most reliable VNC experience

commit 4add5c5
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Apr 13 11:56:07 2025 +0300

    Add Kasm-based Docker setup for more reliable VNC experience

commit 1a4c664
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Apr 13 11:42:00 2025 +0300

    Update Docker setup based on tiredofit/novnc for better cross-platform compatibility

commit 775fa9e
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Apr 13 10:14:42 2025 +0300

    Update DOCKER_RUN.md with minimal setup instructions

commit 6f5ad0a
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Apr 13 10:13:51 2025 +0300

    Add minimal Docker setup with linuxserver/webtop

commit 0c75c9f
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Apr 13 10:09:42 2025 +0300

    Update DOCKER_RUN.md with simple setup instructions

commit 4a04ef7
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Apr 13 10:08:53 2025 +0300

    Add simplified Docker setup with linuxserver/webtop base image

commit 6c421ae
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Apr 13 09:55:42 2025 +0300

    Remove authentication from Docker setup for local use

commit b0a072c
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Apr 13 01:40:09 2025 +0300

    Fix supervisord configuration to run as root

commit 1da04b2
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Apr 13 00:42:17 2025 +0300

    Fix VNC password setup in Docker configuration

commit 151681e
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Apr 13 00:32:45 2025 +0300

    Fix Dockerfile: Add tigervnc-common package for vncpasswd command

commit 37cc266
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Apr 13 00:26:59 2025 +0300

    Add comprehensive Docker usage guide for new users

commit 526d98f
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Apr 13 00:23:23 2025 +0300

    Add Docker setup with noVNC for cross-platform GUI access

commit 68c75a2
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Apr 13 00:15:58 2025 +0300

    Update DEFAULT_FRAME_NUM constant to match original value

commit fd08f53
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Apr 13 00:10:47 2025 +0300

    Improve code quality in ptv.py

commit 6b29de0
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sat Apr 12 23:57:41 2025 +0300

    moved test_calibration

commit d884c42
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sat Apr 12 23:53:42 2025 +0300

    added and fixed tests

commit 1380702
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sat Apr 12 22:57:00 2025 +0300

    tested windows on linux using wine

commit 1da337b
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sat Apr 12 22:52:51 2025 +0300

    also for Windows, but requires tests

commit 0542438
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sat Apr 12 22:48:55 2025 +0300

    bash scripts and tests for failing installation on linux

commit 404d05c
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Sat Apr 12 13:01:37 2025 +0300

    Bump zipp from 3.17.0 to 3.19.1 (#84)

    Bumps [zipp](https://github.com/jaraco/zipp) from 3.17.0 to 3.19.1.
    - [Release notes](https://github.com/jaraco/zipp/releases)
    - [Changelog](https://github.com/jaraco/zipp/blob/main/NEWS.rst)
    - [Commits](jaraco/zipp@v3.17.0...v3.19.1)

    ---
    updated-dependencies:
    - dependency-name: zipp
      dependency-version: 3.19.1
      dependency-type: direct:development
    ...

    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit 7734252
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Sat Apr 12 13:01:28 2025 +0300

    Bump tornado from 6.4 to 6.4.2 (#85)

    Bumps [tornado](https://github.com/tornadoweb/tornado) from 6.4 to 6.4.2.
    - [Changelog](https://github.com/tornadoweb/tornado/blob/v6.4.2/docs/releases.rst)
    - [Commits](tornadoweb/tornado@v6.4.0...v6.4.2)

    ---
    updated-dependencies:
    - dependency-name: tornado
      dependency-version: 6.4.2
      dependency-type: direct:development
    ...

    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit f8c7b15
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sat Apr 12 12:14:00 2025 +0300

    small tests and requirements fix

commit c7af950
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Mon Mar 24 01:27:25 2025 +0200

    not using claude

commit 54cd6a0
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Mon Mar 24 01:14:59 2025 +0200

    without verify

commit ed94c83
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Mon Mar 24 01:13:18 2025 +0200

    updated from the dockerfile

commit f7c5e2a
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Mon Mar 24 01:12:22 2025 +0200

    dockerfile works

commit 9bb641f
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Mar 23 23:34:35 2025 +0200

    updated Dockerfiles wit the optv test

commit 6ecacef
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Mar 23 23:14:01 2025 +0200

    removed emd

commit 085b81b
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Mar 23 22:54:21 2025 +0200

    updating Dockerfile for test, and github actions

commit cfb4787
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Mar 23 22:29:13 2025 +0200

    installation failure

commit 4468954
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Mar 23 22:27:16 2025 +0200

    removed decode

commit 407f2b3
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Mar 23 22:19:21 2025 +0200

    bumped version to 0.3.5 and fixed tests

commit 519598a
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Mar 23 22:09:03 2025 +0200

    updated pyptv_gui to work with mask_centers.tiffs

commit d995a5e
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sat Mar 22 15:51:37 2025 +0200

    removed obsolete scripts

commit 467f5db
Merge: 559a0cd 17b65ef
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sat Mar 22 15:09:18 2025 +0200

    Merge branch 'draw_mask' into feature/update-numpy-compatibility

commit 559a0cd
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sat Mar 22 15:08:43 2025 +0200

    still have to decode

commit 894be13
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sat Mar 22 01:17:25 2025 +0200

    trying to match the new opentpv with cython 3

commit 17b65ef
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Wed Mar 19 00:08:10 2025 +0200

    Update pyptv_gui.py

commit fc3be56
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Mon Mar 17 23:48:25 2025 +0200

    created mask_gui

commit 2eb6a5d
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Mar 16 00:11:24 2025 +0200

    updated pyptv.parameters

     and tried imageplot to get video multi view demo

commit 1273473
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Fri Mar 14 23:39:08 2025 +0200

    updated many things in shaking part

commit 84db4d8
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Thu Mar 13 00:36:53 2025 +0200

    py_multiplane never called

commit 879fa07
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Thu Mar 13 00:15:35 2025 +0200

    write ori using optv

commit 23f0fa1
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Wed Mar 12 23:42:40 2025 +0200

    commented out the writing command, saves time

commit bdc1cd7
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Wed Mar 12 00:40:42 2025 +0200

    works. with some glitches

commit 0505d8e
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Wed Mar 12 00:27:37 2025 +0200

    almost there. only drawing fails

commit 179236e
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Tue Mar 11 00:21:33 2025 +0200

    updated notebook

commit cf2bc92
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Tue Mar 11 00:21:17 2025 +0200

    updated calibration_gui

commit 7635bcf
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Tue Mar 11 00:18:07 2025 +0200

    updated notebook

commit 7956162
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Tue Mar 11 00:11:04 2025 +0200

    added full_scipy_calibration

commit 87c41b0
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Mon Mar 10 23:12:37 2025 +0200

    updated docstring

commit 40a095d
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Mon Mar 10 00:29:57 2025 +0200

    full calibration fails

commit 7f1c88c
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Mon Mar 10 00:08:07 2025 +0200

    started working on pbi's method

commit ff5e0c4
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Tue Mar 4 20:21:55 2025 +0200

    small update. we need to figure out how to know the img name

commit bbb4693
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Mon Mar 3 22:25:28 2025 +0200

    missing imports

commit 7dd76a6
Merge: f0be977 cd85e3c
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Mon Mar 3 21:55:30 2025 +0200

    Merge branch 'master' into calibration_from_particles

commit 3a9601c
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Thu Jan 2 23:32:53 2025 +0200

    renamed sequence and tracking plugins

commit 27b959b
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Thu Jan 2 23:29:03 2025 +0200

    fixed the names in the plugins list

commit 28ba3d9
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Thu Jan 2 23:23:34 2025 +0200

    so simple, rembg just works

commit 84d75b7
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Wed Jan 1 22:45:42 2025 +0200

    created external_sequence for Run30 LV project and updated Readme

commit f0be977
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Dec 29 00:17:25 2024 +0200

    some bug need to be fixed

commit ca15f3c
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Dec 29 00:09:03 2024 +0200

    added some bits for scipy.optimize.minimize

commit 673923f
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sun Dec 29 00:03:07 2024 +0200

    still in working

commit 8244e5a
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sat Dec 28 23:10:53 2024 +0200

    working on the jupyter notebook

commit e8f2157
Merge: a1deeb1 5e83775
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sat Dec 28 16:03:41 2024 +0200

    Merge branch 'master' into calibration_from_particles

commit a1deeb1
Author: Alex Liberzon <alexlib@users.noreply.github.com>
Date:   Sat Dec 28 12:41:02 2024 +0200

    first boilerplate
- Create comprehensive hybrid GUI (pyptv_gui_ttk.py) combining original functionality with modern enhancements
- Fix critical camera count initialization bug: changed 'if num_cameras:' to 'if num_cameras is not None:'
- Add complete menu system matching original pyptv_gui.py exactly:
  * File, Start, Preprocess, 3D Positions, Calibration, Sequence
  * Tracking, Plugins, Detection demo, Drawing mask, View, Help
- Implement all original menu action methods with proper signatures
- Add lightweight dependencies (no matplotlib/PIL issues)
- Support multiple layout modes: tabs, grid, single camera view
- Include interactive camera panels with zoom, pan, click handling
- Add tree navigation with context menus and parameter dialogs
- Implement dynamic camera count adjustment (--cameras argument works correctly)
- Add comprehensive documentation in docs/recent_changes.md
- Maintain complete backwards compatibility with original GUI
- Ready for integration with full PTV processing pipeline
alexlib and others added 6 commits August 30, 2025 00:29
- Replace Chaco/Enable/Traits with Tkinter/TTK and matplotlib
- Create experiment_ttk.py: Traits-free experiment management with ExperimentTTK class
- Complete parameter_gui_ttk.py: Full TTK parameter dialogs (Main, Calibration, Tracking)
- Update pyptv_gui_ttk.py: Integrate TTK experiment class and parameter dialogs
- Add MatplotlibCameraPanel: Full matplotlib image display with zoom, pan, overlays
- Update pyproject.toml: Remove old GUI dependencies, add new entry points
- Create comprehensive documentation and test suite
- Maintain backward compatibility with existing YAML files

Co-authored-by: openhands <openhands@all-hands.dev>
- Merged .gitignore updates from remote
- Combined with complete TTK parameter system integration
@alexlib alexlib changed the title Remove Enthought dependencies from Modern UI Complete TTK GUI conversion with parameter system integration Oct 3, 2025
- Fixed create_experiment_from_directory to properly handle YAML file discovery
- Updated main function to gracefully handle missing YAML files
- Added automatic YAML creation from .par files when no YAML exists
- Improved error handling and validation logic
- Added comprehensive test suites (test_gui_fixes.py, test_comprehensive_gui.py)
- Fixed 'YAML parameter file does not exist: None' error completely

The GUI now works with:
- Direct YAML file arguments
- Directory arguments (finds existing YAML or creates from .par files)
- Default test directory fallback
- Robust error handling for edge cases

Co-authored-by: openhands <openhands@all-hands.dev>
The comprehensive tests were used to validate the bug fixes but are not needed
in the repository as they duplicate existing test functionality.

Co-authored-by: openhands <openhands@all-hands.dev>
- Implemented proper init_system method that loads images from PTV parameters
- Added load_images_from_params method supporting both splitter mode and individual camera images
- Added initialize_cython_objects method to set up Cython parameter objects
- Added update_camera_displays method to refresh camera panels with loaded images
- Fixed parameter dialog integration with proper imports and error handling
- All core parameter system integration tests passing

Co-authored-by: openhands <openhands@all-hands.dev>
@alexlib alexlib changed the title Complete TTK GUI conversion with parameter system integration Complete TTK GUI conversion with full parameter system integration Oct 3, 2025
- Added documentation for parameter dialog integration fixes
- Added documentation for init system functionality implementation
- Added documentation for image loading from parameters
- Updated with latest commit information and test results
- Marked final status as FULLY FUNCTIONAL

Co-authored-by: openhands <openhands@all-hands.dev>
- Replaced ptv.py_pre_processing_c with scipy.ndimage.gaussian_filter implementation
- Implemented proper highpass filter using Gaussian blur subtraction technique
- Added image inversion support for inverse parameter
- Added mask application support for mask_flag parameter
- Ensured processed images are properly centered around 128 with valid range
- Updated camera displays after processing
- Added comprehensive error handling and progress feedback
- Tested and validated all functionality works correctly

Co-authored-by: openhands <openhands@all-hands.dev>
- Added comprehensive documentation of highpass filter implementation
- Documented scipy-based Gaussian filter approach
- Included testing results and validation
- Updated final status to reflect complete functionality

Co-authored-by: openhands <openhands@all-hands.dev>
- Implement complete img_coord_action method with ptv.py_detection_proc_c integration
- Add proper validation for initialization and image loading
- Implement complete corresp_action method with ptv.py_correspondences_proc_c integration
- Add _clean_correspondences helper method to filter invalid correspondences
- Add colored cross drawing for different correspondence types (pairs, triplets, quadruplets)
- Add comprehensive error handling and user feedback
- Integrate with existing drawcross_in_all_cams functionality
- All methods tested and verified working correctly

Co-authored-by: openhands <openhands@all-hands.dev>
…ces implementation

- Complete implementation guide for img_coord_action and corresp_action methods
- Technical details on OpenPTV integration via ptv.py functions
- Usage instructions and parameter requirements
- Architecture overview of Traits-free TTK implementation
- Testing methodology and validation approach

Co-authored-by: openhands <openhands@all-hands.dev>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants