nanoporetech / minknow_api

Protobuf and gRPC specifications for the MinKNOW API
Other
55 stars 12 forks source link

Preferred way of retrieving barcode hits during a run through the MinKNOW API? Example request. #59

Closed neuropathbasel closed 1 year ago

neuropathbasel commented 1 year ago

Dear developer team,

I am trying to get live information on barcode hits during a rapid barcoding kit run (both R9 and R10). Which is the preferred way to get there through the API? I was able to get the information after run completion, but need to do so during the run. This is to make sure that I will have obtained enough reads for a given barcode before I am terminating the run.

I would be happy for an advice / short code example, sth. like mkmanager.....getBarcodeHits(currentProtocol/currentRun) and to get, e.g. a list. Something like the "basecalledBases" and "events" counters.

Kind regards JH

0x55555555 commented 1 year ago

Hi @neuropathbasel ,

What API's are you using to get this info after the run?

You can use this api: https://github.com/nanoporetech/minknow_api/blob/master/proto/minknow_api/statistics.proto#L28

to stream information about produced bases/reads.

If you setup the split parameter here to split by barcode:

https://github.com/nanoporetech/minknow_api/blob/master/proto/minknow_api/statistics.proto#L561

here: https://github.com/nanoporetech/minknow_api/blob/master/proto/minknow_api/statistics.proto#L521

You will get output split per barcode.

I hope this helps.

neuropathbasel commented 1 year ago

Hi George,

thanks for the fast reply. I think I am making a mistake here. I started from this example https://github.com/nanoporetech/minknow_api/blob/master/python/minknow_api/examples/extract_run_statistics.py

When executed for a completed run, the example script generates the expected output. When executed by passing an ongoing protcol ID, the execution stalls.

I then took the following lines of code while the connection to mkmanager was established (code extract shown):

deviceString="MN35026"
sampleName="20230912_Test03_R10M"
runId="a3cbb1ce4b4572f3f9774656b6ccb8ea7b4baed5"
manager=mkManager() # defined elsewere in my code, connects to mkmanager
positions = list(manager.flow_cell_positions())
filtered_positions = list(filter(lambda pos: pos.name == deviceString, positions))
connection = filtered_positions[0].connect() # Connect to the grpc port for the desired position
print(connection.statistics.read_length_n50(acquisition_run_id=runId)) # WORKS, returns, e.g., n50_data {estimated_n50: 4430  basecalled_n50: 3810}

stream = connection.statistics.stream_acquisition_output(
    acquisition_run_id=runId,
    data_selection=minknow_api.statistics_pb2.DataSelection(step=60 * 60),
    split=minknow_api.statistics_pb2.AcquisitionOutputSplit(
        alignment_reference=True,
        barcode_name=True,
        lamp_barcode_id=True,
        lamp_target_id=True,
    )
)
print(stream)
for filter_groups in stream:
    print(filter_groups)
    for filter_group in filter_groups:
        print(filter_group.filtering) # stalls

What I would like to generate is an output like for the read.length_n50, but for the barcode hits. I would like to determine how many bases and reads have so far been obtained per barcode. How do I get to the barcode hits while the analysis is running (similar to the data that the MinKNOW UI plots)?

Any hint / help is highly appreciated.

Kind regards & thanks JH

0x55555555 commented 1 year ago

Hi @neuropathbasel ,

The API youre using will stream until the run finishes, in steps of 60*60 seconds - 1 hour.

When your code stalls, does it first print results? How long is the experiment youre running the code against?

If you run the same code on a run that is complete, it won't block because the run is complete and no more data will be returned.

To get the data for the current run, and prevent streaming data from the future, you can set end in DataSelection to -1, this will only stream data from the beginning to the current end of the experiment.

Thanks,

0x55555555 commented 1 year ago

Additionally, if you only want the latest info, you can pass: DataSelection(start=-1, end=-1) - itll give you only one result per barcode for the latest point in the run.

neuropathbasel commented 1 year ago

Hi George,

thanks, that did the trick. This is what I needed. Kind regards JH

stream = connection.statistics.stream_acquisition_output(
    acquisition_run_id=runId,
    data_selection=minknow_api.statistics_pb2.DataSelection(step=1 * 1,end=-1),
    split=minknow_api.statistics_pb2.AcquisitionOutputSplit(
        alignment_reference=True,
        barcode_name=True,
        lamp_barcode_id=True,
        lamp_target_id=True,
    )
)
for filter_groups in stream:
    print(filter_groups)

returns during an active run:

