Why Audit the Tables Before Integration?
A multi-omics data set is not one homogeneous matrix. Its layers can record different molecular targets, use different measurement scales, and represent features at different levels of granularity. Even if every table is numeric, a value of 0 may mean an observed genotype dosage in one table and a measured zero count in another; it is not interchangeable with a blank cell. Before analysis, an audit checks that each table means what its labels and documentation claim.
This tutorial uses a fully hypothetical data set with four sample identifiers, S01–S04, and five assay tables. The goal is to identify structural and measurement issues, not to test a biological hypothesis or decide how layers should be integrated. The earlier material on sample-by-feature matrices establishes the basic layout used here: samples are rows and features are columns.
What the Audit Requires
A defensible audit starts with an assay-specific data dictionary or equivalent documentation. It should state what a row represents, what each feature represents, the expected measurement scale and units, how missing values are encoded, and which identifiers label samples and features. This information is essential: a column of numbers cannot, by itself, show whether it contains raw counts, normalized abundance, or a transformed signal.
The checks below assume that the intended sample-by-feature orientation and identifier roles have been declared, that missing values have been converted to one recognizable representation such as NA, and that each table is intended to contain a rectangular set of sample-feature cells. If some cells are deliberately not applicable, they must be marked as such in the documentation rather than silently counted as ordinary missing observations.
The five hypothetical tables have these declared contents. The displayed features are illustrative and do not imply that the measurements can be compared directly across layers.
| Layer | Feature examples and granularity | Declared measurement | Table size |
|---|---|---|---|
| Genomic | Three variant loci: rs101, rs205, rs330 | Allele dosage, copies on a 0–2 scale | 4 samples × 3 loci |
| Transcriptomic | Three gene-level features: GENE_A, GENE_B, GENE_C | Raw RNA-sequencing counts | 4 samples × 3 genes |
| Epigenomic | Two CpG-site features: CpG_17, CpG_42 | Methylation fractions from 0 to 1 | 4 samples × 2 sites |
| Proteomic | Two protein-level features: PROT_A, PROT_B | Log2-transformed instrument intensity, on a unitless log2 scale | 4 samples × 2 proteins |
| Metabolomic | Three detected-peak features: peak_11, peak_12, peak_13 | Peak area in arbitrary instrument units | 4 samples × 3 peaks |
“Three detected peaks” is not equivalent to “three identified compounds.” A peak is a measured signal feature; its correspondence to a compound depends on identification evidence. Likewise, a CpG site is a different feature granularity from a broader genomic region. The earlier material on feature granularity and cross-layer mapping provides the relevant vocabulary; in this audit, the task is to check whether the table’s feature labels and documentation agree.
A Reproducible Audit Sequence
Compare the stated target, scale, and units with the assay documentation. Do not infer a unit or transformation from the size or appearance of the numbers alone.
Confirm that each column label refers to the declared kind of feature, such as a locus, gene, CpG site, protein, or detected peak. Keep feature-level distinctions visible.
Verify that row labels are sample identifiers, column labels are feature identifiers, and identifiers are unique in their stated role. Compare the observed dimensions and labels with the expected schema.
Count missing cells and calculate a rate using that assay’s own number of expected cells. Inspect feature-level patterns as well as the table-wide count.
Distinguish what the table demonstrates from what needs documentation or follow-up. A structural check cannot explain a missing value or validate a biological interpretation.
For a table with \(n\) sample rows and \(p\) feature columns, let \(I_{ij}=1\) if cell \((i,j)\) is missing and \(I_{ij}=0\) otherwise. The total missing-cell count is \(M=\sum_{i=1}^{n}\sum_{j=1}^{p} I_{ij}\). When every one of the \(np\) cells is expected to have a measurement, the missing-cell rate is \(M/(np)\). This is a descriptive fraction of table cells, not a probability that a particular value is missing under a statistical model.
Worked Audit of the Five Tables
Worked Example: Counting Missing Cells Across Assays
Suppose the five hypothetical tables have the dimensions and missing cells shown in the audit. The RNA table has one NA, the epigenomic table has one, the proteomic table has one, and the metabolomic table has two. The genomic table has none. Assume all cells in these stated dimensions are expected measurements.
For the genomic table, \(n p=4\times3=12\) cells, so its missing rate is \(0/12=0\%\). For RNA, \(M=1\), giving \(1/12=0.08333\), or 8.333%. For the epigenomic and proteomic tables, each has \(4\times2=8\) cells and one missing cell, so each rate is \(1/8=0.125\), or 12.50%. For metabolomics, \(M=2\) of \(4\times3=12\) cells, giving \(2/12=0.1667\), or 16.67%.
Adding cells across the five tables gives \(12+12+8+8+12=52\) cells and \(0+1+1+1+2=5\) missing cells. The pooled arithmetic fraction is \(5/52=0.09615\), or 9.615%. That pooled number is not a substitute for the assay-specific rates: it combines different measurement types and gives more weight to tables with more cells. The audit should report the five rates separately.
The calculation depends on the stated denominator. If a cell is not part of the assay’s intended measurement set, it should not automatically be counted as an ordinary missing value. Conversely, an observed zero remains an observed value when the assay’s scale allows zero. In the RNA table, for example, a raw count of 0 is not the same as NA.
Worked Example: Detecting a Transposed Table
A hypothetical epigenomic file is declared to contain samples in rows and CpG sites in columns, with four sample identifiers and two feature identifiers. On inspection, its row labels are CpG_17 and CpG_42, while its column labels are S01, S02, S03, and S04. Its numerical dimensions are therefore \(2\times4\), not the expected \(4\times2\).
The mismatch between the declared roles and the labels is direct evidence that the file is oriented opposite to the declared sample-by-feature layout. If the entries are otherwise arranged consistently, transposing the table produces \(4\times2\): sample IDs become row labels, and CpG-site IDs become column labels. The audit should verify both the new dimensions and the resulting labels against the data dictionary before accepting that correction.
Dimensions alone are not enough to diagnose orientation: an accidental table with equal numbers of samples and features could have a square shape in either orientation. Nor should software transpose a table merely because its dimensions “look wrong.” The row and column identifiers, expected schema, and documentation jointly determine whether a transpose is justified.
Worked Example: Separating Missingness From Observed Zeros
Consider the hypothetical RNA table below. Its declared scale is raw gene-level counts, and its row labels are sample IDs.
| Sample ID | GENE_A | GENE_B | GENE_C |
|---|---|---|---|
| S01 | 10 | 0 | 5 |
| S02 | 12 | 2 | NA |
| S03 | 8 | 1 | 4 |
| S04 | 0 | 3 | 7 |
There are \(4\times3=12\) cells and exactly one NA, so the table-wide missing rate is \(1/12=8.333\%\). By feature, GENE_A has \(0/4=0\%\) missing, GENE_B has \(0/4=0\%\), and GENE_C has \(1/4=25.00\%\) missing. The entries 0 for GENE_B in S01 and GENE_A in S04 are observed counts, not missing cells. Treating every zero as missing would incorrectly report three missing cells, or \(3/12=25.00\%\), rather than the one explicitly marked NA.
The table alone does not establish why the GENE_C measurement is absent. A missing cell could reflect a technical failure, a data-processing choice, or another documented cause. It must not be silently changed to zero or given a biological explanation without supporting information.
Measurement and Identifier Checks in Context
The data dictionary also allows a quick plausibility check for the declared scales. Genomic values should be interpretable as allele dosages on the specified 0–2 scale; methylation fractions should fall from 0 to 1; and raw RNA counts should be nonnegative count values. Such checks can reveal discrepancies—for example, a methylation value of 1.4 conflicts with a declared fraction—but passing them does not prove that units or preprocessing are correct. A transformed value may still be numerically plausible under the wrong label.
Identifier checks are similarly structural. In this hypothetical audit, each table is expected to use S01–S04 as sample row labels, and each feature label should identify one column within its table. Check for duplicate labels, blank labels, and unexpected or absent IDs. A duplicate feature label can make two distinct columns appear to be one feature; a sample label placed among feature columns can signal an import or orientation error. Consistent strings across tables do not, on their own, prove a biological mapping or justify a particular integration design.
Diagnostics, Alternatives, and Limitations
A manual inspection is useful for a small table because it makes labels and values easy to see, but it becomes unreliable as tables grow. A schema-based check can compare expected row and column roles, dimensions, allowed value ranges, uniqueness, and missing-value counts automatically. The strongest routine combines the two: automated checks find discrepancies consistently, while targeted inspection helps determine whether an alert reflects an actual error or an exception documented by the assay.
Several warning signs call for investigation rather than automatic correction:
- A declared unit or scale conflicts with the assay documentation, or values fall outside a stated range.
- Row labels look like feature IDs, column labels look like sample IDs, or dimensions do not match the expected feature count.
- Sample or feature identifiers are duplicated, blank, or unexpected.
- Zeros, empty strings, sentinel numbers, and NA are used inconsistently to represent absence.
- Missingness is concentrated in particular features, even when the overall rate appears modest.
A table audit does not determine whether missingness is random, identify the cause of a missing value, validate the assay experimentally, or make features comparable across layers. It also does not choose an imputation method or decide which transformations are appropriate. Those questions require additional evidence and analysis. In particular, a low overall missing rate can conceal one feature with substantial missingness, while a high rate does not, by itself, tell you why measurements are absent.
Check Your Understanding
Answer each question, then compare your reasoning with the solutions.
- A table has five sample rows and four feature columns, with three NA cells. What is its missing-cell rate, assuming all cells are expected measurements?
- A metabolomic column is labelled as an identified compound, but the documentation says it represents a detected peak with no compound identification. What should the audit record?
- A count table contains values 0 and NA. Why should they not be counted as the same thing?
- A table has four rows and four columns, but its row labels are feature IDs and its column labels are sample IDs. Can its square dimensions establish the intended orientation?
Solutions. (1) There are \(5\times4=20\) cells, so the rate is \(3/20=0.15\), or 15.00%. (2) Record a discrepancy between the feature label and documented granularity; the column represents a detected peak, not an identified compound. Do not relabel it as a compound without supporting identification evidence. (3) Zero is an observed numerical value on the count scale; NA marks an absent measurement. Counting zero as missing changes the measured missingness rate. (4) No. A square shape is compatible with either orientation. Use the row and column labels and the declared schema to identify the roles, then verify any proposed transpose.