Skip to main content Home Creators internscience drclaw comprehensive-protein-analysis
comprehensive-protein-analysis Comprehensive protein analysis combining InterProScan domain identification with BLAST similarity search to provide complete functional and evolutionary annotation.
Jump to install Skills Marketplace Discover and explore AI skills built by the community.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Copy promptShow prompt details A direct command skips the review prompt. Inspect the source before running it.
npx skills add https://github.com/InternScience/DrClaw --skill comprehensive-protein-analysisThe command stays on one line. Scroll horizontally to inspect it before copying.
Prefer a local copy? Download the files currently available to SkillsMP.
Download Zip Downloading... More from this repository Use the ACPX CLI through DrClaw's existing exec/long_exec tools to run Codex in the current project workspace.
Use this skill whenever the user wants to create, read, edit, or manipulate Word documents (.docx files). Triggers include: any mention of 'Word doc', 'word document', '.docx', or requests to produce professional documents with formatting like tables of contents, headings, page numbers, or letterheads. Also use when extracting or reorganizing content from .docx files, inserting or replacing images in documents, performing find-and-replace in Word files, working with tracked changes or comments, or converting content into a polished Word document. If the user asks for a 'report', 'memo', 'letter', 'template', or similar deliverable as a Word or .docx file, use this skill. Do NOT use for PDFs, spreadsheets, Google Docs, or general coding tasks unrelated to document generation.
Convert a user style request into concrete rewrite constraints and apply that style during de-flavoring. Use when the user specifies a target tone, audience, or writing persona.
Related occupations SOC
Based on SOC occupation classification
name comprehensive-protein-analysis description Comprehensive protein analysis combining InterProScan domain identification with BLAST similarity search to provide complete functional and evolutionary annotation. license MIT license metadata {"skill-author":"PJLab"} i18n {"zh":{"description":"结合InterProScan与。"}}
Comprehensive Protein Analysis
Usage
1. MCP Server Definition
Use the same BioInfoToolsClient class as defined in the protein-blast-search skill.
2. Comprehensive Protein Analysis Workflow
This workflow combines InterProScan domain analysis with BLAST similarity search to provide a complete functional and evolutionary annotation of a protein sequence.
Workflow Steps:
Validate Input - Check protein sequence format
Run InterProScan - Identify functional domains and GO terms
Run BLAST Search - Find similar sequences and homologs
Integrate Results - Combine domain and homology information for comprehensive annotation
Implementation:
from datetime import timedelta
client = BioInfoToolsClient(
"https://scp.intern-ai.org.cn/api/v1/mcp/17/BioInfo-Tools" ,
"<your-api-key>"
)
if not await client.connect():
print ("connection failed" )
exit()
protein_sequence = """
MALWMRLLPLLALLALWGPDPAAAFVNQHLCGSHLVEALYLVCGERGFFYTPKTRREAEDLQVGQVELGGGPGAGSLQPLALEGSLQKRGIVEQCCTSICSLYQLENYCN
"""
sequence_id = "INS_HUMAN"
result = await client.session.call_tool(
"analyze_protein" ,
arguments={
"sequence" : protein_sequence.strip(),
"sequence_id" : sequence_id,
"databases" : ["Pfam" ],
"evalue" : 1e-5 ,
"max_hits" : 10
},
read_timeout_seconds=timedelta(seconds=1200 )
)
result_data = client.parse_result(result)
print (f"{'=' *80 } " )
print (f"Comprehensive Protein Analysis: {sequence_id} " )
print (f"{'=' *80 } \n" )
ips_result = result_data.get( , {})
ips_result.get( ):
ips_data = ips_result.get( , {})
domains = ips_data.get( , [])
go_terms = ips_data.get( , [])
( )
( )
( )
( )
domains:
( )
domain domains:
( )
domain.get( ):
( )
locations = domain.get( , [])
locations:
loc = locations[ ]
( )
()
go_terms:
( )
go go_terms[: ]:
( )
( )
(go_terms) > :
( )
()
:
( )
blast_result = result_data.get( , {})
blast_result.get( ):
hits = blast_result.get( , [])
( )
( )
( )
( )
hits:
( )
i, hit (hits[: ], ):
( )
( )
( )
(hits) > :
( )
()
:
( )
:
( )
( )
domains:
( )
hits:
most_similar = hits[ ]
( )
( )
( )
client.disconnect()
Tool Descriptions
BioInfo-Tools Server:
analyze_protein: Comprehensive protein analysis combining InterProScan and BLAST
Args:
sequence (str): Protein sequence in amino acid single-letter code
sequence_id (str, optional): Identifier for the query sequence
databases (list, optional): InterProScan databases (default: ["Pfam"])
evalue (float, optional): BLAST E-value threshold (default: 0.01)
max_hits (int, optional): Maximum BLAST hits (default: 10)
Returns:
interproscan (dict): InterProScan analysis results
success (bool): Whether InterProScan completed
results (dict): Domains and GO terms
time_seconds (float): Execution time
blast (dict): BLAST search results
success (bool): Whether BLAST completed
hits (list): Similar proteins
total_hits (int): Number of matches
time_seconds (float): Execution time
Input/Output
Input:
sequence: Protein sequence (amino acid single-letter code)
sequence_id: Optional identifier for the query
databases: List of InterProScan databases to query
evalue: BLAST E-value threshold (lower = more stringent)
max_hits: Maximum number of BLAST hits to return
Output:
InterProScan Results :
Functional domains with positions
Protein family classifications
Gene Ontology annotations
BLAST Results :
Homologous proteins across species
Sequence identity and alignment statistics
Evolutionary relationships
Analysis Strategy
This comprehensive approach provides:
Structural Information (InterProScan):
Domain architecture and organization
Functional motifs and active sites
Protein family membership
Evolutionary Context (BLAST):
Homologs in other species
Sequence conservation patterns
Potential orthologs and paralogs
Functional Prediction :
Combining domain and homology information
GO term annotations for molecular function
Biological process involvement
Performance Notes
Total execution time : 2-20 minutes depending on sequence length
InterProScan: 30 seconds to 15 minutes
BLAST: 10-90 seconds
Both run sequentially in this workflow
Timeout recommendation : Set to at least 1200 seconds (20 minutes)
E-value tuning : Use lower E-values (e.g., 1e-10) for highly conserved proteins, higher (e.g., 0.01) for divergent families
Use Cases
Complete functional annotation of unknown proteins
Validate predicted protein functions
Study protein evolution and conservation
Identify potential drug targets
Annotate proteomes and genome sequences
Compare protein function across species
Interpretation Tips
High domain coverage + high homology : Well-characterized protein with known function
Domains but no homologs : Novel protein with conserved domains, function can be inferred from domains
Homologs but no domains : May need more sensitive domain detection or represents a novel fold
Neither domains nor homologs : Potentially novel protein, may require experimental characterization
"interproscan"
if
"success"
"results"
'domains'
'go_terms'
print
"=== DOMAIN ANALYSIS (InterProScan) ==="
print
f"Execution time: {ips_result.get('time_seconds' , '?' )} seconds"
print
f"Domains found: {len (domains)} "
print
f"GO annotations: {len (go_terms)} \n"
if
print
"Functional Domains:"
for
in
print
f" • {domain.get('name' , 'N/A' )} ({domain.get('database' , 'N/A' )} )"
if
'description'
print
f" Description: {domain.get('description' )} "
'locations'
if
0
print
f" Position: {loc.get('start' )} -{loc.get('end' )} aa"
print
if
print
"Gene Ontology Annotations:"
for
in
5
print
f" • {go.get('id' , 'N/A' )} : {go.get('name' , 'N/A' )} "
print
f" Category: {go.get('category' , 'N/A' )} "
if
len
5
print
f" ... and {len (go_terms) - 5 } more"
print
else
print
f"❌ InterProScan failed: {ips_result.get('error' , 'Unknown' )} \n"
"blast"
if
"success"
'hits'
print
"=== HOMOLOGY SEARCH (BLAST) ==="
print
f"Execution time: {blast_result.get('time_seconds' , '?' )} seconds"
print
f"Similar sequences found: {blast_result.get('total_hits' , 0 )} "
print
f"E-value threshold: {1e-5 } \n"
if
print
"Top Homologous Proteins:"
for
in
enumerate
5
1
print
f" {i} . {hit['uniprot_id' ]} - {hit.get('organism' , 'N/A' )} "
print
f" Description: {hit['description' ]} "
print
f" Identity: {hit['identity_percent' ]:.1 f} %, E-value: {hit['evalue' ]:.2 e} "
if
len
5
print
f" ... and {len (hits) - 5 } more matches"
print
else
print
"No significant homologs found (E-value threshold may be too stringent)\n"
else
print
f"❌ BLAST failed: {blast_result.get('error' , 'Unknown' )} \n"
print
"=== FUNCTIONAL SUMMARY ==="
if
print
f"Protein Family: {domains[0 ].get('name' , 'Unknown' )} "
if
0
print
f"Most Similar Protein: {most_similar['uniprot_id' ]} ({most_similar['identity_percent' ]:.1 f} % identity)"
print
f"Organism: {most_similar.get('organism' , 'Unknown' )} "
print
f"{'=' *80 } "
await