# HG changeset patch
# User azomics
# Date 1595506469 14400
# Node ID a5609a84ed166013b612a4b91bd558c62702b1f1
# Parent d3957a51cc519051175c6f63dd12e9066ecf5034
"planemo upload for repository https://github.com/ImmPortDB/immport-galaxy-tools/tree/master/flowtools/check_fcs_headers commit e5be067c50262354a028bd03b77beb8369fb6fb1"
diff -r d3957a51cc51 -r a5609a84ed16 check_fcs_headers/getFCSheader.R
--- a/check_fcs_headers/getFCSheader.R Mon Feb 27 12:16:44 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-# FCS Headers Module for Galaxy
-# FlowCore
-######################################################################
-# Copyright (c) 2016 Northrop Grumman.
-# All rights reserved.
-######################################################################
-#
-# Version 1
-# Cristel Thomas
-#
-#
-
-library(flowCore)
-
-getFCSMarkerNames <- function(input, output) {
- fcs <- read.FCS(input, transformation=F)
- ## marker names
- channels <- colnames(fcs)
- markers <- as.vector(pData(parameters(fcs))$desc)
- df <- data.frame(channels, markers)
- fcs_markers <- capture.output(df)
-
- write.table(df, output, sep="\t")
-}
-
-checkFCS <- function(input_file, output_file) {
- isValid <- F
- # Check file beginning matches FCS standard
- tryCatch({
- isValid = isFCSfile(input_file)
- }, error = function(ex) {
- print (paste(" ! Error in isFCSfile", ex))
- })
-
- if (isValid) {
- getFCSMarkerNames(input_file, output_file)
- } else {
- print (paste(input_file, "does not meet FCS standard"))
- }
-}
-
-args <- commandArgs(trailingOnly = TRUE)
-checkFCS(args[2], args[3])
diff -r d3957a51cc51 -r a5609a84ed16 check_fcs_headers/getFCSheaders.py
--- a/check_fcs_headers/getFCSheaders.py Mon Feb 27 12:16:44 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-#!/usr/bin/env python
-######################################################################
-# Copyright (c) 2016 Northrop Grumman.
-# All rights reserved.
-######################################################################
-from __future__ import print_function
-import sys
-import os
-
-from argparse import ArgumentParser
-
-
-def get_fcs_marker_list(marker_file):
- with open(marker_file, "r") as mrkrs:
- useless_first_line = mrkrs.readline()
- channels = []
- markers = []
- for lines in mrkrs:
- stuff = lines.strip().split("\t")
- channels.append(stuff[1].strip("\""))
- markers.append(stuff[2].strip("\""))
- fcs_markers = [
- "\t".join(channels),
- "\t".join(markers)
- ]
- return(fcs_markers)
-
-
-def print_fcs_headers(files, filenames, outfile, tool_dir):
- headers = {}
- tool = "/".join([tool_dir, "getFCSheader.R"])
- for eachfile in files:
- tmp_output = "tmp_fcs_headers.txt"
- run_command = " ". join(["Rscript --slave --vanilla", tool, "--args", eachfile, tmp_output])
- os.system(run_command)
- headers[eachfile] = get_fcs_marker_list(tmp_output)
-
- with open(outfile, "w") as outf:
- for i, flc in enumerate(files):
- outf.write("\t".join([filenames[i], "channels", headers[flc][0]]) + "\n")
- for j, flm in enumerate(files):
- outf.write("\t".join([filenames[j], "markers", headers[flm][1]]) + "\n")
- return
-
-
-if __name__ == "__main__":
- parser = ArgumentParser(
- prog="GetFCSHeaders",
- description="Gets the headers of all files in given set.")
-
- parser.add_argument(
- '-i',
- dest="input_files",
- required=True,
- action='append',
- help="File location for the text files.")
-
- parser.add_argument(
- '-n',
- dest="file_names",
- required=True,
- action='append',
- help="File names.")
-
- parser.add_argument(
- '-t',
- dest="tool_dir",
- required=True,
- help="Path to the tool directory")
-
- parser.add_argument(
- '-o',
- dest="output_file",
- required=True,
- help="Name of the output file.")
-
- args = parser.parse_args()
- input_files = [f for f in args.input_files]
- file_names = [fn for fn in args.file_names]
- print_fcs_headers(input_files, file_names, args.output_file, args.tool_dir)
- sys.exit(0)
diff -r d3957a51cc51 -r a5609a84ed16 check_fcs_headers/getFCSheaders.xml
--- a/check_fcs_headers/getFCSheaders.xml Mon Feb 27 12:16:44 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-
diff -r d3957a51cc51 -r a5609a84ed16 check_fcs_headers/test-data/input1.fcs
Binary file check_fcs_headers/test-data/input1.fcs has changed
diff -r d3957a51cc51 -r a5609a84ed16 check_fcs_headers/test-data/input2.fcs
Binary file check_fcs_headers/test-data/input2.fcs has changed
diff -r d3957a51cc51 -r a5609a84ed16 check_fcs_headers/test-data/input3.fcs
Binary file check_fcs_headers/test-data/input3.fcs has changed
diff -r d3957a51cc51 -r a5609a84ed16 check_fcs_headers/test-data/output.tabular
--- a/check_fcs_headers/test-data/output.tabular Mon Feb 27 12:16:44 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-input3.fcs channels FSC-H SSC-H FL1-H FL2-H FL3-H FL4-H
-input1.fcs channels FSC-H SSC-H FL1-H FL2-H FL3-H FL4-H
-input2.fcs channels FSC-H SSC-H FL1-H FL2-H FL3-H FL4-H
-input3.fcs markers Forward Scatter Side Scatter FITC CD4 PE CCR3 PP CD8 APC CCR4
-input1.fcs markers Forward Scatter Side Scatter FITC CD4 PE CD25 PP CD3 APC CD45RA
-input2.fcs markers Forward Scatter Side Scatter FITC CD4 PE CXCR3 PP CD8 APC CCR5
diff -r d3957a51cc51 -r a5609a84ed16 getFCSheader.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/getFCSheader.R Thu Jul 23 08:14:29 2020 -0400
@@ -0,0 +1,87 @@
+#!/usr/bin/Rscript --vanilla
+# FCS Headers Module for Galaxy
+# FlowCore
+######################################################################
+# Copyright (c) 2016 Northrop Grumman.
+# All rights reserved.
+######################################################################
+#
+# Version 2
+# May 2018
+# Cristel Thomas
+#
+#
+
+library(flowCore)
+
+getFCSChannels <- function(input_fcs) {
+ fcs <- read.FCS(input_fcs, transformation=F)
+ return(colnames(fcs))
+}
+
+getFCSMarkers <- function(input_fcs){
+ ffcs <- read.FCS(input_fcs, transformation=F)
+ fmarkers <- as.vector(pData(parameters(ffcs))$desc)
+ return(fmarkers)
+}
+
+getFCSMarkerNames <- function(output_file="", file_paths=vector(),
+ fcs_names=vector()) {
+ check_files <- sapply(file_paths, isFCSfile)
+ channels <- lapply(file_paths[check_files], getFCSChannels)
+ markers <- lapply(file_paths[check_files], getFCSMarkers)
+
+ nb_col <- max(lengths(channels))
+ nc <- lapply(channels, `length<-`, nb_col)
+ ct <- t(as.data.frame(nc))
+
+ nm <- lapply(markers, `length<-`, nb_col)
+ mt <- t(as.data.frame(nm))
+
+ nb_files <- sum(check_files)
+ Index <- rep(c("channels", "markers"), each=nb_files)
+ Filename <- rep(fcs_names[check_files], 2)
+
+ idx_nb <- seq(nb_col)
+ ttt <- rbind(ct,mt)
+ finalt <- cbind(Filename, Index, ttt)
+ colnames(finalt)[3:length(colnames(finalt))] <- idx_nb
+
+
+ if (nb_files != length(file_paths)){
+ not_fcs <- fcs_names[!check_files]
+ new_df <- cbind(not_fcs, "Not a valid FCS file")
+ empty_frame <- data.frame(matrix("", nrow=length(not_fcs), ncol=nb_col),
+ stringsAsFactors = F)
+ not_fcs_files <- cbind(new_df, empty_frame)
+ colnames(not_fcs_files) <- colnames(finalt)
+ new_final <- rbind(finalt, not_fcs_files)
+ write.table(new_final, file=output_file, quote=F, row.names=F, col.names=T,
+ sep='\t', append=F)
+ quit(save = "no", status = 10, runLast = FALSE)
+ } else {
+ # output file
+ write.table(finalt, file=output_file, quote=F, row.names=F, col.names=T,
+ sep='\t',
+ append=F)
+ }
+}
+
+################################################################################
+################################################################################
+
+args <- commandArgs(trailingOnly = TRUE)
+
+i <- 1
+nb_files <- (length(args)-1) / 2
+fcs_files <- character(nb_files)
+fcs_names <- character(nb_files)
+for (j in 1:length(args)){
+ if (!j%%2){
+ fcs_files[[i]] <- args[[j]]
+ fcs_names[[i]]<- args[[j+1]]
+ i <- i + 1
+ }
+}
+
+getFCSMarkerNames(args[1], fcs_files, fcs_names)
diff -r d3957a51cc51 -r a5609a84ed16 getFCSheaders.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/getFCSheaders.xml Thu Jul 23 08:14:29 2020 -0400
@@ -0,0 +1,72 @@
+
diff -r d3957a51cc51 -r a5609a84ed16 test-data/input1.fcs
Binary file test-data/input1.fcs has changed
diff -r d3957a51cc51 -r a5609a84ed16 test-data/input2.fcs
Binary file test-data/input2.fcs has changed
diff -r d3957a51cc51 -r a5609a84ed16 test-data/input3.fcs
Binary file test-data/input3.fcs has changed
diff -r d3957a51cc51 -r a5609a84ed16 test-data/output.tabular
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.tabular Thu Jul 23 08:14:29 2020 -0400
@@ -0,0 +1,7 @@
+Filename Index 1 2 3 4 5 6
+input3.fcs channels FSC-H SSC-H FL1-H FL2-H FL3-H FL4-H
+input2.fcs channels FSC-H SSC-H FL1-H FL2-H FL3-H FL4-H
+input1.fcs channels FSC-H SSC-H FL1-H FL2-H FL3-H FL4-H
+input3.fcs markers Forward Scatter Side Scatter FITC CD4 PE CCR3 PP CD8 APC CCR4
+input2.fcs markers Forward Scatter Side Scatter FITC CD4 PE CXCR3 PP CD8 APC CCR5
+input1.fcs markers Forward Scatter Side Scatter FITC CD4 PE CD25 PP CD3 APC CD45RA