ICH M7 Classification: Class 1 to 5, by Example
ICH M7 classification explained class by class, with the dual (Q)SAR assessment and five real impurities scored live by CovaTox, including NDMA and.
Oliver Kraft
CovaSyn

An impurity shows up at 0.08 percent in a registration batch and someone asks which ICH M7 class it is. The guideline gives you five classes and a two-method assessment, but it does not tell you how the two methods behave when they disagree. This article walks the five classes, shows what the dual assessment actually returns, and scores five real impurities with covatox_ich_m7 so you can see where the boundaries sit.
The five ICH M7 classes, in one table
ICH M7(R2) sorts every actual or potential impurity into one of five classes. The class determines the control strategy, not the analytical method.
| Class | Definition | Control consequence |
|---|---|---|
| 1 | Known mutagenic carcinogen | Control at or below the compound-specific acceptable intake |
| 2 | Known mutagen, carcinogenic potential unknown | Control at or below the acceptable limit (TTC based, unless cohort of concern) |
| 3 | Alerting structure, unrelated to the API, no mutagenicity data | Control at the TTC limit, or run a bacterial mutagenicity assay to reclassify to 5 or 2 |
| 4 | Alerting structure shared with the API or with a tested, non-mutagenic relative | Treat as non-mutagenic, ICH Q3A/Q3B applies |
| 5 | No structural alert, or an alert with data showing no mutagenicity | Treat as non-mutagenic, ICH Q3A/Q3B applies |
The practical split is Class 1/2/3 on one side (mutagenic impurity control, typically the 1.5 ug/day TTC for lifetime exposure) and Class 4/5 on the other (ordinary impurity qualification). Class 3 is where most software output lands, and it is the class that costs money, because it means either an Ames test or a tight specification.

The dual assessment: why two methods
ICH M7 asks for two complementary (Q)SAR methodologies for bacterial mutagenicity: one expert rule-based, one statistical. They are not redundant. The rule set encodes mechanism that a model trained on Ames data cannot express defensibly. The statistical model catches structures no rule covers, and it disagrees with the rules often enough to be worth running.
covatox_ich_m7 runs both in one call and returns both results, not a merged verdict:
- Expert rule component - SMARTS structural alerts, each with the matched atom indices, an evidence level, a mechanism string and a literature reference (Benigni and Bossa 2006, Ashby and Tennant 1988, Toxtree ISS, IARC Monographs).
- Statistical component - an Ames mutagenicity probability from the CovaTox QSAR model, with a confidence value.
If both are negative, ICH M7 allows Class 5 with no further testing. If either is positive, you are in expert-review territory.
Five impurities, scored live
All five were run through covatox_ich_m7 on 2026-07-25. Values are verbatim tool output.
| Impurity (SMILES) | Alert fired | Statistical Ames score | Confidence | ICH class |
|---|---|---|---|---|
NDMA CN(C)N=O | nitrosamine (evidence high) | 0.6905 | 0.628 | 2 |
Ethyl methanesulfonate CCOS(=O)(=O)C | alkyl_sulfonate_ester (high) | 0.7215 | 0.656 | 2 |
Nitrobenzene O=[N+]([O-])c1ccccc1 | 4 alerts: aromatic_nitro, nitroso, aromatic_nitroso, n_hydroxy_amine | 0.1677 | 0.848 | 3 |
Aniline Nc1ccccc1 | aromatic_amine (high) | 0.1677 | 0.848 | 3 |
Benzoic acid O=C(O)c1ccccc1 | none | 0.0685 | 0.438 | 5 |
Read the table by column, not by row. The class is decided by the combination.
NDMA lands in Class 2 because both methods agree.
The nitrosamine alert fires with evidence level high and the mechanism string "CYP2E1 activation to diazonium ion -> DNA alkylation", referenced to the IARC Monographs. The statistical model returns 0.6905, above threshold. Rule positive plus model positive is the Class 2 pattern.
Aniline lands in Class 3 because the methods disagree.
The aromatic_amine alert fires with the same evidence level, mechanism "Metabolic activation to nitrenium ion -> DNA adduct". The statistical model returns 0.1677, negative. An alert with a negative statistical result and no compound-specific data is exactly the Class 3 definition. This is the useful case: the tool does not upgrade a compound just because a scary functional group is present.
Nitrobenzene fires four alerts and still lands in Class 3.
Alert count is not risk. Three of the four matches come from overlapping SMARTS on the same nitro group. The statistical model returns 0.1677, negative, so the classification logic behaves the same as for aniline.
Benzoic acid is Class 5 on a clean sweep.
No alerts, statistical score 0.0685. That is the "no further testing" outcome ICH M7 permits.
Worked example: a five-impurity batch against an API
covatox_assess_ichm7_batch takes up to 50 impurity SMILES plus the API SMILES and returns the per-impurity classification, a class distribution, the worst-case impurity and a Tanimoto similarity to the API. Run with aspirin (CC(=O)Oc1ccccc1C(=O)O) as the API and the five impurities above:
class_counts: {1: 0, 2: 2, 3: 2, 4: 0, 5: 1}
highest_risk_impurity: CN(C)N=O
ttc_assessment: applicable = false, threshold_ug_day = 0.0
note: "Class 2 (probable mutagen): TTC not applicable;
control/elimination required."
similarity_to_api: NDMA 0.0645 | EMS 0.0857 | nitrobenzene 0.2121
aniline 0.2069 | benzoic acid 0.3571Two things to take from that output.
First, the similarity column is what feeds a Class 4 argument. Class 4 exists for impurities that carry the *same* alert as the API, where the API's own mutagenicity data covers the impurity. None of these five is structurally close to aspirin (highest Tanimoto 0.357), so Class 4 was never available here. If your impurity is a des-methyl or hydroxy analogue of the API, that is where you look.
Second, the TTC note is a trigger, not a limit. The tool refuses to hand out a numeric threshold for a Class 2 hit. ICH M7 does allow the 1.5 ug/day TTC for most Class 2 impurities at lifetime exposure. But nitrosamines are cohort of concern, where the TTC does not apply and compound-specific limits are required. Setting that number is a human toxicologist's job. The tool gets you to the point where you know you need one.
How good is the statistical half
The Ames model is the part of the dual assessment that carries a measurable error rate, so here it is.
- CovaTox Ames model, scaffold-split holdout: balanced accuracy 0.736 (n_test = 1089). Random split on the same endpoint: 0.848. The scaffold number is the honest one - it holds out entire molecular cores, which is what a novel process impurity looks like.
- TDC ADMET official split, 5-seed retrain: AUROC 0.847 +/- 0.013 (n_test = 1457). Trained on the TDC train split only and scored by TDC's own evaluator, so it is directly comparable to published entries. Source:
CovaTox/benchmarks/tdc_results.json, run 2026-05-23.

