Mercurial > repos > xuebing > sharplabtool
comparison tools/rgenetics/listFiles.py @ 0:9071e359b9a3
Uploaded
author | xuebing |
---|---|
date | Fri, 09 Mar 2012 19:37:19 -0500 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:9071e359b9a3 |
---|---|
1 #Provides Upload tool with access to list of available files | |
2 import glob,sys | |
3 import galaxy.app as thisapp | |
4 import galaxy.util | |
5 | |
6 from elementtree.ElementTree import XML | |
7 | |
8 librepos = '/usr/local/galaxy/data/rg' | |
9 myrepos = '/home/rerla/galaxy' | |
10 marchinirepos = '/usr/local/galaxy/data/rg/snptest' | |
11 | |
12 from galaxy.tools.parameters import DataToolParameter | |
13 | |
14 #Provides Upload tool with access to list of available builds | |
15 | |
16 builds = [] | |
17 #Read build names and keys from galaxy.util | |
18 for dbkey, build_name in galaxy.util.dbnames: | |
19 builds.append((build_name,dbkey,False)) | |
20 | |
21 #Return available builds | |
22 def get_available_builds(defval='hg18'): | |
23 for i,x in enumerate(builds): | |
24 if x[1] == defval: | |
25 x = list(x) | |
26 x[2] = True | |
27 builds[i] = tuple(x) | |
28 return builds | |
29 | |
30 | |
31 | |
32 def get_tabular_cols( input, outformat='gg' ): | |
33 """numeric only other than rs for strict genome graphs | |
34 otherwise tabular. Derived from galaxy tool source around August 2007 by Ross""" | |
35 columns = [] | |
36 seenCnames = {} | |
37 elems = [] | |
38 colnames = ['Col%d' % x for x in range(input.metadata.columns+1)] | |
39 strict = (outformat=='gg') | |
40 for i, line in enumerate( file ( input.file_name ) ): | |
41 if line and not line.startswith( '#' ): | |
42 line = line.rstrip('\r\n') | |
43 elems = line.split( '\t' ) | |
44 | |
45 """ | |
46 Strict gg note: | |
47 Since this tool requires users to select only those columns | |
48 that contain numerical values, we'll restrict the column select | |
49 list appropriately other than the first column which must be a marker | |
50 """ | |
51 if len(elems) > 0: | |
52 for col in range(1, input.metadata.columns+1): | |
53 isFloat = False # short circuit common result | |
54 try: | |
55 val = float(elems[col-1]) | |
56 isFloat = True | |
57 except: | |
58 val = elems[col-1] | |
59 if val: | |
60 if i == 0: # header row | |
61 colnames[col] = val | |
62 if isFloat or (not strict) or (col == 1): # all in if not GG | |
63 option = colnames[col] | |
64 if not seenCnames.get(option,None): # new | |
65 columns.append((option,str(col),False)) | |
66 seenCnames[option] = option | |
67 #print 'get_tab: %d=%s. Columns=%s' % (i,line,str(columns)) | |
68 if len(columns) > 0 and i > 10: | |
69 """ | |
70 We have our select list built, so we can break out of the outer most for loop | |
71 """ | |
72 break | |
73 if i == 30: | |
74 break # Hopefully we never get here... | |
75 for option in range(min(5,len(columns))): | |
76 (x,y,z) = columns[option] | |
77 columns[option] = (x,y,True) | |
78 return columns # sorted select options | |
79 | |
80 def get_marchini_dir(): | |
81 """return the filesystem directory for snptest style files""" | |
82 return marchinirepos | |
83 | |
84 | |
85 def get_lib_SNPTESTCaCofiles(): | |
86 """return a list of file names - without extensions - available for caco studies | |
87 These have a common file name with both _1 and _2 suffixes""" | |
88 d = get_marchini_dir() | |
89 testsuffix = '.gen_1' # glob these | |
90 flist = glob.glob('%s/*%s' % (d,testsuffix)) | |
91 flist = [x.split(testsuffix)[0] for x in flist] # leaves with a list of file set names | |
92 if len(flist) > 0: | |
93 dat = [(flist[0],flist[0],True),] | |
94 dat += [(x,x,False) for x in flist[1:]] | |
95 else: | |
96 dat = [('No Marchini CaCo files found in %s - convert some using the Marchini converter tool' % d,'None',True),] | |
97 return dat | |
98 | |
99 def getChropt(): | |
100 """return dynamic chromosome select options | |
101 """ | |
102 c = ['X','Y'] | |
103 c += ['%d' % x for x in range(1,23)] | |
104 dat = [(x,x,False) for x in c] | |
105 x,y,z = dat[3] | |
106 dat[3] = (x,y,True) | |
107 return dat | |
108 | |
109 | |
110 def get_phecols(fname=''): | |
111 """ return a list of phenotype columns for a multi-select list | |
112 prototype: | |
113 foo = ('fake - not yet implemented','not implemented','False') | |
114 dat = [foo for x in range(5)] | |
115 return dat | |
116 """ | |
117 try: | |
118 header = file(fname,'r').next().split() | |
119 except: | |
120 return [('get_phecols unable to open file %s' % fname,'None',False),] | |
121 dat = [(x,x,False) for x in header] | |
122 return dat | |
123 | |
124 #Return various kinds of files | |
125 | |
126 def get_lib_pedfiles(): | |
127 dat = glob.glob('%s/ped/*.ped' % librepos) | |
128 dat += glob.glob('%s/ped/*.ped' % myrepos) | |
129 dat.sort() | |
130 if len(dat) > 0: | |
131 dat = [x.split('.ped')[0] for x in dat] | |
132 dat = [(x,x,'True') for x in dat] | |
133 else: | |
134 dat = [('No ped files - add some to %s/ped or %s/ped' % (librepos,myrepos),'None',True),] | |
135 return dat | |
136 | |
137 def get_lib_phefiles(): | |
138 ext = 'phe' | |
139 dat = glob.glob('%s/pheno/*.%s' % (librepos,ext)) | |
140 dat += glob.glob('%s/pheno/*.%s' % (myrepos,ext)) | |
141 dat.sort() | |
142 if len(dat) > 0: | |
143 dat = [(x,x,'False') for x in dat] | |
144 else: | |
145 dat = [('No %s files - add some to %s/pheno or %s/pheno' % (ext,librepos,myrepos),'None',True),] | |
146 return dat | |
147 | |
148 def get_lib_bedfiles(): | |
149 dat = glob.glob('%s/plinkbed/*.bed' % librepos) | |
150 dat += glob.glob('%s/plinkbed/*.bed' % myrepos) | |
151 dat.sort() | |
152 if len(dat) > 0: | |
153 dat = [x.split('.bed')[0] for x in dat] | |
154 dat = [(x,x,False) for x in dat] | |
155 else: | |
156 dat = [('No bed files - Please import some to %s/plinkbed or %s/plinkbed' % (librepos,myrepos),'None',True),] | |
157 return dat | |
158 | |
159 def get_lib_fbatfiles(): | |
160 dat = glob.glob('%s/plinkfbat/*.ped' % librepos) | |
161 dat += glob.glob('%s/plinkfbat/*.ped' % myrepos) | |
162 dat.sort() | |
163 if len(dat) > 0: | |
164 dat = [(x,x,False) for x in dat] | |
165 else: | |
166 dat = [('No fbat bed files - Please import some to %s/plinkfbat or %s/plinkfbat' % (librepos,myrepos),'None',True),] | |
167 return dat | |
168 | |
169 def get_lib_mapfiles(): | |
170 dat = glob.glob('%s/ped/*.map' % librepos) | |
171 dat += glob.glob('%s/ped/*.map' % myrepos) | |
172 dat.sort() | |
173 if len(dat) > 0: | |
174 dat = [(x,x,False) for x in dat] | |
175 else: | |
176 dat = [('No map files - add some to %s/ped' % librepos,'None',True),] | |
177 return dat | |
178 | |
179 def get_my_pedfiles(): | |
180 dat = glob.glob('%s/*.ped' % myrepos) | |
181 if len(dat) > 0: | |
182 dat = [(x,x,False) for x in dat] | |
183 else: | |
184 dat = [('No ped files - add some to %s' % librepos,'None',True),] | |
185 return dat | |
186 | |
187 def get_my_mapfiles(): | |
188 dat = glob.glob('%s/*.map' % myrepos) | |
189 if len(dat) > 0: | |
190 dat = [(x,x,'True') for x in dat] | |
191 else: | |
192 dat = [('No ped files - add some to %s' % librepos,'None',True),] | |
193 return dat | |
194 | |
195 def get_lib_xlsfiles(): | |
196 dat = glob.glob('%s/*.xls' % librepos) | |
197 if len(dat) > 0: | |
198 dat = [(x,x,False) for x in dat] | |
199 else: | |
200 dat = [('No ped files - add some to %s' % librepos,'None',True),] | |
201 return dat | |
202 | |
203 def get_lib_htmlfiles(): | |
204 dat = glob.glob('%s/*.html' % librepos) | |
205 if len(dat) > 0: | |
206 dat = [(x,x,False) for x in dat] | |
207 else: | |
208 dat = [('No ped files - add some to %s' % librepos,'None',True),] | |
209 return dat | |
210 | |
211 def get_my_xlsfiles(): | |
212 dat = glob.glob('%s/*.xls' % myrepos) | |
213 if len(dat) > 0: | |
214 dat = [(x,x,False) for x in dat] | |
215 else: | |
216 dat = [('No ped files - add some to %s' % librepos,'None',True),] | |
217 return dat | |
218 | |
219 def get_my_htmlfiles(): | |
220 dat = glob.glob('%s/*.html' % myrepos) | |
221 if len(dat) > 0: | |
222 dat = [(x,x,False) for x in dat] | |
223 else: | |
224 dat = [('No ped files - add some to %s' % librepos,'None',True),] | |
225 return dat | |
226 | |
227 |