Skip to content

Conversation

stephprince
Copy link
Contributor

@stephprince stephprince commented Sep 25, 2025

Here is an initial script to generate figures for the benchmarks paper. Currently this script leans towards plotting everything and we can condense down as we go.

Related plots can be found on Google Drive or can be generated from this script (using an updated, local GitHub clone of nwb-benchmarks-results).

A couple of things I noticed

  • for asking about downloading vs. streaming (as described in Hypotheses: The purpose of NWB Benchmarks #89), we still need to capture the download time for these different test cases. The only download test case I saw was the 'time_download_lindi.LindiDownloadBenchmark.time_download
  • I think the icephys slice size should maybe be increased. As it is right now it seems to be too small to capture any variation in time vs. slice size.

@rly @oruebel @CodyCBakerPhD let me know if you have any initial feedback on figures or different things you would like to see before we meet. Some of the other to-do items are indicated in the script.

@CodyCBakerPhD
Copy link
Collaborator

Very cool stuff

I'd love to see some scatter plot versions of the timing (slicing and file read) to truly experience the variability over the machines (bonus points for plotly with hover effect of displaying the machine ID for easy cross-ref)

Comment on lines 19 to 24
repackage_as_parquet(
directory=results_directory,
output_directory=db_directory,
minimum_results_version="3.0.0",
minimum_machines_version="1.4.0",
)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is good for development. When paper is finalized we can remove the endpoint from the Flask server (or I guess do that whenever) and treat the 'results database' repo as a version controlled 'data' to go along with publication (also with Zenodo DOI)

@CodyCBakerPhD
Copy link
Collaborator

I would also combine Zarr with HDF5 options (perhaps with an asterisk or something? to indicate different type of file but still kind of apples-to-apples since user can choose between backends to use just like they can chose streaming methods for HDF5 backend) to more easily see side by side comparison

@CodyCBakerPhD
Copy link
Collaborator

Finally:

  1. while it is nice to have the colorful slicing_HDF5PyNWB.png to see the landscape, we might want to re-organize the panels here to more appropriately correspond to testing conditions

1a) have the 'preloaded' ones be in their own panel - easier then to compare them across methods, and kind of unfair to compare to the others since they had different untimed steps in their setups

1b) separate caching from non caching to more easily see which methods are best within that given mode (maybe it's not always convenient to have cache enabled depending on file system)

  1. I would also experiment with outputting to .eps or .svg to ensure the script is capable of that since it not only helps us during early exploration (as we might want to zoom in infinitely to see some of the smaller scale items, but will almost certainly be required by the journal as well

@stephprince stephprince changed the title Add script to generate figures Add figure generation code Sep 30, 2025
@stephprince
Copy link
Contributor Author

stephprince commented Sep 30, 2025

I think the updated code addresses most of the changes mentioned here or discussed in our last meeting (see generated plots here):

  • add scatter plots
  • add different plots for different slice range sizes
  • add n for each run to the plots
  • grouping: combine Zarr / HDF5 / Lindi into one figure, separate out preloaded data into different panels, reorder cached vs. uncached
  • add additional network tracking metrics (avg time per request, percent network time (something is off with some of these values where the network time is larger than the total time))
  • output figures as pdfs (editable by vector graphics software)

Once we have some of the additional results (including download times, different versions, scaling chunk vs. object tests), I can add additional plots for those

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