Source code for tooluniverse.rcsb_pdb_tool

from rcsbapi.data import DataQuery
from .base_tool import BaseTool
from .tool_registry import register_tool


[docs] @register_tool("RCSBTool") class RCSBTool(BaseTool):
[docs] def __init__(self, tool_config): super().__init__(tool_config) self.name = tool_config.get("name") self.description = tool_config.get("description") self.input_type = tool_config.get("input_type") self.search_fields = tool_config.get("fields", {}).get("search_fields", {}) self.return_fields = tool_config.get("fields", {}).get("return_fields", []) self.parameter_schema = tool_config.get("parameter", {}).get("properties", {})
[docs] def validate_params(self, params: dict): for param_name, param_info in self.parameter_schema.items(): if param_info.get("required", False) and param_name not in params: raise ValueError(f"Missing required parameter: {param_name}") return True
[docs] def prepare_input_ids(self, params: dict): for param_name in self.search_fields: if param_name in params: val = params[param_name] return val if isinstance(val, list) else [val] raise ValueError("No valid search parameter provided")
[docs] def run(self, params: dict): self.validate_params(params) input_ids = self.prepare_input_ids(params) query = DataQuery( input_type=self.input_type, input_ids=input_ids, return_data_list=self.return_fields, ) return query.exec()