New: Free Open-Source Tools from ONI to Accelerate Nanoparticle Research learn more >
EVP2 Axis

Last updated June 10, 2025
Free and open-source analysis tool for easy analysis for extracellular vesicles (EVs) data across multiple datasets.
Instructions
Getting Started
Designed for use with datasets acquired from NimOs and AutoEV and analyzed with the EV Profiler analysis tool, it allows users to generate both standardized and custom plots with user-defined sample names, analyzing features like EVs counts, size and positivity plots and more for each field of view (FOV).
Setup Requirements
EVP2 Axis uses data from NimOS or AutoEV, analyzed in CODI using the EV Profiler analyses. To use it, data must be downloaded from CODI using the batch download feature (Figures 1-4). This program is designed for standard acquisition AutoEV or NimOS. If you are using one of the base EV Profiler 2 kits, this is how the channels should be named (replace “Custom Protein” with your name of choice).
Table 1: Base Kits and Corresponding Imaging Channels for EV Marker Profiling
Base Kit | Imaged With | Channel 0 | Channel 1 | Channel 2 |
---|---|---|---|---|
Tetraspanin Profiling | NimOS | CD63 | CD81 | CD9 |
Tetraspanin Profiling | AutoEV | CD81 | CD63 | CD9 |
Pan-EV and Tetraspanin Trio | NimOS | Tet Trio | Pan-EV | |
Pan-EV and Tetraspanin Trio | AutoEV | Tet Trio | Pan-EV | |
Pan-EV, Tetraspanin Trio, and Custom Protein | NimOS | Tet Trio | Custom Protein | Pan-EV |
Pan-EV, Tetraspanin Trio, and Custom Protein | AutoEV | Custom Protein | Tet Trio | Pan-EV |
Download Results from CODI
- Go to your collaboration of choice and click the “Analysis results” button on the left side (Figure 1, yellow box).
- Then, on the upper section click “batch download” (Figure 2, yellow box).
- Scroll to your datasets of choice and click the empty circles to fill them in (Figure 3, yellow arrows).
- Change the name in the upper section (Figure 4, yellow box) then click “download X results” (Figure 4, pink box). A zip file will download automatically. Open the zip file: there are four files. Save them anywhere.
Figure 1: Within a CODI collaboration, click this button to view analysis results
Figure 2: In the Analysis Results section of CODI at the top, the “batch download” button initiates checkboxes next to each analysis
Figure 3: Select each analysis/FOV for this experiment to download
Figure 4: Once all FOVs are selected, change the name in the yellow box to your experiment title, then click the download button (pink box) to download the results. This might take a few minutes so do not close the tab.
Run GUI to Input and Re-Process Data
- Download the GUI zip file.
- Double click the code executable. The main window should appear (Figure 6)
Note
The code executable is under “EVP2 Axis/dist/EVP2 Axis/EVP2 Axis.exe” (Figure 5, pink arrow)
Figure 5: Appearance of executable file to double-click to run (pink arrow)
- If you have an issue with the GUI opening automatically, troubleshooting steps are listed below under “Troubleshooting” and shown in Figures 30-34 – First, click the blue “Browse” button on the main menu (Figure 7, yellow arrow) and navigate to the folder containing your results batch file from Step 1D. Then Select the “Choose” button in Figure 8 (yellow arrow)
Figure 6: Main window of the program
Figure 7: Browsing through folders to find the results file
Figure 8: Select “Choose” once you’ve found the results file
Figure 9: Enter channel names and hit Go to run
- Then, fill out the channel information next to “Channel 0”, “Channel 1”, and “Channel 2” (Figure 9, yellow arrow). If you do not know your channel numbers, there is a table below with the main example EV Profiler 2 configurations and which channel is which marker (Figure 9, pink arrow). For Pan-EV + Tetraspanin Trio (with no custom protein), leave the empty channel blank. For Pan-EV + Tetraspanin Trio + Custom, replace “Custom” with the name of your marker of choice.
- When you are ready, click the “Go” button (Figure 9, green arrow). At any time, click the red “Cancel” button or exit the app to cancel this run.
- The next window (“Experiment Details”) will appear (Figure 10) showing a row of each lane found in the results file chosen. This section is quite modifiable and user-defined (Figure 11, yellow arrows). The “Sample Name” will determine how the plots are generated: each Lane with the same Sample Name will be combined. Each row will automatically list the chip # as 1 to show the user where to type in the chip number – replace the “1” with the actual Chip ID for each lane. This is optional but will be useful if you’d like to color any data by chip number.
Note
- If you have more than 4 different lanes (i.e., more than one chip), the lanes will be scrollable: there is a scroll bar on the right. To help in telling if you’ve completed all of the entries, there is a “Start” and “Stop” row before and after the entries, respectively (Figure 11, orange arrows).
- If the titles listed under the “Lane” column are adequate, check the box “Keep Lane Names as Sample Names”, which will automatically copy the Lane names and you can leave this column blank (Figure 11, blue arrow).
- There is a checkbox under the table entitled “Show Graphs?” (Figure 11, pink arrow). You may uncheck this box if you don’t want the auto-generated plots to appear as pop-up windows. They will still be saved in the same folder as the results file.
- When you are ready, click the green “Go” button (Figure 11, green arrow).
Figure 10: Experiment Details window
Figure 11A: The Sample Name column and chip # column are just placeholders: please input your custom names and chip numbers and click Go to run.
Figure 11B: This is an example of what the sheet looks like with chip numbers filled out.
Auto-Generated Plots
Cluster Count Swarm Plot (Figure 12)
- The first pop-up plot that is generated is a dot plot (swarm plot, similar to the plots in GraphPad Prism) where the X axis is separated by the Sample Names input in the Experiment Details window, and the dots are colored by chip. The Y axis shows the total number of EVs per FOV.
Figure 12: Cluster Count Swarm Plot example separated by Sample Name and colored by chip number
Biomarker Distributions
- The second pop-up plot that is generated is one of two stacked histograms showing the proportion of the EV population in each combination of markers (single-positive, double-positive, etc.) (Figure 13) If you have one channel, there will be one positivity group and this plot might not be very useful. If you have two channels, there will be three positivity groups (2 single-positive and 1 double-positive). If you have three channels, there will be seven positivity groups (3 single-positive, 3 double-positive and 1 triple-positive).
- The displayed plot (“Normalized Biotype Distribution by Sample”) normalizes the data such that each FOV is normalized to 100%. The height of all of the bars will be equal, representing 100% of the EVs in each FOV averaged for the sample. If your experiment has negative control lanes where there are no EVs (no capture, etc.) the results might look quite skewed or strange for this lane, in which case potentially the first plot generated, which is the normalized one, is more informative than the second. These plots are reminiscent of the plots that are generated in the CODI cross-dataset report/AutoEV output reports.
- A second plot is generated and saved, but not shown (“Biotype Distribution by Sample”). This plot shows the total number of clusters (EVs) per Sample Name (data from all lanes and FOVs per Sample) of each positivity type, with error bars showing standard deviation of the positivity in all FOVs. The height of the bars will be different depending on the average number of FOVs.
Figure 13: Biotype distribution histograms normalized to 100%
Marker Positivity
- The third and last pop-up plot that is generated has bar charts showing marker positivity of EVs, that is, the total number of EVs positive for each of the channels regardless of its positivity in other channels (Figure 14). Therefore, an EV that is double-positive will count toward the positivity of each of the channels. There are N number of markers in this case, representing N number of channels. These plots will not be generated if your assay only has one channel, as each bar would be 100%.
- The displayed plot shows the normalized marker positivity per FOV. For example, in the plot in Figure 16, we can see that for each FOV in the Sample ‘Aged Perm’, ~20-30% of the EVs are positive for Syntenin, ~60% are positive for Tet Trio, and ~100% are positive for Pan-EV. Again, these numbers will add up to more than 100%. To see the actual values, read on to Step 4: Understanding downloaded summary statistics.
- A second plot generated but not shown displays the average number of clusters positive for each channel per FOV. For example, these data would show that on average each FOV in the Sample ‘Ctrl Perm’ has ~950 EVs positive for Syntenin, ~2000 positive for Tet Trio, and ~4000 positive for Pan-EV. This does not mean there are 6950 EVs per FOV, since many EVs will be counted in 2 or more groups.
Figure 14: Marker positivity histograms normalized to 100%
Custom Plot: Joint Scatterplot with Side Histograms
- As the three generated plots pop up (or not, if you unchecked “Show Graphs?” earlier), another window appears entitled “Scatter Plot Generator” (Figure 15). This window generates X number of plots for X number of Samples as identified earlier (“Sample Name”). Every other aspect of the plots are customizable.
Figure 15: Scatter plot generator window
- These plots are generated on a per-EV basis and do not have means, standard deviations, etc.
- “X Axis Statistic” is the statistic that will be plotted on the X axis: in the example plot in Figure 19, it is “Number of localizations” (i.e., number of locs per EV). See Figure 16 for all of the X-Axis options.
- “Split Statistic” is the optional statistic that will color the points. For example, in Figure 19, the split_Stat is “Chip #”, coloring each EV by chip. Another example could be Positivity, in which EVs will be colored based on their combinatorial positivity group (See explanation above: if one channel, only one group/color. If two channels, three groups/colors. If three channels, seven groups/colors). See all options in Figure 17.
- Select “None” for split_Stat if you want all EVs to be one color.
- “yaxis_Stat” is the statistic that will be plotted on the Y axis: these options are the same as the X axis in Figure 16.
Figure 16: Scatter plot generator dropdowns: All examples of statistics that can be plotted on the X axis and/or the Y axis
Figure 17: Scatter plot generator dropdowns: All examples of statistics that can split the data by color
- If you do not already have an idea of what the data is going to look like, or just want to auto-scale the axes, you may check the “Auto-Scale” checkbox. Otherwise, you can set the axis minimums and maximums, as well as plot transparency, in the rest of the window. See Figure 18 for a filled-out window, and Figure 19 for the example plot generated from these settings. These plots will save in the same folder as the results file, and you may use this window to make as many as you’d like.
- Once you are ready, click the “Plot” button at the bottom of the window.
Note
- If you want to skip ahead to a different plot type, click the “Skip” button.
- One of the generated plots will pop up: If you are unhappy with the plot, go back to the scatter plot window and change any of the settings. If you are happy with the plot, click “Next” at the bottom of the plot (Figure 19).
Note
- Split statistic: Please note you must select one option in order to generate a plot. If the choice is left blank, no plots will appear.
Figure 18: Example scatter plot generator filled out
Figure 19: Example output from Figure 18
Custom Plot: Violin Plots
- After clicking either “Skip” in the Scatter Plot Generator window or “Next” in the plot window, a new window pops up entitled “Violin Plot Generator” (Figure 20). This window generates one violin plot for the chosen statistic (Diameter (nm) in Figure 21) separated by Sample Name and optionally colored by the chosen Split Statistic.
Figure 20: Violin Plot Generator window
- “Plotting Statistic” is the statistic that will be plotted along the X axis: in Figure 21, it is Diameter (nm). The options are the same as in Figure 16.
- There is an option to color based on a split_Stat (options in Figure 17).
- Alternatively, you can set the split_Stat to None (Figure 21), which will color the violin plots by sample name (Figure 22).
- You may also plot these data on a log scale—just check the “Log Scale?” checkbox below the “Split Statistic” dropdown menu.
- Once you are ready, click the “Plot” button at the bottom of the window. If you want to skip ahead to a different plot type, click the “Skip” button.
- One of the generated plots will pop up: if you are unhappy with the plot, go back to the violin plot window and change any of the settings. If you are happy with the plot, click “Next” at the bottom of the plot (Figure 22).
Figure 21: Example filled out violin plot generator
Figure 22: Example output from Figure 21
Custom Plot: Histograms
- After clicking either “Skip” in the Violin Plot Generator window or “Next” in the plot window, a new window pops up entitled “Histogram Generator” (Figure 23). This window generates one histogram for the chosen statistic (Plotting Stat) separated by Sample Name and optionally colored by Split Statistic (Figure 25).
Figure 23: Histogram Generator Window
- “Plotting Statistic” is the statistic that will be plotted along the X axis: in Figure 25, the example is “Counts in Channel 2”. The options are the same as in Figure 16.
- There is an option to plot histograms using Counts or Percentage (Stat Type: Figure 24).
Figure 24: Stat Type dropdown menu
- There is an option to color based on a Split Statistic (options in Figure 17). In Figure 25, the example is “Chip #”.
- If you do not already have an idea of what the data is going to look like, or just want to auto-scale the axes, you may check the “Auto-Scale” checkbox. Otherwise, you can set the axis minimums and maximums, as well as plot transparency, in the rest of the window. See Figure 25 for a filled-out window, and Figure 26 for the example plot generated from these settings. These plots will save in the same folder as the results file, and you may use this window to make as many as you’d like.
- You can also adjust the bin size (
bin_size
)—this value is not relevant for data plotted on log-scaled axes. For example ranges and suggested starting bin sizes, see Table 2. (If you choose a bin size that is too large for the data, e.g., a bin size of 5 for circularity, the histogram will not generate.) - You can adjust the transparency of the bars: 0 is fully transparent, 1 is fully opaque.
Figure 25: Example filled out Histogram generator
Figure 26: Example output from Figure 25.
- In Figure 26, it is clear that the data is mostly left-shifted and could be stretched to show the most important facets of the data. They also are not on the same axes. To fix this, uncheck the ”Auto-Scale Axes” checkbox (Figure 27, yellow arrow) and select more appropriate axis minimum and maximum values (Figure 27, pink arrow). Next, the transparency is adjusted higher (Figure 27, green arrow) so the results are easier to see. See Figure 28 for the results.
Figure 27: Example of adjusted histogram generator to improve output in Figure 26
Figure 28: Output from Figure 27
Table 2: Suggested starting ranges and bin sizes for histograms
Plotting Statistic | Usual Range | Suggested Bin Size |
---|---|---|
Number of localizations | 0-4000 | 10-50 |
Skew / Circularity | 0-4/0-1 | 0.01-0.05 |
Density | 0-0.5 | 0.005-0.01 |
Area / Discretized Area | 0-1000000 | 1000+ |
Diameter / Length / Radius of Gyration | 0-1000 | 5-10 |
Counts in Channel X | 0-2000 | 1-10 |
Understanding Downloaded Summary Stats
- An Excel sheet with several tabs (Figure 29) is also saved in the same folder as the plots.
- The first tab (“Mean by Sample and FOV”) shows the mean of each statistic from the results value as a “mean of means”—that is, a mean of all FOV means for each statistic. For example, if two FOVs are taken and the mean diameters from each FOV are 120 nm and 130 nm, the mean for this sample will be 125, regardless of how many EVs there are in each FOV. The same logic is true for the second tab (“Standard Deviation by Sample and FOV”).
- The third tab (“Median by Sample”) combines every EV of each sample type and shows the median value for each statistic (not averaged in any way by FOV).
- The fourth tab (“Mean by Sample and Positivity”) uses the same logic as tab 1, but separates EVs by Biomarker Distribution (that is, single-positive, double-positive, etc., explained above). The fifth tab (“Standard Deviation by Sample and Positivity”) also follows this logic.
- The sixth tab (“Median by Sample and Positivity”) follows the same logic as the third tab.
Figure 29: Tabs in “Summary Stats.xlsx” results file
Troubleshooting
GUI Installation Troubleshooting
- Many companies have protections in place to prevent viruses from being downloaded and run on company computers. There are workarounds for this GUI, listed below:
- On a MacBook, the error message that pops up might appear like the one in Figure 30. In this case, navigate to the privacy & security settings in the MacBook and navigate to Developer Tools.
- Click the “+” button and navigate to the .exe file and add it to the list (Figure 31). Then attempt using the GUI again.
- One more error message could pop up that looks like the one before. If so, navigate back to the privacy & security settings and scroll down to the bottom where it says “EVP2 Axis was blocked to protect your Mac.” Click “Open Anyway” next to it (Figure 32).
- On a Windows computer, an error message might pop up appearing like the one in Figure 33. Click “More information”, then “Run Anyway” (Figure 34) to allow the GUI to run.
Note
- For ease of use, you can add a shortcut to the .exe to your desktop. On a Mac, right click the .exe and click “Make Alias”, then copy the Alias to your Desktop. On a Windows computer, right click the .exe and click “Make Shortcut”, then copy to the Desktop.
Figure 30: Error message upon initially opening EVP2 Axis on a MacBook with virus protection
Figure 31: Adding the EVP2 Axis to Developer Tools allows the GUI to run
Figure 32: One further step may be required under Privacy & Security Settings upon opening the EVP2 Axis after adding to the Developer Tools: click Open Anyway
Figure 33: Example error message from a Windows machine. Click “More info”
Figure 34: After clicking “More info”, click “Run Anyway”