Skip to content

Commit 1ea8e68

Browse files
committed
commit bugfix
1 parent 8f81e81 commit 1ea8e68

11 files changed

+85
-72
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.20
4+
Version: 1.17.21
55
Authors@R:
66
person(given = "Simo",
77
family = "Kitanovski",

R/dgu.R

+1-2
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@ DGU <- function(ud,
1818
hdi_lvl = hdi_lvl,
1919
paired = paired)
2020

21-
udr <- ud
22-
ud <- get_usage(u = udr)
21+
ud <- get_usage(u = ud)
2322

2423
# setup control list
2524
control_list <- list(adapt_delta = adapt_delta,

R/utils_dgu.R

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
get_contrast_map <- function(ud) {
22
# condition map
3-
condition_map <- data.frame(condition_name = ud$condition_names,
4-
condition_id = ud$condition_id)
3+
condition_map <- data.frame(condition_name = ud$condition_name_of_sample,
4+
condition_id = ud$condition_id_of_sample)
55
condition_map <- condition_map[duplicated(condition_map)==FALSE,]
66
rownames(condition_map) <- condition_map$condition_id
77

R/utils_gu.R

+2-2
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ get_condition_prop_dgu <- function(glm, hdi_lvl, ud) {
3737
gu_summary$condition <- NA
3838
for(i in 1:ud$N_condition) {
3939
gu_summary$condition[which(gu_summary$condition_id == i)]<-
40-
ud$condition_names[which(ud$condition_id == i)[1]]
40+
ud$condition_name_of_sample[which(ud$condition_id_of_sample == i)[1]]
4141
}
4242

4343
# remove unused vars
@@ -71,7 +71,7 @@ get_condition_prop_gu <- function(glm, hdi_lvl, ud) {
7171

7272
gu_summary$gene_id <- as.numeric(par)
7373
gu_summary$gene_name <- ud$gene_names[gu_summary$gene_id]
74-
gu_summary$condition <- ud$condition_names[1]
74+
gu_summary$condition <- ud$condition_name_of_sample[1]
7575

7676
# remove unused vars
7777
gu_summary$gene_id <- NULL

R/utils_usage.R

+44-24
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,36 @@
22
# Description
33
# Parse input data for GU analysis
44
get_usage <- function(u) {
5+
6+
get_condition_of_sample <- function(sample_ids,
7+
m) {
8+
# condition at sample
9+
condition_names <- character(length = length(sample_ids))
10+
for(i in 1:length(sample_ids)) {
11+
condition_names[i] <- m$condition[m$sample_id == sample_ids[i]]
12+
}
13+
condition_ids <- as.numeric(as.factor(condition_names))
14+
15+
return(list(condition_ids = condition_ids,
16+
condition_names = condition_names))
17+
}
18+
19+
get_condition_of_individual <- function(individual_ids,
20+
individual_names,
21+
m) {
22+
# condition at individual
23+
condition_names <- character(length = max(individual_ids))
24+
for(i in 1:max(individual_ids)) {
25+
q <- individual_names[individual_ids==i][1]
26+
condition_names[i] <- m$condition[m$individual_id == q][1]
27+
}
28+
condition_ids <- as.numeric(as.factor(condition_names))
29+
30+
return(list(condition_ids = condition_ids,
31+
condition_names = condition_names))
32+
}
33+
34+
535
u$individual_org_name <- u$individual_id
636
if("replicate" %in% colnames(u)) {
737

@@ -89,32 +119,22 @@ get_usage <- function(u) {
89119
tr <- table(replicate_ids)
90120
has_balanced_replicates <- ifelse(test = all(tr==tr[1]), yes=TRUE, no=FALSE)
91121

92-
if(has_replicates) {
93-
# condition at individual
94-
condition_names <- character(length = max(individual_ids))
95-
for(i in 1:max(individual_ids)) {
96-
q <- individual_names[individual_ids==i][1]
97-
condition_names[i] <- m$condition[m$individual_id == q][1]
98-
}
99-
condition_ids <- as.numeric(as.factor(condition_names))
100-
} else {
101-
# condition at sample
102-
condition_names <- character(length = length(sample_ids))
103-
for(i in 1:length(sample_ids)) {
104-
condition_names[i] <- m$condition[m$sample_id == sample_ids[i]]
105-
}
106-
condition_ids <- as.numeric(as.factor(condition_names))
107-
}
122+
cos <- get_condition_of_sample(sample_ids = sample_ids, m = m)
123+
coi <- get_condition_of_individual(individual_ids = individual_ids,
124+
individual_names = individual_names,
125+
m = m)
108126

109127
return(list(Y = Y,
110128
N = as.numeric(N),
111129
N_sample = ncol(Y),
112130
N_gene = nrow(Y),
113131
gene_names = gene_names,
114132
sample_names = sample_ids,
115-
condition_id = condition_ids,
116-
condition_names = condition_names,
117-
N_condition = max(condition_ids),
133+
condition_id_of_sample = cos$condition_ids,
134+
condition_name_of_sample = cos$condition_names,
135+
condition_id_of_individual = coi$condition_ids,
136+
condition_name_of_individual = coi$condition_names,
137+
N_condition = max(cos$condition_ids),
118138
individual_id = individual_ids,
119139
individual_names = individual_names,
120140
individual_org_names = individual_org_names,
@@ -125,10 +145,12 @@ get_usage <- function(u) {
125145
N_replicate = max(replicate_ids),
126146
proc_ud = u,
127147
has_replicates = has_replicates,
128-
has_conditions = max(condition_ids)>1,
148+
has_conditions = max(cos$condition_ids)>1,
129149
has_balanced_replicates = has_balanced_replicates))
130150
}
131151

152+
153+
132154
# Description:
133155
# get the appropriate model
134156
get_model <- function(has_replicates,
@@ -173,10 +195,8 @@ get_model <- function(has_replicates,
173195
if(paired) {
174196
model <- stanmodels$dgu_paired_rep
175197
pars <- c("phi", "kappa", "alpha",
176-
"sigma_condition", "sigma_individual", "sigma_alpha",
177-
"sigma_alpha_rep", "sigma_beta_rep",
178-
"alpha_sample", "beta_sample",
179-
"alpha_individual", "beta_individual",
198+
"sigma_condition", "sigma_individual", "sigma_beta_rep",
199+
"mu_individual", "beta_sample", "beta_individual",
180200
"beta_condition",
181201
"Yhat_rep", "Yhat_rep_prop", "Yhat_condition_prop",
182202
"log_lik", "dgu", "dgu_prob", "theta")

inst/stan/dgu.stan

+8-11
Original file line numberDiff line numberDiff line change
@@ -28,19 +28,16 @@ functions {
2828
}
2929

3030
data {
31-
int<lower=0> N_sample; // number of repertoires
32-
int<lower=0> N_gene; // gene
33-
int<lower=0> N_individual; // number of individuals
34-
int<lower=0> N_condition; // number of conditions
35-
array [N_sample] int N; // number of tries (repertoire size)
36-
array [N_gene, N_sample] int Y; // number of heads for each coin
37-
array [N_sample] int condition_id; // id of conditions
38-
array [N_sample] int individual_id; // id of replicate
31+
int<lower=0> N_sample; // # samples
32+
int<lower=0> N_gene; // # genes
33+
int<lower=0> N_condition; // # conditions
34+
array [N_sample] int N; // rep size
35+
array [N_gene, N_sample] int Y; // gene usage
36+
array [N_sample] int condition_id_of_sample; // sample condition id
3937
}
4038

4139
transformed data {
42-
// convert int N -> real N fo convenient division
43-
// in generated quantities block
40+
// convert int to real N for convenient division
4441
array [N_sample] real Nr;
4542
Nr = N;
4643
}
@@ -68,7 +65,7 @@ transformed parameters {
6865
}
6966

7067
for(i in 1:N_sample) {
71-
beta_individual[i] = beta_condition[condition_id[i]] + sigma_individual[condition_id[i]] * z_beta_individual[i];
68+
beta_individual[i] = beta_condition[condition_id_of_sample[i]] + sigma_individual[condition_id_of_sample[i]] * z_beta_individual[i];
7269
theta[i] = inv_logit(alpha + beta_individual[i]);
7370
}
7471
}

inst/stan/dgu_paired.stan

+9-9
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,14 @@ functions {
2828
}
2929

3030
data {
31-
int<lower=0> N_sample; // number of repertoires
32-
int<lower=0> N_gene; // gene
33-
int<lower=0> N_individual; // number of individuals
34-
int<lower=0> N_condition; // number of conditions
35-
array [N_sample] int N; // number of tries
36-
array [N_gene, N_sample] int Y; // number of heads for each coin
37-
array [N_sample] int condition_id; // id of conditions
38-
array [N_sample] int individual_id; // id of replicate
31+
int<lower=0> N_sample; // # samples
32+
int<lower=0> N_gene; // # genes
33+
int<lower=0> N_individual; // # individuals
34+
int<lower=0> N_condition; // # conditions
35+
array [N_sample] int N; // rep size
36+
array [N_gene, N_sample] int Y; // gene usage
37+
array [N_sample] int condition_id_of_sample; // condition of sample
38+
array [N_sample] int individual_id; // individual id
3939
}
4040

4141
transformed data {
@@ -70,7 +70,7 @@ transformed parameters {
7070
}
7171

7272
for(i in 1:N_sample) {
73-
theta[i] = inv_logit(alpha + beta_individual[individual_id[i]] + beta_condition[condition_id[i]]);
73+
theta[i] = inv_logit(alpha + beta_individual[individual_id[i]] + beta_condition[condition_id_of_sample[i]]);
7474
}
7575
}
7676

inst/stan/dgu_paired_rep.stan

+9-9
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,14 @@ functions {
2828
}
2929

3030
data {
31-
int<lower=0> N_sample; // number of repertoires
32-
int<lower=0> N_gene; // gene
33-
int<lower=0> N_individual; // number of individuals
34-
int<lower=0> N_condition; // number of conditions
35-
array [N_sample] int N; // number of tries
36-
array [N_gene, N_sample] int Y; // number of heads for each coin
37-
array [N_sample] int condition_id; // id of conditions
38-
array [N_sample] int individual_id; // id of replicate
31+
int<lower=0> N_sample; // # samples
32+
int<lower=0> N_gene; // # genes
33+
int<lower=0> N_individual; // # individuals
34+
int<lower=0> N_condition; // # conditions
35+
array [N_sample] int N; // rep size
36+
array [N_gene, N_sample] int Y; // gene usage
37+
array [N_sample] int condition_id_of_sample; // condition of sample
38+
array [N_sample] int individual_id; // replicate id
3939
}
4040

4141
transformed data {
@@ -73,7 +73,7 @@ transformed parameters {
7373

7474
for(i in 1:N_sample) {
7575
beta_sample[i] = beta_individual[individual_id[i]] + sigma_beta_rep * z_beta_sample[i];
76-
theta[i] = inv_logit(alpha + beta_sample[i] + beta_condition[condition_id[i]]);
76+
theta[i] = inv_logit(alpha + beta_sample[i] + beta_condition[condition_id_of_sample[i]]);
7777
}
7878
}
7979

inst/stan/dgu_rep.stan

+9-9
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,14 @@ functions {
2828
}
2929

3030
data {
31-
int<lower=0> N_sample; // number of repertoires
32-
int<lower=0> N_gene; // gene
33-
int<lower=0> N_individual; // number of individuals
34-
int<lower=0> N_condition; // number of conditions
35-
array [N_sample] int N; // number of tries (repertoire size)
36-
array [N_gene, N_sample] int Y; // number of heads for each coin
37-
array [N_individual] int condition_id; // id of conditions
38-
array [N_sample] int individual_id; // id of replicate
31+
int<lower=0> N_sample; // # samples
32+
int<lower=0> N_gene; // # genes
33+
int<lower=0> N_individual; // # individuals
34+
int<lower=0> N_condition; // # conditions
35+
array [N_sample] int N; // rep size
36+
array [N_gene, N_sample] int Y; // gene usage size
37+
array [N_individual] int condition_id_of_individual; // id of conditions
38+
array [N_sample] int individual_id; // id of replicate
3939
}
4040

4141
transformed data {
@@ -70,7 +70,7 @@ transformed parameters {
7070
}
7171

7272
for(i in 1:N_individual) {
73-
beta_individual[i] = beta_condition[condition_id[i]] + sigma_individual[condition_id[i]] * z_beta_individual[i];
73+
beta_individual[i] = beta_condition[condition_id_of_individual[i]] + sigma_individual[condition_id_of_individual[i]] * z_beta_individual[i];
7474
}
7575

7676
for(i in 1:N_sample) {

inst/stan/gu.stan

-2
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,6 @@ functions {
3030
data {
3131
int<lower=0> N_sample; // number of repertoires
3232
int<lower=0> N_gene; // gene
33-
int<lower=0> N_individual; // number of individuals
34-
int<lower=0> N_condition; // number of conditions
3533
array [N_sample] int N; // number of tries (repertoire size)
3634
array [N_gene, N_sample] int Y; // number of heads for each coin
3735
}

inst/stan/gu_rep.stan

-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ data {
3131
int<lower=0> N_sample; // number of repertoires
3232
int<lower=0> N_gene; // gene
3333
int<lower=0> N_individual; // number of individuals
34-
int<lower=0> N_condition; // number of conditions
3534
array [N_sample] int N; // number of tries (repertoire size)
3635
array [N_gene, N_sample] int Y; // number of heads for each coin
3736
array [N_sample] int individual_id; // id of replicate

0 commit comments

Comments
 (0)