← All .science files
pmid:29881472
Identifying mislabeled and contaminated DNA methylation microarray data: an extended quality control toolset with examples from GEO.
Jonathan A Heiss · Allan C Just
Clinical epigenetics · 2018 doi:10.1186/s13148-018-0504-1
Paper
complete
Experiment
partial
Data
partial
Analysis
partial
Execution
absent
Execution evidence has not yet been added to this .science file. Explore its methods, data and open questions to plan the next step.
Record details sci_version · id · kind · revision · content_hash · schema · created_at · updated_at · generator
paper object · 10 fields
authors array · 2 items
claims array · 3 items
[0] object · 6 fields
[1] object · 6 fields
evidence array · 1 item
[0] object · 3 fields
[2] object · 6 fields
evidence array · 5 items
[0] object · 3 fields
[1] object · 3 fields
[2] object · 3 fields
[3] object · 3 fields
[4] object · 3 fields
gaps array · 0 items
experiment object · 8 fields
steps array · 3 items
[0] object · 13 fields
parameters object · 0 fields
inputs array · 1 item
outputs array · 1 item
instruments array · 0 items
reagents array · 0 items
[1] object · 13 fields
parameters object · 0 fields
inputs array · 0 items
outputs array · 1 item
instruments array · 0 items
reagents array · 0 items
[2] object · 13 fields
parameters object · 0 fields
inputs array · 0 items
outputs array · 1 item
instruments array · 0 items
reagents array · 0 items
materials array · 0 items
instruments array · 0 items
reagents array · 0 items
conditions object · 0 fields
gaps array · 1 item
data object · 3 fields
assets array · 2 items
[0] object · 15 fields
structure object · 4 fields
[1] object · 16 fields
structure object · 5 fields
table object · 8 fields
rows array · 19 items
[0] array · 4 items
[1] array · 4 items
[2] array · 4 items
[3] array · 4 items
[4] array · 4 items
[5] array · 4 items
[6] array · 4 items
[7] array · 4 items
[8] array · 4 items
[9] array · 4 items
[10] array · 4 items
[11] array · 4 items
[12] array · 4 items
[13] array · 4 items
[14] array · 4 items
[15] array · 4 items
[16] array · 4 items
[17] array · 4 items
[18] array · 4 items
gaps array · 0 items
analysis object · 4 fields
methods array · 1 item
[0] object · 10 fields
dsl_operations array · 0 items
missing_operations array · 0 items
parameters object · 0 fields
data_shapes array · 0 items
targets array · 0 items
gaps array · 1 item
capability object · 3 fields
requirements array · 1 item
[0] object · 6 fields
assay_families array · 9 items
gaps array · 0 items
readiness object · 8 fields
axes object · 3 fields
method object · 5 fields
required_operations array · 0 items
missing_operations array · 0 items
capability object · 4 fields
data object · 6 fields
accessions array · 0 items
resolved_accessions array · 0 items
statements array · 1 item
can_run object · 3 fields
dsl_operations array · 0 items
assets array · 2 items
steps array · 1 item
must_build object · 5 fields
dsl_operations array · 0 items
converters array · 0 items
readers array · 0 items
capabilities array · 0 items
data_gaps array · 1 item
gaps array · 1 item
review object · 5 fields
machine_critique object · 5 fields
reader object · 5 fields
evidence_check object · 2 fields
usage object · 3 fields
stages array · 1 item
[0] object · 4 fields
gaps array · 3 items
provenance object · 7 fields
entities array · 3 items
activities array · 3 items
[0] object · 4 fields
used array · 3 items
[0] object · 3 fields
[1] object · 3 fields
[2] object · 3 fields
[1] object · 4 fields
agents array · 2 items
lineage object · 4 fields
gaps array · 6 items
assays array · 2 items
[0] object · 11 fields
required_operations array · 0 items
source_hashes object · 1 field
evidence array · 3 items
[1] object · 11 fields
required_operations array · 0 items
source_hashes object · 1 field
evidence array · 3 items
Complete file
{"sci_version": "1.2", "schema": "https://corpus.bntrg.co.uk/sci/1.0/sci.schema.json", "id": "pmid:29881472", "kind": "science-record", "revision": 4, "content_hash": "sha256:c75db4ab585f199197647ee90092fd9233d6c3df2557308dca26febb0c328c84", "created_at": "2026-11-01T15:40:34Z", "updated_at": "2026-11-01T21:21:29Z", "generator": {"name": "corpus-assay-engine", "run_id": "reading-sci-2026-11-01"}, "paper": {"state": "complete", "title": "Identifying mislabeled and contaminated DNA methylation microarray data: an extended quality control toolset with examples from GEO.", "doi": "10.1186/s13148-018-0504-1", "pmid": "29881472", "authors": ["Jonathan A Heiss", "Allan C Just"], "journal": "Clinical epigenetics", "year": 2018, "abstract": "Background: Mislabeled, contaminated or poorly performing samples can threaten power in methylation microarray analyses or even result in spurious associations. We describe a set of quality checks for the popular Illumina 450K and EPIC microarrays to identify problematic samples and demonstrate their application in publicly available datasets.\nMethods: Quality checks implemented here include 17 control metrics defined by the manufacturer, a sex check to detect mislabeled sex-discordant samples, and both an identity check for fingerprinting sample donors and a measure of sample contamination based on probes querying high-frequency SNPs. These checks were tested on 80 datasets comprising 8327 samples run on the 450K microarray from the GEO repository.\nResults: Nine hundred forty samples were flagged by at least one control metric and 133 samples from 20 datasets were assigned the wrong sex. In a dataset in which a subset of samples appear contaminated with a single source of DNA, we demonstrate that our measure based on outliers among SNP probes was strongly correlated (> 0.95) with another independent measure of contamination.\nConclusions: A more complete examination of samples that may be mislabeled, contaminated, or have poor performance due to technical problems will improve downstream analyses and replication of findings. We demonstrate that quality control problems are prevalent in a public repository of DNA methylation data. We advocate for a more thorough quality control workflow in epigenome-wide association studies and provide a software package to perform the checks described in this work. Reproducible code and supplementary material are available at 10.5281/zenodo.1172730.", "claims": [{"id": "claim-method", "statement": "The parameters were estimated using the Metropolis algorithm implemented in the Julia programming language (code is provided the supplement).", "kind": "methodological", "target": null, "evidence": [{"asset": "source:pmid:29881472", "locator": "sections[5] \"Quality checks\" paragraph 8", "quote": "The parameters were estimated using the Metropolis algorithm implemented in the Julia programming language (code is provided the supplement)."}], "state": "complete"}, {"id": "claim-data-access", "statement": "R and Julia code to reproduce all analyses and results presented here, including retrieval of public methylation datasets, as well as other supplementary material, are available at 10.5281/zenodo.1172730. The ewastools R package can be found at https://github.com/hhhh5/ewastools.", "kind": "methodological", "target": null, "evidence": [{"asset": "source:pmid:29881472", "locator": "sections[11] \"Availability of data and materials\" paragraph 2", "quote": "R and Julia code to reproduce all analyses and results presented here, including retrieval of public methylation datasets, as well as other supplementary material, are available at 10.5281/zenodo.1172730. The ewastools R package can be found at https://github.com/hhhh5/ewastools."}], "state": "complete"}, {"id": "claim-target-result", "statement": "The paper applied an ewastools statistical quality-control workflow to 80 public GEO 450K datasets comprising 8,327 samples and found that 940 samples were flagged by at least one manufacturer control metric, while 133 samples from 20 datasets had the wrong recorded sex.", "kind": "qualitative", "target": null, "evidence": [{"asset": "source:pmid:29881472", "locator": "sections[0] \"Abstract\" paragraph 1", "quote": "We describe a set of quality checks for the popular Illumina 450K and EPIC microarrays to identify problematic samples and demonstrate their application in publicly available datasets."}, {"asset": "source:pmid:29881472", "locator": "sections[0] \"Abstract\" paragraph 2", "quote": "These checks were tested on 80 datasets comprising 8327 samples run on the 450K microarray from the GEO repository."}, {"asset": "source:pmid:29881472", "locator": "sections[0] \"Abstract\" paragraph 3", "quote": "Nine hundred forty samples were flagged by at least one control metric and 133 samples from 20 datasets were assigned the wrong sex."}, {"asset": "source:pmid:29881472", "locator": "sections[6] \"Results\" paragraph 2", "quote": "Overall, 940 samples (11%) from 41 datasets (51%) were flagged by at least one of the 17 metrics in control_metrics, leaving 7387 samples that passed this first check."}, {"asset": "source:pmid:29881472", "locator": "sections[6] \"Results\" paragraph 7", "quote": "The function check_sex estimated that 133 of the 8327 samples had been assigned the wrong sex yielding an error rate of 1.6%, with 13 cases being unclear, as the inferred sex was discordant between T¯nX and T¯nY (Fig. 3a). Of the 80 datasets, 20 (25%) contained these sex-mismatched samples."}], "state": "complete"}], "gaps": []}, "experiment": {"state": "partial", "objective": "The paper applied an ewastools statistical quality-control workflow to 80 public GEO 450K datasets comprising 8,327 samples and found that 940 samples were flagged by at least one manufacturer control metric, while 133 samples from 20 datasets had the wrong recorded sex.", "steps": [{"id": "read_published_estimate", "order": 1, "name": "Read the published estimate from the source", "kind": "other", "state": "complete", "blocked_on": null, "description": "The claim, method and evidence span published with the source article.", "duration_hours": null, "parameters": {}, "inputs": ["source:pmid:29881472"], "outputs": ["the published estimate and its evidence"], "instruments": [], "reagents": []}, {"id": "obtain_source_data", "order": 2, "name": "Obtain the source data from the named repository", "kind": "data-preparation", "state": "blocked", "blocked_on": "data:accession_absent", "description": "The GEO series accession resolves and its sample accessions are listed. This lane did not download the dataset or read its licence.", "duration_hours": null, "parameters": {}, "inputs": [], "outputs": ["the source data with its repository provenance"], "instruments": [], "reagents": []}, {"id": "run_analysis", "order": 3, "name": "Run the published analysis", "kind": "analysis", "state": "complete", "blocked_on": null, "description": "Apply the paper's statistical method to the resolved series and compare the result with the published target.", "duration_hours": null, "parameters": {}, "inputs": [], "outputs": ["the replicated result and its comparison"], "instruments": [], "reagents": []}], "materials": [], "instruments": [], "reagents": [], "conditions": {}, "gaps": ["step:obtain_source_data blocked on data:accession_absent"]}, "data": {"state": "partial", "assets": [{"id": "source:pmid:29881472", "role": "manuscript", "format": "xml", "media_type": "application/xml", "uri": "https://doi.org/10.1186/s13148-018-0504-1", "sha256": "sha256:edfbdaa5d8e14fd7677d4c4203decd509ce6476331fad0e15906275b3fc57183", "bytes": 37880, "access": "open", "state": "resolved", "reader": null, "reader_status": "reader_required", "identifier": "10.1186/s13148-018-0504-1", "version": null, "note": "Full article fetched from PMC; the checksum covers the rendered section body, not the original XML bytes.", "structure": {"pmcid": "PMC5984806", "source": "europe_pmc_fulltext", "coverage": "whole_body", "text_hash_scope": "rendered_section_body"}}, {"id": "asset:table:pmid:29881472:1", "role": "table", "format": "jats-table", "media_type": "application/vnd.jats.table+json", "uri": null, "sha256": "sha256:571213a2821962221cc5f4c48241d28e5baefd55d8d44fba4823148cc82ab4c0", "bytes": 1053, "access": "open", "state": "verified", "reader": "read_table", "reader_status": "available", "identifier": "section[6]/table-wrap[1]#Tab1", "version": null, "note": "Summary of the number of samples flagged by each of the 17 control metrics outlined in the BeadArray controls reporter software guide. n.a.—not available", "structure": {"pmcid": "PMC5984806", "section_index": 6, "section_title": "Results", "row_count": 19, "column_count": 4}, "table": {"label": "Table 1", "caption": "Summary of the number of samples flagged by each of the 17 control metrics outlined in the BeadArray controls reporter software guide. n.a.—not available", "rows": [["Metric", "Passed", "Flagged", "n.a."], ["Restoration", "8326", "0", "1"], ["Staining green", "7885", "10", "432"], ["Staining red", "7764", "14", "549"], ["Extension green", "8324", "3", "0"], ["Extension red", "8326", "1", "0"], ["Hybridization high/medium", "8326", "1", "0"], ["Hybridization medium/low", "8327", "0", "0"], ["Target removal 1", "8327", "0", "0"], ["Target removal 2", "8327", "0", "0"], ["Bisulfite conversion I green", "8317", "10", "0"], ["Bisulfite conversion I red", "8208", "119", "0"], ["Bisulfite conversion II", "7950", "377", "0"], ["Specificity I green", "8323", "4", "0"], ["Specificity I red", "8279", "48", "0"], ["Specificity II", "8326", "1", "0"], ["Non-polymorphic green", "7677", "558", "92"], ["Non-polymorphic red", "7917", "318", "92"], ["Any of the above", "7387", "940", "–"]], "row_count": 19, "column_count": 4, "numeric_cells": 55, "header_rows": 1, "locator": "section[6]/table-wrap[1]#Tab1"}}], "gaps": []}, "analysis": {"state": "partial", "methods": [{"id": "method-1", "family": null, "specific": null, "label": "Metropolis algorithm", "dsl_operations": [], "missing_operations": [], "expressible": null, "parameters": {}, "data_shapes": [], "evidence": {"score": 1.0, "band": "verbatim", "quote": "The parameters were estimated using the Metropolis algorithm implemented in the Julia programming language (code is provided the supplement)."}}], "targets": [], "gaps": ["method.reader_named_unmapped"]}, "capability": {"state": "complete", "requirements": [{"capability_id": "capability:computational_analysis", "label": "Computational analysis platform", "assay_families": ["meta_analysis", "machine_learning", "survival_analysis", "statistical_regression", "pca", "molecular_docking", "network_analysis", "differential_expression", "gwas"], "availability_state": "owned", "tier_unlocked": "R1", "candidate": "Automated Assays Laravel application and simulated adapters"}], "gaps": []}, "readiness": {"state": "blocked", "tier": "R4", "blocking_axis": "data", "blocked_on": "data:accession_absent", "axes": {"method": {"tier": "R4", "expressible": false, "required_operations": [], "missing_operations": [], "basis": "The reader quoted the method the paper names (Metropolis algorithm), but the corpus's method extractor could not map it onto a DSL operation, so the method is published but not expressible."}, "capability": {"tier": "R1", "capability_id": "capability:computational_analysis", "availability_state": "owned", "basis": "The computational analysis is owned. The physical bench the paper used is not, so a physical validation cannot be run here."}, "data": {"tier": "R4", "reachable": false, "accessions": [], "resolved_accessions": [], "statements": ["R and Julia code to reproduce all analyses and results presented here, including retrieval of public methylation datasets, as well as other supplementary material, are available at 10.5281/zenodo.1172730. The ewastools R package can be found at https://github.com/hhhh5/ewastools."], "basis": "The paper names no accession to its source data, so the data has to come from the authors."}}, "can_run": {"dsl_operations": [], "assets": ["source:pmid:29881472", "asset:table:pmid:29881472:1"], "steps": ["run_analysis"]}, "must_build": {"dsl_operations": [], "converters": [], "readers": [], "capabilities": [], "data_gaps": ["data:geo:None"]}, "gaps": ["data:accession_absent"]}, "review": {"state": "partial", "machine_critique": {"kind": "extraction_review", "reader": {"model": "MiniMax-M3.1-Flash", "provider": "minimax", "provider_family": "minimax", "read_at": "2026-10-31T18:34:41Z", "independence": "same_provider"}, "evidence_check": {"method": "verbatim", "availability": "verbatim"}, "calls": 8, "usage": {"prompt_tokens": 71172, "completion_tokens": 3214, "cached_tokens": 18464}}, "human_critique": null, "stages": [{"id": "extraction", "state": "complete", "reader": "MiniMax-M3.1-Flash", "provider": "minimax"}], "gaps": ["review.independent_reader", "review.machine_critique", "review.human_critique"]}, "execution": {"state": "absent", "status": "not_run", "mode": null, "runs": [], "gaps": ["execution.not_run"]}, "provenance": {"entities": [{"id": "pmid:29881472", "type": "paper", "label": "pmid:29881472"}, {"id": "source:pmid:29881472", "type": "manuscript", "label": "PMID 29881472 full text"}, {"id": "data:geo:None", "type": "dataset", "label": "GEO None"}], "activities": [{"id": "activity-reading-sci-2026-11-01", "type": "classification", "used": [{"id": "pmid:29881472", "type": "paper", "label": "pmid:29881472"}, {"id": "source:pmid:29881472", "type": "manuscript", "label": "PMID 29881472 full text"}, {"id": "data:geo:None", "type": "dataset", "label": "GEO None"}], "agent": "agent:corpus-assay-engine"}, {"id": "activity-read-29881472", "type": "extraction", "used": ["source:pmid:29881472"], "agent": "agent:minimax-reader"}, {"id": "activity-resolve-None", "type": "accession_resolution", "used": ["data:geo:None"], "agent": "agent:corpus-assay-engine"}], "agents": [{"id": "agent:corpus-assay-engine", "type": "software", "label": "Corpus assay engine"}, {"id": "agent:minimax-reader", "type": "software", "label": "MiniMax literature reader"}], "source_run_id": "reading-sci-2026-11-01", "dsl_catalogue_fingerprint": "343fb30756ba6ec3", "capability_table_fingerprint": "2cb3e42f047d2ecf", "snapshot_id": "ba34b49490d9bfaf"}, "lineage": {"parent_id": "pmid:29881472", "parent_hash": "sha256:5426a3e3699f225f47259c08ff998af8b6307b5af15b5240d75e48e042571506", "fork_of": null, "generation": 3}, "gaps": ["execution.not_run", "method.reader_named_unmapped", "review.human_critique", "review.independent_reader", "review.machine_critique", "step:obtain_source_data blocked on data:accession_absent"], "assays": [{"role": "data_generation", "definition_id": "microarray", "definition_version": "99e1195c7d6f", "definition_digest": null, "required_operations": [], "support_state": "partial", "source_hashes": {"assay_lexicon": "99e1195c7d6f"}, "confidence": 0.99, "evidence": ["mislabeled and contaminated DNA methylation microarray data: an extended quality control toolset wi", "ng samples can threaten power in methylation microarray analyses or even result in spurious associat", "sets comprising 8327 samples run on the 450K microarray from the GEO repository. Results: Nine hundr"], "order_basis": "paper_text_order:12", "id": "assay:1"}, {"role": "data_generation", "definition_id": "methylation_array", "definition_version": "99e1195c7d6f", "definition_digest": null, "required_operations": [], "support_state": "partial", "source_hashes": {"assay_lexicon": "99e1195c7d6f"}, "confidence": 0.99, "evidence": ["t of quality checks for the popular Illumina 450K and EPIC microarrays to identify problematic", "ity checks for the popular Illumina 450K and EPIC microarrays to identify problematic samples", "datasets comprising 8327 samples run on the 450K microarray from the GEO repository. Results:"], "order_basis": "paper_text_order:310", "id": "assay:2"}]}