Skip to content

Commit

Permalink
xcms3_new_naming - merge - OK but not using conda see: sneumann/xcms#247
Browse files Browse the repository at this point in the history
  • Loading branch information
lecorguille committed Feb 8, 2018
1 parent 017d0aa commit 4c42ad2
Show file tree
Hide file tree
Showing 15 changed files with 123 additions and 83 deletions.
1 change: 1 addition & 0 deletions tools/xcms_merge/lib.r
Binary file removed tools/xcms_merge/test-data/MM14-xset.RData
Binary file not shown.
Binary file removed tools/xcms_merge/test-data/MM8-xset.RData
Binary file not shown.
Binary file modified tools/xcms_merge/test-data/ko15-xset.RData
Binary file not shown.
1 change: 1 addition & 0 deletions tools/xcms_merge/test-data/ko15.CDF
Binary file modified tools/xcms_merge/test-data/ko16-xset.RData
Binary file not shown.
1 change: 1 addition & 0 deletions tools/xcms_merge/test-data/ko16.CDF
5 changes: 5 additions & 0 deletions tools/xcms_merge/test-data/sampleMetadata_missing.tab
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
wt16 WT
wt15 WT
ko15 KO
ko10 KO
foobar01 FOOBAR
Binary file modified tools/xcms_merge/test-data/wt15-xset.RData
Binary file not shown.
1 change: 1 addition & 0 deletions tools/xcms_merge/test-data/wt15.CDF
Binary file modified tools/xcms_merge/test-data/wt16-xset.RData
Binary file not shown.
1 change: 1 addition & 0 deletions tools/xcms_merge/test-data/wt16.CDF
83 changes: 83 additions & 0 deletions tools/xcms_merge/xcms_merge.r
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
#!/usr/bin/env Rscript

#Import the different functions
source_local <- function(fname){ argv <- commandArgs(trailingOnly=FALSE); base_dir <- dirname(substring(argv[grep("--file=", argv)], 8)); source(paste(base_dir, fname, sep="/")) }
source_local("lib.r")

suppressPackageStartupMessages(library(xcms, quietly=TRUE))
suppressPackageStartupMessages(library(batch, quietly=TRUE))

listArguments <- parseCommandArgs(evaluate=FALSE) #interpretation of arguments given in command line as an R list of objects

# Handle infiles
if (!exists("singlefile")) singlefile <- NULL
if (!exists("zipfile")) zipfile <- NULL
rawFilePath <- getRawfilePathFromArguments(singlefile, zipfile, listArguments)
zipfile <- rawFilePath$zipfile
singlefile <- rawFilePath$singlefile
listArguments <- rawFilePath$listArguments
directory <- retrieveRawfileInTheWorkingDirectory(singlefile, zipfile)

cat("\tXSET MERGING...\n")

for(image in listArguments[["images"]]) {
load(image)
cat(sampleNamesList$sampleNamesOrigin,"\n")
if (!exists("xdata_merged")) {
xdata_merged <- xdata
singlefile_merged <- singlefile
md5sumList_merged <- md5sumList
sampleNamesList_merged <- sampleNamesList
} else {
xdata_merged <- c(xdata_merged,xdata)
singlefile_merged <- c(singlefile_merged,singlefile)
md5sumList_merged$origin <- rbind(md5sumList_merged$origin,md5sumList$origin)
sampleNamesList_merged$sampleNamesOrigin <- c(sampleNamesList_merged$sampleNamesOrigin,sampleNamesList$sampleNamesOrigin)
sampleNamesList_merged$sampleNamesMakeNames <- c(sampleNamesList_merged$sampleNamesMakeNames,sampleNamesList$sampleNamesMakeNames)
}
}
rm(image)
xdata <- xdata_merged; rm(xdata_merged)
singlefile <- singlefile_merged; rm(singlefile_merged)
md5sumList <- md5sumList_merged; rm(md5sumList_merged)
sampleNamesList <- sampleNamesList_merged; rm(sampleNamesList_merged)

