# How to Use NCBI GEO2R to Compare Gene Expression Between Conditions

By the end of this NCBI GEO2R tutorial you will be able to find a suitable expression dataset in the NCBI [Gene Expression Omnibus](/blog/guides/gene-expression-omnibus), split its samples into biological groups, run a moderated statistical comparison between those groups in your browser, read the resulting table of differentially expressed genes, and export both the results and a reusable R script. You need nothing installed to follow the core workflow. A modern web browser is enough. If you want to reproduce or extend the analysis afterward, you will want R (version 4.x or newer), RStudio, and three packages from Bioconductor: Biobase, GEOquery, and limma.

GEO2R sits in a sweet spot between two extremes. At one extreme is point-and-click browsing of someone else's heatmap, which teaches you nothing about how the numbers were produced. At the other extreme is downloading raw FASTQ files from the Sequence Read Archive and running a full pipeline with SRA Toolkit, FastQC, HISAT2, and DESeq2, which is powerful but demands command-line skills, compute, and time [1], [2]. GEO2R gives you a genuine limma-based statistical test on published sample-level data in about five minutes, and it hands you the exact R code so the analysis is reproducible.

This guide is a practical ncbi geo2r tutorial step by step, with the parameter explanations, expected outputs, tips, and common mistakes that most quick summaries skip.

## Where GEO2R Fits in the NCBI Databases

If you are still learning how to use NCBI, it helps to place GEO in context. The National Center for Biotechnology Information maintains a family of linked databases: PubMed for literature, Gene for gene records, SRA for raw sequencing reads, and GEO for curated [gene expression](/blog/guides/gene-expression) data. GEO holds submitted series, each with an accession such as GSE followed by digits. A series is a complete experiment, for example ten tumor samples and ten matched normal samples profiled on one platform. Each individual sample carries a GSM accession, and each series points to one or more platforms (GPL accessions) that define the measured genes or transcripts.

Researchers use GEO constantly as the substrate for secondary analysis. Recent examples include differential expression between autism spectrum disorder and typically developing control brain samples [3], pooled analysis of eight pancreatic ductal adenocarcinoma series to find reproducible hub genes [4], and retrieval of bulk and single-cell RNA-seq data from the NCBI GEO database for traumatic brain injury studies [5]. Data Brief-style dataset papers also deposit new series with explicit accession numbers, such as GSE293032 for a panel of iPSC-derived hepatocytes [6] or GSE319292 for larval zebrafish exposed to uranyl nitrate and sodium arsenite [7], specifically so that others can reuse the data in analyses like the one described here.

GEO2R is the built-in analysis button on those series pages. It runs a comparison between the sample groups you define, using the R package limma and the empirical Bayes moderated t-statistic, and returns a ranked gene table in your browser.

## When GEO2R Is the Right Tool (and When It Is Not)

GEO2R works when a series contains expression values for individual samples, either as normalized microarray intensities or, for many newer series, as a gene-by-sample count matrix. It does not work on series where the submitter only deposited averaged values per condition, and it is not the tool for raw RNA-seq reads.

If your question requires analysis of raw FASTQ files, quality trimming, alignment to a reference genome, and transcript-level counting, you need a pipeline rather than GEO2R. Published protocols describe that route in detail, combining SRA Toolkit for download, FastQC for quality control, Trimmomatic for trimming, HISAT2 or BWA for alignment, Samtools for file conversion, and Subread's featureCounts for counting reads before differential testing with pyDESeq2 or DESeq2 [1], [2]. Plan on that workflow when you need splice-aware quantification, novel transcripts, or sample-level quality metrics that the deposited matrix cannot tell you.

A middle case deserves a note. Modern GEO2R recognizes RNA-seq series that contain a count matrix at the sample level and applies the voom transformation from limma, which converts counts to log2 counts per million with associated precision weights before linear modeling. The statistical framework is sound, but you are still analyzing a processed matrix the submitter deposited. If the counts came from an unusual library protocol, such as the strand-specific, 3′ end-focused QuantSeq kit used in a maize mycorrhiza dataset with three biological replicates per genotype by treatment combination [8], read the series description carefully so you know what the numbers actually represent.

