Extractables and Leachables: A Screening Workflow
A structure-first extractables leachables screening workflow: match peaks to known additives, set the AET, then hand structures to toxicological triage.
Oliver Kraft
CovaSyn

An extractables study gives you a peak list, often 200 to 600 features. The hard part is not acquiring it. The hard part is deciding which peaks are above the analytical evaluation threshold, which of those you can name, and which named compounds actually carry a toxicological question. This article walks the screening half of that workflow with real tool output, and is explicit about where the automation stops.
The order the decisions actually happen in
USP <1663> covers the extractables study design (exaggerated conditions, multiple solvents, container closure components). USP <1664> covers leachables, the subset that migrates into the drug product under real storage. In practice you run four steps, in this order:
1. Set the AET. Below it you do not report. Above it you must identify. 2. Match what is matchable. Common polymer additives are a known, finite list. Hit them first. 3. Escalate the rest. Unmatched peaks above AET go to formula determination and MS/MS. 4. Hand structures to toxicology. Only once you have a structure does the safety question become answerable.
Steps 2 and 4 are where a structure-first toolchain earns its place. Steps 1 and 3 stay judgement-heavy.
Step 1: the AET is an arithmetic step, not a model
The AET is derived, not predicted. In the common form:
AET = (SCT [ug/day] / daily dose [containers or mL per day]) x (1 / response factor uncertainty)The safety concern threshold is set by the dosage form. PQRI recommended 0.15 ug/day as the SCT for orally inhaled and nasal drug products, and the same value for parenteral and ophthalmic products in its later recommendation. For mutagenic impurities, ICH M7 sets the TTC at 1.5 ug/day for durations up to 10 years. You then apply an uncertainty factor to the estimated AET because you are quantifying unknowns against a surrogate response factor, commonly by dividing by 1.5 to 2.
No tool should hand you this number. It depends on your dose, your container count, your dosage form and your RF database. Compute it, document the assumptions, and use it as the cut line for everything below.
Step 2: match the known additive list
covams_extractables_leachables screens a peak list against a curated additive library for a given container type. It matches on protonated monoisotopic mass at a 20 ppm window, which is deliberately wide for a first pass.
Run on a seven-peak list from a polymer container extract (container_type: "plastic"), it returned four identifications:
| Peak m/z | Assigned | Formula | Mass error |
|---|---|---|---|
| 229.1223 | Bisphenol A | C15H16O2 | 1.31 ppm |
| 391.2843 | DEHP | C24H38O4 | 0.77 ppm |
| 282.2791 | Oleamide | C18H35NO | 0.35 ppm |
| 338.3417 | Erucamide | C22H43NO | 0.89 ppm |
Overall risk_level came back "high", which in this tool is a count rule (more than three hits) and not a toxicological verdict. Three peaks did not match: 647.4587, 1177.7914 and 114.0913. The same call with container_type: "rubber" on a stopper extract assigned m/z 221.190 to BHT at 0.00 ppm error and returned risk_level: "medium" on one hit.
Be clear about what this is.
The shipped library is a small curated set of the most frequent additives per container type, not an exhaustive E&L information system. It matches [M+H]+ only, so additives that ionise better as [M+NH4]+, [M+Na]+ or [M-H]- will not hit even when present. Treat a match as a hypothesis to confirm against a reference standard, and treat a non-match as no information at all.
Step 3: unmatched peaks go to formula determination
The 647.4587 peak from the run above is a typical unknown: high intensity, late retention, no library entry. covams_formula at a 5 ppm window returned 45 candidate formulae. The top-ranked one was C42H63O3P, exact mass 646.45148, mass error 0.0926 ppm, RDBE 12, overall score 0.9815. That is consistent with Irgafos 168, a very common phosphite antioxidant.
It is also where the honesty matters. The second candidate, C32H62N4O9, scored 0.9199 on mass error but carried a *higher* Bayesian plausibility score (0.3406 versus 0.2114). Forty-five formulae fit inside 5 ppm at m/z 647. Accurate mass alone does not identify anything at that mass range. You need the isotope pattern (a P-containing formula has a distinctive envelope), MS/MS fragments, and ideally a retention time match to a standard. The tool ranks candidates; it does not close the identification.
Step 4: structures go to toxicological triage
Once you have structures, the question changes from analytical to toxicological. covatox_screen_batch in quick mode (Ames, hERG, DILI) across the five confirmed and suspected compounds returned all five as overall_risk: "medium", with these composite risk scores:
- Caprolactam 0.418 (flagged as the worst compound in the batch)
- DEHP 0.387
- Bisphenol A 0.340
- Oleamide 0.104
- BHT 0.101

The individual predictions are more informative than the composite. DEHP returned hERG 0.2754 against a 0.2 decision threshold, marked in_domain: true with nearest training similarity 1.0 and production launch tier, plus DILI 0.0436 at confidence 0.9128, also in domain. Those two are usable signals.
The Ames output on the same batch is not. Bisphenol A, DEHP, BHT and oleamide all returned exactly 0.0685, every one flagged in_domain: false, nearest_similarity: 0.0, confidence_modifier: 0.1, launch tier experimental. That is the model returning its base rate and telling you so. Polymer additives are chemically far from the drug-like Ames training set. Do not read 0.0685 as "not mutagenic." Read it as "this model has nothing to say about this molecule."

