Lesson 7 of 20 · 10 min
Versioning: accession.version and Why Records Change
By the end of this lesson you will be able to read the two-part shape of NM_007294.4, explain why the same record has been .1, .2, .3, and now .4 over the years, and pin the exact version your analysis used so a reader can reproduce it precisely.
The two-part shape of an accession
The previous two lessons took an accession apart. What an Accession Number Is established that an accession is a stable, permanent ID for one database record. Reading a Prefix showed that the leading letters — NM_ for a curated messenger RNA, for instance — encode provenance and molecule type. This lesson looks at the piece we deliberately set aside: the number after the dot.
Take BRCA1's RefSeq transcript, NM_007294.4, and split it at the dot.
NM_007294is the base accession — the permanent name of the record. It never changes for as long as the record exists..4is the version — a counter that starts at.1and increments by one every time the underlying sequence is edited.
So NM_007294 is a shelf in the library, and .4 tells you which printing of the book currently sits on it. The shelf label is forever; the printing on it can be replaced. Right now the shelf holds the fourth printing, which means BRCA1's curated transcript sequence has been revised three times since its first release.
You can confirm the current version live rather than trusting any lesson. Ask NCBI for just the accession string:
curl -s "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=nuccore&id=NM_007294&rettype=acc"
# -> NM_007294.4Notice what happened there: you asked for the bare base NM_007294, and NCBI answered with the versioned NM_007294.4. Requesting a base accession without a version quietly gives you whatever the latest version is today — which is convenient until it silently changes under you.
Why a record's sequence changes
A base accession is stable, but the biology it describes is a moving target. RefSeq is curated, and curators update a record when the evidence improves. Common reasons:
- Better evidence. New full-length transcripts or deeper sequencing refine where an exon begins or ends.
- Corrections. A sequencing error or a wrong base in an earlier submission gets fixed.
- Assembly and annotation updates. As the reference genome and gene models improve, the transcript is realigned and re-derived.
Each such edit bumps the version. The .1 → .4 history of NM_007294 is not churn — it is the record getting more correct over two decades. The base accession stays put precisely so this improvement has somewhere stable to live.
The reproducibility hook: pin the version
Here is why the dot matters for your actual work. Two people who both write "we used NM_007294" have not fully specified what they did — one may have downloaded .3 in 2018 and the other .4 today, and those are different sequences. The coordinates of a variant, the exact codon a mutation hits, the length of a region: all of it can shift between versions.
The fix is a one-character habit. In your methods, in your scripts, in your lab notebook, write the accession.version, not the base.
| You wrote | What a reader can reproduce |
|---|---|
NM_007294 | Whatever version is current when they look — not necessarily yours |
NM_007294.4 | The exact sequence you used, byte-for-byte, forever |
With Biopython you fetch and record the version explicitly:
from Bio import Entrez, SeqIO
Entrez.email = "[email protected]" # NCBI asks who you are
handle = Entrez.efetch(db="nuccore", id="NM_007294.4",
rettype="gb", retmode="text")
record = SeqIO.read(handle, "genbank")
handle.close()
print(record.id) # NM_007294.4 <- pin THIS in methods
print(len(record.seq), "bp")Requesting id="NM_007294.4" returns that exact version even after a .5 exists. Requesting id="NM_007294" follows the moving target. Superseded versions are not deleted — old versions stay retrievable, so a reader with your .4 can always pull the identical sequence you analysed. (If you hit NCBI's API often, mind the courtesy limit: at most 3 requests/second without an API key, or 10/s with one registered.)
The immutability myth, sharpened. Earlier we said an accession is permanent — and the base accession genuinely is. But "permanent name" is not the same as "unchanging content": the sequence behind NM_007294 has changed four times. Uniqueness is most precise at the full accession.version. NM_007294.4 names exactly one immutable sequence; NM_007294 names a lineage of them. When precision matters, always cite the dot.
Not every database dots the same way
RefSeq (NM_, NP_, NC_ — BRCA1's protein NP_009225 and genomic NC_000017 carry versions too) and GenBank both use the accession.version convention. Ensembl solves the same problem with its own counter: a stable ID like ENST00000357654 (BRCA1's canonical transcript) carries a separate version suffix, ENST00000357654.9, that increments whenever Ensembl's annotation of that transcript changes at a release — not tied to a specific dot-position rule like RefSeq's. The punctuation and counting scheme differ by database, but the discipline is the same everywhere: when you record an identifier for reproducibility, record its version.