{"id":"de4dabd5-9a8f-4e43-9de3-324d9a364228","shortId":"UxYT93","kind":"skill","title":"solublempnn","tagline":"Solubility-optimized protein sequence design using SolubleMPNN. Use this skill when: (1) Designing for E. coli expression, (2) Optimizing solubility of designed proteins, (3) Reducing aggregation propensity, (4) Need high-yield expression, (5) Avoiding inclusion body formation.  ","description":"# SolubleMPNN Solubility-Optimized Design\n\n## Prerequisites\n\n| Requirement | Minimum | Recommended |\n|-------------|---------|-------------|\n| Python | 3.8+ | 3.10 |\n| CUDA | 11.0+ | 11.7+ |\n| GPU VRAM | 8GB | 16GB (T4) |\n| RAM | 8GB | 16GB |\n\n## How to run\n\n> **First time?** See [Installation Guide](../../docs/installation.md) to set up Modal and biomodals.\n\n### Option 1: Modal (recommended)\nSolubleMPNN uses the ProteinMPNN Modal wrapper with soluble model:\n```bash\ncd biomodals\nmodal run modal_proteinmpnn.py \\\n  --pdb-path backbone.pdb \\\n  --num-seq-per-target 16 \\\n  --sampling-temp 0.1 \\\n  --model-name v_48_020\n```\n\n**GPU**: T4 (16GB) | **Timeout**: 600s default\n\n### Option 2: Local installation\n```bash\ngit clone https://github.com/dauparas/ProteinMPNN.git\ncd ProteinMPNN\n\n# Use soluble model weights\npython protein_mpnn_run.py \\\n  --pdb_path backbone.pdb \\\n  --out_folder output/ \\\n  --num_seq_per_target 16 \\\n  --sampling_temp \"0.1\" \\\n  --model_name \"v_48_020\"  # Soluble model\n```\n\n## Key parameters\n\n| Parameter | Default | Range | Description |\n|-----------|---------|-------|-------------|\n| `--pdb_path` | required | path | Input structure |\n| `--num_seq_per_target` | 1 | 1-1000 | Sequences per structure |\n| `--sampling_temp` | \"0.1\" | \"0.0001-1.0\" | Temperature (string!) |\n| `--model_name` | v_48_020 | string | Soluble model variant |\n\n## Model Variants\n\n| Model | Description | Use Case |\n|-------|-------------|----------|\n| v_48_002 | Standard | General design |\n| v_48_020 | Soluble-trained | E. coli expression |\n| v_48_030 | High solubility | Difficult targets |\n\n## Output format\n\n```\noutput/\n├── seqs/backbone.fa\n└── backbone_pdb/backbone_0001.pdb\n```\n\n## Sample output\n\n### Successful run\n```\n$ python protein_mpnn_run.py --pdb_path backbone.pdb --model_name v_48_020 --num_seq_per_target 8\nLoading soluble model weights (v_48_020)...\nDesigning sequences for backbone.pdb\nGenerated 8 sequences in 2.1 seconds\n\noutput/seqs/backbone.fa:\n>backbone_0001, score=1.31, global_score=1.24, seq_recovery=0.78\nMKTAYIAKQRQISFVKSHFSRQLE...\n>backbone_0002, score=1.28, global_score=1.21, seq_recovery=0.81\nMKTAYIAKQRQISFVKSQFSRQLD...\n```\n\n**What good output looks like:**\n- Score: 1.0-2.0 (lower = more confident)\n- Reduced hydrophobic patches compared to standard MPNN\n- Improved charge distribution\n\n## Decision tree\n\n```\nShould I use SolubleMPNN?\n│\n├─ What expression system?\n│  ├─ E. coli → SolubleMPNN ✓\n│  ├─ Mammalian → ProteinMPNN (PTMs matter more)\n│  └─ Yeast → Either\n│\n├─ History of expression problems?\n│  ├─ Yes, aggregation → SolubleMPNN ✓\n│  ├─ Yes, low yield → SolubleMPNN ✓\n│  └─ No → ProteinMPNN is fine\n│\n├─ What's in the binding site?\n│  ├─ Small molecule / ligand → Use LigandMPNN\n│  └─ Nothing / protein only → SolubleMPNN ✓\n│\n└─ Need highest solubility?\n   ├─ Yes → Use v_48_030 model\n   └─ Standard → Use v_48_020 model\n```\n\n## Typical performance\n\n| Campaign Size | Time (T4) | Cost (Modal) | Notes |\n|---------------|-----------|--------------|-------|\n| 100 backbones × 8 seq | 15-20 min | ~$2 | Standard |\n| 500 backbones × 8 seq | 1-1.5h | ~$8 | Large campaign |\n\n**Expected improvement**: +15-30% solubility score vs standard ProteinMPNN.\n\n---\n\n## Verify\n\n```bash\ngrep -c \"^>\" output/seqs/*.fa  # Should match backbone_count × num_seq_per_target\n```\n\n---\n\n## Troubleshooting\n\n**Still insoluble**: Try v_48_030 (higher solubility bias)\n**Low diversity**: Increase temperature to 0.2\n**Poor folding**: Use standard ProteinMPNN and optimize later\n\n### Error interpretation\n\n| Error | Cause | Fix |\n|-------|-------|-----|\n| `RuntimeError: CUDA out of memory` | Long protein or large batch | Reduce batch_size |\n| `FileNotFoundError: v_48_020` | Missing model weights | Download soluble weights |\n\n---\n\n**Next**: Structure prediction for validation → `protein-qc` for filtering.","tags":["solublempnn","protein","design","skills","adaptyvbio","agent-skills","claude-code","protein-design","protein-engineering"],"capabilities":["skill","source-adaptyvbio","skill-solublempnn","topic-agent-skills","topic-claude-code","topic-protein-design","topic-protein-engineering"],"categories":["protein-design-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/adaptyvbio/protein-design-skills/solublempnn","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add adaptyvbio/protein-design-skills","source_repo":"https://github.com/adaptyvbio/protein-design-skills","install_from":"skills.sh"}},"qualityScore":"0.513","qualityRationale":"deterministic score 0.51 from registry signals: · indexed on github topic:agent-skills · 126 github stars · SKILL.md body (3,825 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-02T12:54:49.235Z","embedding":null,"createdAt":"2026-04-18T22:10:15.260Z","updatedAt":"2026-05-02T12:54:49.235Z","lastSeenAt":"2026-05-02T12:54:49.235Z","tsv":"'+15':409 '-1.0':189 '-1.5':402 '-1000':181 '-2.0':301 '-20':393 '-30':410 '/../docs/installation.md':72 '/dauparas/proteinmpnn.git':133 '0.0001':188 '0.1':111,155,187 '0.2':445 '0.78':281 '0.81':292 '0001':273 '0002':284 '002':209 '020':117,160,196,215,248,260,377,475 '030':224,371,436 '1':14,80,179,180,401 '1.0':300 '1.21':289 '1.24':278 '1.28':286 '1.31':275 '100':388 '11.0':54 '11.7':55 '15':392 '16':107,152 '16gb':59,63,120 '2':20,125,395 '2.1':269 '3':26 '3.10':52 '3.8':51 '4':30 '48':116,159,195,208,214,223,247,259,370,376,435,474 '5':36 '500':397 '600s':122 '8':253,266,390,399,404 '8gb':58,62 'aggreg':28,339 'avoid':37 'backbon':233,272,283,389,398,424 'backbone.pdb':101,144,243,264 'bash':92,128,417 'batch':468,470 'bias':439 'bind':353 'biomod':78,94 'bodi':39 'c':419 'campaign':381,406 'case':206 'caus':457 'cd':93,134 'charg':313 'clone':130 'coli':18,220,325 'compar':308 'confid':304 'cost':385 'count':425 'cuda':53,460 'decis':315 'default':123,166 'descript':168,204 'design':7,15,24,45,212,261 'difficult':227 'distribut':314 'divers':441 'download':479 'e':17,219,324 'either':333 'error':454,456 'expect':407 'express':19,35,221,322,336 'fa':421 'filenotfounderror':472 'filter':491 'fine':348 'first':67 'fix':458 'fold':447 'folder':146 'format':40,230 'general':211 'generat':265 'git':129 'github.com':132 'github.com/dauparas/proteinmpnn.git':131 'global':276,287 'good':295 'gpu':56,118 'grep':418 'guid':71 'h':403 'high':33,225 'high-yield':32 'higher':437 'highest':365 'histori':334 'hydrophob':306 'improv':312,408 'inclus':38 'increas':442 'input':173 'insolubl':432 'instal':70,127 'interpret':455 'key':163 'larg':405,467 'later':453 'ligand':357 'ligandmpnn':359 'like':298 'load':254 'local':126 'long':464 'look':297 'low':342,440 'lower':302 'mammalian':327 'match':423 'matter':330 'memori':463 'min':394 'minimum':48 'miss':476 'mktayiakqrqisfvkshfsrql':282 'mktayiakqrqisfvksqfsrqld':293 'modal':76,81,87,95,386 'modal_proteinmpnn.py':97 'model':91,113,138,156,162,192,199,201,203,244,256,372,378,477 'model-nam':112 'molecul':356 'mpnn':311 'name':114,157,193,245 'need':31,364 'next':482 'note':387 'noth':360 'num':103,148,175,249,426 'num-seq-per-target':102 'optim':4,21,44,452 'option':79,124 'output':147,229,231,236,296 'output/seqs':420 'output/seqs/backbone.fa':271 'paramet':164,165 'patch':307 'path':100,143,170,172,242 'pdb':99,142,169,241 'pdb-path':98 'pdb/backbone_0001.pdb':234 'per':105,150,177,183,251,428 'perform':380 'poor':446 'predict':484 'prerequisit':46 'problem':337 'propens':29 'protein':5,25,361,465,488 'protein-qc':487 'protein_mpnn_run.py':141,240 'proteinmpnn':86,135,328,346,415,450 'ptms':329 'python':50,140,239 'qc':489 'ram':61 'rang':167 'recommend':49,82 'recoveri':280,291 'reduc':27,305,469 'requir':47,171 'run':66,96,238 'runtimeerror':459 'sampl':109,153,185,235 'sampling-temp':108 'score':274,277,285,288,299,412 'second':270 'see':69 'seq':104,149,176,250,279,290,391,400,427 'seqs/backbone.fa':232 'sequenc':6,182,262,267 'set':74 'site':354 'size':382,471 'skill':12 'skill-solublempnn' 'small':355 'solubility-optim':2,42 'solubl':3,22,43,90,137,161,198,217,226,255,366,411,438,480 'soluble-train':216 'solublempnn':1,9,41,83,320,326,340,344,363 'source-adaptyvbio' 'standard':210,310,373,396,414,449 'still':431 'string':191,197 'structur':174,184,483 'success':237 'system':323 't4':60,119,384 'target':106,151,178,228,252,429 'temp':110,154,186 'temperatur':190,443 'time':68,383 'timeout':121 'topic-agent-skills' 'topic-claude-code' 'topic-protein-design' 'topic-protein-engineering' 'train':218 'tree':316 'tri':433 'troubleshoot':430 'typic':379 'use':8,10,84,136,205,319,358,368,374,448 'v':115,158,194,207,213,222,246,258,369,375,434,473 'valid':486 'variant':200,202 'verifi':416 'vram':57 'vs':413 'weight':139,257,478,481 'wrapper':88 'yeast':332 'yes':338,341,367 'yield':34,343","prices":[{"id":"a7a0368e-7c2f-4fb5-8416-31d315b83ae2","listingId":"de4dabd5-9a8f-4e43-9de3-324d9a364228","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"adaptyvbio","category":"protein-design-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T22:10:15.260Z"}],"sources":[{"listingId":"de4dabd5-9a8f-4e43-9de3-324d9a364228","source":"github","sourceId":"adaptyvbio/protein-design-skills/solublempnn","sourceUrl":"https://github.com/adaptyvbio/protein-design-skills/tree/main/skills/solublempnn","isPrimary":false,"firstSeenAt":"2026-04-18T22:10:15.260Z","lastSeenAt":"2026-05-02T12:54:49.235Z"}],"details":{"listingId":"de4dabd5-9a8f-4e43-9de3-324d9a364228","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"adaptyvbio","slug":"solublempnn","github":{"repo":"adaptyvbio/protein-design-skills","stars":126,"topics":["agent-skills","claude-code","protein-design","protein-engineering"],"license":"mit","html_url":"https://github.com/adaptyvbio/protein-design-skills","pushed_at":"2026-01-19T13:06:29Z","description":"Claude Code skills for protein design","skill_md_sha":"3d9595efd3e9a2474576a84a8de9a732dcd7841c","skill_md_path":"skills/solublempnn/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/adaptyvbio/protein-design-skills/tree/main/skills/solublempnn"},"layout":"multi","source":"github","category":"protein-design-skills","frontmatter":{"name":"solublempnn","license":"MIT","description":"Solubility-optimized protein sequence design using SolubleMPNN. Use this skill when: (1) Designing for E. coli expression, (2) Optimizing solubility of designed proteins, (3) Reducing aggregation propensity, (4) Need high-yield expression, (5) Avoiding inclusion body formation.  For standard design, use proteinmpnn. For ligand-aware design, use ligandmpnn."},"skills_sh_url":"https://skills.sh/adaptyvbio/protein-design-skills/solublempnn"},"updatedAt":"2026-05-02T12:54:49.235Z"}}