Mercurial > repos > pieterlukasse > prims_metabolomics2
annotate match_library.py @ 25:9f03c8587d6b draft default tip
MetExp msclust upload format changed from tabular to csv
author | linda-bakker |
---|---|
date | Fri, 24 Aug 2018 09:56:05 -0400 |
parents | 43902da5d00e |
children |
rev | line source |
---|---|
21
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
1 ''' |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
2 Containing functions are called from Galaxy to populate lists/checkboxes with selectable items |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
3 ''' |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
4 import csv |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
5 import glob |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
6 import os |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
7 |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
8 |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
9 __author__ = "Marcel Kempenaar" |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
10 __contact__ = "brs@nbic.nl" |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
11 __copyright__ = "Copyright, 2012, Netherlands Bioinformatics Centre" |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
12 __license__ = "MIT" |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
13 |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
14 def get_column_type(library_file): |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
15 ''' |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
16 Returns a Galaxy formatted list of tuples containing all possibilities for the |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
17 GC-column types. Used by the library_lookup.xml tool |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
18 @param library_file: given library file from which the list of GC-column types is extracted |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
19 ''' |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
20 if library_file == "": |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
21 galaxy_output = [("", "", False)] |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
22 else: |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
23 (data, header) = read_library(library_file) |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
24 |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
25 if 'columntype' not in header: |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
26 raise IOError('(get_column_type) Missing columns in ', library_file) |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
27 |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
28 # Filter data on column type |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
29 column_type = header.index("columntype") |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
30 amounts_in_list_dict = count_occurrence([row[column_type] for row in data]) |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
31 galaxy_output = [(str(a) + "(" + str(b) + ")", a, False) for a, b in amounts_in_list_dict.items()] |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
32 |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
33 return(galaxy_output) |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
34 |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
35 |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
36 def filter_column(library_file, column_type_name): |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
37 ''' |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
38 Filters the Retention Index database on column type |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
39 @param library_file: file containing the database |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
40 @param column_type_name: column type to filter on |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
41 ''' |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
42 if library_file == "": |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
43 galaxy_output = [("", "", False)] |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
44 else: |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
45 (data, header) = read_library(library_file) |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
46 |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
47 if ('columntype' not in header or |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
48 'columnphasetype' not in header): |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
49 raise IOError('(filter_column) Missing columns in ', library_file) |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
50 |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
51 column_type = header.index("columntype") |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
52 statphase = header.index("columnphasetype") |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
53 |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
54 # Filter data on colunn type name |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
55 statphase_list = [line[statphase] for line in data if line[column_type] == column_type_name] |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
56 amounts_in_list_dict = count_occurrence(statphase_list) |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
57 galaxy_output = [(str(a) + "(" + str(b) + ")", a, False)for a, b in amounts_in_list_dict.items()] |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
58 |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
59 return(sorted(galaxy_output)) |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
60 |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
61 |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
62 def filter_column2(library_file, column_type_name, statphase): |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
63 ''' |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
64 Filters the Retention Index database on column type |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
65 @param library_file: file containing the database |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
66 @param column_type_name: column type to filter on |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
67 @param statphase: stationary phase of the column to filter on |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
68 ''' |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
69 if library_file == "": |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
70 galaxy_output = [("", "", False)] |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
71 else: |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
72 (data, header) = read_library(library_file) |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
73 |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
74 if ('columntype' not in header or |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
75 'columnphasetype' not in header or |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
76 'columnname' not in header): |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
77 raise IOError('(filter_column2) Missing columns in ', library_file) |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
78 |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
79 column_type_column = header.index("columntype") |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
80 statphase_column = header.index("columnphasetype") |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
81 column_name_column = header.index("columnname") |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
82 |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
83 # Filter data on given column type name and stationary phase |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
84 statphase_list = [line[column_name_column] for line in data if line[column_type_column] == column_type_name and |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
85 line[statphase_column] == statphase] |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
86 amounts_in_list_dict = count_occurrence(statphase_list) |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
87 galaxy_output = [(str(a) + "(" + str(b) + ")", a, False)for a, b in amounts_in_list_dict.items()] |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
88 |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
89 return(sorted(galaxy_output)) |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
90 |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
91 |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
92 def read_library(filename): |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
93 ''' |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
94 Reads a CSV file and returns its contents and a normalized header |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
95 @param filename: file to read |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
96 ''' |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
97 data = list(csv.reader(open(filename, 'rU'), delimiter='\t')) |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
98 header_clean = [i.lower().strip().replace(".", "").replace("%", "") for i in data.pop(0)] |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
99 return(data, header_clean) |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
100 |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
101 |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
102 |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
103 def get_directory_files(dir_name): |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
104 ''' |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
105 Reads the directory and |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
106 returns the list of .txt files found as a dictionary |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
107 with file name and full path so that it can |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
108 fill a Galaxy drop-down combo box. |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
109 |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
110 ''' |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
111 files = glob.glob(dir_name + "/*.*") |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
112 if len(files) == 0: |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
113 # Configuration error: no library files found in <galaxy-home-dir>/" + dir_name : |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
114 galaxy_output = [("Configuration error: expected file not found in <galaxy-home-dir>/" + dir_name, "", False)] |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
115 else: |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
116 galaxy_output = [(str(get_file_name_no_ext(file_name)), str(os.path.abspath(file_name)), False) for file_name in files] |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
117 return(galaxy_output) |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
118 |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
119 def get_file_name_no_ext(full_name): |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
120 ''' |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
121 returns just the last part of the name |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
122 ''' |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
123 simple_name = os.path.basename(full_name) |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
124 base, ext = os.path.splitext(simple_name) |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
125 return base |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
126 |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
127 |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
128 def count_occurrence(data_list): |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
129 ''' |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
130 Counts occurrences in a list and returns a dict with item:occurrence |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
131 @param data_list: list to count items from |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
132 ''' |
43902da5d00e
changed match_library location again
linda.bakker@wur.nl <linda.bakker@wur.nl>
parents:
diff
changeset
|
133 return dict((key, data_list.count(key)) for key in set(data_list)) |