# DGEAR 0.2.1

### Breaking changes

- `read_and_preprocess_data()` has been removed. Its responsibilities are now
  handled internally by each test function via the new `.prepare_data()` helper
  in `utils.R`. Existing scripts that called this function directly must be
  updated to pass `dataframe`, `con1`, `con2`, `exp1`, `exp2` to the test
  functions or to `DGEAR()` instead.

### New features

- **Unified function interface**: all five test functions
  (`perform_t_test`, `perform_anova`, `perform_dunnett_test`,
  `perform_h_test`, `perform_wilcox_test`) now share a consistent signature:
  `(dataframe, con1, con2, exp1, exp2, alpha = 0.05, annot_df = NULL)`.

- **Optional gene annotation** (`annot_df`): users may supply a GEO SOFT-style
  annotation `data.frame` with columns `ID` and `Gene.Symbol` (or
  `Gene.symbol`) to map probe row names to gene symbols. When `annot_df = NULL`
  (the default), row names of `dataframe` are used directly — making the
  package fully usable without any annotation file.

- **Richer `DGEAR()` return value**: the main function now returns a named list
  with four elements:
  - `DEGs` — genes that passed majority voting
  - `FDR_Table` — per-test BH-adjusted p-values, Fisher-combined FDR,
    ensemble voting score, and log2FC for every gene
  - `Results_Table` — concise summary (G_Symbol, CombineFDR, log2FC, Ensemble)
  - `IndividualTests` — raw `Table` and `DEGs` output from each of the five
    test functions

- **Fisher's combined p-value**: `DGEAR()` now computes a combined p-value
  across all five tests using `metapod::parallelFisher` and includes it as
  `CombineFDR` in `FDR_Table` and `Results_Table`.

- **Internal helpers in `utils.R`**: `.prepare_data()` centralises log2
  normalisation and `.resolve_symbols()` centralises gene symbol resolution,
  eliminating code duplication across test files.

- **Defensive Dunnett test**: `perform_dunnett_test()` now silently assigns
  `NA` p-values to genes with zero variance, `NA` values, or infinite values,
  rather than throwing an error that would abort the full analysis.

- **Input validation in `DGEAR()`**: informative `stop()` messages are raised
  for invalid column ranges, `alpha` outside (0, 1), or `votting_cutoff`
  outside 1–5.

- **82-test testthat suite**: `tests/testthat/` now contains 7 test files
  covering structure, value sanity, biological correctness, defensive handling,
  alpha/cutoff sensitivity, and annotation behaviour for every exported
  function.

- **Interactive demo script**: `inst/examples/DGEAR_demo.R` is a fully
  annotated walkthrough callable via
  `source(system.file("examples", "DGEAR_demo.R", package = "DGEAR"))`.

### Bug fixes

- Eliminated the `R CMD check` NOTE *"no visible binding for global variable
  'G_Symbol'"* by removing all reliance on globally defined annotation vectors.
  Gene symbols are now always resolved locally inside each function.

- Removed `library(DGEAR)` from all `\examples{}` blocks in `.Rd` files;
  `R CMD check` loads the package automatically, so the call caused an error.

- Wrapped `perform_dunnett_test()` examples in `\donttest{}` to prevent
  `R CMD check` failures from the `DescTools::DunnettTest` external dependency
  in constrained check environments.

- `fdr` columns are now consistently typed as `integer` (0L / 1L) rather than
  a mix of `NA` and numeric 1.

---

# DGEAR 0.1.4

### Development version (0.1.3.9001) — changes after first release

- Improved FDR method across all statistical test functions.
- Improved function return types: each test now returns a list of two elements,
  the full statistical table and the significant genes.
- BH-adjusted FDR values for each test are now shown in a column named `BH`.

### Changes in 0.1.4.9000

- `perform_h_test()`: removed the `FC` parameter; fold-change is now computed
  internally from the data.
- `perform_wilcox_test()`: internal improvements.

---

# DGEAR 0.0.0.9000

### NEWS.md setup

- Added `NEWS.md` with [newsmd](https://github.com/Dschaykib/newsmd).