0
|
1 #!/usr/bin/env python
|
|
2
|
|
3 from galaxy import eggs
|
|
4 import pkg_resources
|
|
5 pkg_resources.require( "Cheetah" )
|
|
6 from Cheetah.Template import Template
|
|
7
|
|
8 import errno
|
|
9 import os
|
|
10 from datetime import datetime
|
|
11
|
|
12 ################################################################################
|
|
13
|
|
14 def die(message):
|
|
15 print >> sys.stderr, message
|
|
16 sys.exit(1)
|
|
17
|
|
18 def mkdir_p(path):
|
|
19 try:
|
|
20 os.makedirs(path)
|
|
21 except OSError, e:
|
|
22 if e.errno <> errno.EEXIST:
|
|
23 raise
|
|
24
|
|
25 ################################################################################
|
|
26
|
|
27 class Display(object):
|
|
28 def display(self, parameter):
|
|
29 print parameter
|
|
30
|
|
31 class DisplayFile(Display):
|
|
32 def display(self, parameter):
|
|
33 return '<a href="{0}">{1}</a>'.format(parameter.value, parameter.name)
|
|
34
|
|
35 class DisplayValue(Display):
|
|
36 def display(self, parameter):
|
|
37 if parameter.value is not None:
|
|
38 return '{0}: {1}'.format(parameter.description, parameter.value)
|
|
39 else:
|
|
40 return '{0}'.format(parameter.description)
|
|
41
|
|
42 class DisplayTagList(Display):
|
|
43 def display(self, parameter):
|
|
44 rv = []
|
|
45 if parameter.name:
|
|
46 rv.append(parameter.name)
|
|
47 rv.append('<ol>')
|
|
48 for tag in parameter.value:
|
|
49 col, individual_name = tag.split(':')
|
|
50 rv.append('<li>{0}</li>'.format(individual_name))
|
|
51 rv.append('</ol>')
|
|
52 return '\n'.join(rv)
|
|
53
|
|
54 class DisplayPopulationList(Display):
|
|
55 def display(self, parameter):
|
|
56 rv = []
|
|
57 rv.append('Populations')
|
|
58 rv.append('<ul>')
|
|
59 for population in parameter.value:
|
|
60 rv.append('<li>')
|
|
61 if population.name is not None:
|
|
62 rv.append(population.name)
|
|
63 rv.append('<ol>')
|
|
64 for name in population.individual_names():
|
|
65 rv.append('<li>{0}</li>'.format(name))
|
|
66 rv.append('</ol>')
|
|
67 rv.append('</li>')
|
|
68 rv.append('</ul>')
|
|
69 return '\n'.join(rv)
|
|
70
|
|
71 # def display(self, parameter, name=''):
|
|
72 # print '<ul> {0}'.format(name)
|
|
73 # for individual_name in parameter.individual_names():
|
|
74 # print '<li>{0}>/li>'.format(individual_name)
|
|
75 # print '</ul>'
|
|
76
|
|
77
|
|
78 class Parameter(object):
|
|
79 def __init__(self, name=None, value=None, description=None, display_type=None):
|
|
80 self.name = name
|
|
81 self.value = value
|
|
82 self.description = description
|
|
83 if display_type is None:
|
|
84 self.display_type = Display()
|
|
85 else:
|
|
86 self.display_type = display_type
|
|
87
|
|
88 def display(self):
|
|
89 return self.display_type.display(self)
|
|
90
|
|
91 class InfoPage(object):
|
|
92 _realpath = os.path.realpath(__file__)
|
|
93 _script_dir = os.path.dirname(_realpath)
|
|
94 template_file = os.path.join(_script_dir, 'gd_composite_template.html')
|
|
95 def __init__(self):
|
|
96 self.timestamp = datetime.now().strftime('%Y-%m-%d %I:%M:%S %p')
|
|
97 self.title = 'Genome Diversity Composite Dataset'
|
|
98 self.inputs = []
|
|
99 self.outputs = []
|
|
100 self.misc = ''
|
|
101 self.template = self.load_template()
|
|
102
|
|
103 def load_template(self):
|
|
104 with open(self.template_file) as f:
|
|
105 return f.read().rstrip('\r\n')
|
|
106
|
|
107 def set_title(self, title):
|
|
108 self.title = title
|
|
109
|
|
110 def add_input_parameter(self, parameter):
|
|
111 self.inputs.append(parameter)
|
|
112
|
|
113 def add_output_parameter(self, parameter):
|
|
114 self.outputs.append(parameter)
|
|
115
|
|
116 def add_misc(self, misc):
|
|
117 self.misc = misc
|
|
118
|
|
119 def render(self):
|
|
120 return Template(self.template, searchList=[{'tool': self}])
|
|
121
|
|
122
|
|
123
|
|
124
|
|
125
|
|
126
|
|
127
|
|
128
|