## Finding a Series Worth Analyzing

![Path from a GEO search through design, replicates and sample-level data to either running GEO2R or picking another series.](/article-images/illustrations/ncbi-geo2r-tutorial-series-vetting.webp)

Before any statistics, you need a well-designed series. Five minutes of vetting prevents hours of confusion later.

1. Go to the GEO site and use the search box, or search GEO DataSets from the main NCBI search bar. Filter by "Expression profiling by array" or "Expression profiling by high throughput sequencing" depending on your interest.
2. Open a candidate series and read the Summary, Overall design, and Supplementary file fields. Look for the three things that make a GEO2R analysis meaningful: at least two biologically defined conditions, multiple independent biological replicates per condition (three is the practical floor, more is better), and a series matrix with one column per sample.
3. Check the Samples table. Each row should be one biological sample with a clear title such as "tumor_rep1" or "control_male_aged_54". Ambiguous titles are a red flag you will deal with again at group assignment time.
4. Confirm that the gray "Analyze with GEO2R" button appears on the series home page. It appears only when the series contains the sample-level data GEO2R needs.

Watch the replicate structure, not just the count. A dataset with two replicates per group, such as two samples per treatment group in an iPSC-derived hepatocyte toxicity study [6], can be run through GEO2R, but with two per group the variance estimate is fragile and the analysis is best treated as exploratory and hypothesis-generating rather than confirmatory.

## GEO2R Tutorial Step by Step

The walkthrough below uses a generic two-group comparison. Substitute your own series and group labels. Every button and option name matches what GEO2R actually shows.

### Step 1: Open the Series and Launch GEO2R

Navigate to the series page for your chosen accession, for example a URL of the form `https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSEnnnnn`. Scroll to the section under the Samples table. You will see a link reading "Analyze with GEO2R". Click it. The page expands into the GEO2R interface, showing three columns: "Define groups", "Options", and the sample list with checkboxes.

Take a moment to read the sample titles before touching anything. GEO2R sometimes pre-selects a guess at two groups based on sample characteristics fields submitted by the authors. Treat that guess as a suggestion to verify, never as a finished assignment.

### Step 2: Define Your Groups

In the "Define groups" box, type the name of your first condition, for example `tumor`, and click the two-column icon so it becomes an active group label. Type your second condition, for example `normal`, and activate it as well.

Now assign samples. Click the checkbox next to each sample that belongs to `tumor`, then click the `tumor` group label to apply it. The selected samples move under that label. Repeat for `normal`. GEO2R records the assignment as a pattern string, one character per sample, where the first group is coded 0 and the second 1.

A clean assignment pattern for six samples, three per group, looks like this conceptually:

```text
Sample order in the series:
GSM1  control_rep1   ->  0
GSM2  control_rep2   ->  0
GSM3  control_rep3   ->  0
GSM4  tumor_rep1     ->  1
GSM5  tumor_rep2     ->  1
GSM6  tumor_rep3     ->  1
```

If your series has more than two conditions, for example wild-type, heterozygous, and knockout, define all of them. GEO2R will fit a linear model over all groups and use an F-test to find genes that differ anywhere among them. For a pairwise question you can also run the comparison in one pass with two groups and repeat with a different pairing.

### Step 3: Review the Options

Before clicking "Top 250" or "Analyze", check the options panel. These are the settings that actually change the statistics.

| Option | What it does | When to change it |
|--|--|--|
| Group labels and assignment pattern | Defines which GSM accessions belong to which biological condition | Always verify sample by sample against the titles and characteristics fields |
| Paired samples checkbox | Tells limma that samples come in matched pairs, such as the same patient before and after treatment, and fits a blocking factor for subject | Use only when the design genuinely pairs samples, for example tumor and adjacent normal from the same patient |
| Sorted option | Produces two lists, one sorted by upregulation and one by downregulation in the second group relative to the first | Useful for building two quick gene lists, one per direction of change |
| Top N genes displayed | Sets how many rows of the ranked table to show, with 250 as the default | Raise it when you plan to download the full table anyway, since the download button exports the complete result regardless |
| P value adjustment | Applies the Benjamini-Hochberg false discovery rate correction across all genes by default | Leave the correction on. The output table reports both the raw and the adjusted value |

