Making the best of poor video quality

34 views
Skip to first unread message

Molly Roberts

unread,
Jun 25, 2025, 2:19:13 PMJun 25
to idtracker.ai users group
Hi, I'm trying to improve my video analysis process, and was wondering if there were recommendation for this? 

My videos (90 15-minute videos, each segmented into ~10 random 10s .avi clips, or ~900 clips!) are of ~100-200um larvae swimming against a black background, and depending on the light conditions they are picked up at a size on the videos of 5-300pixels. These larvae are difficult to grow, small, and swimming in 3D space, and it's not possible for me to take additional videos. 

So far, I have been successful in using the exclusive_rios with bounding boxes in the segmenter app to get clean tracks of the larvae. I use this after watching the clip at 36X speed, to determine that the animal is generally present throughout the entire clip. The larvae tend to "shimmer" and the lighting conditions differ with each clip, so the "background difference threshold" and "blob area threshold" is done very manually for each clip/video within a small range of values (5-30 background difference threshold, 5-8 lower limit and 60-300 upper limit blob area threshold). 

I recently discovered that in the new idtracker.ai 6.0.2 I'm able to simply run a file with a low contrast value and get an output of 12 tracks, with 2 of the 12 being the good ones, which is great because I think I will be able to filter the bad tracks out with code rather than manually. 

Is there a way to run the segmenter app with a series of settings / bash / toml files and select the best parameters for the video to best automate it? Or, I can run with the lowest common denominator settings (i.e. 5 background difference threshold, 5 lower limit and 300 upper limit blob area threshold) and select only the good runs. 

Are there any recommendation for optimizing this process? I'm attaching an image of the bad track and good track from the same run. 

Thanks for your time,
-Molly
“Screen_Shot” 2025-06-25 at 1.07.09 PM.png
“Screen_Shot” 2025-06-25 at 1.06.17 PM.png

Molly Roberts

