Quality control of my tellmeGen genome: Did I really receive 30× sequencing?
Recently, I sequenced my own genome with the direct-to-consumer whole-genome sequencing company tellmeGen. After downloading my genome and evaluating the tellmeGen reports, one important question remained unanswered: How good was the actual sequencing?
tellmeGen provided two large FASTQ files and a VCF containing the identified genetic variants, but no detailed sequencing quality report. I therefore processed the raw reads myself and evaluated their quality, mapping, duplication, coverage, and possible contamination.
The result is reassuring: my saliva sample produced a high-quality human whole-genome dataset, and tellmeGen reached the advertised 30× average coverage. I found no indication of a failed sequencing library, insufficient sequencing output, substantial non-human contamination, or contamination by DNA from another person.
The complete anonymized MultiQC quality report is available as an interactive HTML report.
The result at a glance
| Quality metric | Result | What it means | Rating |
|---|---|---|---|
| Sequencing output | 720.0 million reads, 2 × 150 bp | About 360 million read pairs and 108 billion sequenced bases | Very good |
| Bases with at least Q30 | 94.5%, about 102 Gb | At least 99.9% estimated base-call accuracy for most bases | Excellent |
| Reads retained by fastp | 100% | No meaningful loss through quality or length filtering | Excellent |
| GC content | 40.3% | Appropriate for human whole-genome sequencing | Good |
| Reads mapped | 99.2% | Almost all reads could be aligned to the human reference genome | Excellent |
| Properly paired reads | 96.1% | Both ends usually aligned with the expected orientation and distance | Very good |
| Picard duplicate rate | 1.1% | Very little redundant sequencing after alignment | Excellent |
| Mean insert size | 286 bp | Normal fragment size for a 2 × 150-bp short-read library | Good |
| Final median depth | 36× | Half of the assessed positions had at least approximately this depth | Above target |
| Estimated autosomal mean depth | Approximately 34.4× | Length-weighted average across chromosomes 1–22 | Above target |
| Genome covered at least 10× | 94% | Most reference positions had substantial read support | Good |
| Genome covered at least 20× | Approximately 87% | A large majority had strong coverage | Good |
| Genome covered at least 30× | 73% | Plausible for a genome averaging in the mid-30s | Good |
| VerifyBamID2 FREEMIX | 0.000161754, or 0.016% | No meaningful evidence of DNA from another human sample | Excellent |
| Indexcov coverage variation | 15.3% of bins outside 0.85–1.15 | Some regional nonuniformity, relevant mainly to copy-number analysis | Minor caveat |
| Overall assessment | Approximately 34–36× high-quality human WGS | The advertised average 30× coverage was reached | Good to very good |
The measurements in this table come from the raw FASTQ, fastp, mark-duplicate BAM, final recalibrated BAM, Mosdepth, indexcov, and VerifyBamID2 sections of the analysis.
Reproducing the analysis
I deposited the code, parameters, and cluster scripts in my public repository:
For the main analysis, I used version 3.9.0 of nf-core/sarek. Sarek is a community-developed workflow for processing whole-genome and exome sequencing data. It can take raw FASTQ files, align the reads to a reference genome, mark duplicate fragments, recalibrate base-quality values, call different types of genetic variants, annotate them, and generate quality-control reports (Garcia, F1000Research, 2020).
Sarek is built with Nextflow. Instead of running the entire analysis as one monolithic program, Nextflow divides it into many smaller tasks. These tasks can run on a workstation, a computing cluster, or cloud infrastructure. Containers provide consistent versions of the required software, which makes the workflow easier to reproduce.
I used the GRCh38 human reference genome and BWA-MEM for alignment. My configuration was relatively extensive and included several callers for small variants, structural variants, and copy-number variants, followed by annotation with VEP and snpEff. A simpler workflow with only one small-variant caller would require fewer computing resources.
At the end, Sarek summarized the quality results in MultiQC. MultiQC combines outputs from many bioinformatics tools into one interactive report, making it easier to identify technical problems and compare different analysis stages (Ewels, Bioinformatics, 2016).
The tools represented in my report include:
- FastQC, which inspects the raw sequencing reads.
- fastp, which performs read-level quality control and filtering (Chen, Bioinformatics, 2018).
- samtools, which summarizes the alignments.
- Picard MarkDuplicates, which estimates alignment-based library duplication.
- Mosdepth, which calculates genome-wide sequencing depth and coverage distributions (Pedersen, Bioinformatics, 2018).
- indexcov, which rapidly screens for regional coverage abnormalities and large copy-number changes (Pedersen, GigaScience, 2017).
How much computing power was required?
Whole-genome analysis needs much more storage than the compressed FASTQ files initially suggest. Reads are decompressed, aligned, sorted, recalibrated, divided into genomic regions, and processed by several variant callers. Nextflow also retains intermediate files so that an interrupted analysis can be continued with -resume instead of starting again.
My analysis used the following storage:
| Directory or data type | Storage used | What it contains |
|---|---|---|
| Original compressed FASTQ files | Approximately 83 GB | Raw paired-end sequencing reads |
work/ |
793 GB | Nextflow intermediate files required for resuming tasks |
results/ |
401 GB | Final Sarek and VerifyBamID2 results, including archives |
cache/ |
39 GB | Reference data and software containers |
| Approximate total | 1.32 TB | Complete analysis directory at the time of measurement |
The results directory contained both unpacked files and compressed archives, including a 90 GB Sarek archive and a 43 GB VerifyBamID2 archive. Some of the 401 GB was therefore intentional duplication rather than unique output.
For a similarly broad analysis, I would start with at least 1.5 TB of free storage. A 2 TB working volume is safer, particularly when intermediate files, references, archives, and several variant callers are retained. Fast local SSD or NVMe storage is preferable because alignment and variant calling involve substantial disk input and output.
The Nextflow coordinator itself ran with 16 GB of memory, but it only organized the workflow. The actual analysis tasks were submitted separately. In my configuration, DeepVariant requested 32 GB, GATK MarkDuplicates requested 64 GB, and Varlociraptor initially requested 64 GB with the option to request more after a failed attempt.
For a single workstation or server, approximately 128 GB of RAM and 8 to 16 CPU cores would be a comfortable configuration for this broad multi-caller workflow. A system with 64 GB may still work if concurrent tasks are restricted and some optional, memory-intensive callers are disabled.
A suitable machine does not have to be owned. A virtual or dedicated server can also be rented. I have personally had good experiences with Contabo, although this is not a sponsored recommendation. For this workload, the smallest standard VPS would not be appropriate. The important requirements are sufficient memory, around 2 TB of working storage, and reasonable disk performance.
A whole genome is uniquely identifying personal data. On a rented server, access should be restricted, SSH keys should be used, storage and backups should be encrypted where possible, and files that are no longer needed should be deleted.
What does 30× coverage actually mean?
Sequencing depth describes how many reads overlap a position in the reference genome. A depth of 30× does not mean that every position is covered by exactly 30 reads. It means that the average coverage across the genome is approximately 30 reads per position.
This distinction matters. tellmeGen now describes its product as whole-genome sequencing with an average coverage of 30×, meaning that positions are read about 30 times on average (tellmeGen, 2026).
Some genomic positions inevitably receive more reads and others fewer. The distribution is affected by random sampling, GC content, repetitive DNA, the uniqueness of a sequence, and how well short reads can be aligned to the reference genome.
My two FASTQ files each contained approximately 360 million reads with a read length of 150 bases. Together, they contained approximately 720 million individual reads, corresponding to about 360 million read pairs.
The total raw sequence yield was therefore:
720 million reads × 150 bases = 108 billion bases, or 108 Gb
Dividing this by a haploid human genome size of approximately 3.1 to 3.2 billion bases gives a theoretical raw depth of about 34 to 35×. This calculation already suggested that tellmeGen had generated enough data for a nominal 30× genome.
The processed coverage measurements confirm it more directly. The final recalibrated sample had a median depth of 36×, and the length-weighted mean across chromosomes 1–22 was approximately 34.4×.
Did tellmeGen deliver the promised 30×?
Yes.
The estimated autosomal mean of approximately 34.4× is above tellmeGen’s advertised average of 30×. The final median depth of 36× independently supports the same conclusion.
The cumulative Mosdepth coverage was approximately:
| Minimum depth | Proportion of reference positions |
|---|---|
| At least 1× | 95% |
| At least 5× | 94% |
| At least 10× | 94% |
| At least 20× | Approximately 87% |
| At least 30× | 73% |
| At least 50× | 2% |
It may initially seem contradictory that the genome averaged approximately 34.4× while only 73% of reference positions reached at least 30×. It is not a contradiction.
An average describes the entire distribution. Positions above 30× can compensate mathematically for positions below 30×. Even a technically excellent short-read genome will contain both highly covered and weakly covered regions.
Mosdepth’s cumulative percentage also uses the assessed reference bases as its denominator. Depending on the reference and analysis settings, this can include reference gaps, repetitive regions, centromeric sequence, and other positions that are difficult or impossible to map with 150-base reads. The approximately 5–6% without substantial coverage should therefore not automatically be interpreted as 5–6% of useful or clinically callable DNA being absent.
A callable-genome analysis would provide a more specific answer by excluding unsuitable reference regions and requiring minimum mapping quality, base quality, and genotype quality.
Coverage across individual chromosomes
Most autosomes had average depths of approximately 31–37×. Chromosome 22 was lower at about 25.4×, while chromosomes 14 and 15 were around 29.6×.
These chromosomes contain large repetitive and difficult-to-map regions. The lower chromosome-wide averages are therefore worth observing, but they do not indicate that an entire chromosome failed. There was no chromosome-wide dropout.
For medically interesting variants, the genome-wide average is not sufficient. The relevant locus should be checked individually for read depth, genotype quality, mapping quality, strand balance, and local mappability.
Raw base quality was excellent
The raw sequencing reads were high quality:
- Read 1 had mean per-cycle quality values around Q35–36 and ended at approximately Q34.8.
- Read 2 started around Q36 and ended at approximately Q34.0.
- 94.5% of all bases, about 102 Gb, had a quality score of at least Q30.
- The proportion of undetermined
Nbases was effectively zero. - No meaningful adapter or overrepresented-sequence problem was detected.
- fastp retained 100% of reads to the precision displayed in the report.
A Q30 base has an estimated error probability of 0.1%, or about one incorrect base call per 1,000 calls. Q35 corresponds to an even lower estimated error probability. Quality values above Q30 across almost the entire 150-base read are therefore a strong result.
As is common with Illumina sequencing, the quality declined slightly toward the end of Read 2, but the final values remained very high. There is no indication of a problematic end-of-read quality collapse.
The two FastQC warnings
FastQC marked two warning categories for both reads:
- Per-base sequence content
- Per-sequence GC content
A warning is not the same as a failed sequencing run. FastQC applies general statistical expectations, and some technically acceptable libraries trigger warnings because they do not perfectly match its model.
Per-base sequence content
The first approximately eight sequencing cycles showed an imbalance between A, C, G, and T. After these initial positions, the composition became very stable, with A and T each around 30% and G and C each around 20%.
The FastQC documentation for per-base sequence content explains that the module checks whether nucleotide proportions behave as expected across read positions. In this sample, the deviation is limited mainly to the first few bases. Combined with the excellent base quality, mapping rate, and lack of adapter or overrepresented-sequence problems, this pattern looks like mild initial-cycle or library-preparation bias rather than widespread bad sequencing.
Per-sequence GC content
The overall GC content was 40.3%, and the distribution peaked around 38–39%. This is appropriate for a human whole-genome library.
The observed distribution differed enough from FastQC’s modelled normal curve to trigger a warning. However, there was no strong second peak, no substantial reduction in human mapping, and no overrepresented sequence signal. The FastQC documentation for per-sequence GC content notes that the module compares the observed distribution with a theoretical model. A warning alone does not establish contamination.
I therefore classify both FastQC findings as minor warnings, not reasons for concern.
Mapping and library quality
After alignment, 99.2% of reads mapped to the human reference genome. Only about 0.8% were unmapped before later BAM filtering.
This is an excellent mapping rate and shows that the overwhelming majority of reads behaved like human genomic DNA. It also argues against a substantial fraction of bacterial, food-derived, or other obviously non-human DNA in the saliva library.
The properly paired rate was 96.1%. This means that both ends of most DNA fragments aligned in the expected orientation and at a plausible distance from each other. Together with the 286-bp mean insert size, this supports a well-constructed short-read library.
Why do the duplicate estimates look inconsistent?
The report contains three different duplication estimates:
| Tool | Estimated duplication |
|---|---|
| FastQC | Approximately 12.1–12.2% |
| fastp | 4.3% |
| Picard MarkDuplicates | 1.1% |
These values are not directly comparable because the tools use different algorithms and definitions.
FastQC and fastp estimate duplication from read sequences before using their genomic alignment positions. Naturally repeated parts of the human genome and reads that happen to start with the same sequence can therefore contribute to these estimates.
Picard assesses duplicate fragments after alignment. It uses mapping positions and pairing information to identify reads that probably originated from the same original DNA molecule because of PCR amplification or optical duplication. For downstream variant calling, this alignment-based estimate is the most relevant of the three.
The 1.1% Picard duplicate rate is excellent. It suggests that the large sequencing yield came from a highly diverse collection of original DNA fragments rather than repeated sequencing of a small library.
Did the saliva sample cause contamination?
Saliva samples can contain bacterial DNA, food-derived DNA, and DNA from other non-human sources. In this dataset, there is no obvious sign that such material compromised the sequencing:
- 99.2% of reads mapped to the human reference.
- GC content was appropriate for human WGS.
- There was no large unusual secondary GC peak.
- No meaningful overrepresented-sequence problem was detected.
These observations strongly suggest that non-human DNA was not a major fraction of the library. They are not, however, a formal taxonomic analysis of the unmapped reads.
Mapping statistics also cannot detect DNA from another human. Reads from another person would still align well to the human reference genome. I therefore ran VerifyBamID2, which estimates human-to-human contamination from allele patterns while accounting for genetic ancestry (Zhang, Genome Research, 2020).
The main result was:
FREEMIX = 0.000161754
Expressed as a percentage:
0.000161754 × 100 = 0.0162%
This is effectively zero for practical quality-control purposes. I found no meaningful evidence that the sample contained DNA from another person.
VerifyBamID2 also reported principal-component coordinates for an “intended sample” and a hypothetical “contaminating sample.” These coordinates describe positions in an ancestry-related statistical space. They are not contamination percentages. Because the estimated contaminating fraction is essentially zero, the coordinates of the hypothetical contaminant should not be interpreted as evidence that a second person was actually present.
One caveat: regional coverage uniformity
The indexcov summary reported approximately:
- 6.6% of bins with normalized depth below 0.15
- 15.3% of bins outside the normalized 0.85–1.15 range
Indexcov estimates coverage in large genomic bins and is intended to highlight missing regions, broad coverage bias, aneuploidies, and large deletions or duplications (Pedersen, GigaScience, 2017).
The low-depth-bin proportion broadly agrees with the difficult or uncovered part of the reference seen in Mosdepth. The out-of-range proportion indicates some regional variation in coverage. Because this report contains only one sample, there is no sequencing cohort available for comparison.
I consider this worth noting, particularly for copy-number and structural-variant analysis, but not an obvious red flag. The overall mapping, depth, pairing, base-quality, and duplication statistics are strong, and there is no chromosome-wide dropout.
What this quality report cannot guarantee
A good genome-wide quality report does not make every individual result correct.
Short reads remain less reliable in repetitive sequences, segmental duplications, pseudogenes, and genes with closely related copies. Genome in a Bottle benchmarking has shown that hundreds of medically relevant genes contain regions that are difficult to assess with conventional short-read methods (Wagner, Nature Biotechnology, 2022).
For an individual variant, I would therefore still inspect:
- local read depth,
- genotype quality,
- mapping quality,
- allele balance and strand balance,
- nearby repeats or duplicated genes,
- agreement between variant callers,
- and external population and clinical databases.
A separate fingerprint or comparison with an independently obtained sample would also be required to prove sample identity. VerifyBamID2 shows that the dataset does not look like a mixture, but it cannot prove that the sample belongs to a particular named person without a reference genotype.
The results should not be treated as equivalent to a validated clinical diagnostic test. A medically important finding should be reviewed carefully and, where appropriate, confirmed by an accredited diagnostic laboratory.
Conclusion
The tellmeGen sequencing appears to be genuinely good-quality human whole-genome sequencing at approximately 34–36× depth.
The main findings are:
- no major base-quality problem,
- sufficient raw sequencing output,
- 94.5% of bases at Q30 or better,
- 99.2% human mapping,
- good paired-read behavior,
- exceptionally low alignment-based duplication,
- no obvious substantial non-human contamination,
- effectively zero estimated human cross-sample contamination,
- and average coverage clearly above the advertised 30×.
The important qualification is that 30× average coverage does not mean that every genomic position is covered 30 times. About 73% of the full assessed reference reached at least 30×, while difficult, repetitive, and poorly mappable regions remained less well covered. This is expected for short-read WGS and does not contradict the 34.4× estimated autosomal mean.
There is therefore no general quality issue that would prevent further analysis. For medically interesting variants, region-specific depth, genotype quality, and mappability remain essential.
My next step will be to calculate polygenic scores using the Polygenic Score Catalog. The catalog provides published score definitions, including variants, alleles, weights, and curated metadata needed for reproducible application (Lambert, Nature Genetics, 2021). Its PGS Catalog Calculator supports reproducible score calculation and ancestry-aware normalization (Lambert, Nature Genetics, 2024).
A polygenic score is not a diagnosis. It summarizes genetic predisposition relative to an appropriate reference population, and its interpretation depends on ancestry, calibration, the underlying study, and how much of the phenotype the score can actually predict. Nevertheless, calculating these scores from my own whole-genome data will be an interesting next step in exploring what personal genomic data can, and cannot, tell me.
Leave a comment