I recently learned that GEO has been processing RNA-seq raw read into counts (for Differential Expression analyses) and TPM values using a HISAT2 based pipeline. This is attractive because one can save a lot of time and compute using these values. The only issue is that I sometimes need to compare the values to local data (processed with RSEM and more recently with Salmon) or to data that has not been processed by GEO (yet?).
So I started comparing GEO's data with my own. To give some background: I have always been using Ensembl genomes and annotations but with switching to Salmon I started using Gencode as Salmon devs recommend it.
To compare I processed the set GSE223024 myself and I compared the results with the GEO provided values (see here).
When investigating the TPM values I was not able to directly compare the values because the GEO data uses NCBI Gene IDs (ints), whereas I always used Ensembl IDs (ENSG... numbers). There is an Human gene annotation table (Human.GRCh38.p13.annot.tsv.gz), it contains columns with (NCBI) GeneIDs, Hugo Symbols and EnsemblGeneIDs, however only about 3/4th of the genes (27077 out of 39376) have an Ensembl ID in this file. For example NCBI ID 653635 (WASH7P) does not, but looking online it does have an Ensembl ID (ENSG00000227232).
This leaves me with a problem, I need to translate all NCBI GeneIDs to Ensembl IDs but the provided file is incomplete.
I have some questions:
- How to best translate ALL NCBI geneIDs into Ensembl IDs?
- Are these IDs always 1 to 1 translatable into Ensembl IDs?
- Why is this annotation file incomplete?
- Is the GEO pipeline consistent? I mean is it always the same pipeline with the same references?
How do you all use the GEO values in your pipelines?