Mercurial > repos > yhoogstrate > edger_with_design_matrix
changeset 79:c86f1f86b3c1 draft
Uploaded
author | yhoogstrate |
---|---|
date | Thu, 13 Nov 2014 10:30:43 -0500 |
parents | 398963a4827a |
children | c5bd139cd3e8 |
files | README.md design_matrix_creator design_matrix_creator.py edgeR_Concatenate_Expression_Matrices.xml edgeR_Design_from_Expression_Matrix.xml edgeR_Differential_Gene_Expression.xml test-data/GSE51403/mv.sh tool_dependencies.xml |
diffstat | 8 files changed, 372 insertions(+), 266 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/README.md Thu Nov 13 10:30:43 2014 -0500 @@ -0,0 +1,60 @@ +EdgeR wrapper for Galaxy +======================== + +<http://www.bioconductor.org/packages/release/bioc/html/edgeR.html> + +Implementation of EdgeR supporting quite advanced experimental +designs. + +Development +----------- + +* Repository-Maintainer: Youri Hoogstrate + +* Repository-Development: <https://bitbucket.org/EMCbioinf/galaxy-tool-shed-tools> + +The tool wrapper has been written by Youri Hoogstrate from the Erasmus +Medical Center (Rotterdam, Netherlands) on behalf of the Translational +Research IT (TraIT) project: + +<http://www.ctmm.nl/en/programmas/infrastructuren/traitprojecttranslationeleresearch> + +More tools by the Translational Research IT (TraIT) project can be found in the following repository: + +<http://toolshed.dtls.nl/> + +License +------- + +**R**: + +<http://www.r-project.org/COPYING> + +GPL (>=2) + +**BioConductor**: + +<http://www.bioconductor.org/about/> + +Artistic License 2.0 + +**EdgeR**: + +GPL (>=2) + +**This wrapper**: + + Copyright (C) 2013-2014 Youri Hoogstrate + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/design_matrix_creator Thu Nov 13 10:30:43 2014 -0500 @@ -0,0 +1,222 @@ +#!/usr/bin/env python + +import argparse, os, shutil, sys, tempfile, subprocess + +__version_info__ = ('1', '0', '0')#, 'beta') +__version__ = '.'.join(__version_info__) if (len(__version_info__) == 3) else '.'.join(__version_info__[0:3])+"-"+__version_info__[3] +__author__ = 'Youri Hoogstrate' +__homepage__ = 'https://bitbucket.org/EMCbioinf/galaxy-tool-shed-tools' +__license__ = 'GNU General Public License v3 (GPLv3)' + + +class sampleContainer: + def __init__(self): + self.samples = [] + self.treatments = {} + self.treatment_index = [] + self.treatment_types = {} + + def do_decode(self,encoded_str): + return encoded_str.decode("base64").strip().replace("\t",'') + + def add_samples(self,argument): + print " - Adding samples" + for sample in argument: + self.add_sample(self.do_decode(sample)) + + def add_sample(self,sample): + if(sample in self.samples): + sys.stderr.write("Error:\n* Non-unique sample: "+sample+"\n") + sys.exit(1) + else: + self.samples.append(sample) + print " - Added: "+sample + + def add_blocking(self,argument): + print " - Adding paired samples" + pair = [] + for block in argument: + self.add_block(block) + + def add_block(self,blocks): + blocks = blocks.split(":") + as_treatment = blocks[0] + blocks = blocks[1:] + + used_samples = [] + indexed_samples = {} + + for i in range(len(blocks)): + block = blocks[i] + samples = self.get_samples_from_block(block) + indexed_samples[i+1] = [] + for sample in samples: + if(sample in used_samples): + sys.stderr.write("Error:\n* Blocking contains multiple times the same sample: "+sample+"\n") + sys.exit(0) + else: + indexed_samples[i+1] = block + used_samples.append(sample) + + for sample in self.samples: + if(sample not in used_samples): + i = i + 1 + indexed_samples[i+1] = str(sample).encode('base64').strip() + + for index in indexed_samples.keys(): + key = str(index).encode('base64').strip() + as_treatment += ":"+key+":"+indexed_samples[index] + + self.add_treatment(as_treatment) + + def get_samples_from_block(self,decoded_block): + return [ self.do_decode(x) for x in decoded_block.split(",")] + + def add_treatments(self,argument): + print " - Adding treatments" + for treatment in argument: + self.add_treatment(treatment) + + def add_treatment(self,treatment_argument): + print " - Parsing treatment" + + + treatment_argument = treatment_argument.split(":") + name = self.do_decode(treatment_argument[0]) + treatment_argument = treatment_argument[1:] + + + treatment = {"factor_index":{},"sample_index":{}} + only_integers = True + + i = 1 + for item in treatment_argument: + if(i % 2): + factor = self.do_decode(item) + + if(treatment['factor_index'].has_key(factor)): + sys.stderr.write("Error:\n* Factor has been added multiple times to treatment: "+factor+"\n") + sys.exit(0) + else: + print " - Adding factor: "+factor + treatment["factor_index"][factor] = [] + if(not factor.isdigit()): + only_integers = False + else: + for sample in item.split(","): + sample = self.do_decode(sample) + + if(not sample in self.samples): + sys.stderr.write("Error:\n* Unknown sample: "+sample+"\n") + sys.exit(0) + + treatment["factor_index"][factor].append(sample) + if(treatment["sample_index"].has_key(sample)): + sys.stderr.write("Error:\n* Factor has been added to treatment before: "+sample+"/"+factor+", factors must be mutually exclusive!\n") + sys.exit(0) + else: + treatment["sample_index"][sample] = factor + i += 1 + + treatment_factors = sorted(treatment["factor_index"].keys()) + + if(name == None): + treatment["name"] = "_vs_".join(treatment_factors) + else: + treatment["name"] = str(name) + + if(len(treatment["sample_index"]) != len(self.samples)): + sys.stderr.write("Error:\n* The number of samples for treatment '"+treatment["name"]+"' ("+str(len(treatment["sample_index"]))+") is different from the total number of samples ("+str(len(self.samples))+").\n") + + if(only_integers): + treatment_type = "integer" + else: + treatment_type = "string" + + if(self.treatments.has_key(treatment["name"])): + sys.stderr.write("Error:\n* Treatment was already added: '"+treatment["name"]+"\n") + else: + self.treatments[treatment["name"]] = treatment + self.treatment_index.append(treatment["name"]) + self.treatment_types[treatment["name"]] = treatment_type + print " - Treatment \""+treatment["name"]+"\" of type \""+treatment_type+"\" is valid" + + def export(self,output): + # Open file stream + if(args.output == "-"): + fh = sys.stdout + else: + fh = open(args.output,"w") + + # Write header: + fh.write("sample-name\t"+"\t".join(self.treatment_index)+"\n") + + # Write body: + for sample in self.samples: + fh.write(sample) + for treatment_id in self.treatment_index: + treatment = self.treatments[treatment_id] + fh.write("\t"+treatment["sample_index"][sample]) + fh.write("\n") + + fh.close() + +if __name__=="__main__": + parser = argparse.ArgumentParser(description="Create an edgeR design matrix with read-count datasets.") + parser.add_argument("-o","--output", help="Output file, '-' for stdout.",required=True) + parser.add_argument("-c","--columns-file", nargs="?", help='Use columns of [this] file as UIDs (counting from 1)') + parser.add_argument("-s","--sample-names", nargs="*", help='Sample names (UIDs that correspond to the columns in the expression matrix)') + parser.add_argument("-t","--treatments", nargs="+", help='Treatment or conditions: "name::sample:condition& (sample-names and conditions have to be provided using Base64 encoding to avoid weird characters)',required=True) + parser.add_argument("-b","--blocking", nargs="+", help='Description of sample blocking: "blocking_condition*&sample-1-name&sample-2-name&sample-n-name"') + + args = parser.parse_args() + + columns = None + if(args.columns_file): + with open(args.columns_file, "r") as f: + listed_columns = [None] + f.readline().strip("\n").split("\t") + for i in range(1,len(listed_columns)): + listed_columns[i] = listed_columns[i].encode('base64').replace('\n','') + + s = sampleContainer() + + if(listed_columns): + columns = [] + for sample in args.sample_names: + columns.append(listed_columns[int(sample)]) + + + treatments = [] + for treatment in args.treatments: + treatment = treatment.split(":") + for i in range(1,len(treatment)): + if(i%2 == 0): + treatment_tmp = treatment[i].split(",") + for j in range(len(treatment_tmp)): + treatment_tmp[j] = listed_columns[int(treatment_tmp[j])] + treatment[i] = ",".join(treatment_tmp) + + treatments.append(":".join(treatment)) + + blockings = [] + if(args.blocking): + for blocking in args.blocking: + blocking = blocking.split(":") + for i in range(1,len(blocking)): + block = blocking[i].split(",") + for j in range(len(block)): + block[j] = listed_columns[int(block[j])] + blocking[i] = ",".join(block) + blockings.append(":".join(blocking)) + + s.add_samples(columns) + s.add_treatments(treatments) + s.add_blocking(blockings) + + else: + s.add_samples(args.sample_names) + s.add_treatments(args.treatments) + if(args.blocking): + s.add_blocking(args.blocking) + + s.export(args.output)
--- a/design_matrix_creator.py Tue Sep 30 11:29:52 2014 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,215 +0,0 @@ -#!/usr/bin/env python -import argparse, os, shutil, sys, tempfile, subprocess - - -class sampleContainer: - def __init__(self): - self.samples = [] - self.treatments = {} - self.treatment_index = [] - self.treatment_types = {} - - def do_decode(self,encoded_str): - return encoded_str.decode("base64").strip().replace("\t",'') - - def add_samples(self,argument): - print " - Adding samples" - for sample in argument: - self.add_sample(self.do_decode(sample)) - - def add_sample(self,sample): - if(sample in self.samples): - sys.stderr.write("Error:\n* Non-unique sample: "+sample+"\n") - sys.exit(1) - else: - self.samples.append(sample) - print " - Added: "+sample - - def add_blocking(self,argument): - print " - Adding paired samples" - pair = [] - for block in argument: - self.add_block(block) - - def add_block(self,blocks): - blocks = blocks.split(":") - as_treatment = blocks[0] - blocks = blocks[1:] - - used_samples = [] - indexed_samples = {} - - for i in range(len(blocks)): - block = blocks[i] - samples = self.get_samples_from_block(block) - indexed_samples[i+1] = [] - for sample in samples: - if(sample in used_samples): - sys.stderr.write("Error:\n* Blocking contains multiple times the same sample: "+sample+"\n") - sys.exit(0) - else: - indexed_samples[i+1] = block - used_samples.append(sample) - - for sample in self.samples: - if(sample not in used_samples): - i = i + 1 - indexed_samples[i+1] = str(sample).encode('base64').strip() - - for index in indexed_samples.keys(): - key = str(index).encode('base64').strip() - as_treatment += ":"+key+":"+indexed_samples[index] - - self.add_treatment(as_treatment) - - def get_samples_from_block(self,decoded_block): - return [ self.do_decode(x) for x in decoded_block.split(",")] - - def add_treatments(self,argument): - print " - Adding treatments" - for treatment in argument: - self.add_treatment(treatment) - - def add_treatment(self,treatment_argument): - print " - Parsing treatment" - - - treatment_argument = treatment_argument.split(":") - name = self.do_decode(treatment_argument[0]) - treatment_argument = treatment_argument[1:] - - - treatment = {"factor_index":{},"sample_index":{}} - only_integers = True - - i = 1 - for item in treatment_argument: - if(i % 2): - factor = self.do_decode(item) - - if(treatment['factor_index'].has_key(factor)): - sys.stderr.write("Error:\n* Factor has been added multiple times to treatment: "+factor+"\n") - sys.exit(0) - else: - print " - Adding factor: "+factor - treatment["factor_index"][factor] = [] - if(not factor.isdigit()): - only_integers = False - else: - for sample in item.split(","): - sample = self.do_decode(sample) - - if(not sample in self.samples): - sys.stderr.write("Error:\n* Unknown sample: "+sample+"\n") - sys.exit(0) - - treatment["factor_index"][factor].append(sample) - if(treatment["sample_index"].has_key(sample)): - sys.stderr.write("Error:\n* Factor has been added to treatment before: "+sample+"/"+factor+", factors must be mutually exclusive!\n") - sys.exit(0) - else: - treatment["sample_index"][sample] = factor - i += 1 - - treatment_factors = sorted(treatment["factor_index"].keys()) - - if(name == None): - treatment["name"] = "_vs_".join(treatment_factors) - else: - treatment["name"] = str(name) - - if(len(treatment["sample_index"]) != len(self.samples)): - sys.stderr.write("Error:\n* The number of samples for treatment '"+treatment["name"]+"' ("+str(len(treatment["sample_index"]))+") is different from the total number of samples ("+str(len(self.samples))+").\n") - - if(only_integers): - treatment_type = "integer" - else: - treatment_type = "string" - - if(self.treatments.has_key(treatment["name"])): - sys.stderr.write("Error:\n* Treatment was already added: '"+treatment["name"]+"\n") - else: - self.treatments[treatment["name"]] = treatment - self.treatment_index.append(treatment["name"]) - self.treatment_types[treatment["name"]] = treatment_type - print " - Treatment \""+treatment["name"]+"\" of type \""+treatment_type+"\" is valid" - - def export(self,output): - # Open file stream - if(args.output == "-"): - fh = sys.stdout - else: - fh = open(args.output,"w") - - # Write header: - fh.write("sample-name\t"+"\t".join(self.treatment_index)+"\n") - - # Write body: - for sample in self.samples: - fh.write(sample) - for treatment_id in self.treatment_index: - treatment = self.treatments[treatment_id] - fh.write("\t"+treatment["sample_index"][sample]) - fh.write("\n") - - fh.close() - -if __name__=="__main__": - parser = argparse.ArgumentParser(description="Create an edgeR design matrix with read-count datasets.") - parser.add_argument("-o","--output", help="Output file, '-' for stdout.",required=True) - parser.add_argument("-c","--columns-file", nargs="?", help='Use columns of [this] file as UIDs (counting from 1)') - parser.add_argument("-s","--sample-names", nargs="*", help='Sample names (UIDs that correspond to the columns in the expression matrix)') - parser.add_argument("-t","--treatments", nargs="+", help='Treatment or conditions: "name::sample:condition& (sample-names and conditions have to be provided using Base64 encoding to avoid weird characters)',required=True) - parser.add_argument("-b","--blocking", nargs="+", help='Description of sample blocking: "blocking_condition*&sample-1-name&sample-2-name&sample-n-name"') - - args = parser.parse_args() - - columns = None - if(args.columns_file): - with open(args.columns_file, "r") as f: - listed_columns = [None] + f.readline().strip("\n").split("\t") - for i in range(1,len(listed_columns)): - listed_columns[i] = listed_columns[i].encode('base64').replace('\n','') - - s = sampleContainer() - - if(listed_columns): - columns = [] - for sample in args.sample_names: - columns.append(listed_columns[int(sample)]) - - - treatments = [] - for treatment in args.treatments: - treatment = treatment.split(":") - for i in range(1,len(treatment)): - if(i%2 == 0): - treatment_tmp = treatment[i].split(",") - for j in range(len(treatment_tmp)): - treatment_tmp[j] = listed_columns[int(treatment_tmp[j])] - treatment[i] = ",".join(treatment_tmp) - - treatments.append(":".join(treatment)) - - blockings = [] - if(args.blocking): - for blocking in args.blocking: - blocking = blocking.split(":") - for i in range(1,len(blocking)): - block = blocking[i].split(",") - for j in range(len(block)): - block[j] = listed_columns[int(block[j])] - blocking[i] = ",".join(block) - blockings.append(":".join(blocking)) - - s.add_samples(columns) - s.add_treatments(treatments) - s.add_blocking(blockings) - - else: - s.add_samples(args.sample_names) - s.add_treatments(args.treatments) - if(args.blocking): - s.add_blocking(args.blocking) - - s.export(args.output)
--- a/edgeR_Concatenate_Expression_Matrices.xml Tue Sep 30 11:29:52 2014 -0400 +++ b/edgeR_Concatenate_Expression_Matrices.xml Thu Nov 13 10:30:43 2014 -0500 @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<tool id="concatenate_expression_matrices" name="edgeR: Concatenate Expression Matrices"> +<tool id="concatenate_expression_matrices" name="edgeR: Concatenate Expression Matrices" version="1.0.0"> <description>Create a full expression matrix by selecting the desired columns from specific count tables</description> <command> @@ -123,16 +123,34 @@ <help> edgeR: Concatenate Expression Matrices +####################################### + +Overview +-------- + +Create subsets from or combined expression matrices. **Notes** Make sure the tables have an identical number of columns compared to the number of headers. If you export tables using R, make sure you set: col.names=NA. Otherwise column may be swapped during concatenation. -**References** +Input +----- + + +Contact +------- -The test data is coming from: doi: 10.1093/bioinformatics/btt688. -http://www.ncbi.nlm.nih.gov/pubmed/24319002 +The tool wrapper has been written by Youri Hoogstrate from the Erasmus +Medical Center (Rotterdam, Netherlands) on behalf of the Translational +Research IT (TraIT) project: +http://www.ctmm.nl/en/programmas/infrastructuren/traitprojecttranslationeleresearch +More tools by the Translational Research IT (TraIT) project can be found +in the following toolsheds: +- http://toolshed.dtls.nl/ +- http://toolshed.g2.bx.psu.edu +- http://testtoolshed.g2.bx.psu.edu/ </help> </tool>
--- a/edgeR_Design_from_Expression_Matrix.xml Tue Sep 30 11:29:52 2014 -0400 +++ b/edgeR_Design_from_Expression_Matrix.xml Thu Nov 13 10:30:43 2014 -0500 @@ -1,9 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> -<tool id="design_from_expression_matrix" name="edgeR: Design- from Expression matrix"> +<tool id="design_from_expression_matrix" name="edgeR: Design- from Expression matrix" version="1.0.0.a"> <description>Create design- from an expression matrix</description> + <requirements> + <requirement type="package" version="1.0.0">design_matrix_creator</requirement> + </requirements> + <command interpreter="python"> - design_matrix_creator.py + design_matrix_creator -c $expression_matrix #set $unique_columns = [] @@ -86,10 +90,34 @@ <help> edgeR: Design- from Expression matrix +##################################### + +Overview +-------- + +Create a design matrix by selecting the desired patients from an +expression matrix. + +Input +----- **References** The test data is coming from: doi: 10.1093/bioinformatics/btt688. http://www.ncbi.nlm.nih.gov/pubmed/24319002 + +Contact +------- + +The tool wrapper has been written by Youri Hoogstrate from the Erasmus +Medical Center (Rotterdam, Netherlands) on behalf of the Translational +Research IT (TraIT) project: +http://www.ctmm.nl/en/programmas/infrastructuren/traitprojecttranslationeleresearch + +More tools by the Translational Research IT (TraIT) project can be found +in the following toolsheds: +- http://toolshed.dtls.nl/ +- http://toolshed.g2.bx.psu.edu +- http://testtoolshed.g2.bx.psu.edu/ </help> </tool>
--- a/edgeR_Differential_Gene_Expression.xml Tue Sep 30 11:29:52 2014 -0400 +++ b/edgeR_Differential_Gene_Expression.xml Thu Nov 13 10:30:43 2014 -0500 @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<tool id="edger_dge" name="edgeR: Differential Gene(Expression) Analysis"> +<tool id="edger_dge" name="edgeR: Differential Gene(Expression) Analysis" version="3.0.3-latest.a"> <description>RNA-Seq gene expression analysis using edgeR (R package)</description> <requirements> @@ -10,6 +10,8 @@ <requirement type="package" version="1.3.18">graphicsmagick</requirement> </requirements> + <version_command>R --vanilla --slave -e "library(edgeR) ; cat(sessionInfo()\$otherPkgs\$edgeR\$Version)" 2> /dev/null</version_command> + <command> <!-- The following script is written in the "Cheetah" language: @@ -512,7 +514,7 @@ the correct contrast ( http://en.wikipedia.org/wiki/Contrast_(statistics) ) has to be given. If you have for example two groups, with an equal weight, you would like to compare either -"g1~g2" or "normal~cancer". +"g1-g2" or "normal-cancer". The test function makes use of a MCF7 dataset used in a study that indicates that a higher sequencing depth is not neccesairily more important than a higher amount of replaciates[2]. @@ -566,18 +568,17 @@ - R - Bioconductor - - limma - - - edgeR + - limma + - edgeR License ------- - R - - GPL-2 & GPL-3 + - GPL 2 & GPL 3 - limma - GPL (>=2) - edgeR - - GPL (>=2) + - GPL (>=2) References ---------- @@ -603,12 +604,18 @@ Contact ------- -The tool wrapper has been written by Youri Hoogstrate from the Erasmus Medical Center (Rotterdam, Netherlands) on behalf of the Translational Research IT (TraIT) project: + +The tool wrapper has been written by Youri Hoogstrate from the Erasmus +Medical Center (Rotterdam, Netherlands) on behalf of the Translational +Research IT (TraIT) project: http://www.ctmm.nl/en/programmas/infrastructuren/traitprojecttranslationeleresearch +More tools by the Translational Research IT (TraIT) project can be found +in the following toolsheds: +- http://toolshed.dtls.nl/ +- http://toolshed.g2.bx.psu.edu +- http://testtoolshed.g2.bx.psu.edu/ + I would like to thank Hina Riaz - Naz Khan for her helpful contribution. - -More tools by the Translational Research IT (TraIT) project can be found in the following repository: -http://testtoolshed.g2.bx.psu.edu/ </help> </tool>
--- a/test-data/GSE51403/mv.sh Tue Sep 30 11:29:52 2014 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -mv GSE51403_featureCounts_Control_3.txt GSE51403_expression_matrix_Control_3.txt -mv GSE51403_featureCounts_Control_4.txt GSE51403_expression_matrix_Control_4.txt -mv GSE51403_featureCounts_Control_5.txt GSE51403_expression_matrix_Control_5.txt -mv GSE51403_featureCounts_Control_6.txt GSE51403_expression_matrix_Control_6.txt -mv GSE51403_featureCounts_Control_7.txt GSE51403_expression_matrix_Control_7.txt -mv GSE51403_featureCounts_E2.txt GSE51403_expression_matrix_E2.txt -mv GSE51403_featureCounts_GeneLengths.txt GSE51403_expression_matrix_GeneLengths.txt
--- a/tool_dependencies.xml Tue Sep 30 11:29:52 2014 -0400 +++ b/tool_dependencies.xml Thu Nov 13 10:30:43 2014 -0500 @@ -1,38 +1,14 @@ <?xml version="1.0"?> <tool_dependency> - - <!-- the following repo does NOT work out of the box: - <package name="package_r3_withx" version="3.0.1"> - <repository changeset_revision="abc274f22004" name="package_r3_withx" owner="joachim-jacob" prior_installation_required="True" toolshed="http://testtoolshed.g2.bx.psu.edu/" /> - </package> - --> - - <!-- the following repo does NOT even install due to gfortran shared libs: - <package name="R" version="3.1.0"> - <repository changeset_revision="a6cc7706ea14" name="package_r_3_1_0" owner="iuc" prior_installation_required="True" toolshed="http://testtoolshed.g2.bx.psu.edu/" /> - </package> - --> - <package name="R" version="3.0.3"> - <repository changeset_revision="9ff23e0b280b" name="package_r_3_0_3" owner="iuc" prior_installation_required="True" toolshed="http://testtoolshed.g2.bx.psu.edu/" /> + <repository changeset_revision="9ff23e0b280b" name="package_r_3_0_3" owner="iuc" prior_installation_required="True" toolshed="https://testtoolshed.g2.bx.psu.edu" /><!-- toolshed="http://testtoolshed.g2.bx.psu.edu/" --> </package> <package name="biocLite_edgeR_limma" version="latest"> <install version="1.0"> <actions> <action type="set_environment_for_install"> - <!-- the following repo does NOT work out of the box: - <repository changeset_revision="abc274f22004" name="package_r3_withx" owner="joachim-jacob" toolshed="http://testtoolshed.g2.bx.psu.edu/"> - <package name="package_r3_withx" version="3.0.1" /> - </repository> - --> - <!-- the following repo does NOT even install due to gfortran shared libs: - <repository changeset_revision="a6cc7706ea14" name="package_r_3_1_0" owner="iuc" toolshed="http://testtoolshed.g2.bx.psu.edu/"> - <package name="R" version="3.1.0" /> - </repository> - --> - - <repository changeset_revision="9ff23e0b280b" name="package_r_3_0_3" owner="iuc" toolshed="http://testtoolshed.g2.bx.psu.edu/"> + <repository changeset_revision="9ff23e0b280b" name="package_r_3_0_3" owner="iuc" toolshed="https://testtoolshed.g2.bx.psu.edu"><!-- toolshed="http://testtoolshed.g2.bx.psu.edu/" --> <package name="R" version="3.0.3" /> </repository> @@ -54,6 +30,23 @@ <!-- instead of using "convert", make use of "gm convert" --> <package name="graphicsmagick" version="1.3.18"> - <repository changeset_revision="2fd4eb971ba5" name="package_graphicsmagick_1_3" owner="iuc" toolshed="http://testtoolshed.g2.bx.psu.edu/" /> + <repository changeset_revision="2fd4eb971ba5" name="package_graphicsmagick_1_3" owner="iuc" toolshed="https://testtoolshed.g2.bx.psu.edu" /><!-- toolshed="http://testtoolshed.g2.bx.psu.edu/" --> + </package> + + <package name="design_matrix_creator" version="1.0.0"> + <install version="1.0"> + <actions> + <action type="move_file"> + <source>$REPOSITORY_INSTALL_DIR/design_matrix_creator</source> + <destination>$INSTALL_DIR/bin/</destination> + </action> + <action type="chmod"> + <file mode="755">$INSTALL_DIR/bin/design_matrix_creator</file> + </action> + <action type="set_environment"> + <environment_variable action="prepend_to" name="PATH">$INSTALL_DIR/bin</environment_variable> + </action> + </actions> + </install> </package> </tool_dependency>