STILL IN DEVELOPMENT. NEED TO FINISH UPDATING THE PBP VIEWER TO INCLUDE THE SORTER AND THEN UPDATED FILTERS.
Currently can download ADPAA and the PBP_Viewer is in there. It doesn't have the function to call it from anywhere though. If you can't call anything at all when ADPAA is downloaded. Check the ADPAA wiki page (link will be here).
Another option is I will upload the PBP_Viewer to a google drive and store the the program plus a few sample files to download. This means you won't have to download ADPAA if you don't want to, and would probably be an easier to get started with the program.
The programs itself only works if *.pbp.nc files produced by SODA, and *.pbp.nc files altered using the PBP_Viewer program. Not tested for other file types, but if you have another file type thats in the 1D (super long array) particle by particle format, feel free to give it a try and hopefully it works. If you have any questions in the next two or three years (currently 2024) feel free to ask and I might be able to help update the program to work with the different pbp file.
Pictures will be included here.
To open the program, run it using python. Either an IDE such as Spyder (maybe pycharm), or from the command line in an environment that can use python. From spyder I use e.g. runfile('PBP_Viewer_20240819.py', '06222000_232921_HVPS1.pbp.nc'). From the commandline with ADPAA installed I use ./PBP_Viewer.py filename. Can also use python3 PBP_Viewer.py filename.
For a list of particle characteristics to look at using the program SEE AARONS BANSEMERS MANUAL ON SODA LINK HERE.
To navigate the program, pictures will be included with graphics explaining. They'll be included below.
Circle 1: This is where the filters live. Selecting the dropdown menu allow you to select which filter you want to apply. (Currently has “time” and “diameter” filter.
Circle 2: Where the particle is displayed. The image is scaled (x and y dimension-wise) and flipped upside down to match the images on the SODA buffers.
Circle 3: Buttons to move backward “«”, exit the program “exit”, and move forward “»” through the particles.
Circle 4: Contains the particle data. For the particle image on the screen, the matching particle data is presented. By using the dropdown menu's, you can select which particle characteristic you want to look at.
Circle 5: This is where the particle sorter is. When opened, it allows you to categorize particles.
Circle 1: Dropdown menu to select which time filter you want to use. This image shows the time filter.
Circle 2:
Using the bottom entry box and button labeled “HHMMSS to Sec”, you can input a time in HHMMSS and convert it to seconds past midnight. It will run over 24:00:00. This is because SODA files also run past midnight and don't reset. It will show the conversion right below the entry box.
The top entry box uses the time provided to search through the pbp file and finds the first particle (that passes any other set filters) most closely matches the provided time.
Circle 1: Showing the time filter in use.
Circle 2: Whene the “search” button is selected, the program searches through the pbp file and finds the particle that most closely matches the provided time. In this case, the particle's time is 8 seconds after the provided time (87510 → 87518.05) since the HVPS encountered issues during the flight shown, and it was in the process of resetting at 87510.
Circle 1: To use the diameter filter, use the dropdown menu to select “diam”. Enter the minimum diameter in micrometers (um) in the entry box. Diameter filter will be remembered if another filter is selected.
Circle 2: Leading off of the particle at 87510 shown in the previous image, the diameter filter searched the pbp file for the next particle that met the requirement of 5000 um. The new particle is shown, and it's diameter is 5509.31 um. The program had to skip ahead by ~0.3 seconds to find this particle.
“File and Commands”: Still in development. Currently it can almost save the user-defined categories to the pbp file. Will include an open (doesn't need to be made actually should automaticallty open if categories are already defined. The close file should be useless then…. oh well i guess it'll just be a save categories then since the data is automatically going to be saved to the file.
“Click for warning”: Instructs you to save the category names to the file before origanizing particle in order to set up the new variable and any new categories that are being added.
“add row”: Adds a row to name or load a category and sets up the categorization buttons.
“Toggle Bindings”: Once the categories are defined/loaded, you can select this button to disable typing in the category boxes, and bind keys to each row for more convenient sorting instead of having to use the mouse to select everything. The buttons are “1, 2, 3, 4, 5” and “q, w, e, r, t”. They will be described with the next picture.
Here you can see that three rows/categories have been added to the file.
All the categories automatically start out with a value of -1. -1 means the particle is uncategorized. If you click “add” the value goes up 1 to a 0. 0 means that the particle is false for that category. Count up one more to 1, and 1 means that the particle is true for that category. All these values are shown on the right hand side of the box. “remove” counts down.
When you toggle the bindings (with the “Toggle Bindings” button), the entry boxes containing the categories are disabled, and “1, 2, 3, 4, 5” and “q, w, e, r, t” are binded respectively to the first through fifth row. Using “1 , 2, 3, 4, 5” counts up, and “q, w, e, r, t” count down.
HOW THE DATA IS SAVED.
Once the particle is categorized to your satisfaction, click on the forward or back (or use the right and left arrow keys if toggled on) arrow at the bottom of the PBP_Viewer window, and the particle categorization will be saved.
Troubleshooting section?
A note to include when finishing this guide. Should just work on linux. windows has issue with opening files as r+ which allows edits to made to the file which is what happens with the sorter. Making a copy of the file and running the program with the copy seemed to fix that issue. Looked like both the original and copy files had write permissions so im not sure what exactly the problem was.