# HG changeset patch # User galaxyp # Date 1392674429 18000 # Node ID 37e5502441cc10eda5f0448c8d4a2cfc69a936bd # Parent ffe1dca945954e1749d0d241bb9d99473e19e916 Uploaded diff -r ffe1dca94595 -r 37e5502441cc LICENSE --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LICENSE Mon Feb 17 17:00:29 2014 -0500 @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2012 University of Minnesota + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff -r ffe1dca94595 -r 37e5502441cc README.md --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/README.md Mon Feb 17 17:00:29 2014 -0500 @@ -0,0 +1,47 @@ +# msconvert + +This repository contains Galaxy tool wrappers for msconvert, part of +the ProteoWizard (http://proteowizard.sourceforge.net/) package. + +# Installing + +Due to potential difficulties installing ProteoWizard with vendor +library support, tools for interacting with vendor types are seperated +out into their own wrappers. Galaxy is generally deployed under Linux, +but vendor support in ProteoWizard requires .NET 4.0. There are at +least two ways to get this to work: + + * Galaxy jobs may be configured to submit to a Windows host with + ProteoWizard installed using the + LWR. http://wiki.g2.bx.psu.edu/Admin/Config/LWR + + * ProteoWizard can be installed under Wine. Guidance on how to set + this up and package such environments for cloud deployments can be + found here: https://github.com/jmchilton/proteomics-wine-env + +Wrappers for both msconvert version 2 and version 3+ are provided +because version 3+ of msconvert with vendor library support requires +.NET 4.0 and this may difficult or impossible under Wine in Linux with +all but the most recent versions of Wine (1.4+). +# Obtaining Tools + +Repositories for all Galaxy-P tools can be found at +https:/bitbucket.org/galaxyp/. + +# Contact + +Please send suggestions for improvements and bug reports to +jmchilton@gmail.com. + +# License + +All Galaxy-P tools are licensed under the Apache License Version 2.0 +unless otherwise documented. + +# Tool Versioning + +Galaxy-P tools will have versions of the form X.Y.Z. Versions +differing only after the second decimal should be completely +compatible with each other. Breaking changes should result in an +increment of the number before and/or after the first decimal. All +tools of version less than 1.0.0 should be considered beta. diff -r ffe1dca94595 -r 37e5502441cc README_GALAXYP.md --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/README_GALAXYP.md Mon Feb 17 17:00:29 2014 -0500 @@ -0,0 +1,22 @@ +# Obtaining Tools + +Repositories for all Galaxy-P tools can be found at +https:/bitbucket.org/galaxyp/. + +# Contact + +Please send suggestions for improvements and bug reports to +jmchilton@gmail.com. + +# License + +All Galaxy-P tools are licensed under the Apache License Version 2.0 +unless otherwise documented. + +# Tool Versioning + +Galaxy-P tools will have versions of the form X.Y.Z. Versions +differing only after the second decimal should be completely +compatible with each other. Breaking changes should result in an +increment of the number before and/or after the first decimal. All +tools of version less than 1.0.0 should be considered beta. diff -r ffe1dca94595 -r 37e5502441cc README_REPO.md --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/README_REPO.md Mon Feb 17 17:00:29 2014 -0500 @@ -0,0 +1,25 @@ +# msconvert + +This repository contains Galaxy tool wrappers for msconvert, part of +the ProteoWizard (http://proteowizard.sourceforge.net/) package. + +# Installing + +Due to potential difficulties installing ProteoWizard with vendor +library support, tools for interacting with vendor types are seperated +out into their own wrappers. Galaxy is generally deployed under Linux, +but vendor support in ProteoWizard requires .NET 4.0. There are at +least two ways to get this to work: + + * Galaxy jobs may be configured to submit to a Windows host with + ProteoWizard installed using the + LWR. http://wiki.g2.bx.psu.edu/Admin/Config/LWR + + * ProteoWizard can be installed under Wine. Guidance on how to set + this up and package such environments for cloud deployments can be + found here: https://github.com/jmchilton/proteomics-wine-env + +Wrappers for both msconvert version 2 and version 3+ are provided +because version 3+ of msconvert with vendor library support requires +.NET 4.0 and this may difficult or impossible under Wine in Linux with +all but the most recent versions of Wine (1.4+). diff -r ffe1dca94595 -r 37e5502441cc TODO --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TODO Mon Feb 17 17:00:29 2014 -0500 @@ -0,0 +1,1 @@ +Add precursorRefine option. diff -r ffe1dca94595 -r 37e5502441cc galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/LICENSE --- a/galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/LICENSE Mon Feb 17 16:42:53 2014 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2012 University of Minnesota - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff -r ffe1dca94595 -r 37e5502441cc galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/README.md --- a/galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/README.md Mon Feb 17 16:42:53 2014 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -# msconvert - -This repository contains Galaxy tool wrappers for msconvert, part of -the ProteoWizard (http://proteowizard.sourceforge.net/) package. - -# Installing - -Due to potential difficulties installing ProteoWizard with vendor -library support, tools for interacting with vendor types are seperated -out into their own wrappers. Galaxy is generally deployed under Linux, -but vendor support in ProteoWizard requires .NET 4.0. There are at -least two ways to get this to work: - - * Galaxy jobs may be configured to submit to a Windows host with - ProteoWizard installed using the - LWR. http://wiki.g2.bx.psu.edu/Admin/Config/LWR - - * ProteoWizard can be installed under Wine. Guidance on how to set - this up and package such environments for cloud deployments can be - found here: https://github.com/jmchilton/proteomics-wine-env - -Wrappers for both msconvert version 2 and version 3+ are provided -because version 3+ of msconvert with vendor library support requires -.NET 4.0 and this may difficult or impossible under Wine in Linux with -all but the most recent versions of Wine (1.4+). -# Obtaining Tools - -Repositories for all Galaxy-P tools can be found at -https:/bitbucket.org/galaxyp/. - -# Contact - -Please send suggestions for improvements and bug reports to -jmchilton@gmail.com. - -# License - -All Galaxy-P tools are licensed under the Apache License Version 2.0 -unless otherwise documented. - -# Tool Versioning - -Galaxy-P tools will have versions of the form X.Y.Z. Versions -differing only after the second decimal should be completely -compatible with each other. Breaking changes should result in an -increment of the number before and/or after the first decimal. All -tools of version less than 1.0.0 should be considered beta. diff -r ffe1dca94595 -r 37e5502441cc galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/README_GALAXYP.md --- a/galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/README_GALAXYP.md Mon Feb 17 16:42:53 2014 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ -# Obtaining Tools - -Repositories for all Galaxy-P tools can be found at -https:/bitbucket.org/galaxyp/. - -# Contact - -Please send suggestions for improvements and bug reports to -jmchilton@gmail.com. - -# License - -All Galaxy-P tools are licensed under the Apache License Version 2.0 -unless otherwise documented. - -# Tool Versioning - -Galaxy-P tools will have versions of the form X.Y.Z. Versions -differing only after the second decimal should be completely -compatible with each other. Breaking changes should result in an -increment of the number before and/or after the first decimal. All -tools of version less than 1.0.0 should be considered beta. diff -r ffe1dca94595 -r 37e5502441cc galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/README_REPO.md --- a/galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/README_REPO.md Mon Feb 17 16:42:53 2014 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ -# msconvert - -This repository contains Galaxy tool wrappers for msconvert, part of -the ProteoWizard (http://proteowizard.sourceforge.net/) package. - -# Installing - -Due to potential difficulties installing ProteoWizard with vendor -library support, tools for interacting with vendor types are seperated -out into their own wrappers. Galaxy is generally deployed under Linux, -but vendor support in ProteoWizard requires .NET 4.0. There are at -least two ways to get this to work: - - * Galaxy jobs may be configured to submit to a Windows host with - ProteoWizard installed using the - LWR. http://wiki.g2.bx.psu.edu/Admin/Config/LWR - - * ProteoWizard can be installed under Wine. Guidance on how to set - this up and package such environments for cloud deployments can be - found here: https://github.com/jmchilton/proteomics-wine-env - -Wrappers for both msconvert version 2 and version 3+ are provided -because version 3+ of msconvert with vendor library support requires -.NET 4.0 and this may difficult or impossible under Wine in Linux with -all but the most recent versions of Wine (1.4+). diff -r ffe1dca94595 -r 37e5502441cc galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/TODO --- a/galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/TODO Mon Feb 17 16:42:53 2014 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -Add precursorRefine option. diff -r ffe1dca94595 -r 37e5502441cc galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/msconvert.xml.template --- a/galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/msconvert.xml.template Mon Feb 17 16:42:53 2014 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,393 +0,0 @@ - - - Convert and filter a Thermo Finnigan RAW file - - - Convert and filter a mass spec peak list - - - - #set $ext = $input.ext - #if $ext.startswith("m:") - #set $ext = $ext[len("m:"):] - #end if - msconvert_wrapper.py - --input=${input} - #if hasattr($input, 'display_name') - --input_name='${input.display_name}' - #end if - --output=${output} - ## BEGIN_VERSION_DEFAULT - --fromextension=$ext - ## END_VERSION_DEFAULT - - ## BEGIN_VERSION_RAW - --fromextension=RAW - ## END_VERSION_RAW - - --toextension=${output_type} - - #if $settings.settingsType == "full" - --binaryencoding=${settings.binary_encoding} - --mzencoding=${settings.mz_encoding} - --intensityencoding=${settings.intensity_encoding} - --zlib=${settings.zlib} - #end if - - #if $filtering.filtering_use - - #if $filtering.precursor_recalculation.value - --filter "precursorRecalculation" - #end if - - #if $filtering.peak_picking.pick_peaks - --filter "peakPicking $filtering.peak_picking.prefer_vendor_peaks $filtering.peak_picking.ms_levels" - #end if - - #if str($filtering.activation) != "false" - --filter "activation $filtering.activation" - #end if - - #if len($filtering.indices) > 0 - --filter "index - #for $index in $filtering.indices - [${index.from},${index.to}] - #end for - " - #end if - - #if len($filtering.scan_numbers) > 0 - --filter "scanNumber - #for $scan_number in $filtering.scan_numbers - [${scan_number.from},${scan_number.to}] - #end for - " - #end if - - #for threshold_entry in $filtering.threshold_repeat - --filter "threshold $threshold_entry.threshold.threshold_type $threshold_entry.threshold.value $threshold_entry.orientation" - #end for - - - #if $filtering.strip_it.value - --filter "stripIT" - #end if - - #if $filtering.filter_mz_windows.do_filter - --filter "mzWindow [$filtering.filter_mz_windows.from,$filtering.filter_mz_windows.to]" - #end if - - - #if $filtering.filter_ms_levels.do_filter - --filter "msLevel [$filtering.filter_ms_levels.from, $filtering.filter_ms_levels.to]" - #end if - - #if str($filtering.etd_filtering.do_etd_filtering) == "default" - --filter "ETDFilter" - #end if - - #if str($filtering.etd_filtering.do_etd_filtering) == "advanced" - --filter "ETDFilter removePrecursor:$filtering.etd_filtering.remove_precursor removeChargeReduced:$filtering.etd_filtering.remove_charge_reduced removeNeutralLoss:$filtering.etd_filtering.remove_neutral_loss blanketRemoval:$filtering.etd_filtering.blanket_removal MatchingTolerance:$filtering.etd_filtering.matching_tolerance $filtering.etd_filtering.matching_tolerance_units" - #end if - - ## BEGIN_VERSION_3 - - #if $filtering.precursor_refine.value - --filter "precursorRefine" - #end if - - #if $filtering.ms2denoise.denoise - --filter "MS2Denoise $filtering.ms2denoise.num_peaks $filtering.ms2denoise.window_width $filtering.ms2denoise.relax" - #end if - - #if str($filtering.ms2deisotope) == "true" - --filter "MS2Deisotope" - #end if - - #if str($filtering.polarity) != "false" - --filter "polarity $filtering.polarity" - #end if - - #if str($filtering.analyzer) != "false" - --filter "analyzer $filtering.analyzer" - #end if - - ## END_VERSION_3 - - #end if - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - proteowizard - - windows - - - - -**What it does** - -Converts between various mass spectrometry peak list representations. Additional options such as filtering and/or precursor recalculation are available. - -You can view the original documentation here_. - -.. _here: http://proteowizard.sourceforge.net/tools/msconvert.html - ------- - -**Citation** - -For the underlying tool, please cite `ProteoWizard: Open Source Software for Rapid Proteomics Tools Development. Darren Kessner; Matt Chambers; Robert Burke; David Agus; Parag Mallick. Bioinformatics 2008; doi: 10.1093/bioinformatics/btn323.` - -If you use this tool in Galaxy, please cite Chilton J, et al. https://bitbucket.org/galaxyp/galaxyp-toolshed-msconvert - - - diff -r ffe1dca94595 -r 37e5502441cc galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/msconvert2.xml --- a/galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/msconvert2.xml Mon Feb 17 16:42:53 2014 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,315 +0,0 @@ - - - Convert and filter a mass spec peak list - - - proteowizard - - - #set $ext = $input.ext - #if $ext.startswith("m:") - #set $ext = $ext[len("m:"):] - #end if - msconvert_wrapper.py - --input=${input} - #if hasattr($input, 'display_name') - --input_name='${input.display_name}' - #end if - --output=${output} - ## BEGIN_VERSION_DEFAULT - --fromextension=$ext - ## END_VERSION_DEFAULT - - - --toextension=${output_type} - - #if $settings.settingsType == "full" - --binaryencoding=${settings.binary_encoding} - --mzencoding=${settings.mz_encoding} - --intensityencoding=${settings.intensity_encoding} - --zlib=${settings.zlib} - #end if - - #if $filtering.filtering_use - - #if $filtering.precursor_recalculation.value - --filter "precursorRecalculation" - #end if - - #if $filtering.peak_picking.pick_peaks - --filter "peakPicking $filtering.peak_picking.prefer_vendor_peaks $filtering.peak_picking.ms_levels" - #end if - - #if str($filtering.activation) != "false" - --filter "activation $filtering.activation" - #end if - - #if len($filtering.indices) > 0 - --filter "index - #for $index in $filtering.indices - [${index.from},${index.to}] - #end for - " - #end if - - #if len($filtering.scan_numbers) > 0 - --filter "scanNumber - #for $scan_number in $filtering.scan_numbers - [${scan_number.from},${scan_number.to}] - #end for - " - #end if - - #for threshold_entry in $filtering.threshold_repeat - --filter "threshold $threshold_entry.threshold.threshold_type $threshold_entry.threshold.value $threshold_entry.orientation" - #end for - - - #if $filtering.strip_it.value - --filter "stripIT" - #end if - - #if $filtering.filter_mz_windows.do_filter - --filter "mzWindow [$filtering.filter_mz_windows.from,$filtering.filter_mz_windows.to]" - #end if - - - #if $filtering.filter_ms_levels.do_filter - --filter "msLevel [$filtering.filter_ms_levels.from, $filtering.filter_ms_levels.to]" - #end if - - #if str($filtering.etd_filtering.do_etd_filtering) == "default" - --filter "ETDFilter" - #end if - - #if str($filtering.etd_filtering.do_etd_filtering) == "advanced" - --filter "ETDFilter removePrecursor:$filtering.etd_filtering.remove_precursor removeChargeReduced:$filtering.etd_filtering.remove_charge_reduced removeNeutralLoss:$filtering.etd_filtering.remove_neutral_loss blanketRemoval:$filtering.etd_filtering.blanket_removal MatchingTolerance:$filtering.etd_filtering.matching_tolerance $filtering.etd_filtering.matching_tolerance_units" - #end if - - - #end if - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -**What it does** - -Converts between various mass spectrometry peak list representations. Additional options such as filtering and/or precursor recalculation are available. - -You can view the original documentation here_. - -.. _here: http://proteowizard.sourceforge.net/tools/msconvert.html - ------- - -**Citation** - -For the underlying tool, please cite `ProteoWizard: Open Source Software for Rapid Proteomics Tools Development. Darren Kessner; Matt Chambers; Robert Burke; David Agus; Parag Mallick. Bioinformatics 2008; doi: 10.1093/bioinformatics/btn323.` - -If you use this tool in Galaxy, please cite Chilton J, et al. https://bitbucket.org/galaxyp/galaxyp-toolshed-msconvert - - - diff -r ffe1dca94595 -r 37e5502441cc galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/msconvert2_raw.xml --- a/galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/msconvert2_raw.xml Mon Feb 17 16:42:53 2014 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,299 +0,0 @@ - - - Convert and filter a Thermo Finnigan RAW file - - - proteowizard - - windows - - - - #set $ext = $input.ext - #if $ext.startswith("m:") - #set $ext = $ext[len("m:"):] - #end if - msconvert_wrapper.py - --input=${input} - #if hasattr($input, 'display_name') - --input_name='${input.display_name}' - #end if - --output=${output} - - ## BEGIN_VERSION_RAW - --fromextension=RAW - ## END_VERSION_RAW - - --toextension=${output_type} - - #if $settings.settingsType == "full" - --binaryencoding=${settings.binary_encoding} - --mzencoding=${settings.mz_encoding} - --intensityencoding=${settings.intensity_encoding} - --zlib=${settings.zlib} - #end if - - #if $filtering.filtering_use - - #if $filtering.precursor_recalculation.value - --filter "precursorRecalculation" - #end if - - #if $filtering.peak_picking.pick_peaks - --filter "peakPicking $filtering.peak_picking.prefer_vendor_peaks $filtering.peak_picking.ms_levels" - #end if - - #if str($filtering.activation) != "false" - --filter "activation $filtering.activation" - #end if - - #if len($filtering.indices) > 0 - --filter "index - #for $index in $filtering.indices - [${index.from},${index.to}] - #end for - " - #end if - - #if len($filtering.scan_numbers) > 0 - --filter "scanNumber - #for $scan_number in $filtering.scan_numbers - [${scan_number.from},${scan_number.to}] - #end for - " - #end if - - #for threshold_entry in $filtering.threshold_repeat - --filter "threshold $threshold_entry.threshold.threshold_type $threshold_entry.threshold.value $threshold_entry.orientation" - #end for - - - #if $filtering.strip_it.value - --filter "stripIT" - #end if - - #if $filtering.filter_mz_windows.do_filter - --filter "mzWindow [$filtering.filter_mz_windows.from,$filtering.filter_mz_windows.to]" - #end if - - - #if $filtering.filter_ms_levels.do_filter - --filter "msLevel [$filtering.filter_ms_levels.from, $filtering.filter_ms_levels.to]" - #end if - - #if str($filtering.etd_filtering.do_etd_filtering) == "default" - --filter "ETDFilter" - #end if - - #if str($filtering.etd_filtering.do_etd_filtering) == "advanced" - --filter "ETDFilter removePrecursor:$filtering.etd_filtering.remove_precursor removeChargeReduced:$filtering.etd_filtering.remove_charge_reduced removeNeutralLoss:$filtering.etd_filtering.remove_neutral_loss blanketRemoval:$filtering.etd_filtering.blanket_removal MatchingTolerance:$filtering.etd_filtering.matching_tolerance $filtering.etd_filtering.matching_tolerance_units" - #end if - - - #end if - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -**What it does** - -Converts between various mass spectrometry peak list representations. Additional options such as filtering and/or precursor recalculation are available. - -You can view the original documentation here_. - -.. _here: http://proteowizard.sourceforge.net/tools/msconvert.html - ------- - -**Citation** - -For the underlying tool, please cite `ProteoWizard: Open Source Software for Rapid Proteomics Tools Development. Darren Kessner; Matt Chambers; Robert Burke; David Agus; Parag Mallick. Bioinformatics 2008; doi: 10.1093/bioinformatics/btn323.` - -If you use this tool in Galaxy, please cite Chilton J, et al. https://bitbucket.org/galaxyp/galaxyp-toolshed-msconvert - - - diff -r ffe1dca94595 -r 37e5502441cc galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/msconvert3.xml --- a/galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/msconvert3.xml Mon Feb 17 16:42:53 2014 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,378 +0,0 @@ - - - Convert and filter a mass spec peak list - - - proteowizard - - - #set $ext = $input.ext - #if $ext.startswith("m:") - #set $ext = $ext[len("m:"):] - #end if - msconvert_wrapper.py - --input=${input} - #if hasattr($input, 'display_name') - --input_name='${input.display_name}' - #end if - --output=${output} - ## BEGIN_VERSION_DEFAULT - --fromextension=$ext - ## END_VERSION_DEFAULT - - - --toextension=${output_type} - - #if $settings.settingsType == "full" - --binaryencoding=${settings.binary_encoding} - --mzencoding=${settings.mz_encoding} - --intensityencoding=${settings.intensity_encoding} - --zlib=${settings.zlib} - #end if - - #if $filtering.filtering_use - - #if $filtering.precursor_recalculation.value - --filter "precursorRecalculation" - #end if - - #if $filtering.peak_picking.pick_peaks - --filter "peakPicking $filtering.peak_picking.prefer_vendor_peaks $filtering.peak_picking.ms_levels" - #end if - - #if str($filtering.activation) != "false" - --filter "activation $filtering.activation" - #end if - - #if len($filtering.indices) > 0 - --filter "index - #for $index in $filtering.indices - [${index.from},${index.to}] - #end for - " - #end if - - #if len($filtering.scan_numbers) > 0 - --filter "scanNumber - #for $scan_number in $filtering.scan_numbers - [${scan_number.from},${scan_number.to}] - #end for - " - #end if - - #for threshold_entry in $filtering.threshold_repeat - --filter "threshold $threshold_entry.threshold.threshold_type $threshold_entry.threshold.value $threshold_entry.orientation" - #end for - - - #if $filtering.strip_it.value - --filter "stripIT" - #end if - - #if $filtering.filter_mz_windows.do_filter - --filter "mzWindow [$filtering.filter_mz_windows.from,$filtering.filter_mz_windows.to]" - #end if - - - #if $filtering.filter_ms_levels.do_filter - --filter "msLevel [$filtering.filter_ms_levels.from, $filtering.filter_ms_levels.to]" - #end if - - #if str($filtering.etd_filtering.do_etd_filtering) == "default" - --filter "ETDFilter" - #end if - - #if str($filtering.etd_filtering.do_etd_filtering) == "advanced" - --filter "ETDFilter removePrecursor:$filtering.etd_filtering.remove_precursor removeChargeReduced:$filtering.etd_filtering.remove_charge_reduced removeNeutralLoss:$filtering.etd_filtering.remove_neutral_loss blanketRemoval:$filtering.etd_filtering.blanket_removal MatchingTolerance:$filtering.etd_filtering.matching_tolerance $filtering.etd_filtering.matching_tolerance_units" - #end if - - ## BEGIN_VERSION_3 - - #if $filtering.precursor_refine.value - --filter "precursorRefine" - #end if - - #if $filtering.ms2denoise.denoise - --filter "MS2Denoise $filtering.ms2denoise.num_peaks $filtering.ms2denoise.window_width $filtering.ms2denoise.relax" - #end if - - #if str($filtering.ms2deisotope) == "true" - --filter "MS2Deisotope" - #end if - - #if str($filtering.polarity) != "false" - --filter "polarity $filtering.polarity" - #end if - - #if str($filtering.analyzer) != "false" - --filter "analyzer $filtering.analyzer" - #end if - - ## END_VERSION_3 - - #end if - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -**What it does** - -Allows interconversion within various mass spectrometry peak list formats. Additional options such as filtering and/or precursor recalculation are available. - -You can view the original documentation here_. - -.. _here: http://proteowizard.sourceforge.net/tools/msconvert.html - ------- - -**Citation** - -For the underlying tool, please cite `ProteoWizard: Open Source Software for Rapid Proteomics Tools Development. Darren Kessner; Matt Chambers; Robert Burke; David Agus; Parag Mallick. Bioinformatics 2008; doi: 10.1093/bioinformatics/btn323.` - -If you use this tool in Galaxy, please cite Chilton J, et al. https://bitbucket.org/galaxyp/galaxyp-toolshed-msconvert - - - diff -r ffe1dca94595 -r 37e5502441cc galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/msconvert3_raw.xml --- a/galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/msconvert3_raw.xml Mon Feb 17 16:42:53 2014 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,362 +0,0 @@ - - - Convert and filter a Thermo Finnigan RAW file - - - proteowizard - - windows - - - - #set $ext = $input.ext - #if $ext.startswith("m:") - #set $ext = $ext[len("m:"):] - #end if - msconvert_wrapper.py - --input=${input} - #if hasattr($input, 'display_name') - --input_name='${input.display_name}' - #end if - --output=${output} - - ## BEGIN_VERSION_RAW - --fromextension=RAW - ## END_VERSION_RAW - - --toextension=${output_type} - - #if $settings.settingsType == "full" - --binaryencoding=${settings.binary_encoding} - --mzencoding=${settings.mz_encoding} - --intensityencoding=${settings.intensity_encoding} - --zlib=${settings.zlib} - #end if - - #if $filtering.filtering_use - - #if $filtering.precursor_recalculation.value - --filter "precursorRecalculation" - #end if - - #if $filtering.peak_picking.pick_peaks - --filter "peakPicking $filtering.peak_picking.prefer_vendor_peaks $filtering.peak_picking.ms_levels" - #end if - - #if str($filtering.activation) != "false" - --filter "activation $filtering.activation" - #end if - - #if len($filtering.indices) > 0 - --filter "index - #for $index in $filtering.indices - [${index.from},${index.to}] - #end for - " - #end if - - #if len($filtering.scan_numbers) > 0 - --filter "scanNumber - #for $scan_number in $filtering.scan_numbers - [${scan_number.from},${scan_number.to}] - #end for - " - #end if - - #for threshold_entry in $filtering.threshold_repeat - --filter "threshold $threshold_entry.threshold.threshold_type $threshold_entry.threshold.value $threshold_entry.orientation" - #end for - - - #if $filtering.strip_it.value - --filter "stripIT" - #end if - - #if $filtering.filter_mz_windows.do_filter - --filter "mzWindow [$filtering.filter_mz_windows.from,$filtering.filter_mz_windows.to]" - #end if - - - #if $filtering.filter_ms_levels.do_filter - --filter "msLevel [$filtering.filter_ms_levels.from, $filtering.filter_ms_levels.to]" - #end if - - #if str($filtering.etd_filtering.do_etd_filtering) == "default" - --filter "ETDFilter" - #end if - - #if str($filtering.etd_filtering.do_etd_filtering) == "advanced" - --filter "ETDFilter removePrecursor:$filtering.etd_filtering.remove_precursor removeChargeReduced:$filtering.etd_filtering.remove_charge_reduced removeNeutralLoss:$filtering.etd_filtering.remove_neutral_loss blanketRemoval:$filtering.etd_filtering.blanket_removal MatchingTolerance:$filtering.etd_filtering.matching_tolerance $filtering.etd_filtering.matching_tolerance_units" - #end if - - ## BEGIN_VERSION_3 - - #if $filtering.precursor_refine.value - --filter "precursorRefine" - #end if - - #if $filtering.ms2denoise.denoise - --filter "MS2Denoise $filtering.ms2denoise.num_peaks $filtering.ms2denoise.window_width $filtering.ms2denoise.relax" - #end if - - #if str($filtering.ms2deisotope) == "true" - --filter "MS2Deisotope" - #end if - - #if str($filtering.polarity) != "false" - --filter "polarity $filtering.polarity" - #end if - - #if str($filtering.analyzer) != "false" - --filter "analyzer $filtering.analyzer" - #end if - - ## END_VERSION_3 - - #end if - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -**What it does** - -Converts between various mass spectrometry peak list representations. Additional options such as filtering and/or precursor recalculation are available. - -You can view the original documentation here_. - -.. _here: http://proteowizard.sourceforge.net/tools/msconvert.html - ------- - -**Citation** - -For the underlying tool, please cite `ProteoWizard: Open Source Software for Rapid Proteomics Tools Development. Darren Kessner; Matt Chambers; Robert Burke; David Agus; Parag Mallick. Bioinformatics 2008; doi: 10.1093/bioinformatics/btn323.` - -If you use this tool in Galaxy, please cite Chilton J, et al. https://bitbucket.org/galaxyp/galaxyp-toolshed-msconvert - - - diff -r ffe1dca94595 -r 37e5502441cc galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/msconvert_raw_wrapper.py --- a/galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/msconvert_raw_wrapper.py Mon Feb 17 16:42:53 2014 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,124 +0,0 @@ -#!/usr/bin/env python -import optparse -import os -import sys -import tempfile -import shutil -import subprocess -import re -from os.path import basename -import logging - -assert sys.version_info[:2] >= ( 2, 6 ) - -log = logging.getLogger(__name__) -working_directory = os.getcwd() -tmp_stderr_name = tempfile.NamedTemporaryFile(dir = working_directory, suffix = '.stderr').name -tmp_stdout_name = tempfile.NamedTemporaryFile(dir = working_directory, suffix = '.stdout').name - -def stop_err( msg ): - sys.stderr.write( "%s\n" % msg ) - sys.exit() - -def read_stderr(): - stderr = '' - if(os.path.exists(tmp_stderr_name)): - with open(tmp_stderr_name, 'rb') as tmp_stderr: - buffsize = 1048576 - try: - while True: - stderr += tmp_stderr.read(buffsize) - if not stderr or len(stderr) % buffsize != 0: - break - except OverflowError: - pass - return stderr - -def execute(command, stdin=None): - with open(tmp_stderr_name, 'wb') as tmp_stderr: - with open(tmp_stdout_name, 'wb') as tmp_stdout: - proc = subprocess.Popen(args=command, shell=True, stderr=tmp_stderr.fileno(), stdout=tmp_stdout.fileno(), stdin=stdin, env=os.environ) - returncode = proc.wait() - if returncode != 0: - raise Exception, "Program returned with non-zero exit code %d. stderr: %s" % (returncode, read_stderr()) - -def delete_file(path): - if os.path.exists(path): - try: - os.remove(path) - except: - pass - -def delete_directory(directory): - if os.path.exists(directory): - try: - shutil.rmtree(directory) - except: - pass - -def symlink(source, link_name): - import platform - if platform.system() == 'Windows': - import win32file - win32file.CreateSymbolicLink(source, link_name, 1) - else: - os.symlink(source, link_name) - - -def copy_to_working_directory(data_file, relative_path): - if os.path.abspath(data_file) != os.path.abspath(relative_path): - shutil.copy(data_file, relative_path) - return relative_path - -def __main__(): - run_script() - -#ENDTEMPLATE - -to_extensions = ['mzML', 'mzXML', 'mgf', 'txt', 'ms2', 'cms2'] - -def str_to_bool(v): - """ From http://stackoverflow.com/questions/715417/converting-from-a-string-to-boolean-in-python """ - return v.lower() in ["yes", "true", "t", "1"] - - -def run_script(): - parser = optparse.OptionParser() - parser.add_option('--input', dest='input') - parser.add_option('--output', dest='output') - parser.add_option('--fromextension', dest='fromextension') - parser.add_option('--toextension', dest='toextension', default='mzML', choices=to_extensions) - parser.add_option('--binaryencoding', dest='binaryencoding', choices=['32', '64']) - parser.add_option('--mzencoding', dest='mzencoding', choices=['32', '64']) - parser.add_option('--intensityencoding', dest='intensityencoding', choices=['32', '64']) - parser.add_option('--noindex', dest='noindex') - parser.add_option('--zlib', dest='zlib') - parser.add_option('--filter', dest='filter', action='append', default=[]) - - (options, args) = parser.parse_args() - - filter_commands = '' - for filter in options.filter: - filter_commands = "%s --filter \"%s\"" % (filter_commands, filter) - - input_file = 'input.%s' % options.fromextension - copy_to_working_directory(options.input, input_file) - os.mkdir('output') - cmd = "msconvert --%s -o output" % (options.toextension) - if str_to_bool(options.noindex): - cmd = "%s %s" % (cmd, "--noindex") - if str_to_bool(options.zlib): - cmd = "%s %s" % (cmd, "--zlib") - cmd = "%s --%s" % (cmd, options.binaryencoding) - cmd = "%s --mz%s" % (cmd, options.mzencoding) - cmd = "%s --inten%s" % (cmd, options.intensityencoding) - cmd = "%s %s" % (cmd, input_file) - cmd = "%s %s" % (cmd, filter_commands) - print cmd - execute(cmd) - output_files = os.listdir('output') - assert len(output_files) == 1 - output_file = output_files[0] - shutil.copy(os.path.join('output', output_file), options.output) - -if __name__ == '__main__': __main__() diff -r ffe1dca94595 -r 37e5502441cc galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/msconvert_subset.xml --- a/galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/msconvert_subset.xml Mon Feb 17 16:42:53 2014 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,103 +0,0 @@ - - against list of scan numbers or indices. - - proteowizard - - - msconvert_wrapper.py - --input=${input} - --output=${output} - --fromextension=${input.ext} - --toextension=${output_type} - #if $settings.settingsType == "full" - --binaryencoding=${settings.binary_encoding} - --mzencoding=${settings.mz_encoding} - --intensityencoding=${settings.intensity_encoding} - --zlib=${settings.zlib} - #end if - --filter_table="$filter.filterList" - #if $filter.filterType == "scan_number" - --filter_table_type="number" - #else - --filter_table_type="index" - #end if - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -r ffe1dca94595 -r 37e5502441cc galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/msconvert_wrapper.py --- a/galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/msconvert_wrapper.py Mon Feb 17 16:42:53 2014 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,271 +0,0 @@ -#!/usr/bin/env python -import optparse -import os -import sys -import tempfile -import shutil -import subprocess -import re -import logging - -assert sys.version_info[:2] >= (2, 6) - -log = logging.getLogger(__name__) -working_directory = os.getcwd() -tmp_stderr_name = tempfile.NamedTemporaryFile(dir=working_directory, suffix='.stderr').name -tmp_stdout_name = tempfile.NamedTemporaryFile(dir=working_directory, suffix='.stdout').name - - -def stop_err(msg): - sys.stderr.write("%s\n" % msg) - sys.exit() - - -def read_stderr(): - stderr = '' - if(os.path.exists(tmp_stderr_name)): - with open(tmp_stderr_name, 'rb') as tmp_stderr: - buffsize = 1048576 - try: - while True: - stderr += tmp_stderr.read(buffsize) - if not stderr or len(stderr) % buffsize != 0: - break - except OverflowError: - pass - return stderr - - -def execute(command, stdin=None): - try: - with open(tmp_stderr_name, 'wb') as tmp_stderr: - with open(tmp_stdout_name, 'wb') as tmp_stdout: - proc = subprocess.Popen(args=command, shell=True, stderr=tmp_stderr.fileno(), stdout=tmp_stdout.fileno(), stdin=stdin, env=os.environ) - returncode = proc.wait() - if returncode != 0: - raise Exception("Program returned with non-zero exit code %d. stderr: %s" % (returncode, read_stderr())) - finally: - print open(tmp_stderr_name, "r").read() - print open(tmp_stdout_name, "r").read() - - -def delete_file(path): - if os.path.exists(path): - try: - os.remove(path) - except: - pass - - -def delete_directory(directory): - if os.path.exists(directory): - try: - shutil.rmtree(directory) - except: - pass - - -def symlink(source, link_name): - import platform - if platform.system() == 'Windows': - try: - import win32file - win32file.CreateSymbolicLink(source, link_name, 1) - except: - shutil.copy(source, link_name) - else: - os.symlink(source, link_name) - - -def copy_to_working_directory(data_file, relative_path): - if os.path.abspath(data_file) != os.path.abspath(relative_path): - symlink(data_file, relative_path) - return relative_path - - -def __main__(): - run_script() - -#ENDTEMPLATE - -to_extensions = ['mzML', 'mzXML', 'unindexed_mzML', 'unindexed_mzXML', 'mgf', 'txt', 'ms2', 'cms2'] - - -def str_to_bool(v): - """ From http://stackoverflow.com/questions/715417/converting-from-a-string-to-boolean-in-python """ - return v.lower() in ["yes", "true", "t", "1"] - - -def _add_filter(filters_file, contents): - filters_file.write("filter=%s\n" % contents) - - -def _skip_line(options, file_num, line_parts): - file_num_column = options.filter_table_file_column - if not file_num_column: - return False - else: - target_file_num_val = str(file_num).strip() - query_file_num_val = line_parts[int(file_num_column) - 1].strip() - #print "target %s, query %s" % (target_file_num_val, query_file_num_val) - return target_file_num_val != query_file_num_val - - -def _read_table_numbers(path, options, file_num=None): - unique_numbers = set([]) - column_num = options.filter_table_column - input = open(path, "r") - first_line = True - for line in input: - if not line: - continue - line = line.strip() - if line.startswith("#"): - first_line = False - continue - if column_num == None: - column = line - else: - line_parts = line.split("\t") - if _skip_line(options, file_num, line_parts): - continue - column = line_parts[int(column_num) - 1] - match = re.match("\d+", column) - if match: - unique_numbers.add(int(match.group())) - first_line = False - return unique_numbers - - -def shellquote(s): - return '"' + s.replace('"', '\\"') + '"' - - -def _add_filter_line_from_file(filter_file, options, file_num=None): - file = options.filter_table - if not file: - return - numbers = _read_table_numbers(file, options, file_num) - msconvert_int_set = " ".join([str(number) for number in numbers]) - filter_type = options.filter_table_type - if filter_type == 'number': - filter_prefix = 'scanNumber' - else: - filter_prefix = 'index' - _add_filter(filter_file, "%s %s" % (filter_prefix, msconvert_int_set)) - - -def _create_filters_file(options, file_num=None, debug=False): - suffix = "" if not file_num else str(file_num) - filters_file_path = "filters%s" % suffix - filters_file = open(filters_file_path, "w") - if options.filters_file: - filters_file.write(open(options.filters_file, "r").read()) - for filter in options.filter: - _add_filter(filters_file, filter) - _add_filter_line_from_file(filters_file, options, file_num=file_num) - - filters_file.close() - if debug: - print open(filters_file_path, "r").read() - return filters_file_path - - -def _build_base_cmd(options): - to_extension = options.toextension - if to_extension.startswith("unindexed_"): - to_extension = to_extension[len("unindexed_"):] - to_params = "--noindex" - else: - to_params = "" - cmd = "msconvert --%s %s" % (to_extension, to_params) - if str_to_bool(options.zlib): - cmd = "%s %s" % (cmd, "--zlib") - if options.binaryencoding: - cmd = "%s --%s" % (cmd, options.binaryencoding) - if options.mzencoding: - cmd = "%s --mz%s" % (cmd, options.mzencoding) - if options.intensityencoding: - cmd = "%s --inten%s" % (cmd, options.intensityencoding) - return cmd - - -def _run(base_cmd, output_dir='output', inputs=[], debug=False): - inputs_as_str = " ".join(['%s' % shellquote(input) for input in inputs]) - os.mkdir(output_dir) - cmd = "%s -o %s %s" % (base_cmd, shellquote(output_dir), inputs_as_str) - if debug: - print cmd - execute(cmd) - output_files = os.listdir(output_dir) - assert len(output_files) == 1 - output_file = output_files[0] - return os.path.join(output_dir, output_file) - - -def run_script(): - parser = optparse.OptionParser() - parser.add_option('--input', dest='inputs', action='append', default=[]) - parser.add_option('--input_name', dest='input_names', action='append', default=[]) - parser.add_option('--output', dest='output') - parser.add_option('--fromextension', dest='fromextension') - parser.add_option('--toextension', dest='toextension', default='mzML', choices=to_extensions) - parser.add_option('--binaryencoding', dest='binaryencoding', choices=['32', '64']) - parser.add_option('--mzencoding', dest='mzencoding', choices=['32', '64']) - parser.add_option('--intensityencoding', dest='intensityencoding', choices=['32', '64']) - parser.add_option('--zlib', dest='zlib', default="false") - parser.add_option('--filter', dest='filter', action='append', default=[]) - parser.add_option('--filters_file', dest='filters_file', default=None) - parser.add_option('--filter_table', default=None) - parser.add_option('--filter_table_type', default='index', choices=['index', 'number']) - parser.add_option('--filter_table_column', default=None) - parser.add_option('--filter_table_file_column', default=None) - parser.add_option('--debug', dest='debug', action='store_true', default=False) - - (options, args) = parser.parse_args() - if len(options.inputs) < 1: - stop_err("No input files to msconvert specified") - if len(options.input_names) > 0 and len(options.input_names) != len(options.inputs): - stop_err("Number(s) of supplied input names and input files do not match") - if not options.output: - stop_err("Must specify output location") - input_files = [] - for i, input in enumerate(options.inputs): - input_base = None - if len(options.input_names) > i: - input_base = options.input_names[i] - if not input_base: - input_base = 'input%s' % i - if not input_base.lower().endswith(options.fromextension.lower()): - input_file = '%s.%s' % (input_base, options.fromextension) - else: - input_file = input_base - input_file = input_file - copy_to_working_directory(input, input_file) - input_files.append(input_file) - - cmd = _build_base_cmd(options) - file_column = options.filter_table_file_column - if not file_column: - # Apply same filters to all files, just create a unviersal filter files - # and run msconvert once. - filters_file_path = _create_filters_file(options, debug=options.debug) - cmd = "%s -c %s" % (cmd, filters_file_path) - else: - # Dispatching on a column to filter different files differently, need to filter - # each input once with msconvert and then merge once. - filtered_files = [] - for index, input_file in enumerate(input_files): - filters_file_path = _create_filters_file(options, index + 1, debug=options.debug) - filter_cmd = "%s -c %s" % (cmd, filters_file_path) - filtered_output_file = _run(filter_cmd, output_dir='output%d' % index, inputs=[input_file], debug=options.debug) - filtered_files.append(filtered_output_file) - input_files = filtered_files - if len(input_files) > 1: - cmd = "%s --merge" % cmd - output_file = _run(cmd, output_dir='output', inputs=input_files, debug=options.debug) - shutil.copy(output_file, options.output) - - -if __name__ == '__main__': - __main__() diff -r ffe1dca94595 -r 37e5502441cc galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/repository_dependencies.xml --- a/galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/repository_dependencies.xml Mon Feb 17 16:42:53 2014 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ - - - - diff -r ffe1dca94595 -r 37e5502441cc galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/tool_dependencies.xml --- a/galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/tool_dependencies.xml Mon Feb 17 16:42:53 2014 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ - - - - - - diff -r ffe1dca94595 -r 37e5502441cc galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/update.sh --- a/galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/update.sh Mon Feb 17 16:42:53 2014 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +0,0 @@ -#!/bin/bash - -LICENSE_FILE=LICENSE -# Ensure repository contains license file. -if [ ! -e "$LICENSE_FILE" ]; -then - wget http://www.apache.org/licenses/LICENSE-2.0.txt -O "$LICENSE_FILE" -fi - -# Run repository specific update actions. -if [ -f update_repo.sh ]; -then - ./update_repo.sh -fi - -wget https://raw.github.com/gist/3749747/README_GALAXYP.md -O README_GALAXYP.md - -# Create repository README -if [ ! -e README_REPO.md ]; -then - echo "TODO: Document this tool repository." > README_REPO.md -fi -cat README_REPO.md README_GALAXYP.md > README.md - - -# If version file exists, update all tools to this version -VERSION_FILE=version -if [ -e "$VERSION_FILE" ]; -then - VERSION=`cat $VERSION_FILE` - - # Replace tool version in each tool XML file ` - find -iname "*xml" -exec sed -i'' -e '0,/version="\(.\+\)"/s/version="\(.\+\)"/version="'$VERSION'"/1g' {} \; - -fi diff -r ffe1dca94595 -r 37e5502441cc galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/update_repo.sh --- a/galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/update_repo.sh Mon Feb 17 16:42:53 2014 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,9 +0,0 @@ -#!/bin/bash - -sed -e '/BEGIN_VERSION_RAW/,/END_VERSION_RAW/d' -e '/BEGIN_VERSION_3/,/END_VERSION_3/d' -e 's/\$VERSION/2/g' -e 's/\$DESCRIPTION//g' msconvert.xml.template > msconvert2.xml -sed -e '/BEGIN_VERSION_DEFAULT/,/END_VERSION_DEFAULT/d' -e '/BEGIN_VERSION_3/,/END_VERSION_3/d' -e 's/\$VERSION/2/g' -e 's/\$DESCRIPTION/_raw/g' msconvert.xml.template > msconvert2_raw.xml - - -sed -e '/BEGIN_VERSION_RAW/,/END_VERSION_RAW/d' -e 's/\$VERSION/3/g' -e 's/\$DESCRIPTION//g' msconvert.xml.template > msconvert3.xml -sed -e '/BEGIN_VERSION_DEFAULT/,/END_VERSION_DEFAULT/d' -e 's/\$VERSION/3/g' -e 's/\$DESCRIPTION/_raw/g' msconvert.xml.template > msconvert3_raw.xml - diff -r ffe1dca94595 -r 37e5502441cc galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/version --- a/galaxyp-galaxyp-toolshed-msconvert-d5dd196252d2/version Mon Feb 17 16:42:53 2014 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -0.2.1 diff -r ffe1dca94595 -r 37e5502441cc msconvert.xml.template --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/msconvert.xml.template Mon Feb 17 17:00:29 2014 -0500 @@ -0,0 +1,393 @@ + + + Convert and filter a Thermo Finnigan RAW file + + + Convert and filter a mass spec peak list + + + + #set $ext = $input.ext + #if $ext.startswith("m:") + #set $ext = $ext[len("m:"):] + #end if + msconvert_wrapper.py + --input=${input} + #if hasattr($input, 'display_name') + --input_name='${input.display_name}' + #end if + --output=${output} + ## BEGIN_VERSION_DEFAULT + --fromextension=$ext + ## END_VERSION_DEFAULT + + ## BEGIN_VERSION_RAW + --fromextension=RAW + ## END_VERSION_RAW + + --toextension=${output_type} + + #if $settings.settingsType == "full" + --binaryencoding=${settings.binary_encoding} + --mzencoding=${settings.mz_encoding} + --intensityencoding=${settings.intensity_encoding} + --zlib=${settings.zlib} + #end if + + #if $filtering.filtering_use + + #if $filtering.precursor_recalculation.value + --filter "precursorRecalculation" + #end if + + #if $filtering.peak_picking.pick_peaks + --filter "peakPicking $filtering.peak_picking.prefer_vendor_peaks $filtering.peak_picking.ms_levels" + #end if + + #if str($filtering.activation) != "false" + --filter "activation $filtering.activation" + #end if + + #if len($filtering.indices) > 0 + --filter "index + #for $index in $filtering.indices + [${index.from},${index.to}] + #end for + " + #end if + + #if len($filtering.scan_numbers) > 0 + --filter "scanNumber + #for $scan_number in $filtering.scan_numbers + [${scan_number.from},${scan_number.to}] + #end for + " + #end if + + #for threshold_entry in $filtering.threshold_repeat + --filter "threshold $threshold_entry.threshold.threshold_type $threshold_entry.threshold.value $threshold_entry.orientation" + #end for + + + #if $filtering.strip_it.value + --filter "stripIT" + #end if + + #if $filtering.filter_mz_windows.do_filter + --filter "mzWindow [$filtering.filter_mz_windows.from,$filtering.filter_mz_windows.to]" + #end if + + + #if $filtering.filter_ms_levels.do_filter + --filter "msLevel [$filtering.filter_ms_levels.from, $filtering.filter_ms_levels.to]" + #end if + + #if str($filtering.etd_filtering.do_etd_filtering) == "default" + --filter "ETDFilter" + #end if + + #if str($filtering.etd_filtering.do_etd_filtering) == "advanced" + --filter "ETDFilter removePrecursor:$filtering.etd_filtering.remove_precursor removeChargeReduced:$filtering.etd_filtering.remove_charge_reduced removeNeutralLoss:$filtering.etd_filtering.remove_neutral_loss blanketRemoval:$filtering.etd_filtering.blanket_removal MatchingTolerance:$filtering.etd_filtering.matching_tolerance $filtering.etd_filtering.matching_tolerance_units" + #end if + + ## BEGIN_VERSION_3 + + #if $filtering.precursor_refine.value + --filter "precursorRefine" + #end if + + #if $filtering.ms2denoise.denoise + --filter "MS2Denoise $filtering.ms2denoise.num_peaks $filtering.ms2denoise.window_width $filtering.ms2denoise.relax" + #end if + + #if str($filtering.ms2deisotope) == "true" + --filter "MS2Deisotope" + #end if + + #if str($filtering.polarity) != "false" + --filter "polarity $filtering.polarity" + #end if + + #if str($filtering.analyzer) != "false" + --filter "analyzer $filtering.analyzer" + #end if + + ## END_VERSION_3 + + #end if + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + proteowizard + + windows + + + + +**What it does** + +Converts between various mass spectrometry peak list representations. Additional options such as filtering and/or precursor recalculation are available. + +You can view the original documentation here_. + +.. _here: http://proteowizard.sourceforge.net/tools/msconvert.html + +------ + +**Citation** + +For the underlying tool, please cite `ProteoWizard: Open Source Software for Rapid Proteomics Tools Development. Darren Kessner; Matt Chambers; Robert Burke; David Agus; Parag Mallick. Bioinformatics 2008; doi: 10.1093/bioinformatics/btn323.` + +If you use this tool in Galaxy, please cite Chilton J, et al. https://bitbucket.org/galaxyp/galaxyp-toolshed-msconvert + + + diff -r ffe1dca94595 -r 37e5502441cc msconvert2.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/msconvert2.xml Mon Feb 17 17:00:29 2014 -0500 @@ -0,0 +1,315 @@ + + + Convert and filter a mass spec peak list + + + proteowizard + + + #set $ext = $input.ext + #if $ext.startswith("m:") + #set $ext = $ext[len("m:"):] + #end if + msconvert_wrapper.py + --input=${input} + #if hasattr($input, 'display_name') + --input_name='${input.display_name}' + #end if + --output=${output} + ## BEGIN_VERSION_DEFAULT + --fromextension=$ext + ## END_VERSION_DEFAULT + + + --toextension=${output_type} + + #if $settings.settingsType == "full" + --binaryencoding=${settings.binary_encoding} + --mzencoding=${settings.mz_encoding} + --intensityencoding=${settings.intensity_encoding} + --zlib=${settings.zlib} + #end if + + #if $filtering.filtering_use + + #if $filtering.precursor_recalculation.value + --filter "precursorRecalculation" + #end if + + #if $filtering.peak_picking.pick_peaks + --filter "peakPicking $filtering.peak_picking.prefer_vendor_peaks $filtering.peak_picking.ms_levels" + #end if + + #if str($filtering.activation) != "false" + --filter "activation $filtering.activation" + #end if + + #if len($filtering.indices) > 0 + --filter "index + #for $index in $filtering.indices + [${index.from},${index.to}] + #end for + " + #end if + + #if len($filtering.scan_numbers) > 0 + --filter "scanNumber + #for $scan_number in $filtering.scan_numbers + [${scan_number.from},${scan_number.to}] + #end for + " + #end if + + #for threshold_entry in $filtering.threshold_repeat + --filter "threshold $threshold_entry.threshold.threshold_type $threshold_entry.threshold.value $threshold_entry.orientation" + #end for + + + #if $filtering.strip_it.value + --filter "stripIT" + #end if + + #if $filtering.filter_mz_windows.do_filter + --filter "mzWindow [$filtering.filter_mz_windows.from,$filtering.filter_mz_windows.to]" + #end if + + + #if $filtering.filter_ms_levels.do_filter + --filter "msLevel [$filtering.filter_ms_levels.from, $filtering.filter_ms_levels.to]" + #end if + + #if str($filtering.etd_filtering.do_etd_filtering) == "default" + --filter "ETDFilter" + #end if + + #if str($filtering.etd_filtering.do_etd_filtering) == "advanced" + --filter "ETDFilter removePrecursor:$filtering.etd_filtering.remove_precursor removeChargeReduced:$filtering.etd_filtering.remove_charge_reduced removeNeutralLoss:$filtering.etd_filtering.remove_neutral_loss blanketRemoval:$filtering.etd_filtering.blanket_removal MatchingTolerance:$filtering.etd_filtering.matching_tolerance $filtering.etd_filtering.matching_tolerance_units" + #end if + + + #end if + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +**What it does** + +Converts between various mass spectrometry peak list representations. Additional options such as filtering and/or precursor recalculation are available. + +You can view the original documentation here_. + +.. _here: http://proteowizard.sourceforge.net/tools/msconvert.html + +------ + +**Citation** + +For the underlying tool, please cite `ProteoWizard: Open Source Software for Rapid Proteomics Tools Development. Darren Kessner; Matt Chambers; Robert Burke; David Agus; Parag Mallick. Bioinformatics 2008; doi: 10.1093/bioinformatics/btn323.` + +If you use this tool in Galaxy, please cite Chilton J, et al. https://bitbucket.org/galaxyp/galaxyp-toolshed-msconvert + + + diff -r ffe1dca94595 -r 37e5502441cc msconvert2_raw.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/msconvert2_raw.xml Mon Feb 17 17:00:29 2014 -0500 @@ -0,0 +1,299 @@ + + + Convert and filter a Thermo Finnigan RAW file + + + proteowizard + + windows + + + + #set $ext = $input.ext + #if $ext.startswith("m:") + #set $ext = $ext[len("m:"):] + #end if + msconvert_wrapper.py + --input=${input} + #if hasattr($input, 'display_name') + --input_name='${input.display_name}' + #end if + --output=${output} + + ## BEGIN_VERSION_RAW + --fromextension=RAW + ## END_VERSION_RAW + + --toextension=${output_type} + + #if $settings.settingsType == "full" + --binaryencoding=${settings.binary_encoding} + --mzencoding=${settings.mz_encoding} + --intensityencoding=${settings.intensity_encoding} + --zlib=${settings.zlib} + #end if + + #if $filtering.filtering_use + + #if $filtering.precursor_recalculation.value + --filter "precursorRecalculation" + #end if + + #if $filtering.peak_picking.pick_peaks + --filter "peakPicking $filtering.peak_picking.prefer_vendor_peaks $filtering.peak_picking.ms_levels" + #end if + + #if str($filtering.activation) != "false" + --filter "activation $filtering.activation" + #end if + + #if len($filtering.indices) > 0 + --filter "index + #for $index in $filtering.indices + [${index.from},${index.to}] + #end for + " + #end if + + #if len($filtering.scan_numbers) > 0 + --filter "scanNumber + #for $scan_number in $filtering.scan_numbers + [${scan_number.from},${scan_number.to}] + #end for + " + #end if + + #for threshold_entry in $filtering.threshold_repeat + --filter "threshold $threshold_entry.threshold.threshold_type $threshold_entry.threshold.value $threshold_entry.orientation" + #end for + + + #if $filtering.strip_it.value + --filter "stripIT" + #end if + + #if $filtering.filter_mz_windows.do_filter + --filter "mzWindow [$filtering.filter_mz_windows.from,$filtering.filter_mz_windows.to]" + #end if + + + #if $filtering.filter_ms_levels.do_filter + --filter "msLevel [$filtering.filter_ms_levels.from, $filtering.filter_ms_levels.to]" + #end if + + #if str($filtering.etd_filtering.do_etd_filtering) == "default" + --filter "ETDFilter" + #end if + + #if str($filtering.etd_filtering.do_etd_filtering) == "advanced" + --filter "ETDFilter removePrecursor:$filtering.etd_filtering.remove_precursor removeChargeReduced:$filtering.etd_filtering.remove_charge_reduced removeNeutralLoss:$filtering.etd_filtering.remove_neutral_loss blanketRemoval:$filtering.etd_filtering.blanket_removal MatchingTolerance:$filtering.etd_filtering.matching_tolerance $filtering.etd_filtering.matching_tolerance_units" + #end if + + + #end if + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +**What it does** + +Converts between various mass spectrometry peak list representations. Additional options such as filtering and/or precursor recalculation are available. + +You can view the original documentation here_. + +.. _here: http://proteowizard.sourceforge.net/tools/msconvert.html + +------ + +**Citation** + +For the underlying tool, please cite `ProteoWizard: Open Source Software for Rapid Proteomics Tools Development. Darren Kessner; Matt Chambers; Robert Burke; David Agus; Parag Mallick. Bioinformatics 2008; doi: 10.1093/bioinformatics/btn323.` + +If you use this tool in Galaxy, please cite Chilton J, et al. https://bitbucket.org/galaxyp/galaxyp-toolshed-msconvert + + + diff -r ffe1dca94595 -r 37e5502441cc msconvert3.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/msconvert3.xml Mon Feb 17 17:00:29 2014 -0500 @@ -0,0 +1,378 @@ + + + Convert and filter a mass spec peak list + + + proteowizard + + + #set $ext = $input.ext + #if $ext.startswith("m:") + #set $ext = $ext[len("m:"):] + #end if + msconvert_wrapper.py + --input=${input} + #if hasattr($input, 'display_name') + --input_name='${input.display_name}' + #end if + --output=${output} + ## BEGIN_VERSION_DEFAULT + --fromextension=$ext + ## END_VERSION_DEFAULT + + + --toextension=${output_type} + + #if $settings.settingsType == "full" + --binaryencoding=${settings.binary_encoding} + --mzencoding=${settings.mz_encoding} + --intensityencoding=${settings.intensity_encoding} + --zlib=${settings.zlib} + #end if + + #if $filtering.filtering_use + + #if $filtering.precursor_recalculation.value + --filter "precursorRecalculation" + #end if + + #if $filtering.peak_picking.pick_peaks + --filter "peakPicking $filtering.peak_picking.prefer_vendor_peaks $filtering.peak_picking.ms_levels" + #end if + + #if str($filtering.activation) != "false" + --filter "activation $filtering.activation" + #end if + + #if len($filtering.indices) > 0 + --filter "index + #for $index in $filtering.indices + [${index.from},${index.to}] + #end for + " + #end if + + #if len($filtering.scan_numbers) > 0 + --filter "scanNumber + #for $scan_number in $filtering.scan_numbers + [${scan_number.from},${scan_number.to}] + #end for + " + #end if + + #for threshold_entry in $filtering.threshold_repeat + --filter "threshold $threshold_entry.threshold.threshold_type $threshold_entry.threshold.value $threshold_entry.orientation" + #end for + + + #if $filtering.strip_it.value + --filter "stripIT" + #end if + + #if $filtering.filter_mz_windows.do_filter + --filter "mzWindow [$filtering.filter_mz_windows.from,$filtering.filter_mz_windows.to]" + #end if + + + #if $filtering.filter_ms_levels.do_filter + --filter "msLevel [$filtering.filter_ms_levels.from, $filtering.filter_ms_levels.to]" + #end if + + #if str($filtering.etd_filtering.do_etd_filtering) == "default" + --filter "ETDFilter" + #end if + + #if str($filtering.etd_filtering.do_etd_filtering) == "advanced" + --filter "ETDFilter removePrecursor:$filtering.etd_filtering.remove_precursor removeChargeReduced:$filtering.etd_filtering.remove_charge_reduced removeNeutralLoss:$filtering.etd_filtering.remove_neutral_loss blanketRemoval:$filtering.etd_filtering.blanket_removal MatchingTolerance:$filtering.etd_filtering.matching_tolerance $filtering.etd_filtering.matching_tolerance_units" + #end if + + ## BEGIN_VERSION_3 + + #if $filtering.precursor_refine.value + --filter "precursorRefine" + #end if + + #if $filtering.ms2denoise.denoise + --filter "MS2Denoise $filtering.ms2denoise.num_peaks $filtering.ms2denoise.window_width $filtering.ms2denoise.relax" + #end if + + #if str($filtering.ms2deisotope) == "true" + --filter "MS2Deisotope" + #end if + + #if str($filtering.polarity) != "false" + --filter "polarity $filtering.polarity" + #end if + + #if str($filtering.analyzer) != "false" + --filter "analyzer $filtering.analyzer" + #end if + + ## END_VERSION_3 + + #end if + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +**What it does** + +Allows interconversion within various mass spectrometry peak list formats. Additional options such as filtering and/or precursor recalculation are available. + +You can view the original documentation here_. + +.. _here: http://proteowizard.sourceforge.net/tools/msconvert.html + +------ + +**Citation** + +For the underlying tool, please cite `ProteoWizard: Open Source Software for Rapid Proteomics Tools Development. Darren Kessner; Matt Chambers; Robert Burke; David Agus; Parag Mallick. Bioinformatics 2008; doi: 10.1093/bioinformatics/btn323.` + +If you use this tool in Galaxy, please cite Chilton J, et al. https://bitbucket.org/galaxyp/galaxyp-toolshed-msconvert + + + diff -r ffe1dca94595 -r 37e5502441cc msconvert3_raw.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/msconvert3_raw.xml Mon Feb 17 17:00:29 2014 -0500 @@ -0,0 +1,362 @@ + + + Convert and filter a Thermo Finnigan RAW file + + + proteowizard + + windows + + + + #set $ext = $input.ext + #if $ext.startswith("m:") + #set $ext = $ext[len("m:"):] + #end if + msconvert_wrapper.py + --input=${input} + #if hasattr($input, 'display_name') + --input_name='${input.display_name}' + #end if + --output=${output} + + ## BEGIN_VERSION_RAW + --fromextension=RAW + ## END_VERSION_RAW + + --toextension=${output_type} + + #if $settings.settingsType == "full" + --binaryencoding=${settings.binary_encoding} + --mzencoding=${settings.mz_encoding} + --intensityencoding=${settings.intensity_encoding} + --zlib=${settings.zlib} + #end if + + #if $filtering.filtering_use + + #if $filtering.precursor_recalculation.value + --filter "precursorRecalculation" + #end if + + #if $filtering.peak_picking.pick_peaks + --filter "peakPicking $filtering.peak_picking.prefer_vendor_peaks $filtering.peak_picking.ms_levels" + #end if + + #if str($filtering.activation) != "false" + --filter "activation $filtering.activation" + #end if + + #if len($filtering.indices) > 0 + --filter "index + #for $index in $filtering.indices + [${index.from},${index.to}] + #end for + " + #end if + + #if len($filtering.scan_numbers) > 0 + --filter "scanNumber + #for $scan_number in $filtering.scan_numbers + [${scan_number.from},${scan_number.to}] + #end for + " + #end if + + #for threshold_entry in $filtering.threshold_repeat + --filter "threshold $threshold_entry.threshold.threshold_type $threshold_entry.threshold.value $threshold_entry.orientation" + #end for + + + #if $filtering.strip_it.value + --filter "stripIT" + #end if + + #if $filtering.filter_mz_windows.do_filter + --filter "mzWindow [$filtering.filter_mz_windows.from,$filtering.filter_mz_windows.to]" + #end if + + + #if $filtering.filter_ms_levels.do_filter + --filter "msLevel [$filtering.filter_ms_levels.from, $filtering.filter_ms_levels.to]" + #end if + + #if str($filtering.etd_filtering.do_etd_filtering) == "default" + --filter "ETDFilter" + #end if + + #if str($filtering.etd_filtering.do_etd_filtering) == "advanced" + --filter "ETDFilter removePrecursor:$filtering.etd_filtering.remove_precursor removeChargeReduced:$filtering.etd_filtering.remove_charge_reduced removeNeutralLoss:$filtering.etd_filtering.remove_neutral_loss blanketRemoval:$filtering.etd_filtering.blanket_removal MatchingTolerance:$filtering.etd_filtering.matching_tolerance $filtering.etd_filtering.matching_tolerance_units" + #end if + + ## BEGIN_VERSION_3 + + #if $filtering.precursor_refine.value + --filter "precursorRefine" + #end if + + #if $filtering.ms2denoise.denoise + --filter "MS2Denoise $filtering.ms2denoise.num_peaks $filtering.ms2denoise.window_width $filtering.ms2denoise.relax" + #end if + + #if str($filtering.ms2deisotope) == "true" + --filter "MS2Deisotope" + #end if + + #if str($filtering.polarity) != "false" + --filter "polarity $filtering.polarity" + #end if + + #if str($filtering.analyzer) != "false" + --filter "analyzer $filtering.analyzer" + #end if + + ## END_VERSION_3 + + #end if + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +**What it does** + +Converts between various mass spectrometry peak list representations. Additional options such as filtering and/or precursor recalculation are available. + +You can view the original documentation here_. + +.. _here: http://proteowizard.sourceforge.net/tools/msconvert.html + +------ + +**Citation** + +For the underlying tool, please cite `ProteoWizard: Open Source Software for Rapid Proteomics Tools Development. Darren Kessner; Matt Chambers; Robert Burke; David Agus; Parag Mallick. Bioinformatics 2008; doi: 10.1093/bioinformatics/btn323.` + +If you use this tool in Galaxy, please cite Chilton J, et al. https://bitbucket.org/galaxyp/galaxyp-toolshed-msconvert + + + diff -r ffe1dca94595 -r 37e5502441cc msconvert_raw_wrapper.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/msconvert_raw_wrapper.py Mon Feb 17 17:00:29 2014 -0500 @@ -0,0 +1,124 @@ +#!/usr/bin/env python +import optparse +import os +import sys +import tempfile +import shutil +import subprocess +import re +from os.path import basename +import logging + +assert sys.version_info[:2] >= ( 2, 6 ) + +log = logging.getLogger(__name__) +working_directory = os.getcwd() +tmp_stderr_name = tempfile.NamedTemporaryFile(dir = working_directory, suffix = '.stderr').name +tmp_stdout_name = tempfile.NamedTemporaryFile(dir = working_directory, suffix = '.stdout').name + +def stop_err( msg ): + sys.stderr.write( "%s\n" % msg ) + sys.exit() + +def read_stderr(): + stderr = '' + if(os.path.exists(tmp_stderr_name)): + with open(tmp_stderr_name, 'rb') as tmp_stderr: + buffsize = 1048576 + try: + while True: + stderr += tmp_stderr.read(buffsize) + if not stderr or len(stderr) % buffsize != 0: + break + except OverflowError: + pass + return stderr + +def execute(command, stdin=None): + with open(tmp_stderr_name, 'wb') as tmp_stderr: + with open(tmp_stdout_name, 'wb') as tmp_stdout: + proc = subprocess.Popen(args=command, shell=True, stderr=tmp_stderr.fileno(), stdout=tmp_stdout.fileno(), stdin=stdin, env=os.environ) + returncode = proc.wait() + if returncode != 0: + raise Exception, "Program returned with non-zero exit code %d. stderr: %s" % (returncode, read_stderr()) + +def delete_file(path): + if os.path.exists(path): + try: + os.remove(path) + except: + pass + +def delete_directory(directory): + if os.path.exists(directory): + try: + shutil.rmtree(directory) + except: + pass + +def symlink(source, link_name): + import platform + if platform.system() == 'Windows': + import win32file + win32file.CreateSymbolicLink(source, link_name, 1) + else: + os.symlink(source, link_name) + + +def copy_to_working_directory(data_file, relative_path): + if os.path.abspath(data_file) != os.path.abspath(relative_path): + shutil.copy(data_file, relative_path) + return relative_path + +def __main__(): + run_script() + +#ENDTEMPLATE + +to_extensions = ['mzML', 'mzXML', 'mgf', 'txt', 'ms2', 'cms2'] + +def str_to_bool(v): + """ From http://stackoverflow.com/questions/715417/converting-from-a-string-to-boolean-in-python """ + return v.lower() in ["yes", "true", "t", "1"] + + +def run_script(): + parser = optparse.OptionParser() + parser.add_option('--input', dest='input') + parser.add_option('--output', dest='output') + parser.add_option('--fromextension', dest='fromextension') + parser.add_option('--toextension', dest='toextension', default='mzML', choices=to_extensions) + parser.add_option('--binaryencoding', dest='binaryencoding', choices=['32', '64']) + parser.add_option('--mzencoding', dest='mzencoding', choices=['32', '64']) + parser.add_option('--intensityencoding', dest='intensityencoding', choices=['32', '64']) + parser.add_option('--noindex', dest='noindex') + parser.add_option('--zlib', dest='zlib') + parser.add_option('--filter', dest='filter', action='append', default=[]) + + (options, args) = parser.parse_args() + + filter_commands = '' + for filter in options.filter: + filter_commands = "%s --filter \"%s\"" % (filter_commands, filter) + + input_file = 'input.%s' % options.fromextension + copy_to_working_directory(options.input, input_file) + os.mkdir('output') + cmd = "msconvert --%s -o output" % (options.toextension) + if str_to_bool(options.noindex): + cmd = "%s %s" % (cmd, "--noindex") + if str_to_bool(options.zlib): + cmd = "%s %s" % (cmd, "--zlib") + cmd = "%s --%s" % (cmd, options.binaryencoding) + cmd = "%s --mz%s" % (cmd, options.mzencoding) + cmd = "%s --inten%s" % (cmd, options.intensityencoding) + cmd = "%s %s" % (cmd, input_file) + cmd = "%s %s" % (cmd, filter_commands) + print cmd + execute(cmd) + output_files = os.listdir('output') + assert len(output_files) == 1 + output_file = output_files[0] + shutil.copy(os.path.join('output', output_file), options.output) + +if __name__ == '__main__': __main__() diff -r ffe1dca94595 -r 37e5502441cc msconvert_subset.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/msconvert_subset.xml Mon Feb 17 17:00:29 2014 -0500 @@ -0,0 +1,103 @@ + + against list of scan numbers or indices. + + proteowizard + + + msconvert_wrapper.py + --input=${input} + --output=${output} + --fromextension=${input.ext} + --toextension=${output_type} + #if $settings.settingsType == "full" + --binaryencoding=${settings.binary_encoding} + --mzencoding=${settings.mz_encoding} + --intensityencoding=${settings.intensity_encoding} + --zlib=${settings.zlib} + #end if + --filter_table="$filter.filterList" + #if $filter.filterType == "scan_number" + --filter_table_type="number" + #else + --filter_table_type="index" + #end if + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r ffe1dca94595 -r 37e5502441cc msconvert_wrapper.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/msconvert_wrapper.py Mon Feb 17 17:00:29 2014 -0500 @@ -0,0 +1,271 @@ +#!/usr/bin/env python +import optparse +import os +import sys +import tempfile +import shutil +import subprocess +import re +import logging + +assert sys.version_info[:2] >= (2, 6) + +log = logging.getLogger(__name__) +working_directory = os.getcwd() +tmp_stderr_name = tempfile.NamedTemporaryFile(dir=working_directory, suffix='.stderr').name +tmp_stdout_name = tempfile.NamedTemporaryFile(dir=working_directory, suffix='.stdout').name + + +def stop_err(msg): + sys.stderr.write("%s\n" % msg) + sys.exit() + + +def read_stderr(): + stderr = '' + if(os.path.exists(tmp_stderr_name)): + with open(tmp_stderr_name, 'rb') as tmp_stderr: + buffsize = 1048576 + try: + while True: + stderr += tmp_stderr.read(buffsize) + if not stderr or len(stderr) % buffsize != 0: + break + except OverflowError: + pass + return stderr + + +def execute(command, stdin=None): + try: + with open(tmp_stderr_name, 'wb') as tmp_stderr: + with open(tmp_stdout_name, 'wb') as tmp_stdout: + proc = subprocess.Popen(args=command, shell=True, stderr=tmp_stderr.fileno(), stdout=tmp_stdout.fileno(), stdin=stdin, env=os.environ) + returncode = proc.wait() + if returncode != 0: + raise Exception("Program returned with non-zero exit code %d. stderr: %s" % (returncode, read_stderr())) + finally: + print open(tmp_stderr_name, "r").read() + print open(tmp_stdout_name, "r").read() + + +def delete_file(path): + if os.path.exists(path): + try: + os.remove(path) + except: + pass + + +def delete_directory(directory): + if os.path.exists(directory): + try: + shutil.rmtree(directory) + except: + pass + + +def symlink(source, link_name): + import platform + if platform.system() == 'Windows': + try: + import win32file + win32file.CreateSymbolicLink(source, link_name, 1) + except: + shutil.copy(source, link_name) + else: + os.symlink(source, link_name) + + +def copy_to_working_directory(data_file, relative_path): + if os.path.abspath(data_file) != os.path.abspath(relative_path): + symlink(data_file, relative_path) + return relative_path + + +def __main__(): + run_script() + +#ENDTEMPLATE + +to_extensions = ['mzML', 'mzXML', 'unindexed_mzML', 'unindexed_mzXML', 'mgf', 'txt', 'ms2', 'cms2'] + + +def str_to_bool(v): + """ From http://stackoverflow.com/questions/715417/converting-from-a-string-to-boolean-in-python """ + return v.lower() in ["yes", "true", "t", "1"] + + +def _add_filter(filters_file, contents): + filters_file.write("filter=%s\n" % contents) + + +def _skip_line(options, file_num, line_parts): + file_num_column = options.filter_table_file_column + if not file_num_column: + return False + else: + target_file_num_val = str(file_num).strip() + query_file_num_val = line_parts[int(file_num_column) - 1].strip() + #print "target %s, query %s" % (target_file_num_val, query_file_num_val) + return target_file_num_val != query_file_num_val + + +def _read_table_numbers(path, options, file_num=None): + unique_numbers = set([]) + column_num = options.filter_table_column + input = open(path, "r") + first_line = True + for line in input: + if not line: + continue + line = line.strip() + if line.startswith("#"): + first_line = False + continue + if column_num == None: + column = line + else: + line_parts = line.split("\t") + if _skip_line(options, file_num, line_parts): + continue + column = line_parts[int(column_num) - 1] + match = re.match("\d+", column) + if match: + unique_numbers.add(int(match.group())) + first_line = False + return unique_numbers + + +def shellquote(s): + return '"' + s.replace('"', '\\"') + '"' + + +def _add_filter_line_from_file(filter_file, options, file_num=None): + file = options.filter_table + if not file: + return + numbers = _read_table_numbers(file, options, file_num) + msconvert_int_set = " ".join([str(number) for number in numbers]) + filter_type = options.filter_table_type + if filter_type == 'number': + filter_prefix = 'scanNumber' + else: + filter_prefix = 'index' + _add_filter(filter_file, "%s %s" % (filter_prefix, msconvert_int_set)) + + +def _create_filters_file(options, file_num=None, debug=False): + suffix = "" if not file_num else str(file_num) + filters_file_path = "filters%s" % suffix + filters_file = open(filters_file_path, "w") + if options.filters_file: + filters_file.write(open(options.filters_file, "r").read()) + for filter in options.filter: + _add_filter(filters_file, filter) + _add_filter_line_from_file(filters_file, options, file_num=file_num) + + filters_file.close() + if debug: + print open(filters_file_path, "r").read() + return filters_file_path + + +def _build_base_cmd(options): + to_extension = options.toextension + if to_extension.startswith("unindexed_"): + to_extension = to_extension[len("unindexed_"):] + to_params = "--noindex" + else: + to_params = "" + cmd = "msconvert --%s %s" % (to_extension, to_params) + if str_to_bool(options.zlib): + cmd = "%s %s" % (cmd, "--zlib") + if options.binaryencoding: + cmd = "%s --%s" % (cmd, options.binaryencoding) + if options.mzencoding: + cmd = "%s --mz%s" % (cmd, options.mzencoding) + if options.intensityencoding: + cmd = "%s --inten%s" % (cmd, options.intensityencoding) + return cmd + + +def _run(base_cmd, output_dir='output', inputs=[], debug=False): + inputs_as_str = " ".join(['%s' % shellquote(input) for input in inputs]) + os.mkdir(output_dir) + cmd = "%s -o %s %s" % (base_cmd, shellquote(output_dir), inputs_as_str) + if debug: + print cmd + execute(cmd) + output_files = os.listdir(output_dir) + assert len(output_files) == 1 + output_file = output_files[0] + return os.path.join(output_dir, output_file) + + +def run_script(): + parser = optparse.OptionParser() + parser.add_option('--input', dest='inputs', action='append', default=[]) + parser.add_option('--input_name', dest='input_names', action='append', default=[]) + parser.add_option('--output', dest='output') + parser.add_option('--fromextension', dest='fromextension') + parser.add_option('--toextension', dest='toextension', default='mzML', choices=to_extensions) + parser.add_option('--binaryencoding', dest='binaryencoding', choices=['32', '64']) + parser.add_option('--mzencoding', dest='mzencoding', choices=['32', '64']) + parser.add_option('--intensityencoding', dest='intensityencoding', choices=['32', '64']) + parser.add_option('--zlib', dest='zlib', default="false") + parser.add_option('--filter', dest='filter', action='append', default=[]) + parser.add_option('--filters_file', dest='filters_file', default=None) + parser.add_option('--filter_table', default=None) + parser.add_option('--filter_table_type', default='index', choices=['index', 'number']) + parser.add_option('--filter_table_column', default=None) + parser.add_option('--filter_table_file_column', default=None) + parser.add_option('--debug', dest='debug', action='store_true', default=False) + + (options, args) = parser.parse_args() + if len(options.inputs) < 1: + stop_err("No input files to msconvert specified") + if len(options.input_names) > 0 and len(options.input_names) != len(options.inputs): + stop_err("Number(s) of supplied input names and input files do not match") + if not options.output: + stop_err("Must specify output location") + input_files = [] + for i, input in enumerate(options.inputs): + input_base = None + if len(options.input_names) > i: + input_base = options.input_names[i] + if not input_base: + input_base = 'input%s' % i + if not input_base.lower().endswith(options.fromextension.lower()): + input_file = '%s.%s' % (input_base, options.fromextension) + else: + input_file = input_base + input_file = input_file + copy_to_working_directory(input, input_file) + input_files.append(input_file) + + cmd = _build_base_cmd(options) + file_column = options.filter_table_file_column + if not file_column: + # Apply same filters to all files, just create a unviersal filter files + # and run msconvert once. + filters_file_path = _create_filters_file(options, debug=options.debug) + cmd = "%s -c %s" % (cmd, filters_file_path) + else: + # Dispatching on a column to filter different files differently, need to filter + # each input once with msconvert and then merge once. + filtered_files = [] + for index, input_file in enumerate(input_files): + filters_file_path = _create_filters_file(options, index + 1, debug=options.debug) + filter_cmd = "%s -c %s" % (cmd, filters_file_path) + filtered_output_file = _run(filter_cmd, output_dir='output%d' % index, inputs=[input_file], debug=options.debug) + filtered_files.append(filtered_output_file) + input_files = filtered_files + if len(input_files) > 1: + cmd = "%s --merge" % cmd + output_file = _run(cmd, output_dir='output', inputs=input_files, debug=options.debug) + shutil.copy(output_file, options.output) + + +if __name__ == '__main__': + __main__() diff -r ffe1dca94595 -r 37e5502441cc repository_dependencies.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/repository_dependencies.xml Mon Feb 17 17:00:29 2014 -0500 @@ -0,0 +1,4 @@ + + + + diff -r ffe1dca94595 -r 37e5502441cc tool_dependencies.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tool_dependencies.xml Mon Feb 17 17:00:29 2014 -0500 @@ -0,0 +1,6 @@ + + + + + + diff -r ffe1dca94595 -r 37e5502441cc update.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/update.sh Mon Feb 17 17:00:29 2014 -0500 @@ -0,0 +1,35 @@ +#!/bin/bash + +LICENSE_FILE=LICENSE +# Ensure repository contains license file. +if [ ! -e "$LICENSE_FILE" ]; +then + wget http://www.apache.org/licenses/LICENSE-2.0.txt -O "$LICENSE_FILE" +fi + +# Run repository specific update actions. +if [ -f update_repo.sh ]; +then + ./update_repo.sh +fi + +wget https://raw.github.com/gist/3749747/README_GALAXYP.md -O README_GALAXYP.md + +# Create repository README +if [ ! -e README_REPO.md ]; +then + echo "TODO: Document this tool repository." > README_REPO.md +fi +cat README_REPO.md README_GALAXYP.md > README.md + + +# If version file exists, update all tools to this version +VERSION_FILE=version +if [ -e "$VERSION_FILE" ]; +then + VERSION=`cat $VERSION_FILE` + + # Replace tool version in each tool XML file ` + find -iname "*xml" -exec sed -i'' -e '0,/version="\(.\+\)"/s/version="\(.\+\)"/version="'$VERSION'"/1g' {} \; + +fi diff -r ffe1dca94595 -r 37e5502441cc update_repo.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/update_repo.sh Mon Feb 17 17:00:29 2014 -0500 @@ -0,0 +1,9 @@ +#!/bin/bash + +sed -e '/BEGIN_VERSION_RAW/,/END_VERSION_RAW/d' -e '/BEGIN_VERSION_3/,/END_VERSION_3/d' -e 's/\$VERSION/2/g' -e 's/\$DESCRIPTION//g' msconvert.xml.template > msconvert2.xml +sed -e '/BEGIN_VERSION_DEFAULT/,/END_VERSION_DEFAULT/d' -e '/BEGIN_VERSION_3/,/END_VERSION_3/d' -e 's/\$VERSION/2/g' -e 's/\$DESCRIPTION/_raw/g' msconvert.xml.template > msconvert2_raw.xml + + +sed -e '/BEGIN_VERSION_RAW/,/END_VERSION_RAW/d' -e 's/\$VERSION/3/g' -e 's/\$DESCRIPTION//g' msconvert.xml.template > msconvert3.xml +sed -e '/BEGIN_VERSION_DEFAULT/,/END_VERSION_DEFAULT/d' -e 's/\$VERSION/3/g' -e 's/\$DESCRIPTION/_raw/g' msconvert.xml.template > msconvert3_raw.xml + diff -r ffe1dca94595 -r 37e5502441cc version --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/version Mon Feb 17 17:00:29 2014 -0500 @@ -0,0 +1,1 @@ +0.2.1