Skip to content

Commit 8ae858c

Browse files
committed
check of paired data implemented
1 parent 889b474 commit 8ae858c

File tree

3 files changed

+51
-9
lines changed

3 files changed

+51
-9
lines changed

DESCRIPTION

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Package: IgGeneUsage
22
Type: Package
33
Title: Differential gene usage in immune repertoires
4-
Version: 1.17.22
4+
Version: 1.17.23
55
Authors@R:
66
person(given = "Simo",
77
family = "Kitanovski",

R/dgu.R

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ DGU <- function(ud,
2929
m <- get_model(has_conditions = ud$has_conditions,
3030
has_replicates = ud$has_replicates,
3131
has_balanced_replicates = ud$has_balanced_replicates,
32+
has_paired_data = ud$has_paired_data,
3233
paired = paired)
3334

3435
# fit model

R/utils_usage.R

+49-8
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,34 @@ get_usage <- function(u) {
3131
condition_names = condition_names))
3232
}
3333

34+
check_paired <- function(u,
35+
has_balanced_replicates,
36+
has_replicates,
37+
has_condition) {
38+
if(has_condition==FALSE) {
39+
return(FALSE)
40+
}
41+
if(has_balanced_replicates==FALSE) {
42+
return(FALSE)
43+
}
44+
45+
if(has_replicates) {
46+
q <- u[duplicated(u[,c("individual_id","condition","replicate")])==FALSE,]
47+
q$f <- 1
48+
q <- aggregate(f~individual_id+condition+replicate, data = q,
49+
FUN = sum, simplify = FALSE, drop = FALSE)
50+
q$f[is.null(q$f)|is.na(q$f)] <- 0
51+
return(ifelse(test = any(q$f!=1), yes = FALSE, no = TRUE))
52+
}
53+
else {
54+
q <- u[duplicated(u[,c("individual_id", "condition")])==FALSE,]
55+
q$f <- 1
56+
q <- aggregate(f~individual_id+condition, data = q, FUN = sum,
57+
simplify = FALSE, drop = FALSE)
58+
q$f[is.null(q$f)|is.na(q$f)] <- 0
59+
return(ifelse(test = any(q$f!=1), yes = FALSE, no = TRUE))
60+
}
61+
}
3462

3563
u$individual_org_name <- u$individual_id
3664
if("replicate" %in% colnames(u)) {
@@ -124,6 +152,14 @@ get_usage <- function(u) {
124152
individual_names = individual_names,
125153
m = m)
126154

155+
has_conditions <- max(cos$condition_ids)>1
156+
157+
has_paired_data <- check_paired(
158+
u = u,
159+
has_balanced_replicates = has_balanced_replicates,
160+
has_replicates = has_replicates,
161+
has_condition = has_condition)
162+
127163
return(list(Y = Y,
128164
N = as.numeric(N),
129165
N_sample = ncol(Y),
@@ -145,23 +181,26 @@ get_usage <- function(u) {
145181
N_replicate = max(replicate_ids),
146182
proc_ud = u,
147183
has_replicates = has_replicates,
148-
has_conditions = max(cos$condition_ids)>1,
149-
has_balanced_replicates = has_balanced_replicates))
184+
has_conditions = has_conditions,
185+
has_balanced_replicates = has_balanced_replicates,
186+
has_paired_data = has_paired_data))
150187
}
151188

152-
153-
154189
# Description:
155190
# get the appropriate model
156-
get_model <- function(has_replicates,
157-
has_conditions,
158-
has_balanced_replicates,
191+
get_model <- function(has_replicates,
192+
has_conditions,
193+
has_balanced_replicates,
194+
has_paired_data,
159195
paired) {
160196

161197
model_type <- ifelse(test = has_conditions, yes = "DGU", no = "GU")
162198

163199
if(paired == TRUE & has_balanced_replicates == FALSE) {
164-
stop("For paired analysis with replicates, you need balanced replicates!")
200+
stop("For paired analysis with replicates, you need balanced replicates")
201+
}
202+
if(paired == TRUE & has_paired_data == FALSE) {
203+
stop("paired data selected, but data is not paired")
165204
}
166205

167206
if(model_type == "GU") {
@@ -229,6 +268,8 @@ get_model <- function(has_replicates,
229268
pars = pars,
230269
has_replicates = has_replicates,
231270
has_conditions = has_conditions,
271+
has_balanced_replicates = has_balanced_replicates,
272+
has_paired_data = has_paired_data,
232273
paired = paired))
233274
}
234275

0 commit comments

Comments
 (0)