Development
setup-complexa-remote-tool - Claude MCP Skill
Set up, launch, validate, and troubleshoot the Proteina-Complexa ToolUniverse remote tool and optionally relay it through ToolUniverse Connect. Use when deploying or auditing this implementation.
SEO Guide: Enhance your AI agent with the setup-complexa-remote-tool tool. This Model Context Protocol (MCP) server allows Claude Desktop and other LLMs to set up, launch, validate, and troubleshoot the proteina-complexa tooluniverse remote tool and option... Download and configure this skill to unlock new capabilities for your AI workflow.
Documentation
SKILL.md# Set up Proteina-Complexa as a remote tool
> Validation status (2026-10-02): Proteina-Complexa 1.1.0 (NVIDIA's flow-matching binder generator -- it DESIGNS proteins against a target structure, it does not fold one) ran on the NVIDIA GB10 (aarch64, cc 12.1) with the optimization kit in `fast` mode, all six levers engaged. Verified on FOUR CONSECUTIVE IDENTICAL REQUESTS, a mixed-shape sequence (100, 100, 200, 100 residues) and an ascending ladder (100/200/400), plus a sequence that changed the ENGINE KEY (`num_steps`, batch size, binder length, the target, the seed) and returned to the first request, which reproduced byte for byte. The held worker's design for the smoke target is byte-identical to the kit's own `run.sh design` in a fresh process, and to a worker built from the lock in an empty venv. Per-request peak reserved runs from 1.70 GiB (100 residues) to 20.25 GiB at the ceiling corner, which is the declared budget. One thing to know before deploying: torch 2.7.0+cu128's NVRTC does not know this card, and without the pinned 12.9 NVRTC every request dies in `torch.prod` (see the environment section). Public publication, cross-user isolation, concurrency, recovery and design quality (binding, designability) are untested; keep this deployment private.
## What a request is
A target protein STRUCTURE (PDB text), a crop of one of its chains (`A1-115`), hotspot residues on its surface (`["A37", "A39"]`, numbered as in that file), a binder length and a design count. The model samples that many binders, and each comes back as a decoded amino-acid sequence (and, with `return_pdb`, a PDB: chain A the target crop, chain B the new binder). It is NOT a predictor: nothing says a design binds, and this deployment runs upstream's **generation stage alone** -- upstream's own `++generation.search.algorithm=single-pass ++generation.reward_model=null` -- so the designs are raw, unscored and unranked. Upstream's shipped configuration also scores every design with an AlphaFold2 reward model whose parameters are not carried here.
The tool validates the target before it queues: the chain must exist in the PDB, the crop must hold residues, every hotspot must be a residue of that crop. This is not pedantry. Upstream does not refuse a hotspot it cannot find (measured: a request naming `A400` in a 115-residue target designed a binder anyway, against fewer hotspots than the caller thought).
## Prerequisites
- Run from the ToolUniverse repository root on Linux with Python 3.12.
- A CUDA GPU is required. This provider holds its model resident between requests; CPU is not a target.
- Keep provider data, weights, caches, and credentials outside Git.
- Bind to loopback. A non-loopback bind requires TOOLUNIVERSE_API_TOKEN; never put it in arguments or results.
Run the standard-library contract check before downloading large dependencies:
~~~bash
python scripts/remote_validation/setup_skill_preflight.py --implementation complexa
~~~
After exporting provider resources, add `--check-provider-env`. After the
server starts, add `--live` to verify the exact MCP tool set without running
the model. Before sharing, add `--check-connect-prereqs`; this reports only
whether a key is set and never prints its value.
## Create the two environments
This provider is on the remote-tool standard, so it has two environments, not
one: the MCP server runs in ToolUniverse's, and the model runs in its own,
built from a pinned lock. They cannot import each other, and that is the point.
~~~bash
python3 -m venv .venvs/complexa
. .venvs/complexa/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
python -m pip install fastmcp
~~~
The model half lives at the path `TOOLUNIVERSE_COMPLEXA_PYTHON` names, and
nothing above creates it. Create an empty CPython 3.12.10 interpreter there with
the STDLIB venv module, not `uv venv` (this kit activates through a `.pth` file
and a `uv venv` `_virtualenv.pth` has broken that detection for another kit):
~~~bash
uv python install 3.12.10
~/.local/share/uv/python/cpython-3.12.10-linux-aarch64-gnu/bin/python3.12 -m venv ~/complexa-venv
export TOOLUNIVERSE_COMPLEXA_PYTHON=~/complexa-venv/bin/python
~~~
`tu remote setup --only environment` then fills it from
`src/tooluniverse/remote/complexa/environment/requirements.lock` with `--no-deps`
(~160 distributions, about 8 GB, torch 2.7.0+cu128 included). The lock's header
records every change from the kit's own x86-64 lock. Two matter here.
- **torch is 2.7.0+cu128, not the kit's +cu126.** 2.7.0 is above the 2.7 line below which no CUDA build can drive this card at all, and an sm_120 cubin runs on sm_121. It is the same upstream version; the kit's pin check treats its torch line as a label.
- **The lock carries a NEWER NVRTC than torch does, and without it every request dies.** torch 2.7.0+cu128 bundles NVRTC 12.8, which does not know sm_121, so `torch.prod(x, dim=-1)` -- which upstream's openfold transforms call on every target's side-chain torsion features -- raises `nvrtc: error: invalid value for --gpu-architecture (-arch)` on every CUDA dtype. `nvidia-cuda-nvrtc-cu12==12.9.86` is pinned and the launcher puts its `lib` directory first on `LD_LIBRARY_PATH` (the loader reads it once at process start, so it has to be the child's environment). Nothing else in the model is affected; this is the only op that failed.
The rest is built by `tu remote setup`, which reads
`src/tooluniverse/remote/complexa/provider.toml` and runs five steps: preflight,
environment, kit, weights, smoke. Each refuses by name and carries its fix.
~~~bash
tu remote setup complexa
~~~
Run one step at a time with `--only preflight|environment|kit|weights|smoke`
while bringing a machine up. The smoke step holds the model, sends one request,
asserts the provider produced a design file (`job_*_n_*_id_*.pdb` -- not `*.pdb`,
which would match the target the provider itself writes), and records the
measured peak VRAM to `~/.cache/tooluniverse/measured/complexa.json`. A host
schedules on that file.
The kit step also builds `torch_scatter` 2.1.2 from the PyPI sdist, CPU-only
(`FORCE_ONLY_CPU=1`): no aarch64 wheel exists, pip's isolated build cannot import
torch, and this host has nvcc 13 beside a cu128 torch. Upstream imports exactly
one name from it, `scatter_mean`, which is torch-native and runs on CUDA tensors.
Package/network-dependent commands must be rerun in a clean environment before marking this skill complete.
## Obtain credentials, data, and model weights
- No credential is needed. The two checkpoints (`complexa.ckpt`, 2,934,289,381 bytes; `complexa_ae.ckpt`, 4,100,101,779 bytes; 6.6 GiB together) come from NVIDIA's own repository `nvidia/NV-Proteina-Complexa-Protein-Target-160M-v1` on the Hugging Face Hub, which answers 200 without a token (`gated: false`), through the kit's own fetcher. Their licence is the NVIDIA Open Model License: commercially usable, derivative models allowed, no ownership claim on outputs. Do not substitute a third-party mirror.
- Nothing is fetched at request time. The manifest declares both files with size and sha256, and the launch refuses if one is off its pin. `CKPT_PATH` names the directory (default `~/complexa_weights`).
- The resident worker forces the data loader to 0 workers and nothing on the path forks: every reply carries `child_processes`, which is 0.
## Authorize once, then share with one short command
After installing dependencies, exporting the provider resources above, and
installing the pinned relay SDK described under Connect below, run from the
repository root. Log in only once per machine (and again after key
rotation):
~~~bash
tu remote login
# Or import an existing protected 0600 file without sourcing it:
tu remote login --env-file /path/to/tooluniverse-service.env
~~~
Then each private share is one short command:
~~~bash
tu remote share complexa
~~~
By default, `tu remote login` requests a short-lived device code, opens the
TU Platform approval page, and polls until the signed-in user approves. No key
copy/paste is required. On a headless machine, add `--no-browser` and open the
printed link elsewhere. The CLI exchanges the approval for a computer-only key,
verifies `/remote-servers/preflight`, stores it in a local 0600 config file, and
never displays it.
The share command runs environment and TU Platform preflights, starts or reuses
the exact loopback endpoint, validates discovery, and keeps the relay in the
foreground until Ctrl-C. It automatically uses the reviewed Python, name,
and worker count. Override them only when needed:
~~~bash
tu remote share complexa --name my-complexa-remote --workers 1
~~~
Use `tu remote check complexa` for a non-sharing readiness check and
`tu remote run complexa` for a local-only foreground server.
In an interactive terminal, sharing automatically starts the same browser flow
when the key is missing, expired, or revoked. A malformed or revoked explicit
`TOOLUNIVERSE_SERVICE_KEY` fails fast instead of being silently replaced; unset
or correct it, then run `tu remote login`. Non-interactive jobs also fail fast.
Use `tu remote logout` to remove only the local copy. Use `tu remote logout --revoke` to revoke the computer-only platform connection first; the server record remains offline for owner inspection.
## Start and verify locally
~~~bash
python -m tooluniverse.remote.complexa.complexa_tool
~~~
The Streamable HTTP endpoint is http://127.0.0.1:8056/mcp. In a second activated shell run:
~~~bash
python - <<'PY'
import asyncio
from fastmcp import Client
async def main():
async with Client("http://127.0.0.1:8056/mcp") as client:
print([tool.name for tool in await client.list_tools()])
asyncio.run(main())
PY
~~~
Confirm discovery contains complexa_design_binder; stop on empty, duplicate, or schema-drifted discovery.
The first request after a restart pays the interpreter, the import graph and the model build; the ones after it do not. That is the whole reason this provider is resident, and a benchmark that measures only the first call measures the wrong thing.
## Connect to ToolUniverse Connect
The `tuplatform-connect` relay is not yet published on PyPI. Install the reviewed public wheel below; its SHA-256 is pinned. Interactive sharing uses browser device authorization, so no key copy/paste or GitHub access is required.
~~~bash
python -m pip install fastmcp pyyaml "tuplatform-connect @ https://connect.aiscientist.tools/downloads/tuplatform_connect-0.3.0-py3-none-any.whl#sha256=3fad5eee5ecf7887a693d93ccd1aa112dc0955617a885d1fc3daded0030f9ae0"
tu doctor --forward http://127.0.0.1:8056/mcp --json
tu serve --share --forward http://127.0.0.1:8056/mcp --name validation-complexa --workers 1
~~~
Prefer browser device authorization. For CI or migration, supply
`TOOLUNIVERSE_SERVICE_KEY` only through a protected environment or use
`tu remote login --manual-key`; never put a key in shell arguments.
This implementation was added after the authenticated 2026-08-16 Platform
matrix and was not part of it. That matrix imported each implementation it
covered as unpublished owner drafts and invoked them through
`/expert-sessions/{id}/test`; this provider was imported as no such draft and
invoked through no such route. It has not been exercised through the Platform
at all: the evidence above is local, on one card, through the loopback
endpoint. Public publication, independent-caller authorization/isolation,
saturation, and persistent supervision are untested.
## Run a verified example
Operation: complexa_design_binder
The first 50 residues of PD-L1 (chain A, residues 1-50 of upstream's own `PD-L1.pdb` target), two 40-residue binders, 50 integration steps instead of the default 400 so it finishes in minutes, hotspots A37, A39 and A49:
~~~json
{"target_pdb":"ATOM 1 N ALA A 1 32.691 -38.552 -22.954 1.00 81.30 N\nATOM 2 CA ALA A 1 31.571 -39.485 -22.907 1.00 81.30 C\nATOM 3 C ALA A 1 31.589 -40.427 -24.111 1.00 81.30 C\nATOM 4 CB ALA A 1 30.249 -38.724 -22.851 1.00 81.30 C\nATOM 5 O ALA A 1 32.117 -40.080 -25.173 1.00 81.30 O\nATOM 6 N PHE A 2 31.571 -41.687 -23.868 1.00 91.90 N\nATOM 7 CA PHE A 2 31.405 -42.668 -24.925 1.00 91.90 C\nATOM 8 C PHE A 2 30.440 -42.160 -25.988 1.00 91.90 C\nATOM 9 CB PHE A 2 30.900 -44.000 -24.355 1.00 91.90 C\nATOM 10 O PHE A 2 29.295 -41.814 -25.685 1.00 91.90 O\nATOM 11 CG PHE A 2 30.814 -45.108 -25.372 1.00 91.90 C\nATOM 12 CD1 PHE A 2 29.634 -45.343 -26.067 1.00 91.90 C\nATOM 13 CD2 PHE A 2 31.916 -45.913 -25.632 1.00 91.90 C\nATOM 14 CE1 PHE A 2 29.552 -46.368 -27.008 1.00 91.90 C\nATOM 15 CE2 PHE A 2 31.843 -46.936 -26.569 1.00 91.90 C\nATOM 16 CZ PHE A 2 30.659 -47.163 -27.256 1.00 91.90 C\nATOM 17 N THR A 3 30.893 -42.044 -27.248 1.00 94.64 N\nATOM 18 CA THR A 3 30.063 -41.472 -28.304 1.00 94.64 C\nATOM 19 C THR A 3 30.098 -42.346 -29.553 1.00 94.64 C\nATOM 20 CB THR A 3 30.521 -40.043 -28.659 1.00 94.64 C\nATOM 21 O THR A 3 31.171 -42.723 -30.029 1.00 94.64 O\nATOM 22 CG2 THR A 3 29.627 -39.430 -29.731 1.00 94.64 C\nATOM 23 OG1 THR A 3 30.465 -39.229 -27.487 1.00 94.64 O\nATOM 24 N VAL A 4 28.968 -42.656 -30.048 1.00 96.76 N\nATOM 25 CA VAL A 4 28.801 -43.338 -31.321 1.00 96.76 C\nATOM 26 C VAL A 4 28.644 -42.316 -32.445 1.00 96.76 C\nATOM 27 CB VAL A 4 27.584 -44.291 -31.297 1.00 96.76 C\nATOM 28 O VAL A 4 27.914 -41.331 -32.298 1.00 96.76 O\nATOM 29 CG1 VAL A 4 27.346 -44.899 -32.678 1.00 96.76 C\nATOM 30 CG2 VAL A 4 27.786 -45.389 -30.255 1.00 96.76 C\nATOM 31 N THR A 5 29.369 -42.520 -33.544 1.00 97.00 N\nATOM 32 CA THR A 5 29.263 -41.639 -34.702 1.00 97.00 C\nATOM 33 C THR A 5 28.881 -42.433 -35.951 1.00 97.00 C\nATOM 34 CB THR A 5 30.583 -40.886 -34.954 1.00 97.00 C\nATOM 35 O THR A 5 29.033 -43.654 -35.986 1.00 97.00 O\nATOM 36 CG2 THR A 5 30.983 -40.064 -33.741 1.00 97.00 C\nATOM 37 OG1 THR A 5 31.617 -41.835 -35.244 1.00 97.00 O\nATOM 38 N VAL A 6 28.274 -41.662 -36.892 1.00 97.54 N\nATOM 39 CA VAL A 6 27.944 -42.275 -38.176 1.00 97.54 C\nATOM 40 C VAL A 6 28.630 -41.513 -39.306 1.00 97.54 C\nATOM 41 CB VAL A 6 26.418 -42.316 -38.411 1.00 97.54 C\nATOM 42 O VAL A 6 28.642 -40.277 -39.311 1.00 97.54 O\nATOM 43 CG1 VAL A 6 25.733 -43.201 -37.373 1.00 97.54 C\nATOM 44 CG2 VAL A 6 25.839 -40.903 -38.378 1.00 97.54 C\nATOM 45 N PRO A 7 29.284 -42.304 -40.230 1.00 97.01 N\nATOM 46 CA PRO A 7 29.857 -41.614 -41.388 1.00 97.01 C\nATOM 47 C PRO A 7 28.799 -40.960 -42.274 1.00 97.01 C\nATOM 48 CB PRO A 7 30.587 -42.730 -42.140 1.00 97.01 C\nATOM 49 O PRO A 7 29.023 -39.876 -42.819 1.00 97.01 O\nATOM 50 CG PRO A 7 29.972 -43.993 -41.632 1.00 97.01 C\nATOM 51 CD PRO A 7 29.492 -43.759 -40.230 1.00 97.01 C\nATOM 52 N LYS A 8 27.647 -41.681 -42.396 1.00 96.46 N\nATOM 53 CA LYS A 8 26.498 -41.188 -43.164 1.00 96.46 C\nATOM 54 C LYS A 8 25.197 -41.414 -42.406 1.00 96.46 C\nATOM 55 CB LYS A 8 26.439 -41.874 -44.530 1.00 96.46 C\nATOM 56 O LYS A 8 24.934 -42.514 -41.922 1.00 96.46 O\nATOM 57 CG LYS A 8 27.607 -41.543 -45.444 1.00 96.46 C\nATOM 58 CD LYS A 8 27.473 -42.228 -46.800 1.00 96.46 C\nATOM 59 CE LYS A 8 28.685 -41.967 -47.685 1.00 96.46 C\nATOM 60 NZ LYS A 8 28.571 -42.671 -48.995 1.00 96.46 N\nATOM 61 N ASP A 9 24.424 -40.296 -42.388 1.00 96.78 N\nATOM 62 CA ASP A 9 23.166 -40.391 -41.655 1.00 96.78 C\nATOM 63 C ASP A 9 21.995 -40.653 -42.602 1.00 96.78 C\nATOM 64 CB ASP A 9 22.913 -39.114 -40.849 1.00 96.78 C\nATOM 65 O ASP A 9 20.888 -40.956 -42.156 1.00 96.78 O\nATOM 66 CG ASP A 9 22.858 -37.870 -41.714 1.00 96.78 C\nATOM 67 OD1 ASP A 9 23.039 -37.973 -42.945 1.00 96.78 O\nATOM 68 OD2 ASP A 9 22.633 -36.771 -41.158 1.00 96.78 O\nATOM 69 N LEU A 10 22.267 -40.643 -43.987 1.00 97.96 N\nATOM 70 CA LEU A 10 21.300 -40.966 -45.023 1.00 97.96 C\nATOM 71 C LEU A 10 21.925 -41.849 -46.099 1.00 97.96 C\nATOM 72 CB LEU A 10 20.749 -39.684 -45.656 1.00 97.96 C\nATOM 73 O LEU A 10 22.977 -41.515 -46.647 1.00 97.96 O\nATOM 74 CG LEU A 10 19.786 -39.865 -46.832 1.00 97.96 C\nATOM 75 CD1 LEU A 10 18.476 -40.481 -46.355 1.00 97.96 C\nATOM 76 CD2 LEU A 10 19.534 -38.530 -47.530 1.00 97.96 C\nATOM 77 N TYR A 11 21.234 -43.022 -46.354 1.00 97.64 N\nATOM 78 CA TYR A 11 21.620 -43.926 -47.435 1.00 97.64 C\nATOM 79 C TYR A 11 20.507 -44.030 -48.475 1.00 97.64 C\nATOM 80 CB TYR A 11 21.954 -45.315 -46.884 1.00 97.64 C\nATOM 81 O TYR A 11 19.348 -44.278 -48.131 1.00 97.64 O\nATOM 82 CG TYR A 11 23.261 -45.372 -46.133 1.00 97.64 C\nATOM 83 CD1 TYR A 11 24.391 -45.952 -46.705 1.00 97.64 C\nATOM 84 CD2 TYR A 11 23.371 -44.847 -44.851 1.00 97.64 C\nATOM 85 CE1 TYR A 11 25.599 -46.010 -46.014 1.00 97.64 C\nATOM 86 CE2 TYR A 11 24.570 -44.894 -44.153 1.00 97.64 C\nATOM 87 OH TYR A 11 26.869 -45.529 -44.055 1.00 97.64 O\nATOM 88 CZ TYR A 11 25.678 -45.476 -44.744 1.00 97.64 C\nATOM 89 N VAL A 12 20.788 -43.692 -49.677 1.00 97.61 N\nATOM 90 CA VAL A 12 19.878 -43.935 -50.791 1.00 97.61 C\nATOM 91 C VAL A 12 20.359 -45.143 -51.594 1.00 97.61 C\nATOM 92 CB VAL A 12 19.760 -42.700 -51.702 1.00 97.61 C\nATOM 93 O VAL A 12 21.456 -45.123 -52.160 1.00 97.61 O\nATOM 94 CG1 VAL A 12 18.758 -42.951 -52.833 1.00 97.61 C\nATOM 95 CG2 VAL A 12 19.351 -41.470 -50.892 1.00 97.61 C\nATOM 96 N VAL A 13 19.521 -46.212 -51.575 1.00 97.39 N\nATOM 97 CA VAL A 13 19.980 -47.479 -52.137 1.00 97.39 C\nATOM 98 C VAL A 13 18.982 -47.980 -53.176 1.00 97.39 C\nATOM 99 CB VAL A 13 20.186 -48.547 -51.036 1.00 97.39 C\nATOM 100 O VAL A 13 17.799 -47.640 -53.120 1.00 97.39 O\nATOM 101 CG1 VAL A 13 21.329 -48.148 -50.102 1.00 97.39 C\nATOM 102 CG2 VAL A 13 18.895 -48.754 -50.247 1.00 97.39 C\nATOM 103 N GLU A 14 19.433 -48.775 -54.214 1.00 97.62 N\nATOM 104 CA GLU A 14 18.574 -49.353 -55.246 1.00 97.62 C\nATOM 105 C GLU A 14 17.991 -50.685 -54.799 1.00 97.62 C\nATOM 106 CB GLU A 14 19.346 -49.526 -56.555 1.00 97.62 C\nATOM 107 O GLU A 14 18.665 -51.474 -54.134 1.00 97.62 O\nATOM 108 CG GLU A 14 19.779 -48.217 -57.193 1.00 97.62 C\nATOM 109 CD GLU A 14 18.632 -47.425 -57.783 1.00 97.62 C\nATOM 110 OE1 GLU A 14 18.708 -46.174 -57.833 1.00 97.62 O\nATOM 111 OE2 GLU A 14 17.633 -48.054 -58.203 1.00 97.62 O\nATOM 112 N TYR A 15 16.687 -50.887 -55.216 1.00 96.92 N\nATOM 113 CA TYR A 15 16.017 -52.161 -54.986 1.00 96.92 C\nATOM 114 C TYR A 15 16.822 -53.317 -55.563 1.00 96.92 C\nATOM 115 CB TYR A 15 14.608 -52.153 -55.605 1.00 96.92 C\nATOM 116 O TYR A 15 17.290 -53.248 -56.702 1.00 96.92 O\nATOM 117 CG TYR A 15 13.852 -53.444 -55.410 1.00 96.92 C\nATOM 118 CD1 TYR A 15 13.847 -54.419 -56.395 1.00 96.92 C\nATOM 119 CD2 TYR A 15 13.147 -53.689 -54.233 1.00 96.92 C\nATOM 120 CE1 TYR A 15 13.148 -55.610 -56.220 1.00 96.92 C\nATOM 121 CE2 TYR A 15 12.442 -54.880 -54.053 1.00 96.92 C\nATOM 122 OH TYR A 15 11.753 -57.012 -54.876 1.00 96.92 O\nATOM 123 CZ TYR A 15 12.454 -55.826 -55.045 1.00 96.92 C\nATOM 124 N GLY A 16 17.140 -54.397 -54.728 1.00 96.23 N\nATOM 125 CA GLY A 16 17.818 -55.594 -55.202 1.00 96.23 C\nATOM 126 C GLY A 16 19.323 -55.540 -55.018 1.00 96.23 C\nATOM 127 O GLY A 16 20.011 -56.531 -55.237 1.00 96.23 O\nATOM 128 N SER A 17 19.871 -54.306 -54.549 1.00 97.77 N\nATOM 129 CA SER A 17 21.291 -54.149 -54.269 1.00 97.77 C\nATOM 130 C SER A 17 21.627 -54.596 -52.849 1.00 97.77 C\nATOM 131 CB SER A 17 21.726 -52.702 -54.471 1.00 97.77 C\nATOM 132 O SER A 17 20.730 -54.948 -52.076 1.00 97.77 O\nATOM 133 OG SER A 17 21.097 -51.847 -53.534 1.00 97.77 O\nATOM 134 N ASN A 18 23.004 -54.752 -52.557 1.00 97.90 N\nATOM 135 CA ASN A 18 23.484 -54.919 -51.189 1.00 97.90 C\nATOM 136 C ASN A 18 23.820 -53.575 -50.543 1.00 97.90 C\nATOM 137 CB ASN A 18 24.707 -55.837 -51.159 1.00 97.90 C\nATOM 138 O ASN A 18 24.224 -52.638 -51.227 1.00 97.90 O\nATOM 139 CG ASN A 18 24.408 -57.226 -51.691 1.00 97.90 C\nATOM 140 ND2 ASN A 18 25.457 -57.976 -52.022 1.00 97.90 N\nATOM 141 OD1 ASN A 18 23.249 -57.619 -51.811 1.00 97.90 O\nATOM 142 N MET A 19 23.491 -53.489 -49.239 1.00 97.94 N\nATOM 143 CA MET A 19 23.800 -52.251 -48.533 1.00 97.94 C\nATOM 144 C MET A 19 24.480 -52.545 -47.196 1.00 97.94 C\nATOM 145 CB MET A 19 22.532 -51.432 -48.303 1.00 97.94 C\nATOM 146 O MET A 19 24.198 -53.563 -46.565 1.00 97.94 O\nATOM 147 CG MET A 19 22.636 -50.450 -47.145 1.00 97.94 C\nATOM 148 SD MET A 19 21.088 -49.493 -46.892 1.00 97.94 S\nATOM 149 CE MET A 19 20.046 -50.767 -46.129 1.00 97.94 C\nATOM 150 N THR A 20 25.442 -51.627 -46.851 1.00 98.21 N\nATOM 151 CA THR A 20 26.075 -51.658 -45.540 1.00 98.21 C\nATOM 152 C THR A 20 25.976 -50.296 -44.858 1.00 98.21 C\nATOM 153 CB THR A 20 27.551 -52.077 -45.643 1.00 98.21 C\nATOM 154 O THR A 20 26.414 -49.285 -45.411 1.00 98.21 O\nATOM 155 CG2 THR A 20 28.205 -52.140 -44.267 1.00 98.21 C\nATOM 156 OG1 THR A 20 27.633 -53.368 -46.258 1.00 98.21 O\nATOM 157 N ILE A 21 25.337 -50.262 -43.716 1.00 98.26 N\nATOM 158 CA ILE A 21 25.322 -49.026 -42.942 1.00 98.26 C\nATOM 159 C ILE A 21 26.194 -49.184 -41.700 1.00 98.26 C\nATOM 160 CB ILE A 21 23.883 -48.634 -42.536 1.00 98.26 C\nATOM 161 O ILE A 21 26.320 -50.283 -41.158 1.00 98.26 O\nATOM 162 CG1 ILE A 21 23.224 -49.762 -41.738 1.00 98.26 C\nATOM 163 CG2 ILE A 21 23.050 -48.281 -43.774 1.00 98.26 C\nATOM 164 CD1 ILE A 21 21.840 -49.420 -41.204 1.00 98.26 C\nATOM 165 N GLU A 22 26.765 -47.994 -41.260 1.00 98.36 N\nATOM 166 CA GLU A 22 27.831 -48.100 -40.270 1.00 98.36 C\nATOM 167 C GLU A 22 27.600 -47.140 -39.105 1.00 98.36 C\nATOM 168 CB GLU A 22 29.192 -47.828 -40.912 1.00 98.36 C\nATOM 169 O GLU A 22 27.154 -46.008 -39.306 1.00 98.36 O\nATOM 170 CG GLU A 22 29.556 -48.806 -42.020 1.00 98.36 C\nATOM 171 CD GLU A 22 30.860 -48.463 -42.719 1.00 98.36 C\nATOM 172 OE1 GLU A 22 31.094 -48.957 -43.847 1.00 98.36 O\nATOM 173 OE2 GLU A 22 31.657 -47.696 -42.134 1.00 98.36 O\nATOM 174 N CYS A 23 27.906 -47.672 -37.909 1.00 98.33 N\nATOM 175 CA CYS A 23 28.126 -46.880 -36.707 1.00 98.33 C\nATOM 176 C CYS A 23 29.530 -47.104 -36.157 1.00 98.33 C\nATOM 177 CB CYS A 23 27.089 -47.227 -35.639 1.00 98.33 C\nATOM 178 O CYS A 23 30.009 -48.236 -36.105 1.00 98.33 O\nATOM 179 SG CYS A 23 25.410 -46.711 -36.060 1.00 98.33 S\nATOM 180 N LYS A 24 30.154 -45.942 -35.815 1.00 98.19 N\nATOM 181 CA LYS A 24 31.507 -46.041 -35.277 1.00 98.19 C\nATOM 182 C LYS A 24 31.525 -45.761 -33.774 1.00 98.19 C\nATOM 183 CB LYS A 24 32.447 -45.070 -35.999 1.00 98.19 C\nATOM 184 O LYS A 24 30.725 -44.968 -33.277 1.00 98.19 O\nATOM 185 CG LYS A 24 32.616 -45.363 -37.482 1.00 98.19 C\nATOM 186 CD LYS A 24 33.658 -44.447 -38.117 1.00 98.19 C\nATOM 187 CE LYS A 24 33.844 -44.757 -39.592 1.00 98.19 C\nATOM 188 NZ LYS A 24 34.864 -43.862 -40.224 1.00 98.19 N\nATOM 189 N PHE A 25 32.334 -46.548 -33.039 1.00 97.29 N\nATOM 190 CA PHE A 25 32.474 -46.353 -31.600 1.00 97.29 C\nATOM 191 C PHE A 25 33.933 -46.464 -31.176 1.00 97.29 C\nATOM 192 CB PHE A 25 31.625 -47.371 -30.834 1.00 97.29 C\nATOM 193 O PHE A 25 34.752 -47.040 -31.900 1.00 97.29 O\nATOM 194 CG PHE A 25 32.032 -48.801 -31.070 1.00 97.29 C\nATOM 195 CD1 PHE A 25 31.577 -49.490 -32.194 1.00 97.29 C\nATOM 196 CD2 PHE A 25 32.866 -49.458 -30.178 1.00 97.29 C\nATOM 197 CE1 PHE A 25 31.955 -50.813 -32.414 1.00 97.29 C\nATOM 198 CE2 PHE A 25 33.245 -50.775 -30.392 1.00 97.29 C\nATOM 199 CZ PHE A 25 32.786 -51.454 -31.512 1.00 97.29 C\nATOM 200 N PRO A 26 34.260 -45.732 -30.058 1.00 94.86 N\nATOM 201 CA PRO A 26 35.638 -45.789 -29.581 1.00 94.86 C\nATOM 202 C PRO A 26 36.062 -47.195 -29.157 1.00 94.86 C\nATOM 203 CB PRO A 26 35.635 -44.831 -28.380 1.00 94.86 C\nATOM 204 O PRO A 26 35.284 -47.913 -28.525 1.00 94.86 O\nATOM 205 CG PRO A 26 34.206 -44.786 -27.938 1.00 94.86 C\nATOM 206 CD PRO A 26 33.332 -45.059 -29.125 1.00 94.86 C\nATOM 207 N VAL A 27 37.243 -47.666 -29.658 1.00 90.41 N\nATOM 208 CA VAL A 27 37.724 -48.985 -29.279 1.00 90.41 C\nATOM 209 C VAL A 27 39.048 -48.864 -28.527 1.00 90.41 C\nATOM 210 CB VAL A 27 37.895 -49.903 -30.513 1.00 90.41 C\nATOM 211 O VAL A 27 39.846 -47.968 -28.818 1.00 90.41 O\nATOM 212 CG1 VAL A 27 38.996 -49.369 -31.433 1.00 90.41 C\nATOM 213 CG2 VAL A 27 38.214 -51.330 -30.074 1.00 90.41 C\nATOM 214 N GLU A 28 39.148 -49.668 -27.481 1.00 86.78 N\nATOM 215 CA GLU A 28 40.431 -49.785 -26.789 1.00 86.78 C\nATOM 216 C GLU A 28 41.438 -50.574 -27.622 1.00 86.78 C\nATOM 217 CB GLU A 28 40.250 -50.438 -25.417 1.00 86.78 C\nATOM 218 O GLU A 28 41.118 -51.033 -28.713 1.00 86.78 O\nATOM 219 CG GLU A 28 39.325 -49.666 -24.487 1.00 86.78 C\nATOM 220 CD GLU A 28 39.974 -48.432 -23.887 1.00 86.78 C\nATOM 221 OE1 GLU A 28 39.252 -47.578 -23.331 1.00 86.78 O\nATOM 222 OE2 GLU A 28 41.217 -48.322 -23.972 1.00 86.78 O\nATOM 223 N LYS A 29 42.769 -50.536 -27.287 1.00 83.01 N\nATOM 224 CA LYS A 29 43.846 -51.243 -27.983 1.00 83.01 C\nATOM 225 C LYS A 29 43.441 -52.682 -28.306 1.00 83.01 C\nATOM 226 CB LYS A 29 45.121 -51.241 -27.137 1.00 83.01 C\nATOM 227 O LYS A 29 43.689 -53.164 -29.407 1.00 83.01 O\nATOM 228 CG LYS A 29 45.822 -49.882 -27.072 1.00 83.01 C\nATOM 229 CD LYS A 29 47.153 -49.971 -26.342 1.00 83.01 C\nATOM 230 CE LYS A 29 47.823 -48.608 -26.228 1.00 83.01 C\nATOM 231 NZ LYS A 29 49.119 -48.692 -25.503 1.00 83.01 N\nATOM 232 N GLN A 30 42.646 -53.362 -27.307 1.00 89.74 N\nATOM 233 CA GLN A 30 42.030 -54.667 -27.512 1.00 89.74 C\nATOM 234 C GLN A 30 40.543 -54.635 -27.177 1.00 89.74 C\nATOM 235 CB GLN A 30 42.736 -55.718 -26.663 1.00 89.74 C\nATOM 236 O GLN A 30 40.145 -54.110 -26.135 1.00 89.74 O\nATOM 237 CG GLN A 30 44.174 -55.982 -27.072 1.00 89.74 C\nATOM 238 CD GLN A 30 44.804 -57.149 -26.326 1.00 89.74 C\nATOM 239 NE2 GLN A 30 46.102 -57.357 -26.533 1.00 89.74 N\nATOM 240 OE1 GLN A 30 44.131 -57.851 -25.558 1.00 89.74 O\nATOM 241 N LEU A 31 39.795 -55.218 -28.182 1.00 92.55 N\nATOM 242 CA LEU A 31 38.348 -55.227 -28.013 1.00 92.55 C\nATOM 243 C LEU A 31 37.929 -56.228 -26.940 1.00 92.55 C\nATOM 244 CB LEU A 31 37.656 -55.567 -29.337 1.00 92.55 C\nATOM 245 O LEU A 31 38.320 -57.392 -26.988 1.00 92.55 O\nATOM 246 CG LEU A 31 36.122 -55.572 -29.324 1.00 92.55 C\nATOM 247 CD1 LEU A 31 35.590 -54.155 -29.133 1.00 92.55 C\nATOM 248 CD2 LEU A 31 35.576 -56.192 -30.606 1.00 92.55 C\nATOM 249 N ASP A 32 37.273 -55.746 -25.871 1.00 92.67 N\nATOM 250 CA ASP A 32 36.691 -56.594 -24.831 1.00 92.67 C\nATOM 251 C ASP A 32 35.273 -57.009 -25.193 1.00 92.67 C\nATOM 252 CB ASP A 32 36.693 -55.862 -23.485 1.00 92.67 C\nATOM 253 O ASP A 32 34.321 -56.248 -24.987 1.00 92.67 O\nATOM 254 CG ASP A 32 36.221 -56.744 -22.336 1.00 92.67 C\nATOM 255 OD1 ASP A 32 35.874 -57.923 -22.570 1.00 92.67 O\nATOM 256 OD2 ASP A 32 36.190 -56.247 -21.189 1.00 92.67 O\nATOM 257 N LEU A 33 35.074 -58.258 -25.791 1.00 90.45 N\nATOM 258 CA LEU A 33 33.800 -58.746 -26.308 1.00 90.45 C\nATOM 259 C LEU A 33 32.804 -58.975 -25.174 1.00 90.45 C\nATOM 260 CB LEU A 33 34.000 -60.044 -27.094 1.00 90.45 C\nATOM 261 O LEU A 33 31.592 -58.870 -25.379 1.00 90.45 O\nATOM 262 CG LEU A 33 34.714 -59.918 -28.440 1.00 90.45 C\nATOM 263 CD1 LEU A 33 34.966 -61.297 -29.039 1.00 90.45 C\nATOM 264 CD2 LEU A 33 33.896 -59.058 -29.400 1.00 90.45 C\nATOM 265 N ALA A 34 33.328 -59.195 -23.947 1.00 87.59 N\nATOM 266 CA ALA A 34 32.494 -59.441 -22.775 1.00 87.59 C\nATOM 267 C ALA A 34 31.741 -58.180 -22.357 1.00 87.59 C\nATOM 268 CB ALA A 34 33.345 -59.956 -21.616 1.00 87.59 C\nATOM 269 O ALA A 34 30.650 -58.264 -21.792 1.00 87.59 O\nATOM 270 N ALA A 35 32.290 -57.083 -22.716 1.00 88.45 N\nATOM 271 CA ALA A 35 31.739 -55.788 -22.316 1.00 88.45 C\nATOM 272 C ALA A 35 30.969 -55.142 -23.460 1.00 88.45 C\nATOM 273 CB ALA A 35 32.857 -54.865 -21.830 1.00 88.45 C\nATOM 274 O ALA A 35 30.266 -54.151 -23.258 1.00 88.45 O\nATOM 275 N LEU A 36 30.996 -55.754 -24.685 1.00 93.28 N\nATOM 276 CA LEU A 36 30.441 -55.123 -25.882 1.00 93.28 C\nATOM 277 C LEU A 36 29.007 -55.582 -26.124 1.00 93.28 C\nATOM 278 CB LEU A 36 31.306 -55.445 -27.103 1.00 93.28 C\nATOM 279 O LEU A 36 28.716 -56.781 -26.063 1.00 93.28 O\nATOM 280 CG LEU A 36 30.835 -54.860 -28.439 1.00 93.28 C\nATOM 281 CD1 LEU A 36 30.920 -53.337 -28.412 1.00 93.28 C\nATOM 282 CD2 LEU A 36 31.662 -55.430 -29.587 1.00 93.28 C\nATOM 283 N ILE A 37 28.164 -54.626 -26.305 1.00 94.53 N\nATOM 284 CA ILE A 37 26.802 -54.859 -26.771 1.00 94.53 C\nATOM 285 C ILE A 37 26.544 -54.040 -28.035 1.00 94.53 C\nATOM 286 CB ILE A 37 25.766 -54.507 -25.683 1.00 94.53 C\nATOM 287 O ILE A 37 26.782 -52.831 -28.058 1.00 94.53 O\nATOM 288 CG1 ILE A 37 26.013 -55.340 -24.420 1.00 94.53 C\nATOM 289 CG2 ILE A 37 24.342 -54.721 -26.208 1.00 94.53 C\nATOM 290 CD1 ILE A 37 25.229 -54.868 -23.203 1.00 94.53 C\nATOM 291 N VAL A 38 26.156 -54.766 -29.157 1.00 96.44 N\nATOM 292 CA VAL A 38 25.762 -54.095 -30.393 1.00 96.44 C\nATOM 293 C VAL A 38 24.313 -54.443 -30.727 1.00 96.44 C\nATOM 294 CB VAL A 38 26.688 -54.478 -31.567 1.00 96.44 C\nATOM 295 O VAL A 38 23.965 -55.619 -30.857 1.00 96.44 O\nATOM 296 CG1 VAL A 38 26.273 -53.752 -32.843 1.00 96.44 C\nATOM 297 CG2 VAL A 38 28.144 -54.167 -31.223 1.00 96.44 C\nATOM 298 N TYR A 39 23.536 -53.344 -30.775 1.00 95.82 N\nATOM 299 CA TYR A 39 22.111 -53.506 -31.049 1.00 95.82 C\nATOM 300 C TYR A 39 21.698 -52.708 -32.278 1.00 95.82 C\nATOM 301 CB TYR A 39 21.277 -53.070 -29.839 1.00 95.82 C\nATOM 302 O TYR A 39 21.980 -51.511 -32.373 1.00 95.82 O\nATOM 303 CG TYR A 39 19.789 -53.208 -30.047 1.00 95.82 C\nATOM 304 CD1 TYR A 39 19.012 -52.112 -30.417 1.00 95.82 C\nATOM 305 CD2 TYR A 39 19.152 -54.434 -29.868 1.00 95.82 C\nATOM 306 CE1 TYR A 39 17.639 -52.234 -30.606 1.00 95.82 C\nATOM 307 CE2 TYR A 39 17.781 -54.567 -30.056 1.00 95.82 C\nATOM 308 OH TYR A 39 15.681 -53.590 -30.616 1.00 95.82 O\nATOM 309 CZ TYR A 39 17.035 -53.464 -30.425 1.00 95.82 C\nATOM 310 N TRP A 40 21.135 -53.422 -33.265 1.00 97.04 N\nATOM 311 CA TRP A 40 20.538 -52.778 -34.430 1.00 97.04 C\nATOM 312 C TRP A 40 19.033 -53.026 -34.478 1.00 97.04 C\nATOM 313 CB TRP A 40 21.193 -53.284 -35.719 1.00 97.04 C\nATOM 314 O TRP A 40 18.574 -54.141 -34.227 1.00 97.04 O\nATOM 315 CG TRP A 40 22.553 -52.708 -35.978 1.00 97.04 C\nATOM 316 CD1 TRP A 40 23.759 -53.284 -35.694 1.00 97.04 C\nATOM 317 CD2 TRP A 40 22.844 -51.438 -36.570 1.00 97.04 C\nATOM 318 CE2 TRP A 40 24.250 -51.309 -36.614 1.00 97.04 C\nATOM 319 CE3 TRP A 40 22.052 -50.395 -37.067 1.00 97.04 C\nATOM 320 NE1 TRP A 40 24.784 -52.449 -36.075 1.00 97.04 N\nATOM 321 CH2 TRP A 40 24.083 -49.172 -37.618 1.00 97.04 C\nATOM 322 CZ2 TRP A 40 24.881 -50.178 -37.138 1.00 97.04 C\nATOM 323 CZ3 TRP A 40 22.681 -49.270 -37.589 1.00 97.04 C\nATOM 324 N GLU A 41 18.306 -51.942 -34.808 1.00 95.04 N\nATOM 325 CA GLU A 41 16.870 -52.088 -35.011 1.00 95.04 C\nATOM 326 C GLU A 41 16.378 -51.190 -36.142 1.00 95.04 C\nATOM 327 CB GLU A 41 16.109 -51.769 -33.720 1.00 95.04 C\nATOM 328 O GLU A 41 17.028 -50.200 -36.482 1.00 95.04 O\nATOM 329 CG GLU A 41 16.165 -50.302 -33.321 1.00 95.04 C\nATOM 330 CD GLU A 41 15.451 -50.010 -32.013 1.00 95.04 C\nATOM 331 OE1 GLU A 41 15.173 -48.824 -31.721 1.00 95.04 O\nATOM 332 OE2 GLU A 41 15.163 -50.976 -31.268 1.00 95.04 O\nATOM 333 N MET A 42 15.457 -51.632 -36.818 1.00 94.95 N\nATOM 334 CA MET A 42 14.688 -50.769 -37.715 1.00 94.95 C\nATOM 335 C MET A 42 13.325 -50.442 -37.116 1.00 94.95 C\nATOM 336 CB MET A 42 14.514 -51.433 -39.081 1.00 94.95 C\nATOM 337 O MET A 42 12.517 -51.340 -36.872 1.00 94.95 O\nATOM 338 CG MET A 42 13.840 -50.544 -40.112 1.00 94.95 C\nATOM 339 SD MET A 42 13.492 -51.427 -41.684 1.00 94.95 S\nATOM 340 CE MET A 42 11.995 -52.337 -41.210 1.00 94.95 C\nATOM 341 N GLU A 43 13.262 -49.085 -36.905 1.00 88.55 N\nATOM 342 CA GLU A 43 12.120 -48.676 -36.097 1.00 88.55 C\nATOM 343 C GLU A 43 12.078 -49.439 -34.776 1.00 88.55 C\nATOM 344 CB GLU A 43 10.813 -48.888 -36.868 1.00 88.55 C\nATOM 345 O GLU A 43 12.993 -49.324 -33.959 1.00 88.55 O\nATOM 346 CG GLU A 43 10.790 -48.221 -38.230 1.00 88.55 C\nATOM 347 CD GLU A 43 10.863 -46.704 -38.156 1.00 88.55 C\nATOM 348 OE1 GLU A 43 11.173 -46.062 -39.184 1.00 88.55 O\nATOM 349 OE2 GLU A 43 10.607 -46.155 -37.062 1.00 88.55 O\nATOM 350 N ASP A 44 11.067 -50.254 -34.466 1.00 84.92 N\nATOM 351 CA ASP A 44 10.986 -50.948 -33.188 1.00 84.92 C\nATOM 352 C ASP A 44 11.255 -52.442 -33.357 1.00 84.92 C\nATOM 353 CB ASP A 44 9.614 -50.731 -32.543 1.00 84.92 C\nATOM 354 O ASP A 44 11.052 -53.226 -32.426 1.00 84.92 O\nATOM 355 CG ASP A 44 9.364 -49.284 -32.152 1.00 84.92 C\nATOM 356 OD1 ASP A 44 10.303 -48.609 -31.681 1.00 84.92 O\nATOM 357 OD2 ASP A 44 8.213 -48.818 -32.305 1.00 84.92 O\nATOM 358 N LYS A 45 11.726 -52.763 -34.589 1.00 89.07 N\nATOM 359 CA LYS A 45 11.990 -54.176 -34.856 1.00 89.07 C\nATOM 360 C LYS A 45 13.480 -54.482 -34.772 1.00 89.07 C\nATOM 361 CB LYS A 45 11.450 -54.575 -36.229 1.00 89.07 C\nATOM 362 O LYS A 45 14.290 -53.862 -35.476 1.00 89.07 O\nATOM 363 CG LYS A 45 9.929 -54.551 -36.322 1.00 89.07 C\nATOM 364 CD LYS A 45 9.449 -55.016 -37.687 1.00 89.07 C\nATOM 365 CE LYS A 45 7.934 -54.906 -37.818 1.00 89.07 C\nATOM 366 NZ LYS A 45 7.466 -55.305 -39.180 1.00 89.07 N\nATOM 367 N ASN A 46 13.814 -55.411 -33.859 1.00 91.35 N\nATOM 368 CA ASN A 46 15.198 -55.829 -33.664 1.00 91.35 C\nATOM 369 C ASN A 46 15.739 -56.566 -34.888 1.00 91.35 C\nATOM 370 CB ASN A 46 15.322 -56.708 -32.418 1.00 91.35 C\nATOM 371 O ASN A 46 15.051 -57.409 -35.468 1.00 91.35 O\nATOM 372 CG ASN A 46 16.730 -57.242 -32.222 1.00 91.35 C\nATOM 373 ND2 ASN A 46 17.589 -56.435 -31.612 1.00 91.35 N\nATOM 374 OD1 ASN A 46 17.035 -58.371 -32.611 1.00 91.35 O\nATOM 375 N ILE A 47 16.950 -56.181 -35.305 1.00 94.12 N\nATOM 376 CA ILE A 47 17.609 -56.849 -36.421 1.00 94.12 C\nATOM 377 C ILE A 47 18.793 -57.666 -35.909 1.00 94.12 C\nATOM 378 CB ILE A 47 18.082 -55.833 -37.488 1.00 94.12 C\nATOM 379 O ILE A 47 18.887 -58.865 -36.168 1.00 94.12 O\nATOM 380 CG1 ILE A 47 16.883 -55.072 -38.066 1.00 94.12 C\nATOM 381 CG2 ILE A 47 18.872 -56.538 -38.594 1.00 94.12 C\nATOM 382 CD1 ILE A 47 17.266 -53.945 -39.015 1.00 94.12 C\nATOM 383 N ILE A 48 19.690 -56.997 -35.111 1.00 94.27 N\nATOM 384 CA ILE A 48 20.884 -57.646 -34.581 1.00 94.27 C\nATOM 385 C ILE A 48 20.990 -57.380 -33.080 1.00 94.27 C\nATOM 386 CB ILE A 48 22.161 -57.159 -35.303 1.00 94.27 C\nATOM 387 O ILE A 48 20.763 -56.256 -32.625 1.00 94.27 O\nATOM 388 CG1 ILE A 48 22.138 -57.585 -36.773 1.00 94.27 C\nATOM 389 CG2 ILE A 48 23.412 -57.686 -34.599 1.00 94.27 C\nATOM 390 CD1 ILE A 48 22.216 -59.094 -36.983 1.00 94.27 C\nATOM 391 N GLN A 49 21.238 -58.440 -32.306 1.00 93.49 N\nATOM 392 CA GLN A 49 21.712 -58.364 -30.931 1.00 93.49 C\nATOM 393 C GLN A 49 22.995 -59.169 -30.744 1.00 93.49 C\nATOM 394 CB GLN A 49 20.636 -58.863 -29.963 1.00 93.49 C\nATOM 395 O GLN A 49 22.965 -60.401 -30.748 1.00 93.49 O\nATOM 396 CG GLN A 49 19.333 -58.077 -30.031 1.00 93.49 C\nATOM 397 CD GLN A 49 18.282 -58.597 -29.077 1.00 93.49 C\nATOM 398 NE2 GLN A 49 17.021 -58.536 -29.489 1.00 93.49 N\nATOM 399 OE1 GLN A 49 18.596 -59.058 -27.969 1.00 93.49 O\nATOM 400 N PHE A 50 24.008 -58.432 -30.705 1.00 93.92 N\nATOM 401 CA PHE A 50 25.312 -59.018 -30.443 1.00 93.92 C\nATOM 402 C PHE A 50 25.763 -58.720 -29.017 1.00 93.92 C\nATOM 403 CB PHE A 50 26.353 -58.500 -31.437 1.00 93.92 C\nATOM 404 O PHE A 50 26.026 -57.569 -28.670 1.00 93.92 O\nATOM 405 CG PHE A 50 27.702 -59.155 -31.308 1.00 93.92 C\nATOM 406 CD1 PHE A 50 28.723 -58.533 -30.604 1.00 93.92 C\nATOM 407 CD2 PHE A 50 27.945 -60.388 -31.897 1.00 93.92 C\nATOM 408 CE1 PHE A 50 29.973 -59.138 -30.482 1.00 93.92 C\nATOM 409 CE2 PHE A 50 29.191 -60.999 -31.780 1.00 93.92 C\nATOM 410 CZ PHE A 50 30.203 -60.370 -31.073 1.00 93.92 C\nEND\n","target_input":"A1-50","hotspot_residues":["A37","A39","A49"],"binder_length":40,"num_designs":2,"num_steps":50,"seed":5}
~~~
Invoke the example through the live local MCP endpoint. The snippet reads the example back out of this file, so the document and the call cannot drift apart:
~~~bash
python - <<'PY'
import asyncio
import json
import re
from pathlib import Path
from fastmcp import Client
text = Path("skills/setup-complexa-remote-tool/SKILL.md").read_text()
arguments = json.loads(re.search(r"~~~json\n(.*?)\n~~~", text, re.DOTALL).group(1))
async def main():
async with Client("http://127.0.0.1:8056/mcp", timeout=3600) as client:
result = await client.call_tool("complexa_design_binder", arguments)
print(result)
asyncio.run(main())
PY
~~~
Expected success shape: `n_designs` equal to `num_designs`, and under `designs` one record per design with a `binder_sequence` of exactly `binder_length` letters; `stage` says "generation only: raw samples, no reward model, no ranking". Run through the live endpoint on 2026-10-02 it returned `n_designs` 2 with binder sequences `KTCSTKGDKVGGCNSNGGCVCKNGVCDKGWSGKNCEEGVN` and `KLLKKNFDGTNDNLTKQAVTEFQKKAGLGVTGIFPTQTRR` (40 residues each), `num_steps` 50, `request_peak_reserved_gib` about 1.9, in 81 s including the cold model build; sampling is seeded, so the same seed reproduces them. Pass `"return_pdb": true` to receive each design's PDB (about 100 KB each). A request that fails on its input comes back as an `error` field naming the problem -- different from "resident worker is not available", which is the provider. Check scientific meaning, output bounds, invalid-input behavior, and absence of paths, secrets, and traces.
## Limits, and why they are what they are
The input has two axes that multiply -- the pair tensor over (target crop + binder) and the designs sampled in one forward pass -- and the ceilings bound the PRODUCT, because a ceiling per axis is how progen2 admitted a 116.93 GiB request. Crop at most 300 residues, binder 20-200, at most 16 designs, `num_steps` 10-400, and (crop + binder)^2 x batch at most 4,000,000. The worst point those admit together, 300 + 200 residues with 16 designs in one pass, is the row the manifest's `vram_budget_gb` (20.25 GiB) is declared at. A request past any one is refused in milliseconds and names the limit; the `batch_size` argument splits the same number of designs into more passes at a lower peak.
Per-request peak reserved on this card, GiB (the peak tracks the input, so the budget is declared at the corner, not the smoke): N = 100 / 200 / 300 / 400 / 500 residues at one design 1.70 / 1.88 / 2.17 / 2.65 / 3.18; at N = 500, 2 / 4 / 8 / 16 designs per pass 4.81 / 6.03 / 10.33 / 17.75-20.25 (20.25 when the previous request left a differently shaped pair-bias buffer, which the kit replaces on a shape change). Designs per pass, not length, is the expensive axis, so a host that never samples more than 4 per pass can hold this provider in about 9 GiB.
## Tune GPU and concurrency
- Use one worker. The resident worker serves one request at a time by design; a second in-flight request queues on its lock rather than doubling peak VRAM.
- Read `vram_budget_gb` from the provider manifest and the measured file before co-tenanting anything else on the card. The manifest states the envelope the figure was measured at; the budget is the worst case, not the smoke.
- Residency is worth 5.4x at its best rung (a 36-residue binder, 10 steps: 44 s fresh against 8 s held), about 5x for the smoke shape on a quiet card (1.6x when other sessions load it), and only about 1.13x at the budget row, where a request is minutes of sampling and the saved import graph and model build are seconds. Wall times on a shared card do not reproduce; peaks do.
- Measure cold start, then **at least four consecutive identical requests**, then a sequence that changes the ENGINE KEY, not merely the input: here that is `num_steps`, `batch_size`, the target and the binder length, then back to the first request, which must reproduce byte for byte. It does (see the status line); that is what shows a held worker rebuilds its per-request state correctly.
- Then parallel levels 1, 2, 4, 8, and only 16 if memory permits.
- Record successes/errors, p50/p95, peak RAM/VRAM, utilization, queueing, cancellation cleanup, and recovery.
- Increase workers only after single-flight initialization and sanitized recoverable OOM/timeout behavior are proven.
## Troubleshoot and clean up
- Read the refusal. Every step of `tu remote setup` names what is wrong and carries the fix; exit 3 is a refusal and exit 1 is a failure.
- The worker's own transcript is at `~/.cache/tooluniverse/remote-logs/complexa-resident.log`. It holds the kit's lever census (`LEVER name=... state=on` for all six levers of `fast`; `state=skipped reason=padded_batches` on `pair_assembly` would mean a binder-length range reached the model, which this tool never sends) and, for a failed request, the Python traceback -- the reply carries only the message.
- `nvrtc: error: invalid value for --gpu-architecture` in a reply means the worker started without the 12.9 NVRTC first on `LD_LIBRARY_PATH`: re-run `tu remote setup complexa --only environment` and start the worker through `tu remote run complexa`, which applies the launcher. Do not export `LD_LIBRARY_PATH` into the MCP server's shell expecting it to reach the worker.
- A `COMPLEXA_OPT*` name exported in your shell (other than `COMPLEXA_OPT` and `COMPLEXA_OPT_RECORD`) makes the kit's start-up hook exit 3 in EVERY interpreter of the model environment. The launcher strips such names from the worker's environment; running the model interpreter by hand with one set is what fails.
- Import/executable failure in the model half: re-run `tu remote setup complexa --only environment`. It rebuilds from the lock with `--no-deps` and will not silently resolve a different version.
- Weights off their pin: the named file is left in place for inspection rather than deleted, because a truncated transfer and a corrupt file look alike. Remove it by hand and re-run `--only weights`.
- 401/403 on deliberate network binding: configure matching TOOLUNIVERSE_API_TOKEN bearer auth; prefer loopback plus relay.
- Stop server/relay with Ctrl-C. If installed, run `tuplatform-service uninstall --name validation-complexa`.
- A worker outliving its server is a known shape: it has an idle timeout and an orphan watchdog, and it exits when its parent becomes init. Between requests it holds 0.02 to 2.5 GiB of the card (the model returns to the CPU after each request; the 2.5 GiB is the kit's one pair-bias buffer, kept for the last request's shape). Check with `nvidia-smi --query-compute-apps=pid,used_memory --format=csv` before assuming the card is free.
- Revoke temporary keys. After confirmation, remove only .venvs/complexa and the provider's own cache directory; never use a broad recursive target.
Use only official upstream documentation linked by the implementation README; do not substitute third-party model mirrors.Signals
Information
- Repository
- mims-harvard/ToolUniverse
- Author
- mims-harvard
- Last Sync
- 11/2/2026
- Repo Updated
- 11/2/2026
- Created
- 10/19/2026
Reviews (0)
No reviews yet. Be the first to review this skill!
Related Skills
CLAUDE
Claude-Mem: AI Development Instructions
cursorrules
CrewAI Development Rules
firecrawl-build-interact
Integrate Firecrawl `/interact` into product code for dynamic pages and browser actions after scraping. Use when a feature needs clicks, form fills, pagination, authentication-aware flows, or other multi-step interactions that plain `/scrape` cannot complete.
firecrawl-build
Integrate Firecrawl into application code whenever a product, agent, or workflow needs web data inside the app — web search, live search results, page scraping, structured extraction, or browser interaction. Use when building any feature that needs data from the web in code, even if the user does not mention Firecrawl explicitly and only describes wanting web data, website content, search, scraping, or interaction in an application. Trigger for Firecrawl requests, "fire girl" shorthand, and generic app-level web-data needs that should map to `/scrape`, `/search`, or `/interact`. Do not use this skill for one-off terminal-only web tasks during the current session; use `firecrawl/cli` for those.
Related Guides
Bear Notes Claude Skill: Your AI-Powered Note-Taking Assistant
Learn how to use the bear-notes Claude skill. Complete guide with installation instructions and examples.
OpenAI Whisper API Claude Skill: Complete Guide to AI-Powered Audio Transcription
Learn how to use the openai-whisper-api Claude skill. Complete guide with installation instructions and examples.
Mastering the Oracle CLI: A Complete Guide to the Claude Skill for Database Professionals
Learn how to use the oracle Claude skill. Complete guide with installation instructions and examples.