def pslSelectQuery(options): ninput, noutput, ndiscarded, nskipped = 0, 0, 0, 0 value, field = options.select.split("-") if field == "nmatches": f = lambda x: x.mNMatches elif field == "nmismatches": f = lambda x: x.mNMisMatches for data in Blat.iterator_per_query(Blat.iterator(options.stdin)): ninput += 1 if options.test and ninput >= options.test: break if ninput % options.report_step == 0: E.info("progress: ninput=%i, noutput=%i" % (ninput, noutput)) data.sort(key=f) if value == "most": options.stdout.write("%s\n" % str(data[-1])) elif value == "least": options.stdout.write("%s\n" % str(data[0])) noutput += 1 E.info("ninput=%i, noutput=%i, nskipped=%i, ndiscarded=%i" % (ninput, noutput, nskipped, ndiscarded))