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.csvandmetadata.csv - a GEO submission metadata spreadsheet
- optionally a Seurat object saved as
combined.qsavefor 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.rmdassumes a localcombined.qsaveSeurat 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.