import os, time
from kallima import KallimaClient
client = KallimaClient(os.environ["KALLIMA_API_KEY"])
variant_ids = ["var_aaa...", "var_bbb..."]
items = [{"variant_id": vid} for vid in variant_ids]
batch = client.codon_exports.submit_batch(
strategy="cai_max",
host="cho",
output_formats=["fasta", "csv"],
items=items,
)
for job_id, export_id in zip(batch["job_ids"], batch["export_ids"]):
job = client.jobs.get(job_id)
while job.status not in ("completed", "failed", "canceled"):
time.sleep(10)
job = client.jobs.get(job_id)
if job.status != "completed":
print(f"{job_id} failed")
continue
data = client.codon_exports.download(export_id, format="fasta")
with open(f"{export_id}.fasta", "wb") as f:
f.write(data)
print(f"Saved {export_id}.fasta")