##################################
#                                #
# Last modified 3/16/2010        # 
#                                #
# Georgi Marinov                 #
#                                # 
##################################

import sys

try:
	import psyco
	psyco.full()
except:
	pass

def run():

    if len(sys.argv) < 3:
        print 'usage: python %s inputfilename outfilename + | - [-minlength bp]' % sys.argv[0]
        print 'note: the [-minlength] option will return both strands'
        sys.exit(1)

    inputfilename = sys.argv[1]
    outputfilename = sys.argv[2]
    sense = sys.argv[3]
    doMinLength=False
    if '-minlength' in sys.argv:
        doMinLength=True
        minlength=int(sys.argv[sys.argv.index('-minlength')+1])

    lineslist = open(inputfilename)
    outfile = open(outputfilename, 'w')
    i=0
    for line in lineslist:
        i+=1
        if i % 1000000 == 0:
            print i, 'lines processed'
        fields = line.strip().split('\t')
        if doMinLength and len(fields[4])>=minlength:
            outfile.write(line)
            continue
        if doMinLength and len(fields[4])<minlength:
            continue
        if fields[1] == sense:
            outfile.write(line)
    outfile.close()

run()

