annotate fibronectin/args.py @ 0:0c6cfb9906f3 draft default tip

Uploaded
author cbib
date Wed, 10 Nov 2021 15:15:50 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
1 # -*- coding: utf-8 -*-
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
2 import sys, getopt, os
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
3
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
4
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
5 class Args:
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
6
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
7 def __init__(self):
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
8 """
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
9 Instanciate Files object
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
10 """
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
11 self.input = None
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
12 self.output_dir = None
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
13 self.pattern = None
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
14 self.site_res_5 = None
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
15 self.site_res_3 = None
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
16 self.getargs()
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
17
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
18 def usage(self, info):
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
19 text = None
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
20 text = "Fibronectin script.\n\n"
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
21 if (info): text += info
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
22 temp = "Option\t\t\t\tfile\t\t\tDescription\n"
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
23 text += temp
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
24 text += '-' * (len(temp) + 60)
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
25 text += '\n'
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
26 text += "-i, --input\t\t\tfile.fasta\t\tFasta file that contains the DNA sequences\n"
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
27 text += "-o, --output_dir\t\t/path/for/output\tDirectory where output files will be written\n"
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
28 text += "-p, --pattern\t\t\tstring\t\t\tPattern of the sequence bank\n"
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
29 text += "-5, --restriction-site-5\tstring\t\t\tSequence of the restriction site in 5'\n"
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
30 text += "-3, --restriction-site-3\tstring\t\t\tSequence of the restriction site in 3'\n"
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
31 return text
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
32
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
33 def case(self):
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
34 # Test des fichiers et repertoires
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
35 if not self.input:
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
36 sys.exit(self.usage("input (-i,--input) : \"%s\" must be indicated\n" % (self.input)))
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
37 if not self.output_dir:
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
38 sys.exit(self.usage("output directory (-o,--output_dir) : \"%s\" must be indicated\n" % (self.output_dir)))
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
39 if not self.pattern:
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
40 sys.exit(
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
41 self.usage("Pattern of the sequence bank (-p,--pattern) : \"%s\" must be indicated\n" % (self.pattern)))
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
42 if not self.site_res_5:
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
43 sys.exit(self.usage(
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
44 "Sequence of the restriction site in 5' (-5,--restriction-site-5) : \"%s\" must be indicated\n" % (
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
45 self.site_res_5)))
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
46 if not self.site_res_3:
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
47 sys.exit(self.usage(
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
48 "Sequence of the restriction site in 3' (-3,--restriction-site-3) : \"%s\" must be indicated\n" % (
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
49 self.site_res_3)))
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
50
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
51 def data_format(self):
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
52 """
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
53 Check if information are correct
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
54 """
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
55 # Run without arguments
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
56 if len(sys.argv) == 1:
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
57 sys.exit(self.usage(None))
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
58 # Test input file argument
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
59 if self.input:
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
60 if not os.path.isfile(self.input):
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
61 print(self.input)
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
62 print(os.path.isfile(self.input))
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
63 #sys.exit(self.usage("Error with \"%s\" : -i required an input file\n" % self.multilist))
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
64
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
65 # Determine les fichiers fournis en arguments
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
66
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
67 def getargs(self):
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
68 """
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
69 Determine the files provided as arguments
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
70 @return: Choosen options
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
71 """
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
72 # Sans argument
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
73 if len(sys.argv) <= 1: sys.exit("Do './fibronectin.py -h' for a usage summary")
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
74 # test des option
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
75 try:
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
76 (opts, args) = getopt.getopt(sys.argv[1:], "i:o:p:5:3:h",
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
77 ["input=", "output_dir=", "pattern=", "site_res_5=", "site_res_3="])
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
78 except getopt.GetoptError as err:
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
79 # print help information and exit:
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
80 print(str(err)) # will print something like "option -a not recognized"
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
81 sys.exit(self.usage(None))
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
82 # Identification of options
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
83 for (o, a) in opts:
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
84 if o in ("-i", "--input"):
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
85 self.input = a
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
86 elif o in ("-o", "--output_dir"):
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
87 self.output_dir = a
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
88 elif o in ("-p", "--pattern"):
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
89 self.pattern = a
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
90 elif o in ("-5", "--restriction-site-5"):
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
91 self.site_res_5 = a
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
92 elif o in ("-3", "--restriction-site-3"):
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
93 self.site_res_3 = a
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
94 elif o in ("-h", "--help"):
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
95 sys.exit(self.usage(None))
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
96 else:
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
97 assert False, "unhandled option"
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
98 # Verification of cases
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
99 self.case()
0c6cfb9906f3 Uploaded
cbib
parents:
diff changeset
100 self.data_format()