GEO Submission Workflow

Preparing raw data, processed matrices, and metadata for GEO submission

What it does

This workflow documents the practical steps for submitting sequencing datasets to GEO. The committed materials cover raw and processed file preparation, metadata spreadsheet completion, FTP upload to GEO’s private staging area, and a small R Markdown helper for exporting Seurat metadata and count matrices.

When to use it

Use this workflow when you are preparing a study for GEO submission and need a lab-specific checklist for organizing raw files, processed matrices, metadata, and uploads. It is most useful late in a project when the analysis is complete and you need to package both the sequencing files and the processed deliverables for repository deposit.

Prerequisites

  • Source folder: Data_GEO_submission
  • Main files:
  • Expected inputs:
    • raw FASTQ files gathered into a common folder
    • processed outputs such as counts.csv and metadata.csv
    • a GEO submission metadata spreadsheet
    • optionally a Seurat object saved as combined.qsave for the export helper

Steps

Gather raw files, processed matrices, and the metadata spreadsheet

The README starts from three required pieces: raw FASTQs, processed matrices, and the GEO metadata spreadsheet. It points to the committed Excel template as the example submission sheet.

For RNA-seq and scRNA-seq submissions, the folder structure is expected to separate raw data from processed data, with compressed counts.csv.gz and metadata.csv.gz files recommended for transfer efficiency.

Export processed Seurat data if the deliverables still live in combined.qsave

If your processed data still live inside a Seurat object, the helper R Markdown reads combined.qsave, sets the RNA assay, and writes the metadata and counts matrices to CSV.

combined <- qs::qread('combined.qsave')
DefaultAssay(combined) <- "RNA"
Idents(combined) <- combined$orig.ident
meta <- combined@meta.data
write.csv(meta, "metadata.csv", row.names = T, col.names = T, quote = F)
counts <- GetAssayData(combined, assay = "RNA", slot="counts")
write.csv(counts, "counts.csv", row.names = T, col.names = T, quote = F)

This is a thin but useful branch for converting a Seurat object into the two processed matrices GEO usually expects.

Upload the prepared folder structure to GEO’s private FTP area

Once the data and spreadsheet are ready, the README directs you to GEO’s sequence submission page and shows an lftp-based upload pattern for mirroring the prepared working directory into your temporary private GEO upload folder.

cd /path/to/wd

lftp ftp://geoftp:********@ftp-private.ncbi.nlm.nih.gov
cd uploads/cankun.wang@orcid_6LOT6a04
mirror -R .

Finish the web submission and wait for accession assignment

After the FTP transfer, the last step is returning to GEO’s web interface to upload the metadata spreadsheet. The committed README notes that accession assignment may take about a week and that curator follow-up can require corrections before the submission is finalized.

Gotchas / notes

  • This workflow is mostly checklist-style documentation rather than a richer notebook walkthrough.
  • GEO FTP credentials are temporary and change frequently, so the example login values in the README are only placeholders.
  • export_data.rmd assumes a local combined.qsave Seurat object and does not include broader validation or formatting steps beyond writing CSVs.
  • The directory structure illustration referenced in the README is external rather than committed in this repo; the only committed template asset here is seq_template.xlsx.
  • The page reflects the practical handoff order in the README, but GEO-specific validation details still live outside this repository.

📄 View source on GitHub