Проблема с использованием пакета BatchQT: матрица не может быть прочитана («отсутствует значение, где требуется TRUE / FALSE») - PullRequest
0 голосов
/ 24 октября 2018

Я пытаюсь запустить пакет 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!

Большое спасибо за вашу помощь!Себастьян

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...