I have been tackling this issue for some time now. I have a dataset which has 20 patients and 40 samples (the samples are paired). There are two timepoints that I am checking differential expression for (eg. TP1 & TP2). However 11 of these patients are in one sequencing batch (B1) and the remaining 9 are in another batch (B2). In DESeq2 Vignette in the section "Model matrix not full rank" there is a part titled "Group-specific condition effects, individuals nested within groups" which explains how you can control for this type of situation. I have tried applying the design matrix as follows: (batch + batch:ba.pi + batch:condition) where ba.pi is the distinguisher of the individuals in the nested loop, but I got the same error. I have discarded 2 random samples from B1 and tried it again whicm made it work. I contemplated using ComBat to the normalized log2 converted DESeq2 counts seperately batch correct the two conditions and then do a t-test between the two groups but I am not sure if this is applicable. I would appreciate any input regarding this matter. The author's have seperately normalized the batches and worked with the common DEGs.