Mercurial > repos > galaxyp > maxquant
comparison mqparam.py @ 3:175e062b6a17 draft
"planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit 74b5aa29e49deaaebe19ce2355a70d4f570f4951"
author | galaxyp |
---|---|
date | Thu, 15 Aug 2019 08:09:00 -0400 |
parents | 8bac3cc5c5de |
children | dcd39bcc7481 |
comparison
equal
deleted
inserted
replaced
2:666f3453a99d | 3:175e062b6a17 |
---|---|
62 True | 62 True |
63 """ | 63 """ |
64 | 64 |
65 child = ET.SubElement(el, name, attrib=attrib if attrib else {}) | 65 child = ET.SubElement(el, name, attrib=attrib if attrib else {}) |
66 child.text = str(text) | 66 child.text = str(text) |
67 | |
68 @staticmethod | |
69 def _check_validity(design, len_infiles): | |
70 "Perform some checks on the exp. design template" | |
71 design_len = len(design['Name']) | |
72 match = len(list(filter(lambda x: bool(x), design['Name']))) | |
73 if match < len_infiles: | |
74 raise Exception("Error parsing experimental design template: " + | |
75 "Found only {} matching entries ".format(design_len) + | |
76 "for {} input files".format(len_infiles)) | |
77 for i in range(0, design_len): | |
78 msg = "Error in line " + str(i + 2) + " of experimental design: " | |
79 if not (design['Name'][i] and design['Experiment'][i]): | |
80 raise Exception(msg + " Name or Experiment is empty.") | |
81 if design['PTM'][i].lower() not in ('true', 'false'): | |
82 raise Exception(msg + "Defines invalid PTM value, " + | |
83 "should be 'True' or 'False'.") | |
84 try: | |
85 int(design['Fraction'][i]) | |
86 except ValueError as e: | |
87 raise Exception(msg + str(e)) | |
67 | 88 |
68 def _make_exp_design(self, infiles): | 89 def _make_exp_design(self, infiles): |
69 """Create a dict representing an experimental design from | 90 """Create a dict representing an experimental design from |
70 an experimental design template and a list of input files. | 91 an experimental design template and a list of input files. |
71 If the experimental design template is None, create a default | 92 If the experimental design template is None, create a default |
78 >>> design['Name'] | 99 >>> design['Name'] |
79 ['./test-data/BSA_min_21.mzXML', './test-data/BSA_min_22.mzXML'] | 100 ['./test-data/BSA_min_21.mzXML', './test-data/BSA_min_22.mzXML'] |
80 >>> design['Fraction'] | 101 >>> design['Fraction'] |
81 ['1', '2'] | 102 ['1', '2'] |
82 """ | 103 """ |
104 | |
83 design = {s: [] for s in ("Name", "PTM", "Fraction", "Experiment")} | 105 design = {s: [] for s in ("Name", "PTM", "Fraction", "Experiment")} |
84 if not self.exp_design: | 106 if not self.exp_design: |
85 design["Name"] = infiles | 107 design["Name"] = infiles |
86 design["Fraction"] = ('32767',) * len(infiles) | 108 design["Fraction"] = ('32767',) * len(infiles) |
87 design["Experiment"] = [os.path.split(f)[1] for f in infiles] | 109 design["Experiment"] = [os.path.split(f)[1] for f in infiles] |
92 index = [] | 114 index = [] |
93 for i in index_line.split('\t'): | 115 for i in index_line.split('\t'): |
94 if i in design: | 116 if i in design: |
95 index.append(i) | 117 index.append(i) |
96 else: | 118 else: |
97 raise Exception("Invalid comlumn index in experimental" | 119 raise Exception("Invalid column index in experimental" |
98 + " design template: {}".format(i)) | 120 + " design template: {}".format(i)) |
121 | |
99 for line in design_file: | 122 for line in design_file: |
100 row = line.strip().split('\t') | 123 row = line.strip().split('\t') |
101 for e, i in zip_longest(row, index): | 124 for e, i in zip_longest(row, index): |
125 if i == "Fraction" and e == '': | |
126 e = 32767 | |
127 elif i == "PTM" and not e: | |
128 e = 'False' | |
102 design[i].append(e) | 129 design[i].append(e) |
103 | 130 |
104 # map infiles to names in exp. design template | 131 # map infiles to names in exp. design template |
105 names = [] | 132 names = [] |
106 names_to_paths = {} | 133 names_to_paths = {} |
115 fname = re.sub(self.substitution_rx, '_', name) | 142 fname = re.sub(self.substitution_rx, '_', name) |
116 names.append(names_to_paths[fname] if fname in names_to_paths | 143 names.append(names_to_paths[fname] if fname in names_to_paths |
117 else None) | 144 else None) |
118 # replace orig. file names with matching links to galaxy datasets | 145 # replace orig. file names with matching links to galaxy datasets |
119 design['Name'] = names | 146 design['Name'] = names |
147 MQParam._check_validity(design, len(infiles)) | |
120 | 148 |
121 return design | 149 return design |
122 | 150 |
123 def add_infiles(self, infiles, interactive): | 151 def add_infiles(self, infiles, interactive): |
124 """Add a list of raw/mzxml files to the mqpar.xml. | 152 """Add a list of raw/mzxml files to the mqpar.xml. |
221 fasta_node.clear() | 249 fasta_node.clear() |
222 fasta_node.tag = "fastaFiles" | 250 fasta_node.tag = "fastaFiles" |
223 | 251 |
224 for index in range(len(files)): | 252 for index in range(len(files)): |
225 filepath = '<fastaFilePath>' + files[index] | 253 filepath = '<fastaFilePath>' + files[index] |
254 identifier = identifier.replace('<', '<') | |
255 description = description.replace('<', '<') | |
226 fasta = self.fasta_template.replace('<fastaFilePath>', filepath) | 256 fasta = self.fasta_template.replace('<fastaFilePath>', filepath) |
227 fasta = fasta.replace('<identifierParseRule>', | 257 fasta = fasta.replace('<identifierParseRule>', |
228 '<identifierParseRule>' + identifier) | 258 '<identifierParseRule>' + identifier) |
229 fasta = fasta.replace('<descriptionParseRule>', | 259 fasta = fasta.replace('<descriptionParseRule>', |
230 '<descriptionParseRule>' + description) | 260 '<descriptionParseRule>' + description) |