#' Parse bionavigator crosstab files
#'
#' Main function that parses bionavigator crosstab view files. Takes in path
#' to file and type (either Signal or SignalSaturation)
#'
#' @param file_path path to BN crosstab file
#' @param type Name of the value (either Signal or SignalSaturation)
#'
#' @return tbl_df
#'
#' @export
#'
#' @examples
#' TRUE
parse_BN_crosstabFile <- function(file_path, type = c(
"Signal",
"SignalSaturation"
)) {
# Parse a BN crosstab file
# Created 2020-02-14
# Last Updated 2020-02-14
df <- utils::read.csv(file_path,
sep = "\t", header = F, stringsAsFactors = F
)
meta_rows <- which(df[, 1] == "")
epmty_col <- which(df[meta_rows[1], ] == "")
meta_info <- df[meta_rows, (epmty_col[length(epmty_col)] + 1):ncol(df)]
rows_end <- nrow(df)
rows_start <- meta_rows[(length(meta_rows))] + 2
data <- df[rows_start:rows_end, ]
data <- data[, c(1, (epmty_col[length(epmty_col)] + 2):ncol(data))]
df2 <- data.frame(t(data[-1]), stringsAsFactors = F)
colnames(df2) <- data[, 1]
colnames(df2) <- make.unique(colnames(df2))
df3 <- data.frame(t(meta_info[-1]), stringsAsFactors = F)
colnames(df3) <- meta_info[, 1]
cbind(df3, df2) -> df4
df4 %>%
tidyr::pivot_longer(cols = (length(meta_rows) + 1):ncol(.), names_to = "Peptide", values_to = type) -> tidydata
tidydata$`Exposure time` <- as.numeric(tidydata$`Exposure time`)
tidydata$Cycle <- as.numeric(tidydata$Cycle)
if (type == "Signal") {
tidydata$Signal <- as.numeric(tidydata$Signal)
} else {
tidydata$SignalSaturation <- as.numeric(tidydata$SignalSaturation)
}
tidydata %>%
dplyr::rename(
SampleName = `Sample name`,
ExposureTime = `Exposure time`
) -> tidydata
return(tidydata)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.