Two of these deserve extra explanation. The paired checkbox is the only covariate GEO2R will model for you. If your samples differ systematically in batch, sex, age, or [sequencing depth](/knowledge/diagnostics/molecular/how-to-calculate-sequencing-depth-and-coverage-for-your-ngs-run) in ways that correlate with condition, GEO2R has no field for you to add those covariates, and that limitation shapes the advice in the tips and mistakes sections below. The Benjamini-Hochberg correction controls the expected proportion of false positives among the genes you call significant, which is the number you should be reading when you scan the table.

### Step 4: Run the Analysis and Read the Top Table

Click "Top 250" to run with defaults, or set your preferred display size first. GEO2R submits your groups and options to the server, runs limma, and returns a ranked table. The columns are:

| Column | Meaning |
|--|--|
| ID | Probe or gene identifier from the platform |
| Gene symbol and Gene title | Mapped annotation for the probe |
| adj.P.Val | Benjamini-Hochberg adjusted P value, the primary screening number |
| P.Value | Raw P value from the moderated t-test |
| t | Moderated t-statistic |
| B | Log odds that the gene is differentially expressed |
| logFC | Log2 fold change between the second and first group |
| Group means | Average expression value of the gene in each group |

A representative slice of output, with illustrative values so you can see the shape of a real table:

```text
ID        Symbol  adj.P.Val  P.Value     t       logFC   mean_0  mean_1
202431_s  XIST    0.0031     0.00000042  12.4    -2.87   7.91    5.04
203540_at CDKN2A  0.0044     0.00000110   9.8     1.92   4.11    6.03
207815_s  FOXA1   0.0172     0.00003410  -7.1    -1.35   9.22    7.87
214218_x  KRT17   0.0209     0.00005880   6.6     2.41   3.02    5.43
```

Reading it in plain language: XIST shows a log2 fold change of negative 2.87, meaning its expression is about 2.87 powers of two lower in group 1 than group 0, roughly a 7.3-fold decrease, and the adjusted P value of 0.0031 means that among the genes flagged at this significance level you would expect about 3 in 1,000 to be false positives. Note that genes can have small raw P values yet adjusted values near 1 once the correction accounts for the tens of thousands of tests performed. Always screen on adj.P.Val.

### Step 5: Understand the Statistics Behind the Table

![Worked calculation showing a raw P value of 0.002 on a 20,000-probe array becoming an adjusted P value of 1 after correction.](/article-images/illustrations/ncbi-geo2r-tutorial-bh-adjustment.webp)

GEO2R's engine is limma, which fits a linear model to every gene and then applies an empirical Bayes shrinkage that borrows strength across genes to stabilize variance estimates. That moderated t-statistic is why GEO2R performs reasonably even with modest replicate numbers, and it is the same family of reasoning that underlies the RNA-seq tool DESeq2 used in published GEO-based analyses of differential expression [9], [10].

The Benjamini-Hochberg adjustment is worth one worked calculation so the column is not a black box. Suppose a microarray platform tests 20,000 probes and your most significant probe has a raw P value of 0.002. The step-up procedure sorts all P values from smallest to largest and, for the probe at rank r, computes adjusted P equal to raw P multiplied by 20,000 divided by r, with cumulative enforcement so the adjusted values never decrease down the ranked list. For the top probe that gives 0.002 times 20,000 divided by 1, which is 40, capped at 1. A raw P value of 0.002 in a 20,000-test table is therefore not significant after correction, which is exactly the kind of misread the correction exists to prevent.

For log2 fold change, remember the conversion. A logFC of 1 is a twofold change, logFC of 2 is fourfold, and logFC of negative 1 is a halving. When you set practical significance criteria for your gene list, think in both dimensions: [statistical significance](/blog/guides/statistical-significance) (adj.P.Val below your cutoff, commonly 0.05) and effect size (an absolute logFC threshold chosen based on the dynamic range of the platform).

