Mercurial > repos > immport-devteam > extract_fcs_keywords
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