Skip to main content
Stability analysis runs a suite of sequence- and structure-based predictors against your variant. Results include a per-residue ΔΔG matrix, solubility and aggregation scores, a predicted melting temperature, and a ranked list of stabilizing mutations. The job takes 1–3 minutes and costs 3 credits.

Submit a job

from kallima import KallimaClient

client = KallimaClient(api_key)

job = client.stability_analyses.submit(variant_id=variant_id)
job.wait(timeout=300)

Read the result

result = job.results

print(result["solubility_score"])       # float 0–1, higher = more soluble
print(result["aggregation_score"])      # float 0–1, lower = less aggregation-prone
print(result["thermostability_score"])  # float 0–1
print(result["melting_temp_predicted"]) # predicted Tm in °C, e.g. 72.4
print(result["developability_score"])   # composite 0–1
All score fields can be null if a sub-predictor fails — check before comparing.

ΔΔG matrix

ddg_matrix maps each residue position (chain + index) to a predicted ΔΔG in kcal/mol. Positive values destabilize; negative values stabilize.
ddg = result["ddg_matrix"] or {}
for position, ddg_value in ddg.items():
    if ddg_value < -1.0:
        print(f"{position}: stabilizing ({ddg_value:.2f} kcal/mol)")

Stabilizing mutations

for mut in result["stabilizing_mutations"] or []:
    print(mut["position"], mut["wild_type"], mut["mutation"], mut["ddg"])
Each entry gives the original residue, proposed substitution, position label, and predicted ΔΔG change. The list is sorted by stabilization magnitude.

List prior analyses for a variant

for job in client.stability_analyses.list(variant_id=variant_id):
    print(job.id, job.status, job["created_at"])

Cancel a pending job

client.stability_analyses.cancel(job.id)