### Step 6: Use the Built-In Plots

GEO2R offers several views that serve as diagnostics as much as illustrations.

- The expression boxplot of all samples shows whether distributions are comparable across groups. Wildly different ranges suggest a normalization problem or a sample mix-up before any test is run.
- The volcano-style view plots logFC against significance and lets you see whether hits skew in one direction.
- The P value histogram is a quick sanity check. With real signal you expect an enrichment of small P values above a roughly uniform background. A spike at high P values can indicate artifacts.
- Per-gene profile plots show the expression pattern of a single gene across every sample, which is the fastest way to eyeball whether a top hit is consistent or driven by one outlier sample.

Use these plots before you trust the table. A gene list built on a boxplot that reveals one misassigned or failed sample is a wasted afternoon.

### Step 7: Save the R Script and the Full Results

Two export steps turn a quick look into a reproducible analysis.

First, click "Save full table" to download the complete ranked result, not just the top 250 rows. Keep the file with a name that records the accession, groups, and date.

Second, click the R script tab at the bottom of the GEO2R page. GEO2R writes out the exact code it executed, structured roughly like the following abridged version:

```r
library(Biobase)
library(GEOquery)
library(limma)

# Load series and platform data
gset <- getGEO("GSEnnnnn", GSEMatrix = TRUE, getGPL = FALSE)
mat  <- exprs(gset[[11]])

# Apply log2 transformation when the data are not already log scale
qx <- as.numeric(quantile(mat, c(0, 0.25, 0.5, 0.75, 0.99, 1), na.rm = TRUE))
LogC <- (qx[2] > 100) ||
        (qx[12] - qx[11] > 50 && qx[8] > 0) ||
        (qx[8] > 0 && qx[8] < 1 && qx[3] > 1 && qx[3] < 2)
if (LogC) {
  mat[mat <= 0] <- NaN
  mat <- log2(mat)
}

# Group assignment pattern, one character per sample in series order
gsms <- "000111"
sml  <- strsplit(gsms, "")[[11]]
fl   <- as.factor(sml)
design <- model.matrix(~ fl + 0)
colnames(design) <- levels(fl)

fit  <- lmFit(mat, design)
cont <- makeContrasts(B - A, levels = design)
fit  <- eBayes(fit %>% eBayes, trend = TRUE)  # script includes eBayes step
top  <- topTable(fit, coef = 1, number = Inf, adjust.method = "BH")
write.csv(top, "geo2r_results_GSEnnnnn.csv")
```

To run this locally, install the dependencies once from Bioconductor:

```r
if (!require("BiocManager", quietly = TRUE))
    install.packages("BiocManager")
BiocManager::install(c("Biobase", "GEOquery", "limma"))
```

Then, in a fresh R session, paste the GEO2R script. Expected console output on a successful run looks like:

```text
Found 1 matching series
Downloading matrix data ...
File stored at:
/tmp/RtmpXXX/GSEnnnnn_series_matrix.txt.gz
Rows: 22283  Columns: 6
```

The `Rows` and `Columns` line is your first verification: the row count should match the platform's probe count and the column count should match the number of samples you saw on the web page. The script also gives you a place to add what the web tool cannot do, such as extra covariates in the design matrix, duplicateCorrelation for repeated measures, or array quality weights.

## A Worked Interpretation Example

Say you ran a six-sample comparison as in Step 2 and downloaded the full table. Your triage might look like this:

1. Filter to adj.P.Val below 0.05. Suppose that leaves 612 probes.
2. Within those, filter to absolute logFC of at least 1 (twofold). Suppose 380 remain.
3. Map probes to gene symbols, dropping probes without annotation, and collapse duplicate probes by keeping the one with the smaller adjusted P value.
4. Cross-check the top hits against the published paper's gene list. Concordance with the authors' reported markers is a good sign your group assignment was correct. Discordance usually means a sample was assigned to the wrong group or the paper analyzed a different subset.
5. Carry the filtered list into functional enrichment. For well-annotated organisms, tools such as g:Profiler, DAVID, and GOrilla are standard choices for GO and pathway enrichment on a DEG list [11], and clusterProfiler is widely used in GEO-based studies for the same purpose [10]. For non-model organisms where curated annotation is thin, a recent protocol builds custom annotation R packages from NCBI genomic data that plug directly into clusterProfiler, demonstrated on Mycobacterium tuberculosis H37Rv with a rifampicin-response RNA-seq series [11].