if (!is.null(listArguments[["sampleMetadata"]])) {
cat("\tXSET PHENODATA SETTING...\n")
sampleMetadataFile <- listArguments[["sampleMetadata"]]
sampleMetadata <- read.table(sampleMetadataFile, h=F, sep=";", stringsAsFactors=F)
if (ncol(sampleMetadata) < 2) sampleMetadata <- read.table(sampleMetadataFile, h=F, sep="\t", stringsAsFactors=F)
if (ncol(sampleMetadata) < 2) sampleMetadata <- read.table(sampleMetadataFile, h=F, sep=",", stringsAsFactors=F)
if (ncol(sampleMetadata) < 2) {
error_message="Your sampleMetadata file seems not well formatted. The column separators accepted are ; , and tabulation"
print(error_message)
stop(error_message)
}
xdata@phenoData@data$sample_group=sampleMetadata$V2[match(xdata@phenoData@data$sample_name,sampleMetadata$V1)]

if (any(is.na(pData(xdata)$sample_group))) {
sample_missing <- pData(xdata)$sample_name[is.na(pData(xdata)$sample_group)]
error_message <- paste("Those samples are missing in your sampleMetadata:", paste(sample_missing, collapse=" "))
print(error_message)
stop(error_message)
}
}

# Get the legacy xcmsSet object
suppressWarnings(xset <- as(xdata, "xcmsSet"))
sampclass(xset) <- xset@phenoData$sample_group

cat("\tXCMSnExp OBJECT INFO\n")
print(pData(xdata))
print(xdata)
cat("\n\n")

cat("\txcmsSet OBJECT INFO\n")
print(xset@phenoData)
print(xset)
cat("\n\n")

cat("\tSAVE RData\n")
#saving R data in .Rdata file to save the variables used in the present tool
objects2save <- c("xdata", "zipfile", "singlefile", "md5sumList", "sampleNamesList")
save(list=objects2save[objects2save %in% ls()], file="merged.RData")
112 changes: 29 additions & 83 deletions tools/xcms_merge/xcms_merge.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<tool id="xcms_merge" name="xcms.xcmsSet Merger" version="1.0.0">
<tool id="xcms_merge" name="xcms.xcmsSet Merger" version="@WRAPPER_VERSION@.0">
<description>Merge xcms.xcmsSet xset in one to be used by group</description>

<macros>
Expand All @@ -9,84 +9,32 @@
<expand macro="stdio"/>

<command><![CDATA[
Rscript $script_file
]]></command>
@COMMAND_XCMS_SCRIPT@/xcms_merge.r
images 'c("${"\",\"".join(map(str, $images))}")'
<configfiles>
<configfile name="script_file"><![CDATA[
suppressPackageStartupMessages(library(xcms, quietly=TRUE))
images=c(
"${"\",\"".join(map(str, $images))}"
)
cat("\tXSET MERGING...\n")
for(image in images) {
load(image)
cat(sampleNamesList\$sampleNamesOrigin,"\n")
if (!exists("xset_merged")) {
xset_merged=xset
singlefile_merged=singlefile
listOFlistArguments_merged=listOFlistArguments
md5sumList_merged=md5sumList
sampleNamesList_merged=sampleNamesList
} else {
xset_merged=c(xset_merged,xset)
singlefile_merged=c(singlefile_merged,singlefile)
listOFlistArguments_merged=c(listOFlistArguments_merged,listOFlistArguments)
md5sumList_merged\$origin=rbind(md5sumList_merged\$origin,md5sumList\$origin)
sampleNamesList_merged\$sampleNamesOrigin=c(sampleNamesList_merged\$sampleNamesOrigin,sampleNamesList\$sampleNamesOrigin)
sampleNamesList_merged\$sampleNamesMakeNames=c(sampleNamesList_merged\$sampleNamesMakeNames,sampleNamesList\$sampleNamesMakeNames)
}
}
rm(image)
xset=xset_merged; rm(xset_merged)
singlefile=singlefile_merged; rm(singlefile_merged)
listOFlistArguments=listOFlistArguments_merged; rm(listOFlistArguments_merged)
md5sumList=md5sumList_merged; rm(md5sumList_merged)
sampleNamesList=sampleNamesList_merged; rm(sampleNamesList_merged)
#if str($sampleMetadata) != 'None':
cat("\tXSET PHENODATA SETTING...\n")
sampleMetadata=read.table("$sampleMetadata", h=F, sep=";", stringsAsFactors=F)
if (ncol(sampleMetadata) < 2) sampleMetadata=read.table("$sampleMetadata", h=F, sep="\t", stringsAsFactors=F)
if (ncol(sampleMetadata) < 2) sampleMetadata=read.table("$sampleMetadata", h=F, sep=",", stringsAsFactors=F)
if (ncol(sampleMetadata) < 2) {
error_message="Your sampleMetadata file seems not well formatted. The column separators accepted are ; , and tabulation"
print(error_message)
stop(error_message)
}
sampclass(xset)=sampleMetadata\$V2[match(rownames(xset@phenoData),sampleMetadata\$V1)]
#end if
cat("\tXSET OBJECT INFO\n")
print(xset@phenoData)
print(xset)
cat("\tSAVE RData\n")
save.image("$xsetRData")
]]></configfile>
</configfiles>
#if str($sampleMetadata) != 'None':
sampleMetadata '$sampleMetadata'
#end if
@COMMAND_FILE_LOAD@
]]></command>

