Mercurial > repos > yating-l > suite_gonramp_apollo2
annotate util/santitizer.py @ 0:9945eba268e6 draft default tip
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
| author | yating-l | 
|---|---|
| date | Mon, 27 Nov 2017 12:49:27 -0500 | 
| parents | |
| children | 
| rev | line source | 
|---|---|
| 
0
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
1 #!/usr/bin/python | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
2 # -*- coding: utf8 -*- | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
3 | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
4 """ | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
5 This class handles the subprocess calls of the different tools used | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
6 in HubArchiveCreator | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
7 """ | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
8 | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
9 import logging | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
10 import os | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
11 import subprocess | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
12 import sys | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
13 import string | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
14 import tempfile | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
15 | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
16 | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
17 def prefixTrackName(filename): | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
18 """ | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
19 santitize trackName. Because track name must begin with a letter and | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
20 contain only the following chars: [a-zA-Z0-9_]. | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
21 See the "track" Common settings at: | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
22 https://genome.ucsc.edu/goldenpath/help/trackDb/trackDbHub.html#bigPsl_-_Pairwise_Alignments | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
23 skip the santitization for cytoBandIdeo track | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
24 """ | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
25 if filename == 'cytoBandIdeo': | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
26 return filename | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
27 valid_chars = "_%s%s" % (string.ascii_letters, string.digits) | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
28 sanitize_name = ''.join([c if c in valid_chars else '_' for c in filename]) | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
29 sanitize_name = "gonramp_" + sanitize_name | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
30 return sanitize_name | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
31 | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
32 def sanitize_name_input(string_to_sanitize): | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
33 """ | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
34 Sanitize the string passed in parameter by replacing '/' and ' ' by '_' | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
35 | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
36 :param string_to_sanitize: | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
37 :return : | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
38 | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
39 :Example: | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
40 | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
41 >>> sanitize_name_input('this/is an//example') | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
42 this_is_an__example | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
43 """ | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
44 return string_to_sanitize \ | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
45 .replace("/", "_") \ | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
46 .replace(" ", "_") | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
47 | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
48 def sanitize_name_inputs(inputs_data): | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
49 """ | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
50 Sanitize value of the keys "name" of the dictionary passed in parameter. | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
51 | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
52 Because sometimes output from Galaxy, or even just file name, from user inputs, have spaces. | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
53 Also, it can contain '/' character and could break the use of os.path function. | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
54 | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
55 :param inputs_data: dict[string, dict[string, string]] | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
56 """ | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
57 for key in inputs_data: | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
58 inputs_data[key]["name"] = sanitize_name_input(inputs_data[key]["name"]) | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
59 | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
60 def sanitize_group_name(group_name): | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
61 return group_name.lower().replace(' ', '_') | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
62 | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
63 def sanitize_name(input_name): | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
64 """ | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
65 Galaxy will name all the files and dirs as *.dat, | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
66 the function can replace '.' to '_' for the dirs | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
67 """ | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
68 validChars = "_-%s%s" % (string.ascii_letters, string.digits) | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
69 sanitized_name = ''.join([c if c in validChars else '_' for c in input_name]) | 
| 
 
9945eba268e6
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 9009fa8663038d2cb4a1c5130600a51f31f654a1-dirty
 
yating-l 
parents:  
diff
changeset
 | 
70 return "gonramp_" + sanitized_name | 
