def decorate(self, options): """Decorate tree with GTDB taxonomy.""" check_file_exists(options.input_tree) # Config.TAXONOMY_FILE self.logger.warning('NOT YET IMPLEMENTED!') self.logger.info('Done.')
def infer(self, options): """Infer tree from MSA.""" check_file_exists(options.msa_file) make_sure_path_exists(options.out_dir) if options.cpus > 1: check_dependencies(['FastTreeMP']) else: check_dependencies(['FastTree']) self.logger.info('Inferring tree with FastTree using %s+GAMMA.' % options.prot_model) if hasattr(options, 'suffix'): output_tree = os.path.join( options.out_dir, options.prefix + options.suffix + '.unrooted.tree') tree_log = os.path.join( options.out_dir, options.prefix + options.suffix + '.tree.log') fasttree_log = os.path.join( options.out_dir, options.prefix + options.suffix + '.fasttree.log') else: output_tree = os.path.join(options.out_dir, options.prefix + '.unrooted.tree') tree_log = os.path.join(options.out_dir, options.prefix + '.tree.log') fasttree_log = os.path.join(options.out_dir, options.prefix + '.fasttree.log') if options.prot_model == 'JTT': model_str = '' elif options.prot_model == 'WAG': model_str = ' -wag' elif options.prot_model == 'LG': model_str = ' -lg' support_str = '' if options.no_support: support_str = ' -nosupport' gamma_str = ' -gamma' if options.no_gamma: gamma_str = '' cmd = '-quiet%s%s%s -log %s %s > %s 2> %s' % ( support_str, model_str, gamma_str, tree_log, options.msa_file, output_tree, fasttree_log) if options.cpus > 1: cmd = 'FastTreeMP ' + cmd else: cmd = 'FastTree ' + cmd self.logger.info('Running: %s' % cmd) os.system(cmd) self.logger.info('Done.')
def root(self, options): """Root tree using outgroup.""" self.logger.warning("Tree rooting is still under development!") check_file_exists(options.input_tree) gtdb_taxonomy = Taxonomy().read(Config.TAXONOMY_FILE) self.logger.info('Identifying genomes from the specified outgroup.') outgroup = set() for genome_id, taxa in gtdb_taxonomy.iteritems(): if options.outgroup_taxon in taxa: outgroup.add(genome_id) reroot = RerootTree() reroot.root_with_outgroup(options.input_tree, options.output_tree, outgroup) self.logger.info('Done.')
def identify(self, options): """Identify marker genes in genomes.""" if options.genome_dir: check_dir_exists(options.genome_dir) if options.batchfile: check_file_exists(options.batchfile) make_sure_path_exists(options.out_dir) genomes = self._genomes_to_process(options.genome_dir, options.batchfile, options.extension) markers = Markers(options.cpus) markers.identify(genomes, options.out_dir, options.prefix) self.logger.info('Done.')
def infer(self, options): """Infer tree from MSA.""" check_file_exists(options.msa_file) make_sure_path_exists(options.out_dir) if options.cpus > 1: check_dependencies(['FastTreeMP']) os.environ['OMP_NUM_THREADS'] = '%d' % options.cpus else: check_dependencies(['FastTree']) self.logger.info('Inferring tree with FastTree using %s+GAMMA.' % options.prot_model) if hasattr(options, 'suffix'): output_tree = os.path.join( options.out_dir, PATH_MARKER_UNROOTED_TREE.format(prefix=options.prefix, marker=options.suffix)) tree_log = os.path.join( options.out_dir, PATH_MARKER_TREE_LOG.format(prefix=options.prefix, marker=options.suffix)) fasttree_log = os.path.join( options.out_dir, PATH_MARKER_FASTTREE_LOG.format(prefix=options.prefix, marker=options.suffix)) else: output_tree = os.path.join( options.out_dir, PATH_UNROOTED_TREE.format(prefix=options.prefix)) tree_log = os.path.join( options.out_dir, PATH_TREE_LOG.format(prefix=options.prefix)) fasttree_log = os.path.join( options.out_dir, PATH_FASTTREE_LOG.format(prefix=options.prefix)) make_sure_path_exists(os.path.dirname(output_tree)) make_sure_path_exists(os.path.dirname(tree_log)) make_sure_path_exists(os.path.dirname(fasttree_log)) if options.prot_model == 'JTT': model_str = '' elif options.prot_model == 'WAG': model_str = ' -wag' elif options.prot_model == 'LG': model_str = ' -lg' support_str = '' if options.no_support: support_str = ' -nosupport' gamma_str = ' -gamma' gamma_str_info = '+GAMMA' if options.no_gamma: gamma_str = '' gamma_str_info = '' self.logger.info('Inferring tree with FastTree using {}.'.format( options.prot_model, gamma_str_info)) cmd = '-quiet%s%s%s -log %s %s > %s 2> %s' % ( support_str, model_str, gamma_str, tree_log, options.msa_file, output_tree, fasttree_log) if options.cpus > 1: cmd = 'FastTreeMP ' + cmd else: cmd = 'FastTree ' + cmd self.logger.info('Running: %s' % cmd) os.system(cmd) self.logger.info('Done.')