I think the question is a bit ambiguous so please excuse this answer that's a bit redundant from the rest of the ones provided.
As others have mentioned, if you want to store a full genome, FASTA
and 2bit
formats are appropriate. For some context, hg19
is about 900Mb compressed for the FASTA
file and about 780Mb compressed for the 2bit
file . hg19
is a reference and is haploid so doesn't represent a "full" human genome that would normally have two alleles for the autosome (non-sex chromosomes).
A common format for representing variant information is Variant Call Format (VCF
). The VCF
format represent differences from a reference (hg19
, say) that can be used to recover the original full sequence by using the reference and the differences encoded in the VCF
file. I've seen VCF
files in the range of 100Mb, but a reference file is still needed to recover the full genome sequence which is the range of 800Mb+, as mentioned above.
If you're considering just one "whole genome" in isolation, then the answer is pretty clear: 2bit
format is probably approaching the entropy limit of the human genome and you probably won't be able to do much better.
The reason why your question is a bit ambiguous is that as soon as you start encoding more than one genome, a population of genomes, say, then you can start exploiting the redundancy of the genome as shared by the population.
For example, say you want to store two "whole genomes". You could download the hg19
reference and download two VCF
files which would give around 1Gb worth of data (around 800Mb for the 2bit
file and around 200Mb for both of the VCF
files). Now you've been able to represent a "whole genome" in 500Mb instead of the 800Mb. You can see a similar argument for downloading 3 VCF
files and more.
The minimum amount of information needed to represent a population of genomes is, as far as I know, unknown, but I would guess in the 2.5Mb-5Mb range. For example, see "Human genomes as email attachments" by Christley, Lu, Li and Xie which claims a 4Mb encoding of a genome.
Things get tricky because you have to ask what you're claiming as a "whole genome". VCF
files are notoriously bad because older versions of the specification only store high quality differences from reference, throwing away high quality called sections. If you want to store low quality information, the encoding is now going to depend on the sequencing technology in weird ways.
Insertions, deletions, mobile insertion elements, copy number variants, other structural variants, etc. all complicate this matter further. Genome Graphs are trying to tackle at least some of these problems but the focus is on variant calling rather than efficient individual whole genome representation, though perhaps can be adapted in the future.