wf-transcriptomes-v202/bin/read_lengths.py
2021-03-01 11:44:41 +00:00

39 lines
1.0 KiB
Python
Executable File

#!/usr/bin/env python
import argparse
import glob
import itertools
import os
import pysam
import numpy as np
def mean_qual(quals):
qual = np.fromiter(
(ord(x) - 33 for x in quals),
dtype=int, count=len(quals))
mean_p = np.mean(np.power(10, qual / -10))
return -10 * np.log10(mean_p)
def main():
parser = argparse.ArgumentParser()
parser.add_argument("directory", help="Directory containing .fastq(.gz) files")
parser.add_argument("output", help="Output file")
args = parser.parse_args()
fastqs = glob.glob(os.path.join(args.directory, "*.fastq*"))
reads = itertools.chain.from_iterable(
pysam.FastxFile(fname) for fname in fastqs)
with open(args.output, "w") as fh:
# names as in Guppy
fh.write("read_id\tsequence_length_template\tmean_qscore_template\n")
for read in reads:
fh.write("\t".join(str(x) for x in (
read.name, len(read.sequence), mean_qual(read.quality))))
fh.write("\n")
if __name__ == "__main__":
main()