<inputs>
<param name="images" type="data" format="rdata.xcms.raw,rdata" label="xset RData / xcms.xcmsSet file" help="output file from another xcms.xcmsSet" multiple="true" />
<param name="sampleMetadata" label="Sample metadata file " format="tabular" type="data" optional="true" help="must contain at least one column with the sample id and one column with the sample class"/>

<expand macro="input_file_load"/>
</inputs>

<outputs>
<data name="xsetRData" format="rdata.xcms.raw" label="xset.merged.RData" />
<data name="xsetRData" format="rdata.xcms.raw" label="xset.merged.RData" from_work_dir="merged.RData" />
</outputs>

<tests>
<test>
<!--<test>
<param name="images" value="ko15-xset.RData,ko16-xset.RData,wt15-xset.RData,wt16-xset.RData" />
<expand macro="test_file_load_single"/>
<assert_stdout>
<has_text text="object with 4 samples" />
<has_text text="Time range: 2506.1-4477.9 seconds (41.8-74.6 minutes)" />
Expand All @@ -95,15 +43,16 @@ save.image("$xsetRData")
<has_text text="Peak Groups: 0" />
<has_text text="Sample classes: ." />
</assert_stdout>
</test>
</test>-->
<test>
<param name="images" value="ko15-xset.RData,ko16-xset.RData,wt15-xset.RData,wt16-xset.RData" />
<expand macro="test_file_load_single"/>
<param name="sampleMetadata" value="sampleMetadata.tab" />
<assert_stdout>
<has_text text="ko15 KO" />
<has_text text="ko16 KO" />
<has_text text="wt15 WT" />
<has_text text="wt16 WT" />
<has_text_matching expression="ko15\s+KO" />
<has_text_matching expression="ko16\s+KO" />
<has_text_matching expression="wt15\s+WT" />
<has_text_matching expression="wt16\s+WT" />
<has_text text="object with 4 samples" />
<has_text text="Time range: 2506.1-4477.9 seconds (41.8-74.6 minutes)" />
<has_text text="Mass range: 200.1-600 m/z" />
Expand All @@ -112,17 +61,14 @@ save.image("$xsetRData")
<has_text text="Sample classes: KO, WT" />
</assert_stdout>
</test>
<test>
<param name="images" value="MM8-xset.RData,MM14-xset.RData" />
<assert_stdout>
<has_text text="object with 2 samples" />
<has_text text="Time range: 19.7-307.3 seconds (0.3-5.1 minutes)" />
<has_text text="Mass range: 117.0357-936.7059 m/z" />
<has_text text="Peaks: 236 (about 118 per sample)" />
<has_text text="Peak Groups: 0" />
<has_text text="Sample classes: ." />
</assert_stdout>
</test>
<!--<test expect_failure="True">
<param name="images" value="ko15-xset.RData,ko16-xset.RData,wt15-xset.RData,wt16-xset.RData" />
<param name="sampleMetadata" value="sampleMetadata_missing.tab" />
<expand macro="test_file_load_single"/>
<assert_stderr>
<has_text text="Those samples are missing in your sampleMetadata: ko16" />
</assert_stderr>
</test>-->
</tests>

<help><![CDATA[
Expand Down
1 change: 1 addition & 0 deletions tools/xcms_suite/test-data/sampleMetadata_missing.tab

0 comments on commit 4c42ad2

Please sign in to comment.