If counts are normalized and log-transformed so that they have roughly a "normal" distribution, can I take the mean of biological replicates to consolidate them to a family average? I know that log transformation of numbers are not additive so that:
log2(raw_count) = 2^(log2)
However given that I've removed technical variation and transformed counts to be in a roughly normal distribution it seems that by averaging this information I'm creating a new variable which may be more powerful:
Ex: Say after normalization I have 2 biological replicates with the following log2 values at a single transcript:
(bio.rep1 = 0, bio.rep2 = 3)
If I exponentiate counts, then take mean
2^(0) + 2^(3) = 1 + 8 = 9 / 2 = 4.5
if using the normalized values:
0 + 3 = 3/2 = 1.5
0 answers
No answers yet.
Log in to answer this question.
More powerful for what? What is your intent in averaging over biological replicates? How did you remove technical variation? Did you take into account different library sizes?
May be more powerful in helping to identify family transcript levels which impact a continuous phenotype. My phenotypes are on a family basis and so I'd like to consolidate the biological replicates to build a model and make predictions.
Technical variation was removed by log-transforming the technical replicates and running a linear mixed model which accounted for lane, index, and pedigree structure. The random effects returned from the model were added to back to the intercept and represent the "normalized" log2 counts for biological replicates.
Following the hypothesis that each family shares a general underlying genetic architecture, the biological replicates within a family should tend to have more similar gene expression within than among (when compared to other families)..so I am curious if I can just take the mean of these normally distributed counts.
Doh!
I just realized that since I am getting my counts returned from the random effects part of my mixed model...I can change my pedigree covariance matrix to be at the family level instead of biological.
So whereas previously using the R function mmer2 from the sommer package I was running:
mmer2(fixed = y ~ lane.id + index ,random = ~ gbio.id) , G = listbio.id=A.bio.reps), data = data)
..And now:
mmer2(fixed = y ~ lane.id + index ,random = ~ g(ID) , G = list(ID=A.fam), data = data)
WHERE:
y = log2(txpt_vector) of length technical replicates
lane.id and index.id = two vectors containing lane and index fo technical replicates
ID and bio.id = the family ID or the biological replicate ID
A.bio.reps and A.fam = covariance matrix composed of either the biological reps or family level relationship
The model output contains random effects equivalent to the length of the columns in the covariance matrix.
Hello arf1389!
We believe that this post does not fit the main topic of this site.
got the solution.
For this reason we have closed your question. This allows us to keep the site focused on the topics that the community can help with.
If you disagree please tell us why in a reply below, we'll be happy to talk about it.
Cheers!