A balanced accuracy of 0.736 on unseen scaffolds is useful for triage. It is not an Ames test.
What this does not tell you
- It is not a regulatory classification. The class is a documented starting point for expert review. ICH M7 requires expert knowledge to be applied on top of the (Q)SAR output, and a filing needs a human-signed rationale.
- It does not set an acceptable intake. No compound-specific AI, no less-than-lifetime adjustment, no cohort-of-concern limit. The batch tool deliberately returns
threshold_ug_day = 0.0for Class 2 rather than guessing. - The statistical score is a probability, not a measurement. Aniline and nitrobenzene both returned exactly 0.1677 with confidence 0.848 - two different molecules, the same output. Treat the class and the named alert as the decision unit; do not build an argument on the third decimal.
- Confidence is not calibrated risk. Benzoic acid, the clean Class 5 case, came back with the lowest confidence of the five (0.438). Low confidence on a clean molecule means the model has little to say, not that the molecule is suspect.
- It does not cover Class 1. Class 1 requires known rodent carcinogenicity data. That is a database lookup against IARC, CPDB or a regulatory list, not a prediction.
- Out-of-domain compounds. Run
covatox_check_domainbefore trusting a score on an unusual scaffold. Outside the training domain, treat the result as "no statistical result available", which under ICH M7 pushes an alerting compound to Class 3 anyway.
Frequently asked questions
What are the five ICH M7 classes?
Class 1 is a known mutagenic carcinogen. Class 2 is a known mutagen with unknown carcinogenic potential. Class 3 has an alerting structure unrelated to the API and no mutagenicity data. Class 4 has an alerting structure shared with the API or with a tested non-mutagenic relative. Class 5 has no alert, or an alert with data showing no mutagenicity. Classes 1 to 3 need mutagenic impurity control; 4 and 5 fall under ICH Q3A/Q3B.
Why does ICH M7 require two (Q)SAR methods?
ICH M7 asks for one expert rule-based and one statistical methodology for bacterial mutagenicity, because they fail differently. Rule sets encode mechanism and give a citable rationale but miss structures no rule covers. Statistical models generalise but cannot explain themselves without extra work. If both are negative, the guideline permits Class 5 with no further testing. If they disagree, expert review decides.
Why is NDMA Class 2 and aniline Class 3?
Both fire a high-evidence structural alert. The difference is the statistical half. In covatox_ich_m7, NDMA returns an Ames probability of 0.6905 (positive), so rule and model agree and the result is Class 2. Aniline returns 0.1677 (negative), so an alert stands without statistical support and without compound-specific data, which is the Class 3 definition.
What TTC applies to a Class 3 impurity?
The default threshold of toxicological concern in ICH M7 is 1.5 ug/day for lifetime exposure, with higher less-than-lifetime values for shorter treatment durations. Class 3 impurities are controlled at that limit, or reclassified by running a bacterial reverse mutation (Ames) test: negative moves it to Class 5, positive moves it to Class 2. Cohort-of-concern compounds such as nitrosamines are excluded from the TTC.
Can a (Q)SAR classification replace an Ames test?
For Class 5 outcomes, ICH M7 accepts two negative complementary (Q)SAR predictions in place of testing, with expert justification. For anything alerting, no. A scaffold-split balanced accuracy of 0.736 on 1089 held-out compounds is triage quality: it tells you which impurities deserve a test slot and which specification to tighten, not what the test will say.
How many impurities can be assessed at once?
covatox_assess_ichm7_batch accepts up to 50 impurity SMILES per call, plus an optional API SMILES for Tanimoto similarity. It returns each impurity's class, the class distribution, the worst-case impurity and a TTC applicability note. The similarity column is what supports or rules out a Class 4 argument.
Related reading
Run your own impurity list through covatox_ich_m7 on the free tier and see the alerts, mechanisms and references it returns before you commit an Ames slot.
- Nitrosamine Risk Assessment: An ICH M7 Workflow
- PBT Assessment for Pharmaceuticals: Very Toxic Is Not PBT
- Applicability Domain in QSAR: When a Model Says I Don't Know
Tools for this topic
Use these in your AI agent right away.
- CovatoxICH M7, Tox21, CYP450, structural alerts, ADMET triage.
