Example #1
0
def last(args):
    """
    %prog last old.fasta new.fasta

    Generate psl file using last. Calles apps.last() but with special
    parameters: -r5 -q95 -a0 -b95 -e500, which only reports alignments larger
    than 100 bp and >=95 % identity.
    """
    from jcvi.apps.last import main as lastapp

    p = OptionParser(last.__doc__)
    p.add_option("--distant",
                 default=False,
                 action="store_true",
                 help="Assume distant relations")
    p.add_option(
        "--minscore",
        default=100,
        type="int",
        help="Filter alignments by how many bases match [default: %default]")
    p.add_option("--minid",
                 default=95,
                 type="int",
                 help="Minimum sequence identity [default: %default]")
    set_outfile(p)

    opts, args = p.parse_args(args)
    if len(args) != 2:
        sys.exit(not p.print_help())

    oldfasta, newfasta = args
    args = [oldfasta, newfasta, "--format=maf", \
                "--outfile={0}".format(opts.outfile)]

    minscore = opts.minscore
    minid = opts.minid

    r = 100 - minid
    q = minid
    e = minscore * r

    extra = r'--params=-r{0} -q{1} -a0 -b{1} -e{2}'.format(r, q, e)
    if not opts.distant:
        args.append(extra)

    lastapp(args)
Example #2
0
def last(args):
    """
    %prog last old.fasta new.fasta

    Generate psl file using LAST. Scoring parameters (-r -q -a -b -e)
    automatically selected based on --minlen and --minid.
    """
    from jcvi.apps.last import main as lastapp, supported_formats

    p = OptionParser(last.__doc__)
    p.add_option("--distant", default=False, action="store_true",
                 help="Assume distant relations")
    p.add_option("--minlen", default=1000, type="int",
                 help="Filter alignments by how many bases match [default: %default]")
    p.add_option("--minid", default=80, type="int",
                 help="Minimum sequence identity [default: %default]")
    p.add_option("--format", default="maf", choices=supported_formats,
                 help="Output format")
    p.set_outfile()

    opts, args = p.parse_args(args)
    if len(args) != 2:
        sys.exit(not p.print_help())

    oldfasta, newfasta = args
    args = [oldfasta, newfasta, "--format={0}".format(opts.format), \
                "--outfile={0}".format(opts.outfile)]

    minlen = opts.minlen
    minid = opts.minid

    assert minid != 100, "Perfect match not yet supported"
    mm = minid / (100 - minid)

    extra = r'--params=-r1 -q{0} -a{0} -b{0} -e{1}'.format(mm, minlen)
    if not opts.distant:
        args.append(extra)

    lastapp(args)
Example #3
0
def last(args):
    """
    %prog last old.fasta new.fasta

    Generate psl file using last. Calles apps.last() but with special
    parameters: -r5 -q95 -a0 -b95 -e500, which only reports alignments larger
    than 100 bp and >=95 % identity.
    """
    from jcvi.apps.last import main as lastapp

    p = OptionParser(last.__doc__)
    p.add_option("--distant", default=False, action="store_true",
                 help="Assume distant relations")
    p.add_option("--minscore", default=100, type="int",
                 help="Filter alignments by how many bases match [default: %default]")
    p.add_option("--minid", default=95, type="int",
                 help="Minimum sequence identity [default: %default]")
    p.set_outfile()

    opts, args = p.parse_args(args)
    if len(args) != 2:
        sys.exit(not p.print_help())

    oldfasta, newfasta = args
    args = [oldfasta, newfasta, "--format=maf", \
                "--outfile={0}".format(opts.outfile)]

    minscore = opts.minscore
    minid = opts.minid

    r = 100 - minid
    q = minid
    e = minscore * r

    extra = r'--params=-r{0} -q{1} -a0 -b{1} -e{2}'.format(r, q, e)
    if not opts.distant:
        args.append(extra)

    lastapp(args)