changeset 0:dc00746654dc draft

Uploaded
author immport-devteam
date Mon, 27 Feb 2017 12:49:02 -0500
parents
children 1d5e530c8a5e
files extract_fcs_keywords/FCSKeyword.R extract_fcs_keywords/extractKeywords.xml extract_fcs_keywords/test-data/out.tabular extract_fcs_keywords/test-data/testfcs1.fcs
diffstat 4 files changed, 362 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/extract_fcs_keywords/FCSKeyword.R	Mon Feb 27 12:49:02 2017 -0500
@@ -0,0 +1,72 @@
+# ImmPort FCSKeywords
+######################################################################
+#                  Copyright (c) 2016 Northrop Grumman.
+#                          All rights reserved.
+######################################################################
+#
+# Converts the FCS file to text without transformaton
+# To run in R
+# 1) library(flowCore)
+# 2) source("FCSKeyword.R")
+# 3) transformFCS("filename")
+#
+# Version 1.4.1
+# March 2016 -- added lines to run directly from command line
+#
+
+library(flowCore)
+
+#
+# Starting function for processing a FCS file
+#
+extractKeywords <- function(input_file, keyword_file="", debug=FALSE) {
+  #
+  # Generate the file names for the output_file and keyword_file
+  #
+  pieces <- unlist(strsplit(input_file, .Platform$file.sep))
+  filename <- pieces[length(pieces)]
+
+  if (keyword_file == "") {
+    filepieces <- unlist(strsplit(filename, '\\.'))
+    #replace .fcs with .keyword; append .keyword if not ending in .fcs
+    if (filepieces[length(filepieces)] == 'fcs') {
+      filepieces[length(filepieces)] = 'keyword'
+    } else {
+      filepieces[length(filepieces)+1] = 'keyword'
+    }
+    keyword_file <- paste(filepieces, collapse = '.')
+  }
+
+  if (debug) {
+    print (paste("Converting file: ", input_file))
+    print (paste("Original file name: ", filename))
+    print (paste("Output file name: ", output_file))
+    print (paste("Keyword file name: ", keyword_file))
+  }
+  fcs <- read.FCS(input_file, transformation=F)
+  keywords <- keyword(fcs)
+  write.table(as.matrix(keywords), file=keyword_file, quote=F,
+              row.names=T, col.names=F, sep='=', append=F)
+}
+
+# Extract Keywords
+# @param input_file     FCS file to be transformed
+# @param keyword_file   FCS file keywords ".keywords" extension"
+transformFCS <- function(input_file, keyword_file="", debug=FALSE) {
+  isValid <- F
+  # Check file beginning matches FCS standard
+  tryCatch({
+    isValid = isFCSfile(input_file)
+  }, error = function(ex) {
+    print (paste("    ! Error in isFCSfile", ex))
+  })
+
+  if (isValid) {
+    extractKeywords(input_file, keyword_file, debug)
+  } else {
+    print (paste(input_file, "does not meet FCS standard"))
+  }
+}
+
+args <- commandArgs(TRUE)
+transformFCS(args[2], args[3])
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/extract_fcs_keywords/extractKeywords.xml	Mon Feb 27 12:49:02 2017 -0500
@@ -0,0 +1,70 @@
+<tool id="extract_fcs_keywords" name="Extract keywords" version="1.0">
+  <description>from FCS files.</description>
+  <requirements>
+    <requirement type="package" version="3.3.0">r</requirement>
+    <requirement type="package" version="1.38.2">bioconductor-flowcore</requirement>
+  </requirements>
+  <stdio>
+    <exit_code range="1:" />
+  </stdio>
+  <command><![CDATA[
+    Rscript --slave --vanilla $__tool_directory__/FCSKeyword.R --args "${input}" "${keyword_file}"
+  ]]>
+  </command>
+  <inputs>
+    <param format="fcs" name="input" type="data" label="FCS file"/>
+  </inputs>
+  <outputs>
+    <data format="tabular" name="keyword_file" label="Extract Keywords on ${input.name}"/>
+  </outputs>
+  <tests>
+    <test>
+      <param name="input" value="testfcs1.fcs"/>
+      <output name="keyword_file" file="out.tabular" lines_diff="2"/>
+    </test>
+  </tests>
+  <help><![CDATA[
+   This tool extracts the Keywords from a FCS file.
+
+-----
+
+**Input files**
+
+This tool uses FCS files as input.
+
+**Output file**
+
+The list of FCS file headers is output.
+
+-----
+
+**Example**
+
+FCSversion=2
+
+$BYTEORD=4,3,2,1
+
+$DATATYPE=I
+
+$NEXTDATA=0
+
+$SYS=Macintosh System Software 9.2.2
+
+CREATOR=CELLQuest 3.3
+
+$TOT=20000
+
+$MODE=L
+
+$PAR=6
+
+$P1N=FSC-H
+
+.
+
+..
+
+...
+  ]]>
+  </help>
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/extract_fcs_keywords/test-data/out.tabular	Mon Feb 27 12:49:02 2017 -0500
@@ -0,0 +1,220 @@
+APPLY COMPENSATION=TRUE
+AUTOBS=TRUE
+$BEGINANALYSIS=0
+$BEGINDATA=4305
+$BEGINSTEXT=0
+$BTIM=10:59:24
+$BYTEORD=4,3,2,1
+COCKTAIL ID=Lot 35286
+CREATOR=BD FACSDiva Software Version 6.1.3
+CST BASELINE DATE=10/27/2011 10:45:28 AM
+CST BEADS LOT ID=18360
+CST SETUP DATE=01/25/2012 10:07:54 AM
+CST SETUP STATUS=SUCCESS
+$CYT=FORTESSA (LSRII)
+CYTNUM=H1773014
+CYTOMETER CONFIG CREATE DATE=01/15/2010 10:41:45 AM
+CYTOMETER CONFIG NAME=MASTER Configuration 01-10
+$DATATYPE=F
+$DATE=16-APR-2013
+$ENDANALYSIS=0
+$ENDDATA=4824
+$ENDSTEXT=0
+$ETIM=11:02:17
+EXPERIMENT NAME=LYOPLATE EXP 041613
+EXPORT TIME=17-APR-2013-09:37:47
+EXPORT USER NAME=FlowU19P1
+FCSversion=3
+$FIL=12828_1_T REG.fcs
+FILENAME=/home/galaxy/immport-galaxy/database/files/000/dataset_951.dat
+flowCore_$P10Rmax=262143
+flowCore_$P10Rmin=-111
+flowCore_$P11Rmax=262143
+flowCore_$P11Rmin=-111
+flowCore_$P12Rmax=262143
+flowCore_$P12Rmin=-111
+flowCore_$P13Rmax=262143
+flowCore_$P13Rmin=0
+flowCore_$P1Rmax=262143
+flowCore_$P1Rmin=-111
+flowCore_$P2Rmax=262143
+flowCore_$P2Rmin=0
+flowCore_$P3Rmax=262143
+flowCore_$P3Rmin=-111
+flowCore_$P4Rmax=262143
+flowCore_$P4Rmin=0
+flowCore_$P5Rmax=262143
+flowCore_$P5Rmin=-111
+flowCore_$P6Rmax=262143
+flowCore_$P6Rmin=-111
+flowCore_$P7Rmax=262143
+flowCore_$P7Rmin=-111
+flowCore_$P8Rmax=262143
+flowCore_$P8Rmin=-111
+flowCore_$P9Rmax=262143
+flowCore_$P9Rmin=-111
+FSC ASF=0.75
+GUID=b95e2ce8-2c89-419f-9917-b86181233086
+$INST=BIIR
+INSTITUTE=BIIR
+LASER1ASF=0.91
+LASER1DELAY=0.00
+LASER1NAME=Blue
+LASER2ASF=0.98
+LASER2DELAY=59.85
+LASER2NAME=Green
+LASER3ASF=0.76
+LASER3DELAY=38.02
+LASER3NAME=Red
+LASER4ASF=0.96
+LASER4DELAY=21.05
+LASER4NAME=Violet
+$MODE=L
+$NEXTDATA=0
+$OP=FlowU19P1
+OPERATOR=KK
+ORIGINALGUID=b95e2ce8-2c89-419f-9917-b86181233086
+$P10B=32
+P10BS=2580
+P10DISPLAY=LOG
+$P10E=0,0
+$P10G=1.0
+P10MS=0
+$P10N=V500-A
+$P10R=262144
+$P10S=HLA-DR
+$P10V=518
+$P11B=32
+P11BS=4535
+P11DISPLAY=LOG
+$P11E=0,0
+$P11G=1.0
+P11MS=0
+$P11N=PE-A
+$P11R=262144
+$P11S=CD25
+$P11V=552
+$P12B=32
+P12BS=856
+P12DISPLAY=LOG
+$P12E=0,0
+$P12G=1.0
+P12MS=0
+$P12N=PE-Cy7-A
+$P12R=262144
+$P12S=CCR4
+$P12V=548
+$P13B=32
+P13BS=0
+$P13E=0,0
+$P13G=0.01
+P13MS=0
+$P13N=Time
+$P13R=262144
+$P13S= 
+$P1B=32
+P1BS=0
+P1DISPLAY=LIN
+$P1E=0,0
+$P1G=1.0
+P1MS=0
+$P1N=FSC-A
+$P1R=262144
+$P1S= 
+$P1V=270
+$P2B=32
+P2BS=0
+P2DISPLAY=LIN
+$P2E=0,0
+$P2G=1.0
+P2MS=0
+$P2N=FSC-H
+$P2R=262144
+$P2S= 
+$P2V=270
+$P3B=32
+P3BS=0
+P3DISPLAY=LIN
+$P3E=0,0
+$P3G=1.0
+P3MS=0
+$P3N=SSC-A
+$P3R=262144
+$P3S= 
+$P3V=295
+$P4B=32
+P4BS=0
+P4DISPLAY=LIN
+$P4E=0,0
+$P4G=1.0
+P4MS=0
+$P4N=SSC-H
+$P4R=262144
+$P4S= 
+$P4V=295
+$P5B=32
+P5BS=2481
+P5DISPLAY=LOG
+$P5E=0,0
+$P5G=1.0
+P5MS=0
+$P5N=APC-A
+$P5R=262144
+$P5S=CD127
+$P5V=630
+$P6B=32
+P6BS=1788
+P6DISPLAY=LOG
+$P6E=0,0
+$P6G=1.0
+P6MS=0
+$P6N=APC-H7-A
+$P6R=262144
+$P6S=CD45RO
+$P6V=735
+$P7B=32
+P7BS=3936
+P7DISPLAY=LOG
+$P7E=0,0
+$P7G=1.0
+P7MS=0
+$P7N=FITC-A
+$P7R=262144
+$P7S=LIVE
+$P7V=570
+$P8B=32
+P8BS=2019
+P8DISPLAY=LOG
+$P8E=0,0
+$P8G=1.0
+P8MS=0
+$P8N=PerCP-Cy5-5-A
+$P8R=262144
+$P8S=CD4
+$P8V=518
+$P9B=32
+P9BS=5452
+P9DISPLAY=LOG
+$P9E=0,0
+$P9G=1.0
+P9MS=0
+$P9N=V450-A
+$P9R=262144
+$P9S=CD3
+$P9V=380
+$PAR=13
+PROJECT #= 
+PROJECT NAME=Lyoplate
+SAMPLE ID=12828
+SAMPLE TYPE=PBMC frozen
+SPILL=c(1, 0.0067379445170813, 0.0010783895436113, 0.102144814292574, 0.000101211278412214, 0.000652683357261773, 0.00182247839595363, 0.000577691677250781, 0.202015783876003, 1, 0.00222910936570335, 0.139363365250402, 0, 0, 0.000545240559240861, 0.336431027409918, 0, 0, 1, 0, 0.00668187695651775, 0.0406011491912338, 0.000913908302803783, 0.00220095872247462, 0.0119306783002532, 0.000223058031772544, 0.165872313856347, 1, 0.000242930913850066, 0.00270538171399042, 0.109681715733056, 0.00852060469666518, 
+0.000415952526118246, 0.000274558421533846, 0.00722997160274543, 0.00330843124258504, 1, 0.0401369777624418, 0.000114293981812179, 0.000232181416368999, 0.000260324906555768, 7.85220538064485e-05, 0.0759670373604685, 0, 0.760397293276194, 1, 8.17114175730858e-05, 0.000165858901439273, 5.26276753201359e-05, 0, 0.581890441342821, 0.000423034819434245, 0, 0.000135799571265989, 1, 0.0826011942722407, 0.00750627934931762, 0.0319900905590346, 0.00535275217478571, 0.0443177036646392, 0, 0, 0.00509974622089483, 
+1)
+$SRC=12828_1
+$SYS=Windows XP 5.1
+THRESHOLD=FSC,5000
+$TIMESTEP=0.01
+$TOT=10
+transformation=applied
+TUBE NAME=T REG
+WINDOW EXTENSION=10.00
Binary file extract_fcs_keywords/test-data/testfcs1.fcs has changed