I am working on scripts that automate generation of plots using the illumina interop package. The old scripts do this using the C++ binaries and gnuplot roughly like detailed here: https://illumina.github.io/interop/example_sav_analysis_example.html
The old script contains some poor practice that can be easily made better in bash, but I noticed that the definition file for the singularity container that has the executables was never saved by the person who generated the container. So I wrote a definition file that uses the following instructions to generate a container: http://illumina.github.io/interop/install.html
After trying many different things, I am still wondering how the interops executables work. They do not behave like most other CLI programs and the use of gnuplot to generate the plots seems archaic.
I tried using the python module that according to the developer exposes the functionality inside python, but it was a hassle to work with, I had to write parsers to translate the C++ objects into something that could be worked with in a pythonic way and I realized quickly that this rabbit hole was just too deep when the objective was just to generate some plots but with a greater control of where the plots are output and how the executables are called.
I did manage to construct a decent % Pass Filter vs % Occupied using the python bindings, but it took way more time than I wanted it to and I felt I could not apply the same logic to generate other plots that would be useful.
What I want to know is if there are currently maintained efforts to build some kind of parser and plotter that can re-generate SAV plots and are production safe in an HPC environment ?
The closest thing to what I would like is this: https://github.com/MultiQC/MultiQC_SAV/tree/main but it seems less known about and I guess I would like to look around for more actively maintained libraries or hear what strategies other people use before I commit to adapting this plugin to work with our Novaseq X plus!