Я пытаюсь запустить пакет BatchQC и постоянно получаю сообщение об ошибке, но, надеюсь, один из вас, замечательные люди, может помочь.В случае, если формулировка вопроса неоптимальна, пожалуйста, дайте мне знать, как улучшить его, когда вы понизите его.
Я анализирую набор данных протеома и хотел бы получить надлежащий контроль пакетного эффекта, следовательно, использованиеBatchQC.Он отлично работает с данными примера, но всегда выдает ошибку: «Ошибка в if (var (data.matrix [i, batch2 [[j]]]) == 0) {: пропущенное значение там, где требуется TRUE / FALSE», когда япопробуйте прочитать в моих собственных данных.Я попытался отформатировать его точно так же, как в примерах, но он все равно выдает ошибку.
Я загрузил данные и скрипт в gdrive здесь , скрипт также написан ниже.
Я действительно попробовал все решения по аналогичным вопросам в Интернете, но ничего не получилось (убедитесь, что нет NA, все аннотации для всех образцов, квартильная нормализация).Вот мой рабочий процесс:
### Load data
##A gene by sample matrix with gene IDs in the first column and sample IDs as column headers.
diadata_ano <- read.csv("data_processed/anonymized_data/diadata_ano")
expression_matrix_log2 = acast(diadata_ano,
formula=Sample~PG.ProteinAccessions,value.var="Log2Quant",drop=FALSE)
expression_matrix_raw = acast(diadata_ano, formula=Sample~PG.ProteinAccessions,value.var="PG.Quantity",drop=FALSE)
sample_matrix_raw <- t(expression_matrix_raw) #first col = uniprot ID, column headers = sample ID
#does matrix contain NA?
anyNA(sample_matrix_raw) #no NA in matrix
##A metadata file with sample IDs in the first column and information about the samples in the remainder.
#It should include the suspected batch variables, such as Sequencing Platform, Data, Biopsy Site, etc., as well as your classifier (e.g. tumor type).
annotation_ano <-
read.csv("data_processed/anonymized_data/annotation_ano")
#isolate data of interest:
#of biological importance is: status (HD vs diseased), Causative.gene
#potential confounders: eg Family, Sample.origin, Individual.origin, Date.processed_y_m_d
metadata <- annotation_ano %>% select(Sample_ID, status,
Causative.gene, Family, Individual.origin, Date.processed_y_m_d)
#any NA in metadata?
anyNA(metadata) #no NA in metadata
#are all samples in metadata and expression matrix the same?
metadata$Sample_ID %in% colnames(sample_matrix_raw)
###run
#source("https://bioconductor.org/biocLite.R")
#biocLite(c("BatchQC"))
library(BatchQC)
#try with data processed
batch_me = metadata$Date.processed_y_m_d
condition_me = metadata$status
batchQC(dat=sample_matrix_raw, batch=batch_me, condition=condition_me,
report_file="batchqc_report.html", report_dir=".",
report_option_binary="111111111",
view_report=TRUE, interactive=TRUE, batchqc_output=TRUE)
#throws an error: Error in if (var(data.matrix[i, batch2[[j]]]) == 0){ : missing value where TRUE/FALSE needed
##trying to get rid of error
#1) try quantile normalization as this is used in tutorial
library(preprocessCore)
sample_matrix_raw_normQ <- normalize.quantiles(sample_matrix_raw)
colnames(sample_matrix_raw_normQ) = colnames(sample_matrix_raw)
metadata$Sample_ID %in% colnames(sample_matrix_raw_normQ)
#2) convert batch and conditions into numerics (like in examples)
batch_nr = as.numeric(metadata$Date.processed_y_m_d)
condition_nr = as.numeric(metadata$Causative.gene)
batchQC(dat=sample_matrix_raw_normQ, batch=batch_nr, condition=condition_nr,
report_file="batchqc_report.html", report_dir=".",
report_option_binary="111111111",
view_report=TRUE, interactive=TRUE, batchqc_output=TRUE)
#same error.
#3) round values in expression matrix
sample_matrix_raw_normQ_round <- round(sample_matrix_raw_normQ, digits = 0)
row.names(sample_matrix_raw_normQ_round) <- row.names(sample_matrix_raw)
batchQC(dat=sample_matrix_raw_normQ_round, batch=batch, condition=condition,
report_file="batchqc_report.html", report_dir=".",
report_option_binary="111111111",
view_report=TRUE, interactive=TRUE, batchqc_output=TRUE)
#still same error!
#WHAT AM I MISSING???
#########
#Examples from vignette
#Example1: simulated data
nbatch <- 3
ncond <- 2
npercond <- 10
data.matrix <- rnaseq_sim(ngenes=50, nbatch=nbatch, ncond=ncond, npercond=
npercond, basemean=10000, ggstep=50, bbstep=2000, ccstep=800,
basedisp=100, bdispstep=-10, swvar=1000, seed=1234)
batch_ex1 <- rep(1:nbatch, each=ncond*npercond)
condition_ex1 <- rep(rep(1:ncond, each=npercond), nbatch)
batchQC(data.matrix, batch=batch_ex1, condition=condition_ex1,
report_file="batchqc_report.html", report_dir=".",
report_option_binary="111111111",
view_report=FALSE, interactive=TRUE, batchqc_output=TRUE)
#works fine!
##Example 2
data (example_batchqc_data)
batch_ex2 <- batch_indicator$V1
condition_ex2 <- batch_indicator$V2
batchQC(signature_data, batch=batch_ex2, condition=condition_ex2,
report_file="batchqc_signature_data_report.html", report_dir=".",
report_option_binary="111111111",
view_report=FALSE, interactive=TRUE)
#works fine!
##Example 3
library(bladderbatch)
data(bladderdata)
pheno <- pData(bladderEset)
edata <- exprs(bladderEset)
batch <- pheno$batch
condition <- pheno$cancer
batchQC(edata, batch=batch, condition=condition,
report_file="batchqc_report.html", report_dir=".",
report_option_binary="111111111",
view_report=FALSE, interactive=TRUE)
#works fine!
Большое спасибо за вашу помощь!Себастьян