snapshots {
  filtering {
    barcode_name: "barcode01"
    alignment_reference: "unaligned"
    lamp_barcode_id: "unclassified"
    lamp_target_id: "unclassified"
    barcode_alias: "barcode01"
  }
  snapshots {
    seconds: 60
    yield_summary {
    }
  }
  snapshots {
    seconds: 120
    yield_summary {
    }
  }
  snapshots {
    seconds: 180
    yield_summary {
    }
  }
  snapshots {
    seconds: 240
    yield_summary {
    }
  }
  snapshots {
    seconds: 300
    yield_summary {
    }
  }
  snapshots {
    seconds: 360
    yield_summary {
    }
  }
  snapshots {
    seconds: 420
    yield_summary {
    }
  }
  snapshots {
    seconds: 480
    yield_summary {
    }
  }
  snapshots {
    seconds: 540
    yield_summary {
    }
  }
  snapshots {
    seconds: 600
    yield_summary {
    }
  }
  snapshots {
    seconds: 660
    yield_summary {
    }
  }
  snapshots {
    seconds: 720
    yield_summary {
    }
  }
  snapshots {
    seconds: 780
    yield_summary {
    }
  }
  snapshots {
    seconds: 840
    yield_summary {
    }
  }
  snapshots {
    seconds: 900
    yield_summary {
    }
  }
  snapshots {
    seconds: 960
    yield_summary {
    }
  }
  snapshots {
    seconds: 1020
    yield_summary {
    }
  }
  snapshots {
    seconds: 1080
    yield_summary {
    }
  }
  snapshots {
    seconds: 1140
    yield_summary {
    }
  }
  snapshots {
    seconds: 1200
    yield_summary {
    }
  }
  snapshots {
    seconds: 1260
    yield_summary {
    }
  }
}
snapshots {
  filtering {
    barcode_name: "barcode02"
    alignment_reference: "unaligned"
    lamp_barcode_id: "unclassified"
    lamp_target_id: "unclassified"
    barcode_alias: "barcode02"
  }
  snapshots {
    seconds: 60
    yield_summary {
    }
  }
  snapshots {
    seconds: 120
    yield_summary {
    }
  }
  snapshots {
    seconds: 180
    yield_summary {
    }
  }
  snapshots {
    seconds: 240
    yield_summary {
    }
  }
  snapshots {
    seconds: 300
    yield_summary {
    }
  }
  snapshots {
    seconds: 360
    yield_summary {
    }
  }
  snapshots {
    seconds: 420
    yield_summary {
    }
  }
  snapshots {
    seconds: 480
    yield_summary {
    }
  }
  snapshots {
    seconds: 540
    yield_summary {
    }
  }
  snapshots {
    seconds: 600
    yield_summary {
    }
  }
  snapshots {
    seconds: 660
    yield_summary {
    }
  }
  snapshots {
    seconds: 720
    yield_summary {
    }
  }
  snapshots {
    seconds: 780
    yield_summary {
    }
  }
  snapshots {
    seconds: 840
    yield_summary {
    }
  }
  snapshots {
    seconds: 900
    yield_summary {
    }
  }
  snapshots {
    seconds: 960
    yield_summary {
    }
  }
  snapshots {
    seconds: 1020
    yield_summary {
    }
  }
  snapshots {
    seconds: 1080
    yield_summary {
    }
  }
  snapshots {
    seconds: 1140
    yield_summary {
    }
  }
  snapshots {
    seconds: 1200
    yield_summary {
    }
  }
  snapshots {
    seconds: 1260
    yield_summary {
    }
  }
}
snapshots {
  filtering {
    barcode_name: "barcode03"
    alignment_reference: "unaligned"
    lamp_barcode_id: "unclassified"
    lamp_target_id: "unclassified"
    barcode_alias: "barcode03"
  }
  snapshots {
    seconds: 60
    yield_summary {
    }
  }
  snapshots {
    seconds: 120
    yield_summary {
    }
  }
  snapshots {
    seconds: 180
    yield_summary {
    }
  }
  snapshots {
    seconds: 240
    yield_summary {
    }
  }
  snapshots {
    seconds: 300
    yield_summary {
    }
  }
  snapshots {
    seconds: 360
    yield_summary {
    }
  }
  snapshots {
    seconds: 420
    yield_summary {
    }
  }
  snapshots {
    seconds: 480
    yield_summary {
    }
  }
  snapshots {
    seconds: 540
    yield_summary {
    }
  }
  snapshots {
    seconds: 600
    yield_summary {
    }
  }
  snapshots {
    seconds: 660
    yield_summary {
    }
  }
  snapshots {
    seconds: 720
    yield_summary {
    }
  }
  snapshots {
    seconds: 780
    yield_summary {
    }
  }
  snapshots {
    seconds: 840
    yield_summary {
    }
  }
  snapshots {
    seconds: 900
    yield_summary {
    }
  }
  snapshots {
    seconds: 960
    yield_summary {
    }
  }
  snapshots {
    seconds: 1020
    yield_summary {
    }
  }
  snapshots {
    seconds: 1080
    yield_summary {
    }
  }
  snapshots {
    seconds: 1140
    yield_summary {
    }
  }
  snapshots {
    seconds: 1200
    yield_summary {
    }
  }
  snapshots {
    seconds: 1260
    yield_summary {
    }
  }
}
snapshots {
  filtering {
    barcode_name: "barcode04"
    alignment_reference: "unaligned"
    lamp_barcode_id: "unclassified"
    lamp_target_id: "unclassified"
    barcode_alias: "barcode04"
  }
  snapshots {
    seconds: 60
    yield_summary {
    }
  }
  snapshots {
    seconds: 120
    yield_summary {
    }
  }
  snapshots {
    seconds: 180
    yield_summary {
    }
  }
  snapshots {
    seconds: 240
    yield_summary {
    }
  }
  snapshots {
    seconds: 300
    yield_summary {
    }
  }
  snapshots {
    seconds: 360
    yield_summary {
    }
  }
  snapshots {
    seconds: 420
    yield_summary {
    }
  }
  snapshots {
    seconds: 480
    yield_summary {
    }
  }
  snapshots {
    seconds: 540
    yield_summary {
    }
  }
  snapshots {
    seconds: 600
    yield_summary {
    }
  }
  snapshots {
    seconds: 660
    yield_summary {
    }
  }
  snapshots {
    seconds: 720
    yield_summary {
    }
  }
  snapshots {
    seconds: 780
    yield_summary {
    }
  }
  snapshots {
    seconds: 840
    yield_summary {
    }
  }
  snapshots {
    seconds: 900
    yield_summary {
    }
  }
  snapshots {
    seconds: 960
    yield_summary {
    }
  }
  snapshots {
    seconds: 1020
    yield_summary {
    }
  }
  snapshots {
    seconds: 1080
    yield_summary {
    }
  }
  snapshots {
    seconds: 1140
    yield_summary {
    }
  }
  snapshots {
    seconds: 1200
    yield_summary {
    }
  }
  snapshots {
    seconds: 1260
    yield_summary {
    }
  }
}
snapshots {
  filtering {
    barcode_name: "barcode05"
    alignment_reference: "unaligned"
    lamp_barcode_id: "unclassified"
    lamp_target_id: "unclassified"
    barcode_alias: "barcode05"
  }
  snapshots {
    seconds: 60
    yield_summary {
    }
  }
  snapshots {
    seconds: 120
    yield_summary {
    }
  }
  snapshots {
    seconds: 180
    yield_summary {
    }
  }
  snapshots {
    seconds: 240
    yield_summary {
    }
  }
  snapshots {
    seconds: 300
    yield_summary {
    }
  }
  snapshots {
    seconds: 360
    yield_summary {
    }
  }
  snapshots {
    seconds: 420
    yield_summary {
    }
  }
  snapshots {
    seconds: 480
    yield_summary {
    }
  }
  snapshots {
    seconds: 540
    yield_summary {
    }
  }
  snapshots {
    seconds: 600
    yield_summary {
    }
  }
  snapshots {
    seconds: 660
    yield_summary {
    }
  }
  snapshots {
    seconds: 720
    yield_summary {
    }
  }
  snapshots {
    seconds: 780
    yield_summary {
    }
  }
  snapshots {
    seconds: 840
    yield_summary {
    }
  }
  snapshots {
    seconds: 900
    yield_summary {
    }
  }
  snapshots {
    seconds: 960
    yield_summary {
    }
  }
  snapshots {
    seconds: 1020
    yield_summary {
    }
  }
  snapshots {
    seconds: 1080
    yield_summary {
    }
  }
  snapshots {
    seconds: 1140
    yield_summary {
    }
  }
  snapshots {
    seconds: 1200
    yield_summary {
    }
  }
  snapshots {
    seconds: 1260
    yield_summary {
    }
  }
}
snapshots {
  filtering {
    barcode_name: "barcode06"
    alignment_reference: "unaligned"
    lamp_barcode_id: "unclassified"
    lamp_target_id: "unclassified"
    barcode_alias: "barcode06"
  }
  snapshots {
    seconds: 60
    yield_summary {
    }
  }
  snapshots {
    seconds: 120
    yield_summary {
    }
  }
  snapshots {
    seconds: 180
    yield_summary {
    }
  }
  snapshots {
    seconds: 240
    yield_summary {
    }
  }
  snapshots {
    seconds: 300
    yield_summary {
    }
  }
  snapshots {
    seconds: 360
    yield_summary {
    }
  }
  snapshots {
    seconds: 420
    yield_summary {
    }
  }
  snapshots {
    seconds: 480
    yield_summary {
    }
  }
  snapshots {
    seconds: 540
    yield_summary {
    }
  }
  snapshots {
    seconds: 600
    yield_summary {
    }
  }
  snapshots {
    seconds: 660
    yield_summary {
    }
  }
  snapshots {
    seconds: 720
    yield_summary {
    }
  }
  snapshots {
    seconds: 780
    yield_summary {
    }
  }
  snapshots {
    seconds: 840
    yield_summary {
    }
  }
  snapshots {
    seconds: 900
    yield_summary {
    }
  }
  snapshots {
    seconds: 960
    yield_summary {
    }
  }
  snapshots {
    seconds: 1020
    yield_summary {
    }
  }
  snapshots {
    seconds: 1080
    yield_summary {
    }
  }
  snapshots {
    seconds: 1140
    yield_summary {
    }
  }
  snapshots {
    seconds: 1200
    yield_summary {
    }
  }
  snapshots {
    seconds: 1260
    yield_summary {
    }
  }
}
snapshots {
  filtering {
    barcode_name: "barcode07"
    alignment_reference: "unaligned"
    lamp_barcode_id: "unclassified"
    lamp_target_id: "unclassified"
    barcode_alias: "barcode07"
  }
  snapshots {
    seconds: 60
    yield_summary {
    }
  }
  snapshots {
    seconds: 120
    yield_summary {
    }
  }
  snapshots {
    seconds: 180
    yield_summary {
    }
  }
  snapshots {
    seconds: 240
    yield_summary {
    }
  }
  snapshots {
    seconds: 300
    yield_summary {
    }
  }
  snapshots {
    seconds: 360
    yield_summary {
    }
  }
  snapshots {
    seconds: 420
    yield_summary {
    }
  }
  snapshots {
    seconds: 480
    yield_summary {
    }
  }
  snapshots {
    seconds: 540
    yield_summary {
    }
  }
  snapshots {
    seconds: 600
    yield_summary {
    }
  }
  snapshots {
    seconds: 660
    yield_summary {
    }
  }
  snapshots {
    seconds: 720
    yield_summary {
    }
  }
  snapshots {
    seconds: 780
    yield_summary {
    }
  }
  snapshots {
    seconds: 840
    yield_summary {
    }
  }
  snapshots {
    seconds: 900
    yield_summary {
    }
  }
  snapshots {
    seconds: 960
    yield_summary {
    }
  }
  snapshots {
    seconds: 1020
    yield_summary {
    }
  }
  snapshots {
    seconds: 1080
    yield_summary {
    }
  }
  snapshots {
    seconds: 1140
    yield_summary {
    }
  }
  snapshots {
    seconds: 1200
    yield_summary {
    }
  }
  snapshots {
    seconds: 1260
    yield_summary {
    }
  }
}
snapshots {
  filtering {
    barcode_name: "barcode08"
    alignment_reference: "unaligned"
    lamp_barcode_id: "unclassified"
    lamp_target_id: "unclassified"
    barcode_alias: "barcode08"
  }
  snapshots {
    seconds: 60
    yield_summary {
      read_count: 917
      fraction_basecalled: 1
      basecalled_pass_read_count: 917
      basecalled_pass_bases: 1614033
      basecalled_samples: 21652936
      selected_raw_samples: 21652936
      selected_events: 1068398
      estimated_selected_bases: 1922761
    }
  }
  snapshots {
    seconds: 120
    yield_summary {
      read_count: 917
      fraction_basecalled: 1
      basecalled_pass_read_count: 917
      basecalled_pass_bases: 1614033
      basecalled_samples: 21652936
      selected_raw_samples: 21652936
      selected_events: 1068398
      estimated_selected_bases: 1922761
    }
  }
  snapshots {
    seconds: 180
    yield_summary {
      read_count: 917
      fraction_basecalled: 1
      basecalled_pass_read_count: 917
      basecalled_pass_bases: 1614033
      basecalled_samples: 21652936
      selected_raw_samples: 21652936
      selected_events: 1068398
      estimated_selected_bases: 1922761
    }
  }
  snapshots {
    seconds: 240
    yield_summary {
      read_count: 917
      fraction_basecalled: 1
      basecalled_pass_read_count: 917
      basecalled_pass_bases: 1614033
      basecalled_samples: 21652936
      selected_raw_samples: 21652936
      selected_events: 1068398
      estimated_selected_bases: 1922761
    }
  }
  snapshots {
    seconds: 300
    yield_summary {
      read_count: 917
      fraction_basecalled: 1
      basecalled_pass_read_count: 917
      basecalled_pass_bases: 1614033
      basecalled_samples: 21652936
      selected_raw_samples: 21652936
      selected_events: 1068398
      estimated_selected_bases: 1922761
    }
  }
  snapshots {
    seconds: 360
    yield_summary {
      read_count: 917
      fraction_basecalled: 1
      basecalled_pass_read_count: 917
      basecalled_pass_bases: 1614033
      basecalled_samples: 21652936
      selected_raw_samples: 21652936
      selected_events: 1068398
      estimated_selected_bases: 1922761
    }
  }
  snapshots {
    seconds: 420
    yield_summary {
      read_count: 917
      fraction_basecalled: 1
      basecalled_pass_read_count: 917
      basecalled_pass_bases: 1614033
      basecalled_samples: 21652936
      selected_raw_samples: 21652936
      selected_events: 1068398
      estimated_selected_bases: 1922761
    }
  }
  snapshots {
    seconds: 480
    yield_summary {
      read_count: 917
      fraction_basecalled: 1
      basecalled_pass_read_count: 917
      basecalled_pass_bases: 1614033
      basecalled_samples: 21652936
      selected_raw_samples: 21652936
      selected_events: 1068398
      estimated_selected_bases: 1922761
    }
  }
  snapshots {
    seconds: 540
    yield_summary {
      read_count: 917
      fraction_basecalled: 1
      basecalled_pass_read_count: 917
      basecalled_pass_bases: 1614033
      basecalled_samples: 21652936
      selected_raw_samples: 21652936
      selected_events: 1068398
      estimated_selected_bases: 1922761
    }
  }
  snapshots {
    seconds: 600
    yield_summary {
      read_count: 917
      fraction_basecalled: 1
      basecalled_pass_read_count: 917
      basecalled_pass_bases: 1614033
      basecalled_samples: 21652936
      selected_raw_samples: 21652936
      selected_events: 1068398
      estimated_selected_bases: 1922761
    }
  }
  snapshots {
    seconds: 660
    yield_summary {
      read_count: 917
      fraction_basecalled: 1
      basecalled_pass_read_count: 917
      basecalled_pass_bases: 1614033
      basecalled_samples: 21652936
      selected_raw_samples: 21652936
      selected_events: 1068398
      estimated_selected_bases: 1922761
    }
  }
  snapshots {
    seconds: 720
    yield_summary {
      read_count: 917
      fraction_basecalled: 1
      basecalled_pass_read_count: 917
      basecalled_pass_bases: 1614033
      basecalled_samples: 21652936
      selected_raw_samples: 21652936
      selected_events: 1068398
      estimated_selected_bases: 1922761
    }
  }
  snapshots {
    seconds: 780
    yield_summary {
      read_count: 917
      fraction_basecalled: 1
      basecalled_pass_read_count: 917
      basecalled_pass_bases: 1614033
      basecalled_samples: 21652936
      selected_raw_samples: 21652936
      selected_events: 1068398
      estimated_selected_bases: 1922761
    }
  }
  snapshots {
    seconds: 840
    yield_summary {
      read_count: 917
      fraction_basecalled: 1
      basecalled_pass_read_count: 917
      basecalled_pass_bases: 1614033
      basecalled_samples: 21652936
      selected_raw_samples: 21652936
      selected_events: 1068398
      estimated_selected_bases: 1922761
    }
  }
  snapshots {
    seconds: 900
    yield_summary {
      read_count: 917
      fraction_basecalled: 1
      basecalled_pass_read_count: 917
      basecalled_pass_bases: 1614033
      basecalled_samples: 21652936
      selected_raw_samples: 21652936
      selected_events: 1068398
      estimated_selected_bases: 1922761
    }
  }
  snapshots {
    seconds: 960
    yield_summary {
      read_count: 917
      fraction_basecalled: 1
      basecalled_pass_read_count: 917
      basecalled_pass_bases: 1614033
      basecalled_samples: 21652936
      selected_raw_samples: 21652936
      selected_events: 1068398
      estimated_selected_bases: 1922761
    }
  }
  snapshots {
    seconds: 1020
    yield_summary {
      read_count: 917
      fraction_basecalled: 1
      basecalled_pass_read_count: 917
      basecalled_pass_bases: 1614033
      basecalled_samples: 21652936
      selected_raw_samples: 21652936
      selected_events: 1068398
      estimated_selected_bases: 1922761
    }
  }
  snapshots {
    seconds: 1080
    yield_summary {
      read_count: 917
      fraction_basecalled: 1
      basecalled_pass_read_count: 917
      basecalled_pass_bases: 1614033
      basecalled_samples: 21652936
      selected_raw_samples: 21652936
      selected_events: 1068398
      estimated_selected_bases: 1922761
    }
  }
  snapshots {
    seconds: 1140
    yield_summary {
      read_count: 917
      fraction_basecalled: 1
      basecalled_pass_read_count: 917
      basecalled_pass_bases: 1614033
      basecalled_samples: 21652936
      selected_raw_samples: 21652936
      selected_events: 1068398
      estimated_selected_bases: 1922761
    }
  }
  snapshots {
    seconds: 1200
    yield_summary {
      read_count: 917
      fraction_basecalled: 1
      basecalled_pass_read_count: 917
      basecalled_pass_bases: 1614033
      basecalled_samples: 21652936
      selected_raw_samples: 21652936
      selected_events: 1068398
      estimated_selected_bases: 1922761
    }
  }
  snapshots {
    seconds: 1260
    yield_summary {
      read_count: 917
      fraction_basecalled: 1
      basecalled_pass_read_count: 917
      basecalled_pass_bases: 1614033
      basecalled_samples: 21652936
      selected_raw_samples: 21652936
      selected_events: 1068398
      estimated_selected_bases: 1922761
    }
  }
}
snapshots {
  filtering {
    barcode_name: "barcode09"
    alignment_reference: "unaligned"
    lamp_barcode_id: "unclassified"
    lamp_target_id: "unclassified"
    barcode_alias: "barcode09"
  }
  snapshots {
    seconds: 60
    yield_summary {
      read_count: 1
      fraction_basecalled: 1
      basecalled_pass_read_count: 1
      basecalled_pass_bases: 239
      basecalled_samples: 4493
      selected_raw_samples: 4493
      selected_events: 190
      estimated_selected_bases: 342
    }
  }
  snapshots {
    seconds: 120
    yield_summary {
      read_count: 1
      fraction_basecalled: 1
      basecalled_pass_read_count: 1
      basecalled_pass_bases: 239
      basecalled_samples: 4493
      selected_raw_samples: 4493
      selected_events: 190
      estimated_selected_bases: 342
    }
  }
  snapshots {
    seconds: 180
    yield_summary {
      read_count: 1
      fraction_basecalled: 1
      basecalled_pass_read_count: 1
      basecalled_pass_bases: 239
      basecalled_samples: 4493
      selected_raw_samples: 4493
      selected_events: 190
      estimated_selected_bases: 342
    }
  }
  snapshots {
    seconds: 240
    yield_summary {
      read_count: 1
      fraction_basecalled: 1
      basecalled_pass_read_count: 1
      basecalled_pass_bases: 239
      basecalled_samples: 4493
      selected_raw_samples: 4493
      selected_events: 190
      estimated_selected_bases: 342
    }
  }
  snapshots {
    seconds: 300
    yield_summary {
      read_count: 1
      fraction_basecalled: 1
      basecalled_pass_read_count: 1
      basecalled_pass_bases: 239
      basecalled_samples: 4493
      selected_raw_samples: 4493
      selected_events: 190
      estimated_selected_bases: 342
    }
  }
  snapshots {
    seconds: 360
    yield_summary {
      read_count: 1
      fraction_basecalled: 1
      basecalled_pass_read_count: 1
      basecalled_pass_bases: 239
      basecalled_samples: 4493
      selected_raw_samples: 4493
      selected_events: 190
      estimated_selected_bases: 342
    }
  }
  snapshots {
    seconds: 420
    yield_summary {
      read_count: 1
      fraction_basecalled: 1
      basecalled_pass_read_count: 1
      basecalled_pass_bases: 239
      basecalled_samples: 4493
      selected_raw_samples: 4493
      selected_events: 190
      estimated_selected_bases: 342
    }
  }
  snapshots {
    seconds: 480
    yield_summary {
      read_count: 1
      fraction_basecalled: 1
      basecalled_pass_read_count: 1
      basecalled_pass_bases: 239
      basecalled_samples: 4493
      selected_raw_samples: 4493
      selected_events: 190
      estimated_selected_bases: 342
    }
  }
  snapshots {
    seconds: 540
    yield_summary {
      read_count: 1
      fraction_basecalled: 1
      basecalled_pass_read_count: 1
      basecalled_pass_bases: 239
      basecalled_samples: 4493
      selected_raw_samples: 4493
      selected_events: 190
      estimated_selected_bases: 342
    }
  }
  snapshots {
    seconds: 600
    yield_summary {
      read_count: 1
      fraction_basecalled: 1
      basecalled_pass_read_count: 1
      basecalled_pass_bases: 239
      basecalled_samples: 4493
      selected_raw_samples: 4493
      selected_events: 190
      estimated_selected_bases: 342
    }
  }
  snapshots {
    seconds: 660
    yield_summary {
      read_count: 1
      fraction_basecalled: 1
      basecalled_pass_read_count: 1
      basecalled_pass_bases: 239
      basecalled_samples: 4493
      selected_raw_samples: 4493
      selected_events: 190
      estimated_selected_bases: 342
    }
  }
  snapshots {
    seconds: 720
    yield_summary {
      read_count: 1
      fraction_basecalled: 1
      basecalled_pass_read_count: 1
      basecalled_pass_bases: 239
      basecalled_samples: 4493
      selected_raw_samples: 4493
      selected_events: 190
      estimated_selected_bases: 342
    }
  }
  snapshots {
    seconds: 780
    yield_summary {
      read_count: 1
      fraction_basecalled: 1
      basecalled_pass_read_count: 1
      basecalled_pass_bases: 239
      basecalled_samples: 4493
      selected_raw_samples: 4493
      selected_events: 190
      estimated_selected_bases: 342
    }
  }
  snapshots {
    seconds: 840
    yield_summary {
      read_count: 1
      fraction_basecalled: 1
      basecalled_pass_read_count: 1
      basecalled_pass_bases: 239
      basecalled_samples: 4493
      selected_raw_samples: 4493
      selected_events: 190
      estimated_selected_bases: 342
    }
  }
  snapshots {
    seconds: 900
    yield_summary {
      read_count: 1
      fraction_basecalled: 1
      basecalled_pass_read_count: 1
      basecalled_pass_bases: 239
      basecalled_samples: 4493
      selected_raw_samples: 4493
      selected_events: 190
      estimated_selected_bases: 342
    }
  }
  snapshots {
    seconds: 960
    yield_summary {
      read_count: 1
      fraction_basecalled: 1
      basecalled_pass_read_count: 1
      basecalled_pass_bases: 239
      basecalled_samples: 4493
      selected_raw_samples: 4493
      selected_events: 190
      estimated_selected_bases: 342
    }
  }
  snapshots {
    seconds: 1020
    yield_summary {
      read_count: 1
      fraction_basecalled: 1
      basecalled_pass_read_count: 1
      basecalled_pass_bases: 239
      basecalled_samples: 4493
      selected_raw_samples: 4493
      selected_events: 190
      estimated_selected_bases: 342
    }
  }
  snapshots {
    seconds: 1080
    yield_summary {
      read_count: 1
      fraction_basecalled: 1
      basecalled_pass_read_count: 1
      basecalled_pass_bases: 239
      basecalled_samples: 4493
      selected_raw_samples: 4493
      selected_events: 190
      estimated_selected_bases: 342
    }
  }
  snapshots {
    seconds: 1140
    yield_summary {
      read_count: 1
      fraction_basecalled: 1
      basecalled_pass_read_count: 1
      basecalled_pass_bases: 239
      basecalled_samples: 4493
      selected_raw_samples: 4493
      selected_events: 190
      estimated_selected_bases: 342
    }
  }
  snapshots {
    seconds: 1200
    yield_summary {
      read_count: 1
      fraction_basecalled: 1
      basecalled_pass_read_count: 1
      basecalled_pass_bases: 239
      basecalled_samples: 4493
      selected_raw_samples: 4493
      selected_events: 190
      estimated_selected_bases: 342
    }
  }
  snapshots {
    seconds: 1260
    yield_summary {
      read_count: 1
      fraction_basecalled: 1
      basecalled_pass_read_count: 1
      basecalled_pass_bases: 239
      basecalled_samples: 4493
      selected_raw_samples: 4493
      selected_events: 190
      estimated_selected_bases: 342
    }
  }
}
snapshots {
  filtering {
    barcode_name: "barcode10"
    alignment_reference: "unaligned"
    lamp_barcode_id: "unclassified"
    lamp_target_id: "unclassified"
    barcode_alias: "barcode10"
  }
  snapshots {
    seconds: 60
    yield_summary {
    }
  }
  snapshots {
    seconds: 120
    yield_summary {
    }
  }
  snapshots {
    seconds: 180
    yield_summary {
    }
  }
  snapshots {
    seconds: 240
    yield_summary {
    }
  }
  snapshots {
    seconds: 300
    yield_summary {
    }
  }
  snapshots {
    seconds: 360
    yield_summary {
    }
  }
  snapshots {
    seconds: 420
    yield_summary {
    }
  }
  snapshots {
    seconds: 480
    yield_summary {
    }
  }
  snapshots {
    seconds: 540
    yield_summary {
    }
  }
  snapshots {
    seconds: 600
    yield_summary {
    }
  }
  snapshots {
    seconds: 660
    yield_summary {
    }
  }
  snapshots {
    seconds: 720
    yield_summary {
    }
  }
  snapshots {
    seconds: 780
    yield_summary {
    }
  }
  snapshots {
    seconds: 840
    yield_summary {
    }
  }
  snapshots {
    seconds: 900
    yield_summary {
    }
  }
  snapshots {
    seconds: 960
    yield_summary {
    }
  }
  snapshots {
    seconds: 1020
    yield_summary {
    }
  }
  snapshots {
    seconds: 1080
    yield_summary {
    }
  }
  snapshots {
    seconds: 1140
    yield_summary {
    }
  }
  snapshots {
    seconds: 1200
    yield_summary {
    }
  }
  snapshots {
    seconds: 1260
    yield_summary {
    }
  }
}
snapshots {
  filtering {
    barcode_name: "barcode11"
    alignment_reference: "unaligned"
    lamp_barcode_id: "unclassified"
    lamp_target_id: "unclassified"
    barcode_alias: "barcode11"
  }
  snapshots {
    seconds: 60
    yield_summary {
    }
  }
  snapshots {
    seconds: 120
    yield_summary {
    }
  }
  snapshots {
    seconds: 180
    yield_summary {
    }
  }
  snapshots {
    seconds: 240
    yield_summary {
    }
  }
  snapshots {
    seconds: 300
    yield_summary {
    }
  }
  snapshots {
    seconds: 360
    yield_summary {
    }
  }
  snapshots {
    seconds: 420
    yield_summary {
    }
  }
  snapshots {
    seconds: 480
    yield_summary {
    }
  }
  snapshots {
    seconds: 540
    yield_summary {
    }
  }
  snapshots {
    seconds: 600
    yield_summary {
    }
  }
  snapshots {
    seconds: 660
    yield_summary {
    }
  }
  snapshots {
    seconds: 720
    yield_summary {
    }
  }
  snapshots {
    seconds: 780
    yield_summary {
    }
  }
  snapshots {
    seconds: 840
    yield_summary {
    }
  }
  snapshots {
    seconds: 900
    yield_summary {
    }
  }
  snapshots {
    seconds: 960
    yield_summary {
    }
  }
  snapshots {
    seconds: 1020
    yield_summary {
    }
  }
  snapshots {
    seconds: 1080
    yield_summary {
    }
  }
  snapshots {
    seconds: 1140
    yield_summary {
    }
  }
  snapshots {
    seconds: 1200
    yield_summary {
    }
  }
  snapshots {
    seconds: 1260
    yield_summary {
    }
  }
}
snapshots {
  filtering {
    barcode_name: "barcode12"
    alignment_reference: "unaligned"
    lamp_barcode_id: "unclassified"
    lamp_target_id: "unclassified"
    barcode_alias: "barcode12"
  }
  snapshots {
    seconds: 60
    yield_summary {
    }
  }
  snapshots {
    seconds: 120
    yield_summary {
    }
  }
  snapshots {
    seconds: 180
    yield_summary {
    }
  }
  snapshots {
    seconds: 240
    yield_summary {
    }
  }
  snapshots {
    seconds: 300
    yield_summary {
    }
  }
  snapshots {
    seconds: 360
    yield_summary {
    }
  }
  snapshots {
    seconds: 420
    yield_summary {
    }
  }
  snapshots {
    seconds: 480
    yield_summary {
    }
  }
  snapshots {
    seconds: 540
    yield_summary {
    }
  }
  snapshots {
    seconds: 600
    yield_summary {
    }
  }
  snapshots {
    seconds: 660
    yield_summary {
    }
  }
  snapshots {
    seconds: 720
    yield_summary {
    }
  }
  snapshots {
    seconds: 780
    yield_summary {
    }
  }
  snapshots {
    seconds: 840
    yield_summary {
    }
  }
  snapshots {
    seconds: 900
    yield_summary {
    }
  }
  snapshots {
    seconds: 960
    yield_summary {
    }
  }
  snapshots {
    seconds: 1020
    yield_summary {
    }
  }
  snapshots {
    seconds: 1080
    yield_summary {
    }
  }
  snapshots {
    seconds: 1140
    yield_summary {
    }
  }
  snapshots {
    seconds: 1200
    yield_summary {
    }
  }
  snapshots {
    seconds: 1260
    yield_summary {
    }
  }
}
snapshots {
  filtering {
    barcode_name: "unclassified"
    alignment_reference: "unaligned"
    lamp_barcode_id: "unclassified"
    lamp_target_id: "unclassified"
    barcode_alias: "unclassified"
  }
  snapshots {
    seconds: 60
    yield_summary {
      read_count: 673
      fraction_basecalled: 1
      basecalled_pass_read_count: 673
      basecalled_pass_bases: 1213820
      basecalled_samples: 17831063
      selected_raw_samples: 17831063
      selected_events: 813514
      estimated_selected_bases: 1464048
    }
  }
  snapshots {
    seconds: 120
    yield_summary {
      read_count: 673
      fraction_basecalled: 1
      basecalled_pass_read_count: 673
      basecalled_pass_bases: 1213820
      basecalled_samples: 17831063
      selected_raw_samples: 17831063
      selected_events: 813514
      estimated_selected_bases: 1464048
    }
  }
  snapshots {
    seconds: 180
    yield_summary {
      read_count: 673
      fraction_basecalled: 1
      basecalled_pass_read_count: 673
      basecalled_pass_bases: 1213820
      basecalled_samples: 17831063
      selected_raw_samples: 17831063
      selected_events: 813514
      estimated_selected_bases: 1464048
    }
  }
  snapshots {
    seconds: 240
    yield_summary {
      read_count: 673
      fraction_basecalled: 1
      basecalled_pass_read_count: 673
      basecalled_pass_bases: 1213820
      basecalled_samples: 17831063
      selected_raw_samples: 17831063
      selected_events: 813514
      estimated_selected_bases: 1464048
    }
  }
  snapshots {
    seconds: 300
    yield_summary {
      read_count: 673
      fraction_basecalled: 1
      basecalled_pass_read_count: 673
      basecalled_pass_bases: 1213820
      basecalled_samples: 17831063
      selected_raw_samples: 17831063
      selected_events: 813514
      estimated_selected_bases: 1464048
    }
  }
  snapshots {
    seconds: 360
    yield_summary {
      read_count: 673
      fraction_basecalled: 1
      basecalled_pass_read_count: 673
      basecalled_pass_bases: 1213820
      basecalled_samples: 17831063
      selected_raw_samples: 17831063
      selected_events: 813514
      estimated_selected_bases: 1464048
    }
  }
  snapshots {
    seconds: 420
    yield_summary {
      read_count: 673
      fraction_basecalled: 1
      basecalled_pass_read_count: 673
      basecalled_pass_bases: 1213820
      basecalled_samples: 17831063
      selected_raw_samples: 17831063
      selected_events: 813514
      estimated_selected_bases: 1464048
    }
  }
  snapshots {
    seconds: 480
    yield_summary {
      read_count: 673
      fraction_basecalled: 1
      basecalled_pass_read_count: 673
      basecalled_pass_bases: 1213820
      basecalled_samples: 17831063
      selected_raw_samples: 17831063
      selected_events: 813514
      estimated_selected_bases: 1464048
    }
  }
  snapshots {
    seconds: 540
    yield_summary {
      read_count: 673
      fraction_basecalled: 1
      basecalled_pass_read_count: 673
      basecalled_pass_bases: 1213820
      basecalled_samples: 17831063
      selected_raw_samples: 17831063
      selected_events: 813514
      estimated_selected_bases: 1464048
    }
  }
  snapshots {
    seconds: 600
    yield_summary {
      read_count: 673
      fraction_basecalled: 1
      basecalled_pass_read_count: 673
      basecalled_pass_bases: 1213820
      basecalled_samples: 17831063
      selected_raw_samples: 17831063
      selected_events: 813514
      estimated_selected_bases: 1464048
    }
  }
  snapshots {
    seconds: 660
    yield_summary {
      read_count: 673
      fraction_basecalled: 1
      basecalled_pass_read_count: 673
      basecalled_pass_bases: 1213820
      basecalled_samples: 17831063
      selected_raw_samples: 17831063
      selected_events: 813514
      estimated_selected_bases: 1464048
    }
  }
  snapshots {
    seconds: 720
    yield_summary {
      read_count: 673
      fraction_basecalled: 1
      basecalled_pass_read_count: 673
      basecalled_pass_bases: 1213820
      basecalled_samples: 17831063
      selected_raw_samples: 17831063
      selected_events: 813514
      estimated_selected_bases: 1464048
    }
  }
  snapshots {
    seconds: 780
    yield_summary {
      read_count: 673
      fraction_basecalled: 1
      basecalled_pass_read_count: 673
      basecalled_pass_bases: 1213820
      basecalled_samples: 17831063
      selected_raw_samples: 17831063
      selected_events: 813514
      estimated_selected_bases: 1464048
    }
  }
  snapshots {
    seconds: 840
    yield_summary {
      read_count: 673
      fraction_basecalled: 1
      basecalled_pass_read_count: 673
      basecalled_pass_bases: 1213820
      basecalled_samples: 17831063
      selected_raw_samples: 17831063
      selected_events: 813514
      estimated_selected_bases: 1464048
    }
  }
  snapshots {
    seconds: 900
    yield_summary {
      read_count: 673
      fraction_basecalled: 1
      basecalled_pass_read_count: 673
      basecalled_pass_bases: 1213820
      basecalled_samples: 17831063
      selected_raw_samples: 17831063
      selected_events: 813514
      estimated_selected_bases: 1464048
    }
  }
  snapshots {
    seconds: 960
    yield_summary {
      read_count: 673
      fraction_basecalled: 1
      basecalled_pass_read_count: 673
      basecalled_pass_bases: 1213820
      basecalled_samples: 17831063
      selected_raw_samples: 17831063
      selected_events: 813514
      estimated_selected_bases: 1464048
    }
  }
  snapshots {
    seconds: 1020
    yield_summary {
      read_count: 673
      fraction_basecalled: 1
      basecalled_pass_read_count: 673
      basecalled_pass_bases: 1213820
      basecalled_samples: 17831063
      selected_raw_samples: 17831063
      selected_events: 813514
      estimated_selected_bases: 1464048
    }
  }
  snapshots {
    seconds: 1080
    yield_summary {
      read_count: 673
      fraction_basecalled: 1
      basecalled_pass_read_count: 673
      basecalled_pass_bases: 1213820
      basecalled_samples: 17831063
      selected_raw_samples: 17831063
      selected_events: 813514
      estimated_selected_bases: 1464048
    }
  }
  snapshots {
    seconds: 1140
    yield_summary {
      read_count: 673
      fraction_basecalled: 1
      basecalled_pass_read_count: 673
      basecalled_pass_bases: 1213820
      basecalled_samples: 17831063
      selected_raw_samples: 17831063
      selected_events: 813514
      estimated_selected_bases: 1464048
    }
  }
  snapshots {
    seconds: 1200
    yield_summary {
      read_count: 673
      fraction_basecalled: 1
      basecalled_pass_read_count: 673
      basecalled_pass_bases: 1213820
      basecalled_samples: 17831063
      selected_raw_samples: 17831063
      selected_events: 813514
      estimated_selected_bases: 1464048
    }
  }
  snapshots {
    seconds: 1260
    yield_summary {
      read_count: 673
      fraction_basecalled: 1
      basecalled_pass_read_count: 673
      basecalled_pass_bases: 1213820
      basecalled_samples: 17831063
      selected_raw_samples: 17831063
      selected_events: 813514
      estimated_selected_bases: 1464048
    }
  }
}