For context on where the models are calibrated: the CovaTox hERG classifier scores AUROC 0.856 on a scaffold-split holdout of n=7500, and the Ames classifier 0.736 balanced accuracy scaffold-split (0.848 random-split) on n=1089. Good numbers inside the domain; irrelevant outside it, which is exactly what the applicability domain flag is for.
The ICH M7 read is the one that drives action
For the mutagenicity question specifically, covatox_ich_m7 runs a dual assessment (structural alerts plus statistical model):
- Bisphenol A: Class 3. One alert fired,
quinone_methide_precursor(SMARTSOc1ccc(C)cc1, mechanism "oxidation to quinone methide, Michael addition to DNA", evidence strength labelled *low*, ref Bolton et al. 2000). Statistical score 0.0685, statistical call negative. Confidence 0.588. Class 3 means alerting structure, unrelated to the API, with no mutagenicity data: control at the TTC or generate an Ames test. - Caprolactam: Class 5. No alerts, statistical score 0.1677, negative. Confidence 0.348. Class 5 is treat as non-mutagenic, but note the low confidence value and that the statistical arm was out of domain here too.
The Class 3 verdict on BPA is the actionable output of the whole chain. It converts a peak at m/z 229.1223 into a specific next experiment.
What this workflow does not tell you
- It does not quantify. Every number above is an identification or a hazard score. Concentration against the AET requires your calibration and your response factors.
- It does not confirm identity. A 20 ppm library match and a top-ranked formula are hypotheses. Regulatory identification needs a reference standard, or at minimum matching MS/MS and retention time.
- It does not do the toxicological risk assessment. A qualified toxicologist reads the ICH M7 class, the PDE derivation and the exposure calculation. The tools narrow the list they read.
- The additive library is small and container-typed. Absence of a hit is not absence of a compound.
- Out-of-domain predictions are labelled and should be ignored, not discounted. Four of five Ames calls in this batch were out of domain.
Frequently asked questions
What is the analytical evaluation threshold (AET) in an E&L study?
The AET is the concentration above which an extractable or leachable must be reported and identified. It is calculated, not predicted: divide the safety concern threshold for the dosage form by the maximum daily dose (containers or mL per day), then apply an uncertainty factor for response factor variability, commonly a division by 1.5 to 2. PQRI recommended an SCT of 0.15 ug/day for orally inhaled, nasal, parenteral and ophthalmic products.
What is the difference between USP <1663> and USP <1664>?
USP <1663> covers extractables: what comes out of a packaging or manufacturing component under exaggerated conditions such as aggressive solvents, elevated temperature and long contact. USP <1664> covers leachables: what actually migrates into the drug product under normal storage and use. Extractables define the worst-case candidate list. Leachables define what a patient is actually exposed to, and are usually a small subset.
Can software identify an unknown extractable from accurate mass alone?
No. At m/z 647 with a 5 ppm window, covams_formula returned 45 candidate formulae. The top hit by mass error was C42H63O3P at 0.09 ppm, consistent with Irgafos 168, but a competing formula scored higher on Bayesian plausibility. Accurate mass narrows candidates. Confirmation requires the isotope pattern, MS/MS fragmentation, and a retention time match to a reference standard.
How should mutagenicity be assessed for an identified leachable?
Use the ICH M7 dual approach: an expert-rule structural alert system plus a statistical QSAR model. In our run, covatox_ich_m7 classified bisphenol A as Class 3, one alerting structure (quinone methide precursor) with a negative statistical call, meaning control at the TTC of 1.5 ug/day or generate an Ames test. Caprolactam came back Class 5, no alerts, treat as non-mutagenic.
Why do in-silico tox models sometimes return the same value for different compounds?
Because they are out of applicability domain and returning a base rate. Four polymer additives in our batch returned an identical Ames probability of 0.0685, each flagged in_domain: false with nearest training similarity 0.0 and confidence modifier 0.1. Polymer additives sit far from drug-like training data. A model that flags this is behaving correctly; the value should be discarded, not treated as low risk.
Does an automated screen replace a toxicological risk assessment?
No. The screen triages: it names the peaks that are nameable, ranks formulae for the rest, and separates compounds that carry a structural alert from those that do not. A qualified toxicologist still derives the PDE, judges the exposure, and signs the assessment. The value is that they review a prioritised shortlist instead of a raw feature table.
Related reading
- Identifying unknown impurities from accurate mass and MS/MS
- Cleaning validation limits: from MACO to a defensible number
Every tool call in this article runs on the free tier, so you can put your own peak list through the same four steps before deciding whether it is worth more. - Nitrosamine Risk Assessment: An ICH M7 Workflow
Tools for this topic
Use these in your AI agent right away.
- CovamsMass spectra, formula prediction, impurity profiling.
- CovatoxICH M7, Tox21, CYP450, structural alerts, ADMET triage.
