This is a test version of Biostars. For the public version, visit https://www.biostars.org.
In Snpeff-Impact, What Is Difference Between Stop_Gained And Non-Synonymous_Stop?

In SNPEFF-IMPACT tool, What is difference between STOP_GAINED and NON-SYNONYMOUS_STOP?

In SNPEFF, effects are categorized by their impact including (High, Moderate, Low and Modifier). I would like to know, what is difference between STOP-GAINED and NON-SYNONYMOUS-STOP?

STOP-GAINED has been categorized in High impact and NON-SYNONYMOUS-STOP has been categorized in Low impact.

Reference : SNPEFF table

variant

2 answers

Without looking at it, my guess is that the variant changes the original stop codon to a different stop codon (that is, it switches among TAG, TAA, and TGA). So the codon changes (it's non-synonymous), but the effect for the gene should not.

Edit: What I described is a SYNONYMOUS_STOP. As I understand it, a NON_SYNONYMOUS_STOP can't arise, and exists in the code only as an oversight. As evidence of this, only a SYNONYMOUS STOP is explicitly documented in the FAQ. Furthermore, in one of my datasets, I observe over 1000 SYNONYMOUS_STOP calls and no NON_SYNONYMOUS_STOP calls.

More explanation from the relevant code:

                        if (aaOld.equals(aaNew)) {
                                // Same AA: Synonymous coding                                                                                                                                                                                 
                                if ((codonNum == 0) && codonTable.isStartFirst(codonsOld)) {
                                        // details removed
                                } else if (codonTable.isStop(codonsOld)) {
                                        if (codonTable.isStop(codonsNew)) effectType = EffectType.SYNONYMOUS_STOP;
                                        else effectType = EffectType.STOP_LOST;
                                } else effectType = EffectType.SYNONYMOUS_CODING;
                        } else {
                                // Different AA: Non-synonymous coding                                                                                                                                                                        
                                if ((codonNum == 0) && codonTable.isStartFirst(codonsOld)) {
                                        // details removed
                                } else if (codonTable.isStop(codonsOld)) {
                                        if (codonTable.isStop(codonsNew)) effectType = EffectType.NON_SYNONYMOUS_STOP;
                                        else effectType = EffectType.STOP_LOST;
                                } else if (codonTable.isStop(codonsNew)) effectType = EffectType.STOP_GAINED;
                                else effectType = EffectType.NON_SYNONYMOUS_CODING;
                        }

There is no way for the old and new codons to be different (to get into the outer else block) and for both codons to be stop. If they're both stop codons, they'll be the same and go to the first if branch. So the NON_SYNONYMOUS_STOP branch is never reached.

thanks Matted, If your description is correct now I have an other question: What is difference between synonymous-stop and non-synonymous-stop?Both of them there are in SNPEFF table and also both have Low impact.

Ah, interesting. It looks like NON_SYNONYMOUS_STOP is something that doesn't (can't) exist, and SYNONYMOUS_STOP is what I explained above. I've edited my answer to have more detail since there's more room there.

When I wrote the code, I added the condition (mostly for symmetry). Actually I think I added a "this should never happen" message at some point.

The only case would involve when a stop codons actually code for proteins (e.g. Selenocysteine). Which I'm not sure is biologically plausible. Furthermore, since so far there are no reliable computational methods to predict when 'U' amino acids occurs, that part of the code is unreachable.

So, matted's answer is correct. I'll update the table in the web page to remove sources of confusion (sorry about that).

Log in to answer this question.