#!/usr/bin/env python 

################################################################################
### COPYRIGHT ##################################################################

# New York Genome Center

# SOFTWARE COPYRIGHT NOTICE AGREEMENT
# This software and its documentation are copyright (2014) by the New York
# Genome Center. All rights are reserved. This software is supplied without
# any warranty or guaranteed support whatsoever. The New York Genome Center
# cannot be responsible for its use, misuse, or functionality.

# Version: 0.2
# Author: Andre Corvelo

################################################################# /COPYRIGHT ###
################################################################################



################################################################################
### MODULES ####################################################################

from optparse import OptionParser
import sys

################################################################### /MODULES ###
################################################################################



################################################################################
### FUNCTIONS ##################################################################

################################################################# /FUNCTIONS ###
################################################################################



################################################################################
### ARGUMENTS,OPTIONS ##########################################################

parser = OptionParser(usage="\n%prog [options]", version="%prog v0.2")

parser.add_option(
	"-i",
	metavar = "FILE",
	type = "string",
	dest = "input_file",
	default = 'stdin',
	help = "Input FASTQ file (default = 'stdin')"
	)

parser.add_option(
	"-m",
	metavar = "INT",
	type = "int",
	dest = "min",
	default = 1,
	help = "Minimum read length (default = 1)"
	)

parser.add_option(
	"-p",
	metavar = "FLAG",
	dest = "paired",
	action = 'store_true',
	default = False,
	help = "Paired (for interleaved files; default = False)"
	)

(opt, args) = parser.parse_args()

######################################################### /ARGUMENTS,OPTIONS ###
################################################################################



################################################################################
### CONSTANTS ##################################################################

################################################################# /CONSTANTS ###
################################################################################



################################################################################
### MAIN #######################################################################

if __name__ == "__main__":
	if opt.input_file != 'stdin':
		ff = open(opt.input_file, 'r')
	else:
		ff = sys.stdin
	while True:
		ll = []
		l1 = ff.readline()
		if not l1:
			break
		ll.append(l1.strip())
		ll.append(ff.readline().strip())
		ll.append(ff.readline().strip())
		ll.append(ff.readline().strip())
		if not opt.paired:
			if len(ll[1]) >= opt.min:
				sys.stdout.write('\n'.join(ll) + '\n')
			else:
				sys.stderr.write(ll[0][1:] + '\t' + ll[1] + '\t' + ll[3] + '\t0\t.\n')
		elif opt.paired:
			ll.append(ff.readline().strip())
			ll.append(ff.readline().strip())
			ll.append(ff.readline().strip())
			ll.append(ff.readline().strip())
			if len(ll[1]) >= opt.min and len(ll[5]) >= opt.min:
				sys.stdout.write('\n'.join(ll) + '\n')
			else:
				sys.stderr.write(ll[0][1:] + '\t' + ll[1] + '\t' + ll[3] + '\t0\t.\n')
				sys.stderr.write(ll[4][1:] + '\t' + ll[5] + '\t' + ll[7] + '\t0\t.\n')
	if opt.input_file != 'stdin':
		ff.close()
	
###################################################################### /MAIN ###
################################################################################
