import glob import os import argparse import sys import subprocess from datetime import datetime now = datetime.now() parser = argparse.ArgumentParser() parser.add_argument('-input_directory', '-i', type=str, help='path to data') parser.add_argument('-project_req', '-pr', type=str, help='quast folder') opts = parser.parse_args() def check_directories_exist(filepath, file_description): """ to check if the directory exist""" if not os.path.exists(filepath): print(file_description + "," + filepath + "," + " doesn't exist") sys.exit(1) else: print(file_description + " detected") def quast_quality_assembler(quast_file, quast_dir, ref_file, assembly_dir): """ to check the quality of the assemblies using a reference fasta file for Serratia marcencens :param quast_file :param quast_dir :param ref_file :param assembly_dir""" cmd = [quast_file, '-o', quast_dir, '-r', ref_file, '-L', assembly_dir] my_assemblies = subprocess.Popen(cmd) my_assemblies.wait() def main(): # if not enough arguments are key, it will show the help if len(sys.argv) <= 2: parser.print_help() sys.exit() else: # this will write all the print statement into a file timenow = datetime.now() sys.stdout = open('runlog.txt', 'wt') # to check if the directories exist check_directories_exist(opts.input_directory, 'input_directory' + "\t" + str(timenow)) check_directories_exist(opts.project_req, 'project_req' + "\t" + str(timenow)) ref_file = opts.project_req + "/ref_serratia.fasta" quast_file = opts.project_req + "/quast-5.2.0/quast.py" quast_dir = opts.input_directory + "/quast_results/" # Using glob.glob I get the error "TypeError: expected str, bytes or os.PathLike object, not list" but if I don't using assembly_dir = glob.glob(opts.input_directory + '/unicycler_assemblies/*/*.fasta') #removing glob.glob I get the error "ERROR! File not found (contigs): /home/my_name/my_project/test_assemblies/unicycler_assemblies/*/*.fasta assembly_dir = opts.input_directory + '/unicycler_assemblies/*/*.fasta' quast_quality_assembler(quast_file, quast_dir, ref_file, assembly_dir) main()