Nothing
#' Preprocessing fcs files from different studies in batch.
#'
#' It transform and compensate for the raw fcs files and write out the processed
#' data to a new set of fcs files.
#' @param inputMeta A data frame containing 2 columns: a column called
#' "fcs_files" that contains the location (relative to the working directory)
#' of each fcs file on the hard drive and a column called "study_id" that
#' specify what study each fcs file belongs to.
#' @param assay A vector, each element is either "FCM" or "CyTOF" to indicate
#' the type of cytometry data.
#' @param outpath A string indicating the directory the pre-processed fcs files
#' will be written to.
#' @param b A positive number used to specify the arcsinh transformation. f(x) =
#' asinh (b*x) where x is the original value and f(x) is the value after
#' transformation. The suggested value is 1/150 for flow cytometry (FCM) data
#' and 1/8 for CyTOF data. If b = 0, the transformation is skipped.
#' @param fileSampleSize An integer specifying the number of events sampled from
#' each fcs file. If NULL, all the events will be pre-processed and wrote out
#' to the new fcs files.
#' @param excludeTransformParameters A vector specifying the name of parameters
#' not to be transformed (left at linear scale).
#' @return Does not return anything. The output is written to the directory
#' specified by the "outpath".
#' @details The function takes a data frame which specifies the location of the
#' fcs files and the panels the fcs files belong to. It transform the
#' cytometry data using the arcsinh transformation. For flow cytometry data,
#' it compensate the data using the compensation matrix supplied in the fcs
#' file. the preprocessed fcs files and a table called
#' "processed_sample_summary.csv" will be wrote out to outpath as well.
#' @examples
#' #get meta-data
#' fn=system.file("extdata","fcs_info.csv",package="MetaCyto")
#' fcs_info=read.csv(fn,stringsAsFactors=FALSE,check.names=FALSE)
#' fcs_info$fcs_files=system.file("extdata",fcs_info$fcs_files,package="MetaCyto")
#' # make sure the transformation parameter "b" and the "assay" argument are
#' # correct for FCM and CyTOF files
#' b=assay=rep(NA,nrow(fcs_info))
#' b[grepl("CyTOF",fcs_info$study_id)]=1/8
#' b[grepl("FCM",fcs_info$study_id)]=1/150
#' assay[grepl("CyTOF",fcs_info$study_id)]="CyTOF"
#' assay[grepl("FCM",fcs_info$study_id)]="FCM"
#' # preprocessing
#' preprocessing.batch(inputMeta=fcs_info,
#' assay=assay,
#' b=b,
#' outpath="Example_Result/preprocess_output",
#' excludeTransformParameters=c("FSC-A","FSC-W","FSC-H",
#' "Time","Cell_length"))
#' @importFrom flowCore write.FCS
#' @export
preprocessing.batch = function(inputMeta,
assay=c("FCM", "CyTOF"),
outpath,
b=1/150,
fileSampleSize=5000,
excludeTransformParameters=c("FSC-A","FSC-W","FSC-H","Time","Cell_length")){
fcs_param=NULL
fcs_names= gsub(".*/","",inputMeta$fcs_files)
excludeTransformParameters=paste(excludeTransformParameters,collapse="|")
dir.create(outpath,recursive=TRUE)
if(length(b)==1){b=rep(b,nrow(inputMeta))}
if(length(assay)==1){assay=rep(assay,nrow(inputMeta))}
for(std in unique(inputMeta$study_id)){
cat("Study ID = ",std, " ")
# 1) identify sample :
fcs_files=subset(inputMeta$fcs_files,inputMeta$study_id==std)
fcs=preprocessing(fcsFiles=fcs_files,
assay=subset(assay,inputMeta$study_id==std)[1],
b=subset(b,inputMeta$study_id==std)[1],
fileSampleSize=fileSampleSize,
excludeTransformParameters=excludeTransformParameters)
# 5) outputting resuts
flowCore::write.FCS(fcs,filename=file.path(outpath,paste0(std,".fcs")))
antibodies=markerFinder(fcs)
antibodies=paste(antibodies,collapse="|")
fcs_param=rbind(fcs_param,data.frame("fcs_files"=fcs_files,"study_id"=std,"antibodies"=antibodies))
}
fcs_param=cbind("fcs_names"=fcs_names,fcs_param)
write.csv(fcs_param,file.path(outpath,"processed_sample_summary.csv"),row.names=FALSE)
cat("Preprocess result stored in the folder:",outpath, "\n")
}#end of function
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.