annotate gd_composite.py @ 0:580da578c5e6 default tip

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