Mercurial > repos > iss > eurl_vtec_wgs_pt
annotate scripts/modules/utils.py @ 3:0506503db01d draft
planemo upload commit 0708bd0601ac65e8a1c7cdd2504cebdf45755828
| author | iss | 
|---|---|
| date | Thu, 19 Oct 2023 12:31:29 +0000 | 
| parents | c6bab5103a14 | 
| children | 
| rev | line source | 
|---|---|
| 0 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 1 import pickle | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 2 import traceback | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 3 import shlex | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 4 import subprocess | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 5 from threading import Timer | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 6 import shutil | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 7 import time | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 8 import functools | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 9 import os.path | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 10 import sys | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 11 import argparse | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 12 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 13 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 14 def start_logger(workdir): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 15 time_str = time.strftime("%Y%m%d-%H%M%S") | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 16 sys.stdout = Logger(workdir, time_str) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 17 logfile = sys.stdout.getLogFile() | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 18 return logfile, time_str | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 19 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 20 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 21 class Logger(object): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 22 def __init__(self, out_directory, time_str): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 23 self.logfile = os.path.join(out_directory, str('run.' + time_str + '.log')) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 24 self.terminal = sys.stdout | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 25 self.log = open(self.logfile, "w") | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 26 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 27 def write(self, message): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 28 self.terminal.write(message) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 29 self.log.write(message) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 30 self.log.flush() | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 31 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 32 def flush(self): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 33 pass | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 34 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 35 def getLogFile(self): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 36 return self.logfile | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 37 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 38 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 39 def checkPrograms(programs_version_dictionary): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 40 print('\n' + 'Checking dependencies...') | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 41 programs = programs_version_dictionary | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 42 which_program = ['which', ''] | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 43 listMissings = [] | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 44 for program in programs: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 45 which_program[1] = program | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 46 run_successfully, stdout, stderr = runCommandPopenCommunicate(which_program, False, None, False) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 47 if not run_successfully: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 48 listMissings.append(program + ' not found in PATH.') | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 49 else: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 50 print(stdout.splitlines()[0]) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 51 if programs[program][0] is None: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 52 print(program + ' (impossible to determine programme version) found at: ' + stdout.splitlines()[0]) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 53 else: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 54 if program.endswith('.jar'): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 55 check_version = ['java', '-jar', stdout.splitlines()[0], programs[program][0]] | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 56 programs[program].append(stdout.splitlines()[0]) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 57 else: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 58 check_version = [stdout.splitlines()[0], programs[program][0]] | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 59 run_successfully, stdout, stderr = runCommandPopenCommunicate(check_version, False, None, False) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 60 if stdout == '': | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 61 stdout = stderr | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 62 if program in ['wget', 'awk']: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 63 version_line = stdout.splitlines()[0].split(' ', 3)[2] | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 64 elif program in ['prefetch', 'fastq-dump']: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 65 version_line = stdout.splitlines()[1].split(' ')[-1] | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 66 else: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 67 version_line = stdout.splitlines()[0].split(' ')[-1] | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 68 replace_characters = ['"', 'v', 'V', '+', ','] | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 69 for i in replace_characters: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 70 version_line = version_line.replace(i, '') | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 71 print(program + ' (' + version_line + ') found') | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 72 if programs[program][1] == '>=': | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 73 program_found_version = version_line.split('.') | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 74 program_version_required = programs[program][2].split('.') | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 75 if len(program_version_required) == 3: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 76 if len(program_found_version) == 2: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 77 program_found_version.append(0) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 78 else: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 79 program_found_version[2] = program_found_version[2].split('_')[0] | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 80 for i in range(0, len(program_version_required)): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 81 if int(program_found_version[i]) > int(program_version_required[i]): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 82 break | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 83 elif int(program_found_version[i]) == int(program_version_required[i]): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 84 continue | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 85 else: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 86 listMissings.append('It is required ' + program + ' with version ' + | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 87 programs[program][1] + ' ' + programs[program][2]) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 88 else: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 89 if version_line != programs[program][2]: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 90 listMissings.append('It is required ' + program + ' with version ' + programs[program][1] + | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 91 ' ' + programs[program][2]) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 92 return listMissings | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 93 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 94 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 95 def requiredPrograms(): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 96 programs_version_dictionary = {} | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 97 programs_version_dictionary['rematch.py'] = ['--version', '>=', '4.0'] | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 98 missingPrograms = checkPrograms(programs_version_dictionary) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 99 if len(missingPrograms) > 0: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 100 sys.exit('\n' + 'Errors:' + '\n' + '\n'.join(missingPrograms)) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 101 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 102 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 103 def general_information(logfile, version, outdir, time_str): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 104 # Check if output directory exists | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 105 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 106 print('\n' + '==========> patho_typing <==========') | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 107 print('\n' + 'Program start: ' + time.ctime()) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 108 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 109 # Tells where the logfile will be stored | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 110 print('\n' + 'LOGFILE:') | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 111 print(logfile) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 112 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 113 # Print command | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 114 print('\n' + 'COMMAND:') | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 115 script_path = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'patho_typing.py') | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 116 print(sys.executable + ' ' + ' '.join(sys.argv)) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 117 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 118 # Print directory where programme was lunch | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 119 print('\n' + 'PRESENT DIRECTORY:') | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 120 present_directory = os.path.abspath(os.getcwd()) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 121 print(present_directory) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 122 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 123 # Print program version | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 124 print('\n' + 'VERSION:') | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 125 script_version_git(version, present_directory, script_path) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 126 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 127 # Check programms | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 128 requiredPrograms() | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 129 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 130 return script_path | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 131 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 132 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 133 def setPATHvariable(doNotUseProvidedSoftware, script_path): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 134 path_variable = os.environ['PATH'] | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 135 script_folder = os.path.dirname(script_path) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 136 # Set path to use provided softwares | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 137 if not doNotUseProvidedSoftware: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 138 bowtie2 = os.path.join(script_folder, 'src', 'bowtie2-2.2.9') | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 139 samtools = os.path.join(script_folder, 'src', 'samtools-1.3.1', 'bin') | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 140 bcftools = os.path.join(script_folder, 'src', 'bcftools-1.3.1', 'bin') | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 141 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 142 os.environ['PATH'] = str(':'.join([bowtie2, samtools, bcftools, path_variable])) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 143 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 144 # Print PATH variable | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 145 print('\n' + 'PATH variable:') | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 146 print(os.environ['PATH']) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 147 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 148 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 149 def script_version_git(version, current_directory, script_path, no_git_info=False): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 150 """ | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 151 Print script version and get GitHub commit information | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 152 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 153 Parameters | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 154 ---------- | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 155 version : str | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 156 Version of the script, e.g. "4.0" | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 157 current_directory : str | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 158 Path to the directory where the script was start to run | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 159 script_path : str | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 160 Path to the script running | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 161 no_git_info : bool, default False | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 162 True if it is not necessary to retreive the GitHub commit information | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 163 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 164 Returns | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 165 ------- | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 166 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 167 """ | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 168 print('Version {}'.format(version)) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 169 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 170 if not no_git_info: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 171 try: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 172 os.chdir(os.path.dirname(os.path.dirname(script_path))) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 173 command = ['git', 'log', '-1', '--date=local', '--pretty=format:"%h (%H) - Commit by %cn, %cd) : %s"'] | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 174 run_successfully, stdout, stderr = runCommandPopenCommunicate(command, False, 15, False) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 175 print(stdout) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 176 command = ['git', 'remote', 'show', 'origin'] | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 177 run_successfully, stdout, stderr = runCommandPopenCommunicate(command, False, 15, False) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 178 print(stdout) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 179 except: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 180 print('HARMLESS WARNING: git command possibly not found. The GitHub repository information will not be' | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 181 ' obtained.') | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 182 finally: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 183 os.chdir(current_directory) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 184 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 185 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 186 def runTime(start_time): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 187 end_time = time.time() | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 188 time_taken = end_time - start_time | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 189 hours, rest = divmod(time_taken, 3600) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 190 minutes, seconds = divmod(rest, 60) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 191 print('Runtime :' + str(hours) + 'h:' + str(minutes) + 'm:' + str(round(seconds, 2)) + 's') | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 192 return round(time_taken, 2) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 193 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 194 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 195 def timer(function, name): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 196 @functools.wraps(function) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 197 def wrapper(*args, **kwargs): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 198 print('\n' + 'RUNNING {0}\n'.format(name)) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 199 start_time = time.time() | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 200 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 201 results = list(function(*args, **kwargs)) # guarantees return is a list to allow .insert() | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 202 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 203 time_taken = runTime(start_time) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 204 print('END {0}'.format(name)) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 205 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 206 results.insert(0, time_taken) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 207 return results | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 208 return wrapper | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 209 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 210 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 211 def removeDirectory(directory): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 212 if os.path.isdir(directory): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 213 shutil.rmtree(directory) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 214 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 215 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 216 def saveVariableToPickle(variableToStore, pickleFile): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 217 with open(pickleFile, 'wb') as writer: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 218 pickle.dump(variableToStore, writer) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 219 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 220 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 221 def extractVariableFromPickle(pickleFile): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 222 with open(pickleFile, 'rb') as reader: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 223 variable = pickle.load(reader) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 224 return variable | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 225 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 226 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 227 def trace_unhandled_exceptions(func): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 228 @functools.wraps(func) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 229 def wrapped_func(*args, **kwargs): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 230 try: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 231 func(*args, **kwargs) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 232 except: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 233 print('Exception in ' + func.__name__) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 234 traceback.print_exc() | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 235 return wrapped_func | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 236 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 237 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 238 def kill_subprocess_Popen(subprocess_Popen, command): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 239 print('Command run out of time: ' + str(command)) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 240 subprocess_Popen.kill() | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 241 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 242 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 243 def runCommandPopenCommunicate(command, shell_True, timeout_sec_None, print_comand_True): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 244 run_successfully = False | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 245 if not isinstance(command, str): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 246 command = ' '.join(command) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 247 command = shlex.split(command) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 248 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 249 if print_comand_True: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 250 print('Running: ' + ' '.join(command)) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 251 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 252 if shell_True: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 253 command = ' '.join(command) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 254 proc = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 255 else: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 256 proc = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 257 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 258 not_killed_by_timer = True | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 259 if timeout_sec_None is None: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 260 stdout, stderr = proc.communicate() | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 261 else: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 262 time_counter = Timer(timeout_sec_None, kill_subprocess_Popen, args=(proc, command,)) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 263 time_counter.start() | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 264 stdout, stderr = proc.communicate() | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 265 time_counter.cancel() | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 266 not_killed_by_timer = time_counter.isAlive() | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 267 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 268 stdout = stdout.decode("utf-8") | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 269 stderr = stderr.decode("utf-8") | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 270 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 271 if proc.returncode == 0: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 272 run_successfully = True | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 273 else: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 274 if not print_comand_True and not_killed_by_timer: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 275 print('Running: ' + str(command)) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 276 if len(stdout) > 0: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 277 print('STDOUT') | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 278 print(stdout) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 279 if len(stderr) > 0: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 280 print('STDERR') | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 281 print(stderr) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 282 return run_successfully, stdout, stderr | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 283 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 284 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 285 def required_length(tuple_length_options, argument_name): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 286 class RequiredLength(argparse.Action): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 287 def __call__(self, parser, args, values, option_string=None): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 288 if len(values) not in tuple_length_options: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 289 msg = 'Option {argument_name} requires one of the following number of' \ | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 290 ' arguments: {tuple_length_options}'.format(argument_name=self.argument_name, | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 291 tuple_length_options=tuple_length_options) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 292 raise argparse.ArgumentTypeError(msg) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 293 setattr(args, self.dest, values) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 294 return RequiredLength | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 295 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 296 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 297 def get_sequence_information(fasta_file, length_extra_seq): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 298 sequence_dict = {} | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 299 headers = {} | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 300 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 301 with open(fasta_file, 'rtU') as reader: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 302 blank_line_found = False | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 303 sequence_counter = 0 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 304 temp_sequence_dict = {} | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 305 for line in reader: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 306 line = line.splitlines()[0] | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 307 if len(line) > 0: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 308 if not blank_line_found: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 309 if line.startswith('>'): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 310 if len(temp_sequence_dict) > 0: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 311 if list(temp_sequence_dict.values())[0]['length'] - 2 * length_extra_seq > 0: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 312 sequence_dict[list(temp_sequence_dict.keys())[0]] = list(temp_sequence_dict.values())[0] | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 313 headers[list(temp_sequence_dict.values())[0]['header'].lower()] = sequence_counter | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 314 else: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 315 print(list(temp_sequence_dict.values())[0]['header'] + ' sequence ignored due to ' | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 316 'length <= 0') | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 317 temp_sequence_dict = {} | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 318 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 319 if line[1:].lower() in headers: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 320 sys.exit('Found duplicated sequence headers') | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 321 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 322 sequence_counter += 1 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 323 temp_sequence_dict[sequence_counter] = {'header': line[1:].lower(), 'sequence': '', 'length': 0} | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 324 else: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 325 temp_sequence_dict[sequence_counter]['sequence'] += line.upper() | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 326 temp_sequence_dict[sequence_counter]['length'] += len(line) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 327 else: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 328 sys.exit('It was found a blank line between the fasta file above line ' + line) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 329 else: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 330 blank_line_found = True | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 331 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 332 if len(temp_sequence_dict) > 0: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 333 if list(temp_sequence_dict.values())[0]['length'] - 2 * length_extra_seq > 0: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 334 sequence_dict[list(temp_sequence_dict.keys())[0]] = list(temp_sequence_dict.values())[0] | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 335 headers[list(temp_sequence_dict.values())[0]['header'].lower()] = sequence_counter | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 336 else: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 337 print(list(temp_sequence_dict.values())[0]['header'] + ' sequence ignored due to length <= 0') | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 338 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 339 return sequence_dict, headers | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 340 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 341 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 342 def simplify_sequence_dict(sequence_dict): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 343 simple_sequence_dict = {} | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 344 for counter, info in list(sequence_dict.items()): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 345 simple_sequence_dict[info['header']] = info | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 346 del simple_sequence_dict[info['header']]['header'] | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 347 return simple_sequence_dict | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 348 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 349 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 350 def chunkstring(string, length): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 351 return (string[0 + i:length + i] for i in range(0, len(string), length)) | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 352 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 353 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 354 def clean_headers_sequences(sequence_dict): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 355 problematic_characters = ["|", " ", ",", ".", "(", ")", "'", "/", ":"] | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 356 # print 'Checking if reference sequences contain ' + str(problematic_characters) + '\n' | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 357 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 358 headers_changed = False | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 359 new_headers = {} | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 360 for i in sequence_dict: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 361 if any(x in sequence_dict[i]['header'] for x in problematic_characters): | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 362 for x in problematic_characters: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 363 sequence_dict[i]['header'] = sequence_dict[i]['header'].replace(x, '_') | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 364 headers_changed = True | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 365 new_headers[sequence_dict[i]['header'].lower()] = i | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 366 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 367 if headers_changed: | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 368 print('At least one of the those characters was found. Replacing those with _' + '\n') | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 369 | 
| 
c6bab5103a14
"planemo upload commit 6abf3e299d82d07e6c3cf8642bdea80e96df64c3-dirty"
 iss parents: diff
changeset | 370 return sequence_dict, new_headers | 
