Mercurial > repos > dcouvin > resfinder4
diff resfinder/db_pointfinder/INSTALL.py @ 0:55051a9bc58d draft default tip
Uploaded
author | dcouvin |
---|---|
date | Mon, 10 Jan 2022 20:06:07 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/resfinder/db_pointfinder/INSTALL.py Mon Jan 10 20:06:07 2022 +0000 @@ -0,0 +1,119 @@ +#!/usr/bin/python3 +import shutil +import os +import sys +import tempfile +import subprocess + +# This scripts installs the PointFinder database for using KMA +# KMA should be installed before running this script +# The scripts assumes that it is placed together with the PointFinder species +# directories +# +# First clone the repository: +# git clone https://bitbucket.org/genomicepidemiology/pointfinder_db.git + +# Check if executable kma_index program is installed, if not promt the user for +# path + + +# Function for easy error printing +def eprint(*args, **kwargs): + print(*args, file=sys.stderr, **kwargs) + + +# KMA version +KMA_VERSION = "1.0.1" + + +interactive = True +if len(sys.argv) >= 2: + kma_index = sys.argv[1] + if "non_interactive" in sys.argv: + interactive = False +else: + kma_index = "kma_index" + +print(str(sys.argv)) + +while shutil.which(kma_index) is None: + eprint("KMA index program, {}, does not exist or is not executable" + .format(kma_index)) + ans = None + if(interactive): + ans = input("Please input path to executable kma_index program or" + "choose one of the options below:\n" + "\t1. Install KMA using make, index db, then remove KMA.\n" + "\t2. Exit\n") + + if(ans == "2" or ans == "q" or ans == "quit" or ans == "exit"): + eprint("Exiting!\n\n" + "Please install executable KMA programs in order to install" + "this database.\n\n" + "KMA can be obtained from bitbucked:\n\n" + "git clone -b {:s} " + "https://bitbucket.org/genomicepidemiology/kma.git" + .format(KMA_VERSION)) + sys.exit() + + if(ans == "1" or ans is None): + if(shutil.which("git") is None): + sys.exit("Attempt to automatically install KMA failed.\n" + "git does not exist or is not executable.") + org_dir = os.getcwd() + + # Create temporary directory + tempdir = tempfile.TemporaryDirectory() + os.chdir(tempdir.name) + + try: + subprocess.run( + ["git", "clone", "-b", KMA_VERSION, + "https://bitbucket.org/genomicepidemiology/kma.git"], + check=True) + os.chdir("kma") + except subprocess.CalledProcessError: + eprint("Installation in temporary directory with make failed " + "at the git cloning step") + os.chdir(org_dir) + + try: + subprocess.run(["make"]) + except subprocess.CalledProcessError: + eprint("Installation in temporary directory with make failed " + "at the make step.") + os.chdir(org_dir) + + kma_index = "{}/kma/kma_index".format(tempdir.name) + os.chdir(org_dir) + if shutil.which(kma_index) is None: + eprint("Installation in temporary directory with make failed " + "at the test step.") + os.chdir(org_dir) + kma_index = "kma_index" + if(not interactive): + ans = "2" + + if(ans is not None and ans != "1" and ans != "2"): + kma_index = ans + if shutil.which(kma_index) is None: + eprint("Path, {}, is not an executable path. Please provide " + "absolute path\n".format(ans)) + + +# Index databases +os.makedirs("kma_indexing", exist_ok=True) +# Use config_file to go through database dirs +config_file = open("config", "r") +for line in config_file: + if line.startswith("#"): + continue + else: + line = line.rstrip().split("\t") + species_dir = line[0].strip() + # for each dir index the fasta files + os.system("{0} -i {1}/*.fsa -o {1}/{1}".format(kma_index, species_dir)) + +config_file.close() + +eprint("Done")