Preparing your stability data
Paste or drop the table you already have. It does not need to be cleaned first: units, condition formats, <LOQ results and drifting RRTs are handled automatically, and every decision is listed in the data log.
The usual layout
One row per sample, one column per result:
| Batch | Time (days) | Condition | RRT 0.45 | RRT 0.82 | Assay (%LC) |
|---|---|---|---|---|---|
| A | Initial | Initial | <0.05 | 0.02 | 100.2 |
| A | 7 | 50°C/75%RH | 0.08 | 0.04 | 99.9 |
| A | 2 | 70°C/75%RH | 0.14 | 0.07 | 99.4 |
The values above are made up to show the format.
One row per result (LIMS exports)
Most LIMS export one row per result instead. Paste that as it is; it is recognised and reshaped automatically:
| Batch | Condition | Time point | Test | Analyte | Result | Units |
|---|---|---|---|---|---|---|
| A | 50°C/75%RH | Day 7 | Related substances | RRT 0.45 | 0.08 | % area |
| A | 50°C/75%RH | Day 7 | Related substances | RRT 0.82 | 0.04 | % area |
| A | 50°C/75%RH | Day 7 | Assay | Assay | 99.9 | % LC |
| A | 50°C/75%RH | Day 7 | Water (KF) | Water | 2.1 | % w/w |
- Rows for assay are recognised by the test or analyte name, and rows for other tests (water, dissolution, appearance) are left out.
- Summary rows such as "Largest unspecified impurity" are left out, because each peak is modelled on its own. "Total impurities" rows are used as the total.
- A peak not listed for a sample where other peaks were reported counts as below the reporting threshold, just like a blank cell.
- Replicates (the same peak twice for one batch, time point and condition) are kept as separate results.
- Time points such as "T0", "Day 7", "Week 2" or "3 months" are understood.
Everything set aside is listed in the data log, so you can check nothing was missed.
Columns that are recognised
| Column | What works |
|---|---|
| Time | Numbers with the unit in the header: hours, days, weeks, months or years ("Time (weeks)", "Days"). "Initial", "T0" and "0" mark the starting point. |
| Condition | One column such as 50°C/75%RH, 50/75 or 50C 75% RH, or separate temperature and humidity columns. Kelvin and humidity as a fraction (0.75) are converted. |
| Degradants | One column per peak, headed by RRT or name ("RRT 0.82", "Imp B"). Peaks within ±0.02 RRT that never appear in the same sample are treated as one degradant. |
| Assay | Optional. Used to model assay loss from the initial value against the lower limit. |
| Total degradants | Optional. If missing, the total is the sum of the reported peaks, leaving out peaks seen only under harsh stress. |
| One row per result | Instead of one column per peak: a peak name (or RRT) column and a result column, optionally with test name, batch and units. See above. |
Results below the limit
<LOQ, ND, <0.05 and blank cells in samples where other peaks were reported are all accepted. By default they are treated as known to be below the limit (statistically censored), which avoids the bias of replacing them with zero or half the limit. You can choose either of those instead.
Study design that predicts well
- At least three temperatures, and two or more humidity levels so the humidity effect can be estimated.
- Pull points that take the fastest-growing degradant a good way towards its limit at the harsher conditions. If nothing grows by more than 10% of the way to the limit, predictions are long extrapolations and you will see a warning.
- An initial (time zero) result for every peak, even if it is <LOQ.
The tool checks these for every degradant and says when the design limits what can be concluded.
Excel workbooks
.xlsx files are read in your browser. If the workbook has several sheets with data, you choose which one to use. Old .xls files need saving as .xlsx or CSV first, or you can copy the table and paste it.
Results as data (JSON)
The Results JSON button downloads every result in a structured file you can load into a database, a notebook or your own models. For each degradant, the total and the assay it holds:
- the chosen model, why it was chosen, and whether you or the tool chose it;
- the fitted kinetics with standard errors and the covariance matrix: activation energy (kJ/mol), humidity sensitivity B (per %RH), the rate at 50 °C/50 %RH and, where used, the time exponent and plateau;
- every candidate model with its fit statistics;
- shelf life, 95% lower bound and probability of staying within the limit at each storage condition;
- the cleaned data points, any you excluded with the reason, and the data log.
The file also carries the settings, the data fingerprint, the engine version and the study details you entered (product, active ingredient, dosage form, packaging, batch). Shelf lives beyond 10 years are written as null with beyondHorizon: true. Field names stay the same within a schemaVersion, so files from different studies can be combined.