Mercurial > repos > galaxyp > maxquant
annotate init.py @ 22:9c52362ae7bb draft default tip
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit c810d2eaedfcad1edf1a84cab8296dcd7b35f5bc
| author | galaxyp | 
|---|---|
| date | Mon, 18 Mar 2024 13:07:04 +0000 | 
| parents | dcd39bcc7481 | 
| children | 
| rev | line source | 
|---|---|
| 1 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 1 #!/usr/bin/env python3 | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 2 """Initialize MaxQuant tool for use with a new version of | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 3 modifications/enzymes.xml. | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 4 | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 5 TODO: Append function: only add modifications that are not | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 6 already present, add modification entries to conda maxquant | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 7 | 
| 4 
dcd39bcc7481
"planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit da342a782ccc391b87fb4fead956b7b3cbd21258"
 galaxyp parents: 
3diff
changeset | 8 Usage: init.py [-m MODS_FILE] [-e ENZYMES_FILE] | 
| 1 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 9 FILES are the modifications/enzymes.xml of MaxQuant, located at | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 10 <ANACONDA_DIR>/pkgs/maxquant-<VERSION>/bin/conf/. | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 11 (for conda installations) | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 12 | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 13 Updates modification parameters in macros.xml. | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 14 """ | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 15 | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 16 import argparse | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 17 import re | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 18 import xml.etree.ElementTree as ET | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 19 from xml.dom import minidom | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 20 | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 21 | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 22 def build_list(node, name, mod_list, append=False): | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 23 """Build the modifications list in macros.xml""" | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 24 node.clear() | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 25 node.tag = 'xml' | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 26 node.set('name', name) | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 27 for m in mod_list: | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 28 ET.SubElement(node, 'expand', attrib={'macro': 'mod_option', | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 29 'value': m}) | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 30 | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 31 | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 32 parser = argparse.ArgumentParser() | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 33 parser.add_argument("-m", "--modifications", | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 34 help="modifications.xml of maxquant") | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 35 parser.add_argument("-e", "--enzymes", | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 36 help="enzymes.xml of maxquant") | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 37 args = parser.parse_args() | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 38 | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 39 if args.modifications: | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 40 mods_root = ET.parse(args.modifications).getroot() | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 41 mods = mods_root.findall('modification') | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 42 standard_mods = [] | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 43 label_mods = [] | 
| 4 
dcd39bcc7481
"planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit da342a782ccc391b87fb4fead956b7b3cbd21258"
 galaxyp parents: 
3diff
changeset | 44 iso_labels = [] | 
| 1 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 45 for m in mods: | 
| 3 
175e062b6a17
"planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit 74b5aa29e49deaaebe19ce2355a70d4f570f4951"
 galaxyp parents: 
1diff
changeset | 46 if (m.findtext('type') == 'Standard' or m.findtext('type') == 'AaSubstitution'): | 
| 1 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 47 standard_mods.append(m.get('title')) | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 48 elif m.findtext('type') == 'Label': | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 49 label_mods.append(m.get('title')) | 
| 4 
dcd39bcc7481
"planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit da342a782ccc391b87fb4fead956b7b3cbd21258"
 galaxyp parents: 
3diff
changeset | 50 elif m.findtext('type') == 'IsobaricLabel': | 
| 
dcd39bcc7481
"planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit da342a782ccc391b87fb4fead956b7b3cbd21258"
 galaxyp parents: 
3diff
changeset | 51 iso_labels.append(m.get('title')) | 
| 1 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 52 | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 53 if args.enzymes: | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 54 enzymes_root = ET.parse(args.enzymes).getroot() | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 55 enzymes = enzymes_root.findall('enzyme') | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 56 enzymes_list = [e.get('title') for e in enzymes] | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 57 | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 58 macros_root = ET.parse('./macros.xml').getroot() | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 59 for child in macros_root: | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 60 if child.get('name') == 'modification' and args.modifications: | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 61 build_list(child, 'modification', standard_mods) | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 62 elif child.get('name') == 'label' and args.modifications: | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 63 build_list(child, 'label', label_mods) | 
| 4 
dcd39bcc7481
"planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit da342a782ccc391b87fb4fead956b7b3cbd21258"
 galaxyp parents: 
3diff
changeset | 64 elif child.get('name') == 'iso_labels' and args.modifications: | 
| 
dcd39bcc7481
"planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit da342a782ccc391b87fb4fead956b7b3cbd21258"
 galaxyp parents: 
3diff
changeset | 65 build_list(child, 'iso_labels', iso_labels) | 
| 1 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 66 elif child.get('name') == 'proteases' and args.enzymes: | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 67 build_list(child, 'proteases', enzymes_list) | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 68 | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 69 rough_string = ET.tostring(macros_root, 'utf-8') | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 70 reparsed = minidom.parseString(rough_string) | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 71 pretty = reparsed.toprettyxml(indent=" ") | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 72 even_prettier = re.sub(r"\n\s+\n", r"\n", pretty) | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 73 with open('./macros.xml', 'w') as f: | 
| 
8bac3cc5c5de
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
 galaxyp parents: diff
changeset | 74 print(even_prettier, file=f) | 
