def main(argv, cfg_file): cmd = Command('filter', cfg_file=cfg_file) cmd.parse_args(argv) swga.database.init_db(cmd.primer_db) # If we have an input file, use that. Otherwise pull from db if cmd.input: with open(cmd.input, 'rb') as infile: primers = swga.primers.read_primer_list( infile, cmd.fg_genome_fp, cmd.bg_genome_fp) else: cmd.skip_filtering = False primers = Primer.select() # Undo all active marks, if any deactivate_all_primers() if not cmd.skip_filtering: primers = filter_primers( primers, cmd.min_fg_bind, cmd.max_bg_bind, cmd.fg_length, cmd.bg_length, cmd.min_tm, cmd.max_tm, cmd.max_primers) swga.primers.update_locations(primers, cmd.fg_genome_fp) n_active = activate_primers(primers) if n_active < cmd.max_primers: swga.warn( "Fewer than {} primers were selected ({} passed all the filters). " "You may want to try less restrictive filtering parameters." .format(cmd.max_primers, n_active))