text: user294: fast5 is a variant of HDF5 the native format in which raw data from Oxford Nanopore MinION are provided. You can easily extract the reads in fast5 format into a standard fastq format, using for example poretools. 
  Say I have aligned these reads in fastq format to an external reference genome, resulting in a SAM file. Say I have then taken a subset of the  SAM file, according to the bitwise flag, to include only the reads that map to the reference. With the read ID, I can then grep them out from the file containing the reads in fastq format, generating a subset file in fastq format containing only the IDs that have mapped to the reference.  
  Now my question is, can we subset reads from the fast5 archive according to the list of mapping reads as taken from the file with reads in fastq format? This is for educational purposes, so that we have a smaller starting archive, and the fast5 -> fastq extraction takes less cpu time. 
  
  user73: I do this very frequently, using the read file name to identify FAST5 files associated with particular reads. If a FASTQ record includes the channel number and read number (and preferably the runID as well), then I use that information to find the associated FAST5 read.
  If reads are called with Albacore, then the sequencing_summary.txt file has additional information. The first column is the exact name of the file that was called, the second column is the read ID of the FASTQ sequence, and the third column is the run ID associated with that read ID. This is much easier to work with, but does require calling reads with Albacore (which, admittedly, is what seems to be producing the best results at the moment).
  
  user149: NOTICE:
  I have altered my answer slightly from the original as I have turned the original script into a pip installable program (with tests) and have updated the links and code snippets accordingly. The essence of the answer is still exactly the same.
  
  This is something I have been meaning to get around to for a while, so thanks for the prompt.
  I have created a python program called fast5seek to do what (I think) you're after.
  As you have mentioned this is for educational purposes I have added a tonne of comments to the code too so I think you shouldn't have any issues following it.
  The docs on the GitHub repo have all the info, but for those reading along at home
  pip3 install fast5seek
  fast5seek -i /path/to/fast5s -r in.fastq in.bam in.sam -o out.txt
  
  What it does is read in <in.fastq|in.bam|in.sam> and extract the read id from each header. It then goes through all the fast5 files under /path/to/fast5s and checks whether their read id is in the set of read ids from <in.fastq|in.bam|in.sam>. If it is, the path to the file is written to it's own line in out.txt.
  If no output (-o) is given, it will write the output to stdout.
  So if you wanted to pipe these paths into another program, you could do something like
  mkdir subset_dir/
  fast5seek -i /path/to/fast5s/ -r in.fastq | xargs cp -t subset_dir/
  
  The above example would copy the fast5 files that are found in your fastq/BAM/SAM to subset_dir/.
  
original_text: 294: <p><code>fast5</code> is a variant of <a href="https://support.hdfgroup.org/HDF5/whatishdf5.html" rel="noreferrer"><code>HDF5</code></a> the native format in which raw data from Oxford Nanopore MinION are provided. You can easily extract the reads in fast5 format into a standard fastq format, using for example <a href="https://poretools.readthedocs.io/en/latest/" rel="noreferrer"><code>poretools</code></a>. </p>
  
  <p>Say I have aligned these reads in <code>fastq</code> format to an external reference genome, resulting in a <code>SAM</code> file. Say I have then taken a subset of the  <code>SAM</code> file, according to the <a href="https://samtools.github.io/hts-specs/SAMv1.pdf" rel="noreferrer">bitwise flag</a>, to include only the reads that map to the reference. With the read ID, I can then grep them out from the file containing the reads in <code>fastq</code> format, generating a subset file in <code>fastq</code> format containing only the IDs that have mapped to the reference.  </p>
  
  <p>Now my question is, can we subset reads from the <code>fast5</code> archive according to the list of mapping reads as taken from the file with reads in <code>fastq</code> format? This is for educational purposes, so that we have a smaller starting archive, and the <code>fast5</code> -> <code>fastq</code> extraction takes less cpu time. </p>
   73: <p>I do this very frequently, using the read file name to identify FAST5 files associated with particular reads. If a FASTQ record includes the channel number and read number (and preferably the runID as well), then I use that information to find the associated FAST5 read.</p>
  
  <p>If reads are called with Albacore, then the <code>sequencing_summary.txt</code> file has additional information. The first column is the exact name of the file that was called, the second column is the read ID of the FASTQ sequence, and the third column is the run ID associated with that read ID. This is much easier to work with, but does require calling reads with Albacore (which, admittedly, is what seems to be producing the best results at the moment).</p>
   149: <p><strong>NOTICE</strong>:
  I have altered my answer slightly from the original as I have turned the original script into a <code>pip</code> installable program (with tests) and have updated the links and code snippets accordingly. The essence of the answer is still exactly the same.</p>
  
  <hr>
  
  <p>This is something I have been meaning to get around to for a while, so thanks for the prompt.</p>
  
  <p>I have <a href="https://github.com/mbhall88/fast5seek" rel="nofollow noreferrer">created a python program called <code>fast5seek</code></a> to do what (I think) you're after.</p>
  
  <p>As you have mentioned this is for educational purposes I have added a tonne of comments to the code too so I think you shouldn't have any issues following it.</p>
  
  <p>The docs on the <a href="https://github.com/mbhall88/fast5seek" rel="nofollow noreferrer">GitHub repo</a> have all the info, but for those reading along at home</p>
  
  <pre><code>pip3 install fast5seek
  fast5seek -i /path/to/fast5s -r in.fastq in.bam in.sam -o out.txt
  </code></pre>
  
  <p>What it does is read in <code>&lt;in.fastq|in.bam|in.sam&gt;</code> and extract the read id from each header. It then goes through all the fast5 files under <code>/path/to/fast5s</code> and checks whether their read id is in the set of read ids from <code>&lt;in.fastq|in.bam|in.sam&gt;</code>. If it is, the path to the file is written to it's own line in <code>out.txt</code>.</p>
  
  <p>If no output (<code>-o</code>) is given, it will write the output to stdout.</p>
  
  <p>So if you wanted to pipe these paths into another program, you could do something like</p>
  
  <pre><code>mkdir subset_dir/
  fast5seek -i /path/to/fast5s/ -r in.fastq | xargs cp -t subset_dir/
  </code></pre>
  
  <p>The above example would copy the fast5 files that are found in your fastq/BAM/SAM to <code>subset_dir/</code>.</p>
  