Esempio n. 1
0
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))