Mercurial > repos > youyuh48 > sleuth
changeset 2:a049d0d5a05e draft
Uploaded
author | youyuh48 |
---|---|
date | Fri, 08 Dec 2017 22:15:41 -0500 |
parents | 527c214feb7d |
children | 172091d47f5a |
files | r-sleuth.R r-sleuth.xml test-data/SRR1867792.h5 test-data/SRR1909613.h5 test-data/SRR1909637.h5 test-data/metadata.txt |
diffstat | 6 files changed, 170 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/r-sleuth.R Fri Dec 08 22:15:41 2017 -0500 @@ -0,0 +1,87 @@ +#!/usr/bin/env Rscript + +# A command-line interface to sleuth for use with Galaxy +# This script modified from +# https://github.com/pachterlab/bears_analyses/blob/master/sleuth.R + +# setup R error handling to go to stderr +options( show.error.messages=F, error = function () { cat( geterrmessage(), file=stderr() ); q( "no", 1, F ) } ) + +# we need that to not crash galaxy with an UTF8 error on German LC settings. +loc <- Sys.setlocale("LC_MESSAGES", "en_US.UTF-8") + +library("getopt") +library("tools") +options(stringAsFactors = FALSE, useFancyQuotes = FALSE) +args <- commandArgs(trailingOnly = TRUE) + +# get options, using the spec as defined by the enclosed list. +spec <- matrix(c( + "quiet", "q", 0, "logical", + "help", "h", 0, "logical", + "indir", "i", 1, "character", + "metadata", "m", 1, "character", + "full_model", "f", 1, "character", + "reduced_model", "r", 1, "character", + "gene_anno_name", "a", 2, "character" + ), byrow=TRUE, ncol=4) +opt <- getopt(spec) + +# if help was asked for print a friendly message +# and exit with a non-zero error code +if (!is.null(opt$help)) { + cat(getopt(spec, usage=TRUE)) + q(status=1) +} + +# enforce the following required arguments +if (is.null(opt$indir)) { + cat("'indir' is required\n") + q(status=1) +} +if (is.null(opt$metadata)) { + cat("'metadata' is required\n") + q(status=1) +} +if (is.null(opt$full_model)) { + cat("'full_model' is required\n") + q(status=1) +} +if (is.null(opt$reduced_model)) { + cat("'reduced_model' is required\n") + q(status=1) +} + +verbose <- if (is.null(opt$quiet)) { + TRUE +} else { + FALSE +} + +suppressPackageStartupMessages({ + library("sleuth") + library("biomaRt") +}) + +s2c <- read.table(file.path(opt$metadata), header = TRUE, stringsAsFactors=FALSE) +run_dirs <- s2c$sample +kal_dirs <- c() + +for (dir in run_dirs) { + kal_dirs <- c(kal_dirs, file.path(opt$indir, dir, "kallisto")) +} + +s2c <- dplyr::mutate(s2c, path = kal_dirs) + +if (!is.null(opt$gene_anno_name)) { + mart <- biomaRt::useMart(biomart = "ensembl", dataset = opt$gene_anno_name) + t2g <- biomaRt::getBM(attributes = c("ensembl_transcript_id", "ensembl_gene_id", "external_gene_name"), mart = mart) + t2g <- dplyr::rename(t2g, target_id = ensembl_transcript_id, ens_gene = ensembl_gene_id, ext_gene = external_gene_name) + so <- sleuth_prep(s2c, as.formula(opt$full_model), target_mapping = t2g, read_bootstrap_tpm=TRUE, extra_bootstrap_summary=TRUE) +} else { + so <- sleuth_prep(s2c, as.formula(opt$full_model), read_bootstrap_tpm=TRUE, extra_bootstrap_summary=TRUE) +} +so <- sleuth_fit(so, as.formula(opt$full_model), "full") +so <- sleuth_fit(so, as.formula(opt$reduced_model), "reduced") +so <- sleuth_lrt(so, "reduced", "full") +sleuth_deploy(so, opt$indir)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/r-sleuth.xml Fri Dec 08 22:15:41 2017 -0500 @@ -0,0 +1,79 @@ +<tool id="r-sleuth" name="r-sleuth" version="0.29.0"> + <description>Sleuth is an R library for analysis of RNA-Seq experiments for which transcript abundances have been quantified with kallisto.</description> + <requirements> + <requirement type="package" version="1.20.0">r-getopt</requirement> + <requirement type="package" version="0.29.0">r-sleuth</requirement> + <requirement type="package" version="2.34.0">bioconductor-biomart</requirement> + </requirements> + <version_command> + <![CDATA[ + echo $(R --version | grep version | grep -v GNU)", r-sleuth version" $(R --vanilla --slave -e "library(sleuth); cat(sessionInfo()\$otherPkgs\$sleuth\$Version)" 2> /dev/null | grep -v -i "WARNING: ") + ]]> + </version_command> + <command detect_errors="aggressive"> + <![CDATA[ + #import re + ## create symlinks to input datasets + #for $file in $input_files + #set $sname = re.sub('\.h5$', '', str($file.element_identifier)) + mkdir -p 'data/${sname}/kallisto' && + ln -s '$file' 'data/${sname}/kallisto/abundance.h5' && + #end for + + Rscript '${__tool_directory__}/r-sleuth.R' + --indir 'data' + --metadata '$metadata' + --full_model '~${full_model}' + --reduced_model '~${reduced_model}' + --gene_anno_name 'hsapiens_gene_ensembl' && + tar zcvf sleuth_shiny.tar.gz data/app.R data/so.rds + ]]> + </command> + <inputs> + <param name="input_files" type="data" format="h5" label="Select Abundance(HDF5) Datasets" min="2" multiple="True"/> + <param name="metadata" type="data" format="txt,tsv,tabular" label="Metadata file"/> + <param name="full_model" type="text" value="condition" label="Full model"/> + <param name="reduced_model" type="text" value="1" label="Reduced model"/> + <param name="gene_anno_name" type="select" label="BioMart dataset"> + <option value="hsapiens_gene_ensembl" selected="true">homo_sapiens</option> + </param> + </inputs> + <outputs> + <data name="output" format="tar" label="${tool.name} on ${on_string}: R Shiny app" from_work_dir="sleuth_shiny.tar.gz"/> + </outputs> + <tests> + <test> + <param name="input_files" value="SRR1867792.h5,SRR1909613.h5,SRR1909637.h5"/> + <param name="metadata" value="metadata.txt"/> + <output name="output" file="sleuth_shiny.tar.gz" ftype="tar"/> + </test> + </tests> + <help> +<![CDATA[ +This is a Galaxy wrapper for the Sleuth package. + +**Input file format of metadata** + +sample condition +--------------------- +SRR1867792 ESC +SRR1909613 BM-MSC +SRR1909637 BM-MSC + +**Output** + +This wrapper script generates Shiny web application files for RStudio. +Unzip sleuth_shiny.tar.gz file, then run app.R file in RStudio. +]]> + </help> + <citations> + <citation type="bibtex"> + @misc{githubsleuth, + title = {sleuth}, + publisher = {GitHub}, + journal = {GitHub repository}, + url = {https://pachterlab.github.io/sleuth/}, + } + </citation> + </citations> +</tool>