From there, the path branches depending on your goal. Comparative studies often pool several GEO series to demand that a candidate gene replicates across cohorts, as done for the cell cycle regulators CDC20, PLK1, BUB1, CDC45, and CDCA5 across pancreatic ductal adenocarcinoma datasets before RT-qPCR validation [4]. Others move from a DEG list into co-expression network analysis and machine learning feature selection to nominate biomarkers [3], [5].

## NCBI GEO2R Tutorial Tips

These tips come up repeatedly when a GEO2R result does not match expectations.

- Verify the assignment pattern twice. The single most common silent error is a sample string where one GSM sits in the wrong group. Print the pattern, line it up against the sample table, and count the zeros and ones.
- Prefer series with clear, balanced designs. A dataset with three biological replicates per condition, properly randomized and sampled at the same developmental stage, like the maize mycorrhiza design cited above [8], will give cleaner results than a larger but unbalanced series.
- Check whether values are log-transformed. GEO2R's generated script contains the quantile-based test shown above for a reason: microarray values are sometimes deposited on the linear scale, and the script decides for you. If you run limma manually, replicate that logic.
- Screen on adj.P.Val, sanity-check with logFC. Report both when you write up results.
- Keep the raw P values in the exported table even though you screen on adjusted values. When you later overlap your hits with another study, raw values help you judge borderline concordance.
- Match the statistical tool to the data type. GEO2R applies limma, which is appropriate for microarray intensities and voom-processed counts. Series analyzed in the literature with DESeq2 on raw counts follow a slightly different variance model [2], [9], so exact gene rankings will differ between your GEO2R output and a paper's DESeq2 output even on identical samples.
- Reproduce locally before extending. Run the generated script once, confirm it returns the same top genes as the web page, and only then start adding covariates or alternative normalizations.
- Treat the output as a hypothesis source. Published GEO-based workflows routinely follow differential expression with independent validation, whether by RT-qPCR on new samples [4], by comparison across multiple independent series [4], or by cell-type-level checks in single-cell data [5].

## Common Mistakes and Limitations

This is the section to read before your first real analysis. These are the mistakes that actually corrupt GEO2R results.

**Screening on raw P values.** With 20,000 or more simultaneous tests, dozens of probes will show raw P values below 0.01 by chance alone in a null experiment. The adjusted P value column is the one that should drive your gene calls. If you take one lesson from this ncbi geo2r tutorial, take that one.

**Trusting automatic group assignment.** GEO2R infers groups from sample characteristics when it can, but submitters describe samples inconsistently. A characteristics field reading "tissue: tumor, adjacent normal" can parse badly. Confirm every checkbox yourself.

**Using GEO2R when the series lacks sample-level data.** Some series deposit only mean values per condition or a processed figure-derived matrix. GEO2R either will not offer the analysis button or will run something that looks plausible but is not a per-sample test. If you cannot identify one column per biological sample, stop and choose a different series or a raw-data pipeline.

**Ignoring batch and covariate structure.** GEO2R models your grouping and, optionally, pairing. It cannot model sequencing lane, date, array batch, or clinical covariates. If the design confounds condition with batch, no web tool rescues it. The honest options are a locally modified limma model with batch terms, or picking a better series.

**Comparing gene lists across different platforms and calling the differences biology.** Two series measured on different array designs, or one array and one RNA-seq study, differ in gene coverage, dynamic range, and annotation versions. Concordant genes that replicate across datasets, like the pancreatic cancer hub genes identified across eight GEO series [4], are meaningful precisely because the authors demanded replication. A gene absent from one platform is not necessarily absent from the biology.

