Mercurial > repos > immport-devteam > extract_fcs_keywords
diff extract_fcs_keywords/FCSKeyword.R @ 0:dc00746654dc draft
Uploaded
author | immport-devteam |
---|---|
date | Mon, 27 Feb 2017 12:49:02 -0500 |
parents | |
children |
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])