annotate extract_fcs_keywords/FCSKeyword.R @ 0:dc00746654dc draft

Uploaded
author immport-devteam
date Mon, 27 Feb 2017 12:49:02 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
1 # ImmPort FCSKeywords
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
2 ######################################################################
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
3 # Copyright (c) 2016 Northrop Grumman.
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
4 # All rights reserved.
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
5 ######################################################################
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
6 #
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
7 # Converts the FCS file to text without transformaton
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
8 # To run in R
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
9 # 1) library(flowCore)
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
10 # 2) source("FCSKeyword.R")
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
11 # 3) transformFCS("filename")
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
12 #
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
13 # Version 1.4.1
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
14 # March 2016 -- added lines to run directly from command line
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
15 #
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
16
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
17 library(flowCore)
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
18
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
19 #
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
20 # Starting function for processing a FCS file
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
21 #
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
22 extractKeywords <- function(input_file, keyword_file="", debug=FALSE) {
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
23 #
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
24 # Generate the file names for the output_file and keyword_file
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
25 #
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
26 pieces <- unlist(strsplit(input_file, .Platform$file.sep))
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
27 filename <- pieces[length(pieces)]
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
28
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
29 if (keyword_file == "") {
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
30 filepieces <- unlist(strsplit(filename, '\\.'))
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
31 #replace .fcs with .keyword; append .keyword if not ending in .fcs
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
32 if (filepieces[length(filepieces)] == 'fcs') {
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
33 filepieces[length(filepieces)] = 'keyword'
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
34 } else {
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
35 filepieces[length(filepieces)+1] = 'keyword'
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
36 }
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
37 keyword_file <- paste(filepieces, collapse = '.')
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
38 }
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
39
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
40 if (debug) {
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
41 print (paste("Converting file: ", input_file))
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
42 print (paste("Original file name: ", filename))
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
43 print (paste("Output file name: ", output_file))
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
44 print (paste("Keyword file name: ", keyword_file))
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
45 }
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
46 fcs <- read.FCS(input_file, transformation=F)
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
47 keywords <- keyword(fcs)
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
48 write.table(as.matrix(keywords), file=keyword_file, quote=F,
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
49 row.names=T, col.names=F, sep='=', append=F)
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
50 }
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
51
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
52 # Extract Keywords
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
53 # @param input_file FCS file to be transformed
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
54 # @param keyword_file FCS file keywords ".keywords" extension"
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
55 transformFCS <- function(input_file, keyword_file="", debug=FALSE) {
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
56 isValid <- F
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
57 # Check file beginning matches FCS standard
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
58 tryCatch({
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
59 isValid = isFCSfile(input_file)
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
60 }, error = function(ex) {
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
61 print (paste(" ! Error in isFCSfile", ex))
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
62 })
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
63
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
64 if (isValid) {
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
65 extractKeywords(input_file, keyword_file, debug)
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
66 } else {
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
67 print (paste(input_file, "does not meet FCS standard"))
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
68 }
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
69 }
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
70
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
71 args <- commandArgs(TRUE)
dc00746654dc Uploaded
immport-devteam
parents:
diff changeset
72 transformFCS(args[2], args[3])