コード例 #1
0
ファイル: taxtable.py プロジェクト: aubreymoore/taxtastic
def action(args):
    engine = create_engine(
        'sqlite:///%s' % args.database_file, echo=args.verbosity > 2)
    tax = Taxonomy(engine, ncbi.ranks)

    taxids = set()

    if args.taxids:
        if os.access(args.taxids, os.F_OK):
            for line in getlines(args.taxids):
                taxids.update(set(re.split(r'[\s,;]+', line)))
        else:
            taxids.update([x.strip()
                           for x in re.split(r'[\s,;]+', args.taxids)])

    if args.taxnames:
        for taxname in getlines(args.taxnames):
            for name in re.split(r'\s*[,;]\s*', taxname):
                tax_id, primary_name, is_primary = tax.primary_from_name(
                    name.strip())
                taxids.add(tax_id)

    if args.seq_info:
        with args.seq_info:
            reader = csv.DictReader(args.seq_info)
            taxids.update(frozenset(i['tax_id']
                                    for i in reader if i['tax_id']))

    # Before digging into lineages, make sure all the taxids exist in
    # the taxonomy database.
    valid_taxids = True
    for t in taxids:
        try:
            tax._node(t)
        except KeyError:
            # Check for merged
            m = tax._get_merged(t)
            if m and m != t:
                msg = ("Taxid {0} has been replaced by {1}. "
                       "Please update your records").format(t, m)
                print >> sys.stderr, msg
            else:
                print >>sys.stderr, "Taxid %s not found in taxonomy." % t
            valid_taxids = False
    if not(valid_taxids):
        print >>sys.stderr, "Some taxids were invalid.  Exiting."
        return 1  # exits with code 1

    # Extract all the taxids to be exported in the CSV file.
    taxids_to_export = set()
    for t in taxids:
        taxids_to_export.update([y for (x, y) in tax._get_lineage(t)])

    tax.write_table(taxids_to_export, csvfile=args.out_file, full=args.full)

    engine.dispose()
    return 0
コード例 #2
0
def action(args):
    engine = create_engine(
        'sqlite:///%s' % args.database_file, echo=args.verbosity > 2)
    tax = Taxonomy(engine, ncbi.RANKS)

    if any([args.taxids, args.taxnames, args.seq_info]):
        taxids = set()
        if args.taxids:
            if os.access(args.taxids, os.F_OK):
                for line in getlines(args.taxids):
                    taxids.update(set(re.split(r'[\s,;]+', line)))
            else:
                taxids.update(
                    [x.strip() for x in re.split(r'[\s,;]+', args.taxids)])

        if args.seq_info:
            with args.seq_info:
                reader = csv.DictReader(args.seq_info)
                taxids.update(
                    frozenset(i['tax_id'] for i in reader if i['tax_id']))

        if not(are_valid(taxids, tax)):
            return "Some taxids were invalid.  Exiting."

        if args.taxnames:
            for taxname in getlines(args.taxnames):
                for name in re.split(r'\s*[,;]\s*', taxname):
                    tax_id, primary_name, is_primary = tax.primary_from_name(
                        name.strip())
                    taxids.add(tax_id)
    else:
        taxids = set(tax.tax_ids())

    # Extract all the taxids to be exported in the CSV file.
    taxids_to_export = set()
    for t in taxids:
        taxids_to_export.update([y for (x, y) in tax._get_lineage(t)])

    tax.write_table(taxids_to_export, csvfile=args.out_file, full=args.full)

    engine.dispose()
    return 0
コード例 #3
0
ファイル: taxtable.py プロジェクト: TatyanaV/taxtastic
def action(args):
    engine = create_engine('sqlite:///%s' % args.database_file,
                           echo=args.verbosity > 2)
    tax = Taxonomy(engine, ncbi.RANKS)

    if any([args.taxids, args.taxnames, args.seq_info]):
        taxids = set()
        if args.taxids:
            if os.access(args.taxids, os.F_OK):
                for line in getlines(args.taxids):
                    taxids.update(set(re.split(r'[\s,;]+', line)))
            else:
                taxids.update(
                    [x.strip() for x in re.split(r'[\s,;]+', args.taxids)])

        if args.seq_info:
            with args.seq_info:
                reader = csv.DictReader(args.seq_info)
                taxids.update(
                    frozenset(i['tax_id'] for i in reader if i['tax_id']))

        if not (are_valid(taxids, tax)):
            return "Some taxids were invalid.  Exiting."

        if args.taxnames:
            for taxname in getlines(args.taxnames):
                for name in re.split(r'\s*[,;]\s*', taxname):
                    tax_id, primary_name, is_primary = tax.primary_from_name(
                        name.strip())
                    taxids.add(tax_id)
    else:
        taxids = set(tax.tax_ids())

    # Extract all the taxids to be exported in the CSV file.
    taxids_to_export = set()
    for t in taxids:
        taxids_to_export.update([y for (x, y) in tax._get_lineage(t)])

    tax.write_table(taxids_to_export, csvfile=args.out_file, full=args.full)

    engine.dispose()
    return 0