**Overinterpreting small replicate numbers.** Empirical Bayes shrinkage stabilizes variance estimates, but it cannot conjure information that two replicates do not contain. Analyses on two-replicate groups are exploratory, and the same caution applies to downstream clusterings built on them.

**Confusing statistical significance with biological importance.** A probe with adj.P.Val of 1e-12 and a logFC of 0.02 is statistically rock solid and biologically flat. Define effect-size thresholds appropriate to your system and apply them alongside the adjusted P value.

**Assuming GEO2R validates the original study.** GEO2R reanalyzes deposited processed data. It checks whether the deposited numbers support a group difference. It does not re-derive expression from raw reads, so errors made upstream by the submitter, such as a sample swap or mislabeled replicate, propagate silently. That is why independent validation with new material or orthogonal methods appears as a standard step in serious secondary analyses [3], [4].

**Forgetting that limma and DESeq2 can disagree.** Different variance models and normalization choices produce different rankings, especially for low-count genes. When a published paper used DESeq2 and you used GEO2R, expect overlap at the level of biology rather than identical ordered lists.

One limitation stated once, plainly: GEO2R tells you what differs between deposited sample groups, not whether the difference matters for a patient, a crop, or a model organism in front of you. Individual research questions need domain expertise on top of the gene list.

## Frequently Asked Questions

### Do I need to install anything to use GEO2R?

No. GEO2R runs entirely on the NCBI server through your browser, so a web browser is sufficient for the full analysis. You only need R with the Biobase, GEOquery, and limma packages if you want to reproduce the analysis locally or extend it with covariates using the generated script.

### Can GEO2R analyze RNA-seq data?

Yes, for series that include a sample-level count matrix or suitable processed values. GEO2R applies limma with the voom transformation for count-style RNA-seq data. It cannot process raw FASTQ files, so if you need to start from reads you need a pipeline with tools such as SRA Toolkit, FastQC, HISAT2, and DESeq2 instead [1], [2].

### What cutoff should I use for significance?

Screen on the Benjamini-Hochberg adjusted P value, with 0.05 as the conventional default, and add an effect-size criterion such as an absolute logFC threshold appropriate to your platform. There is no universal correct number, and the right choice depends on how many genes you can afford to follow up.

### Why do my GEO2R results differ from the published paper?

Differences arise from group assignment choices, subset selection, normalization, statistical tool (limma versus DESeq2), and covariate handling. If the discrepancy is large, first recheck your sample assignment pattern, then check whether the authors excluded samples or analyzed raw counts.

### How many replicates do I need per group?

Three biological replicates per group is the practical minimum for a credible test, and more replicates give more stable variance estimates and more power. Two-replicate comparisons can be run but should be treated as exploratory and followed up independently.

### Can GEO2R compare more than two groups?

Yes. Define as many groups as the design supports, and GEO2R fits a linear model across them using an F-test to detect genes that vary among any of the groups. For specific pairwise questions, run targeted two-group comparisons as well.

### What is the difference between P.Value and adj.P.Val?

P.Value is the raw significance of the test for that single gene with no correction for the thousands of other tests. adj.P.Val is the Benjamini-Hochberg false discovery rate adjusted value, which estimates the expected proportion of false positives among genes called significant at that threshold. Use adj.P.Val for gene calls.

### How do I save my GEO2R results?

