# Common Analysis Patterns Multi-factor designs, contrasts, interaction terms, continuous covariates, and paired or batch-aware designs. ## Common Analysis Patterns ### Two-Group Comparison Standard case-control comparison: ```python dds = DeseqDataSet(counts=counts_df, metadata=metadata, design="~condition") dds.deseq2() ds = DeseqStats(dds, contrast=["condition", "treated", "control"]) ds.summary() results = ds.results_df significant = results[results.padj < 0.05] ``` ### Multiple Comparisons Testing multiple treatment groups against control: ```python dds = DeseqDataSet(counts=counts_df, metadata=metadata, design="~condition") dds.deseq2() treatments = ["treatment_A", "treatment_B", "treatment_C"] all_results = {} for treatment in treatments: ds = DeseqStats(dds, contrast=["condition", treatment, "control"]) ds.summary() all_results[treatment] = ds.results_df sig_count = len(ds.results_df[ds.results_df.padj < 0.05]) print(f"{treatment}: {sig_count} significant genes") ``` ### Accounting for Batch Effects Control for technical variation: ```python # Include batch in design dds = DeseqDataSet(counts=counts_df, metadata=metadata, design="~batch + condition") dds.deseq2() # Test condition while controlling for batch ds = DeseqStats(dds, contrast=["condition", "treated", "control"]) ds.summary() ``` ### Continuous Covariates Include continuous variables like age or dosage: ```python # Ensure continuous variable is numeric metadata["age"] = pd.to_numeric(metadata["age"]) dds = DeseqDataSet(counts=counts_df, metadata=metadata, design="~age + condition") dds.deseq2() ds = DeseqStats(dds, contrast=["condition", "treated", "control"]) ds.summary() ```