unread,
Jun 25, 2025, 2:47:00 PMJun 25
to idtracker.ai users group
Just to clarify -- (and I'm only asking because version 6.0.3 is working so well!)

What if I were to run an in-line version of the segmentation app with a series of starting values for "background difference threshold" to get say ~10-20 animals, and then remove "bad trajectories" based on jumping behavior. Are there any functions built in that would do this for me?

The idtracker_validate gets rid of bad points, not bad trajectories (as far as I know), but I could do this in R / Python. 

Is there a way to use a series of starting inputs and have the number of animals as outputs to avoid having to specify this manually? I'm considering writing something in bash...

Thanks for considering,
-Molly

idtracker.ai

unread,
Jun 26, 2025, 5:48:22 AMJun 26
to molly.a...@gmail.com, idtracker.ai users group
Hi Molly,

Setting a higher number of animals than the real one to then filter out bad trajectories is not the standard but a very interesting way of using idtracker.ai. I never tried it so I don't know what results out of this and for sure the Validator won't help you on that cause it assumes all trajectories correspond to different animals. But please tell me how well this workflow works for you and your workarounds, I'm interested :)

You can automate running idtracker.ai with bash scripts (easiest way if you know bash) or even Python scripts. For that you can run some loops where you set your parameters either into a toml file to load it after using "--load", or directly in the command line call like "idtrackerai --load basic_parameters.toml --number_of_animals 634 --intensity_ths 20 255 --name test_with_634_animals ... --track". Use the flag "--track" to disable the segmentation GUI and start the tracking directly, and "--name" not to overwrite the same session folder.

After this batch processing, we don't have available tools to postprocess the way you need...

Apart from this, I don't get why the tracking is so bad in your screenshots. If possible could you share with me (in...@idtracker.ai) one of your clips to try it by myself?

Jordi

--
You received this message because you are subscribed to the Google Groups "idtracker.ai users group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to idtrackerai_us...@googlegroups.com.
To view this discussion, visit https://groups.google.com/d/msgid/idtrackerai_users/e5d106c2-1099-454d-83ee-948248c117dcn%40googlegroups.com.

Molly Roberts

unread,
Jul 2, 2025, 4:20:16 PMJul 2
to idtracker.ai users group
Thanks for the advice! 

I decided to work on optimizing the toml file automatically using 1 bash and 2 python files, however am having a new problem, that my new automatically generated ROIs are displaying correctly in idtrackerai and idtrackerai_validate, but exclusive_rois = True is no longer working, even though I do get Global Fragments. I have been using v6.0.3. Any recommendations? I've tried a few ways of getting exclusive_rois to work (through the CLI or through the toml file or through the browser OR both!), but there are tracks that are not constrained to the ROIs. Any recommendations? 

Loading parameters from /gpfs/home/emroberts/toml_files/scallop_T2/test_automation/clip_1_00:11:20.toml:          py_utils.py:83

                         video_paths=['/gpfs/scratch/emroberts/raw_videos/scallop/10s_clips/Time_2/3_14_7.3/Tank_2_14_7.3_               

         highlight_cam1/clip_1_00:11:20.avi']                                                                                            

                       intensity_ths=[10, 255]                                                                                           

                            area_ths=[5, 200]                                                                                            

                  tracking_intervals=None                                                                                                

                   number_of_animals=3                                                                                                   

                             use_bkg=True                                                                                                

                  check_segmentation=False                                                                                               

                 track_wo_identities=True                                                                                                

                            roi_list=['+ Polygon [[57.921, 490.235], [57.921, 540.685], [82.629, 540.685], [82.629,                      

         490.235]]',                                                                                                                     

                                      '+ Polygon [[744.460, 4.333], [744.460, 59.833], [768.042, 59.833], [768.042,                      

         4.333]]',                                                                                                                       

                                      '+ Polygon [[483.430, 240.950], [483.430, 306.367], [506.555, 306.367], [506.555,                  

         240.950]]',                                                                                                                     

                                      '+ Polygon [[1001.741, 707.009], [1001.741, 756.097], [1026.946, 756.097],                         

         [1026.946, 707.009]]',                                                                                                          

                                      '+ Polygon [[797.079, 907.891], [797.079, 959.296], [827.605, 959.296], [827.605,                  

         907.891]]',                                                                                                                     

                                      '+ Polygon [[451.515, 40.012], [451.515, 103.244], [487.444, 103.244], [487.444,                   

         40.012]]',                                                                                                                      

                                      '+ Polygon [[891.250, -9.399], [891.250, 30.506], [913.849, 30.506], [913.849,                     

         -9.399]]',                                                                                                                      

                                      '- Polygon [[1100.4, 8.7], [1115.0, 1074.7], [1119.3, 1101.9], [1932.7, 1101.9],                   

         [1932.7, -18.4], [1098.4, -16.3]]']                                                                                             

         background_subtraction_stat='min'                                                                                               

         Terminal arguments:                                                                                               __main__.py:47

                                   name='clip_1_00:11:20_run_thresh_10_roi'                                                              

                            video_paths=['/gpfs/scratch/emroberts/raw_videos/scallop/10s_clips/Time_2/3_14_7.3/Tank_2_14_7               

         .3_highlight_cam1/clip_1_00:11:20.avi']                                                                                         

                          intensity_ths=[10.0, 255.0]                                                                                    

                               area_ths=[5.0, 200.0]                                                                                     

                      number_of_animals=8                                                                                                

                                use_bkg=True                                                                                             

                         exclusive_rois=True                                                                                             

                    track_wo_identities=True                                                                                             

            background_subtraction_stat='min'                                                                                            

         number_of_frames_for_background=150                                                                                             

14:56:13 WARNING A new release of idtracker.ai is available: 6.0.3 -> 6.0.5                                              telemetry.py:117

         To update, run: "python -m pip install --upgrade idtrackerai"                                                                   

14:56:14 Using PyTorch 2.7.1+cu128                                                                                           device.py:13

         Using Cuda backend with "NVIDIA A100-PCIE-40GB"                                                                     device.py:26

14:56:16 START Tracking session                                                                                                 run.py:26

         Initializing Session                                                                                              session.py:156

         Setting video paths to:                                                                                           session.py:168

             /gpfs/scratch/emroberts/raw_videos/scallop/10s_clips/Time_2/3_14_7.3/Tank_2_14_7.3_highlight_cam1/clip_1_00:1               

         1:20.avi                                                                                                                        

         The session has 600 frames (2 episodes)                                                                           session.py:222

                 Episode 0, frames (0 -> 300) of /clip_1_00:11:20.avi                                                      session.py:229

                 Episode 1, frames (300 -> 600) of /clip_1_00:11:20.avi                                                    session.py:229

         Directory                                                                                                         session.py:261

         /gpfs/scratch/emroberts/raw_videos/scallop/10s_clips/Time_2/3_14_7.3/Tank_2_14_7.3_highlight_cam1/session_clip_1_               

         00:11:20_run_thresh_10_roi already exists                                                                                       

         Directory                                                                                                         session.py:262

         /gpfs/scratch/emroberts/raw_videos/scallop/10s_clips/Time_2/3_14_7.3/Tank_2_14_7.3_highlight_cam1/session_clip_1_               

         00:11:20_run_thresh_10_roi/preprocessing already exists                                                                         

         ROI mask saved at                                                                                                 session.py:590

         /gpfs/scratch/emroberts/raw_videos/scallop/10s_clips/Time_2/3_14_7.3/Tank_2_14_7.3_highlight_cam1/session_clip_1_               

         00:11:20_run_thresh_10_roi/preprocessing/ROI_mask.png                                                                           

         Number of parallel jobs: 4                                                                                        session.py:284

         Saving Session object in                                                                                              run.py:112

         /gpfs/scratch/emroberts/raw_videos/scallop/10s_clips/Time_2/3_14_7.3/Tank_2_14_7.3_highlight_cam1/session_clip_1_00:1           

         1:20_run_thresh_10_roi/session.json                                                                                             

         START Animal detection                                                                                           py_utils.py:196

         Directory                                                                                                animals_detection.py:17

         /gpfs/scratch/emroberts/raw_videos/scallop/10s_clips/Time_2/3_14_7.3/Tank_2_14_7.3_highlight_cam1/sessio                        

         n_clip_1_00:11:20_run_thresh_10_roi/bounding_box_images has been created                                                        

         Using previously computed background model from GUI                                                      animals_detection.py:29

         Segmenting video, 2 episodes in 4 parallel jobs                                                              segmentation.py:199

         Saving bounding box images in                                                                                segmentation.py:202

         /gpfs/scratch/emroberts/raw_videos/scallop/10s_clips/Time_2/3_14_7.3/Tank_2_14_7.3_highlight_cam1/session_cl                    

         ip_1_00:11:20_run_thresh_10_roi/bounding_box_images                                                                             

14:56:20 Segmenting video (2 iterations). It took 0:00:03                                                             segmentation.py:228

         Generating ListOfBlobs object                                                                                list_of_blobs.py:48

         2256 detected blobs in total, an average of 3.8 blobs per frame                                          animals_detection.py:57

         WARNING There are no frames where the number of blobs is equal to the number of animals stated by the    animals_detection.py:86

         user 8. Depending on the video this is inevitable and idtracker.ai can handle it. But, if possible,                             

         check the segmentation parameters to make sure your animals are visible and properly segmented.                                 

         There are 0 frames with more blobs than animals                                                         animals_detection.py:101

         FINISH Animal detection, it took 0:00:04                                                                         py_utils.py:201

         Saving Session object in                                                                                              run.py:112

         /gpfs/scratch/emroberts/raw_videos/scallop/10s_clips/Time_2/3_14_7.3/Tank_2_14_7.3_highlight_cam1/session_clip_1_00:1           

         1:20_run_thresh_10_roi/session.json                                                                                             

         Saving ListOfBlobs at                                                                                                 run.py:114

         /gpfs/scratch/emroberts/raw_videos/scallop/10s_clips/Time_2/3_14_7.3/Tank_2_14_7.3_highlight_cam1/session_clip_1_00:1           

         1:20_run_thresh_10_roi/preprocessing/list_of_blobs.pickle                                                                       

         Writing list_of_blobs.pickle (326.6 kB). It took 0:00:00                                                    list_of_blobs.py:100

         START Crossing detection                                                                                         py_utils.py:196

         Computing body lengths (600 iterations). It took 0:00:00                                                        model_area.py:75

         Computing body lengths (2256 iterations). It took 0:00:00                                                       model_area.py:83

         The median body length is 7.8 pixels                                                                            model_area.py:89

         The automatic identification image size is 6                                                                      session.py:492

         No resolution reduction required                                                                                  session.py:505

         Identification image size set to [6, 6, 1], resolution reduction factor set to 1                                  session.py:540

         Directory                                                                                                         __init__.py:27

         /gpfs/scratch/emroberts/raw_videos/scallop/10s_clips/Time_2/3_14_7.3/Tank_2_14_7.3_highlight_cam1/session_clip_1_               

         00:11:20_run_thresh_10_roi/identification_images has been emptied                                                               

14:56:21 Setting images for identification (2 iterations). It took 0:00:00                                           list_of_blobs.py:226

         Connecting blobs (600 iterations). It took 0:00:00                                                          list_of_blobs.py:161

         Classifying Blobs as individuals or crossings depending on their area and the number of blobs in the     crossing_detector.py:31

         frame                                                                                                                           

         Initializing ModelArea for individual/crossing blob initial classification                                      model_area.py:40

         Model area computed with 2256 blobs: mean=18.3, median=18.0, and std=10.0 pixels                                model_area.py:59

         2256 blobs seem like individuals, 0 seem like crossings                                                  crossing_detector.py:46

         Get list of blobs for training, validation and eval                                                      crossings_dataset.py:18

         First individual/crossing assignment (600 iterations). It took 0:00:00                                   crossings_dataset.py:22

         0 sure individuals and 0 sure crossings                                                                  crossings_dataset.py:46

         0 individual and 0 crossing blobs for training                                                           crossings_dataset.py:83

         0 individual and 0 crossing blobs for validation                                                                                

         2256 unknown blobs                                                                                       crossing_detector.py:98

         There are not enough crossings to train the crossing detector                                           crossing_detector.py:104

         FINISH Crossing detection, it took 0:00:01                                                                       py_utils.py:201

         Saving Session object in                                                                                              run.py:112

         /gpfs/scratch/emroberts/raw_videos/scallop/10s_clips/Time_2/3_14_7.3/Tank_2_14_7.3_highlight_cam1/session_clip_1_00:1           

         1:20_run_thresh_10_roi/session.json                                                                                             

         Saving ListOfBlobs at                                                                                                 run.py:114

         /gpfs/scratch/emroberts/raw_videos/scallop/10s_clips/Time_2/3_14_7.3/Tank_2_14_7.3_highlight_cam1/session_clip_1_00:1           

         1:20_run_thresh_10_roi/preprocessing/list_of_blobs.pickle                                                                       

         Writing list_of_blobs.pickle (376.4 kB). It took 0:00:00                                                    list_of_blobs.py:100

         START Fragmentation                                                                                              py_utils.py:196

         Finding blob's exclusive ROI (2256 iterations). It took 0:00:00                                              fragmentation.py:85

         Fragmenting blobs (600 iterations). It took 0:00:00                                                          fragmentation.py:59

         Creating list of fragments                                                                              list_of_fragments.py:191

         Connecting coexisting fragments (264 iterations). It took 0:00:00                                       list_of_fragments.py:432

         264 Fragments in total, 264 individuals and 0 crossings                                                      fragmentation.py:30

         Total number of Global Fragments: 0                                                               list_of_global_fragments.py:78

         Of which 0 are long enough to be accumulated                                                      list_of_global_fragments.py:82

         FINISH Fragmentation, it took 0:00:00                                                                            py_utils.py:201

         Saving Session object in                                                                                              run.py:112

         /gpfs/scratch/emroberts/raw_videos/scallop/10s_clips/Time_2/3_14_7.3/Tank_2_14_7.3_highlight_cam1/session_clip_1_00:1           

         1:20_run_thresh_10_roi/session.json                                                                                             

         Saving ListOfBlobs at                                                                                                 run.py:114

         /gpfs/scratch/emroberts/raw_videos/scallop/10s_clips/Time_2/3_14_7.3/Tank_2_14_7.3_highlight_cam1/session_clip_1_00:1           

         1:20_run_thresh_10_roi/preprocessing/list_of_blobs.pickle                                                                       

         Writing list_of_blobs.pickle (385.5 kB). It took 0:00:00                                                    list_of_blobs.py:100

         Saving ListOfFragments as                                                                                             run.py:116

         /gpfs/scratch/emroberts/raw_videos/scallop/10s_clips/Time_2/3_14_7.3/Tank_2_14_7.3_highlight_cam1/session_clip_1_00:1           

         1:20_run_thresh_10_roi/preprocessing/list_of_fragments.json                                                                     

14:56:22 Writing list_of_fragments.json (123.4 kB). It took 0:00:00                                              list_of_fragments.py:242

         Saving ListOfGlobalFragments at                                                                                       run.py:118

         /gpfs/scratch/emroberts/raw_videos/scallop/10s_clips/Time_2/3_14_7.3/Tank_2_14_7.3_highlight_cam1/session_clip_1_00:1           

         1:20_run_thresh_10_roi/preprocessing/list_of_global_fragments.json                                                              

         START Tracking                                                                                                   py_utils.py:196

         Tracking without identities                                                                                       __init__.py:59

         Assigning random identities (600 iterations). It took 0:00:00                                                     __init__.py:64

         FINISH Tracking, it took 0:00:00                                                                                 py_utils.py:201

         Saving Session object in                                                                                              run.py:112

         /gpfs/scratch/emroberts/raw_videos/scallop/10s_clips/Time_2/3_14_7.3/Tank_2_14_7.3_highlight_cam1/session_clip_1_00:1           

         1:20_run_thresh_10_roi/session.json                                                                                             

         Saving ListOfBlobs at                                                                                                 run.py:114

         /gpfs/scratch/emroberts/raw_videos/scallop/10s_clips/Time_2/3_14_7.3/Tank_2_14_7.3_highlight_cam1/session_clip_1_00:1           

         1:20_run_thresh_10_roi/preprocessing/list_of_blobs.pickle                                                                       

         Writing list_of_blobs.pickle (394.5 kB). It took 0:00:00                                                    list_of_blobs.py:100

         Saving ListOfFragments as                                                                                             run.py:116

         /gpfs/scratch/emroberts/raw_videos/scallop/10s_clips/Time_2/3_14_7.3/Tank_2_14_7.3_highlight_cam1/session_clip_1_00:1           

         1:20_run_thresh_10_roi/preprocessing/list_of_fragments.json                                                                     

         Writing list_of_fragments.json (123.4 kB). It took 0:00:00                                              list_of_fragments.py:242

         Saving ListOfGlobalFragments at                                                                                       run.py:118

         /gpfs/scratch/emroberts/raw_videos/scallop/10s_clips/Time_2/3_14_7.3/Tank_2_14_7.3_highlight_cam1/session_clip_1_00:1           

         1:20_run_thresh_10_roi/preprocessing/list_of_global_fragments.json                                                              

         START Trajectories creation                                                                                      py_utils.py:196

         Directory                                                                                            trajectories_creation.py:80

         /gpfs/scratch/emroberts/raw_videos/scallop/10s_clips/Time_2/3_14_7.3/Tank_2_14_7.3_highlight_cam1/se                            

         ssion_clip_1_00:11:20_run_thresh_10_roi/trajectories has been emptied                                                           

         Producing trajectories (600 iterations). It took 0:00:00                                            trajectories_creation.py:129

         Saving trajectories in                                                                                     trajectories_io.py:87

         /gpfs/scratch/emroberts/raw_videos/scallop/10s_clips/Time_2/3_14_7.3/Tank_2_14_7.3_highlight_cam1/session_                      

         clip_1_00:11:20_run_thresh_10_roi/trajectories/trajectories.h5                                                                  

         Creating converter from 5 to 3                                                                                      attrs.py:205

         Saving trajectories in                                                                                     trajectories_io.py:40

         /gpfs/scratch/emroberts/raw_videos/scallop/10s_clips/Time_2/3_14_7.3/Tank_2_14_7.3_highlight_cam1/session_                      

         clip_1_00:11:20_run_thresh_10_roi/trajectories/trajectories.npy                                                                 

         Saving trajectories in                                                                                     trajectories_io.py:53

         /gpfs/scratch/emroberts/raw_videos/scallop/10s_clips/Time_2/3_14_7.3/Tank_2_14_7.3_highlight_cam1/session_                      

         clip_1_00:11:20_run_thresh_10_roi/trajectories/trajectories_csv                                                                 

         Directory                                                                                                  trajectories_io.py:54

         /gpfs/scratch/emroberts/raw_videos/scallop/10s_clips/Time_2/3_14_7.3/Tank_2_14_7.3_highlight_cam1/session_                      

         clip_1_00:11:20_run_thresh_10_roi/trajectories/trajectories_csv has been created                                                

         FINISH Trajectories creation, it took 0:00:00                                                                    py_utils.py:201

         FINISH Tracking session, it took 0:00:05                                                                               run.py:67

         Saving Session object in                                                                                              run.py:112

         /gpfs/scratch/emroberts/raw_videos/scallop/10s_clips/Time_2/3_14_7.3/Tank_2_14_7.3_highlight_cam1/session_clip_1_00:1           

         1:20_run_thresh_10_roi/session.json                                                                                             

         Saving ListOfBlobs at                                                                                                 run.py:114

         /gpfs/scratch/emroberts/raw_videos/scallop/10s_clips/Time_2/3_14_7.3/Tank_2_14_7.3_highlight_cam1/session_clip_1_00:1           

         1:20_run_thresh_10_roi/preprocessing/list_of_blobs.pickle                                                                       

         Writing list_of_blobs.pickle (394.5 kB). It took 0:00:00                                                    list_of_blobs.py:100

         Saving ListOfFragments as                                                                                             run.py:116

         /gpfs/scratch/emroberts/raw_videos/scallop/10s_clips/Time_2/3_14_7.3/Tank_2_14_7.3_highlight_cam1/session_clip_1_00:1           

         1:20_run_thresh_10_roi/preprocessing/list_of_fragments.json                                                                     

         Writing list_of_fragments.json (123.4 kB). It took 0:00:00                                              list_of_fragments.py:242

         Saving ListOfGlobalFragments at                                                                                       run.py:118

         /gpfs/scratch/emroberts/raw_videos/scallop/10s_clips/Time_2/3_14_7.3/Tank_2_14_7.3_highlight_cam1/session_clip_1_00:1           

         1:20_run_thresh_10_roi/preprocessing/list_of_global_fragments.json                                                              

         Tracked without identities, no estimated accuracy available.                                                           run.py:71

         Data policy: 'idmatcher.ai'                                                                                       session.py:951

         Directory                                                                                                         session.py:970

         /gpfs/scratch/emroberts/raw_videos/scallop/10s_clips/Time_2/3_14_7.3/Tank_2_14_7.3_highlight_cam1/session_clip_1_               

         00:11:20_run_thresh_10_roi/bounding_box_images has been removed                                                                 

         Directory                                                                                                         session.py:971

         /gpfs/scratch/emroberts/raw_videos/scallop/10s_clips/Time_2/3_14_7.3/Tank_2_14_7.3_highlight_cam1/session_clip_1_               

         00:11:20_run_thresh_10_roi/crossings_detector not found, can't remove                                                           

         Compressing identification images (2 iterations). It took 0:00:00                                                 session.py:987

         Success                                                                                                                run.py:81

         Log file copied to                                                                                                    run.py:106

         /gpfs/scratch/emroberts/raw_videos/scallop/10s_clips/Time_2/3_14_7.3/Tank_2_14_7.3_highlight_cam1/session_clip_1_00:1           

         1:20_run_thresh_10_roi/idtrackerai.log      

idtracker.ai

unread,
Jul 3, 2025, 12:38:03 PMJul 3
to molly.a...@gmail.com, idtracker.ai users group
Hi,

Exclusive ROIs were not intended to work with "tracking without identities". "Tracking without identities" was designed as an extra option that bypasses most of the idtrackerai processes and error corrections.

Since you asked, I just released version 6.0.6 including exclusive ROIs to work with "tracking without identities". Give it a try!

Jordi

Molly Roberts

unread,
Jul 3, 2025, 5:43:21 PMJul 3
to idtracker.ai users group
Thanks again for your quick response. 

I had an an issue upgrading from 6.0.3 to 6.0.6 because I am using PyQt5 (I'm on a linux machine and can't do the sudo fix for using PyQt6). We made 2 changes to the QT Icon call (see attached image below) and then the upgrade to 6.0.6 seems to have worked. I'm attaching my history below. 

Thanks again! I'm looking forwared to trying this out! 
-Molly



Here is my history... 

 1155  2025-07-03 16:38:34 conda create -n idtrackerai_py12 python=3.12.0 -y

 1156  2025-07-03 16:39:42 conda activate idtrackerai_py12

 1157  2025-07-03 16:39:58 whereis python

 1158  2025-07-03 16:40:57 conda install pip

 1159  2025-07-03 16:41:05 whereis pip

 1160  2025-07-03 16:41:24 /gpfs/home/emroberts/.conda/envs/idtrackerai_py12/bin/pip install idtrackerai

 1161  2025-07-03 16:41:42 /gpfs/home/emroberts/.conda/envs/idtrackerai_py12/bin/pip install PyQt6

 1162  2025-07-03 16:41:50 idtrackerai_validate

 1163  2025-07-03 16:42:25 conda list

 1164  2025-07-03 16:42:58 conda install PyQt5

 1165  2025-07-03 16:43:05 conda install pyqt5

 1166  2025-07-03 16:43:22 /gpfs/home/emroberts/.conda/envs/idtrackerai_py12/bin/pip uninstall PyQt6

 1167  2025-07-03 16:43:41 /gpfs/home/emroberts/.conda/envs/idtrackerai_py12/bin/pip install PyQt5

 1168  2025-07-03 16:43:48 idtrackerai_validate

 1169  2025-07-03 16:49:42 whereis pip

 1170  2025-07-03 16:51:58 ls /gpfs/home/emroberts/.local/lib/python3.12/site-packages/idtrackerai/

 1171  2025-07-03 16:52:22 pip list

 1172  2025-07-03 16:52:36 /gpfs/home/emroberts/.conda/envs/idtrackerai_py12/bin/pip list

 1173  2025-07-03 16:52:59 cd /gpfs/home/emroberts/.conda/envs/idtrackerai_py12

 1174  2025-07-03 16:53:00 ls

 1175  2025-07-03 16:53:03 cd lib/

 1176  2025-07-03 16:53:03 ls

 1177  2025-07-03 16:53:16 cd ..

 1178  2025-07-03 16:53:17 ls

 1179  2025-07-03 16:53:24 grep -R 'idtrack' ./

 1180  2025-07-03 16:54:43 nano lib/python3.12/site-packages/idtrackerai/GUI_tools/widgets_utils/video_player.py 

 1181  2025-07-03 16:57:08 cd

 1182  2025-07-03 16:57:14 idtrackerai_validate

 1183  2025-07-03 16:59:13 nano /gpfs/home/emroberts/.conda/envs/idtrackerai_py12/lib/python3.12/site-packages/idtrackerai/GUI_tools/widgets_utils/video_player.py 

 1184  2025-07-03 16:59:40 idtrackerai_validate

 1185  2025-07-03 17:01:04 nano /gpfs/home/emroberts/.conda/envs/idtrackerai_py12/lib/python3.12/site-packages/idtrackerai/GUI_tools/widgets_utils/video_player.py 

 1186  2025-07-03 17:02:21 idtrackerai_validate




“Screen_Shot” 2025-07-03 at 5.04.57 PM.png

idtracker.ai

unread,
Jul 4, 2025, 10:44:19 AMJul 4
to molly.a...@gmail.com, idtracker.ai users group
Oh no! So sorry, I didn't double check the compatibility with PyQt5. I released yet another version (6.0.7) with this hotfix. Hoping to stop releasing versions every week soon 😅.

Jordi

Molly Roberts

unread,
Jul 9, 2025, 4:26:35 PMJul 9
to idtracker.ai users group
Thanks! It's working! Some time soon I'll post the bash code I am using to automatically generate the ROI "arenas!" 
Reply all
Reply to author
Forward
0 new messages