--- title: "Antibody Engineering - Quick Start Guide" task: "" lineage_type: import upstream_source: https://github.com/mims-harvard/ToolUniverse/blob/e2520a96/skills/tooluniverse-antibody-engineering/QUICK_START.md upstream_sha: e2520a96 imported_at: 2026-06-26 prompt_class: prompt upstream_changes: accepted author: upstream validated: false --- # Antibody Engineering - Quick Start Guide **Status**: ✅ **WORKING** - Pipeline working with correct SOAP parameters **Last Updated**: 2026-02-09 --- ## Choose Your Implementation ### Python SDK #### Option 1: Use the Working Pipeline (RECOMMENDED) ```python # Import from either file (both work) from python_implementation import AntibodyHumanizer # or: from antibody_pipeline import AntibodyHumanizer # Initialize analyzer analyzer = AntibodyHumanizer() # Analyze antibody vh_sequence = "EVQLVESGGGLVQPGGSLRLSCAASGYTFTSYYMHWVRQAPGKGLEWV..." vl_sequence = "DIQMTQSPSSLSASVGDRVTITCRASQSISSYLNWYQQKPGKAPKLLI..." report = analyzer.analyze( vh_sequence=vh_sequence, vl_sequence=vl_sequence, target_antigen="PD-L1" ) # Report automatically saved to: Antibody_Humanization_PD-L1.md print(f"Humanization Score: {report['humanization_score']}/100") ``` #### Option 2: Use Individual Tools ```python from tooluniverse import ToolUniverse tu = ToolUniverse() tu.load_tools() # Clinical precedents (TheraSAbDab - SOAP tool) result = tu.tools.TheraSAbDab_search_by_target( operation="search_by_target", # ✅ Required for SOAP tools target="PD-L1" ) # Germline identification (IMGT - SOAP tool) result = tu.tools.IMGT_search_genes( operation="search_genes", # ✅ Required for SOAP tools gene_type="IGHV", species="Homo sapiens" ) result = tu.tools.IMGT_search_genes( operation="search_genes", gene_type="IGKV", species="Homo sapiens" ) # Get germline sequences (IMGT - SOAP tool) result = tu.tools.IMGT_get_sequence( operation="get_sequence", # ✅ Required for SOAP tools accession="M99641", format="fasta" ) # Antibody structures (SAbDab - SOAP tool) result = tu.tools.SAbDab_search_structures( operation="search_structures", # ✅ Required for SOAP tools query="PD-L1" ) # Immunogenicity (IEDB - NOT SOAP, no 'operation' needed) result = tu.tools.iedb_search_epitopes( epitope_name="PD-L1", limit=10 ) ``` --- ### MCP (Model Context Protocol) #### Option 1: Conversational (Claude Desktop or Compatible Client) Tell Claude: > "Analyze humanization feasibility for an anti-PD-L1 antibody using ToolUniverse. VH: EVQLVESGGGLVQPGGSLRLSCAAS..., VL: DIQMTQSPSSLSASVGDRVTITCRAS..." Claude will follow the workflow from SKILL.md and use these tools: 1. TheraSAbDab_search_by_target - Clinical precedents 2. IMGT_search_genes - Germline identification 3. SAbDab_search_structures - Structural precedents 4. iedb_search_epitopes - Immunogenicity assessment #### Option 2: Direct Tool Calls **CRITICAL FOR MCP**: SOAP tools (IMGT, SAbDab, TheraSAbDab) require 'operation' parameter! **Step 1: Clinical Precedent Search** ```json Tool: TheraSAbDab_search_by_target Parameters: { "operation": "search_by_target", "target": "PD-L1" } ``` **Step 2: Germline Gene Search (Heavy Chain)** ```json Tool: IMGT_search_genes Parameters: { "operation": "search_genes", "gene_type": "IGHV", "species": "Homo sapiens" } ``` **Step 3: Germline Gene Search (Light Chain)** ```json Tool: IMGT_search_genes Parameters: { "operation": "search_genes", "gene_type": "IGKV", "species": "Homo sapiens" } ``` **Step 4: Get Germline Sequence** ```json Tool: IMGT_get_sequence Parameters: { "operation": "get_sequence", "accession": "M99641", "format": "fasta" } ``` **Step 5: Structural Precedent Search** ```json Tool: SAbDab_search_structures Parameters: { "operation": "search_structures", "query": "PD-L1" } ``` **Step 6: Immunogenicity Assessment** ```json Tool: iedb_search_epitopes Parameters: { "epitope_name": "PD-L1", "limit": 10 } ``` **Note**: IEDB is NOT a SOAP tool - no 'operation' parameter needed --- ## CRITICAL: SOAP Tool Parameters **IMPORTANT**: All SOAP-based tools (IMGT, SAbDab, TheraSAbDab) require an `operation` parameter. This applies to both Python SDK and MCP. ### ✅ CORRECT Usage ```python # Python SDK result = tu.tools.IMGT_search_genes( operation="search_genes", # ✅ Required! gene_type="IGHV", species="Homo sapiens" ) ``` ```json // MCP { "operation": "search_genes", "gene_type": "IGHV", "species": "Homo sapiens" } ``` ### ❌ WRONG Usage ```python # ❌ Missing 'operation' parameter - WILL FAIL! result = tu.tools.IMGT_search_genes( gene_type="IGHV", species="Homo sapiens" ) # Error: "Parameter validation failed for 'root': 'operation' is a required property" ``` --- ## Run Examples (Python SDK) ```bash # Run the working pipeline cd skills/tooluniverse-antibody-engineering python antibody_pipeline.py # Or use the renamed version python python_implementation.py # Generates report: # - Antibody_Humanization_PD-L1.md ``` --- ## What Works ✅ - ✅ SOAP tool calls (with correct 'operation' parameter) - ✅ IMGT germline search - ✅ TheraSAbDab clinical precedent search - ✅ SAbDab structure search - ✅ IEDB immunogenicity assessment - ✅ Report generation (markdown) - ✅ Feasibility scoring --- ## Known Limitations ⚠️ **Data Availability**: Some tools return empty results: - TheraSAbDab may not find all targets (try alternative names like "CD274" for "PD-L1") - IMGT SOAP service may have limited responses - This is a data/API availability issue, not a code issue ⚠️ **Missing Tools**: Some tools from original skill are not available: - `alphafold_get_prediction` - Structure modeling not available - `UniProt_get_entry_by_accession` - Target info not available - These block certain workflow phases but core humanization still works ⚠️ **IEDB Search Specificity**: IEDB may return non-specific results - Search is broad and doesn't filter well by organism/target - Manual filtering may be needed --- ## Tool Parameters (All Implementations) These parameter names apply to **both Python SDK and MCP**: | Tool | Parameter | Correct Name | Notes | |------|-----------|--------------|-------| | IMGT_search_genes | **SOAP operation** | `operation="search_genes"` | **CRITICAL** - Required first parameter | | IMGT_search_genes | Gene type | `gene_type` | "IGHV", "IGKV", "IGLV" | | IMGT_search_genes | Species | `species` | "Homo sapiens" for human | | IMGT_get_sequence | **SOAP operation** | `operation="get_sequence"` | **CRITICAL** - Required first parameter | | IMGT_get_sequence | Accession | `accession` | Gene accession number | | SAbDab_search_structures | **SOAP operation** | `operation="search_structures"` | **CRITICAL** - Required first parameter | | SAbDab_search_structures | Query | `query` | Target antigen name | | TheraSAbDab_search_by_target | **SOAP operation** | `operation="search_by_target"` | **CRITICAL** - Required first parameter | | TheraSAbDab_search_by_target | Target | `target` | Target antigen name | | iedb_search_epitopes | Epitope name | `epitope_name` | NOT SOAP - no 'operation' | **Note**: Whether using Python SDK or MCP, the parameter names are the same --- ## Alternative Target Names for TheraSAbDab If TheraSAbDab returns empty results, try alternative names: | Common Name | Alternative Names | |-------------|------------------| | PD-L1 | PDL1, CD274, B7-H1 | | HER2 | ERBB2, NEU | | EGFR | HER1, ERBB1 | | CD20 | MS4A1 | | VEGF | VEGFA | Example (Python): ```python # Try multiple names for name in ["PD-L1", "PDL1", "CD274", "B7-H1"]: result = tu.tools.TheraSAbDab_search_by_target( operation="search_by_target", target=name ) if result.get('data', {}).get('therapeutics'): print(f"Found results with: {name}") break ``` Example (MCP): ```json // Try with different names if first fails { "operation": "search_by_target", "target": "CD274" } ``` --- ## Pipeline Analysis Steps The working pipeline performs 5-step analysis: 1. **Clinical Precedent Search** - Search TheraSAbDab for approved/clinical antibodies - Try alternative target names if needed 2. **Germline Gene Identification** - Search IMGT for IGHV (heavy chain) germlines - Search IMGT for IGKV (kappa light chain) germlines - Provides foundation for humanization 3. **Structural Precedent Search** - Search SAbDab for antibody-antigen structures - Identifies structural benchmarks 4. **Immunogenicity Assessment** - Search IEDB for T-cell epitopes - Assesses immunogenicity risk 5. **Humanization Scoring** - 0-100 score based on data availability - Feasibility interpretation --- ## Feasibility Score Interpretation - **75-100**: HIGH FEASIBILITY - Strong precedents and resources available - **50-74**: MODERATE FEASIBILITY - Some resources available, gaps exist - **25-49**: LOW FEASIBILITY - Limited precedents, significant effort needed - **0-24**: VERY LOW FEASIBILITY - Minimal resources, high risk --- ## Files - `antibody_pipeline.py` - Complete working pipeline ✅ - `python_implementation.py` - Same as above (for consistency) ✅ - `SKILL.md` - Original skill documentation (has incorrect examples) - `EXAMPLES.md` - Clinical scenarios (has incorrect examples) - `README.md` - Original readme - `QUICK_START.md` - This file (CORRECT examples for Python & MCP) --- ## Key Fixes Applied ### 1. SOAP Tool Parameters ✅ - **Problem**: All SOAP tools failed with "missing 'operation' parameter" error - **Solution**: Added `operation` parameter to all IMGT, SAbDab, TheraSAbDab calls - **Impact**: SOAP tools now work without validation errors - **Applies to**: Both Python SDK and MCP ### 2. Alternative Target Names ✅ - **Problem**: TheraSAbDab returns empty for some target names - **Solution**: Try multiple alternative names (PD-L1, PDL1, CD274, B7-H1) - **Impact**: Increases chance of finding clinical precedents ### 3. Graceful Error Handling ✅ - **Problem**: Pipeline crashed when tools returned no data - **Solution**: Added try/except blocks, continue on empty results - **Impact**: Pipeline completes even when data is limited --- ## What Still Needs Work ### Tools Not Available These tools from the original skill are not in ToolUniverse: - `alphafold_get_prediction` - Blocks structure modeling phase - `UniProt_get_entry_by_accession` - Blocks target characterization - `PubMed_search_articles` - Available as `PubMed_search_articles` ### Missing Implementations These analysis functions need to be implemented: - CDR annotation (IMGT numbering) - Framework identity calculation - PTM site detection (deamidation, isomerization, oxidation) - Aggregation risk assessment - pI calculation ### Data Gaps - IMGT SOAP service returns no data (may be service issue) - TheraSAbDab requires exact target name matching - IEDB returns non-specific results (needs better filtering) --- *Updated: 2026-02-09 - Now supports both Python SDK and MCP implementations*