name: adaptyv
author: "K-Dense, Inc."
description: "Comment utiliser l'API Adaptyv Bio Foundry et le SDK Python pour la conception d'expériences protéiques, la soumission et la récupération des résultats. Utilisez cette compétence chaque fois que l'utilisateur mentionne Adaptyv, Foundry API, des dosages de liaison protéique, des expériences de criblage protéique, des dosages BLI/SPR, des dosages de thermostabilité, ou souhaite soumettre des séquences protéiques pour une caractérisation expérimentale. Déclenchez également lorsque le code importe adaptyv, adaptyv_sdk ou FoundryClient, ou référence foundry-api-public.adaptyvbio.com."
tags: [scientific-skills, adaptyv, python, api, experimental-design, search, citation-management, experimentation]
---|---|---|
| affinity | bli or spr | KD, kon, koff kinetics | Yes |
| screening | bli or spr | Yes/no binding | Yes |
| thermostability | — | Melting temperature (Tm) | No |
| expression | — | Expression yield | No |
| fluorescence | — | Fluorescence intensity | No |
Cycle de vie des expériences
Draft → WaitingForConfirmation → QuoteSent → WaitingForMaterials → InQueue → InProduction → DataAnalysis → InReview → Done
| Status | Qui agit | Description |
|---|---|---|
Draft |
Vous | Modifiable, sans engagement de coût |
WaitingForConfirmation |
Adaptyv | En révision, devis en cours de préparation |
QuoteSent |
Vous | Examinez et confirmez le devis |
WaitingForMaterials |
Adaptyv | Fragments de gènes et cible commandés |
InQueue |
Adaptyv | Matériaux arrivés, en attente de lab |
InProduction |
Adaptyv | Dosage en cours d'exécution |
DataAnalysis |
Adaptyv | Traitement des données brutes et QC |
InReview |
Adaptyv | Validation finale |
Done |
Vous | Résultats disponibles |
Canceled |
L'un ou l'autre | Expérience annulée |
Le champ results_status d'une expérience suit : none, partial ou all.
Flux de travail courants
1. Soumettre un criblage de liaison (étape par étape)
# 1. Trouver une cible
targets = client.targets.list(search="EGFR", selfservice_only=True)
target_id = targets.items[0].id
# 2. Prévisualiser le coût
estimate = client.experiments.cost_estimate({
"experiment_spec": {
"experiment_type": "screening",
"method": "bli",
"target_id": target_id,
"sequences": {"seq1": "EVQLVESGGGLVQ...", "seq2": "MKVLVAG..."},
"n_replicates": 3
}
})
# 3. Créer une expérience (commence en Draft)
exp = client.experiments.create({
"name": "EGFR binder screen batch 1",
"experiment_spec": {
"experiment_type": "screening",
"method": "bli",
"target_id": target_id,
"sequences": {"seq1": "EVQLVESGGGLVQ...", "seq2": "MKVLVAG..."},
"n_replicates": 3
}
})
# 4. Soumettre pour révision
client.experiments.submit(exp.experiment_id)
# 5. Interroger ou utiliser des webhooks jusqu'à Done
# 6. Récupérer les résultats
results = client.experiments.get_results(exp.experiment_id)
2. Pipeline automatisé (ignorer Draft + accepter automatiquement le devis)
exp = client.experiments.create({
"name": "Auto pipeline run",
"experiment_spec": {...},
"skip_draft": True,
"auto_accept_quote": True,
"webhook_url": "https://my-server.com/webhook"
})
# Webhook se déclenche à chaque transition d'état ; interrogez ou attendez Done
3. Utiliser les webhooks
Passez webhook_url lors de la création d'une expérience. Adaptyv envoie un POST à cette URL à chaque transition d'état avec l'ID de l'expérience, l'état précédent et le nouvel état.
Séquences
- Format simple :
{"seq1": "EVQLVESGGGLVQPGGSLRLSCAAS"} - Format enrichi :
{"seq1": {"aa_string": "EVQLVESGGGLVQ...", "control": false, "metadata": {"type": "scfv"}}} - Multi-chaînes : utiliser le séparateur deux-points —
"MVLS:EVQL" - Acides aminés valides : A, C, D, E, F, G, H, I, K, L, M, N, P, Q, R, S, T, V, W, Y (insensible à la casse, stockés en majuscules)
- Les séquences ne peuvent être ajoutées que à des expériences en statut
Draft
Filtrage, tri et pagination
Tous les endpoints de liste supportent la pagination (limit 1-100, par défaut 50 ; offset), la recherche (texte libre sur les champs de nom) et le tri.
Le filtrage utilise la syntaxe s-expression via le paramètre de requête filter :
- Comparaison :
eq(field,value),neq,gt,gte,lt,lte,contains(field,substring) - Plage/ensemble :
between(field,lo,hi),in(field,v1,v2,...) - Logique :
and(expr1,expr2,...),or(...),not(expr) - Null :
is_null(field),is_not_null(field) - JSONB :
at(field,key)— par ex.,eq(at(metadata,score),42) - Cast :
float(),int(),text(),timestamp(),date()
Le tri utilise asc(field) ou desc(field), séparés par des virgules (max 8) :
sort=desc(created_at),asc(name)
Exemple : filter=and(gte(created_at,2026-01-01),eq(status,done))
Gestion des erreurs
Toutes les erreurs retournent :
{
"error": "Human-readable description",
"request_id": "req_019462a4-b1c2-7def-8901-23456789abcd"
}
Le request_id est aussi dans l'en-tête de réponse x-request-id — incluez-le quand vous contactez le support.
Gestion des tokens
Les tokens utilisent une atténuation cryptographique basée sur Biscuit. Vous pouvez créer des tokens restreints limités par organisation, type de ressource, actions (read/create/update) et expiration via POST /tokens/attenuate. Révoquer un token (POST /tokens/revoke) le révoque ainsi que tous ses descendants.
Référence API détaillée
Pour la liste complète de tous les 32 endpoints avec les schémas de requête/réponse, consultez references/api-endpoints.md.