-
-
Notifications
You must be signed in to change notification settings - Fork 43
/
Copy pathtb-profiler-tools
69 lines (59 loc) · 3.09 KB
/
tb-profiler-tools
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/usr/bin/env python
import tbprofiler as tbp
import argparse
import sys
import os
from uuid import uuid4
import pathogenprofiler as pp
from glob import glob
import logging
from rich.logging import RichHandler
__softwarename__ = 'tbprofiler'
def cleanup(files_prefix):
for f in glob(f"{files_prefix}*"):
os.remove(f)
def main_phylogeny(args):
tbp.phylo.calculate_phylogeny(args)
cleanup(args.files_prefix)
def prepare_usher(args):
tbp.phylo.prepare_usher(args.tree,args.vcf)
argparser = argparse.ArgumentParser(description='TBProfiler pipeline',formatter_class=argparse.ArgumentDefaultsHelpFormatter)
subparsers = argparser.add_subparsers(help='commands')
parser_sub = subparsers.add_parser('create_phylogeny', help='Calculate phylogeny')
parser_sub.add_argument('--samples',required=True,help="Samples files")
parser_sub.add_argument('--temp',help="Temp firectory to process all files",type=str,default=".")
parser_sub.add_argument('--db',default='tbdb',help='Mutation panel name')
parser_sub.add_argument('--external_db',type=str,help='Path to db files prefix (overrides "--db" parameter)')
parser_sub.add_argument('--dir','-d',default=".",help='Storage directory')
parser_sub.add_argument('--min_dp',default=10,type=int,help='Bases with depth below this cutoff will be marked as missing')
parser_sub.add_argument('--threads',default=1,type=int,help='Total number of threads')
parser_sub.add_argument('--logging',default="INFO",choices=["DEBUG","INFO","WARNING","ERROR","CRITICAL"],help='Logging level')
parser_sub.set_defaults(func=main_phylogeny)
parser_sub = subparsers.add_parser('prepare_usher', help='Update tbdb')
parser_sub.add_argument('--tree',required=True,help="Samples files")
parser_sub.add_argument('--vcf',help="Temp firectory to process all files",required=True)
parser_sub.add_argument('--temp',help="Temp firectory to process all files",type=str,default=".")
parser_sub.add_argument('--dir','-d',default=".",help='Storage directory')
parser_sub.add_argument('--logging',default="INFO",choices=["DEBUG","INFO","WARNING","ERROR","CRITICAL"],help='Logging level')
parser_sub.set_defaults(func=prepare_usher)
args = argparser.parse_args()
if hasattr(args, 'func'):
logging.basicConfig(
level=args.logging, format="%(message)s", datefmt="[%X]", handlers=[RichHandler()]
)
args.software_name = __softwarename__
args.tmp_prefix = str(uuid4())
args.files_prefix = os.path.abspath(f"{args.temp}/{args.tmp_prefix}")
if hasattr(args,'dir'):
args.dir = os.path.abspath(args.dir)
if hasattr(args, 'db'):
if args.db=="who-v2" and not args.external_db and pp.nofile(sys.base_prefix+"/share/tbprofiler/who-v2.fasta"):
logging.error("Can't find the tbdb file at %s. Please run 'tb-profiler update_tbdb' to load the default library or specify another using the '--external_db' flag" % sys.base_prefix)
quit(1)
if args.external_db:
args.conf = pp.get_db(args.software_name,args.external_db)
else:
args.conf = pp.get_db(args.software_name,args.db)
args.func(args)
else:
argparser.print_help(sys.stderr)