Mercurial > repos > iuc > syndiva
comparison args.py @ 0:fecbda358277 draft default tip
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/SynDivA commit 90c5ec603e2c6b8c49d2dc7ec1b1e97f9d8fb92c
| author | iuc |
|---|---|
| date | Thu, 23 Jun 2022 22:31:40 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:fecbda358277 |
|---|---|
| 1 # -*- coding: utf-8 -*- | |
| 2 import getopt | |
| 3 import os | |
| 4 import sys | |
| 5 | |
| 6 | |
| 7 def usage(info) -> str: | |
| 8 text = "SynDivA script.\n\n" | |
| 9 if info: | |
| 10 text += info | |
| 11 temp = "Option\t\t\t\tfile\t\t\tDescription\n" | |
| 12 text += temp | |
| 13 text += '-' * (len(temp) + 60) | |
| 14 text += '\n' | |
| 15 text += "-i, --input\t\t\tfile.fasta\t\tFasta file that contains the DNA sequences\n" | |
| 16 text += "-o, --output_dir\t\t/path/for/output\tDirectory where output files will be written\n" | |
| 17 text += "-p, --pattern\t\t\tstring\t\t\tPattern of the sequence bank\n" | |
| 18 text += "-5, --restriction-site-5\tstring\t\t\tSequence of the restriction site in 5'\n" | |
| 19 text += "-3, --restriction-site-3\tstring\t\t\tSequence of the restriction site in 3'\n" | |
| 20 return text | |
| 21 | |
| 22 | |
| 23 def get_os_path_join(directory, filename): | |
| 24 return os.path.join(directory, filename) | |
| 25 | |
| 26 | |
| 27 def get_os_path_name(input): | |
| 28 return os.path.basename(input) | |
| 29 | |
| 30 | |
| 31 def check_pattern(pattern): | |
| 32 authorized_pattern_letter = ['A', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'K', 'L', 'M', | |
| 33 'N', 'P', 'Q', 'R', 'S', 'T', 'V', 'W', 'Y', ':', '0', | |
| 34 '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '*'] | |
| 35 return len([letter in authorized_pattern_letter for letter in pattern]) == len(pattern) | |
| 36 | |
| 37 | |
| 38 class Args: | |
| 39 | |
| 40 def __init__(self): | |
| 41 """ | |
| 42 Instanciate Files object | |
| 43 """ | |
| 44 self.input = None | |
| 45 self.output_dir = None | |
| 46 self.pattern = None | |
| 47 self.site_res_5 = None | |
| 48 self.site_res_3 = None | |
| 49 self.getargs() | |
| 50 | |
| 51 def case(self): | |
| 52 # Test des fichiers et repertoires | |
| 53 if not self.input: | |
| 54 sys.exit(usage("input (-i,--input) : \"%s\" must be indicated\n" % (self.input))) | |
| 55 if not self.output_dir: | |
| 56 sys.exit(usage("output directory (-o,--output_dir) : \"%s\" must be indicated\n" % (self.output_dir))) | |
| 57 if not self.pattern: | |
| 58 sys.exit( | |
| 59 usage("Pattern of the sequence bank (-p,--pattern) : \"%s\" must be indicated\n" % (self.pattern))) | |
| 60 if not self.site_res_5: | |
| 61 sys.exit(usage( | |
| 62 "Sequence of the restriction site in 5' (-5,--restriction-site-5) : \"%s\" must be indicated\n" % ( | |
| 63 self.site_res_5))) | |
| 64 if not self.site_res_3: | |
| 65 sys.exit(usage( | |
| 66 "Sequence of the restriction site in 3' (-3,--restriction-site-3) : \"%s\" must be indicated\n" % ( | |
| 67 self.site_res_3))) | |
| 68 | |
| 69 def data_format(self): | |
| 70 """ | |
| 71 Check if information are correct | |
| 72 """ | |
| 73 # Run without arguments | |
| 74 if len(sys.argv) == 1: | |
| 75 sys.exit(usage(None)) | |
| 76 # Test input file argument | |
| 77 if self.input and not os.path.isfile(self.input): | |
| 78 print(self.input) | |
| 79 print(os.path.isfile(self.input)) | |
| 80 | |
| 81 def getargs(self): | |
| 82 """ | |
| 83 Determine the files provided as arguments | |
| 84 @return: Choosen options | |
| 85 """ | |
| 86 # Sans argument | |
| 87 if len(sys.argv) <= 1: | |
| 88 sys.exit("Do './fibronectin.py -h' for a usage summary") | |
| 89 # options test | |
| 90 try: | |
| 91 (opts, args) = getopt.getopt(sys.argv[1:], "i:o:p:5:3:h", | |
| 92 ["input=", "output_dir=", "pattern=", "site_res_5=", "site_res_3="]) | |
| 93 except getopt.GetoptError as err: | |
| 94 # print help information and exit: | |
| 95 print(str(err)) # will print something like "option -a not recognized" | |
| 96 sys.exit(usage(None)) | |
| 97 # Identification of options | |
| 98 for (o, a) in opts: | |
| 99 if o in ("-i", "--input"): | |
| 100 self.input = a | |
| 101 elif o in ("-o", "--output_dir"): | |
| 102 self.output_dir = a | |
| 103 elif o in ("-p", "--pattern"): | |
| 104 self.pattern = a | |
| 105 elif o in ("-5", "--restriction-site-5"): | |
| 106 self.site_res_5 = a | |
| 107 elif o in ("-3", "--restriction-site-3"): | |
| 108 self.site_res_3 = a | |
| 109 elif o in ("-h", "--help"): | |
| 110 sys.exit(usage(None)) | |
| 111 else: | |
| 112 assert False, "unhandled option" | |
| 113 # Verification of cases | |
| 114 self.case() | |
| 115 self.data_format() |
