Illumina / interop

C++ Library to parse Illumina InterOp files
http://illumina.github.io/interop/index.html
GNU General Public License v3.0
75 stars 26 forks source link

Python: Per Lane Metrics #286

Closed lukato01 closed 2 years ago

lukato01 commented 2 years ago

I can't find any documentation that would help me get the Per lane Metrics via the Interop library using Python.

ezralanglois commented 2 years ago

http://illumina.github.io/interop/python_binding.html

New simplified interface

  from interop import *
  ar = imaging("path/to/run_folder")

Here is a list of simplified functions: http://illumina.github.io/interop/namespacecore.html

You probably want the summary function, which has a similar interface to imaging above.

You can pass this directly to a Pandas data frame

  from interop import *
  import pandas as pd
  df = pd.DataFrame(summary("path/to/run_folder"))
lukato01 commented 2 years ago

I would like to be able to open, read and summarize the QMetricsByLaneOut.bin file. Which of the function would allow me to do that. Whatever i tried so far has not worked.

ezralanglois commented 2 years ago

The InterOp Library does not work from a single interop file.

You can use the following (also above) to summarize metrics per lane/read including Q30

  from interop import *
  import pandas as pd
  df = pd.DataFrame(summary("path/to/run_folder"))
lukato01 commented 2 years ago

The function mentioned above seem to summarize per read metrics and not per lane Metrics. When i log into the Illumina platform, and select a specific run, there is a display of per lane metrics under the metrics label. Here is the an example of the visual i see

Screen Shot 2022-07-05 at 4 33 30 PM

Is there a way to get this type of summary via InterOp library? If so, can you please tell me which functions from the library would be the most useful.

ezralanglois commented 2 years ago

The first column is lane, the second is status and the third is read. So per lane, is also per read.

This same function is used to create that table. There are various levels of summary it can do as the following examples demonstrate:

This example shows how to render it on the run level https://github.com/Illumina/interop/blob/master/src/ext/python/core.py#L235

This one on the read level https://github.com/Illumina/interop/blob/master/src/ext/python/core.py#L247

This one on the per lane per read level (just as your example above) https://github.com/Illumina/interop/blob/master/src/ext/python/core.py#L252