Use the "Save full table" button to download the complete ranked results as a file, and use the R script tab to save the exact code GEO2R ran. Storing both, along with the series accession and your group assignment, makes the analysis reproducible.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Do I need to install anything to use GEO2R?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "No. GEO2R runs entirely on the NCBI server through your browser, so a web browser is sufficient for the full analysis. You only need R with the Biobase, GEOquery, and limma packages if you want to reproduce the analysis locally or extend it with covariates using the generated script."
      }
    },
    {
      "@type": "Question",
      "name": "Can GEO2R analyze RNA-seq data?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes, for series that include a sample-level count matrix or suitable processed values. GEO2R applies limma with the voom transformation for count-style RNA-seq data. It cannot process raw FASTQ files, so starting from reads requires a pipeline with tools such as SRA Toolkit, FastQC, HISAT2, and DESeq2."
      }
    },
    {
      "@type": "Question",
      "name": "What cutoff should I use for significance in GEO2R?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Screen on the Benjamini-Hochberg adjusted P value, with 0.05 as the conventional default, and add an effect-size criterion such as an absolute logFC threshold appropriate to your platform. There is no universal correct number."
      }
    },
    {
      "@type": "Question",
      "name": "Why do my GEO2R results differ from the published paper?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Differences arise from group assignment choices, subset selection, normalization, statistical tool (limma versus DESeq2), and covariate handling. If the discrepancy is large, first recheck your sample assignment pattern, then check whether the authors excluded samples or analyzed raw counts."
      }
    },
    {
      "@type": "Question",
      "name": "How many replicates do I need per group?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Three biological replicates per group is the practical minimum for a credible test, and more replicates give more stable variance estimates and more power. Two-replicate comparisons can be run but should be treated as exploratory."
      }
    },
    {
      "@type": "Question",
      "name": "Can GEO2R compare more than two groups?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes. Define as many groups as the design supports, and GEO2R fits a linear model across them using an F-test to detect genes that vary among any of the groups. For specific pairwise questions, run targeted two-group comparisons as well."
      }
    },
    {
      "@type": "Question",
      "name": "What is the difference between P.Value and adj.P.Val?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "P.Value is the raw significance of the test for that single gene with no correction for the thousands of other tests. adj.P.Val is the Benjamini-Hochberg adjusted value, which estimates the expected proportion of false positives among genes called significant at that threshold. Use adj.P.Val for gene calls."
      }
    },
    {
      "@type": "Question",
      "name": "How do I save my GEO2R results?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Use the Save full table button to download the complete ranked results as a file, and use the R script tab to save the exact code GEO2R ran. Storing both, along with the series accession and your group assignment, makes the analysis reproducible."
      }
    }
  ]
}
</script>

## Sources

1. [Streamline Protocol for Bulk-RNA Sequencing: From Data Extraction to Expression Analysis.](https://pubmed.ncbi.nlm.nih.gov/41637157/)
2. [Development and validation of the PipeSeq program for RNA-seq data analysis in the Chlamydomonas reinhardtii as a model.](https://pubmed.ncbi.nlm.nih.gov/42111799/)
3. [Identification of Potential Biomarkers in ASD Integrating RNA Seq Data and Machine Learning Approaches.](https://pubmed.ncbi.nlm.nih.gov/42175278/)
4. [Dysregulated expression of cell cycle regulators CDC20, PLK1, BUB1, CDC45, CDCA5 in pancreatic ductal adenocarcinoma.](https://pubmed.ncbi.nlm.nih.gov/41699006/)
5. [Decoding microglial metabolic cell death and PANoptosis hub genes in subacute phase of traumatic brain injury: a multi-omics and experimental validation study.](https://pubmed.ncbi.nlm.nih.gov/41851475/)
6. [A comparative transcriptomic dataset of hepatocytes derived from a panel of human induced pluripotent stem cells with different ethnicities as an in vitro population variability toxicity model.](https://pubmed.ncbi.nlm.nih.gov/42927269/)
7. [Transcriptomic data of larval zebrafish exposed to environmentally relevant levels of uranyl nitrate and sodium arsenite.](https://pubmed.ncbi.nlm.nih.gov/42959891/)
8. [Illumina RNA-seq data of Genotype-specific responses of maize plants to Funneliformis mosseae.](https://pubmed.ncbi.nlm.nih.gov/41852847/)
9. [Transcriptome profile analysis of genes by RNA-sequencing in neonatal maternal separation rats with autistic-like behaviors.](https://pubmed.ncbi.nlm.nih.gov/42158647/)
10. [Transcriptomic insights into epigenetic and immunomodulatory roles of nuclear histone genes in bladder cancer: A bioinformatics approach.](https://pubmed.ncbi.nlm.nih.gov/42177073/)
11. [Enhanced RNA-Seq Expression Profiling and Functional Enrichment in Non-model Organisms Using Custom Annotations.](https://pubmed.ncbi.nlm.nih.gov/42367215/)