Upload folder using huggingface_hub
Browse files- .gitattributes +52 -12
- MODEL_FILE_MANIFEST.tsv +10 -0
- README.md +172 -0
- config/inference/base.yaml +140 -0
- config/inference/symmetry.yaml +26 -0
- configuration.json +26 -0
- examples/input_pdbs/1YCR.pdb +822 -0
- examples/input_pdbs/1qys.pdb +1067 -0
- models/Attention_module.py +404 -0
- models/AuxiliaryPredictor.py +92 -0
- models/Embeddings.py +303 -0
- models/RoseTTAFoldModel.py +140 -0
- models/SE3_network.py +83 -0
- models/Track_module.py +474 -0
- models/diffusion.py +695 -0
- models/model_input_logger.py +71 -0
- scripts/preflight.py +111 -0
- scripts/run_inference.py +202 -0
- scripts/run_inference.sh +14 -0
- weight/ActiveSite_ckpt.pt +3 -0
- weight/Base_ckpt.pt +3 -0
- weight/Base_epoch8_ckpt.pt +3 -0
- weight/Complex_Fold_base_ckpt.pt +3 -0
- weight/Complex_base_ckpt.pt +3 -0
- weight/Complex_beta_ckpt.pt +3 -0
- weight/InpaintSeq_Fold_ckpt.pt +3 -0
- weight/InpaintSeq_ckpt.pt +3 -0
- weight/RF_structure_prediction_weights.pt +3 -0
.gitattributes
CHANGED
|
@@ -1,35 +1,75 @@
|
|
| 1 |
*.7z filter=lfs diff=lfs merge=lfs -text
|
| 2 |
*.arrow filter=lfs diff=lfs merge=lfs -text
|
| 3 |
*.bin filter=lfs diff=lfs merge=lfs -text
|
|
|
|
| 4 |
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
| 5 |
-
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
| 6 |
*.ftz filter=lfs diff=lfs merge=lfs -text
|
| 7 |
-
|
| 8 |
*.h5 filter=lfs diff=lfs merge=lfs -text
|
| 9 |
*.joblib filter=lfs diff=lfs merge=lfs -text
|
| 10 |
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
| 11 |
-
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
| 12 |
*.model filter=lfs diff=lfs merge=lfs -text
|
| 13 |
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
| 14 |
-
*.npy filter=lfs diff=lfs merge=lfs -text
|
| 15 |
-
*.npz filter=lfs diff=lfs merge=lfs -text
|
| 16 |
*.onnx filter=lfs diff=lfs merge=lfs -text
|
| 17 |
*.ot filter=lfs diff=lfs merge=lfs -text
|
| 18 |
*.parquet filter=lfs diff=lfs merge=lfs -text
|
| 19 |
*.pb filter=lfs diff=lfs merge=lfs -text
|
| 20 |
-
|
| 21 |
-
*.pkl filter=lfs diff=lfs merge=lfs -text
|
| 22 |
-
*.pt filter=lfs diff=lfs merge=lfs -text
|
| 23 |
*.pth filter=lfs diff=lfs merge=lfs -text
|
| 24 |
*.rar filter=lfs diff=lfs merge=lfs -text
|
| 25 |
-
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
| 26 |
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
| 27 |
-
|
| 28 |
-
*.tar filter=lfs diff=lfs merge=lfs -text
|
| 29 |
*.tflite filter=lfs diff=lfs merge=lfs -text
|
| 30 |
*.tgz filter=lfs diff=lfs merge=lfs -text
|
| 31 |
-
*.wasm filter=lfs diff=lfs merge=lfs -text
|
| 32 |
*.xz filter=lfs diff=lfs merge=lfs -text
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
*.7z filter=lfs diff=lfs merge=lfs -text
|
| 2 |
*.arrow filter=lfs diff=lfs merge=lfs -text
|
| 3 |
*.bin filter=lfs diff=lfs merge=lfs -text
|
| 4 |
+
*.bin.* filter=lfs diff=lfs merge=lfs -text
|
| 5 |
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
|
|
|
| 6 |
*.ftz filter=lfs diff=lfs merge=lfs -text
|
| 7 |
+
|
| 8 |
*.h5 filter=lfs diff=lfs merge=lfs -text
|
| 9 |
*.joblib filter=lfs diff=lfs merge=lfs -text
|
| 10 |
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
| 11 |
*.model filter=lfs diff=lfs merge=lfs -text
|
| 12 |
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
| 13 |
*.onnx filter=lfs diff=lfs merge=lfs -text
|
| 14 |
*.ot filter=lfs diff=lfs merge=lfs -text
|
| 15 |
*.parquet filter=lfs diff=lfs merge=lfs -text
|
| 16 |
*.pb filter=lfs diff=lfs merge=lfs -text
|
| 17 |
+
|
|
|
|
|
|
|
| 18 |
*.pth filter=lfs diff=lfs merge=lfs -text
|
| 19 |
*.rar filter=lfs diff=lfs merge=lfs -text
|
|
|
|
| 20 |
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
| 21 |
+
|
|
|
|
| 22 |
*.tflite filter=lfs diff=lfs merge=lfs -text
|
| 23 |
*.tgz filter=lfs diff=lfs merge=lfs -text
|
|
|
|
| 24 |
*.xz filter=lfs diff=lfs merge=lfs -text
|
| 25 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 26 |
+
*.zstandard filter=lfs diff=lfs merge=lfs -text
|
| 27 |
+
*.tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 28 |
+
*.db* filter=lfs diff=lfs merge=lfs -text
|
| 29 |
+
*.ark* filter=lfs diff=lfs merge=lfs -text
|
| 30 |
+
**/*ckpt*data* filter=lfs diff=lfs merge=lfs -text
|
| 31 |
+
**/*ckpt*.meta filter=lfs diff=lfs merge=lfs -text
|
| 32 |
+
**/*ckpt*.index filter=lfs diff=lfs merge=lfs -text
|
| 33 |
+
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
| 34 |
+
|
| 35 |
+
*.gguf* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
*.ggml filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
*.llamafile* filter=lfs diff=lfs merge=lfs -text
|
| 38 |
+
*.pt2 filter=lfs diff=lfs merge=lfs -text
|
| 39 |
+
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
| 40 |
+
*.npy filter=lfs diff=lfs merge=lfs -text
|
| 41 |
+
*.npz filter=lfs diff=lfs merge=lfs -text
|
| 42 |
+
*.pickle filter=lfs diff=lfs merge=lfs -text
|
| 43 |
+
*.pkl filter=lfs diff=lfs merge=lfs -text
|
| 44 |
+
|
| 45 |
+
*.wasm filter=lfs diff=lfs merge=lfs -text
|
| 46 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 47 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 48 |
+
|
| 49 |
+
examples/target_folds/insulin_target_adj.pt filter=lfs diff=lfs merge=lfs -text
|
| 50 |
+
examples/ppi_scaffolds_subset.tar.gz filter=lfs diff=lfs merge=lfs -text
|
| 51 |
+
examples/tim_barrel_scaffold/6WVS_adj.pt filter=lfs diff=lfs merge=lfs -text
|
| 52 |
+
examples/target_folds/insulin_target_ss.pt filter=lfs diff=lfs merge=lfs -text
|
| 53 |
+
|
| 54 |
+
examples/tim_barrel_scaffold/6WVS_ss.pt filter=lfs diff=lfs merge=lfs -text
|
| 55 |
+
|
| 56 |
+
img/rfdiffusion_logo1.png filter=lfs diff=lfs merge=lfs -text
|
| 57 |
+
|
| 58 |
+
models/Complex_beta_ckpt.pt filter=lfs diff=lfs merge=lfs -text
|
| 59 |
+
models/Base_epoch8_ckpt.pt filter=lfs diff=lfs merge=lfs -text
|
| 60 |
+
models/Base_ckpt.pt filter=lfs diff=lfs merge=lfs -text
|
| 61 |
+
models/Complex_base_ckpt.pt filter=lfs diff=lfs merge=lfs -text
|
| 62 |
+
models/Complex_Fold_base_ckpt.pt filter=lfs diff=lfs merge=lfs -text
|
| 63 |
+
models/ActiveSite_ckpt.pt filter=lfs diff=lfs merge=lfs -text
|
| 64 |
+
|
| 65 |
+
models/InpaintSeq_ckpt.pt filter=lfs diff=lfs merge=lfs -text
|
| 66 |
+
models/InpaintSeq_Fold_ckpt.pt filter=lfs diff=lfs merge=lfs -text
|
| 67 |
+
models/RF_structure_prediction_weights.pt filter=lfs diff=lfs merge=lfs -textweight/ActiveSite_ckpt.pt filter=lfs diff=lfs merge=lfs -text
|
| 68 |
+
weight/Base_ckpt.pt filter=lfs diff=lfs merge=lfs -text
|
| 69 |
+
weight/Base_epoch8_ckpt.pt filter=lfs diff=lfs merge=lfs -text
|
| 70 |
+
weight/Complex_Fold_base_ckpt.pt filter=lfs diff=lfs merge=lfs -text
|
| 71 |
+
weight/Complex_base_ckpt.pt filter=lfs diff=lfs merge=lfs -text
|
| 72 |
+
weight/Complex_beta_ckpt.pt filter=lfs diff=lfs merge=lfs -text
|
| 73 |
+
weight/InpaintSeq_Fold_ckpt.pt filter=lfs diff=lfs merge=lfs -text
|
| 74 |
+
weight/InpaintSeq_ckpt.pt filter=lfs diff=lfs merge=lfs -text
|
| 75 |
+
weight/RF_structure_prediction_weights.pt filter=lfs diff=lfs merge=lfs -text
|
MODEL_FILE_MANIFEST.tsv
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
file size_bytes sha256 package_path
|
| 2 |
+
ActiveSite_ckpt.pt 483616107 beca1f672049161df0bc6a2d2523828f19fd9c8a2b449988e246dde42e7ea986 weight/ActiveSite_ckpt.pt
|
| 3 |
+
Base_ckpt.pt 483616107 0fcf7d7c32b4848030aca3a051e6768de194616f96ba6c38186351a33bfc6eca weight/Base_ckpt.pt
|
| 4 |
+
Base_epoch8_ckpt.pt 483616427 b8e5d57f0b8a8f8cb30779c106b75210b46a914a4d19fb180676ae647f5ae23d weight/Base_epoch8_ckpt.pt
|
| 5 |
+
Complex_Fold_base_ckpt.pt 483626923 0ac3b4024aea811078cec41482528291d6d7d7084bf8190ec118f54642fb81a1 weight/Complex_Fold_base_ckpt.pt
|
| 6 |
+
Complex_base_ckpt.pt 483619179 76e4e260aefee3b582bd76b77ab95d2592e64f00c51bf344968ab9239f3250bc weight/Complex_base_ckpt.pt
|
| 7 |
+
Complex_beta_ckpt.pt 483380617 5a0b1cafc23c60b1aabcec1e49391986ac4fd02cc1b6b4cc41714ca9fe882e9e weight/Complex_beta_ckpt.pt
|
| 8 |
+
InpaintSeq_Fold_ckpt.pt 483626987 51849c9fe64c16a38fe41c75db76abe044e4d3493926f6cfd29a5bde0331b7cc weight/InpaintSeq_Fold_ckpt.pt
|
| 9 |
+
InpaintSeq_ckpt.pt 483619243 3b71b2b954e87d46b75a88ba64e0420fbf27f592604b10b6c3561b8c8ab70ab6 weight/InpaintSeq_ckpt.pt
|
| 10 |
+
RF_structure_prediction_weights.pt 241684523 6414e9e60b0b01011e5a182def40b4e6de4e137554c887b2916d43566733ed95 weight/RF_structure_prediction_weights.pt
|
README.md
ADDED
|
@@ -0,0 +1,172 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: bsd-3-clause
|
| 3 |
+
language:
|
| 4 |
+
- en
|
| 5 |
+
tags:
|
| 6 |
+
- OneScience
|
| 7 |
+
- protein backbone generation
|
| 8 |
+
- protein design
|
| 9 |
+
frameworks:
|
| 10 |
+
- PyTorch
|
| 11 |
+
---
|
| 12 |
+
<p align="center">
|
| 13 |
+
<strong>
|
| 14 |
+
<span style="font-size: 30px;">RFdiffusion</span>
|
| 15 |
+
</strong>
|
| 16 |
+
</p>
|
| 17 |
+
|
| 18 |
+
# Model Overview
|
| 19 |
+
|
| 20 |
+
RFdiffusion is a diffusion-based method for protein backbone generation and design. It can be used for unconditional backbone generation, motif scaffolding, PPI/binder design, and symmetric oligomer sampling.
|
| 21 |
+
|
| 22 |
+
# Model Description
|
| 23 |
+
|
| 24 |
+
RFdiffusion is a generative protein design model based on the RoseTTAFold three-track network and an SE(3)-equivariant denoising diffusion process. It can progressively generate protein backbones from random structures while satisfying specified topology or functional constraints.
|
| 25 |
+
|
| 26 |
+
The current Hugging Face package is designed for download-and-use workflows, local quick validation, and OneCode automated runtime scenarios. Code, configurations, example inputs, and weights are all included in the current directory.
|
| 27 |
+
|
| 28 |
+
# Use Cases
|
| 29 |
+
|
| 30 |
+
| Use case | Description |
|
| 31 |
+
| :---: | :--- |
|
| 32 |
+
| Unconditional backbone generation | Takes contig constraints as input and outputs designed backbone PDB files. |
|
| 33 |
+
| Motif scaffolding | Takes a PDB file containing the motif and contig constraints as input, and outputs scaffold design results. |
|
| 34 |
+
| PPI/binder design | Takes the target structure, hotspot, and contig parameters as input, and outputs candidate binder designs. |
|
| 35 |
+
| Symmetric oligomer sampling | Uses symmetry configuration to generate symmetric structure designs. |
|
| 36 |
+
| Hugging Face full-package validation | Uses the package layout `config/ modules/ scripts/ examples/ weight/` directly for preflight checks and inference. |
|
| 37 |
+
|
| 38 |
+
# Usage
|
| 39 |
+
|
| 40 |
+
## 1. Using OneCode
|
| 41 |
+
|
| 42 |
+
You can try intelligent one-click AI4S programming through the OneCode online environment:
|
| 43 |
+
|
| 44 |
+
[Try intelligent one-click AI4S programming](https://web-2069360198568017922-iaaj.ksai.scnet.cn:58043/home)
|
| 45 |
+
|
| 46 |
+
## 2. Manual Installation and Usage
|
| 47 |
+
|
| 48 |
+
**Hardware Requirements**
|
| 49 |
+
|
| 50 |
+
- Running on a GPU or DCU is recommended.
|
| 51 |
+
- CPU can be used for connectivity checks, but it is relatively slow.
|
| 52 |
+
- DCU users need to install DTK in advance. DTK 25.04.2 or later is recommended, or the OneScience-recommended version that matches the current cluster.
|
| 53 |
+
|
| 54 |
+
**Software Requirements**
|
| 55 |
+
|
| 56 |
+
For more information about adaptation details, contact liubiao@sugon.com.
|
| 57 |
+
|
| 58 |
+
**Environment Checks**
|
| 59 |
+
|
| 60 |
+
- NVIDIA GPU:
|
| 61 |
+
|
| 62 |
+
```bash
|
| 63 |
+
nvidia-smi
|
| 64 |
+
```
|
| 65 |
+
|
| 66 |
+
- Hygon DCU:
|
| 67 |
+
|
| 68 |
+
```bash
|
| 69 |
+
hy-smi
|
| 70 |
+
```
|
| 71 |
+
|
| 72 |
+
## Quick Start
|
| 73 |
+
|
| 74 |
+
### 1. Install the Runtime Environment
|
| 75 |
+
|
| 76 |
+
```bash
|
| 77 |
+
conda create -n onescience311 python=3.11 -y
|
| 78 |
+
conda activate onescience311
|
| 79 |
+
pip install onescience[bio] -i http://mirrors.onescience.ai:3141/pypi/simple/ --trusted-host mirrors.onescience.ai
|
| 80 |
+
```
|
| 81 |
+
|
| 82 |
+
If the following code cannot find required libraries at runtime, activate CUDA as shown below.
|
| 83 |
+
|
| 84 |
+
```bash
|
| 85 |
+
source ${ROCM_PATH}/cuda/env.sh
|
| 86 |
+
export LD_LIBRARY_PATH="$CONDA_PREFIX/lib:$LD_LIBRARY_PATH"
|
| 87 |
+
export LD_LIBRARY_PATH="$CONDA_PREFIX/lib/python3.11/site-packages/fastpt/torch/lib:$LD_LIBRARY_PATH"
|
| 88 |
+
```
|
| 89 |
+
|
| 90 |
+
### 2. Download the Model Package and Install the Environment
|
| 91 |
+
|
| 92 |
+
```bash
|
| 93 |
+
hf download --model OneScience-Sugon/RFdiffusion --local-dir ./RFdiffusion
|
| 94 |
+
```
|
| 95 |
+
|
| 96 |
+
### Training Weights
|
| 97 |
+
|
| 98 |
+
Training weights are already included in the `weights` folder and can be used directly after downloading the model package.
|
| 99 |
+
|
| 100 |
+
### 3. Run Preflight Checks
|
| 101 |
+
|
| 102 |
+
Check files and real weights:
|
| 103 |
+
|
| 104 |
+
```bash
|
| 105 |
+
python scripts/preflight.py --strict-weights
|
| 106 |
+
```
|
| 107 |
+
|
| 108 |
+
Check local imports after installing dependencies:
|
| 109 |
+
|
| 110 |
+
```bash
|
| 111 |
+
python scripts/preflight.py --strict-weights --strict-imports
|
| 112 |
+
```
|
| 113 |
+
|
| 114 |
+
Validate only the entry point and Hydra configuration without running sampling:
|
| 115 |
+
|
| 116 |
+
```bash
|
| 117 |
+
RF_DIFFUSION_SMOKE_TEST=1 python scripts/run_inference.py
|
| 118 |
+
```
|
| 119 |
+
|
| 120 |
+
### 4. Run Inference
|
| 121 |
+
|
| 122 |
+
If execution fails because a `.cache` file is missing, you can create it manually.
|
| 123 |
+
|
| 124 |
+
Example of unconditional backbone sampling:
|
| 125 |
+
|
| 126 |
+
```bash
|
| 127 |
+
python scripts/run_inference.py \
|
| 128 |
+
'contigmap.contigs=[80-80]' \
|
| 129 |
+
diffuser.T=15 \
|
| 130 |
+
inference.final_step=15 \
|
| 131 |
+
inference.num_designs=1 \
|
| 132 |
+
inference.write_trajectory=False \
|
| 133 |
+
inference.output_prefix=outputs/smoke/design
|
| 134 |
+
```
|
| 135 |
+
|
| 136 |
+
Example of motif scaffolding:
|
| 137 |
+
|
| 138 |
+
```bash
|
| 139 |
+
python scripts/run_inference.py \
|
| 140 |
+
inference.input_pdb=examples/input_pdbs/1YCR.pdb \
|
| 141 |
+
'contigmap.contigs=[10-40/A163-181/10-40]' \
|
| 142 |
+
inference.output_prefix=outputs/motif/design
|
| 143 |
+
```
|
| 144 |
+
|
| 145 |
+
Example of symmetric sampling:
|
| 146 |
+
|
| 147 |
+
```bash
|
| 148 |
+
python scripts/run_inference.py --config-name symmetry \
|
| 149 |
+
diffuser.T=15 \
|
| 150 |
+
inference.final_step=15 \
|
| 151 |
+
inference.output_prefix=outputs/symmetry/c2
|
| 152 |
+
```
|
| 153 |
+
|
| 154 |
+
### 5. Common Environment Variables
|
| 155 |
+
|
| 156 |
+
```bash
|
| 157 |
+
export RF_DIFFUSION_MODEL_DIR=weight
|
| 158 |
+
export RF_DIFFUSION_INPUT_PDB=examples/input_pdbs/1qys.pdb
|
| 159 |
+
export RF_DIFFUSION_OUTPUT_PREFIX=outputs/design
|
| 160 |
+
export RF_DIFFUSION_SCHEDULE_DIR=.cache/schedules
|
| 161 |
+
```
|
| 162 |
+
|
| 163 |
+
# Official OneScience Information
|
| 164 |
+
|
| 165 |
+
| Platform | OneScience main repository | Skills repository |
|
| 166 |
+
| --- | --- | --- |
|
| 167 |
+
| Gitee | https://gitee.com/onescience-ai/onescience | https://gitee.com/onescience-ai/oneskills |
|
| 168 |
+
| GitHub | https://github.com/onescience-ai/OneScience | https://github.com/onescience-ai/oneskills |
|
| 169 |
+
|
| 170 |
+
# Citation and License
|
| 171 |
+
|
| 172 |
+
RFdiffusion is released under the BSD open-source license (see the [LICENSE](https://github.com/RosettaCommons/RFdiffusion/blob/main/LICENSE) file) and can be used free of charge for both non-profit and commercial purposes.
|
config/inference/base.yaml
ADDED
|
@@ -0,0 +1,140 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Base inference Configuration.
|
| 2 |
+
|
| 3 |
+
inference:
|
| 4 |
+
input_pdb: "${oc.env:RF_DIFFUSION_INPUT_PDB,examples/input_pdbs/1qys.pdb}"
|
| 5 |
+
num_designs: 1
|
| 6 |
+
design_startnum: 0
|
| 7 |
+
ckpt_override_path: null
|
| 8 |
+
symmetry: null
|
| 9 |
+
recenter: True
|
| 10 |
+
radius: 10.0
|
| 11 |
+
model_only_neighbors: False
|
| 12 |
+
output_prefix: "${oc.env:RF_DIFFUSION_OUTPUT_PREFIX,outputs/design}"
|
| 13 |
+
write_trajectory: False
|
| 14 |
+
scaffold_guided: False
|
| 15 |
+
model_runner: SelfConditioning
|
| 16 |
+
cautious: True
|
| 17 |
+
align_motif: True
|
| 18 |
+
symmetric_self_cond: True
|
| 19 |
+
final_step: 1
|
| 20 |
+
deterministic: False
|
| 21 |
+
trb_save_ckpt_path: null
|
| 22 |
+
schedule_directory_path: "${oc.env:RF_DIFFUSION_SCHEDULE_DIR,.cache/schedules}"
|
| 23 |
+
model_directory_path: "${oc.env:RF_DIFFUSION_MODEL_DIR,weight}"
|
| 24 |
+
|
| 25 |
+
contigmap:
|
| 26 |
+
contigs: ["100-100"]
|
| 27 |
+
inpaint_seq: null
|
| 28 |
+
inpaint_str: null
|
| 29 |
+
inpaint_str_helix: null
|
| 30 |
+
inpaint_str_strand: null
|
| 31 |
+
inpaint_str_loop: null
|
| 32 |
+
provide_seq: null
|
| 33 |
+
length: null
|
| 34 |
+
|
| 35 |
+
model:
|
| 36 |
+
n_extra_block: 4
|
| 37 |
+
n_main_block: 32
|
| 38 |
+
n_ref_block: 4
|
| 39 |
+
d_msa: 256
|
| 40 |
+
d_msa_full: 64
|
| 41 |
+
d_pair: 128
|
| 42 |
+
d_templ: 64
|
| 43 |
+
n_head_msa: 8
|
| 44 |
+
n_head_pair: 4
|
| 45 |
+
n_head_templ: 4
|
| 46 |
+
d_hidden: 32
|
| 47 |
+
d_hidden_templ: 32
|
| 48 |
+
p_drop: 0.15
|
| 49 |
+
SE3_param_full:
|
| 50 |
+
num_layers: 1
|
| 51 |
+
num_channels: 32
|
| 52 |
+
num_degrees: 2
|
| 53 |
+
n_heads: 4
|
| 54 |
+
div: 4
|
| 55 |
+
l0_in_features: 8
|
| 56 |
+
l0_out_features: 8
|
| 57 |
+
l1_in_features: 3
|
| 58 |
+
l1_out_features: 2
|
| 59 |
+
num_edge_features: 32
|
| 60 |
+
SE3_param_topk:
|
| 61 |
+
num_layers: 1
|
| 62 |
+
num_channels: 32
|
| 63 |
+
num_degrees: 2
|
| 64 |
+
n_heads: 4
|
| 65 |
+
div: 4
|
| 66 |
+
l0_in_features: 64
|
| 67 |
+
l0_out_features: 64
|
| 68 |
+
l1_in_features: 3
|
| 69 |
+
l1_out_features: 2
|
| 70 |
+
num_edge_features: 64
|
| 71 |
+
freeze_track_motif: False
|
| 72 |
+
use_motif_timestep: False
|
| 73 |
+
|
| 74 |
+
diffuser:
|
| 75 |
+
T: 50
|
| 76 |
+
b_0: 1e-2
|
| 77 |
+
b_T: 7e-2
|
| 78 |
+
schedule_type: linear
|
| 79 |
+
so3_type: igso3
|
| 80 |
+
crd_scale: 0.25
|
| 81 |
+
partial_T: null
|
| 82 |
+
so3_schedule_type: linear
|
| 83 |
+
min_b: 1.5
|
| 84 |
+
max_b: 2.5
|
| 85 |
+
min_sigma: 0.02
|
| 86 |
+
max_sigma: 1.5
|
| 87 |
+
|
| 88 |
+
denoiser:
|
| 89 |
+
noise_scale_ca: 1
|
| 90 |
+
final_noise_scale_ca: 1
|
| 91 |
+
ca_noise_schedule_type: constant
|
| 92 |
+
noise_scale_frame: 1
|
| 93 |
+
final_noise_scale_frame: 1
|
| 94 |
+
frame_noise_schedule_type: constant
|
| 95 |
+
|
| 96 |
+
ppi:
|
| 97 |
+
hotspot_res: null
|
| 98 |
+
|
| 99 |
+
potentials:
|
| 100 |
+
guiding_potentials: null
|
| 101 |
+
guide_scale: 10
|
| 102 |
+
guide_decay: constant
|
| 103 |
+
olig_inter_all : null
|
| 104 |
+
olig_intra_all : null
|
| 105 |
+
olig_custom_contact : null
|
| 106 |
+
substrate: null
|
| 107 |
+
|
| 108 |
+
contig_settings:
|
| 109 |
+
ref_idx: null
|
| 110 |
+
hal_idx: null
|
| 111 |
+
idx_rf: null
|
| 112 |
+
inpaint_seq_tensor: null
|
| 113 |
+
|
| 114 |
+
preprocess:
|
| 115 |
+
sidechain_input: False
|
| 116 |
+
motif_sidechain_input: True
|
| 117 |
+
d_t1d: 22
|
| 118 |
+
d_t2d: 44
|
| 119 |
+
prob_self_cond: 0.0
|
| 120 |
+
str_self_cond: False
|
| 121 |
+
predict_previous: False
|
| 122 |
+
|
| 123 |
+
logging:
|
| 124 |
+
inputs: False
|
| 125 |
+
|
| 126 |
+
scaffoldguided:
|
| 127 |
+
scaffoldguided: False
|
| 128 |
+
target_pdb: False
|
| 129 |
+
target_path: null
|
| 130 |
+
scaffold_list: null
|
| 131 |
+
scaffold_dir: null
|
| 132 |
+
sampled_insertion: 0
|
| 133 |
+
sampled_N: 0
|
| 134 |
+
sampled_C: 0
|
| 135 |
+
ss_mask: 0
|
| 136 |
+
systematic: False
|
| 137 |
+
target_ss: null
|
| 138 |
+
target_adj: null
|
| 139 |
+
mask_loops: True
|
| 140 |
+
contig_crop: null
|
config/inference/symmetry.yaml
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Config for sampling symmetric assemblies.
|
| 2 |
+
|
| 3 |
+
defaults:
|
| 4 |
+
- base
|
| 5 |
+
|
| 6 |
+
inference:
|
| 7 |
+
# Symmetry to sample
|
| 8 |
+
# Available symmetries:
|
| 9 |
+
# - Cyclic symmetry (C_n) # call as c5
|
| 10 |
+
# - Dihedral symmetry (D_n) # call as d5
|
| 11 |
+
# - Tetrahedral symmetry # call as tetrahedral
|
| 12 |
+
# - Octahedral symmetry # call as octahedral
|
| 13 |
+
# - Icosahedral symmetry # call as icosahedral
|
| 14 |
+
symmetry: c2
|
| 15 |
+
|
| 16 |
+
# Set to true for computational efficiency
|
| 17 |
+
# to avoid memory overhead of modeling all subunits.
|
| 18 |
+
model_only_neighbors: False
|
| 19 |
+
|
| 20 |
+
# Output directory of samples.
|
| 21 |
+
output_prefix: outputs/symmetry/c2
|
| 22 |
+
|
| 23 |
+
contigmap:
|
| 24 |
+
# Specify a single integer value to sample unconditionally.
|
| 25 |
+
# Must be evenly divisible by the number of chains in the symmetry.
|
| 26 |
+
contigs: ['100']
|
configuration.json
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"framework": "pytorch",
|
| 3 |
+
"task": "protein-design",
|
| 4 |
+
"model": {
|
| 5 |
+
"type": "RFdiffusion",
|
| 6 |
+
"weight_dir": "weight"
|
| 7 |
+
},
|
| 8 |
+
"pipeline": {
|
| 9 |
+
"type": "rfdiffusion-inference",
|
| 10 |
+
"entry_file": "scripts/run_inference.py"
|
| 11 |
+
},
|
| 12 |
+
"preflight_file": "scripts/preflight.py",
|
| 13 |
+
"allow_remote_download": false,
|
| 14 |
+
"supported_functions": [
|
| 15 |
+
"inference",
|
| 16 |
+
"unconditional_backbone_design",
|
| 17 |
+
"motif_scaffolding",
|
| 18 |
+
"binder_design",
|
| 19 |
+
"symmetric_oligomer_sampling"
|
| 20 |
+
],
|
| 21 |
+
"unsupported_functions": [
|
| 22 |
+
"standalone_training",
|
| 23 |
+
"standalone_finetuning",
|
| 24 |
+
"automatic_remote_checkpoint_download"
|
| 25 |
+
]
|
| 26 |
+
}
|
examples/input_pdbs/1YCR.pdb
ADDED
|
@@ -0,0 +1,822 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
CRYST1 43.414 100.546 54.853 90.00 90.00 90.00 C 2 2 21 8
|
| 2 |
+
ATOM 1 N GLU A 25 10.801 -12.147 -5.180 1.00 49.08 A N
|
| 3 |
+
ATOM 2 CA GLU A 25 11.124 -13.382 -4.414 1.00 50.43 A C
|
| 4 |
+
ATOM 3 C GLU A 25 11.769 -12.878 -3.130 1.00 49.75 A C
|
| 5 |
+
ATOM 4 O GLU A 25 11.175 -12.047 -2.441 1.00 49.34 A O
|
| 6 |
+
ATOM 5 CB GLU A 25 12.075 -14.259 -5.228 1.00 53.69 A C
|
| 7 |
+
ATOM 6 CG GLU A 25 11.564 -14.543 -6.638 1.00 57.47 A C
|
| 8 |
+
ATOM 7 CD GLU A 25 12.414 -15.556 -7.397 1.00 61.03 A C
|
| 9 |
+
ATOM 8 OE1 GLU A 25 12.439 -16.745 -6.995 1.00 61.91 A O
|
| 10 |
+
ATOM 9 OE2 GLU A 25 13.043 -15.163 -8.409 1.00 62.06 A O1-
|
| 11 |
+
ATOM 10 N THR A 26 12.965 -13.355 -2.800 1.00 49.81 A N
|
| 12 |
+
ATOM 11 CA THR A 26 13.656 -12.864 -1.611 1.00 48.43 A C
|
| 13 |
+
ATOM 12 C THR A 26 14.518 -11.718 -2.102 1.00 44.63 A C
|
| 14 |
+
ATOM 13 O THR A 26 15.519 -11.956 -2.778 1.00 45.84 A O
|
| 15 |
+
ATOM 14 CB THR A 26 14.598 -13.915 -1.009 1.00 49.13 A C
|
| 16 |
+
ATOM 15 CG2 THR A 26 13.804 -15.068 -0.397 1.00 49.70 A C
|
| 17 |
+
ATOM 16 OG1 THR A 26 15.478 -14.396 -2.032 1.00 49.45 A O
|
| 18 |
+
ATOM 17 N LEU A 27 14.081 -10.486 -1.869 1.00 38.63 A N
|
| 19 |
+
ATOM 18 CA LEU A 27 14.863 -9.337 -2.294 1.00 35.16 A C
|
| 20 |
+
ATOM 19 C LEU A 27 15.877 -8.978 -1.213 1.00 32.59 A C
|
| 21 |
+
ATOM 20 O LEU A 27 15.495 -8.696 -0.082 1.00 30.66 A O
|
| 22 |
+
ATOM 21 CB LEU A 27 13.960 -8.146 -2.616 1.00 32.87 A C
|
| 23 |
+
ATOM 22 CG LEU A 27 13.336 -8.100 -4.010 1.00 29.89 A C
|
| 24 |
+
ATOM 23 CD1 LEU A 27 13.942 -6.978 -4.794 1.00 29.32 A C
|
| 25 |
+
ATOM 24 CD2 LEU A 27 13.546 -9.397 -4.744 1.00 27.86 A C
|
| 26 |
+
ATOM 25 N VAL A 28 17.162 -9.063 -1.553 1.00 30.41 A N
|
| 27 |
+
ATOM 26 CA VAL A 28 18.243 -8.753 -0.623 1.00 26.97 A C
|
| 28 |
+
ATOM 27 C VAL A 28 19.056 -7.585 -1.146 1.00 29.59 A C
|
| 29 |
+
ATOM 28 O VAL A 28 18.977 -7.247 -2.329 1.00 29.91 A O
|
| 30 |
+
ATOM 29 CB VAL A 28 19.188 -9.980 -0.384 1.00 20.37 A C
|
| 31 |
+
ATOM 30 CG1 VAL A 28 18.428 -11.110 0.261 1.00 17.22 A C
|
| 32 |
+
ATOM 31 CG2 VAL A 28 19.819 -10.441 -1.688 1.00 19.17 A C
|
| 33 |
+
ATOM 32 N ARG A 29 19.785 -6.941 -0.241 1.00 33.20 A N
|
| 34 |
+
ATOM 33 CA ARG A 29 20.650 -5.812 -0.577 1.00 37.19 A C
|
| 35 |
+
ATOM 34 C ARG A 29 22.031 -6.257 -0.132 1.00 34.37 A C
|
| 36 |
+
ATOM 35 O ARG A 29 22.238 -6.530 1.050 1.00 35.05 A O
|
| 37 |
+
ATOM 36 CB ARG A 29 20.239 -4.577 0.213 1.00 46.45 A C
|
| 38 |
+
ATOM 37 CG ARG A 29 20.885 -3.295 -0.264 1.00 56.87 A C
|
| 39 |
+
ATOM 38 CD ARG A 29 20.354 -2.071 0.489 1.00 62.95 A C
|
| 40 |
+
ATOM 39 NE ARG A 29 18.892 -1.904 0.445 1.00 67.51 A N
|
| 41 |
+
ATOM 40 CZ ARG A 29 18.168 -1.674 -0.657 1.00 69.80 A C
|
| 42 |
+
ATOM 41 NH1 ARG A 29 18.743 -1.578 -1.853 1.00 70.00 A N1+
|
| 43 |
+
ATOM 42 NH2 ARG A 29 16.853 -1.509 -0.560 1.00 70.00 A N
|
| 44 |
+
ATOM 43 N PRO A 30 22.976 -6.407 -1.075 1.00 32.61 A N
|
| 45 |
+
ATOM 44 CA PRO A 30 24.328 -6.842 -0.726 1.00 31.66 A C
|
| 46 |
+
ATOM 45 C PRO A 30 25.179 -5.801 0.008 1.00 31.16 A C
|
| 47 |
+
ATOM 46 O PRO A 30 25.136 -4.598 -0.297 1.00 33.84 A O
|
| 48 |
+
ATOM 47 CB PRO A 30 24.915 -7.215 -2.086 1.00 31.15 A C
|
| 49 |
+
ATOM 48 CG PRO A 30 24.291 -6.227 -2.989 1.00 31.13 A C
|
| 50 |
+
ATOM 49 CD PRO A 30 22.853 -6.222 -2.532 1.00 32.34 A C
|
| 51 |
+
ATOM 50 N LYS A 31 25.928 -6.279 0.997 1.00 26.84 A N
|
| 52 |
+
ATOM 51 CA LYS A 31 26.812 -5.440 1.782 1.00 25.65 A C
|
| 53 |
+
ATOM 52 C LYS A 31 27.962 -4.950 0.897 1.00 25.77 A C
|
| 54 |
+
ATOM 53 O LYS A 31 28.271 -5.569 -0.123 1.00 24.89 A O
|
| 55 |
+
ATOM 54 CB LYS A 31 27.298 -6.203 3.022 1.00 27.30 A C
|
| 56 |
+
ATOM 55 CG LYS A 31 26.247 -6.219 4.140 1.00 28.71 A C
|
| 57 |
+
ATOM 56 CD LYS A 31 26.650 -7.040 5.370 1.00 31.15 A C
|
| 58 |
+
ATOM 57 CE LYS A 31 25.543 -6.988 6.439 1.00 31.90 A C
|
| 59 |
+
ATOM 58 NZ LYS A 31 25.561 -8.096 7.463 1.00 32.60 A N1+
|
| 60 |
+
ATOM 59 N PRO A 32 28.632 -3.852 1.294 1.00 27.32 A N
|
| 61 |
+
ATOM 60 CA PRO A 32 29.752 -3.210 0.585 1.00 28.83 A C
|
| 62 |
+
ATOM 61 C PRO A 32 30.758 -4.109 -0.155 1.00 28.49 A C
|
| 63 |
+
ATOM 62 O PRO A 32 30.962 -3.960 -1.368 1.00 26.97 A O
|
| 64 |
+
ATOM 63 CB PRO A 32 30.415 -2.397 1.693 1.00 30.47 A C
|
| 65 |
+
ATOM 64 CG PRO A 32 29.249 -1.972 2.513 1.00 29.36 A C
|
| 66 |
+
ATOM 65 CD PRO A 32 28.486 -3.257 2.637 1.00 27.44 A C
|
| 67 |
+
ATOM 66 N LEU A 33 31.405 -5.018 0.569 1.00 28.99 A N
|
| 68 |
+
ATOM 67 CA LEU A 33 32.370 -5.908 -0.059 1.00 30.75 A C
|
| 69 |
+
ATOM 68 C LEU A 33 31.709 -6.751 -1.160 1.00 29.16 A C
|
| 70 |
+
ATOM 69 O LEU A 33 32.216 -6.834 -2.292 1.00 28.31 A O
|
| 71 |
+
ATOM 70 CB LEU A 33 33.014 -6.811 1.000 1.00 34.41 A C
|
| 72 |
+
ATOM 71 CG LEU A 33 34.513 -6.663 1.322 1.00 36.11 A C
|
| 73 |
+
ATOM 72 CD1 LEU A 33 34.816 -5.269 1.837 1.00 35.52 A C
|
| 74 |
+
ATOM 73 CD2 LEU A 33 34.923 -7.714 2.356 1.00 36.44 A C
|
| 75 |
+
ATOM 74 N LEU A 34 30.544 -7.316 -0.838 1.00 26.60 A N
|
| 76 |
+
ATOM 75 CA LEU A 34 29.801 -8.160 -1.765 1.00 24.24 A C
|
| 77 |
+
ATOM 76 C LEU A 34 29.264 -7.399 -2.961 1.00 23.47 A C
|
| 78 |
+
ATOM 77 O LEU A 34 29.189 -7.933 -4.068 1.00 24.63 A O
|
| 79 |
+
ATOM 78 CB LEU A 34 28.655 -8.872 -1.044 1.00 23.85 A C
|
| 80 |
+
ATOM 79 CG LEU A 34 27.797 -9.797 -1.918 1.00 22.79 A C
|
| 81 |
+
ATOM 80 CD1 LEU A 34 28.677 -10.890 -2.495 1.00 20.28 A C
|
| 82 |
+
ATOM 81 CD2 LEU A 34 26.620 -10.369 -1.110 1.00 22.38 A C
|
| 83 |
+
ATOM 82 N LEU A 35 28.892 -6.149 -2.747 1.00 22.96 A N
|
| 84 |
+
ATOM 83 CA LEU A 35 28.366 -5.336 -3.833 1.00 23.98 A C
|
| 85 |
+
ATOM 84 C LEU A 35 29.470 -5.044 -4.855 1.00 26.54 A C
|
| 86 |
+
ATOM 85 O LEU A 35 29.231 -5.039 -6.069 1.00 27.25 A O
|
| 87 |
+
ATOM 86 CB LEU A 35 27.784 -4.054 -3.268 1.00 22.75 A C
|
| 88 |
+
ATOM 87 CG LEU A 35 26.684 -3.377 -4.074 1.00 23.66 A C
|
| 89 |
+
ATOM 88 CD1 LEU A 35 27.195 -2.000 -4.438 1.00 26.56 A C
|
| 90 |
+
ATOM 89 CD2 LEU A 35 26.257 -4.189 -5.304 1.00 21.58 A C
|
| 91 |
+
ATOM 90 N LYS A 36 30.678 -4.830 -4.340 1.00 28.69 A N
|
| 92 |
+
ATOM 91 CA LYS A 36 31.883 -4.570 -5.132 1.00 31.72 A C
|
| 93 |
+
ATOM 92 C LYS A 36 32.209 -5.825 -5.981 1.00 31.71 A C
|
| 94 |
+
ATOM 93 O LYS A 36 32.513 -5.730 -7.173 1.00 33.69 A O
|
| 95 |
+
ATOM 94 CB LYS A 36 33.029 -4.269 -4.166 1.00 35.41 A C
|
| 96 |
+
ATOM 95 CG LYS A 36 34.359 -4.005 -4.810 1.00 39.49 A C
|
| 97 |
+
ATOM 96 CD LYS A 36 35.454 -4.022 -3.755 1.00 43.89 A C
|
| 98 |
+
ATOM 97 CE LYS A 36 35.130 -3.090 -2.589 1.00 46.95 A C
|
| 99 |
+
ATOM 98 NZ LYS A 36 36.283 -2.868 -1.655 1.00 47.38 A N1+
|
| 100 |
+
ATOM 99 N LEU A 37 32.162 -6.990 -5.339 1.00 27.34 A N
|
| 101 |
+
ATOM 100 CA LEU A 37 32.387 -8.279 -5.983 1.00 24.68 A C
|
| 102 |
+
ATOM 101 C LEU A 37 31.378 -8.413 -7.125 1.00 25.88 A C
|
| 103 |
+
ATOM 102 O LEU A 37 31.711 -8.866 -8.216 1.00 23.86 A O
|
| 104 |
+
ATOM 103 CB LEU A 37 32.113 -9.371 -4.943 1.00 25.16 A C
|
| 105 |
+
ATOM 104 CG LEU A 37 32.290 -10.884 -5.107 1.00 26.21 A C
|
| 106 |
+
ATOM 105 CD1 LEU A 37 31.802 -11.369 -6.456 1.00 27.27 A C
|
| 107 |
+
ATOM 106 CD2 LEU A 37 33.737 -11.232 -4.901 1.00 26.79 A C
|
| 108 |
+
ATOM 107 N LEU A 38 30.130 -8.030 -6.846 1.00 30.28 A N
|
| 109 |
+
ATOM 108 CA LEU A 38 29.030 -8.111 -7.813 1.00 29.47 A C
|
| 110 |
+
ATOM 109 C LEU A 38 29.248 -7.215 -9.012 1.00 31.49 A C
|
| 111 |
+
ATOM 110 O LEU A 38 29.178 -7.680 -10.151 1.00 31.19 A O
|
| 112 |
+
ATOM 111 CB LEU A 38 27.696 -7.777 -7.134 1.00 24.98 A C
|
| 113 |
+
ATOM 112 CG LEU A 38 26.681 -8.896 -6.865 1.00 20.36 A C
|
| 114 |
+
ATOM 113 CD1 LEU A 38 27.327 -10.238 -6.748 1.00 17.92 A C
|
| 115 |
+
ATOM 114 CD2 LEU A 38 25.941 -8.569 -5.596 1.00 20.85 A C
|
| 116 |
+
ATOM 115 N LYS A 39 29.521 -5.934 -8.756 1.00 33.42 A N
|
| 117 |
+
ATOM 116 CA LYS A 39 29.764 -4.979 -9.833 1.00 34.82 A C
|
| 118 |
+
ATOM 117 C LYS A 39 30.869 -5.531 -10.710 1.00 35.75 A C
|
| 119 |
+
ATOM 118 O LYS A 39 30.754 -5.535 -11.939 1.00 37.32 A O
|
| 120 |
+
ATOM 119 CB LYS A 39 30.171 -3.603 -9.293 1.00 38.06 A C
|
| 121 |
+
ATOM 120 CG LYS A 39 29.133 -2.935 -8.392 1.00 41.92 A C
|
| 122 |
+
ATOM 121 CD LYS A 39 27.729 -3.178 -8.919 1.00 44.44 A C
|
| 123 |
+
ATOM 122 CE LYS A 39 26.630 -2.584 -8.055 1.00 46.35 A C
|
| 124 |
+
ATOM 123 NZ LYS A 39 26.391 -1.133 -8.324 1.00 46.80 A N1+
|
| 125 |
+
ATOM 124 N SER A 40 31.889 -6.096 -10.069 1.00 36.07 A N
|
| 126 |
+
ATOM 125 CA SER A 40 33.022 -6.663 -10.783 1.00 36.72 A C
|
| 127 |
+
ATOM 126 C SER A 40 32.586 -7.569 -11.941 1.00 37.40 A C
|
| 128 |
+
ATOM 127 O SER A 40 33.299 -7.675 -12.944 1.00 39.94 A O
|
| 129 |
+
ATOM 128 CB SER A 40 33.939 -7.422 -9.816 1.00 37.52 A C
|
| 130 |
+
ATOM 129 OG SER A 40 33.633 -8.802 -9.782 1.00 39.51 A O
|
| 131 |
+
ATOM 130 N VAL A 41 31.416 -8.202 -11.824 1.00 34.16 A N
|
| 132 |
+
ATOM 131 CA VAL A 41 30.957 -9.077 -12.896 1.00 30.18 A C
|
| 133 |
+
ATOM 132 C VAL A 41 29.807 -8.535 -13.711 1.00 29.68 A C
|
| 134 |
+
ATOM 133 O VAL A 41 29.119 -9.299 -14.378 1.00 32.08 A O
|
| 135 |
+
ATOM 134 CB VAL A 41 30.651 -10.512 -12.411 1.00 26.76 A C
|
| 136 |
+
ATOM 135 CG1 VAL A 41 31.934 -11.220 -12.068 1.00 26.46 A C
|
| 137 |
+
ATOM 136 CG2 VAL A 41 29.764 -10.488 -11.204 1.00 25.44 A C
|
| 138 |
+
ATOM 137 N GLY A 42 29.618 -7.220 -13.684 1.00 27.40 A N
|
| 139 |
+
ATOM 138 CA GLY A 42 28.554 -6.605 -14.461 1.00 26.98 A C
|
| 140 |
+
ATOM 139 C GLY A 42 27.242 -6.280 -13.771 1.00 29.87 A C
|
| 141 |
+
ATOM 140 O GLY A 42 26.435 -5.515 -14.299 1.00 31.25 A O
|
| 142 |
+
ATOM 141 N ALA A 43 27.006 -6.857 -12.599 1.00 31.86 A N
|
| 143 |
+
ATOM 142 CA ALA A 43 25.767 -6.605 -11.863 1.00 33.11 A C
|
| 144 |
+
ATOM 143 C ALA A 43 25.743 -5.173 -11.340 1.00 36.97 A C
|
| 145 |
+
ATOM 144 O ALA A 43 26.183 -4.912 -10.224 1.00 37.99 A O
|
| 146 |
+
ATOM 145 CB ALA A 43 25.629 -7.590 -10.709 1.00 31.88 A C
|
| 147 |
+
ATOM 146 N GLN A 44 25.196 -4.258 -12.134 1.00 38.43 A N
|
| 148 |
+
ATOM 147 CA GLN A 44 25.131 -2.841 -11.765 1.00 40.64 A C
|
| 149 |
+
ATOM 148 C GLN A 44 23.950 -2.382 -10.881 1.00 38.73 A C
|
| 150 |
+
ATOM 149 O GLN A 44 23.270 -1.417 -11.218 1.00 39.71 A O
|
| 151 |
+
ATOM 150 CB GLN A 44 25.100 -1.997 -13.038 1.00 44.75 A C
|
| 152 |
+
ATOM 151 CG GLN A 44 26.061 -2.371 -14.123 1.00 47.84 A C
|
| 153 |
+
ATOM 152 CD GLN A 44 25.898 -1.446 -15.308 1.00 52.18 A C
|
| 154 |
+
ATOM 153 NE2 GLN A 44 26.945 -0.680 -15.616 1.00 54.69 A N
|
| 155 |
+
ATOM 154 OE1 GLN A 44 24.827 -1.385 -15.918 1.00 53.63 A O
|
| 156 |
+
ATOM 155 N LYS A 45 23.712 -3.000 -9.735 1.00 36.33 A N
|
| 157 |
+
ATOM 156 CA LYS A 45 22.587 -2.545 -8.939 1.00 35.35 A C
|
| 158 |
+
ATOM 157 C LYS A 45 22.679 -2.802 -7.445 1.00 38.33 A C
|
| 159 |
+
ATOM 158 O LYS A 45 23.568 -3.507 -6.978 1.00 40.86 A O
|
| 160 |
+
ATOM 159 CB LYS A 45 21.277 -3.065 -9.526 1.00 34.15 A C
|
| 161 |
+
ATOM 160 CG LYS A 45 21.215 -4.557 -9.704 1.00 33.47 A C
|
| 162 |
+
ATOM 161 CD LYS A 45 19.840 -4.968 -10.170 1.00 33.07 A C
|
| 163 |
+
ATOM 162 CE LYS A 45 19.581 -6.418 -9.848 1.00 33.29 A C
|
| 164 |
+
ATOM 163 NZ LYS A 45 18.155 -6.740 -10.064 1.00 33.65 A N1+
|
| 165 |
+
ATOM 164 N ASP A 46 21.731 -2.247 -6.703 1.00 39.51 A N
|
| 166 |
+
ATOM 165 CA ASP A 46 21.717 -2.334 -5.253 1.00 43.18 A C
|
| 167 |
+
ATOM 166 C ASP A 46 20.770 -3.333 -4.628 1.00 39.04 A C
|
| 168 |
+
ATOM 167 O ASP A 46 20.897 -3.623 -3.454 1.00 39.67 A O
|
| 169 |
+
ATOM 168 CB ASP A 46 21.387 -0.944 -4.706 1.00 53.36 A C
|
| 170 |
+
ATOM 169 CG ASP A 46 21.760 -0.766 -3.242 1.00 63.20 A C
|
| 171 |
+
ATOM 170 OD1 ASP A 46 22.354 -1.691 -2.634 1.00 67.17 A O
|
| 172 |
+
ATOM 171 OD2 ASP A 46 21.475 0.336 -2.709 1.00 66.33 A O1-
|
| 173 |
+
ATOM 172 N THR A 47 19.798 -3.829 -5.379 1.00 37.84 A N
|
| 174 |
+
ATOM 173 CA THR A 47 18.826 -4.769 -4.826 1.00 37.77 A C
|
| 175 |
+
ATOM 174 C THR A 47 18.751 -5.986 -5.729 1.00 33.96 A C
|
| 176 |
+
ATOM 175 O THR A 47 18.709 -5.842 -6.947 1.00 34.85 A O
|
| 177 |
+
ATOM 176 CB THR A 47 17.438 -4.093 -4.678 1.00 41.52 A C
|
| 178 |
+
ATOM 177 CG2 THR A 47 16.533 -4.918 -3.789 1.00 41.07 A C
|
| 179 |
+
ATOM 178 OG1 THR A 47 17.606 -2.806 -4.059 1.00 44.57 A O
|
| 180 |
+
ATOM 179 N TYR A 48 18.757 -7.181 -5.139 1.00 29.39 A N
|
| 181 |
+
ATOM 180 CA TYR A 48 18.751 -8.419 -5.918 1.00 25.54 A C
|
| 182 |
+
ATOM 181 C TYR A 48 17.912 -9.518 -5.303 1.00 23.68 A C
|
| 183 |
+
ATOM 182 O TYR A 48 17.644 -9.512 -4.108 1.00 24.17 A O
|
| 184 |
+
ATOM 183 CB TYR A 48 20.180 -9.004 -5.990 1.00 23.33 A C
|
| 185 |
+
ATOM 184 CG TYR A 48 21.250 -8.109 -6.562 1.00 20.34 A C
|
| 186 |
+
ATOM 185 CD1 TYR A 48 21.808 -7.089 -5.796 1.00 19.97 A C
|
| 187 |
+
ATOM 186 CD2 TYR A 48 21.694 -8.265 -7.875 1.00 19.16 A C
|
| 188 |
+
ATOM 187 CE1 TYR A 48 22.770 -6.248 -6.323 1.00 18.70 A C
|
| 189 |
+
ATOM 188 CE2 TYR A 48 22.656 -7.427 -8.400 1.00 19.06 A C
|
| 190 |
+
ATOM 189 CZ TYR A 48 23.181 -6.424 -7.614 1.00 18.73 A C
|
| 191 |
+
ATOM 190 OH TYR A 48 24.118 -5.576 -8.118 1.00 21.84 A O
|
| 192 |
+
ATOM 191 N THR A 49 17.521 -10.484 -6.117 1.00 21.72 A N
|
| 193 |
+
ATOM 192 CA THR A 49 16.819 -11.630 -5.577 1.00 22.96 A C
|
| 194 |
+
ATOM 193 C THR A 49 17.970 -12.568 -5.189 1.00 23.47 A C
|
| 195 |
+
ATOM 194 O THR A 49 19.105 -12.333 -5.602 1.00 21.98 A O
|
| 196 |
+
ATOM 195 CB THR A 49 15.898 -12.290 -6.628 1.00 24.40 A C
|
| 197 |
+
ATOM 196 CG2 THR A 49 14.738 -11.367 -6.951 1.00 24.83 A C
|
| 198 |
+
ATOM 197 OG1 THR A 49 16.624 -12.552 -7.835 1.00 25.85 A O
|
| 199 |
+
ATOM 198 N MET A 50 17.724 -13.577 -4.359 1.00 26.64 A N
|
| 200 |
+
ATOM 199 CA MET A 50 18.794 -14.502 -3.998 1.00 28.05 A C
|
| 201 |
+
ATOM 200 C MET A 50 19.413 -15.149 -5.246 1.00 28.41 A C
|
| 202 |
+
ATOM 201 O MET A 50 20.624 -15.353 -5.303 1.00 31.46 A O
|
| 203 |
+
ATOM 202 CB MET A 50 18.290 -15.585 -3.043 1.00 29.52 A C
|
| 204 |
+
ATOM 203 CG MET A 50 18.786 -15.430 -1.616 1.00 31.67 A C
|
| 205 |
+
ATOM 204 SD MET A 50 20.561 -15.673 -1.478 1.00 33.21 A S
|
| 206 |
+
ATOM 205 CE MET A 50 20.698 -17.337 -2.115 1.00 33.22 A C
|
| 207 |
+
ATOM 206 N LYS A 51 18.595 -15.443 -6.254 1.00 25.59 A N
|
| 208 |
+
ATOM 207 CA LYS A 51 19.082 -16.054 -7.492 1.00 24.33 A C
|
| 209 |
+
ATOM 208 C LYS A 51 20.123 -15.240 -8.275 1.00 20.13 A C
|
| 210 |
+
ATOM 209 O LYS A 51 21.077 -15.814 -8.783 1.00 20.41 A O
|
| 211 |
+
ATOM 210 CB LYS A 51 17.911 -16.421 -8.405 1.00 26.76 A C
|
| 212 |
+
ATOM 211 CG LYS A 51 17.019 -17.491 -7.844 1.00 29.23 A C
|
| 213 |
+
ATOM 212 CD LYS A 51 15.826 -17.759 -8.757 1.00 32.33 A C
|
| 214 |
+
ATOM 213 CE LYS A 51 14.860 -18.758 -8.123 1.00 35.65 A C
|
| 215 |
+
ATOM 214 NZ LYS A 51 13.726 -19.097 -9.045 1.00 39.61 A N1+
|
| 216 |
+
ATOM 215 N GLU A 52 19.929 -13.927 -8.396 1.00 18.05 A N
|
| 217 |
+
ATOM 216 CA GLU A 52 20.876 -13.065 -9.111 1.00 17.63 A C
|
| 218 |
+
ATOM 217 C GLU A 52 22.214 -13.071 -8.387 1.00 18.96 A C
|
| 219 |
+
ATOM 218 O GLU A 52 23.271 -13.141 -9.011 1.00 21.98 A O
|
| 220 |
+
ATOM 219 CB GLU A 52 20.379 -11.623 -9.192 1.00 15.17 A C
|
| 221 |
+
ATOM 220 CG GLU A 52 19.197 -11.420 -10.100 1.00 14.49 A C
|
| 222 |
+
ATOM 221 CD GLU A 52 18.761 -9.957 -10.221 1.00 14.76 A C
|
| 223 |
+
ATOM 222 OE1 GLU A 52 18.401 -9.331 -9.195 1.00 14.10 A O
|
| 224 |
+
ATOM 223 OE2 GLU A 52 18.773 -9.430 -11.359 1.00 16.08 A O1-
|
| 225 |
+
ATOM 224 N VAL A 53 22.162 -12.984 -7.063 1.00 16.80 A N
|
| 226 |
+
ATOM 225 CA VAL A 53 23.367 -12.993 -6.256 1.00 15.61 A C
|
| 227 |
+
ATOM 226 C VAL A 53 24.177 -14.251 -6.596 1.00 19.06 A C
|
| 228 |
+
ATOM 227 O VAL A 53 25.280 -14.165 -7.121 1.00 19.53 A O
|
| 229 |
+
ATOM 228 CB VAL A 53 23.022 -12.909 -4.732 1.00 10.83 A C
|
| 230 |
+
ATOM 229 CG1 VAL A 53 24.221 -13.377 -3.855 1.00 9.30 A C
|
| 231 |
+
ATOM 230 CG2 VAL A 53 22.617 -11.464 -4.356 1.00 6.78 A C
|
| 232 |
+
ATOM 231 N LEU A 54 23.569 -15.414 -6.415 1.00 20.11 A N
|
| 233 |
+
ATOM 232 CA LEU A 54 24.244 -16.672 -6.687 1.00 17.78 A C
|
| 234 |
+
ATOM 233 C LEU A 54 24.751 -16.780 -8.105 1.00 18.36 A C
|
| 235 |
+
ATOM 234 O LEU A 54 25.816 -17.334 -8.323 1.00 23.49 A O
|
| 236 |
+
ATOM 235 CB LEU A 54 23.318 -17.850 -6.420 1.00 16.46 A C
|
| 237 |
+
ATOM 236 CG LEU A 54 22.858 -18.137 -4.996 1.00 14.65 A C
|
| 238 |
+
ATOM 237 CD1 LEU A 54 21.786 -19.217 -5.048 1.00 15.10 A C
|
| 239 |
+
ATOM 238 CD2 LEU A 54 24.023 -18.574 -4.154 1.00 11.49 A C
|
| 240 |
+
ATOM 239 N PHE A 55 23.983 -16.277 -9.065 1.00 15.68 A N
|
| 241 |
+
ATOM 240 CA PHE A 55 24.341 -16.344 -10.489 1.00 12.20 A C
|
| 242 |
+
ATOM 241 C PHE A 55 25.636 -15.630 -10.765 1.00 15.52 A C
|
| 243 |
+
ATOM 242 O PHE A 55 26.546 -16.223 -11.342 1.00 17.40 A O
|
| 244 |
+
ATOM 243 CB PHE A 55 23.223 -15.735 -11.350 1.00 6.10 A C
|
| 245 |
+
ATOM 244 CG PHE A 55 23.615 -15.454 -12.776 1.00 1.58 A C
|
| 246 |
+
ATOM 245 CD1 PHE A 55 23.765 -16.477 -13.688 1.00 1.07 A C
|
| 247 |
+
ATOM 246 CD2 PHE A 55 23.835 -14.171 -13.197 1.00 1.00 A C
|
| 248 |
+
ATOM 247 CE1 PHE A 55 24.135 -16.221 -14.999 1.00 1.00 A C
|
| 249 |
+
ATOM 248 CE2 PHE A 55 24.200 -13.901 -14.497 1.00 1.00 A C
|
| 250 |
+
ATOM 249 CZ PHE A 55 24.351 -14.915 -15.392 1.00 1.77 A C
|
| 251 |
+
ATOM 250 N TYR A 56 25.697 -14.353 -10.376 1.00 18.18 A N
|
| 252 |
+
ATOM 251 CA TYR A 56 26.886 -13.515 -10.570 1.00 21.08 A C
|
| 253 |
+
ATOM 252 C TYR A 56 28.058 -14.009 -9.713 1.00 25.58 A C
|
| 254 |
+
ATOM 253 O TYR A 56 29.203 -14.065 -10.171 1.00 27.28 A O
|
| 255 |
+
ATOM 254 CB TYR A 56 26.588 -12.060 -10.211 1.00 19.30 A C
|
| 256 |
+
ATOM 255 CG TYR A 56 25.665 -11.344 -11.164 1.00 18.72 A C
|
| 257 |
+
ATOM 256 CD1 TYR A 56 26.036 -11.122 -12.493 1.00 19.77 A C
|
| 258 |
+
ATOM 257 CD2 TYR A 56 24.418 -10.890 -10.739 1.00 17.69 A C
|
| 259 |
+
ATOM 258 CE1 TYR A 56 25.187 -10.464 -13.377 1.00 19.76 A C
|
| 260 |
+
ATOM 259 CE2 TYR A 56 23.566 -10.237 -11.602 1.00 18.54 A C
|
| 261 |
+
ATOM 260 CZ TYR A 56 23.948 -10.022 -12.923 1.00 21.12 A C
|
| 262 |
+
ATOM 261 OH TYR A 56 23.089 -9.339 -13.769 1.00 24.19 A O
|
| 263 |
+
ATOM 262 N LEU A 57 27.760 -14.367 -8.468 1.00 25.21 A N
|
| 264 |
+
ATOM 263 CA LEU A 57 28.758 -14.877 -7.542 1.00 21.43 A C
|
| 265 |
+
ATOM 264 C LEU A 57 29.396 -16.144 -8.132 1.00 16.56 A C
|
| 266 |
+
ATOM 265 O LEU A 57 30.583 -16.399 -7.952 1.00 16.93 A O
|
| 267 |
+
ATOM 266 CB LEU A 57 28.097 -15.141 -6.188 1.00 21.93 A C
|
| 268 |
+
ATOM 267 CG LEU A 57 28.991 -15.465 -4.993 1.00 23.25 A C
|
| 269 |
+
ATOM 268 CD1 LEU A 57 30.098 -14.433 -4.883 1.00 24.87 A C
|
| 270 |
+
ATOM 269 CD2 LEU A 57 28.163 -15.504 -3.729 1.00 22.07 A C
|
| 271 |
+
ATOM 270 N GLY A 58 28.606 -16.903 -8.877 1.00 13.03 A N
|
| 272 |
+
ATOM 271 CA GLY A 58 29.093 -18.105 -9.525 1.00 12.30 A C
|
| 273 |
+
ATOM 272 C GLY A 58 29.881 -17.738 -10.769 1.00 15.61 A C
|
| 274 |
+
ATOM 273 O GLY A 58 30.833 -18.418 -11.126 1.00 19.99 A O
|
| 275 |
+
ATOM 274 N GLN A 59 29.489 -16.659 -11.427 1.00 14.86 A N
|
| 276 |
+
ATOM 275 CA GLN A 59 30.166 -16.170 -12.622 1.00 16.02 A C
|
| 277 |
+
ATOM 276 C GLN A 59 31.564 -15.657 -12.285 1.00 17.15 A C
|
| 278 |
+
ATOM 277 O GLN A 59 32.486 -15.736 -13.091 1.00 20.04 A O
|
| 279 |
+
ATOM 278 CB GLN A 59 29.368 -15.021 -13.216 1.00 18.21 A C
|
| 280 |
+
ATOM 279 CG GLN A 59 28.089 -15.453 -13.826 1.00 21.13 A C
|
| 281 |
+
ATOM 280 CD GLN A 59 28.336 -16.409 -14.942 1.00 23.42 A C
|
| 282 |
+
ATOM 281 NE2 GLN A 59 28.071 -17.677 -14.700 1.00 24.91 A N
|
| 283 |
+
ATOM 282 OE1 GLN A 59 28.794 -16.018 -16.008 1.00 26.16 A O
|
| 284 |
+
ATOM 283 N TYR A 60 31.688 -15.061 -11.114 1.00 15.53 A N
|
| 285 |
+
ATOM 284 CA TYR A 60 32.947 -14.515 -10.639 1.00 14.57 A C
|
| 286 |
+
ATOM 285 C TYR A 60 33.933 -15.681 -10.434 1.00 16.46 A C
|
| 287 |
+
ATOM 286 O TYR A 60 35.049 -15.679 -10.946 1.00 18.96 A O
|
| 288 |
+
ATOM 287 CB TYR A 60 32.660 -13.784 -9.333 1.00 14.30 A C
|
| 289 |
+
ATOM 288 CG TYR A 60 33.858 -13.295 -8.591 1.00 15.69 A C
|
| 290 |
+
ATOM 289 CD1 TYR A 60 34.378 -12.026 -8.831 1.00 15.89 A C
|
| 291 |
+
ATOM 290 CD2 TYR A 60 34.444 -14.077 -7.591 1.00 16.18 A C
|
| 292 |
+
ATOM 291 CE1 TYR A 60 35.444 -11.550 -8.088 1.00 15.25 A C
|
| 293 |
+
ATOM 292 CE2 TYR A 60 35.505 -13.607 -6.848 1.00 15.93 A C
|
| 294 |
+
ATOM 293 CZ TYR A 60 35.996 -12.344 -7.101 1.00 16.11 A C
|
| 295 |
+
ATOM 294 OH TYR A 60 37.017 -11.854 -6.336 1.00 18.25 A O
|
| 296 |
+
ATOM 295 N ILE A 61 33.478 -16.702 -9.727 1.00 15.26 A N
|
| 297 |
+
ATOM 296 CA ILE A 61 34.274 -17.877 -9.450 1.00 13.48 A C
|
| 298 |
+
ATOM 297 C ILE A 61 34.684 -18.570 -10.724 1.00 16.31 A C
|
| 299 |
+
ATOM 298 O ILE A 61 35.862 -18.831 -10.943 1.00 18.13 A O
|
| 300 |
+
ATOM 299 CB ILE A 61 33.497 -18.858 -8.544 1.00 12.76 A C
|
| 301 |
+
ATOM 300 CG1 ILE A 61 33.109 -18.151 -7.243 1.00 11.76 A C
|
| 302 |
+
ATOM 301 CG2 ILE A 61 34.337 -20.069 -8.235 1.00 13.49 A C
|
| 303 |
+
ATOM 302 CD1 ILE A 61 32.359 -19.041 -6.269 1.00 13.72 A C
|
| 304 |
+
ATOM 303 N MET A 62 33.721 -18.882 -11.572 1.00 21.25 A N
|
| 305 |
+
ATOM 304 CA MET A 62 34.048 -19.563 -12.815 1.00 26.19 A C
|
| 306 |
+
ATOM 305 C MET A 62 35.038 -18.750 -13.618 1.00 26.57 A C
|
| 307 |
+
ATOM 306 O MET A 62 36.084 -19.245 -14.022 1.00 27.73 A O
|
| 308 |
+
ATOM 307 CB MET A 62 32.801 -19.801 -13.656 1.00 32.22 A C
|
| 309 |
+
ATOM 308 CG MET A 62 32.041 -21.059 -13.299 1.00 40.65 A C
|
| 310 |
+
ATOM 309 SD MET A 62 30.444 -21.159 -14.164 1.00 48.52 A S
|
| 311 |
+
ATOM 310 CE MET A 62 29.206 -21.058 -12.752 1.00 48.60 A C
|
| 312 |
+
ATOM 311 N THR A 63 34.719 -17.482 -13.804 1.00 26.49 A N
|
| 313 |
+
ATOM 312 CA THR A 63 35.548 -16.577 -14.580 1.00 27.67 A C
|
| 314 |
+
ATOM 313 C THR A 63 37.002 -16.428 -14.136 1.00 24.94 A C
|
| 315 |
+
ATOM 314 O THR A 63 37.910 -16.429 -14.972 1.00 26.27 A O
|
| 316 |
+
ATOM 315 CB THR A 63 34.862 -15.234 -14.662 1.00 32.91 A C
|
| 317 |
+
ATOM 316 CG2 THR A 63 35.789 -14.178 -15.199 1.00 36.18 A C
|
| 318 |
+
ATOM 317 OG1 THR A 63 33.709 -15.368 -15.505 1.00 36.10 A O
|
| 319 |
+
ATOM 318 N LYS A 64 37.218 -16.302 -12.829 1.00 20.57 A N
|
| 320 |
+
ATOM 319 CA LYS A 64 38.555 -16.168 -12.265 1.00 16.27 A C
|
| 321 |
+
ATOM 320 C LYS A 64 39.105 -17.538 -11.869 1.00 17.22 A C
|
| 322 |
+
ATOM 321 O LYS A 64 39.920 -17.652 -10.968 1.00 20.18 A O
|
| 323 |
+
ATOM 322 CB LYS A 64 38.495 -15.265 -11.039 1.00 16.24 A C
|
| 324 |
+
ATOM 323 CG LYS A 64 38.056 -13.868 -11.370 1.00 19.29 A C
|
| 325 |
+
ATOM 324 CD LYS A 64 38.081 -12.988 -10.149 1.00 22.86 A C
|
| 326 |
+
ATOM 325 CE LYS A 64 39.487 -12.826 -9.614 1.00 26.64 A C
|
| 327 |
+
ATOM 326 NZ LYS A 64 39.479 -11.939 -8.409 1.00 29.52 A N1+
|
| 328 |
+
ATOM 327 N ARG A 65 38.631 -18.575 -12.545 1.00 17.49 A N
|
| 329 |
+
ATOM 328 CA ARG A 65 38.997 -19.964 -12.295 1.00 14.49 A C
|
| 330 |
+
ATOM 329 C ARG A 65 39.410 -20.287 -10.874 1.00 14.03 A C
|
| 331 |
+
ATOM 330 O ARG A 65 40.351 -21.044 -10.665 1.00 17.94 A O
|
| 332 |
+
ATOM 331 CB ARG A 65 40.070 -20.431 -13.261 1.00 14.75 A C
|
| 333 |
+
ATOM 332 CG ARG A 65 39.838 -20.028 -14.703 1.00 17.60 A C
|
| 334 |
+
ATOM 333 CD ARG A 65 40.309 -21.126 -15.650 1.00 22.61 A C
|
| 335 |
+
ATOM 334 NE ARG A 65 41.729 -21.456 -15.510 1.00 28.14 A N
|
| 336 |
+
ATOM 335 CZ ARG A 65 42.190 -22.697 -15.392 1.00 34.90 A C
|
| 337 |
+
ATOM 336 NH1 ARG A 65 41.349 -23.723 -15.395 1.00 38.13 A N1+
|
| 338 |
+
ATOM 337 NH2 ARG A 65 43.493 -22.920 -15.289 1.00 38.07 A N
|
| 339 |
+
ATOM 338 N LEU A 66 38.652 -19.796 -9.898 1.00 10.97 A N
|
| 340 |
+
ATOM 339 CA LEU A 66 38.983 -20.045 -8.498 1.00 9.06 A C
|
| 341 |
+
ATOM 340 C LEU A 66 38.692 -21.446 -7.968 1.00 9.71 A C
|
| 342 |
+
ATOM 341 O LEU A 66 38.925 -21.724 -6.780 1.00 13.68 A O
|
| 343 |
+
ATOM 342 CB LEU A 66 38.297 -19.034 -7.589 1.00 7.18 A C
|
| 344 |
+
ATOM 343 CG LEU A 66 38.524 -17.554 -7.819 1.00 6.89 A C
|
| 345 |
+
ATOM 344 CD1 LEU A 66 37.780 -16.767 -6.748 1.00 5.18 A C
|
| 346 |
+
ATOM 345 CD2 LEU A 66 40.002 -17.272 -7.753 1.00 8.57 A C
|
| 347 |
+
ATOM 346 N TYR A 67 38.179 -22.331 -8.806 1.00 8.57 A N
|
| 348 |
+
ATOM 347 CA TYR A 67 37.861 -23.681 -8.338 1.00 12.51 A C
|
| 349 |
+
ATOM 348 C TYR A 67 39.016 -24.624 -8.635 1.00 16.43 A C
|
| 350 |
+
ATOM 349 O TYR A 67 39.865 -24.328 -9.477 1.00 19.05 A O
|
| 351 |
+
ATOM 350 CB TYR A 67 36.567 -24.197 -8.995 1.00 11.42 A C
|
| 352 |
+
ATOM 351 CG TYR A 67 36.529 -23.987 -10.501 1.00 15.91 A C
|
| 353 |
+
ATOM 352 CD1 TYR A 67 37.095 -24.922 -11.377 1.00 18.44 A C
|
| 354 |
+
ATOM 353 CD2 TYR A 67 35.967 -22.837 -11.052 1.00 17.76 A C
|
| 355 |
+
ATOM 354 CE1 TYR A 67 37.102 -24.717 -12.744 1.00 17.83 A C
|
| 356 |
+
ATOM 355 CE2 TYR A 67 35.975 -22.623 -12.422 1.00 19.57 A C
|
| 357 |
+
ATOM 356 CZ TYR A 67 36.544 -23.567 -13.259 1.00 20.81 A C
|
| 358 |
+
ATOM 357 OH TYR A 67 36.557 -23.357 -14.625 1.00 26.44 A O
|
| 359 |
+
ATOM 358 N ASP A 68 39.070 -25.746 -7.926 1.00 16.73 A N
|
| 360 |
+
ATOM 359 CA ASP A 68 40.119 -26.715 -8.163 1.00 19.56 A C
|
| 361 |
+
ATOM 360 C ASP A 68 39.798 -27.404 -9.468 1.00 24.40 A C
|
| 362 |
+
ATOM 361 O ASP A 68 38.656 -27.763 -9.727 1.00 28.26 A O
|
| 363 |
+
ATOM 362 CB ASP A 68 40.187 -27.747 -7.054 1.00 19.74 A C
|
| 364 |
+
ATOM 363 CG ASP A 68 41.407 -28.627 -7.173 1.00 19.84 A C
|
| 365 |
+
ATOM 364 OD1 ASP A 68 42.476 -28.209 -6.693 1.00 22.77 A O
|
| 366 |
+
ATOM 365 OD2 ASP A 68 41.311 -29.715 -7.763 1.00 19.07 A O1-
|
| 367 |
+
ATOM 366 N GLU A 69 40.820 -27.662 -10.259 1.00 26.47 A N
|
| 368 |
+
ATOM 367 CA GLU A 69 40.616 -28.281 -11.551 1.00 26.24 A C
|
| 369 |
+
ATOM 368 C GLU A 69 40.161 -29.725 -11.510 1.00 27.23 A C
|
| 370 |
+
ATOM 369 O GLU A 69 39.405 -30.182 -12.373 1.00 26.72 A O
|
| 371 |
+
ATOM 370 CB GLU A 69 41.887 -28.180 -12.355 1.00 27.13 A C
|
| 372 |
+
ATOM 371 CG GLU A 69 41.645 -28.315 -13.830 1.00 29.09 A C
|
| 373 |
+
ATOM 372 CD GLU A 69 41.219 -27.024 -14.466 1.00 30.90 A C
|
| 374 |
+
ATOM 373 OE1 GLU A 69 41.178 -25.975 -13.769 1.00 30.71 A O
|
| 375 |
+
ATOM 374 OE2 GLU A 69 40.941 -27.076 -15.679 1.00 33.03 A O1-
|
| 376 |
+
ATOM 375 N LYS A 70 40.657 -30.461 -10.529 1.00 30.01 A N
|
| 377 |
+
ATOM 376 CA LYS A 70 40.297 -31.861 -10.402 1.00 34.47 A C
|
| 378 |
+
ATOM 377 C LYS A 70 39.040 -32.074 -9.557 1.00 34.65 A C
|
| 379 |
+
ATOM 378 O LYS A 70 38.120 -32.769 -9.971 1.00 38.08 A O
|
| 380 |
+
ATOM 379 CB LYS A 70 41.490 -32.678 -9.875 1.00 40.08 A C
|
| 381 |
+
ATOM 380 CG LYS A 70 42.609 -32.959 -10.934 1.00 45.97 A C
|
| 382 |
+
ATOM 381 CD LYS A 70 43.362 -31.687 -11.431 1.00 50.20 A C
|
| 383 |
+
ATOM 382 CE LYS A 70 44.171 -30.995 -10.309 1.00 53.12 A C
|
| 384 |
+
ATOM 383 NZ LYS A 70 44.770 -29.677 -10.699 1.00 54.32 A N1+
|
| 385 |
+
ATOM 384 N GLN A 71 39.005 -31.485 -8.371 1.00 30.70 A N
|
| 386 |
+
ATOM 385 CA GLN A 71 37.857 -31.604 -7.484 1.00 27.30 A C
|
| 387 |
+
ATOM 386 C GLN A 71 37.161 -30.259 -7.563 1.00 21.02 A C
|
| 388 |
+
ATOM 387 O GLN A 71 37.289 -29.436 -6.666 1.00 18.60 A O
|
| 389 |
+
ATOM 388 CB GLN A 71 38.352 -31.883 -6.068 1.00 32.17 A C
|
| 390 |
+
ATOM 389 CG GLN A 71 38.983 -33.246 -5.920 1.00 37.01 A C
|
| 391 |
+
ATOM 390 CD GLN A 71 37.950 -34.357 -5.964 1.00 43.82 A C
|
| 392 |
+
ATOM 391 NE2 GLN A 71 38.040 -35.215 -6.968 1.00 44.79 A N
|
| 393 |
+
ATOM 392 OE1 GLN A 71 37.068 -34.430 -5.110 1.00 47.96 A O
|
| 394 |
+
ATOM 393 N GLN A 72 36.399 -30.056 -8.633 1.00 20.30 A N
|
| 395 |
+
ATOM 394 CA GLN A 72 35.719 -28.784 -8.896 1.00 16.73 A C
|
| 396 |
+
ATOM 395 C GLN A 72 34.859 -28.192 -7.812 1.00 15.22 A C
|
| 397 |
+
ATOM 396 O GLN A 72 34.446 -27.045 -7.919 1.00 17.63 A O
|
| 398 |
+
ATOM 397 CB GLN A 72 34.930 -28.851 -10.190 1.00 16.67 A C
|
| 399 |
+
ATOM 398 CG GLN A 72 35.723 -29.443 -11.328 1.00 19.27 A C
|
| 400 |
+
ATOM 399 CD GLN A 72 35.798 -28.544 -12.540 1.00 22.33 A C
|
| 401 |
+
ATOM 400 NE2 GLN A 72 36.844 -28.726 -13.323 1.00 25.00 A N
|
| 402 |
+
ATOM 401 OE1 GLN A 72 34.920 -27.711 -12.792 1.00 22.68 A O
|
| 403 |
+
ATOM 402 N HIS A 73 34.592 -28.958 -6.763 1.00 14.02 A N
|
| 404 |
+
ATOM 403 CA HIS A 73 33.791 -28.456 -5.652 1.00 13.96 A C
|
| 405 |
+
ATOM 404 C HIS A 73 34.620 -27.629 -4.661 1.00 15.64 A C
|
| 406 |
+
ATOM 405 O HIS A 73 34.056 -27.010 -3.742 1.00 17.41 A O
|
| 407 |
+
ATOM 406 CB HIS A 73 33.074 -29.604 -4.931 1.00 14.80 A C
|
| 408 |
+
ATOM 407 CG HIS A 73 33.991 -30.572 -4.261 1.00 16.64 A C
|
| 409 |
+
ATOM 408 CD2 HIS A 73 34.639 -31.664 -4.736 1.00 15.41 A C
|
| 410 |
+
ATOM 409 ND1 HIS A 73 34.318 -30.488 -2.924 1.00 18.85 A N
|
| 411 |
+
ATOM 410 CE1 HIS A 73 35.124 -31.485 -2.604 1.00 16.68 A C
|
| 412 |
+
ATOM 411 NE2 HIS A 73 35.335 -32.212 -3.686 1.00 15.48 A N
|
| 413 |
+
ATOM 412 N ILE A 74 35.950 -27.646 -4.831 1.00 12.87 A N
|
| 414 |
+
ATOM 413 CA ILE A 74 36.865 -26.894 -3.970 1.00 9.08 A C
|
| 415 |
+
ATOM 414 C ILE A 74 37.119 -25.524 -4.577 1.00 5.48 A C
|
| 416 |
+
ATOM 415 O ILE A 74 37.492 -25.418 -5.727 1.00 8.13 A O
|
| 417 |
+
ATOM 416 CB ILE A 74 38.243 -27.630 -3.779 1.00 12.08 A C
|
| 418 |
+
ATOM 417 CG1 ILE A 74 38.039 -29.024 -3.161 1.00 11.72 A C
|
| 419 |
+
ATOM 418 CG2 ILE A 74 39.174 -26.832 -2.801 1.00 10.17 A C
|
| 420 |
+
ATOM 419 CD1 ILE A 74 37.636 -28.963 -1.719 1.00 10.84 A C
|
| 421 |
+
ATOM 420 N VAL A 75 36.889 -24.475 -3.812 1.00 2.49 A N
|
| 422 |
+
ATOM 421 CA VAL A 75 37.130 -23.129 -4.293 1.00 4.31 A C
|
| 423 |
+
ATOM 422 C VAL A 75 38.140 -22.513 -3.333 1.00 9.01 A C
|
| 424 |
+
ATOM 423 O VAL A 75 38.054 -22.707 -2.115 1.00 10.49 A O
|
| 425 |
+
ATOM 424 CB VAL A 75 35.840 -22.317 -4.362 1.00 3.43 A C
|
| 426 |
+
ATOM 425 CG1 VAL A 75 36.107 -20.894 -4.774 1.00 1.00 A C
|
| 427 |
+
ATOM 426 CG2 VAL A 75 34.913 -22.964 -5.355 1.00 4.30 A C
|
| 428 |
+
ATOM 427 N TYR A 76 39.133 -21.847 -3.916 1.00 10.57 A N
|
| 429 |
+
ATOM 428 CA TYR A 76 40.251 -21.237 -3.201 1.00 9.82 A C
|
| 430 |
+
ATOM 429 C TYR A 76 40.091 -19.749 -3.237 1.00 13.54 A C
|
| 431 |
+
ATOM 430 O TYR A 76 40.024 -19.179 -4.315 1.00 17.59 A O
|
| 432 |
+
ATOM 431 CB TYR A 76 41.537 -21.582 -3.943 1.00 6.09 A C
|
| 433 |
+
ATOM 432 CG TYR A 76 41.844 -23.073 -4.072 1.00 2.63 A C
|
| 434 |
+
ATOM 433 CD1 TYR A 76 42.331 -23.796 -2.995 1.00 1.00 A C
|
| 435 |
+
ATOM 434 CD2 TYR A 76 41.733 -23.719 -5.294 1.00 1.49 A C
|
| 436 |
+
ATOM 435 CE1 TYR A 76 42.714 -25.101 -3.136 1.00 1.00 A C
|
| 437 |
+
ATOM 436 CE2 TYR A 76 42.105 -25.032 -5.437 1.00 1.00 A C
|
| 438 |
+
ATOM 437 CZ TYR A 76 42.600 -25.715 -4.354 1.00 1.93 A C
|
| 439 |
+
ATOM 438 OH TYR A 76 43.024 -27.023 -4.493 1.00 5.30 A O
|
| 440 |
+
ATOM 439 N CYS A 77 40.135 -19.090 -2.089 1.00 15.15 A N
|
| 441 |
+
ATOM 440 CA CYS A 77 39.927 -17.653 -2.094 1.00 17.24 A C
|
| 442 |
+
ATOM 441 C CYS A 77 40.798 -16.855 -1.166 1.00 19.10 A C
|
| 443 |
+
ATOM 442 O CYS A 77 40.527 -15.676 -0.938 1.00 15.49 A O
|
| 444 |
+
ATOM 443 CB CYS A 77 38.449 -17.351 -1.822 1.00 18.53 A C
|
| 445 |
+
ATOM 444 SG CYS A 77 37.662 -18.378 -0.536 1.00 18.57 A S
|
| 446 |
+
ATOM 445 N SER A 78 41.895 -17.469 -0.730 1.00 26.56 A N
|
| 447 |
+
ATOM 446 CA SER A 78 42.874 -16.862 0.185 1.00 33.89 A C
|
| 448 |
+
ATOM 447 C SER A 78 43.454 -15.587 -0.381 1.00 38.51 A C
|
| 449 |
+
ATOM 448 O SER A 78 43.584 -14.563 0.294 1.00 42.17 A O
|
| 450 |
+
ATOM 449 CB SER A 78 44.009 -17.847 0.444 1.00 34.90 A C
|
| 451 |
+
ATOM 450 OG SER A 78 44.316 -18.547 -0.754 1.00 37.68 A O
|
| 452 |
+
ATOM 451 N ASN A 79 43.779 -15.664 -1.653 1.00 39.64 A N
|
| 453 |
+
ATOM 452 CA ASN A 79 44.366 -14.559 -2.394 1.00 43.62 A C
|
| 454 |
+
ATOM 453 C ASN A 79 43.268 -13.694 -2.983 1.00 40.29 A C
|
| 455 |
+
ATOM 454 O ASN A 79 43.551 -12.851 -3.836 1.00 39.90 A O
|
| 456 |
+
ATOM 455 CB ASN A 79 45.102 -15.171 -3.579 1.00 49.71 A C
|
| 457 |
+
ATOM 456 CG ASN A 79 44.178 -16.081 -4.420 1.00 53.95 A C
|
| 458 |
+
ATOM 457 ND2 ASN A 79 43.749 -15.579 -5.581 1.00 54.43 A N
|
| 459 |
+
ATOM 458 OD1 ASN A 79 43.807 -17.195 -3.989 1.00 55.43 A O
|
| 460 |
+
ATOM 459 N ASP A 80 42.035 -13.869 -2.512 1.00 36.87 A N
|
| 461 |
+
ATOM 460 CA ASP A 80 40.908 -13.190 -3.130 1.00 29.52 A C
|
| 462 |
+
ATOM 461 C ASP A 80 39.959 -12.435 -2.231 1.00 27.60 A C
|
| 463 |
+
ATOM 462 O ASP A 80 39.762 -12.820 -1.095 1.00 26.69 A O
|
| 464 |
+
ATOM 463 CB ASP A 80 40.117 -14.258 -3.882 1.00 25.03 A C
|
| 465 |
+
ATOM 464 CG ASP A 80 39.365 -13.714 -5.050 1.00 22.21 A C
|
| 466 |
+
ATOM 465 OD1 ASP A 80 40.031 -13.307 -6.019 1.00 22.42 A O
|
| 467 |
+
ATOM 466 OD2 ASP A 80 38.113 -13.724 -5.006 1.00 20.56 A O1-
|
| 468 |
+
ATOM 467 N LEU A 81 39.310 -11.414 -2.804 1.00 28.92 A N
|
| 469 |
+
ATOM 468 CA LEU A 81 38.294 -10.583 -2.133 1.00 30.59 A C
|
| 470 |
+
ATOM 469 C LEU A 81 37.167 -11.478 -1.609 1.00 27.06 A C
|
| 471 |
+
ATOM 470 O LEU A 81 36.514 -11.165 -0.620 1.00 27.06 A O
|
| 472 |
+
ATOM 471 CB LEU A 81 37.703 -9.566 -3.128 1.00 37.34 A C
|
| 473 |
+
ATOM 472 CG LEU A 81 36.292 -8.950 -2.964 1.00 42.99 A C
|
| 474 |
+
ATOM 473 CD1 LEU A 81 36.205 -7.965 -1.782 1.00 44.45 A C
|
| 475 |
+
ATOM 474 CD2 LEU A 81 35.909 -8.232 -4.262 1.00 43.58 A C
|
| 476 |
+
ATOM 475 N LEU A 82 36.928 -12.576 -2.314 1.00 23.26 A N
|
| 477 |
+
ATOM 476 CA LEU A 82 35.923 -13.537 -1.940 1.00 18.87 A C
|
| 478 |
+
ATOM 477 C LEU A 82 36.295 -14.064 -0.568 1.00 20.31 A C
|
| 479 |
+
ATOM 478 O LEU A 82 35.435 -14.279 0.266 1.00 22.63 A O
|
| 480 |
+
ATOM 479 CB LEU A 82 35.927 -14.665 -2.956 1.00 18.68 A C
|
| 481 |
+
ATOM 480 CG LEU A 82 34.818 -15.699 -2.920 1.00 16.28 A C
|
| 482 |
+
ATOM 481 CD1 LEU A 82 33.477 -14.974 -2.843 1.00 17.88 A C
|
| 483 |
+
ATOM 482 CD2 LEU A 82 34.923 -16.545 -4.168 1.00 11.40 A C
|
| 484 |
+
ATOM 483 N GLY A 83 37.587 -14.250 -0.331 1.00 21.34 A N
|
| 485 |
+
ATOM 484 CA GLY A 83 38.059 -14.747 0.954 1.00 19.72 A C
|
| 486 |
+
ATOM 485 C GLY A 83 37.901 -13.695 2.031 1.00 22.61 A C
|
| 487 |
+
ATOM 486 O GLY A 83 37.665 -14.045 3.183 1.00 25.72 A O
|
| 488 |
+
ATOM 487 N ASP A 84 38.074 -12.416 1.681 1.00 24.08 A N
|
| 489 |
+
ATOM 488 CA ASP A 84 37.917 -11.315 2.639 1.00 27.82 A C
|
| 490 |
+
ATOM 489 C ASP A 84 36.469 -11.369 3.053 1.00 32.42 A C
|
| 491 |
+
ATOM 490 O ASP A 84 36.142 -11.324 4.234 1.00 36.61 A O
|
| 492 |
+
ATOM 491 CB ASP A 84 38.150 -9.953 1.978 1.00 31.47 A C
|
| 493 |
+
ATOM 492 CG ASP A 84 39.600 -9.712 1.592 1.00 35.83 A C
|
| 494 |
+
ATOM 493 OD1 ASP A 84 40.356 -10.688 1.379 1.00 38.48 A O
|
| 495 |
+
ATOM 494 OD2 ASP A 84 39.984 -8.528 1.482 1.00 36.32 A O1-
|
| 496 |
+
ATOM 495 N LEU A 85 35.621 -11.493 2.035 1.00 33.28 A N
|
| 497 |
+
ATOM 496 CA LEU A 85 34.172 -11.582 2.136 1.00 31.28 A C
|
| 498 |
+
ATOM 497 C LEU A 85 33.722 -12.742 3.012 1.00 28.59 A C
|
| 499 |
+
ATOM 498 O LEU A 85 33.153 -12.529 4.074 1.00 32.02 A O
|
| 500 |
+
ATOM 499 CB LEU A 85 33.599 -11.783 0.736 1.00 32.23 A C
|
| 501 |
+
ATOM 500 CG LEU A 85 32.135 -11.469 0.508 1.00 33.98 A C
|
| 502 |
+
ATOM 501 CD1 LEU A 85 32.041 -9.998 0.291 1.00 34.37 A C
|
| 503 |
+
ATOM 502 CD2 LEU A 85 31.618 -12.202 -0.714 1.00 34.90 A C
|
| 504 |
+
ATOM 503 N PHE A 86 33.970 -13.968 2.563 1.00 24.06 A N
|
| 505 |
+
ATOM 504 CA PHE A 86 33.565 -15.157 3.314 1.00 22.65 A C
|
| 506 |
+
ATOM 505 C PHE A 86 34.372 -15.379 4.573 1.00 20.98 A C
|
| 507 |
+
ATOM 506 O PHE A 86 33.963 -16.148 5.432 1.00 21.83 A O
|
| 508 |
+
ATOM 507 CB PHE A 86 33.643 -16.418 2.440 1.00 23.60 A C
|
| 509 |
+
ATOM 508 CG PHE A 86 32.600 -16.475 1.346 1.00 25.25 A C
|
| 510 |
+
ATOM 509 CD1 PHE A 86 31.609 -15.496 1.245 1.00 26.07 A C
|
| 511 |
+
ATOM 510 CD2 PHE A 86 32.587 -17.519 0.439 1.00 26.99 A C
|
| 512 |
+
ATOM 511 CE1 PHE A 86 30.628 -15.561 0.261 1.00 26.66 A C
|
| 513 |
+
ATOM 512 CE2 PHE A 86 31.605 -17.596 -0.552 1.00 27.82 A C
|
| 514 |
+
ATOM 513 CZ PHE A 86 30.627 -16.614 -0.638 1.00 28.09 A C
|
| 515 |
+
ATOM 514 N GLY A 87 35.528 -14.727 4.660 1.00 20.07 A N
|
| 516 |
+
ATOM 515 CA GLY A 87 36.406 -14.864 5.809 1.00 19.32 A C
|
| 517 |
+
ATOM 516 C GLY A 87 37.016 -16.250 5.963 1.00 20.03 A C
|
| 518 |
+
ATOM 517 O GLY A 87 37.169 -16.739 7.091 1.00 20.31 A O
|
| 519 |
+
ATOM 518 N VAL A 88 37.337 -16.909 4.848 1.00 19.28 A N
|
| 520 |
+
ATOM 519 CA VAL A 88 37.939 -18.256 4.889 1.00 18.20 A C
|
| 521 |
+
ATOM 520 C VAL A 88 38.922 -18.424 3.734 1.00 19.23 A C
|
| 522 |
+
ATOM 521 O VAL A 88 38.795 -17.764 2.700 1.00 22.03 A O
|
| 523 |
+
ATOM 522 CB VAL A 88 36.879 -19.420 4.797 1.00 16.54 A C
|
| 524 |
+
ATOM 523 CG1 VAL A 88 36.041 -19.490 6.046 1.00 13.24 A C
|
| 525 |
+
ATOM 524 CG2 VAL A 88 36.008 -19.285 3.534 1.00 16.74 A C
|
| 526 |
+
ATOM 525 N PRO A 89 39.936 -19.292 3.910 1.00 17.26 A N
|
| 527 |
+
ATOM 526 CA PRO A 89 40.940 -19.547 2.873 1.00 15.01 A C
|
| 528 |
+
ATOM 527 C PRO A 89 40.341 -20.305 1.690 1.00 16.26 A C
|
| 529 |
+
ATOM 528 O PRO A 89 40.595 -19.957 0.536 1.00 20.02 A O
|
| 530 |
+
ATOM 529 CB PRO A 89 41.987 -20.374 3.615 1.00 14.47 A C
|
| 531 |
+
ATOM 530 CG PRO A 89 41.193 -21.108 4.634 1.00 14.57 A C
|
| 532 |
+
ATOM 531 CD PRO A 89 40.272 -20.026 5.142 1.00 16.66 A C
|
| 533 |
+
ATOM 532 N SER A 90 39.537 -21.327 1.968 1.00 14.88 A N
|
| 534 |
+
ATOM 533 CA SER A 90 38.893 -22.107 0.918 1.00 15.30 A C
|
| 535 |
+
ATOM 534 C SER A 90 37.525 -22.660 1.386 1.00 17.77 A C
|
| 536 |
+
ATOM 535 O SER A 90 37.172 -22.532 2.562 1.00 17.21 A O
|
| 537 |
+
ATOM 536 CB SER A 90 39.825 -23.238 0.476 1.00 13.07 A C
|
| 538 |
+
ATOM 537 OG SER A 90 40.003 -24.201 1.499 1.00 10.50 A O
|
| 539 |
+
ATOM 538 N PHE A 91 36.747 -23.242 0.471 1.00 17.71 A N
|
| 540 |
+
ATOM 539 CA PHE A 91 35.443 -23.810 0.832 1.00 13.01 A C
|
| 541 |
+
ATOM 540 C PHE A 91 34.952 -24.861 -0.174 1.00 13.62 A C
|
| 542 |
+
ATOM 541 O PHE A 91 35.483 -24.952 -1.278 1.00 14.61 A O
|
| 543 |
+
ATOM 542 CB PHE A 91 34.398 -22.696 1.069 1.00 9.68 A C
|
| 544 |
+
ATOM 543 CG PHE A 91 34.044 -21.860 -0.158 1.00 5.81 A C
|
| 545 |
+
ATOM 544 CD1 PHE A 91 33.094 -22.293 -1.067 1.00 6.55 A C
|
| 546 |
+
ATOM 545 CD2 PHE A 91 34.579 -20.596 -0.338 1.00 5.77 A C
|
| 547 |
+
ATOM 546 CE1 PHE A 91 32.671 -21.477 -2.129 1.00 5.62 A C
|
| 548 |
+
ATOM 547 CE2 PHE A 91 34.164 -19.782 -1.392 1.00 5.00 A C
|
| 549 |
+
ATOM 548 CZ PHE A 91 33.209 -20.230 -2.280 1.00 6.43 A C
|
| 550 |
+
ATOM 549 N SER A 92 34.014 -25.714 0.241 1.00 13.98 A N
|
| 551 |
+
ATOM 550 CA SER A 92 33.450 -26.746 -0.627 1.00 12.99 A C
|
| 552 |
+
ATOM 551 C SER A 92 32.038 -26.359 -0.998 1.00 14.71 A C
|
| 553 |
+
ATOM 552 O SER A 92 31.181 -26.253 -0.122 1.00 15.05 A O
|
| 554 |
+
ATOM 553 CB SER A 92 33.399 -28.074 0.099 1.00 15.88 A C
|
| 555 |
+
ATOM 554 OG SER A 92 32.677 -29.051 -0.652 1.00 19.78 A O
|
| 556 |
+
ATOM 555 N VAL A 93 31.773 -26.173 -2.288 1.00 17.37 A N
|
| 557 |
+
ATOM 556 CA VAL A 93 30.426 -25.784 -2.700 1.00 18.30 A C
|
| 558 |
+
ATOM 557 C VAL A 93 29.429 -26.853 -2.295 1.00 20.89 A C
|
| 559 |
+
ATOM 558 O VAL A 93 28.225 -26.606 -2.273 1.00 25.39 A O
|
| 560 |
+
ATOM 559 CB VAL A 93 30.275 -25.513 -4.223 1.00 15.03 A C
|
| 561 |
+
ATOM 560 CG1 VAL A 93 31.333 -24.544 -4.718 1.00 16.89 A C
|
| 562 |
+
ATOM 561 CG2 VAL A 93 30.274 -26.792 -4.990 1.00 12.62 A C
|
| 563 |
+
ATOM 562 N LYS A 94 29.934 -28.030 -1.951 1.00 16.49 A N
|
| 564 |
+
ATOM 563 CA LYS A 94 29.078 -29.107 -1.549 1.00 15.72 A C
|
| 565 |
+
ATOM 564 C LYS A 94 28.532 -28.949 -0.138 1.00 19.47 A C
|
| 566 |
+
ATOM 565 O LYS A 94 27.718 -29.751 0.296 1.00 21.41 A O
|
| 567 |
+
ATOM 566 CB LYS A 94 29.817 -30.419 -1.646 1.00 17.53 A C
|
| 568 |
+
ATOM 567 CG LYS A 94 30.080 -30.892 -3.033 1.00 19.31 A C
|
| 569 |
+
ATOM 568 CD LYS A 94 30.722 -32.253 -2.946 1.00 23.17 A C
|
| 570 |
+
ATOM 569 CE LYS A 94 30.952 -32.844 -4.316 1.00 28.08 A C
|
| 571 |
+
ATOM 570 NZ LYS A 94 31.566 -34.209 -4.222 1.00 30.82 A N1+
|
| 572 |
+
ATOM 571 N GLU A 95 28.985 -27.954 0.609 1.00 22.29 A N
|
| 573 |
+
ATOM 572 CA GLU A 95 28.477 -27.767 1.956 1.00 23.82 A C
|
| 574 |
+
ATOM 573 C GLU A 95 27.485 -26.624 1.876 1.00 22.81 A C
|
| 575 |
+
ATOM 574 O GLU A 95 27.821 -25.478 2.202 1.00 22.39 A O
|
| 576 |
+
ATOM 575 CB GLU A 95 29.601 -27.367 2.890 1.00 31.07 A C
|
| 577 |
+
ATOM 576 CG GLU A 95 30.820 -28.239 2.853 1.00 37.59 A C
|
| 578 |
+
ATOM 577 CD GLU A 95 31.989 -27.593 3.595 1.00 43.46 A C
|
| 579 |
+
ATOM 578 OE1 GLU A 95 32.296 -26.392 3.349 1.00 43.63 A O
|
| 580 |
+
ATOM 579 OE2 GLU A 95 32.599 -28.297 4.429 1.00 46.58 A O1-
|
| 581 |
+
ATOM 580 N HIS A 96 26.252 -26.947 1.488 1.00 21.86 A N
|
| 582 |
+
ATOM 581 CA HIS A 96 25.184 -25.952 1.309 1.00 18.69 A C
|
| 583 |
+
ATOM 582 C HIS A 96 24.900 -25.057 2.510 1.00 18.22 A C
|
| 584 |
+
ATOM 583 O HIS A 96 24.782 -23.842 2.369 1.00 18.94 A O
|
| 585 |
+
ATOM 584 CB HIS A 96 23.890 -26.617 0.839 1.00 17.58 A C
|
| 586 |
+
ATOM 585 CG HIS A 96 24.017 -27.365 -0.457 1.00 16.90 A C
|
| 587 |
+
ATOM 586 CD2 HIS A 96 23.371 -28.460 -0.919 1.00 18.23 A C
|
| 588 |
+
ATOM 587 ND1 HIS A 96 24.923 -27.019 -1.434 1.00 15.62 A N
|
| 589 |
+
ATOM 588 CE1 HIS A 96 24.839 -27.875 -2.440 1.00 16.07 A C
|
| 590 |
+
ATOM 589 NE2 HIS A 96 23.904 -28.759 -2.151 1.00 17.70 A N
|
| 591 |
+
ATOM 590 N ARG A 97 24.798 -25.638 3.694 1.00 17.37 A N
|
| 592 |
+
ATOM 591 CA ARG A 97 24.525 -24.832 4.873 1.00 15.09 A C
|
| 593 |
+
ATOM 592 C ARG A 97 25.645 -23.820 5.118 1.00 16.62 A C
|
| 594 |
+
ATOM 593 O ARG A 97 25.395 -22.678 5.494 1.00 16.57 A O
|
| 595 |
+
ATOM 594 CB ARG A 97 24.314 -25.730 6.093 1.00 12.02 A C
|
| 596 |
+
ATOM 595 CG ARG A 97 23.811 -24.994 7.323 1.00 11.33 A C
|
| 597 |
+
ATOM 596 CD ARG A 97 23.642 -25.948 8.472 1.00 12.38 A C
|
| 598 |
+
ATOM 597 NE ARG A 97 22.697 -27.032 8.216 1.00 15.31 A N
|
| 599 |
+
ATOM 598 CZ ARG A 97 21.422 -27.040 8.630 1.00 17.96 A C
|
| 600 |
+
ATOM 599 NH1 ARG A 97 20.921 -26.012 9.312 1.00 15.89 A N1+
|
| 601 |
+
ATOM 600 NH2 ARG A 97 20.666 -28.118 8.441 1.00 18.19 A N
|
| 602 |
+
ATOM 601 N LYS A 98 26.883 -24.219 4.861 1.00 19.25 A N
|
| 603 |
+
ATOM 602 CA LYS A 98 27.998 -23.312 5.072 1.00 20.50 A C
|
| 604 |
+
ATOM 603 C LYS A 98 27.983 -22.184 4.079 1.00 18.09 A C
|
| 605 |
+
ATOM 604 O LYS A 98 28.003 -21.023 4.478 1.00 20.14 A O
|
| 606 |
+
ATOM 605 CB LYS A 98 29.324 -24.039 4.974 1.00 27.06 A C
|
| 607 |
+
ATOM 606 CG LYS A 98 29.808 -24.623 6.264 1.00 33.25 A C
|
| 608 |
+
ATOM 607 CD LYS A 98 31.240 -25.071 6.082 1.00 39.81 A C
|
| 609 |
+
ATOM 608 CE LYS A 98 32.090 -23.947 5.472 1.00 44.47 A C
|
| 610 |
+
ATOM 609 NZ LYS A 98 32.296 -22.815 6.427 1.00 47.34 A N1+
|
| 611 |
+
ATOM 610 N ILE A 99 27.949 -22.524 2.788 1.00 15.40 A N
|
| 612 |
+
ATOM 611 CA ILE A 99 27.938 -21.523 1.717 1.00 15.01 A C
|
| 613 |
+
ATOM 612 C ILE A 99 26.802 -20.529 1.923 1.00 17.44 A C
|
| 614 |
+
ATOM 613 O ILE A 99 27.014 -19.307 1.926 1.00 18.10 A O
|
| 615 |
+
ATOM 614 CB ILE A 99 27.728 -22.153 0.328 1.00 15.52 A C
|
| 616 |
+
ATOM 615 CG1 ILE A 99 28.645 -23.348 0.118 1.00 16.84 A C
|
| 617 |
+
ATOM 616 CG2 ILE A 99 28.032 -21.138 -0.728 1.00 16.45 A C
|
| 618 |
+
ATOM 617 CD1 ILE A 99 30.108 -22.999 0.168 1.00 18.50 A C
|
| 619 |
+
ATOM 618 N TYR A 100 25.598 -21.070 2.126 1.00 19.20 A N
|
| 620 |
+
ATOM 619 CA TYR A 100 24.403 -20.267 2.326 1.00 18.81 A C
|
| 621 |
+
ATOM 620 C TYR A 100 24.547 -19.345 3.510 1.00 16.22 A C
|
| 622 |
+
ATOM 621 O TYR A 100 24.117 -18.185 3.454 1.00 19.82 A O
|
| 623 |
+
ATOM 622 CB TYR A 100 23.190 -21.153 2.496 1.00 24.97 A C
|
| 624 |
+
ATOM 623 CG TYR A 100 21.898 -20.417 2.284 1.00 30.83 A C
|
| 625 |
+
ATOM 624 CD1 TYR A 100 21.482 -20.044 1.004 1.00 31.83 A C
|
| 626 |
+
ATOM 625 CD2 TYR A 100 21.095 -20.079 3.366 1.00 35.02 A C
|
| 627 |
+
ATOM 626 CE1 TYR A 100 20.306 -19.348 0.814 1.00 34.30 A C
|
| 628 |
+
ATOM 627 CE2 TYR A 100 19.917 -19.384 3.192 1.00 37.14 A C
|
| 629 |
+
ATOM 628 CZ TYR A 100 19.526 -19.019 1.921 1.00 38.42 A C
|
| 630 |
+
ATOM 629 OH TYR A 100 18.367 -18.281 1.803 1.00 42.34 A O
|
| 631 |
+
ATOM 630 N THR A 101 25.186 -19.830 4.566 1.00 11.06 A N
|
| 632 |
+
ATOM 631 CA THR A 101 25.388 -18.998 5.738 1.00 13.10 A C
|
| 633 |
+
ATOM 632 C THR A 101 26.369 -17.858 5.493 1.00 11.97 A C
|
| 634 |
+
ATOM 633 O THR A 101 26.133 -16.706 5.874 1.00 11.20 A O
|
| 635 |
+
ATOM 634 CB THR A 101 25.880 -19.837 6.946 1.00 19.30 A C
|
| 636 |
+
ATOM 635 CG2 THR A 101 26.154 -18.938 8.162 1.00 18.32 A C
|
| 637 |
+
ATOM 636 OG1 THR A 101 24.880 -20.809 7.296 1.00 23.86 A O
|
| 638 |
+
ATOM 637 N MET A 102 27.494 -18.180 4.873 1.00 13.67 A N
|
| 639 |
+
ATOM 638 CA MET A 102 28.506 -17.169 4.622 1.00 14.03 A C
|
| 640 |
+
ATOM 639 C MET A 102 27.932 -16.089 3.752 1.00 13.43 A C
|
| 641 |
+
ATOM 640 O MET A 102 28.082 -14.910 4.059 1.00 13.36 A O
|
| 642 |
+
ATOM 641 CB MET A 102 29.748 -17.787 3.990 1.00 15.52 A C
|
| 643 |
+
ATOM 642 CG MET A 102 30.469 -18.757 4.907 1.00 16.74 A C
|
| 644 |
+
ATOM 643 SD MET A 102 32.005 -19.317 4.198 1.00 19.43 A S
|
| 645 |
+
ATOM 644 CE MET A 102 31.533 -20.724 3.326 1.00 17.64 A C
|
| 646 |
+
ATOM 645 N ILE A 103 27.232 -16.506 2.697 1.00 15.07 A N
|
| 647 |
+
ATOM 646 CA ILE A 103 26.593 -15.577 1.774 1.00 17.58 A C
|
| 648 |
+
ATOM 647 C ILE A 103 25.575 -14.690 2.508 1.00 20.37 A C
|
| 649 |
+
ATOM 648 O ILE A 103 25.527 -13.486 2.277 1.00 18.95 A O
|
| 650 |
+
ATOM 649 CB ILE A 103 25.883 -16.321 0.634 1.00 17.88 A C
|
| 651 |
+
ATOM 650 CG1 ILE A 103 26.896 -17.111 -0.193 1.00 17.49 A C
|
| 652 |
+
ATOM 651 CG2 ILE A 103 25.152 -15.335 -0.267 1.00 17.47 A C
|
| 653 |
+
ATOM 652 CD1 ILE A 103 26.266 -17.985 -1.286 1.00 15.46 A C
|
| 654 |
+
ATOM 653 N TYR A 104 24.791 -15.269 3.417 1.00 26.57 A N
|
| 655 |
+
ATOM 654 CA TYR A 104 23.812 -14.487 4.168 1.00 30.90 A C
|
| 656 |
+
ATOM 655 C TYR A 104 24.384 -13.445 5.095 1.00 31.73 A C
|
| 657 |
+
ATOM 656 O TYR A 104 23.786 -12.399 5.278 1.00 31.18 A O
|
| 658 |
+
ATOM 657 CB TYR A 104 22.841 -15.375 4.922 1.00 36.22 A C
|
| 659 |
+
ATOM 658 CG TYR A 104 21.502 -15.350 4.254 1.00 43.21 A C
|
| 660 |
+
ATOM 659 CD1 TYR A 104 21.219 -16.222 3.208 1.00 46.10 A C
|
| 661 |
+
ATOM 660 CD2 TYR A 104 20.546 -14.381 4.591 1.00 47.20 A C
|
| 662 |
+
ATOM 661 CE1 TYR A 104 20.031 -16.134 2.505 1.00 49.00 A C
|
| 663 |
+
ATOM 662 CE2 TYR A 104 19.338 -14.286 3.885 1.00 50.18 A C
|
| 664 |
+
ATOM 663 CZ TYR A 104 19.091 -15.175 2.840 1.00 51.57 A C
|
| 665 |
+
ATOM 664 OH TYR A 104 17.904 -15.133 2.138 1.00 53.78 A O
|
| 666 |
+
ATOM 665 N ARG A 105 25.558 -13.712 5.652 1.00 35.53 A N
|
| 667 |
+
ATOM 666 CA ARG A 105 26.227 -12.764 6.549 1.00 34.37 A C
|
| 668 |
+
ATOM 667 C ARG A 105 26.539 -11.468 5.814 1.00 30.61 A C
|
| 669 |
+
ATOM 668 O ARG A 105 26.762 -10.429 6.439 1.00 32.92 A O
|
| 670 |
+
ATOM 669 CB ARG A 105 27.538 -13.365 7.096 1.00 38.15 A C
|
| 671 |
+
ATOM 670 CG ARG A 105 27.350 -14.668 7.876 1.00 43.81 A C
|
| 672 |
+
ATOM 671 CD ARG A 105 28.516 -14.975 8.808 1.00 49.18 A C
|
| 673 |
+
ATOM 672 NE ARG A 105 29.578 -15.760 8.174 1.00 54.51 A N
|
| 674 |
+
ATOM 673 CZ ARG A 105 30.684 -15.253 7.623 1.00 57.35 A C
|
| 675 |
+
ATOM 674 NH1 ARG A 105 30.904 -13.938 7.603 1.00 58.70 A N1+
|
| 676 |
+
ATOM 675 NH2 ARG A 105 31.589 -16.072 7.106 1.00 57.31 A N
|
| 677 |
+
ATOM 676 N ASN A 106 26.546 -11.532 4.487 1.00 27.25 A N
|
| 678 |
+
ATOM 677 CA ASN A 106 26.864 -10.377 3.657 1.00 27.34 A C
|
| 679 |
+
ATOM 678 C ASN A 106 25.679 -9.699 3.022 1.00 27.34 A C
|
| 680 |
+
ATOM 679 O ASN A 106 25.842 -8.848 2.149 1.00 25.54 A O
|
| 681 |
+
ATOM 680 CB ASN A 106 27.853 -10.770 2.563 1.00 30.39 A C
|
| 682 |
+
ATOM 681 CG ASN A 106 29.258 -10.946 3.091 1.00 30.78 A C
|
| 683 |
+
ATOM 682 ND2 ASN A 106 30.002 -9.839 3.207 1.00 28.54 A N
|
| 684 |
+
ATOM 683 OD1 ASN A 106 29.664 -12.058 3.420 1.00 31.77 A O
|
| 685 |
+
ATOM 684 N LEU A 107 24.487 -10.065 3.465 1.00 29.67 A N
|
| 686 |
+
ATOM 685 CA LEU A 107 23.276 -9.482 2.929 1.00 28.94 A C
|
| 687 |
+
ATOM 686 C LEU A 107 22.467 -8.866 4.044 1.00 30.37 A C
|
| 688 |
+
ATOM 687 O LEU A 107 22.684 -9.133 5.225 1.00 29.22 A O
|
| 689 |
+
ATOM 688 CB LEU A 107 22.390 -10.558 2.300 1.00 25.42 A C
|
| 690 |
+
ATOM 689 CG LEU A 107 22.846 -11.433 1.151 1.00 22.75 A C
|
| 691 |
+
ATOM 690 CD1 LEU A 107 21.897 -12.599 1.086 1.00 23.42 A C
|
| 692 |
+
ATOM 691 CD2 LEU A 107 22.903 -10.680 -0.153 1.00 20.95 A C
|
| 693 |
+
ATOM 692 N VAL A 108 21.459 -8.118 3.631 1.00 32.60 A N
|
| 694 |
+
ATOM 693 CA VAL A 108 20.518 -7.502 4.535 1.00 34.59 A C
|
| 695 |
+
ATOM 694 C VAL A 108 19.180 -7.624 3.820 1.00 34.90 A C
|
| 696 |
+
ATOM 695 O VAL A 108 19.119 -7.559 2.589 1.00 32.74 A O
|
| 697 |
+
ATOM 696 CB VAL A 108 20.914 -6.048 4.869 1.00 36.33 A C
|
| 698 |
+
ATOM 697 CG1 VAL A 108 21.650 -5.412 3.709 1.00 37.75 A C
|
| 699 |
+
ATOM 698 CG2 VAL A 108 19.690 -5.236 5.243 1.00 36.99 A C
|
| 700 |
+
ATOM 699 N VAL A 109 18.143 -7.864 4.619 1.00 38.64 A N
|
| 701 |
+
ATOM 700 CA VAL A 109 16.736 -8.058 4.213 1.00 40.78 A C
|
| 702 |
+
ATOM 701 C VAL A 109 16.520 -9.550 3.941 1.00 42.51 A C
|
| 703 |
+
ATOM 702 O VAL A 109 17.481 -10.242 3.539 1.00 42.68 A O
|
| 704 |
+
ATOM 703 CB VAL A 109 16.277 -7.204 2.975 1.00 41.86 A C
|
| 705 |
+
ATOM 704 CG1 VAL A 109 14.762 -7.298 2.791 1.00 41.92 A C
|
| 706 |
+
ATOM 705 CG2 VAL A 109 16.649 -5.745 3.141 1.00 43.61 A C
|
| 707 |
+
TER
|
| 708 |
+
ATOM 706 N GLU B 17 32.075 -34.286 -11.853 1.00 52.56 B N
|
| 709 |
+
ATOM 707 CA GLU B 17 31.206 -33.198 -11.326 1.00 50.89 B C
|
| 710 |
+
ATOM 708 C GLU B 17 31.909 -31.865 -11.563 1.00 44.52 B C
|
| 711 |
+
ATOM 709 O GLU B 17 32.999 -31.632 -11.049 1.00 46.37 B O
|
| 712 |
+
ATOM 710 CB GLU B 17 30.912 -33.429 -9.824 1.00 55.17 B C
|
| 713 |
+
ATOM 711 CG GLU B 17 32.078 -34.013 -8.980 1.00 58.48 B C
|
| 714 |
+
ATOM 712 CD GLU B 17 32.839 -32.976 -8.139 1.00 60.32 B C
|
| 715 |
+
ATOM 713 OE1 GLU B 17 32.302 -32.543 -7.098 1.00 60.54 B O
|
| 716 |
+
ATOM 714 OE2 GLU B 17 33.988 -32.618 -8.498 1.00 60.63 B O1-
|
| 717 |
+
ATOM 715 N THR B 18 31.324 -31.015 -12.390 1.00 36.89 B N
|
| 718 |
+
ATOM 716 CA THR B 18 31.948 -29.737 -12.658 1.00 32.17 B C
|
| 719 |
+
ATOM 717 C THR B 18 31.419 -28.661 -11.707 1.00 26.92 B C
|
| 720 |
+
ATOM 718 O THR B 18 30.376 -28.848 -11.062 1.00 25.44 B O
|
| 721 |
+
ATOM 719 CB THR B 18 31.733 -29.316 -14.107 1.00 33.65 B C
|
| 722 |
+
ATOM 720 CG2 THR B 18 32.040 -30.485 -15.032 1.00 35.00 B C
|
| 723 |
+
ATOM 721 OG1 THR B 18 30.372 -28.917 -14.291 1.00 33.86 B O
|
| 724 |
+
ATOM 722 N PHE B 19 32.143 -27.542 -11.625 1.00 22.45 B N
|
| 725 |
+
ATOM 723 CA PHE B 19 31.769 -26.453 -10.742 1.00 17.73 B C
|
| 726 |
+
ATOM 724 C PHE B 19 30.344 -26.019 -10.974 1.00 21.74 B C
|
| 727 |
+
ATOM 725 O PHE B 19 29.549 -25.992 -10.043 1.00 22.84 B O
|
| 728 |
+
ATOM 726 CB PHE B 19 32.674 -25.245 -10.916 1.00 12.04 B C
|
| 729 |
+
ATOM 727 CG PHE B 19 32.265 -24.076 -10.062 1.00 12.01 B C
|
| 730 |
+
ATOM 728 CD1 PHE B 19 32.438 -24.116 -8.685 1.00 12.17 B C
|
| 731 |
+
ATOM 729 CD2 PHE B 19 31.667 -22.955 -10.628 1.00 11.53 B C
|
| 732 |
+
ATOM 730 CE1 PHE B 19 32.021 -23.055 -7.889 1.00 13.45 B C
|
| 733 |
+
ATOM 731 CE2 PHE B 19 31.246 -21.888 -9.839 1.00 10.96 B C
|
| 734 |
+
ATOM 732 CZ PHE B 19 31.421 -21.935 -8.468 1.00 11.75 B C
|
| 735 |
+
ATOM 733 N SER B 20 30.030 -25.693 -12.225 1.00 24.64 B N
|
| 736 |
+
ATOM 734 CA SER B 20 28.703 -25.237 -12.606 1.00 26.30 B C
|
| 737 |
+
ATOM 735 C SER B 20 27.575 -26.173 -12.205 1.00 27.49 B C
|
| 738 |
+
ATOM 736 O SER B 20 26.509 -25.712 -11.822 1.00 28.40 B O
|
| 739 |
+
ATOM 737 CB SER B 20 28.652 -24.947 -14.093 1.00 27.55 B C
|
| 740 |
+
ATOM 738 OG SER B 20 28.286 -23.593 -14.268 1.00 30.01 B O
|
| 741 |
+
ATOM 739 N ASP B 21 27.809 -27.478 -12.284 1.00 27.30 B N
|
| 742 |
+
ATOM 740 CA ASP B 21 26.814 -28.452 -11.882 1.00 28.79 B C
|
| 743 |
+
ATOM 741 C ASP B 21 26.639 -28.352 -10.378 1.00 29.54 B C
|
| 744 |
+
ATOM 742 O ASP B 21 25.519 -28.300 -9.873 1.00 33.11 B O
|
| 745 |
+
ATOM 743 CB ASP B 21 27.281 -29.875 -12.205 1.00 33.00 B C
|
| 746 |
+
ATOM 744 CG ASP B 21 27.479 -30.112 -13.692 1.00 38.52 B C
|
| 747 |
+
ATOM 745 OD1 ASP B 21 26.877 -29.358 -14.503 1.00 39.73 B O
|
| 748 |
+
ATOM 746 OD2 ASP B 21 28.238 -31.057 -14.042 1.00 40.32 B O1-
|
| 749 |
+
ATOM 747 N LEU B 22 27.761 -28.324 -9.665 1.00 26.27 B N
|
| 750 |
+
ATOM 748 CA LEU B 22 27.753 -28.274 -8.217 1.00 21.85 B C
|
| 751 |
+
ATOM 749 C LEU B 22 27.124 -27.006 -7.657 1.00 22.11 B C
|
| 752 |
+
ATOM 750 O LEU B 22 26.320 -27.064 -6.716 1.00 24.72 B O
|
| 753 |
+
ATOM 751 CB LEU B 22 29.180 -28.412 -7.685 1.00 18.73 B C
|
| 754 |
+
ATOM 752 CG LEU B 22 29.872 -29.738 -7.354 1.00 15.80 B C
|
| 755 |
+
ATOM 753 CD1 LEU B 22 29.042 -30.916 -7.782 1.00 14.53 B C
|
| 756 |
+
ATOM 754 CD2 LEU B 22 31.236 -29.774 -8.020 1.00 14.98 B C
|
| 757 |
+
ATOM 755 N TRP B 23 27.477 -25.871 -8.251 1.00 19.21 B N
|
| 758 |
+
ATOM 756 CA TRP B 23 27.021 -24.553 -7.803 1.00 20.10 B C
|
| 759 |
+
ATOM 757 C TRP B 23 25.532 -24.284 -8.011 1.00 25.27 B C
|
| 760 |
+
ATOM 758 O TRP B 23 24.919 -23.498 -7.297 1.00 27.09 B O
|
| 761 |
+
ATOM 759 CB TRP B 23 27.892 -23.448 -8.451 1.00 14.64 B C
|
| 762 |
+
ATOM 760 CG TRP B 23 27.585 -22.055 -8.009 1.00 11.74 B C
|
| 763 |
+
ATOM 761 CD1 TRP B 23 26.730 -21.178 -8.613 1.00 10.40 B C
|
| 764 |
+
ATOM 762 CD2 TRP B 23 28.090 -21.382 -6.842 1.00 11.59 B C
|
| 765 |
+
ATOM 763 CE2 TRP B 23 27.478 -20.101 -6.799 1.00 10.54 B C
|
| 766 |
+
ATOM 764 CE3 TRP B 23 28.990 -21.731 -5.830 1.00 11.67 B C
|
| 767 |
+
ATOM 765 NE1 TRP B 23 26.659 -20.002 -7.892 1.00 8.62 B N
|
| 768 |
+
ATOM 766 CZ2 TRP B 23 27.738 -19.177 -5.784 1.00 11.03 B C
|
| 769 |
+
ATOM 767 CZ3 TRP B 23 29.251 -20.809 -4.825 1.00 10.73 B C
|
| 770 |
+
ATOM 768 CH2 TRP B 23 28.623 -19.548 -4.812 1.00 10.81 B C
|
| 771 |
+
ATOM 769 N LYS B 24 24.939 -24.930 -8.991 1.00 30.12 B N
|
| 772 |
+
ATOM 770 CA LYS B 24 23.530 -24.716 -9.231 1.00 35.48 B C
|
| 773 |
+
ATOM 771 C LYS B 24 22.646 -25.442 -8.219 1.00 35.68 B C
|
| 774 |
+
ATOM 772 O LYS B 24 21.451 -25.171 -8.134 1.00 39.75 B O
|
| 775 |
+
ATOM 773 CB LYS B 24 23.180 -25.083 -10.671 1.00 41.39 B C
|
| 776 |
+
ATOM 774 CG LYS B 24 23.805 -24.114 -11.676 1.00 46.84 B C
|
| 777 |
+
ATOM 775 CD LYS B 24 23.803 -24.649 -13.100 1.00 50.66 B C
|
| 778 |
+
ATOM 776 CE LYS B 24 24.657 -23.764 -13.999 1.00 52.44 B C
|
| 779 |
+
ATOM 777 NZ LYS B 24 24.754 -24.351 -15.355 1.00 53.53 B N1+
|
| 780 |
+
ATOM 778 N LEU B 25 23.240 -26.308 -7.408 1.00 31.53 B N
|
| 781 |
+
ATOM 779 CA LEU B 25 22.485 -27.035 -6.394 1.00 28.43 B C
|
| 782 |
+
ATOM 780 C LEU B 25 22.403 -26.295 -5.067 1.00 27.36 B C
|
| 783 |
+
ATOM 781 O LEU B 25 22.155 -26.900 -4.030 1.00 28.91 B O
|
| 784 |
+
ATOM 782 CB LEU B 25 23.113 -28.401 -6.153 1.00 28.84 B C
|
| 785 |
+
ATOM 783 CG LEU B 25 23.201 -29.321 -7.366 1.00 30.87 B C
|
| 786 |
+
ATOM 784 CD1 LEU B 25 23.891 -30.600 -6.922 1.00 30.42 B C
|
| 787 |
+
ATOM 785 CD2 LEU B 25 21.808 -29.605 -7.945 1.00 30.75 B C
|
| 788 |
+
ATOM 786 N LEU B 26 22.657 -24.998 -5.083 1.00 28.16 B N
|
| 789 |
+
ATOM 787 CA LEU B 26 22.616 -24.202 -3.862 1.00 30.58 B C
|
| 790 |
+
ATOM 788 C LEU B 26 21.235 -23.583 -3.733 1.00 32.69 B C
|
| 791 |
+
ATOM 789 O LEU B 26 20.630 -23.223 -4.753 1.00 33.43 B O
|
| 792 |
+
ATOM 790 CB LEU B 26 23.652 -23.069 -3.918 1.00 30.27 B C
|
| 793 |
+
ATOM 791 CG LEU B 26 25.131 -23.345 -4.163 1.00 29.57 B C
|
| 794 |
+
ATOM 792 CD1 LEU B 26 25.825 -22.010 -4.268 1.00 29.65 B C
|
| 795 |
+
ATOM 793 CD2 LEU B 26 25.723 -24.177 -3.038 1.00 29.90 B C
|
| 796 |
+
ATOM 794 N PRO B 27 20.753 -23.387 -2.477 1.00 32.15 B N
|
| 797 |
+
ATOM 795 CA PRO B 27 19.442 -22.801 -2.172 1.00 32.91 B C
|
| 798 |
+
ATOM 796 C PRO B 27 19.329 -21.458 -2.877 1.00 36.74 B C
|
| 799 |
+
ATOM 797 O PRO B 27 20.105 -20.538 -2.608 1.00 37.93 B O
|
| 800 |
+
ATOM 798 CB PRO B 27 19.491 -22.646 -0.660 1.00 31.00 B C
|
| 801 |
+
ATOM 799 CG PRO B 27 20.369 -23.774 -0.245 1.00 28.74 B C
|
| 802 |
+
ATOM 800 CD PRO B 27 21.480 -23.661 -1.226 1.00 29.37 B C
|
| 803 |
+
ATOM 801 N GLU B 28 18.368 -21.373 -3.794 1.00 39.68 B N
|
| 804 |
+
ATOM 802 CA GLU B 28 18.139 -20.187 -4.619 1.00 41.42 B C
|
| 805 |
+
ATOM 803 C GLU B 28 17.306 -19.049 -4.048 1.00 41.07 B C
|
| 806 |
+
ATOM 804 O GLU B 28 17.039 -18.062 -4.733 1.00 44.94 B O
|
| 807 |
+
ATOM 805 CB GLU B 28 17.603 -20.610 -5.988 1.00 43.50 B C
|
| 808 |
+
ATOM 806 CG GLU B 28 16.553 -21.693 -5.923 1.00 46.41 B C
|
| 809 |
+
ATOM 807 CD GLU B 28 16.395 -22.434 -7.228 1.00 50.74 B C
|
| 810 |
+
ATOM 808 OE1 GLU B 28 17.341 -22.426 -8.054 1.00 50.52 B O
|
| 811 |
+
ATOM 809 OE2 GLU B 28 15.315 -23.043 -7.418 1.00 54.75 B O1-
|
| 812 |
+
ATOM 810 N ASN B 29 16.925 -19.172 -2.791 1.00 37.74 B N
|
| 813 |
+
ATOM 811 CA ASN B 29 16.147 -18.147 -2.112 1.00 37.72 B C
|
| 814 |
+
ATOM 812 C ASN B 29 16.548 -18.261 -0.669 1.00 30.80 B C
|
| 815 |
+
ATOM 813 O ASN B 29 17.159 -19.284 -0.370 1.00 28.87 B O
|
| 816 |
+
ATOM 814 CB ASN B 29 14.634 -18.393 -2.256 1.00 44.98 B C
|
| 817 |
+
ATOM 815 CG ASN B 29 14.044 -17.784 -3.540 1.00 49.82 B C
|
| 818 |
+
ATOM 816 ND2 ASN B 29 12.963 -18.387 -4.023 1.00 51.64 B N
|
| 819 |
+
ATOM 817 OD1 ASN B 29 14.536 -16.773 -4.071 1.00 50.99 B O
|
| 820 |
+
ATOM 818 OXT ASN B 29 16.296 -17.351 0.139 1.00 30.36 B O1-
|
| 821 |
+
TER
|
| 822 |
+
END
|
examples/input_pdbs/1qys.pdb
ADDED
|
@@ -0,0 +1,1067 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
HEADER DE NOVO PROTEIN 11-SEP-03 1QYS
|
| 2 |
+
TITLE CRYSTAL STRUCTURE OF TOP7: A COMPUTATIONALLY DESIGNED
|
| 3 |
+
TITLE 2 PROTEIN WITH A NOVEL FOLD
|
| 4 |
+
COMPND MOL_ID: 1;
|
| 5 |
+
COMPND 2 MOLECULE: TOP7;
|
| 6 |
+
COMPND 3 CHAIN: A;
|
| 7 |
+
COMPND 4 ENGINEERED: YES
|
| 8 |
+
SOURCE MOL_ID: 1;
|
| 9 |
+
SOURCE 2 ORGANISM_SCIENTIFIC: COMPUTATIONALLY DESIGNED SEQUENCE;
|
| 10 |
+
SOURCE 3 EXPRESSION_SYSTEM: ESCHERICHIA COLI;
|
| 11 |
+
SOURCE 4 EXPRESSION_SYSTEM_TAXID: 562;
|
| 12 |
+
SOURCE 5 EXPRESSION_SYSTEM_STRAIN: BL21(DE3) PLYSS;
|
| 13 |
+
SOURCE 6 EXPRESSION_SYSTEM_VECTOR_TYPE: PLASMID;
|
| 14 |
+
SOURCE 7 EXPRESSION_SYSTEM_PLASMID: PET29B(+)
|
| 15 |
+
KEYWDS ALPHA-BETA, COMPUTATIONALLY DESIGNED, NOVEL FOLD, DE NOVO
|
| 16 |
+
KEYWDS 2 PROTEIN
|
| 17 |
+
EXPDTA X-RAY DIFFRACTION
|
| 18 |
+
AUTHOR B.KUHLMAN,G.DANTAS,G.C.IRETON,G.VARANI,B.L.STODDARD,D.BAKER
|
| 19 |
+
REVDAT 2 24-FEB-09 1QYS 1 VERSN
|
| 20 |
+
REVDAT 1 25-NOV-03 1QYS 0
|
| 21 |
+
JRNL AUTH B.KUHLMAN,G.DANTAS,G.C.IRETON,G.VARANI,
|
| 22 |
+
JRNL AUTH 2 B.L.STODDARD,D.BAKER
|
| 23 |
+
JRNL TITL DESIGN OF A NOVEL GLOBULAR PROTEIN FOLD WITH
|
| 24 |
+
JRNL TITL 2 ATOMIC-LEVEL ACCURACY
|
| 25 |
+
JRNL REF SCIENCE V. 302 1364 2003
|
| 26 |
+
JRNL REFN ISSN 0036-8075
|
| 27 |
+
JRNL PMID 14631033
|
| 28 |
+
JRNL DOI 10.1126/SCIENCE.1089427
|
| 29 |
+
REMARK 1
|
| 30 |
+
REMARK 2
|
| 31 |
+
REMARK 2 RESOLUTION. 2.50 ANGSTROMS.
|
| 32 |
+
REMARK 3
|
| 33 |
+
REMARK 3 REFINEMENT.
|
| 34 |
+
REMARK 3 PROGRAM : CNS 1.1
|
| 35 |
+
REMARK 3 AUTHORS : BRUNGER,ADAMS,CLORE,DELANO,GROS,GROSSE-
|
| 36 |
+
REMARK 3 : KUNSTLEVE,JIANG,KUSZEWSKI,NILGES, PANNU,
|
| 37 |
+
REMARK 3 : READ,RICE,SIMONSON,WARREN
|
| 38 |
+
REMARK 3
|
| 39 |
+
REMARK 3 REFINEMENT TARGET : ENGH & HUBER
|
| 40 |
+
REMARK 3
|
| 41 |
+
REMARK 3 DATA USED IN REFINEMENT.
|
| 42 |
+
REMARK 3 RESOLUTION RANGE HIGH (ANGSTROMS) : 2.50
|
| 43 |
+
REMARK 3 RESOLUTION RANGE LOW (ANGSTROMS) : 18.71
|
| 44 |
+
REMARK 3 DATA CUTOFF (SIGMA(F)) : 0.000
|
| 45 |
+
REMARK 3 DATA CUTOFF HIGH (ABS(F)) : 1873860.400
|
| 46 |
+
REMARK 3 DATA CUTOFF LOW (ABS(F)) : 0.0000
|
| 47 |
+
REMARK 3 COMPLETENESS (WORKING+TEST) (%) : 96.1
|
| 48 |
+
REMARK 3 NUMBER OF REFLECTIONS : 6736
|
| 49 |
+
REMARK 3
|
| 50 |
+
REMARK 3 FIT TO DATA USED IN REFINEMENT.
|
| 51 |
+
REMARK 3 CROSS-VALIDATION METHOD : THROUGHOUT
|
| 52 |
+
REMARK 3 FREE R VALUE TEST SET SELECTION : RANDOM
|
| 53 |
+
REMARK 3 R VALUE (WORKING SET) : 0.268
|
| 54 |
+
REMARK 3 FREE R VALUE : 0.293
|
| 55 |
+
REMARK 3 FREE R VALUE TEST SET SIZE (%) : 5.100
|
| 56 |
+
REMARK 3 FREE R VALUE TEST SET COUNT : 346
|
| 57 |
+
REMARK 3 ESTIMATED ERROR OF FREE R VALUE : 0.016
|
| 58 |
+
REMARK 3
|
| 59 |
+
REMARK 3 FIT IN THE HIGHEST RESOLUTION BIN.
|
| 60 |
+
REMARK 3 TOTAL NUMBER OF BINS USED : 6
|
| 61 |
+
REMARK 3 BIN RESOLUTION RANGE HIGH (A) : 2.50
|
| 62 |
+
REMARK 3 BIN RESOLUTION RANGE LOW (A) : 2.66
|
| 63 |
+
REMARK 3 BIN COMPLETENESS (WORKING+TEST) (%) : 91.30
|
| 64 |
+
REMARK 3 REFLECTIONS IN BIN (WORKING SET) : 1009
|
| 65 |
+
REMARK 3 BIN R VALUE (WORKING SET) : 0.3530
|
| 66 |
+
REMARK 3 BIN FREE R VALUE : 0.3700
|
| 67 |
+
REMARK 3 BIN FREE R VALUE TEST SET SIZE (%) : 4.30
|
| 68 |
+
REMARK 3 BIN FREE R VALUE TEST SET COUNT : 45
|
| 69 |
+
REMARK 3 ESTIMATED ERROR OF BIN FREE R VALUE : 0.055
|
| 70 |
+
REMARK 3
|
| 71 |
+
REMARK 3 NUMBER OF NON-HYDROGEN ATOMS USED IN REFINEMENT.
|
| 72 |
+
REMARK 3 PROTEIN ATOMS : 685
|
| 73 |
+
REMARK 3 NUCLEIC ACID ATOMS : 0
|
| 74 |
+
REMARK 3 HETEROGEN ATOMS : 0
|
| 75 |
+
REMARK 3 SOLVENT ATOMS : 7
|
| 76 |
+
REMARK 3
|
| 77 |
+
REMARK 3 B VALUES.
|
| 78 |
+
REMARK 3 FROM WILSON PLOT (A**2) : 30.20
|
| 79 |
+
REMARK 3 MEAN B VALUE (OVERALL, A**2) : 65.50
|
| 80 |
+
REMARK 3 OVERALL ANISOTROPIC B VALUE.
|
| 81 |
+
REMARK 3 B11 (A**2) : 10.54000
|
| 82 |
+
REMARK 3 B22 (A**2) : 10.54000
|
| 83 |
+
REMARK 3 B33 (A**2) : -21.07000
|
| 84 |
+
REMARK 3 B12 (A**2) : 9.56000
|
| 85 |
+
REMARK 3 B13 (A**2) : 0.00000
|
| 86 |
+
REMARK 3 B23 (A**2) : 0.00000
|
| 87 |
+
REMARK 3
|
| 88 |
+
REMARK 3 ESTIMATED COORDINATE ERROR.
|
| 89 |
+
REMARK 3 ESD FROM LUZZATI PLOT (A) : 0.42
|
| 90 |
+
REMARK 3 ESD FROM SIGMAA (A) : 0.47
|
| 91 |
+
REMARK 3 LOW RESOLUTION CUTOFF (A) : 5.00
|
| 92 |
+
REMARK 3
|
| 93 |
+
REMARK 3 CROSS-VALIDATED ESTIMATED COORDINATE ERROR.
|
| 94 |
+
REMARK 3 ESD FROM C-V LUZZATI PLOT (A) : 0.46
|
| 95 |
+
REMARK 3 ESD FROM C-V SIGMAA (A) : 0.45
|
| 96 |
+
REMARK 3
|
| 97 |
+
REMARK 3 RMS DEVIATIONS FROM IDEAL VALUES.
|
| 98 |
+
REMARK 3 BOND LENGTHS (A) : 0.008
|
| 99 |
+
REMARK 3 BOND ANGLES (DEGREES) : 1.40
|
| 100 |
+
REMARK 3 DIHEDRAL ANGLES (DEGREES) : 26.30
|
| 101 |
+
REMARK 3 IMPROPER ANGLES (DEGREES) : 0.73
|
| 102 |
+
REMARK 3
|
| 103 |
+
REMARK 3 ISOTROPIC THERMAL MODEL : GROUP
|
| 104 |
+
REMARK 3
|
| 105 |
+
REMARK 3 ISOTROPIC THERMAL FACTOR RESTRAINTS. RMS SIGMA
|
| 106 |
+
REMARK 3 MAIN-CHAIN BOND (A**2) : NULL ; NULL
|
| 107 |
+
REMARK 3 MAIN-CHAIN ANGLE (A**2) : NULL ; NULL
|
| 108 |
+
REMARK 3 SIDE-CHAIN BOND (A**2) : NULL ; NULL
|
| 109 |
+
REMARK 3 SIDE-CHAIN ANGLE (A**2) : NULL ; NULL
|
| 110 |
+
REMARK 3
|
| 111 |
+
REMARK 3 BULK SOLVENT MODELING.
|
| 112 |
+
REMARK 3 METHOD USED : FLAT MODEL
|
| 113 |
+
REMARK 3 KSOL : 0.30
|
| 114 |
+
REMARK 3 BSOL : 55.24
|
| 115 |
+
REMARK 3
|
| 116 |
+
REMARK 3 NCS MODEL : NULL
|
| 117 |
+
REMARK 3
|
| 118 |
+
REMARK 3 NCS RESTRAINTS. RMS SIGMA/WEIGHT
|
| 119 |
+
REMARK 3 GROUP 1 POSITIONAL (A) : NULL ; NULL
|
| 120 |
+
REMARK 3 GROUP 1 B-FACTOR (A**2) : NULL ; NULL
|
| 121 |
+
REMARK 3
|
| 122 |
+
REMARK 3 PARAMETER FILE 1 : PROTEIN_REP.PARAM
|
| 123 |
+
REMARK 3 PARAMETER FILE 2 : WATER_REP.PARAM
|
| 124 |
+
REMARK 3 PARAMETER FILE 3 : NULL
|
| 125 |
+
REMARK 3 TOPOLOGY FILE 1 : PROTEIN.TOP
|
| 126 |
+
REMARK 3 TOPOLOGY FILE 2 : WATER.TOP
|
| 127 |
+
REMARK 3 TOPOLOGY FILE 3 : NULL
|
| 128 |
+
REMARK 3
|
| 129 |
+
REMARK 3 OTHER REFINEMENT REMARKS: NULL
|
| 130 |
+
REMARK 4
|
| 131 |
+
REMARK 4 1QYS COMPLIES WITH FORMAT V. 3.15, 01-DEC-08
|
| 132 |
+
REMARK 100
|
| 133 |
+
REMARK 100 THIS ENTRY HAS BEEN PROCESSED BY RCSB ON 12-SEP-03.
|
| 134 |
+
REMARK 100 THE RCSB ID CODE IS RCSB020233.
|
| 135 |
+
REMARK 200
|
| 136 |
+
REMARK 200 EXPERIMENTAL DETAILS
|
| 137 |
+
REMARK 200 EXPERIMENT TYPE : X-RAY DIFFRACTION
|
| 138 |
+
REMARK 200 DATE OF DATA COLLECTION : 24-MAR-03
|
| 139 |
+
REMARK 200 TEMPERATURE (KELVIN) : 100
|
| 140 |
+
REMARK 200 PH : 6.6
|
| 141 |
+
REMARK 200 NUMBER OF CRYSTALS USED : 1
|
| 142 |
+
REMARK 200
|
| 143 |
+
REMARK 200 SYNCHROTRON (Y/N) : Y
|
| 144 |
+
REMARK 200 RADIATION SOURCE : ALS
|
| 145 |
+
REMARK 200 BEAMLINE : 8.2.1
|
| 146 |
+
REMARK 200 X-RAY GENERATOR MODEL : NULL
|
| 147 |
+
REMARK 200 MONOCHROMATIC OR LAUE (M/L) : M
|
| 148 |
+
REMARK 200 WAVELENGTH OR RANGE (A) : 0.9793
|
| 149 |
+
REMARK 200 MONOCHROMATOR : DOUBLE CRYSTAL SI(111)
|
| 150 |
+
REMARK 200 OPTICS : NULL
|
| 151 |
+
REMARK 200
|
| 152 |
+
REMARK 200 DETECTOR TYPE : CCD
|
| 153 |
+
REMARK 200 DETECTOR MANUFACTURER : ADSC QUANTUM 210
|
| 154 |
+
REMARK 200 INTENSITY-INTEGRATION SOFTWARE : HKL-2000
|
| 155 |
+
REMARK 200 DATA SCALING SOFTWARE : SCALEPACK
|
| 156 |
+
REMARK 200
|
| 157 |
+
REMARK 200 NUMBER OF UNIQUE REFLECTIONS : 6979
|
| 158 |
+
REMARK 200 RESOLUTION RANGE HIGH (A) : 2.500
|
| 159 |
+
REMARK 200 RESOLUTION RANGE LOW (A) : 50.000
|
| 160 |
+
REMARK 200 REJECTION CRITERIA (SIGMA(I)) : 0.000
|
| 161 |
+
REMARK 200
|
| 162 |
+
REMARK 200 OVERALL.
|
| 163 |
+
REMARK 200 COMPLETENESS FOR RANGE (%) : 100.0
|
| 164 |
+
REMARK 200 DATA REDUNDANCY : NULL
|
| 165 |
+
REMARK 200 R MERGE (I) : 0.04500
|
| 166 |
+
REMARK 200 R SYM (I) : NULL
|
| 167 |
+
REMARK 200 <I/SIGMA(I)> FOR THE DATA SET : 37.8000
|
| 168 |
+
REMARK 200
|
| 169 |
+
REMARK 200 IN THE HIGHEST RESOLUTION SHELL.
|
| 170 |
+
REMARK 200 HIGHEST RESOLUTION SHELL, RANGE HIGH (A) : 2.50
|
| 171 |
+
REMARK 200 HIGHEST RESOLUTION SHELL, RANGE LOW (A) : 2.59
|
| 172 |
+
REMARK 200 COMPLETENESS FOR SHELL (%) : 100.0
|
| 173 |
+
REMARK 200 DATA REDUNDANCY IN SHELL : NULL
|
| 174 |
+
REMARK 200 R MERGE FOR SHELL (I) : 0.34400
|
| 175 |
+
REMARK 200 R SYM FOR SHELL (I) : NULL
|
| 176 |
+
REMARK 200 <I/SIGMA(I)> FOR SHELL : 5.000
|
| 177 |
+
REMARK 200
|
| 178 |
+
REMARK 200 DIFFRACTION PROTOCOL: SAD
|
| 179 |
+
REMARK 200 METHOD USED TO DETERMINE THE STRUCTURE: SAD
|
| 180 |
+
REMARK 200 SOFTWARE USED: CNS
|
| 181 |
+
REMARK 200 STARTING MODEL: NULL
|
| 182 |
+
REMARK 200
|
| 183 |
+
REMARK 200 REMARK: NULL
|
| 184 |
+
REMARK 280
|
| 185 |
+
REMARK 280 CRYSTAL
|
| 186 |
+
REMARK 280 SOLVENT CONTENT, VS (%): 42.94
|
| 187 |
+
REMARK 280 MATTHEWS COEFFICIENT, VM (ANGSTROMS**3/DA): 2.16
|
| 188 |
+
REMARK 280
|
| 189 |
+
REMARK 280 CRYSTALLIZATION CONDITIONS: 15-20% PEG3350 250MM AMMONIUM
|
| 190 |
+
REMARK 280 FORMATE, PH 6.6, VAPOR DIFFUSION, HANGING DROP, STREAK
|
| 191 |
+
REMARK 280 SEEDING, TEMPERATURE 298K
|
| 192 |
+
REMARK 290
|
| 193 |
+
REMARK 290 CRYSTALLOGRAPHIC SYMMETRY
|
| 194 |
+
REMARK 290 SYMMETRY OPERATORS FOR SPACE GROUP: P 32 2 1
|
| 195 |
+
REMARK 290
|
| 196 |
+
REMARK 290 SYMOP SYMMETRY
|
| 197 |
+
REMARK 290 NNNMMM OPERATOR
|
| 198 |
+
REMARK 290 1555 X,Y,Z
|
| 199 |
+
REMARK 290 2555 -Y,X-Y,Z+2/3
|
| 200 |
+
REMARK 290 3555 -X+Y,-X,Z+1/3
|
| 201 |
+
REMARK 290 4555 Y,X,-Z
|
| 202 |
+
REMARK 290 5555 X-Y,-Y,-Z+1/3
|
| 203 |
+
REMARK 290 6555 -X,-X+Y,-Z+2/3
|
| 204 |
+
REMARK 290
|
| 205 |
+
REMARK 290 WHERE NNN -> OPERATOR NUMBER
|
| 206 |
+
REMARK 290 MMM -> TRANSLATION VECTOR
|
| 207 |
+
REMARK 290
|
| 208 |
+
REMARK 290 CRYSTALLOGRAPHIC SYMMETRY TRANSFORMATIONS
|
| 209 |
+
REMARK 290 THE FOLLOWING TRANSFORMATIONS OPERATE ON THE ATOM/HETATM
|
| 210 |
+
REMARK 290 RECORDS IN THIS ENTRY TO PRODUCE CRYSTALLOGRAPHICALLY
|
| 211 |
+
REMARK 290 RELATED MOLECULES.
|
| 212 |
+
REMARK 290 SMTRY1 1 1.000000 0.000000 0.000000 0.00000
|
| 213 |
+
REMARK 290 SMTRY2 1 0.000000 1.000000 0.000000 0.00000
|
| 214 |
+
REMARK 290 SMTRY3 1 0.000000 0.000000 1.000000 0.00000
|
| 215 |
+
REMARK 290 SMTRY1 2 -0.500000 -0.866025 0.000000 0.00000
|
| 216 |
+
REMARK 290 SMTRY2 2 0.866025 -0.500000 0.000000 0.00000
|
| 217 |
+
REMARK 290 SMTRY3 2 0.000000 0.000000 1.000000 93.70267
|
| 218 |
+
REMARK 290 SMTRY1 3 -0.500000 0.866025 0.000000 0.00000
|
| 219 |
+
REMARK 290 SMTRY2 3 -0.866025 -0.500000 0.000000 0.00000
|
| 220 |
+
REMARK 290 SMTRY3 3 0.000000 0.000000 1.000000 46.85133
|
| 221 |
+
REMARK 290 SMTRY1 4 -0.500000 0.866025 0.000000 0.00000
|
| 222 |
+
REMARK 290 SMTRY2 4 0.866025 0.500000 0.000000 0.00000
|
| 223 |
+
REMARK 290 SMTRY3 4 0.000000 0.000000 -1.000000 0.00000
|
| 224 |
+
REMARK 290 SMTRY1 5 1.000000 0.000000 0.000000 0.00000
|
| 225 |
+
REMARK 290 SMTRY2 5 0.000000 -1.000000 0.000000 0.00000
|
| 226 |
+
REMARK 290 SMTRY3 5 0.000000 0.000000 -1.000000 46.85133
|
| 227 |
+
REMARK 290 SMTRY1 6 -0.500000 -0.866025 0.000000 0.00000
|
| 228 |
+
REMARK 290 SMTRY2 6 -0.866025 0.500000 0.000000 0.00000
|
| 229 |
+
REMARK 290 SMTRY3 6 0.000000 0.000000 -1.000000 93.70267
|
| 230 |
+
REMARK 290
|
| 231 |
+
REMARK 290 REMARK: NULL
|
| 232 |
+
REMARK 300
|
| 233 |
+
REMARK 300 BIOMOLECULE: 1
|
| 234 |
+
REMARK 300 SEE REMARK 350 FOR THE AUTHOR PROVIDED AND/OR PROGRAM
|
| 235 |
+
REMARK 300 GENERATED ASSEMBLY INFORMATION FOR THE STRUCTURE IN
|
| 236 |
+
REMARK 300 THIS ENTRY. THE REMARK MAY ALSO PROVIDE INFORMATION ON
|
| 237 |
+
REMARK 300 BURIED SURFACE AREA.
|
| 238 |
+
REMARK 350
|
| 239 |
+
REMARK 350 COORDINATES FOR A COMPLETE MULTIMER REPRESENTING THE KNOWN
|
| 240 |
+
REMARK 350 BIOLOGICALLY SIGNIFICANT OLIGOMERIZATION STATE OF THE
|
| 241 |
+
REMARK 350 MOLECULE CAN BE GENERATED BY APPLYING BIOMT TRANSFORMATIONS
|
| 242 |
+
REMARK 350 GIVEN BELOW. BOTH NON-CRYSTALLOGRAPHIC AND
|
| 243 |
+
REMARK 350 CRYSTALLOGRAPHIC OPERATIONS ARE GIVEN.
|
| 244 |
+
REMARK 350
|
| 245 |
+
REMARK 350 BIOMOLECULE: 1
|
| 246 |
+
REMARK 350 AUTHOR DETERMINED BIOLOGICAL UNIT: MONOMERIC
|
| 247 |
+
REMARK 350 APPLY THE FOLLOWING TO CHAINS: A
|
| 248 |
+
REMARK 350 BIOMT1 1 1.000000 0.000000 0.000000 0.00000
|
| 249 |
+
REMARK 350 BIOMT2 1 0.000000 1.000000 0.000000 0.00000
|
| 250 |
+
REMARK 350 BIOMT3 1 0.000000 0.000000 1.000000 0.00000
|
| 251 |
+
REMARK 465
|
| 252 |
+
REMARK 465 MISSING RESIDUES
|
| 253 |
+
REMARK 465 THE FOLLOWING RESIDUES WERE NOT LOCATED IN THE
|
| 254 |
+
REMARK 465 EXPERIMENT. (M=MODEL NUMBER; RES=RESIDUE NAME; C=CHAIN
|
| 255 |
+
REMARK 465 IDENTIFIER; SSSEQ=SEQUENCE NUMBER; I=INSERTION CODE.)
|
| 256 |
+
REMARK 465
|
| 257 |
+
REMARK 465 M RES C SSSEQI
|
| 258 |
+
REMARK 465 MSE A 1
|
| 259 |
+
REMARK 465 GLY A 2
|
| 260 |
+
REMARK 465 GLU A 95
|
| 261 |
+
REMARK 465 GLY A 96
|
| 262 |
+
REMARK 465 GLY A 97
|
| 263 |
+
REMARK 465 SER A 98
|
| 264 |
+
REMARK 465 LEU A 99
|
| 265 |
+
REMARK 465 GLU A 100
|
| 266 |
+
REMARK 465 HIS A 101
|
| 267 |
+
REMARK 465 HIS A 102
|
| 268 |
+
REMARK 465 HIS A 103
|
| 269 |
+
REMARK 465 HIS A 104
|
| 270 |
+
REMARK 465 HIS A 105
|
| 271 |
+
REMARK 465 HIS A 106
|
| 272 |
+
REMARK 470
|
| 273 |
+
REMARK 470 MISSING ATOM
|
| 274 |
+
REMARK 470 THE FOLLOWING RESIDUES HAVE MISSING ATOMS(M=MODEL NUMBER;
|
| 275 |
+
REMARK 470 RES=RESIDUE NAME; C=CHAIN IDENTIFIER; SSEQ=SEQUENCE NUMBER;
|
| 276 |
+
REMARK 470 I=INSERTION CODE):
|
| 277 |
+
REMARK 470 M RES CSSEQI ATOMS
|
| 278 |
+
REMARK 470 LYS A 15 CG CD CE NZ
|
| 279 |
+
REMARK 470 PHE A 17 CG CD1 CD2 CE1 CE2 CZ
|
| 280 |
+
REMARK 470 SER A 27 OG
|
| 281 |
+
REMARK 470 GLN A 30 CG CD OE1 NE2
|
| 282 |
+
REMARK 470 LYS A 31 CG CD CE NZ
|
| 283 |
+
REMARK 470 ASN A 34 CG OD1 ND2
|
| 284 |
+
REMARK 470 LEU A 36 CG CD1 CD2
|
| 285 |
+
REMARK 470 LYS A 46 CG CD CE NZ
|
| 286 |
+
REMARK 470 ARG A 47 CG CD NE CZ NH1 NH2
|
| 287 |
+
REMARK 470 ARG A 55 CG CD NE CZ NH1 NH2
|
| 288 |
+
REMARK 470 LYS A 62 CG CD CE NZ
|
| 289 |
+
REMARK 470 GLU A 73 CG CD OE1 OE2
|
| 290 |
+
REMARK 500
|
| 291 |
+
REMARK 500 GEOMETRY AND STEREOCHEMISTRY
|
| 292 |
+
REMARK 500 SUBTOPIC: CLOSE CONTACTS
|
| 293 |
+
REMARK 500
|
| 294 |
+
REMARK 500 THE FOLLOWING ATOMS THAT ARE RELATED BY CRYSTALLOGRAPHIC
|
| 295 |
+
REMARK 500 SYMMETRY ARE IN CLOSE CONTACT. AN ATOM LOCATED WITHIN 0.15
|
| 296 |
+
REMARK 500 ANGSTROMS OF A SYMMETRY RELATED ATOM IS ASSUMED TO BE ON A
|
| 297 |
+
REMARK 500 SPECIAL POSITION AND IS, THEREFORE, LISTED IN REMARK 375
|
| 298 |
+
REMARK 500 INSTEAD OF REMARK 500. ATOMS WITH NON-BLANK ALTERNATE
|
| 299 |
+
REMARK 500 LOCATION INDICATORS ARE NOT INCLUDED IN THE CALCULATIONS.
|
| 300 |
+
REMARK 500
|
| 301 |
+
REMARK 500 DISTANCE CUTOFF:
|
| 302 |
+
REMARK 500 2.2 ANGSTROMS FOR CONTACTS NOT INVOLVING HYDROGEN ATOMS
|
| 303 |
+
REMARK 500 1.6 ANGSTROMS FOR CONTACTS INVOLVING HYDROGEN ATOMS
|
| 304 |
+
REMARK 500
|
| 305 |
+
REMARK 500 ATM1 RES C SSEQI ATM2 RES C SSEQI SSYMOP DISTANCE
|
| 306 |
+
REMARK 500 ND2 ASN A 80 ND2 ASN A 80 4555 1.96
|
| 307 |
+
REMARK 500 CD1 ILE A 68 CD1 ILE A 68 4555 1.98
|
| 308 |
+
REMARK 500
|
| 309 |
+
REMARK 500 REMARK: NULL
|
| 310 |
+
REMARK 500
|
| 311 |
+
REMARK 500 GEOMETRY AND STEREOCHEMISTRY
|
| 312 |
+
REMARK 500 SUBTOPIC: TORSION ANGLES
|
| 313 |
+
REMARK 500
|
| 314 |
+
REMARK 500 TORSION ANGLES OUTSIDE THE EXPECTED RAMACHANDRAN REGIONS:
|
| 315 |
+
REMARK 500 (M=MODEL NUMBER; RES=RESIDUE NAME; C=CHAIN IDENTIFIER;
|
| 316 |
+
REMARK 500 SSEQ=SEQUENCE NUMBER; I=INSERTION CODE).
|
| 317 |
+
REMARK 500
|
| 318 |
+
REMARK 500 STANDARD TABLE:
|
| 319 |
+
REMARK 500 FORMAT:(10X,I3,1X,A3,1X,A1,I4,A1,4X,F7.2,3X,F7.2)
|
| 320 |
+
REMARK 500
|
| 321 |
+
REMARK 500 EXPECTED VALUES: GJ KLEYWEGT AND TA JONES (1996). PHI/PSI-
|
| 322 |
+
REMARK 500 CHOLOGY: RAMACHANDRAN REVISITED. STRUCTURE 4, 1395 - 1400
|
| 323 |
+
REMARK 500
|
| 324 |
+
REMARK 500 M RES CSSEQI PSI PHI
|
| 325 |
+
REMARK 500 ASP A 12 80.22 -168.83
|
| 326 |
+
REMARK 500 ASN A 13 102.49 43.86
|
| 327 |
+
REMARK 500 THR A 24 81.00 -158.71
|
| 328 |
+
REMARK 500 THR A 25 -36.94 -176.78
|
| 329 |
+
REMARK 500 GLU A 26 -7.45 68.87
|
| 330 |
+
REMARK 500
|
| 331 |
+
REMARK 500 REMARK: NULL
|
| 332 |
+
DBREF 1QYS A 1 106 PDB 1QYS 1QYS 1 106
|
| 333 |
+
SEQRES 1 A 106 MSE GLY ASP ILE GLN VAL GLN VAL ASN ILE ASP ASP ASN
|
| 334 |
+
SEQRES 2 A 106 GLY LYS ASN PHE ASP TYR THR TYR THR VAL THR THR GLU
|
| 335 |
+
SEQRES 3 A 106 SER GLU LEU GLN LYS VAL LEU ASN GLU LEU MSE ASP TYR
|
| 336 |
+
SEQRES 4 A 106 ILE LYS LYS GLN GLY ALA LYS ARG VAL ARG ILE SER ILE
|
| 337 |
+
SEQRES 5 A 106 THR ALA ARG THR LYS LYS GLU ALA GLU LYS PHE ALA ALA
|
| 338 |
+
SEQRES 6 A 106 ILE LEU ILE LYS VAL PHE ALA GLU LEU GLY TYR ASN ASP
|
| 339 |
+
SEQRES 7 A 106 ILE ASN VAL THR PHE ASP GLY ASP THR VAL THR VAL GLU
|
| 340 |
+
SEQRES 8 A 106 GLY GLN LEU GLU GLY GLY SER LEU GLU HIS HIS HIS HIS
|
| 341 |
+
SEQRES 9 A 106 HIS HIS
|
| 342 |
+
MODRES 1QYS MSE A 37 MET SELENOMETHIONINE
|
| 343 |
+
HET MSE A 37 8
|
| 344 |
+
HETNAM MSE SELENOMETHIONINE
|
| 345 |
+
FORMUL 1 MSE C5 H11 N O2 SE
|
| 346 |
+
FORMUL 2 HOH *7(H2 O)
|
| 347 |
+
HELIX 1 1 SER A 27 GLY A 44 1 18
|
| 348 |
+
HELIX 2 2 THR A 56 LEU A 74 1 19
|
| 349 |
+
SHEET 1 A 5 ASN A 16 VAL A 23 0
|
| 350 |
+
SHEET 2 A 5 ILE A 4 ASP A 11 -1 N VAL A 8 O TYR A 19
|
| 351 |
+
SHEET 3 A 5 ARG A 47 THR A 53 -1 O ARG A 49 N ASN A 9
|
| 352 |
+
SHEET 4 A 5 THR A 87 GLN A 93 -1 O GLY A 92 N VAL A 48
|
| 353 |
+
SHEET 5 A 5 ASP A 78 ASP A 84 -1 N THR A 82 O THR A 89
|
| 354 |
+
LINK C LEU A 36 N MSE A 37 1555 1555 1.33
|
| 355 |
+
LINK C MSE A 37 N ASP A 38 1555 1555 1.33
|
| 356 |
+
CRYST1 35.900 35.900 140.554 90.00 90.00 120.00 P 32 2 1 6
|
| 357 |
+
ORIGX1 1.000000 0.000000 0.000000 0.00000
|
| 358 |
+
ORIGX2 0.000000 1.000000 0.000000 0.00000
|
| 359 |
+
ORIGX3 0.000000 0.000000 1.000000 0.00000
|
| 360 |
+
SCALE1 0.027855 0.016082 0.000000 0.00000
|
| 361 |
+
SCALE2 0.000000 0.032164 0.000000 0.00000
|
| 362 |
+
SCALE3 0.000000 0.000000 0.007115 0.00000
|
| 363 |
+
ATOM 1 N ASP A 3 -4.522 18.306 17.409 1.00174.51 N
|
| 364 |
+
ATOM 2 CA ASP A 3 -3.061 18.228 17.122 1.00174.51 C
|
| 365 |
+
ATOM 3 C ASP A 3 -2.664 16.993 16.324 1.00174.51 C
|
| 366 |
+
ATOM 4 O ASP A 3 -3.515 16.306 15.754 1.00174.51 O
|
| 367 |
+
ATOM 5 CB ASP A 3 -2.261 18.246 18.422 1.00 83.84 C
|
| 368 |
+
ATOM 6 CG ASP A 3 -1.658 19.600 18.711 1.00 83.84 C
|
| 369 |
+
ATOM 7 OD1 ASP A 3 -1.169 20.249 17.760 1.00 83.84 O
|
| 370 |
+
ATOM 8 OD2 ASP A 3 -1.654 20.007 19.892 1.00 83.84 O
|
| 371 |
+
ATOM 9 N ILE A 4 -1.360 16.714 16.297 1.00 57.73 N
|
| 372 |
+
ATOM 10 CA ILE A 4 -0.823 15.562 15.568 1.00 57.73 C
|
| 373 |
+
ATOM 11 C ILE A 4 -0.721 14.309 16.433 1.00 57.73 C
|
| 374 |
+
ATOM 12 O ILE A 4 0.091 14.222 17.355 1.00 57.73 O
|
| 375 |
+
ATOM 13 CB ILE A 4 0.555 15.888 14.980 1.00 57.14 C
|
| 376 |
+
ATOM 14 CG1 ILE A 4 0.425 17.108 14.058 1.00 57.14 C
|
| 377 |
+
ATOM 15 CG2 ILE A 4 1.097 14.674 14.218 1.00 57.14 C
|
| 378 |
+
ATOM 16 CD1 ILE A 4 1.737 17.831 13.766 1.00 57.14 C
|
| 379 |
+
ATOM 17 N GLN A 5 -1.567 13.342 16.105 1.00 49.21 N
|
| 380 |
+
ATOM 18 CA GLN A 5 -1.632 12.078 16.814 1.00 49.21 C
|
| 381 |
+
ATOM 19 C GLN A 5 -0.907 10.950 16.066 1.00 49.21 C
|
| 382 |
+
ATOM 20 O GLN A 5 -1.306 10.567 14.965 1.00 84.12 O
|
| 383 |
+
ATOM 21 CB GLN A 5 -3.095 11.691 17.017 1.00 87.59 C
|
| 384 |
+
ATOM 22 CG GLN A 5 -3.284 10.472 17.883 1.00 87.59 C
|
| 385 |
+
ATOM 23 CD GLN A 5 -2.740 10.671 19.282 1.00 87.59 C
|
| 386 |
+
ATOM 24 OE1 GLN A 5 -2.801 9.770 20.107 1.00 87.59 O
|
| 387 |
+
ATOM 25 NE2 GLN A 5 -2.209 11.857 19.556 1.00 87.59 N
|
| 388 |
+
ATOM 26 N VAL A 6 0.151 10.426 16.683 1.00 61.01 N
|
| 389 |
+
ATOM 27 CA VAL A 6 0.937 9.342 16.107 1.00 61.01 C
|
| 390 |
+
ATOM 28 C VAL A 6 0.671 8.008 16.803 1.00 61.01 C
|
| 391 |
+
ATOM 29 O VAL A 6 0.957 7.837 17.983 1.00 61.01 O
|
| 392 |
+
ATOM 30 CB VAL A 6 2.439 9.624 16.196 1.00 50.93 C
|
| 393 |
+
ATOM 31 CG1 VAL A 6 3.199 8.503 15.531 1.00 50.93 C
|
| 394 |
+
ATOM 32 CG2 VAL A 6 2.772 10.922 15.516 1.00 50.93 C
|
| 395 |
+
ATOM 33 N GLN A 7 0.118 7.066 16.055 1.00 44.88 N
|
| 396 |
+
ATOM 34 CA GLN A 7 -0.196 5.735 16.561 1.00 44.88 C
|
| 397 |
+
ATOM 35 C GLN A 7 0.719 4.713 15.881 1.00 44.88 C
|
| 398 |
+
ATOM 36 O GLN A 7 0.658 4.513 14.674 1.00 44.88 O
|
| 399 |
+
ATOM 37 CB GLN A 7 -1.658 5.390 16.264 1.00 83.92 C
|
| 400 |
+
ATOM 38 CG GLN A 7 -2.534 5.302 17.485 1.00 83.92 C
|
| 401 |
+
ATOM 39 CD GLN A 7 -2.119 4.173 18.412 1.00 83.92 C
|
| 402 |
+
ATOM 40 OE1 GLN A 7 -0.990 4.138 18.905 1.00 83.92 O
|
| 403 |
+
ATOM 41 NE2 GLN A 7 -3.031 3.241 18.653 1.00 83.92 N
|
| 404 |
+
ATOM 42 N VAL A 8 1.578 4.084 16.673 1.00 45.42 N
|
| 405 |
+
ATOM 43 CA VAL A 8 2.499 3.068 16.186 1.00 45.42 C
|
| 406 |
+
ATOM 44 C VAL A 8 2.103 1.700 16.756 1.00 45.42 C
|
| 407 |
+
ATOM 45 O VAL A 8 2.114 1.508 17.966 1.00 45.42 O
|
| 408 |
+
ATOM 46 CB VAL A 8 3.945 3.377 16.613 1.00 41.58 C
|
| 409 |
+
ATOM 47 CG1 VAL A 8 4.867 2.293 16.086 1.00 41.58 C
|
| 410 |
+
ATOM 48 CG2 VAL A 8 4.375 4.731 16.083 1.00 41.58 C
|
| 411 |
+
ATOM 49 N ASN A 9 1.746 0.755 15.891 1.00 56.60 N
|
| 412 |
+
ATOM 50 CA ASN A 9 1.357 -0.569 16.361 1.00 56.60 C
|
| 413 |
+
ATOM 51 C ASN A 9 2.224 -1.684 15.748 1.00 56.60 C
|
| 414 |
+
ATOM 52 O ASN A 9 2.140 -1.992 14.559 1.00 56.60 O
|
| 415 |
+
ATOM 53 CB ASN A 9 -0.119 -0.818 16.065 1.00105.47 C
|
| 416 |
+
ATOM 54 CG ASN A 9 -0.823 -1.519 17.208 1.00105.47 C
|
| 417 |
+
ATOM 55 OD1 ASN A 9 -1.281 -0.879 18.165 1.00105.47 O
|
| 418 |
+
ATOM 56 ND2 ASN A 9 -0.887 -2.850 17.133 1.00105.47 N
|
| 419 |
+
ATOM 57 N ILE A 10 3.073 -2.269 16.587 1.00 40.88 N
|
| 420 |
+
ATOM 58 CA ILE A 10 3.976 -3.337 16.187 1.00 40.88 C
|
| 421 |
+
ATOM 59 C ILE A 10 3.531 -4.697 16.730 1.00 40.88 C
|
| 422 |
+
ATOM 60 O ILE A 10 3.465 -4.900 17.944 1.00 70.73 O
|
| 423 |
+
ATOM 61 CB ILE A 10 5.399 -3.068 16.702 1.00 61.80 C
|
| 424 |
+
ATOM 62 CG1 ILE A 10 5.870 -1.693 16.253 1.00 61.80 C
|
| 425 |
+
ATOM 63 CG2 ILE A 10 6.343 -4.127 16.180 1.00 61.80 C
|
| 426 |
+
ATOM 64 CD1 ILE A 10 7.241 -1.341 16.788 1.00 61.80 C
|
| 427 |
+
ATOM 65 N ASP A 11 3.225 -5.621 15.824 1.00 68.81 N
|
| 428 |
+
ATOM 66 CA ASP A 11 2.802 -6.960 16.220 1.00 68.81 C
|
| 429 |
+
ATOM 67 C ASP A 11 3.892 -7.970 15.878 1.00 68.81 C
|
| 430 |
+
ATOM 68 O ASP A 11 4.569 -7.850 14.850 1.00 68.81 O
|
| 431 |
+
ATOM 69 CB ASP A 11 1.498 -7.342 15.537 1.00114.14 C
|
| 432 |
+
ATOM 70 CG ASP A 11 0.590 -8.125 16.449 1.00114.14 C
|
| 433 |
+
ATOM 71 OD1 ASP A 11 1.008 -9.205 16.916 1.00114.14 O
|
| 434 |
+
ATOM 72 OD2 ASP A 11 -0.534 -7.651 16.712 1.00114.14 O
|
| 435 |
+
ATOM 73 N ASP A 12 4.055 -8.971 16.737 1.00 70.35 N
|
| 436 |
+
ATOM 74 CA ASP A 12 5.107 -9.950 16.527 1.00 70.35 C
|
| 437 |
+
ATOM 75 C ASP A 12 4.970 -11.157 17.446 1.00 70.35 C
|
| 438 |
+
ATOM 76 O ASP A 12 5.649 -11.243 18.468 1.00 70.35 O
|
| 439 |
+
ATOM 77 CB ASP A 12 6.462 -9.264 16.752 1.00 53.31 C
|
| 440 |
+
ATOM 78 CG ASP A 12 7.632 -10.096 16.286 1.00 53.31 C
|
| 441 |
+
ATOM 79 OD1 ASP A 12 7.496 -10.774 15.243 1.00 53.31 O
|
| 442 |
+
ATOM 80 OD2 ASP A 12 8.697 -10.045 16.944 1.00 53.31 O
|
| 443 |
+
ATOM 81 N ASN A 13 4.090 -12.081 17.079 1.00 96.17 N
|
| 444 |
+
ATOM 82 CA ASN A 13 3.876 -13.307 17.848 1.00 96.17 C
|
| 445 |
+
ATOM 83 C ASN A 13 3.792 -13.129 19.361 1.00 96.17 C
|
| 446 |
+
ATOM 84 O ASN A 13 4.817 -12.980 20.028 1.00 96.17 O
|
| 447 |
+
ATOM 85 CB ASN A 13 4.988 -14.315 17.550 1.00100.93 C
|
| 448 |
+
ATOM 86 CG ASN A 13 5.349 -14.363 16.087 1.00100.93 C
|
| 449 |
+
ATOM 87 OD1 ASN A 13 5.977 -13.444 15.562 1.00100.93 O
|
| 450 |
+
ATOM 88 ND2 ASN A 13 4.947 -15.434 15.413 1.00100.93 N
|
| 451 |
+
ATOM 89 N GLY A 14 2.572 -13.164 19.895 1.00130.92 N
|
| 452 |
+
ATOM 90 CA GLY A 14 2.371 -13.029 21.330 1.00130.92 C
|
| 453 |
+
ATOM 91 C GLY A 14 2.938 -11.774 21.965 1.00130.92 C
|
| 454 |
+
ATOM 92 O GLY A 14 3.099 -11.711 23.185 1.00130.92 O
|
| 455 |
+
ATOM 93 N LYS A 15 3.245 -10.775 21.143 1.00 68.27 N
|
| 456 |
+
ATOM 94 CA LYS A 15 3.790 -9.520 21.640 1.00 68.27 C
|
| 457 |
+
ATOM 95 C LYS A 15 3.313 -8.363 20.774 1.00 68.27 C
|
| 458 |
+
ATOM 96 O LYS A 15 3.754 -8.207 19.639 1.00 68.27 O
|
| 459 |
+
ATOM 97 CB LYS A 15 5.329 -9.570 21.663 1.00 55.99 C
|
| 460 |
+
ATOM 98 N ASN A 16 2.400 -7.560 21.313 1.00 54.52 N
|
| 461 |
+
ATOM 99 CA ASN A 16 1.872 -6.404 20.600 1.00 54.52 C
|
| 462 |
+
ATOM 100 C ASN A 16 2.268 -5.109 21.338 1.00 54.52 C
|
| 463 |
+
ATOM 101 O ASN A 16 2.022 -4.958 22.538 1.00 54.52 O
|
| 464 |
+
ATOM 102 CB ASN A 16 0.347 -6.516 20.481 1.00102.09 C
|
| 465 |
+
ATOM 103 CG ASN A 16 -0.260 -5.401 19.643 1.00102.09 C
|
| 466 |
+
ATOM 104 OD1 ASN A 16 0.179 -5.140 18.522 1.00102.09 O
|
| 467 |
+
ATOM 105 ND2 ASN A 16 -1.284 -4.745 20.181 1.00102.09 N
|
| 468 |
+
ATOM 106 N PHE A 17 2.902 -4.187 20.617 1.00 42.25 N
|
| 469 |
+
ATOM 107 CA PHE A 17 3.318 -2.920 21.197 1.00 42.25 C
|
| 470 |
+
ATOM 108 C PHE A 17 2.488 -1.820 20.560 1.00 42.25 C
|
| 471 |
+
ATOM 109 O PHE A 17 2.326 -1.787 19.346 1.00 42.25 O
|
| 472 |
+
ATOM 110 CB PHE A 17 4.810 -2.682 20.947 1.00 34.85 C
|
| 473 |
+
ATOM 111 N ASP A 18 1.947 -0.934 21.394 1.00 45.89 N
|
| 474 |
+
ATOM 112 CA ASP A 18 1.124 0.181 20.939 1.00 45.89 C
|
| 475 |
+
ATOM 113 C ASP A 18 1.671 1.527 21.481 1.00 45.89 C
|
| 476 |
+
ATOM 114 O ASP A 18 1.496 1.855 22.652 1.00 45.89 O
|
| 477 |
+
ATOM 115 CB ASP A 18 -0.310 -0.037 21.406 1.00 89.81 C
|
| 478 |
+
ATOM 116 CG ASP A 18 -1.254 0.966 20.813 1.00 89.81 C
|
| 479 |
+
ATOM 117 OD1 ASP A 18 -1.419 0.953 19.573 1.00 89.81 O
|
| 480 |
+
ATOM 118 OD2 ASP A 18 -1.816 1.782 21.577 1.00 89.81 O
|
| 481 |
+
ATOM 119 N TYR A 19 2.343 2.290 20.623 1.00 43.94 N
|
| 482 |
+
ATOM 120 CA TYR A 19 2.936 3.578 20.999 1.00 43.94 C
|
| 483 |
+
ATOM 121 C TYR A 19 2.048 4.728 20.530 1.00 43.94 C
|
| 484 |
+
ATOM 122 O TYR A 19 1.694 4.814 19.360 1.00 78.71 O
|
| 485 |
+
ATOM 123 CB TYR A 19 4.329 3.734 20.373 1.00 87.94 C
|
| 486 |
+
ATOM 124 CG TYR A 19 5.347 2.679 20.778 1.00 87.94 C
|
| 487 |
+
ATOM 125 CD1 TYR A 19 6.083 2.805 21.954 1.00 87.94 C
|
| 488 |
+
ATOM 126 CD2 TYR A 19 5.578 1.553 19.977 1.00 87.94 C
|
| 489 |
+
ATOM 127 CE1 TYR A 19 7.029 1.837 22.327 1.00 87.94 C
|
| 490 |
+
ATOM 128 CE2 TYR A 19 6.521 0.577 20.342 1.00 87.94 C
|
| 491 |
+
ATOM 129 CZ TYR A 19 7.243 0.728 21.518 1.00 87.94 C
|
| 492 |
+
ATOM 130 OH TYR A 19 8.180 -0.218 21.886 1.00 87.94 O
|
| 493 |
+
ATOM 131 N THR A 20 1.691 5.609 21.457 1.00 50.11 N
|
| 494 |
+
ATOM 132 CA THR A 20 0.857 6.756 21.147 1.00 50.11 C
|
| 495 |
+
ATOM 133 C THR A 20 1.589 8.007 21.589 1.00 50.11 C
|
| 496 |
+
ATOM 134 O THR A 20 1.996 8.119 22.746 1.00 50.11 O
|
| 497 |
+
ATOM 135 CB THR A 20 -0.458 6.683 21.889 1.00 57.60 C
|
| 498 |
+
ATOM 136 OG1 THR A 20 -0.954 5.345 21.830 1.00 57.60 O
|
| 499 |
+
ATOM 137 CG2 THR A 20 -1.468 7.592 21.246 1.00 57.60 C
|
| 500 |
+
ATOM 138 N TYR A 21 1.784 8.929 20.649 1.00 57.65 N
|
| 501 |
+
ATOM 139 CA TYR A 21 2.468 10.196 20.916 1.00 57.65 C
|
| 502 |
+
ATOM 140 C TYR A 21 1.581 11.325 20.413 1.00 57.65 C
|
| 503 |
+
ATOM 141 O TYR A 21 0.683 11.120 19.599 1.00 57.65 O
|
| 504 |
+
ATOM 142 CB TYR A 21 3.799 10.331 20.154 1.00 63.74 C
|
| 505 |
+
ATOM 143 CG TYR A 21 4.810 9.204 20.258 1.00 63.74 C
|
| 506 |
+
ATOM 144 CD1 TYR A 21 4.560 7.953 19.684 1.00 63.74 C
|
| 507 |
+
ATOM 145 CD2 TYR A 21 6.060 9.422 20.845 1.00 63.74 C
|
| 508 |
+
ATOM 146 CE1 TYR A 21 5.525 6.959 19.691 1.00 63.74 C
|
| 509 |
+
ATOM 147 CE2 TYR A 21 7.031 8.434 20.854 1.00 63.74 C
|
| 510 |
+
ATOM 148 CZ TYR A 21 6.759 7.209 20.271 1.00 63.74 C
|
| 511 |
+
ATOM 149 OH TYR A 21 7.735 6.240 20.243 1.00 63.74 O
|
| 512 |
+
ATOM 150 N THR A 22 1.867 12.525 20.893 1.00 67.33 N
|
| 513 |
+
ATOM 151 CA THR A 22 1.136 13.706 20.489 1.00 67.33 C
|
| 514 |
+
ATOM 152 C THR A 22 2.205 14.758 20.356 1.00 67.33 C
|
| 515 |
+
ATOM 153 O THR A 22 2.833 15.129 21.342 1.00 67.33 O
|
| 516 |
+
ATOM 154 CB THR A 22 0.144 14.146 21.558 1.00 65.03 C
|
| 517 |
+
ATOM 155 OG1 THR A 22 -0.589 13.007 22.026 1.00 65.03 O
|
| 518 |
+
ATOM 156 CG2 THR A 22 -0.826 15.159 20.984 1.00 65.03 C
|
| 519 |
+
ATOM 157 N VAL A 23 2.444 15.212 19.135 1.00 71.70 N
|
| 520 |
+
ATOM 158 CA VAL A 23 3.462 16.223 18.921 1.00 71.70 C
|
| 521 |
+
ATOM 159 C VAL A 23 2.881 17.499 18.343 1.00 71.70 C
|
| 522 |
+
ATOM 160 O VAL A 23 1.714 17.547 17.935 1.00 71.70 O
|
| 523 |
+
ATOM 161 CB VAL A 23 4.574 15.719 17.970 1.00 70.78 C
|
| 524 |
+
ATOM 162 CG1 VAL A 23 5.298 14.540 18.591 1.00 70.78 C
|
| 525 |
+
ATOM 163 CG2 VAL A 23 3.976 15.342 16.638 1.00 70.78 C
|
| 526 |
+
ATOM 164 N THR A 24 3.717 18.531 18.327 1.00 83.96 N
|
| 527 |
+
ATOM 165 CA THR A 24 3.369 19.839 17.793 1.00 83.96 C
|
| 528 |
+
ATOM 166 C THR A 24 4.686 20.523 17.473 1.00 83.96 C
|
| 529 |
+
ATOM 167 O THR A 24 5.175 21.315 18.270 1.00 83.96 O
|
| 530 |
+
ATOM 168 CB THR A 24 2.604 20.696 18.831 1.00 95.26 C
|
| 531 |
+
ATOM 169 OG1 THR A 24 1.323 20.110 19.084 1.00 95.26 O
|
| 532 |
+
ATOM 170 CG2 THR A 24 2.399 22.114 18.317 1.00 95.26 C
|
| 533 |
+
ATOM 171 N THR A 25 5.280 20.203 16.327 1.00136.13 N
|
| 534 |
+
ATOM 172 CA THR A 25 6.552 20.818 15.953 1.00136.13 C
|
| 535 |
+
ATOM 173 C THR A 25 7.033 20.385 14.576 1.00136.13 C
|
| 536 |
+
ATOM 174 O THR A 25 7.608 21.179 13.834 1.00136.13 O
|
| 537 |
+
ATOM 175 CB THR A 25 7.703 20.449 16.943 1.00146.88 C
|
| 538 |
+
ATOM 176 OG1 THR A 25 7.172 20.180 18.244 1.00146.88 O
|
| 539 |
+
ATOM 177 CG2 THR A 25 8.697 21.598 17.058 1.00146.88 C
|
| 540 |
+
ATOM 178 N GLU A 26 6.796 19.119 14.247 1.00187.15 N
|
| 541 |
+
ATOM 179 CA GLU A 26 7.267 18.538 12.994 1.00187.15 C
|
| 542 |
+
ATOM 180 C GLU A 26 8.782 18.481 13.170 1.00187.15 C
|
| 543 |
+
ATOM 181 O GLU A 26 9.508 17.917 12.351 1.00187.15 O
|
| 544 |
+
ATOM 182 CB GLU A 26 6.892 19.396 11.781 1.00134.71 C
|
| 545 |
+
ATOM 183 CG GLU A 26 7.383 18.807 10.458 1.00 97.04 C
|
| 546 |
+
ATOM 184 CD GLU A 26 6.713 19.422 9.243 1.00 97.04 C
|
| 547 |
+
ATOM 185 OE1 GLU A 26 6.740 20.662 9.115 1.00 97.04 O
|
| 548 |
+
ATOM 186 OE2 GLU A 26 6.165 18.662 8.416 1.00 97.04 O
|
| 549 |
+
ATOM 187 N SER A 27 9.234 19.085 14.266 1.00114.54 N
|
| 550 |
+
ATOM 188 CA SER A 27 10.637 19.110 14.647 1.00114.54 C
|
| 551 |
+
ATOM 189 C SER A 27 10.764 18.025 15.711 1.00114.54 C
|
| 552 |
+
ATOM 190 O SER A 27 11.634 17.158 15.624 1.00114.54 O
|
| 553 |
+
ATOM 191 CB SER A 27 11.008 20.463 15.229 1.00116.53 C
|
| 554 |
+
ATOM 192 N GLU A 28 9.885 18.071 16.713 1.00113.18 N
|
| 555 |
+
ATOM 193 CA GLU A 28 9.900 17.055 17.762 1.00113.18 C
|
| 556 |
+
ATOM 194 C GLU A 28 9.258 15.810 17.168 1.00113.18 C
|
| 557 |
+
ATOM 195 O GLU A 28 9.094 14.794 17.842 1.00200.03 O
|
| 558 |
+
ATOM 196 CB GLU A 28 9.116 17.505 19.003 1.00112.19 C
|
| 559 |
+
ATOM 197 CG GLU A 28 7.596 17.557 18.841 1.00112.19 C
|
| 560 |
+
ATOM 198 CD GLU A 28 6.879 17.960 20.129 1.00112.19 C
|
| 561 |
+
ATOM 199 OE1 GLU A 28 5.778 18.547 20.047 1.00112.19 O
|
| 562 |
+
ATOM 200 OE2 GLU A 28 7.407 17.679 21.226 1.00112.19 O
|
| 563 |
+
ATOM 201 N LEU A 29 8.883 15.919 15.895 1.00 97.20 N
|
| 564 |
+
ATOM 202 CA LEU A 29 8.286 14.820 15.147 1.00 97.20 C
|
| 565 |
+
ATOM 203 C LEU A 29 9.475 14.012 14.649 1.00 97.20 C
|
| 566 |
+
ATOM 204 O LEU A 29 9.456 12.784 14.643 1.00 97.20 O
|
| 567 |
+
ATOM 205 CB LEU A 29 7.493 15.350 13.947 1.00 66.59 C
|
| 568 |
+
ATOM 206 CG LEU A 29 6.452 14.423 13.296 1.00 66.59 C
|
| 569 |
+
ATOM 207 CD1 LEU A 29 6.087 14.961 11.915 1.00 66.59 C
|
| 570 |
+
ATOM 208 CD2 LEU A 29 6.997 13.012 13.162 1.00 66.59 C
|
| 571 |
+
ATOM 209 N GLN A 30 10.512 14.723 14.225 1.00113.13 N
|
| 572 |
+
ATOM 210 CA GLN A 30 11.724 14.081 13.747 1.00113.13 C
|
| 573 |
+
ATOM 211 C GLN A 30 12.310 13.296 14.916 1.00113.13 C
|
| 574 |
+
ATOM 212 O GLN A 30 13.031 12.315 14.725 1.00113.13 O
|
| 575 |
+
ATOM 213 CB GLN A 30 12.718 15.135 13.256 1.00 67.53 C
|
| 576 |
+
ATOM 214 N LYS A 31 11.984 13.738 16.128 1.00 75.23 N
|
| 577 |
+
ATOM 215 CA LYS A 31 12.465 13.094 17.348 1.00 75.23 C
|
| 578 |
+
ATOM 216 C LYS A 31 11.731 11.776 17.556 1.00 75.23 C
|
| 579 |
+
ATOM 217 O LYS A 31 12.331 10.751 17.887 1.00 75.23 O
|
| 580 |
+
ATOM 218 CB LYS A 31 12.247 14.016 18.550 1.00 80.64 C
|
| 581 |
+
ATOM 219 N VAL A 32 10.420 11.824 17.360 1.00 56.38 N
|
| 582 |
+
ATOM 220 CA VAL A 32 9.562 10.658 17.497 1.00 56.38 C
|
| 583 |
+
ATOM 221 C VAL A 32 9.898 9.703 16.364 1.00 56.38 C
|
| 584 |
+
ATOM 222 O VAL A 32 10.051 8.496 16.569 1.00 56.38 O
|
| 585 |
+
ATOM 223 CB VAL A 32 8.090 11.065 17.376 1.00 46.58 C
|
| 586 |
+
ATOM 224 CG1 VAL A 32 7.202 9.830 17.366 1.00 46.58 C
|
| 587 |
+
ATOM 225 CG2 VAL A 32 7.725 12.000 18.532 1.00 46.58 C
|
| 588 |
+
ATOM 226 N LEU A 33 10.016 10.262 15.162 1.00 55.92 N
|
| 589 |
+
ATOM 227 CA LEU A 33 10.340 9.470 13.992 1.00 55.92 C
|
| 590 |
+
ATOM 228 C LEU A 33 11.608 8.685 14.235 1.00 55.92 C
|
| 591 |
+
ATOM 229 O LEU A 33 11.579 7.454 14.286 1.00 55.92 O
|
| 592 |
+
ATOM 230 CB LEU A 33 10.523 10.363 12.773 1.00 52.98 C
|
| 593 |
+
ATOM 231 CG LEU A 33 9.242 10.835 12.080 1.00 52.98 C
|
| 594 |
+
ATOM 232 CD1 LEU A 33 9.641 11.471 10.750 1.00 52.98 C
|
| 595 |
+
ATOM 233 CD2 LEU A 33 8.273 9.666 11.846 1.00 52.98 C
|
| 596 |
+
ATOM 234 N ASN A 34 12.719 9.404 14.389 1.00 69.48 N
|
| 597 |
+
ATOM 235 CA ASN A 34 14.011 8.779 14.631 1.00 69.48 C
|
| 598 |
+
ATOM 236 C ASN A 34 13.870 7.727 15.722 1.00 69.48 C
|
| 599 |
+
ATOM 237 O ASN A 34 14.350 6.605 15.584 1.00 69.48 O
|
| 600 |
+
ATOM 238 CB ASN A 34 15.039 9.844 15.038 1.00 46.71 C
|
| 601 |
+
ATOM 239 N GLU A 35 13.180 8.098 16.795 1.00 62.44 N
|
| 602 |
+
ATOM 240 CA GLU A 35 12.972 7.212 17.938 1.00 62.44 C
|
| 603 |
+
ATOM 241 C GLU A 35 12.233 5.917 17.574 1.00 62.44 C
|
| 604 |
+
ATOM 242 O GLU A 35 12.580 4.830 18.057 1.00 62.44 O
|
| 605 |
+
ATOM 243 CB GLU A 35 12.207 7.956 19.039 1.00129.81 C
|
| 606 |
+
ATOM 244 CG GLU A 35 11.750 7.084 20.206 1.00114.46 C
|
| 607 |
+
ATOM 245 CD GLU A 35 11.028 7.870 21.289 1.00114.46 C
|
| 608 |
+
ATOM 246 OE1 GLU A 35 10.356 7.237 22.131 1.00114.46 O
|
| 609 |
+
ATOM 247 OE2 GLU A 35 11.141 9.116 21.298 1.00114.46 O
|
| 610 |
+
ATOM 248 N LEU A 36 11.213 6.021 16.730 1.00 59.14 N
|
| 611 |
+
ATOM 249 CA LEU A 36 10.469 4.828 16.342 1.00 59.14 C
|
| 612 |
+
ATOM 250 C LEU A 36 11.321 3.923 15.466 1.00 59.14 C
|
| 613 |
+
ATOM 251 O LEU A 36 11.229 2.702 15.544 1.00 59.14 O
|
| 614 |
+
ATOM 252 CB LEU A 36 9.217 5.227 15.613 1.00 61.28 C
|
| 615 |
+
HETATM 253 N MSE A 37 12.136 4.544 14.621 1.00 45.85 N
|
| 616 |
+
HETATM 254 CA MSE A 37 13.021 3.824 13.725 1.00 45.85 C
|
| 617 |
+
HETATM 255 C MSE A 37 13.869 2.835 14.511 1.00 45.85 C
|
| 618 |
+
HETATM 256 O MSE A 37 14.082 1.700 14.085 1.00 45.85 O
|
| 619 |
+
HETATM 257 CB MSE A 37 13.922 4.804 12.968 1.00 57.27 C
|
| 620 |
+
HETATM 258 CG MSE A 37 13.203 5.576 11.873 1.00 57.27 C
|
| 621 |
+
HETATM 259 SE MSE A 37 14.347 6.471 10.802 1.00 57.27 SE
|
| 622 |
+
HETATM 260 CE MSE A 37 14.638 5.266 9.472 1.00 57.27 C
|
| 623 |
+
ATOM 261 N ASP A 38 14.338 3.255 15.679 1.00 56.30 N
|
| 624 |
+
ATOM 262 CA ASP A 38 15.156 2.372 16.497 1.00 56.30 C
|
| 625 |
+
ATOM 263 C ASP A 38 14.343 1.250 17.135 1.00 56.30 C
|
| 626 |
+
ATOM 264 O ASP A 38 14.695 0.070 17.008 1.00 56.30 O
|
| 627 |
+
ATOM 265 CB ASP A 38 15.901 3.179 17.556 1.00 94.79 C
|
| 628 |
+
ATOM 266 CG ASP A 38 16.859 4.191 16.942 1.00 94.79 C
|
| 629 |
+
ATOM 267 OD1 ASP A 38 17.680 3.809 16.079 1.00 94.79 O
|
| 630 |
+
ATOM 268 OD2 ASP A 38 16.791 5.377 17.317 1.00 94.79 O
|
| 631 |
+
ATOM 269 N TYR A 39 13.249 1.597 17.806 1.00 57.17 N
|
| 632 |
+
ATOM 270 CA TYR A 39 12.420 0.561 18.424 1.00 57.17 C
|
| 633 |
+
ATOM 271 C TYR A 39 12.126 -0.564 17.425 1.00 57.17 C
|
| 634 |
+
ATOM 272 O TYR A 39 12.195 -1.745 17.771 1.00104.80 O
|
| 635 |
+
ATOM 273 CB TYR A 39 11.086 1.135 18.915 1.00 92.26 C
|
| 636 |
+
ATOM 274 CG TYR A 39 11.163 2.049 20.123 1.00 92.26 C
|
| 637 |
+
ATOM 275 CD1 TYR A 39 11.708 1.607 21.333 1.00 92.26 C
|
| 638 |
+
ATOM 276 CD2 TYR A 39 10.645 3.346 20.069 1.00 92.26 C
|
| 639 |
+
ATOM 277 CE1 TYR A 39 11.732 2.439 22.460 1.00 92.26 C
|
| 640 |
+
ATOM 278 CE2 TYR A 39 10.661 4.179 21.186 1.00 92.26 C
|
| 641 |
+
ATOM 279 CZ TYR A 39 11.204 3.724 22.373 1.00 92.26 C
|
| 642 |
+
ATOM 280 OH TYR A 39 11.218 4.565 23.462 1.00 92.26 O
|
| 643 |
+
ATOM 281 N ILE A 40 11.805 -0.192 16.186 1.00 75.79 N
|
| 644 |
+
ATOM 282 CA ILE A 40 11.467 -1.188 15.177 1.00 75.79 C
|
| 645 |
+
ATOM 283 C ILE A 40 12.677 -1.933 14.605 1.00 75.79 C
|
| 646 |
+
ATOM 284 O ILE A 40 12.570 -3.121 14.295 1.00 75.79 O
|
| 647 |
+
ATOM 285 CB ILE A 40 10.603 -0.569 14.031 1.00 76.70 C
|
| 648 |
+
ATOM 286 CG1 ILE A 40 11.482 0.006 12.931 1.00 76.70 C
|
| 649 |
+
ATOM 287 CG2 ILE A 40 9.709 0.512 14.582 1.00 76.70 C
|
| 650 |
+
ATOM 288 CD1 ILE A 40 11.700 -0.961 11.782 1.00 76.70 C
|
| 651 |
+
ATOM 289 N LYS A 41 13.817 -1.255 14.454 1.00 65.22 N
|
| 652 |
+
ATOM 290 CA LYS A 41 15.015 -1.937 13.960 1.00 65.22 C
|
| 653 |
+
ATOM 291 C LYS A 41 15.238 -3.089 14.927 1.00 65.22 C
|
| 654 |
+
ATOM 292 O LYS A 41 15.336 -4.253 14.534 1.00 65.22 O
|
| 655 |
+
ATOM 293 CB LYS A 41 16.245 -1.024 13.999 1.00 66.42 C
|
| 656 |
+
ATOM 294 CG LYS A 41 16.441 -0.159 12.762 1.00 66.42 C
|
| 657 |
+
ATOM 295 CD LYS A 41 17.635 0.777 12.923 1.00 66.42 C
|
| 658 |
+
ATOM 296 CE LYS A 41 17.801 1.692 11.713 1.00 66.42 C
|
| 659 |
+
ATOM 297 NZ LYS A 41 18.856 2.725 11.913 1.00 66.42 N
|
| 660 |
+
ATOM 298 N LYS A 42 15.287 -2.736 16.207 1.00 55.06 N
|
| 661 |
+
ATOM 299 CA LYS A 42 15.498 -3.693 17.278 1.00 55.06 C
|
| 662 |
+
ATOM 300 C LYS A 42 14.502 -4.852 17.267 1.00 55.06 C
|
| 663 |
+
ATOM 301 O LYS A 42 14.892 -6.013 17.198 1.00 55.06 O
|
| 664 |
+
ATOM 302 CB LYS A 42 15.437 -2.966 18.625 1.00200.03 C
|
| 665 |
+
ATOM 303 CG LYS A 42 15.692 -3.852 19.830 1.00186.63 C
|
| 666 |
+
ATOM 304 CD LYS A 42 15.652 -3.051 21.117 1.00186.63 C
|
| 667 |
+
ATOM 305 CE LYS A 42 15.900 -3.945 22.320 1.00139.05 C
|
| 668 |
+
ATOM 306 NZ LYS A 42 17.216 -4.640 22.230 1.00139.05 N
|
| 669 |
+
ATOM 307 N GLN A 43 13.214 -4.548 17.331 1.00 78.34 N
|
| 670 |
+
ATOM 308 CA GLN A 43 12.211 -5.606 17.359 1.00 78.34 C
|
| 671 |
+
ATOM 309 C GLN A 43 12.149 -6.428 16.073 1.00 78.34 C
|
| 672 |
+
ATOM 310 O GLN A 43 11.838 -7.621 16.111 1.00 78.34 O
|
| 673 |
+
ATOM 311 CB GLN A 43 10.832 -5.013 17.677 1.00126.98 C
|
| 674 |
+
ATOM 312 CG GLN A 43 10.169 -5.609 18.919 1.00126.98 C
|
| 675 |
+
ATOM 313 CD GLN A 43 9.832 -7.084 18.758 1.00126.98 C
|
| 676 |
+
ATOM 314 OE1 GLN A 43 8.990 -7.452 17.940 1.00126.98 O
|
| 677 |
+
ATOM 315 NE2 GLN A 43 10.495 -7.935 19.537 1.00126.98 N
|
| 678 |
+
ATOM 316 N GLY A 44 12.452 -5.789 14.942 1.00 55.22 N
|
| 679 |
+
ATOM 317 CA GLY A 44 12.412 -6.472 13.661 1.00 55.22 C
|
| 680 |
+
ATOM 318 C GLY A 44 11.154 -7.305 13.501 1.00 55.22 C
|
| 681 |
+
ATOM 319 O GLY A 44 11.230 -8.524 13.317 1.00 55.22 O
|
| 682 |
+
ATOM 320 N ALA A 45 9.991 -6.650 13.567 1.00 48.70 N
|
| 683 |
+
ATOM 321 CA ALA A 45 8.706 -7.334 13.446 1.00 48.70 C
|
| 684 |
+
ATOM 322 C ALA A 45 8.267 -7.491 12.002 1.00 48.70 C
|
| 685 |
+
ATOM 323 O ALA A 45 8.625 -6.691 11.135 1.00 48.70 O
|
| 686 |
+
ATOM 324 CB ALA A 45 7.651 -6.587 14.227 1.00 42.35 C
|
| 687 |
+
ATOM 325 N LYS A 46 7.482 -8.527 11.748 1.00 60.45 N
|
| 688 |
+
ATOM 326 CA LYS A 46 7.002 -8.787 10.405 1.00 60.45 C
|
| 689 |
+
ATOM 327 C LYS A 46 6.082 -7.662 9.961 1.00 60.45 C
|
| 690 |
+
ATOM 328 O LYS A 46 6.256 -7.102 8.881 1.00 60.45 O
|
| 691 |
+
ATOM 329 CB LYS A 46 6.266 -10.122 10.362 1.00100.71 C
|
| 692 |
+
ATOM 330 N ARG A 47 5.116 -7.324 10.808 1.00 55.30 N
|
| 693 |
+
ATOM 331 CA ARG A 47 4.160 -6.279 10.484 1.00 55.30 C
|
| 694 |
+
ATOM 332 C ARG A 47 4.244 -5.060 11.406 1.00 55.30 C
|
| 695 |
+
ATOM 333 O ARG A 47 4.294 -5.187 12.625 1.00 55.30 O
|
| 696 |
+
ATOM 334 CB ARG A 47 2.747 -6.860 10.497 1.00 49.32 C
|
| 697 |
+
ATOM 335 N VAL A 48 4.257 -3.875 10.796 1.00 43.03 N
|
| 698 |
+
ATOM 336 CA VAL A 48 4.320 -2.600 11.511 1.00 43.03 C
|
| 699 |
+
ATOM 337 C VAL A 48 3.326 -1.588 10.915 1.00 43.03 C
|
| 700 |
+
ATOM 338 O VAL A 48 3.297 -1.359 9.715 1.00 43.03 O
|
| 701 |
+
ATOM 339 CB VAL A 48 5.742 -2.008 11.457 1.00 31.14 C
|
| 702 |
+
ATOM 340 CG1 VAL A 48 5.702 -0.529 11.831 1.00 31.14 C
|
| 703 |
+
ATOM 341 CG2 VAL A 48 6.653 -2.775 12.414 1.00 31.14 C
|
| 704 |
+
ATOM 342 N ARG A 49 2.520 -0.975 11.776 1.00 36.65 N
|
| 705 |
+
ATOM 343 CA ARG A 49 1.516 -0.009 11.362 1.00 36.65 C
|
| 706 |
+
ATOM 344 C ARG A 49 1.740 1.333 12.036 1.00 36.65 C
|
| 707 |
+
ATOM 345 O ARG A 49 2.013 1.414 13.231 1.00 36.65 O
|
| 708 |
+
ATOM 346 CB ARG A 49 0.124 -0.512 11.726 1.00 83.41 C
|
| 709 |
+
ATOM 347 CG ARG A 49 -1.002 0.196 10.999 1.00 73.04 C
|
| 710 |
+
ATOM 348 CD ARG A 49 -2.287 0.153 11.807 1.00 73.04 C
|
| 711 |
+
ATOM 349 NE ARG A 49 -2.459 -1.126 12.495 1.00 73.04 N
|
| 712 |
+
ATOM 350 CZ ARG A 49 -3.229 -1.302 13.569 1.00 73.04 C
|
| 713 |
+
ATOM 351 NH1 ARG A 49 -3.910 -0.278 14.083 1.00 73.04 N
|
| 714 |
+
ATOM 352 NH2 ARG A 49 -3.304 -2.499 14.147 1.00 73.04 N
|
| 715 |
+
ATOM 353 N ILE A 50 1.630 2.395 11.252 1.00 31.16 N
|
| 716 |
+
ATOM 354 CA ILE A 50 1.776 3.725 11.785 1.00 31.16 C
|
| 717 |
+
ATOM 355 C ILE A 50 0.705 4.599 11.157 1.00 31.16 C
|
| 718 |
+
ATOM 356 O ILE A 50 0.578 4.660 9.933 1.00 31.16 O
|
| 719 |
+
ATOM 357 CB ILE A 50 3.147 4.316 11.465 1.00 26.84 C
|
| 720 |
+
ATOM 358 CG1 ILE A 50 4.236 3.406 12.024 1.00 26.84 C
|
| 721 |
+
ATOM 359 CG2 ILE A 50 3.254 5.722 12.079 1.00 26.84 C
|
| 722 |
+
ATOM 360 CD1 ILE A 50 5.611 4.014 11.978 1.00 26.84 C
|
| 723 |
+
ATOM 361 N SER A 51 -0.093 5.239 12.002 1.00 37.07 N
|
| 724 |
+
ATOM 362 CA SER A 51 -1.128 6.139 11.519 1.00 37.07 C
|
| 725 |
+
ATOM 363 C SER A 51 -0.951 7.489 12.205 1.00 37.07 C
|
| 726 |
+
ATOM 364 O SER A 51 -0.674 7.573 13.402 1.00 37.07 O
|
| 727 |
+
ATOM 365 CB SER A 51 -2.522 5.559 11.757 1.00 38.78 C
|
| 728 |
+
ATOM 366 OG SER A 51 -2.672 5.197 13.104 1.00 38.78 O
|
| 729 |
+
ATOM 367 N ILE A 52 -1.067 8.538 11.408 1.00 47.52 N
|
| 730 |
+
ATOM 368 CA ILE A 52 -0.899 9.893 11.887 1.00 47.52 C
|
| 731 |
+
ATOM 369 C ILE A 52 -2.116 10.712 11.531 1.00 47.52 C
|
| 732 |
+
ATOM 370 O ILE A 52 -2.486 10.825 10.359 1.00 47.52 O
|
| 733 |
+
ATOM 371 CB ILE A 52 0.341 10.536 11.257 1.00 41.87 C
|
| 734 |
+
ATOM 372 CG1 ILE A 52 1.592 9.886 11.839 1.00 41.87 C
|
| 735 |
+
ATOM 373 CG2 ILE A 52 0.336 12.039 11.479 1.00 41.87 C
|
| 736 |
+
ATOM 374 CD1 ILE A 52 2.843 10.297 11.141 1.00 41.87 C
|
| 737 |
+
ATOM 375 N THR A 53 -2.753 11.261 12.556 1.00 55.53 N
|
| 738 |
+
ATOM 376 CA THR A 53 -3.922 12.081 12.351 1.00 55.53 C
|
| 739 |
+
ATOM 377 C THR A 53 -3.415 13.493 12.189 1.00 55.53 C
|
| 740 |
+
ATOM 378 O THR A 53 -2.919 14.098 13.139 1.00 55.53 O
|
| 741 |
+
ATOM 379 CB THR A 53 -4.866 12.023 13.538 1.00 54.19 C
|
| 742 |
+
ATOM 380 OG1 THR A 53 -5.409 10.702 13.658 1.00 54.19 O
|
| 743 |
+
ATOM 381 CG2 THR A 53 -5.997 13.003 13.334 1.00 54.19 C
|
| 744 |
+
ATOM 382 N ALA A 54 -3.523 13.994 10.965 1.00 53.46 N
|
| 745 |
+
ATOM 383 CA ALA A 54 -3.079 15.335 10.624 1.00 53.46 C
|
| 746 |
+
ATOM 384 C ALA A 54 -4.249 16.316 10.700 1.00 53.46 C
|
| 747 |
+
ATOM 385 O ALA A 54 -5.389 15.916 10.939 1.00 53.46 O
|
| 748 |
+
ATOM 386 CB ALA A 54 -2.488 15.331 9.219 1.00 54.30 C
|
| 749 |
+
ATOM 387 N ARG A 55 -3.960 17.596 10.490 1.00 74.08 N
|
| 750 |
+
ATOM 388 CA ARG A 55 -4.983 18.636 10.528 1.00 74.08 C
|
| 751 |
+
ATOM 389 C ARG A 55 -5.731 18.711 9.197 1.00 74.08 C
|
| 752 |
+
ATOM 390 O ARG A 55 -6.929 18.979 9.170 1.00 74.08 O
|
| 753 |
+
ATOM 391 CB ARG A 55 -4.344 19.985 10.857 1.00 53.00 C
|
| 754 |
+
ATOM 392 N THR A 56 -5.017 18.477 8.098 1.00 61.37 N
|
| 755 |
+
ATOM 393 CA THR A 56 -5.615 18.505 6.762 1.00 61.37 C
|
| 756 |
+
ATOM 394 C THR A 56 -5.102 17.346 5.926 1.00 61.37 C
|
| 757 |
+
ATOM 395 O THR A 56 -3.968 16.892 6.107 1.00 61.37 O
|
| 758 |
+
ATOM 396 CB THR A 56 -5.281 19.807 6.003 1.00 61.95 C
|
| 759 |
+
ATOM 397 OG1 THR A 56 -3.861 19.944 5.857 1.00 61.95 O
|
| 760 |
+
ATOM 398 CG2 THR A 56 -5.818 20.995 6.750 1.00 61.95 C
|
| 761 |
+
ATOM 399 N LYS A 57 -5.929 16.874 4.998 1.00 79.80 N
|
| 762 |
+
ATOM 400 CA LYS A 57 -5.522 15.766 4.148 1.00 79.80 C
|
| 763 |
+
ATOM 401 C LYS A 57 -4.219 16.045 3.395 1.00 79.80 C
|
| 764 |
+
ATOM 402 O LYS A 57 -3.422 15.135 3.192 1.00 79.80 O
|
| 765 |
+
ATOM 403 CB LYS A 57 -6.635 15.394 3.164 1.00 56.21 C
|
| 766 |
+
ATOM 404 CG LYS A 57 -6.161 14.470 2.051 1.00 52.05 C
|
| 767 |
+
ATOM 405 CD LYS A 57 -7.236 13.507 1.571 1.00 52.05 C
|
| 768 |
+
ATOM 406 CE LYS A 57 -6.718 12.676 0.392 1.00 52.05 C
|
| 769 |
+
ATOM 407 NZ LYS A 57 -7.658 11.597 -0.067 1.00 52.05 N
|
| 770 |
+
ATOM 408 N LYS A 58 -3.990 17.291 2.986 1.00 61.25 N
|
| 771 |
+
ATOM 409 CA LYS A 58 -2.758 17.624 2.269 1.00 61.25 C
|
| 772 |
+
ATOM 410 C LYS A 58 -1.566 17.464 3.204 1.00 61.25 C
|
| 773 |
+
ATOM 411 O LYS A 58 -0.433 17.274 2.764 1.00 61.25 O
|
| 774 |
+
ATOM 412 CB LYS A 58 -2.802 19.055 1.719 1.00120.41 C
|
| 775 |
+
ATOM 413 CG LYS A 58 -3.869 19.283 0.655 1.00 90.99 C
|
| 776 |
+
ATOM 414 CD LYS A 58 -3.473 20.388 -0.316 1.00 90.99 C
|
| 777 |
+
ATOM 415 CE LYS A 58 -2.310 19.959 -1.211 1.00 90.99 C
|
| 778 |
+
ATOM 416 NZ LYS A 58 -2.662 18.828 -2.130 1.00 90.99 N
|
| 779 |
+
ATOM 417 N GLU A 59 -1.831 17.546 4.500 1.00 55.60 N
|
| 780 |
+
ATOM 418 CA GLU A 59 -0.786 17.378 5.496 1.00 55.60 C
|
| 781 |
+
ATOM 419 C GLU A 59 -0.515 15.871 5.628 1.00 55.60 C
|
| 782 |
+
ATOM 420 O GLU A 59 0.633 15.424 5.622 1.00 55.60 O
|
| 783 |
+
ATOM 421 CB GLU A 59 -1.254 17.956 6.835 1.00 68.19 C
|
| 784 |
+
ATOM 422 CG GLU A 59 -0.299 17.742 7.985 1.00 68.19 C
|
| 785 |
+
ATOM 423 CD GLU A 59 -0.721 18.494 9.232 1.00 68.19 C
|
| 786 |
+
ATOM 424 OE1 GLU A 59 -1.867 18.296 9.694 1.00 68.19 O
|
| 787 |
+
ATOM 425 OE2 GLU A 59 0.098 19.287 9.750 1.00 68.19 O
|
| 788 |
+
ATOM 426 N ALA A 60 -1.595 15.104 5.738 1.00 49.39 N
|
| 789 |
+
ATOM 427 CA ALA A 60 -1.528 13.653 5.853 1.00 49.39 C
|
| 790 |
+
ATOM 428 C ALA A 60 -0.674 13.071 4.736 1.00 49.39 C
|
| 791 |
+
ATOM 429 O ALA A 60 -0.023 12.038 4.910 1.00 49.39 O
|
| 792 |
+
ATOM 430 CB ALA A 60 -2.920 13.069 5.769 1.00 34.98 C
|
| 793 |
+
ATOM 431 N GLU A 61 -0.698 13.742 3.588 1.00 62.75 N
|
| 794 |
+
ATOM 432 CA GLU A 61 0.058 13.318 2.423 1.00 62.75 C
|
| 795 |
+
ATOM 433 C GLU A 61 1.541 13.547 2.665 1.00 62.75 C
|
| 796 |
+
ATOM 434 O GLU A 61 2.357 12.657 2.427 1.00 62.75 O
|
| 797 |
+
ATOM 435 CB GLU A 61 -0.412 14.092 1.189 1.00 78.01 C
|
| 798 |
+
ATOM 436 CG GLU A 61 -1.853 13.778 0.793 1.00 51.13 C
|
| 799 |
+
ATOM 437 CD GLU A 61 -2.387 14.677 -0.316 1.00 51.13 C
|
| 800 |
+
ATOM 438 OE1 GLU A 61 -1.632 15.550 -0.805 1.00 51.13 O
|
| 801 |
+
ATOM 439 OE2 GLU A 61 -3.567 14.506 -0.695 1.00 51.13 O
|
| 802 |
+
ATOM 440 N LYS A 62 1.894 14.733 3.151 1.00 51.31 N
|
| 803 |
+
ATOM 441 CA LYS A 62 3.292 15.029 3.420 1.00 51.31 C
|
| 804 |
+
ATOM 442 C LYS A 62 3.824 13.998 4.406 1.00 51.31 C
|
| 805 |
+
ATOM 443 O LYS A 62 4.972 13.578 4.315 1.00 51.31 O
|
| 806 |
+
ATOM 444 CB LYS A 62 3.446 16.445 3.996 1.00 31.92 C
|
| 807 |
+
ATOM 445 N PHE A 63 2.977 13.589 5.346 1.00 47.90 N
|
| 808 |
+
ATOM 446 CA PHE A 63 3.366 12.610 6.358 1.00 47.90 C
|
| 809 |
+
ATOM 447 C PHE A 63 3.498 11.225 5.770 1.00 47.90 C
|
| 810 |
+
ATOM 448 O PHE A 63 4.373 10.463 6.164 1.00 47.90 O
|
| 811 |
+
ATOM 449 CB PHE A 63 2.343 12.577 7.500 1.00 46.25 C
|
| 812 |
+
ATOM 450 CG PHE A 63 2.434 13.748 8.420 1.00 46.25 C
|
| 813 |
+
ATOM 451 CD1 PHE A 63 1.319 14.174 9.130 1.00 46.25 C
|
| 814 |
+
ATOM 452 CD2 PHE A 63 3.638 14.420 8.591 1.00 46.25 C
|
| 815 |
+
ATOM 453 CE1 PHE A 63 1.406 15.259 10.007 1.00 46.25 C
|
| 816 |
+
ATOM 454 CE2 PHE A 63 3.740 15.496 9.455 1.00 46.25 C
|
| 817 |
+
ATOM 455 CZ PHE A 63 2.628 15.922 10.166 1.00 46.25 C
|
| 818 |
+
ATOM 456 N ALA A 64 2.610 10.899 4.839 1.00 43.04 N
|
| 819 |
+
ATOM 457 CA ALA A 64 2.651 9.602 4.194 1.00 43.04 C
|
| 820 |
+
ATOM 458 C ALA A 64 3.960 9.509 3.414 1.00 43.04 C
|
| 821 |
+
ATOM 459 O ALA A 64 4.578 8.457 3.367 1.00 43.04 O
|
| 822 |
+
ATOM 460 CB ALA A 64 1.441 9.419 3.260 1.00 29.61 C
|
| 823 |
+
ATOM 461 N ALA A 65 4.388 10.612 2.815 1.00 46.89 N
|
| 824 |
+
ATOM 462 CA ALA A 65 5.642 10.619 2.076 1.00 46.89 C
|
| 825 |
+
ATOM 463 C ALA A 65 6.791 10.351 3.055 1.00 46.89 C
|
| 826 |
+
ATOM 464 O ALA A 65 7.737 9.629 2.737 1.00 46.89 O
|
| 827 |
+
ATOM 465 CB ALA A 65 5.839 11.968 1.367 1.00 31.68 C
|
| 828 |
+
ATOM 466 N ILE A 66 6.703 10.929 4.248 1.00 45.51 N
|
| 829 |
+
ATOM 467 CA ILE A 66 7.722 10.737 5.275 1.00 45.51 C
|
| 830 |
+
ATOM 468 C ILE A 66 7.762 9.285 5.741 1.00 45.51 C
|
| 831 |
+
ATOM 469 O ILE A 66 8.816 8.652 5.778 1.00 45.51 O
|
| 832 |
+
ATOM 470 CB ILE A 66 7.444 11.631 6.508 1.00 53.42 C
|
| 833 |
+
ATOM 471 CG1 ILE A 66 7.884 13.069 6.215 1.00 53.42 C
|
| 834 |
+
ATOM 472 CG2 ILE A 66 8.153 11.075 7.746 1.00 53.42 C
|
| 835 |
+
ATOM 473 CD1 ILE A 66 7.671 14.034 7.377 1.00 53.42 C
|
| 836 |
+
ATOM 474 N LEU A 67 6.599 8.766 6.103 1.00 37.91 N
|
| 837 |
+
ATOM 475 CA LEU A 67 6.501 7.412 6.591 1.00 37.91 C
|
| 838 |
+
ATOM 476 C LEU A 67 6.912 6.387 5.551 1.00 37.91 C
|
| 839 |
+
ATOM 477 O LEU A 67 7.378 5.299 5.887 1.00 37.91 O
|
| 840 |
+
ATOM 478 CB LEU A 67 5.079 7.144 7.071 1.00 24.44 C
|
| 841 |
+
ATOM 479 CG LEU A 67 4.659 8.016 8.260 1.00 24.44 C
|
| 842 |
+
ATOM 480 CD1 LEU A 67 3.226 7.626 8.711 1.00 24.44 C
|
| 843 |
+
ATOM 481 CD2 LEU A 67 5.658 7.854 9.394 1.00 24.44 C
|
| 844 |
+
ATOM 482 N ILE A 68 6.748 6.723 4.282 1.00 32.01 N
|
| 845 |
+
ATOM 483 CA ILE A 68 7.119 5.776 3.255 1.00 32.01 C
|
| 846 |
+
ATOM 484 C ILE A 68 8.615 5.568 3.244 1.00 32.01 C
|
| 847 |
+
ATOM 485 O ILE A 68 9.074 4.433 3.201 1.00 32.01 O
|
| 848 |
+
ATOM 486 CB ILE A 68 6.622 6.217 1.869 1.00 44.65 C
|
| 849 |
+
ATOM 487 CG1 ILE A 68 5.223 5.656 1.656 1.00 44.65 C
|
| 850 |
+
ATOM 488 CG2 ILE A 68 7.533 5.705 0.786 1.00 44.65 C
|
| 851 |
+
ATOM 489 CD1 ILE A 68 4.580 6.096 0.373 1.00 44.65 C
|
| 852 |
+
ATOM 490 N LYS A 69 9.366 6.661 3.310 1.00 46.37 N
|
| 853 |
+
ATOM 491 CA LYS A 69 10.819 6.592 3.311 1.00 46.37 C
|
| 854 |
+
ATOM 492 C LYS A 69 11.296 5.881 4.574 1.00 46.37 C
|
| 855 |
+
ATOM 493 O LYS A 69 12.268 5.125 4.533 1.00 46.37 O
|
| 856 |
+
ATOM 494 CB LYS A 69 11.401 8.001 3.201 1.00 60.80 C
|
| 857 |
+
ATOM 495 CG LYS A 69 10.814 8.757 2.008 1.00 54.72 C
|
| 858 |
+
ATOM 496 CD LYS A 69 11.461 10.116 1.760 1.00 54.72 C
|
| 859 |
+
ATOM 497 CE LYS A 69 10.804 10.803 0.552 1.00 54.72 C
|
| 860 |
+
ATOM 498 NZ LYS A 69 11.330 12.176 0.230 1.00 54.72 N
|
| 861 |
+
ATOM 499 N VAL A 70 10.601 6.102 5.689 1.00 46.67 N
|
| 862 |
+
ATOM 500 CA VAL A 70 10.959 5.442 6.942 1.00 46.67 C
|
| 863 |
+
ATOM 501 C VAL A 70 10.872 3.920 6.791 1.00 46.67 C
|
| 864 |
+
ATOM 502 O VAL A 70 11.842 3.216 7.044 1.00 46.67 O
|
| 865 |
+
ATOM 503 CB VAL A 70 10.034 5.890 8.104 1.00 45.21 C
|
| 866 |
+
ATOM 504 CG1 VAL A 70 10.161 4.929 9.292 1.00 45.21 C
|
| 867 |
+
ATOM 505 CG2 VAL A 70 10.405 7.301 8.539 1.00 45.21 C
|
| 868 |
+
ATOM 506 N PHE A 71 9.705 3.425 6.385 1.00 47.43 N
|
| 869 |
+
ATOM 507 CA PHE A 71 9.472 1.995 6.184 1.00 47.43 C
|
| 870 |
+
ATOM 508 C PHE A 71 10.400 1.397 5.132 1.00 47.43 C
|
| 871 |
+
ATOM 509 O PHE A 71 10.869 0.265 5.276 1.00 47.43 O
|
| 872 |
+
ATOM 510 CB PHE A 71 8.043 1.749 5.717 1.00 37.02 C
|
| 873 |
+
ATOM 511 CG PHE A 71 7.046 1.645 6.819 1.00 37.02 C
|
| 874 |
+
ATOM 512 CD1 PHE A 71 6.882 0.462 7.510 1.00 37.02 C
|
| 875 |
+
ATOM 513 CD2 PHE A 71 6.236 2.722 7.146 1.00 37.02 C
|
| 876 |
+
ATOM 514 CE1 PHE A 71 5.912 0.350 8.513 1.00 37.02 C
|
| 877 |
+
ATOM 515 CE2 PHE A 71 5.276 2.619 8.138 1.00 37.02 C
|
| 878 |
+
ATOM 516 CZ PHE A 71 5.110 1.440 8.820 1.00 37.02 C
|
| 879 |
+
ATOM 517 N ALA A 72 10.631 2.143 4.058 1.00 53.65 N
|
| 880 |
+
ATOM 518 CA ALA A 72 11.491 1.668 2.986 1.00 53.65 C
|
| 881 |
+
ATOM 519 C ALA A 72 12.911 1.486 3.508 1.00 53.65 C
|
| 882 |
+
ATOM 520 O ALA A 72 13.481 0.397 3.410 1.00 53.65 O
|
| 883 |
+
ATOM 521 CB ALA A 72 11.476 2.654 1.832 1.00 41.89 C
|
| 884 |
+
ATOM 522 N GLU A 73 13.474 2.552 4.070 1.00 50.89 N
|
| 885 |
+
ATOM 523 CA GLU A 73 14.818 2.483 4.606 1.00 50.89 C
|
| 886 |
+
ATOM 524 C GLU A 73 14.914 1.282 5.565 1.00 50.89 C
|
| 887 |
+
ATOM 525 O GLU A 73 15.805 0.457 5.434 1.00 50.89 O
|
| 888 |
+
ATOM 526 CB GLU A 73 15.186 3.805 5.314 1.00 20.48 C
|
| 889 |
+
ATOM 527 N LEU A 74 13.978 1.145 6.496 1.00 43.89 N
|
| 890 |
+
ATOM 528 CA LEU A 74 14.025 0.022 7.431 1.00 43.89 C
|
| 891 |
+
ATOM 529 C LEU A 74 13.690 -1.342 6.817 1.00 43.89 C
|
| 892 |
+
ATOM 530 O LEU A 74 13.367 -2.282 7.535 1.00 43.89 O
|
| 893 |
+
ATOM 531 CB LEU A 74 13.100 0.287 8.621 1.00 51.78 C
|
| 894 |
+
ATOM 532 CG LEU A 74 13.297 1.686 9.215 1.00 51.78 C
|
| 895 |
+
ATOM 533 CD1 LEU A 74 12.449 1.868 10.462 1.00 51.78 C
|
| 896 |
+
ATOM 534 CD2 LEU A 74 14.769 1.889 9.525 1.00 51.78 C
|
| 897 |
+
ATOM 535 N GLY A 75 13.731 -1.453 5.492 1.00 38.15 N
|
| 898 |
+
ATOM 536 CA GLY A 75 13.465 -2.739 4.875 1.00 38.15 C
|
| 899 |
+
ATOM 537 C GLY A 75 12.039 -3.207 4.697 1.00 38.15 C
|
| 900 |
+
ATOM 538 O GLY A 75 11.810 -4.287 4.152 1.00 38.15 O
|
| 901 |
+
ATOM 539 N TYR A 76 11.063 -2.447 5.168 1.00 50.24 N
|
| 902 |
+
ATOM 540 CA TYR A 76 9.685 -2.857 4.949 1.00 50.24 C
|
| 903 |
+
ATOM 541 C TYR A 76 9.433 -2.436 3.506 1.00 50.24 C
|
| 904 |
+
ATOM 542 O TYR A 76 9.581 -1.257 3.162 1.00 50.24 O
|
| 905 |
+
ATOM 543 CB TYR A 76 8.781 -2.137 5.932 1.00 36.14 C
|
| 906 |
+
ATOM 544 CG TYR A 76 9.004 -2.635 7.338 1.00 36.14 C
|
| 907 |
+
ATOM 545 CD1 TYR A 76 8.162 -3.598 7.898 1.00 36.14 C
|
| 908 |
+
ATOM 546 CD2 TYR A 76 10.128 -2.235 8.070 1.00 36.14 C
|
| 909 |
+
ATOM 547 CE1 TYR A 76 8.438 -4.166 9.150 1.00 36.14 C
|
| 910 |
+
ATOM 548 CE2 TYR A 76 10.413 -2.802 9.322 1.00 36.14 C
|
| 911 |
+
ATOM 549 CZ TYR A 76 9.567 -3.770 9.848 1.00 36.14 C
|
| 912 |
+
ATOM 550 OH TYR A 76 9.881 -4.392 11.036 1.00 36.14 O
|
| 913 |
+
ATOM 551 N ASN A 77 9.073 -3.396 2.657 1.00 50.62 N
|
| 914 |
+
ATOM 552 CA ASN A 77 8.890 -3.090 1.246 1.00 50.62 C
|
| 915 |
+
ATOM 553 C ASN A 77 7.535 -3.320 0.577 1.00 50.62 C
|
| 916 |
+
ATOM 554 O ASN A 77 7.395 -3.014 -0.605 1.00 50.62 O
|
| 917 |
+
ATOM 555 CB ASN A 77 9.985 -3.784 0.428 1.00 96.49 C
|
| 918 |
+
ATOM 556 CG ASN A 77 11.391 -3.387 0.875 1.00 96.49 C
|
| 919 |
+
ATOM 557 OD1 ASN A 77 11.710 -2.200 0.989 1.00 96.49 O
|
| 920 |
+
ATOM 558 ND2 ASN A 77 12.240 -4.384 1.122 1.00 96.49 N
|
| 921 |
+
ATOM 559 N ASP A 78 6.556 -3.874 1.285 1.00 72.36 N
|
| 922 |
+
ATOM 560 CA ASP A 78 5.219 -4.028 0.700 1.00 72.36 C
|
| 923 |
+
ATOM 561 C ASP A 78 4.327 -3.171 1.600 1.00 72.36 C
|
| 924 |
+
ATOM 562 O ASP A 78 3.796 -3.643 2.609 1.00 72.36 O
|
| 925 |
+
ATOM 563 CB ASP A 78 4.745 -5.479 0.716 1.00108.13 C
|
| 926 |
+
ATOM 564 CG ASP A 78 3.377 -5.644 0.065 1.00108.13 C
|
| 927 |
+
ATOM 565 OD1 ASP A 78 3.225 -5.258 -1.112 1.00108.13 O
|
| 928 |
+
ATOM 566 OD2 ASP A 78 2.448 -6.153 0.728 1.00108.13 O
|
| 929 |
+
ATOM 567 N ILE A 79 4.163 -1.910 1.214 1.00 35.39 N
|
| 930 |
+
ATOM 568 CA ILE A 79 3.425 -0.943 2.015 1.00 35.39 C
|
| 931 |
+
ATOM 569 C ILE A 79 2.025 -0.548 1.563 1.00 35.39 C
|
| 932 |
+
ATOM 570 O ILE A 79 1.779 -0.336 0.382 1.00 35.39 O
|
| 933 |
+
ATOM 571 CB ILE A 79 4.260 0.326 2.122 1.00 28.47 C
|
| 934 |
+
ATOM 572 CG1 ILE A 79 5.672 -0.058 2.552 1.00 28.47 C
|
| 935 |
+
ATOM 573 CG2 ILE A 79 3.630 1.303 3.070 1.00 28.47 C
|
| 936 |
+
ATOM 574 CD1 ILE A 79 6.681 1.064 2.358 1.00 28.47 C
|
| 937 |
+
ATOM 575 N ASN A 80 1.120 -0.449 2.537 1.00 32.25 N
|
| 938 |
+
ATOM 576 CA ASN A 80 -0.255 -0.026 2.299 1.00 32.25 C
|
| 939 |
+
ATOM 577 C ASN A 80 -0.386 1.364 2.884 1.00 32.25 C
|
| 940 |
+
ATOM 578 O ASN A 80 -0.009 1.599 4.028 1.00 32.25 O
|
| 941 |
+
ATOM 579 CB ASN A 80 -1.256 -0.953 2.983 1.00 68.24 C
|
| 942 |
+
ATOM 580 CG ASN A 80 -1.409 -2.275 2.265 1.00 68.24 C
|
| 943 |
+
ATOM 581 OD1 ASN A 80 -1.410 -3.341 2.885 1.00 68.24 O
|
| 944 |
+
ATOM 582 ND2 ASN A 80 -1.552 -2.215 0.949 1.00 68.24 N
|
| 945 |
+
ATOM 583 N VAL A 81 -0.875 2.291 2.074 1.00 31.42 N
|
| 946 |
+
ATOM 584 CA VAL A 81 -1.090 3.651 2.511 1.00 31.42 C
|
| 947 |
+
ATOM 585 C VAL A 81 -2.586 3.842 2.393 1.00 31.42 C
|
| 948 |
+
ATOM 586 O VAL A 81 -3.154 3.663 1.319 1.00 31.42 O
|
| 949 |
+
ATOM 587 CB VAL A 81 -0.418 4.651 1.595 1.00 27.86 C
|
| 950 |
+
ATOM 588 CG1 VAL A 81 -0.828 6.027 1.980 1.00 27.86 C
|
| 951 |
+
ATOM 589 CG2 VAL A 81 1.089 4.522 1.694 1.00 27.86 C
|
| 952 |
+
ATOM 590 N THR A 82 -3.226 4.180 3.499 1.00 39.50 N
|
| 953 |
+
ATOM 591 CA THR A 82 -4.666 4.392 3.515 1.00 39.50 C
|
| 954 |
+
ATOM 592 C THR A 82 -5.000 5.729 4.145 1.00 39.50 C
|
| 955 |
+
ATOM 593 O THR A 82 -4.520 6.055 5.233 1.00 39.50 O
|
| 956 |
+
ATOM 594 CB THR A 82 -5.398 3.315 4.339 1.00 46.66 C
|
| 957 |
+
ATOM 595 OG1 THR A 82 -5.223 2.023 3.741 1.00 46.66 O
|
| 958 |
+
ATOM 596 CG2 THR A 82 -6.867 3.630 4.400 1.00 46.66 C
|
| 959 |
+
ATOM 597 N PHE A 83 -5.802 6.522 3.457 1.00 57.37 N
|
| 960 |
+
ATOM 598 CA PHE A 83 -6.197 7.793 4.034 1.00 57.37 C
|
| 961 |
+
ATOM 599 C PHE A 83 -7.634 7.636 4.481 1.00 57.37 C
|
| 962 |
+
ATOM 600 O PHE A 83 -8.448 7.043 3.776 1.00 57.37 O
|
| 963 |
+
ATOM 601 CB PHE A 83 -6.097 8.935 3.025 1.00 35.09 C
|
| 964 |
+
ATOM 602 CG PHE A 83 -4.709 9.189 2.529 1.00 35.09 C
|
| 965 |
+
ATOM 603 CD1 PHE A 83 -4.182 8.445 1.477 1.00 35.09 C
|
| 966 |
+
ATOM 604 CD2 PHE A 83 -3.930 10.179 3.103 1.00 35.09 C
|
| 967 |
+
ATOM 605 CE1 PHE A 83 -2.893 8.688 0.998 1.00 35.09 C
|
| 968 |
+
ATOM 606 CE2 PHE A 83 -2.643 10.433 2.638 1.00 35.09 C
|
| 969 |
+
ATOM 607 CZ PHE A 83 -2.123 9.681 1.578 1.00 35.09 C
|
| 970 |
+
ATOM 608 N ASP A 84 -7.924 8.130 5.676 1.00 57.44 N
|
| 971 |
+
ATOM 609 CA ASP A 84 -9.270 8.081 6.224 1.00 57.44 C
|
| 972 |
+
ATOM 610 C ASP A 84 -9.498 9.482 6.767 1.00 57.44 C
|
| 973 |
+
ATOM 611 O ASP A 84 -9.176 9.781 7.915 1.00 57.44 O
|
| 974 |
+
ATOM 612 CB ASP A 84 -9.365 7.052 7.349 1.00115.57 C
|
| 975 |
+
ATOM 613 CG ASP A 84 -10.794 6.628 7.625 1.00115.57 C
|
| 976 |
+
ATOM 614 OD1 ASP A 84 -11.645 7.511 7.866 1.00115.57 O
|
| 977 |
+
ATOM 615 OD2 ASP A 84 -11.068 5.410 7.597 1.00115.57 O
|
| 978 |
+
ATOM 616 N GLY A 85 -10.026 10.352 5.924 1.00 51.12 N
|
| 979 |
+
ATOM 617 CA GLY A 85 -10.250 11.713 6.358 1.00 51.12 C
|
| 980 |
+
ATOM 618 C GLY A 85 -8.911 12.403 6.503 1.00 51.12 C
|
| 981 |
+
ATOM 619 O GLY A 85 -8.212 12.608 5.510 1.00 51.12 O
|
| 982 |
+
ATOM 620 N ASP A 86 -8.545 12.754 7.733 1.00 53.00 N
|
| 983 |
+
ATOM 621 CA ASP A 86 -7.275 13.427 7.979 1.00 53.00 C
|
| 984 |
+
ATOM 622 C ASP A 86 -6.266 12.493 8.617 1.00 53.00 C
|
| 985 |
+
ATOM 623 O ASP A 86 -5.171 12.907 9.004 1.00 53.00 O
|
| 986 |
+
ATOM 624 CB ASP A 86 -7.497 14.652 8.856 1.00 84.41 C
|
| 987 |
+
ATOM 625 CG ASP A 86 -7.893 15.864 8.047 1.00 84.41 C
|
| 988 |
+
ATOM 626 OD1 ASP A 86 -8.499 16.790 8.622 1.00 84.41 O
|
| 989 |
+
ATOM 627 OD2 ASP A 86 -7.589 15.892 6.833 1.00 84.41 O
|
| 990 |
+
ATOM 628 N THR A 87 -6.652 11.227 8.713 1.00 54.91 N
|
| 991 |
+
ATOM 629 CA THR A 87 -5.799 10.202 9.280 1.00 54.91 C
|
| 992 |
+
ATOM 630 C THR A 87 -5.142 9.365 8.190 1.00 54.91 C
|
| 993 |
+
ATOM 631 O THR A 87 -5.826 8.797 7.346 1.00 54.91 O
|
| 994 |
+
ATOM 632 CB THR A 87 -6.600 9.245 10.167 1.00 59.15 C
|
| 995 |
+
ATOM 633 OG1 THR A 87 -7.103 9.953 11.304 1.00 59.15 O
|
| 996 |
+
ATOM 634 CG2 THR A 87 -5.728 8.095 10.628 1.00 59.15 C
|
| 997 |
+
ATOM 635 N VAL A 88 -3.816 9.303 8.191 1.00 36.77 N
|
| 998 |
+
ATOM 636 CA VAL A 88 -3.125 8.459 7.218 1.00 36.77 C
|
| 999 |
+
ATOM 637 C VAL A 88 -2.580 7.225 7.935 1.00 36.77 C
|
| 1000 |
+
ATOM 638 O VAL A 88 -1.997 7.316 9.019 1.00 36.77 O
|
| 1001 |
+
ATOM 639 CB VAL A 88 -1.953 9.176 6.533 1.00 32.82 C
|
| 1002 |
+
ATOM 640 CG1 VAL A 88 -0.849 9.457 7.518 1.00 32.82 C
|
| 1003 |
+
ATOM 641 CG2 VAL A 88 -1.459 8.320 5.381 1.00 32.82 C
|
| 1004 |
+
ATOM 642 N THR A 89 -2.790 6.067 7.330 1.00 49.29 N
|
| 1005 |
+
ATOM 643 CA THR A 89 -2.314 4.826 7.917 1.00 49.29 C
|
| 1006 |
+
ATOM 644 C THR A 89 -1.395 4.069 6.971 1.00 49.29 C
|
| 1007 |
+
ATOM 645 O THR A 89 -1.844 3.485 5.978 1.00 49.29 O
|
| 1008 |
+
ATOM 646 CB THR A 89 -3.476 3.934 8.283 1.00 51.33 C
|
| 1009 |
+
ATOM 647 OG1 THR A 89 -4.392 4.694 9.073 1.00 51.33 O
|
| 1010 |
+
ATOM 648 CG2 THR A 89 -2.999 2.722 9.060 1.00 51.33 C
|
| 1011 |
+
ATOM 649 N VAL A 90 -0.101 4.112 7.284 1.00 33.06 N
|
| 1012 |
+
ATOM 650 CA VAL A 90 0.909 3.414 6.508 1.00 33.06 C
|
| 1013 |
+
ATOM 651 C VAL A 90 1.260 2.131 7.257 1.00 33.06 C
|
| 1014 |
+
ATOM 652 O VAL A 90 1.736 2.164 8.392 1.00 33.06 O
|
| 1015 |
+
ATOM 653 CB VAL A 90 2.156 4.280 6.343 1.00 31.66 C
|
| 1016 |
+
ATOM 654 CG1 VAL A 90 3.173 3.579 5.443 1.00 31.66 C
|
| 1017 |
+
ATOM 655 CG2 VAL A 90 1.762 5.626 5.741 1.00 31.66 C
|
| 1018 |
+
ATOM 656 N GLU A 91 0.969 0.996 6.638 1.00 39.68 N
|
| 1019 |
+
ATOM 657 CA GLU A 91 1.283 -0.296 7.233 1.00 39.68 C
|
| 1020 |
+
ATOM 658 C GLU A 91 2.266 -1.019 6.321 1.00 39.68 C
|
| 1021 |
+
ATOM 659 O GLU A 91 2.032 -1.166 5.114 1.00 39.68 O
|
| 1022 |
+
ATOM 660 CB GLU A 91 0.045 -1.172 7.391 1.00115.49 C
|
| 1023 |
+
ATOM 661 CG GLU A 91 0.407 -2.556 7.905 1.00111.17 C
|
| 1024 |
+
ATOM 662 CD GLU A 91 -0.442 -3.656 7.308 1.00111.17 C
|
| 1025 |
+
ATOM 663 OE1 GLU A 91 -1.618 -3.782 7.708 1.00111.17 O
|
| 1026 |
+
ATOM 664 OE2 GLU A 91 0.066 -4.394 6.432 1.00111.17 O
|
| 1027 |
+
ATOM 665 N GLY A 92 3.369 -1.469 6.897 1.00 57.29 N
|
| 1028 |
+
ATOM 666 CA GLY A 92 4.345 -2.181 6.106 1.00 57.29 C
|
| 1029 |
+
ATOM 667 C GLY A 92 4.665 -3.567 6.629 1.00 57.29 C
|
| 1030 |
+
ATOM 668 O GLY A 92 4.434 -3.886 7.799 1.00 57.29 O
|
| 1031 |
+
ATOM 669 N GLN A 93 5.184 -4.402 5.733 1.00 51.61 N
|
| 1032 |
+
ATOM 670 CA GLN A 93 5.609 -5.756 6.069 1.00 51.61 C
|
| 1033 |
+
ATOM 671 C GLN A 93 7.071 -5.898 5.659 1.00 51.61 C
|
| 1034 |
+
ATOM 672 O GLN A 93 7.498 -5.373 4.628 1.00 51.61 O
|
| 1035 |
+
ATOM 673 CB GLN A 93 4.724 -6.792 5.376 1.00 87.10 C
|
| 1036 |
+
ATOM 674 CG GLN A 93 3.505 -7.152 6.212 1.00 87.10 C
|
| 1037 |
+
ATOM 675 CD GLN A 93 2.449 -7.895 5.433 1.00 87.10 C
|
| 1038 |
+
ATOM 676 OE1 GLN A 93 1.866 -7.357 4.489 1.00 87.10 O
|
| 1039 |
+
ATOM 677 NE2 GLN A 93 2.189 -9.139 5.823 1.00 87.10 N
|
| 1040 |
+
ATOM 678 N LEU A 94 7.836 -6.589 6.494 1.00 78.23 N
|
| 1041 |
+
ATOM 679 CA LEU A 94 9.264 -6.783 6.273 1.00 78.23 C
|
| 1042 |
+
ATOM 680 C LEU A 94 9.604 -7.603 5.021 1.00 78.23 C
|
| 1043 |
+
ATOM 681 O LEU A 94 10.488 -7.171 4.243 1.00 78.23 O
|
| 1044 |
+
ATOM 682 CB LEU A 94 9.865 -7.422 7.524 1.00 64.38 C
|
| 1045 |
+
ATOM 683 CG LEU A 94 11.295 -7.028 7.888 1.00 64.38 C
|
| 1046 |
+
ATOM 684 CD1 LEU A 94 11.525 -5.554 7.645 1.00 64.38 C
|
| 1047 |
+
ATOM 685 CD2 LEU A 94 11.541 -7.378 9.338 1.00 64.38 C
|
| 1048 |
+
TER 686 LEU A 94
|
| 1049 |
+
HETATM 687 O HOH A 107 10.102 -4.251 13.943 1.00 44.75 O
|
| 1050 |
+
HETATM 688 O HOH A 108 1.041 -4.800 4.090 1.00 52.54 O
|
| 1051 |
+
HETATM 689 O HOH A 109 -0.433 3.575 23.826 1.00 38.09 O
|
| 1052 |
+
HETATM 690 O HOH A 110 2.878 19.537 9.279 1.00 61.82 O
|
| 1053 |
+
HETATM 691 O HOH A 111 18.925 5.360 10.377 1.00 60.69 O
|
| 1054 |
+
HETATM 692 O HOH A 112 -3.917 2.311 13.588 1.00 49.83 O
|
| 1055 |
+
HETATM 693 O HOH A 113 4.748 12.641 22.041 1.00 58.74 O
|
| 1056 |
+
CONECT 250 253
|
| 1057 |
+
CONECT 253 250 254
|
| 1058 |
+
CONECT 254 253 255 257
|
| 1059 |
+
CONECT 255 254 256 261
|
| 1060 |
+
CONECT 256 255
|
| 1061 |
+
CONECT 257 254 258
|
| 1062 |
+
CONECT 258 257 259
|
| 1063 |
+
CONECT 259 258 260
|
| 1064 |
+
CONECT 260 259
|
| 1065 |
+
CONECT 261 255
|
| 1066 |
+
MASTER 303 0 1 2 5 0 0 6 692 1 10 9
|
| 1067 |
+
END
|
models/Attention_module.py
ADDED
|
@@ -0,0 +1,404 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch
|
| 2 |
+
import torch.nn as nn
|
| 3 |
+
import torch.nn.functional as F
|
| 4 |
+
import math
|
| 5 |
+
from opt_einsum import contract as einsum
|
| 6 |
+
from onescience.utils.rfdiffusion.util_module import init_lecun_normal
|
| 7 |
+
|
| 8 |
+
class FeedForwardLayer(nn.Module):
|
| 9 |
+
def __init__(self, d_model, r_ff, p_drop=0.1):
|
| 10 |
+
super(FeedForwardLayer, self).__init__()
|
| 11 |
+
self.norm = nn.LayerNorm(d_model)
|
| 12 |
+
self.linear1 = nn.Linear(d_model, d_model*r_ff)
|
| 13 |
+
self.dropout = nn.Dropout(p_drop)
|
| 14 |
+
self.linear2 = nn.Linear(d_model*r_ff, d_model)
|
| 15 |
+
|
| 16 |
+
self.reset_parameter()
|
| 17 |
+
|
| 18 |
+
def reset_parameter(self):
|
| 19 |
+
# initialize linear layer right before ReLu: He initializer (kaiming normal)
|
| 20 |
+
nn.init.kaiming_normal_(self.linear1.weight, nonlinearity='relu')
|
| 21 |
+
nn.init.zeros_(self.linear1.bias)
|
| 22 |
+
|
| 23 |
+
# initialize linear layer right before residual connection: zero initialize
|
| 24 |
+
nn.init.zeros_(self.linear2.weight)
|
| 25 |
+
nn.init.zeros_(self.linear2.bias)
|
| 26 |
+
|
| 27 |
+
def forward(self, src):
|
| 28 |
+
src = self.norm(src)
|
| 29 |
+
src = self.linear2(self.dropout(F.relu_(self.linear1(src))))
|
| 30 |
+
return src
|
| 31 |
+
|
| 32 |
+
class Attention(nn.Module):
|
| 33 |
+
# calculate multi-head attention
|
| 34 |
+
def __init__(self, d_query, d_key, n_head, d_hidden, d_out):
|
| 35 |
+
super(Attention, self).__init__()
|
| 36 |
+
self.h = n_head
|
| 37 |
+
self.dim = d_hidden
|
| 38 |
+
#
|
| 39 |
+
self.to_q = nn.Linear(d_query, n_head*d_hidden, bias=False)
|
| 40 |
+
self.to_k = nn.Linear(d_key, n_head*d_hidden, bias=False)
|
| 41 |
+
self.to_v = nn.Linear(d_key, n_head*d_hidden, bias=False)
|
| 42 |
+
#
|
| 43 |
+
self.to_out = nn.Linear(n_head*d_hidden, d_out)
|
| 44 |
+
self.scaling = 1/math.sqrt(d_hidden)
|
| 45 |
+
#
|
| 46 |
+
# initialize all parameters properly
|
| 47 |
+
self.reset_parameter()
|
| 48 |
+
|
| 49 |
+
def reset_parameter(self):
|
| 50 |
+
# query/key/value projection: Glorot uniform / Xavier uniform
|
| 51 |
+
nn.init.xavier_uniform_(self.to_q.weight)
|
| 52 |
+
nn.init.xavier_uniform_(self.to_k.weight)
|
| 53 |
+
nn.init.xavier_uniform_(self.to_v.weight)
|
| 54 |
+
|
| 55 |
+
# to_out: right before residual connection: zero initialize -- to make it sure residual operation is same to the Identity at the begining
|
| 56 |
+
nn.init.zeros_(self.to_out.weight)
|
| 57 |
+
nn.init.zeros_(self.to_out.bias)
|
| 58 |
+
|
| 59 |
+
def forward(self, query, key, value):
|
| 60 |
+
B, Q = query.shape[:2]
|
| 61 |
+
B, K = key.shape[:2]
|
| 62 |
+
#
|
| 63 |
+
query = self.to_q(query).reshape(B, Q, self.h, self.dim)
|
| 64 |
+
key = self.to_k(key).reshape(B, K, self.h, self.dim)
|
| 65 |
+
value = self.to_v(value).reshape(B, K, self.h, self.dim)
|
| 66 |
+
#
|
| 67 |
+
query = query * self.scaling
|
| 68 |
+
attn = einsum('bqhd,bkhd->bhqk', query, key)
|
| 69 |
+
attn = F.softmax(attn, dim=-1)
|
| 70 |
+
#
|
| 71 |
+
out = einsum('bhqk,bkhd->bqhd', attn, value)
|
| 72 |
+
out = out.reshape(B, Q, self.h*self.dim)
|
| 73 |
+
#
|
| 74 |
+
out = self.to_out(out)
|
| 75 |
+
|
| 76 |
+
return out
|
| 77 |
+
|
| 78 |
+
class AttentionWithBias(nn.Module):
|
| 79 |
+
def __init__(self, d_in=256, d_bias=128, n_head=8, d_hidden=32):
|
| 80 |
+
super(AttentionWithBias, self).__init__()
|
| 81 |
+
self.norm_in = nn.LayerNorm(d_in)
|
| 82 |
+
self.norm_bias = nn.LayerNorm(d_bias)
|
| 83 |
+
#
|
| 84 |
+
self.to_q = nn.Linear(d_in, n_head*d_hidden, bias=False)
|
| 85 |
+
self.to_k = nn.Linear(d_in, n_head*d_hidden, bias=False)
|
| 86 |
+
self.to_v = nn.Linear(d_in, n_head*d_hidden, bias=False)
|
| 87 |
+
self.to_b = nn.Linear(d_bias, n_head, bias=False)
|
| 88 |
+
self.to_g = nn.Linear(d_in, n_head*d_hidden)
|
| 89 |
+
self.to_out = nn.Linear(n_head*d_hidden, d_in)
|
| 90 |
+
|
| 91 |
+
self.scaling = 1/math.sqrt(d_hidden)
|
| 92 |
+
self.h = n_head
|
| 93 |
+
self.dim = d_hidden
|
| 94 |
+
|
| 95 |
+
self.reset_parameter()
|
| 96 |
+
|
| 97 |
+
def reset_parameter(self):
|
| 98 |
+
# query/key/value projection: Glorot uniform / Xavier uniform
|
| 99 |
+
nn.init.xavier_uniform_(self.to_q.weight)
|
| 100 |
+
nn.init.xavier_uniform_(self.to_k.weight)
|
| 101 |
+
nn.init.xavier_uniform_(self.to_v.weight)
|
| 102 |
+
|
| 103 |
+
# bias: normal distribution
|
| 104 |
+
self.to_b = init_lecun_normal(self.to_b)
|
| 105 |
+
|
| 106 |
+
# gating: zero weights, one biases (mostly open gate at the begining)
|
| 107 |
+
nn.init.zeros_(self.to_g.weight)
|
| 108 |
+
nn.init.ones_(self.to_g.bias)
|
| 109 |
+
|
| 110 |
+
# to_out: right before residual connection: zero initialize -- to make it sure residual operation is same to the Identity at the begining
|
| 111 |
+
nn.init.zeros_(self.to_out.weight)
|
| 112 |
+
nn.init.zeros_(self.to_out.bias)
|
| 113 |
+
|
| 114 |
+
def forward(self, x, bias):
|
| 115 |
+
B, L = x.shape[:2]
|
| 116 |
+
#
|
| 117 |
+
x = self.norm_in(x)
|
| 118 |
+
bias = self.norm_bias(bias)
|
| 119 |
+
#
|
| 120 |
+
query = self.to_q(x).reshape(B, L, self.h, self.dim)
|
| 121 |
+
key = self.to_k(x).reshape(B, L, self.h, self.dim)
|
| 122 |
+
value = self.to_v(x).reshape(B, L, self.h, self.dim)
|
| 123 |
+
bias = self.to_b(bias) # (B, L, L, h)
|
| 124 |
+
gate = torch.sigmoid(self.to_g(x))
|
| 125 |
+
#
|
| 126 |
+
key = key * self.scaling
|
| 127 |
+
attn = einsum('bqhd,bkhd->bqkh', query, key)
|
| 128 |
+
attn = attn + bias
|
| 129 |
+
attn = F.softmax(attn, dim=-2)
|
| 130 |
+
#
|
| 131 |
+
out = einsum('bqkh,bkhd->bqhd', attn, value).reshape(B, L, -1)
|
| 132 |
+
out = gate * out
|
| 133 |
+
#
|
| 134 |
+
out = self.to_out(out)
|
| 135 |
+
return out
|
| 136 |
+
|
| 137 |
+
# MSA Attention (row/column) from AlphaFold architecture
|
| 138 |
+
class SequenceWeight(nn.Module):
|
| 139 |
+
def __init__(self, d_msa, n_head, d_hidden, p_drop=0.1):
|
| 140 |
+
super(SequenceWeight, self).__init__()
|
| 141 |
+
self.h = n_head
|
| 142 |
+
self.dim = d_hidden
|
| 143 |
+
self.scale = 1.0 / math.sqrt(self.dim)
|
| 144 |
+
|
| 145 |
+
self.to_query = nn.Linear(d_msa, n_head*d_hidden)
|
| 146 |
+
self.to_key = nn.Linear(d_msa, n_head*d_hidden)
|
| 147 |
+
self.dropout = nn.Dropout(p_drop)
|
| 148 |
+
|
| 149 |
+
self.reset_parameter()
|
| 150 |
+
|
| 151 |
+
def reset_parameter(self):
|
| 152 |
+
# query/key/value projection: Glorot uniform / Xavier uniform
|
| 153 |
+
nn.init.xavier_uniform_(self.to_query.weight)
|
| 154 |
+
nn.init.xavier_uniform_(self.to_key.weight)
|
| 155 |
+
|
| 156 |
+
def forward(self, msa):
|
| 157 |
+
B, N, L = msa.shape[:3]
|
| 158 |
+
|
| 159 |
+
tar_seq = msa[:,0]
|
| 160 |
+
|
| 161 |
+
q = self.to_query(tar_seq).view(B, 1, L, self.h, self.dim)
|
| 162 |
+
k = self.to_key(msa).view(B, N, L, self.h, self.dim)
|
| 163 |
+
|
| 164 |
+
q = q * self.scale
|
| 165 |
+
attn = einsum('bqihd,bkihd->bkihq', q, k)
|
| 166 |
+
attn = F.softmax(attn, dim=1)
|
| 167 |
+
return self.dropout(attn)
|
| 168 |
+
|
| 169 |
+
class MSARowAttentionWithBias(nn.Module):
|
| 170 |
+
def __init__(self, d_msa=256, d_pair=128, n_head=8, d_hidden=32):
|
| 171 |
+
super(MSARowAttentionWithBias, self).__init__()
|
| 172 |
+
self.norm_msa = nn.LayerNorm(d_msa)
|
| 173 |
+
self.norm_pair = nn.LayerNorm(d_pair)
|
| 174 |
+
#
|
| 175 |
+
self.seq_weight = SequenceWeight(d_msa, n_head, d_hidden, p_drop=0.1)
|
| 176 |
+
self.to_q = nn.Linear(d_msa, n_head*d_hidden, bias=False)
|
| 177 |
+
self.to_k = nn.Linear(d_msa, n_head*d_hidden, bias=False)
|
| 178 |
+
self.to_v = nn.Linear(d_msa, n_head*d_hidden, bias=False)
|
| 179 |
+
self.to_b = nn.Linear(d_pair, n_head, bias=False)
|
| 180 |
+
self.to_g = nn.Linear(d_msa, n_head*d_hidden)
|
| 181 |
+
self.to_out = nn.Linear(n_head*d_hidden, d_msa)
|
| 182 |
+
|
| 183 |
+
self.scaling = 1/math.sqrt(d_hidden)
|
| 184 |
+
self.h = n_head
|
| 185 |
+
self.dim = d_hidden
|
| 186 |
+
|
| 187 |
+
self.reset_parameter()
|
| 188 |
+
|
| 189 |
+
def reset_parameter(self):
|
| 190 |
+
# query/key/value projection: Glorot uniform / Xavier uniform
|
| 191 |
+
nn.init.xavier_uniform_(self.to_q.weight)
|
| 192 |
+
nn.init.xavier_uniform_(self.to_k.weight)
|
| 193 |
+
nn.init.xavier_uniform_(self.to_v.weight)
|
| 194 |
+
|
| 195 |
+
# bias: normal distribution
|
| 196 |
+
self.to_b = init_lecun_normal(self.to_b)
|
| 197 |
+
|
| 198 |
+
# gating: zero weights, one biases (mostly open gate at the begining)
|
| 199 |
+
nn.init.zeros_(self.to_g.weight)
|
| 200 |
+
nn.init.ones_(self.to_g.bias)
|
| 201 |
+
|
| 202 |
+
# to_out: right before residual connection: zero initialize -- to make it sure residual operation is same to the Identity at the begining
|
| 203 |
+
nn.init.zeros_(self.to_out.weight)
|
| 204 |
+
nn.init.zeros_(self.to_out.bias)
|
| 205 |
+
|
| 206 |
+
def forward(self, msa, pair): # TODO: make this as tied-attention
|
| 207 |
+
B, N, L = msa.shape[:3]
|
| 208 |
+
#
|
| 209 |
+
msa = self.norm_msa(msa)
|
| 210 |
+
pair = self.norm_pair(pair)
|
| 211 |
+
#
|
| 212 |
+
seq_weight = self.seq_weight(msa) # (B, N, L, h, 1)
|
| 213 |
+
query = self.to_q(msa).reshape(B, N, L, self.h, self.dim)
|
| 214 |
+
key = self.to_k(msa).reshape(B, N, L, self.h, self.dim)
|
| 215 |
+
value = self.to_v(msa).reshape(B, N, L, self.h, self.dim)
|
| 216 |
+
bias = self.to_b(pair) # (B, L, L, h)
|
| 217 |
+
gate = torch.sigmoid(self.to_g(msa))
|
| 218 |
+
#
|
| 219 |
+
query = query * seq_weight.expand(-1, -1, -1, -1, self.dim)
|
| 220 |
+
key = key * self.scaling
|
| 221 |
+
attn = einsum('bsqhd,bskhd->bqkh', query, key)
|
| 222 |
+
attn = attn + bias
|
| 223 |
+
attn = F.softmax(attn, dim=-2)
|
| 224 |
+
#
|
| 225 |
+
out = einsum('bqkh,bskhd->bsqhd', attn, value).reshape(B, N, L, -1)
|
| 226 |
+
out = gate * out
|
| 227 |
+
#
|
| 228 |
+
out = self.to_out(out)
|
| 229 |
+
return out
|
| 230 |
+
|
| 231 |
+
class MSAColAttention(nn.Module):
|
| 232 |
+
def __init__(self, d_msa=256, n_head=8, d_hidden=32):
|
| 233 |
+
super(MSAColAttention, self).__init__()
|
| 234 |
+
self.norm_msa = nn.LayerNorm(d_msa)
|
| 235 |
+
#
|
| 236 |
+
self.to_q = nn.Linear(d_msa, n_head*d_hidden, bias=False)
|
| 237 |
+
self.to_k = nn.Linear(d_msa, n_head*d_hidden, bias=False)
|
| 238 |
+
self.to_v = nn.Linear(d_msa, n_head*d_hidden, bias=False)
|
| 239 |
+
self.to_g = nn.Linear(d_msa, n_head*d_hidden)
|
| 240 |
+
self.to_out = nn.Linear(n_head*d_hidden, d_msa)
|
| 241 |
+
|
| 242 |
+
self.scaling = 1/math.sqrt(d_hidden)
|
| 243 |
+
self.h = n_head
|
| 244 |
+
self.dim = d_hidden
|
| 245 |
+
|
| 246 |
+
self.reset_parameter()
|
| 247 |
+
|
| 248 |
+
def reset_parameter(self):
|
| 249 |
+
# query/key/value projection: Glorot uniform / Xavier uniform
|
| 250 |
+
nn.init.xavier_uniform_(self.to_q.weight)
|
| 251 |
+
nn.init.xavier_uniform_(self.to_k.weight)
|
| 252 |
+
nn.init.xavier_uniform_(self.to_v.weight)
|
| 253 |
+
|
| 254 |
+
# gating: zero weights, one biases (mostly open gate at the begining)
|
| 255 |
+
nn.init.zeros_(self.to_g.weight)
|
| 256 |
+
nn.init.ones_(self.to_g.bias)
|
| 257 |
+
|
| 258 |
+
# to_out: right before residual connection: zero initialize -- to make it sure residual operation is same to the Identity at the begining
|
| 259 |
+
nn.init.zeros_(self.to_out.weight)
|
| 260 |
+
nn.init.zeros_(self.to_out.bias)
|
| 261 |
+
|
| 262 |
+
def forward(self, msa):
|
| 263 |
+
B, N, L = msa.shape[:3]
|
| 264 |
+
#
|
| 265 |
+
msa = self.norm_msa(msa)
|
| 266 |
+
#
|
| 267 |
+
query = self.to_q(msa).reshape(B, N, L, self.h, self.dim)
|
| 268 |
+
key = self.to_k(msa).reshape(B, N, L, self.h, self.dim)
|
| 269 |
+
value = self.to_v(msa).reshape(B, N, L, self.h, self.dim)
|
| 270 |
+
gate = torch.sigmoid(self.to_g(msa))
|
| 271 |
+
#
|
| 272 |
+
query = query * self.scaling
|
| 273 |
+
attn = einsum('bqihd,bkihd->bihqk', query, key)
|
| 274 |
+
attn = F.softmax(attn, dim=-1)
|
| 275 |
+
#
|
| 276 |
+
out = einsum('bihqk,bkihd->bqihd', attn, value).reshape(B, N, L, -1)
|
| 277 |
+
out = gate * out
|
| 278 |
+
#
|
| 279 |
+
out = self.to_out(out)
|
| 280 |
+
return out
|
| 281 |
+
|
| 282 |
+
class MSAColGlobalAttention(nn.Module):
|
| 283 |
+
def __init__(self, d_msa=64, n_head=8, d_hidden=8):
|
| 284 |
+
super(MSAColGlobalAttention, self).__init__()
|
| 285 |
+
self.norm_msa = nn.LayerNorm(d_msa)
|
| 286 |
+
#
|
| 287 |
+
self.to_q = nn.Linear(d_msa, n_head*d_hidden, bias=False)
|
| 288 |
+
self.to_k = nn.Linear(d_msa, d_hidden, bias=False)
|
| 289 |
+
self.to_v = nn.Linear(d_msa, d_hidden, bias=False)
|
| 290 |
+
self.to_g = nn.Linear(d_msa, n_head*d_hidden)
|
| 291 |
+
self.to_out = nn.Linear(n_head*d_hidden, d_msa)
|
| 292 |
+
|
| 293 |
+
self.scaling = 1/math.sqrt(d_hidden)
|
| 294 |
+
self.h = n_head
|
| 295 |
+
self.dim = d_hidden
|
| 296 |
+
|
| 297 |
+
self.reset_parameter()
|
| 298 |
+
|
| 299 |
+
def reset_parameter(self):
|
| 300 |
+
# query/key/value projection: Glorot uniform / Xavier uniform
|
| 301 |
+
nn.init.xavier_uniform_(self.to_q.weight)
|
| 302 |
+
nn.init.xavier_uniform_(self.to_k.weight)
|
| 303 |
+
nn.init.xavier_uniform_(self.to_v.weight)
|
| 304 |
+
|
| 305 |
+
# gating: zero weights, one biases (mostly open gate at the begining)
|
| 306 |
+
nn.init.zeros_(self.to_g.weight)
|
| 307 |
+
nn.init.ones_(self.to_g.bias)
|
| 308 |
+
|
| 309 |
+
# to_out: right before residual connection: zero initialize -- to make it sure residual operation is same to the Identity at the begining
|
| 310 |
+
nn.init.zeros_(self.to_out.weight)
|
| 311 |
+
nn.init.zeros_(self.to_out.bias)
|
| 312 |
+
|
| 313 |
+
def forward(self, msa):
|
| 314 |
+
B, N, L = msa.shape[:3]
|
| 315 |
+
#
|
| 316 |
+
msa = self.norm_msa(msa)
|
| 317 |
+
#
|
| 318 |
+
query = self.to_q(msa).reshape(B, N, L, self.h, self.dim)
|
| 319 |
+
query = query.mean(dim=1) # (B, L, h, dim)
|
| 320 |
+
key = self.to_k(msa) # (B, N, L, dim)
|
| 321 |
+
value = self.to_v(msa) # (B, N, L, dim)
|
| 322 |
+
gate = torch.sigmoid(self.to_g(msa)) # (B, N, L, h*dim)
|
| 323 |
+
#
|
| 324 |
+
query = query * self.scaling
|
| 325 |
+
attn = einsum('bihd,bkid->bihk', query, key) # (B, L, h, N)
|
| 326 |
+
attn = F.softmax(attn, dim=-1)
|
| 327 |
+
#
|
| 328 |
+
out = einsum('bihk,bkid->bihd', attn, value).reshape(B, 1, L, -1) # (B, 1, L, h*dim)
|
| 329 |
+
out = gate * out # (B, N, L, h*dim)
|
| 330 |
+
#
|
| 331 |
+
out = self.to_out(out)
|
| 332 |
+
return out
|
| 333 |
+
|
| 334 |
+
# Instead of triangle attention, use Tied axail attention with bias from coordinates..?
|
| 335 |
+
class BiasedAxialAttention(nn.Module):
|
| 336 |
+
def __init__(self, d_pair, d_bias, n_head, d_hidden, p_drop=0.1, is_row=True):
|
| 337 |
+
super(BiasedAxialAttention, self).__init__()
|
| 338 |
+
#
|
| 339 |
+
self.is_row = is_row
|
| 340 |
+
self.norm_pair = nn.LayerNorm(d_pair)
|
| 341 |
+
self.norm_bias = nn.LayerNorm(d_bias)
|
| 342 |
+
|
| 343 |
+
self.to_q = nn.Linear(d_pair, n_head*d_hidden, bias=False)
|
| 344 |
+
self.to_k = nn.Linear(d_pair, n_head*d_hidden, bias=False)
|
| 345 |
+
self.to_v = nn.Linear(d_pair, n_head*d_hidden, bias=False)
|
| 346 |
+
self.to_b = nn.Linear(d_bias, n_head, bias=False)
|
| 347 |
+
self.to_g = nn.Linear(d_pair, n_head*d_hidden)
|
| 348 |
+
self.to_out = nn.Linear(n_head*d_hidden, d_pair)
|
| 349 |
+
|
| 350 |
+
self.scaling = 1/math.sqrt(d_hidden)
|
| 351 |
+
self.h = n_head
|
| 352 |
+
self.dim = d_hidden
|
| 353 |
+
|
| 354 |
+
# initialize all parameters properly
|
| 355 |
+
self.reset_parameter()
|
| 356 |
+
|
| 357 |
+
def reset_parameter(self):
|
| 358 |
+
# query/key/value projection: Glorot uniform / Xavier uniform
|
| 359 |
+
nn.init.xavier_uniform_(self.to_q.weight)
|
| 360 |
+
nn.init.xavier_uniform_(self.to_k.weight)
|
| 361 |
+
nn.init.xavier_uniform_(self.to_v.weight)
|
| 362 |
+
|
| 363 |
+
# bias: normal distribution
|
| 364 |
+
self.to_b = init_lecun_normal(self.to_b)
|
| 365 |
+
|
| 366 |
+
# gating: zero weights, one biases (mostly open gate at the begining)
|
| 367 |
+
nn.init.zeros_(self.to_g.weight)
|
| 368 |
+
nn.init.ones_(self.to_g.bias)
|
| 369 |
+
|
| 370 |
+
# to_out: right before residual connection: zero initialize -- to make it sure residual operation is same to the Identity at the begining
|
| 371 |
+
nn.init.zeros_(self.to_out.weight)
|
| 372 |
+
nn.init.zeros_(self.to_out.bias)
|
| 373 |
+
|
| 374 |
+
def forward(self, pair, bias):
|
| 375 |
+
# pair: (B, L, L, d_pair)
|
| 376 |
+
B, L = pair.shape[:2]
|
| 377 |
+
|
| 378 |
+
if self.is_row:
|
| 379 |
+
pair = pair.permute(0,2,1,3)
|
| 380 |
+
bias = bias.permute(0,2,1,3)
|
| 381 |
+
|
| 382 |
+
pair = self.norm_pair(pair)
|
| 383 |
+
bias = self.norm_bias(bias)
|
| 384 |
+
|
| 385 |
+
query = self.to_q(pair).reshape(B, L, L, self.h, self.dim)
|
| 386 |
+
key = self.to_k(pair).reshape(B, L, L, self.h, self.dim)
|
| 387 |
+
value = self.to_v(pair).reshape(B, L, L, self.h, self.dim)
|
| 388 |
+
bias = self.to_b(bias) # (B, L, L, h)
|
| 389 |
+
gate = torch.sigmoid(self.to_g(pair)) # (B, L, L, h*dim)
|
| 390 |
+
|
| 391 |
+
query = query * self.scaling
|
| 392 |
+
key = key / math.sqrt(L) # normalize for tied attention
|
| 393 |
+
attn = einsum('bnihk,bnjhk->bijh', query, key) # tied attention
|
| 394 |
+
attn = attn + bias # apply bias
|
| 395 |
+
attn = F.softmax(attn, dim=-2) # (B, L, L, h)
|
| 396 |
+
|
| 397 |
+
out = einsum('bijh,bkjhd->bikhd', attn, value).reshape(B, L, L, -1)
|
| 398 |
+
out = gate * out
|
| 399 |
+
|
| 400 |
+
out = self.to_out(out)
|
| 401 |
+
if self.is_row:
|
| 402 |
+
out = out.permute(0,2,1,3)
|
| 403 |
+
return out
|
| 404 |
+
|
models/AuxiliaryPredictor.py
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch
|
| 2 |
+
import torch.nn as nn
|
| 3 |
+
|
| 4 |
+
class DistanceNetwork(nn.Module):
|
| 5 |
+
def __init__(self, n_feat, p_drop=0.1):
|
| 6 |
+
super(DistanceNetwork, self).__init__()
|
| 7 |
+
#
|
| 8 |
+
self.proj_symm = nn.Linear(n_feat, 37*2)
|
| 9 |
+
self.proj_asymm = nn.Linear(n_feat, 37+19)
|
| 10 |
+
|
| 11 |
+
self.reset_parameter()
|
| 12 |
+
|
| 13 |
+
def reset_parameter(self):
|
| 14 |
+
# initialize linear layer for final logit prediction
|
| 15 |
+
nn.init.zeros_(self.proj_symm.weight)
|
| 16 |
+
nn.init.zeros_(self.proj_asymm.weight)
|
| 17 |
+
nn.init.zeros_(self.proj_symm.bias)
|
| 18 |
+
nn.init.zeros_(self.proj_asymm.bias)
|
| 19 |
+
|
| 20 |
+
def forward(self, x):
|
| 21 |
+
# input: pair info (B, L, L, C)
|
| 22 |
+
|
| 23 |
+
# predict theta, phi (non-symmetric)
|
| 24 |
+
logits_asymm = self.proj_asymm(x)
|
| 25 |
+
logits_theta = logits_asymm[:,:,:,:37].permute(0,3,1,2)
|
| 26 |
+
logits_phi = logits_asymm[:,:,:,37:].permute(0,3,1,2)
|
| 27 |
+
|
| 28 |
+
# predict dist, omega
|
| 29 |
+
logits_symm = self.proj_symm(x)
|
| 30 |
+
logits_symm = logits_symm + logits_symm.permute(0,2,1,3)
|
| 31 |
+
logits_dist = logits_symm[:,:,:,:37].permute(0,3,1,2)
|
| 32 |
+
logits_omega = logits_symm[:,:,:,37:].permute(0,3,1,2)
|
| 33 |
+
|
| 34 |
+
return logits_dist, logits_omega, logits_theta, logits_phi
|
| 35 |
+
|
| 36 |
+
class MaskedTokenNetwork(nn.Module):
|
| 37 |
+
def __init__(self, n_feat):
|
| 38 |
+
super(MaskedTokenNetwork, self).__init__()
|
| 39 |
+
self.proj = nn.Linear(n_feat, 21)
|
| 40 |
+
|
| 41 |
+
self.reset_parameter()
|
| 42 |
+
|
| 43 |
+
def reset_parameter(self):
|
| 44 |
+
nn.init.zeros_(self.proj.weight)
|
| 45 |
+
nn.init.zeros_(self.proj.bias)
|
| 46 |
+
|
| 47 |
+
def forward(self, x):
|
| 48 |
+
B, N, L = x.shape[:3]
|
| 49 |
+
logits = self.proj(x).permute(0,3,1,2).reshape(B, -1, N*L)
|
| 50 |
+
|
| 51 |
+
return logits
|
| 52 |
+
|
| 53 |
+
class LDDTNetwork(nn.Module):
|
| 54 |
+
def __init__(self, n_feat, n_bin_lddt=50):
|
| 55 |
+
super(LDDTNetwork, self).__init__()
|
| 56 |
+
self.proj = nn.Linear(n_feat, n_bin_lddt)
|
| 57 |
+
|
| 58 |
+
self.reset_parameter()
|
| 59 |
+
|
| 60 |
+
def reset_parameter(self):
|
| 61 |
+
nn.init.zeros_(self.proj.weight)
|
| 62 |
+
nn.init.zeros_(self.proj.bias)
|
| 63 |
+
|
| 64 |
+
def forward(self, x):
|
| 65 |
+
logits = self.proj(x) # (B, L, 50)
|
| 66 |
+
|
| 67 |
+
return logits.permute(0,2,1)
|
| 68 |
+
|
| 69 |
+
class ExpResolvedNetwork(nn.Module):
|
| 70 |
+
def __init__(self, d_msa, d_state, p_drop=0.1):
|
| 71 |
+
super(ExpResolvedNetwork, self).__init__()
|
| 72 |
+
self.norm_msa = nn.LayerNorm(d_msa)
|
| 73 |
+
self.norm_state = nn.LayerNorm(d_state)
|
| 74 |
+
self.proj = nn.Linear(d_msa+d_state, 1)
|
| 75 |
+
|
| 76 |
+
self.reset_parameter()
|
| 77 |
+
|
| 78 |
+
def reset_parameter(self):
|
| 79 |
+
nn.init.zeros_(self.proj.weight)
|
| 80 |
+
nn.init.zeros_(self.proj.bias)
|
| 81 |
+
|
| 82 |
+
def forward(self, seq, state):
|
| 83 |
+
B, L = seq.shape[:2]
|
| 84 |
+
|
| 85 |
+
seq = self.norm_msa(seq)
|
| 86 |
+
state = self.norm_state(state)
|
| 87 |
+
feat = torch.cat((seq, state), dim=-1)
|
| 88 |
+
logits = self.proj(feat)
|
| 89 |
+
return logits.reshape(B, L)
|
| 90 |
+
|
| 91 |
+
|
| 92 |
+
|
models/Embeddings.py
ADDED
|
@@ -0,0 +1,303 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch
|
| 2 |
+
import torch.nn as nn
|
| 3 |
+
import torch.nn.functional as F
|
| 4 |
+
from opt_einsum import contract as einsum
|
| 5 |
+
import torch.utils.checkpoint as checkpoint
|
| 6 |
+
from onescience.utils.rfdiffusion.util import get_tips
|
| 7 |
+
from onescience.utils.rfdiffusion.util_module import Dropout, create_custom_forward, rbf, init_lecun_normal
|
| 8 |
+
from .Attention_module import Attention, FeedForwardLayer, AttentionWithBias
|
| 9 |
+
from .Track_module import PairStr2Pair
|
| 10 |
+
import math
|
| 11 |
+
|
| 12 |
+
# Module contains classes and functions to generate initial embeddings
|
| 13 |
+
|
| 14 |
+
class PositionalEncoding2D(nn.Module):
|
| 15 |
+
# Add relative positional encoding to pair features
|
| 16 |
+
def __init__(self, d_model, minpos=-32, maxpos=32, p_drop=0.1):
|
| 17 |
+
super(PositionalEncoding2D, self).__init__()
|
| 18 |
+
self.minpos = minpos
|
| 19 |
+
self.maxpos = maxpos
|
| 20 |
+
self.nbin = abs(minpos)+maxpos+1
|
| 21 |
+
self.emb = nn.Embedding(self.nbin, d_model)
|
| 22 |
+
self.drop = nn.Dropout(p_drop)
|
| 23 |
+
|
| 24 |
+
def forward(self, x, idx):
|
| 25 |
+
bins = torch.arange(self.minpos, self.maxpos, device=x.device)
|
| 26 |
+
seqsep = idx[:,None,:] - idx[:,:,None] # (B, L, L)
|
| 27 |
+
#
|
| 28 |
+
ib = torch.bucketize(seqsep, bins).long() # (B, L, L)
|
| 29 |
+
emb = self.emb(ib) #(B, L, L, d_model)
|
| 30 |
+
x = x + emb # add relative positional encoding
|
| 31 |
+
return self.drop(x)
|
| 32 |
+
|
| 33 |
+
class MSA_emb(nn.Module):
|
| 34 |
+
# Get initial seed MSA embedding
|
| 35 |
+
def __init__(self, d_msa=256, d_pair=128, d_state=32, d_init=22+22+2+2,
|
| 36 |
+
minpos=-32, maxpos=32, p_drop=0.1, input_seq_onehot=False):
|
| 37 |
+
super(MSA_emb, self).__init__()
|
| 38 |
+
self.emb = nn.Linear(d_init, d_msa) # embedding for general MSA
|
| 39 |
+
self.emb_q = nn.Embedding(22, d_msa) # embedding for query sequence -- used for MSA embedding
|
| 40 |
+
self.emb_left = nn.Embedding(22, d_pair) # embedding for query sequence -- used for pair embedding
|
| 41 |
+
self.emb_right = nn.Embedding(22, d_pair) # embedding for query sequence -- used for pair embedding
|
| 42 |
+
self.emb_state = nn.Embedding(22, d_state)
|
| 43 |
+
self.drop = nn.Dropout(p_drop)
|
| 44 |
+
self.pos = PositionalEncoding2D(d_pair, minpos=minpos, maxpos=maxpos, p_drop=p_drop)
|
| 45 |
+
|
| 46 |
+
self.input_seq_onehot=input_seq_onehot
|
| 47 |
+
|
| 48 |
+
self.reset_parameter()
|
| 49 |
+
|
| 50 |
+
def reset_parameter(self):
|
| 51 |
+
self.emb = init_lecun_normal(self.emb)
|
| 52 |
+
self.emb_q = init_lecun_normal(self.emb_q)
|
| 53 |
+
self.emb_left = init_lecun_normal(self.emb_left)
|
| 54 |
+
self.emb_right = init_lecun_normal(self.emb_right)
|
| 55 |
+
self.emb_state = init_lecun_normal(self.emb_state)
|
| 56 |
+
|
| 57 |
+
nn.init.zeros_(self.emb.bias)
|
| 58 |
+
|
| 59 |
+
def forward(self, msa, seq, idx):
|
| 60 |
+
# Inputs:
|
| 61 |
+
# - msa: Input MSA (B, N, L, d_init)
|
| 62 |
+
# - seq: Input Sequence (B, L)
|
| 63 |
+
# - idx: Residue index
|
| 64 |
+
# Outputs:
|
| 65 |
+
# - msa: Initial MSA embedding (B, N, L, d_msa)
|
| 66 |
+
# - pair: Initial Pair embedding (B, L, L, d_pair)
|
| 67 |
+
|
| 68 |
+
N = msa.shape[1] # number of sequenes in MSA
|
| 69 |
+
|
| 70 |
+
# msa embedding
|
| 71 |
+
msa = self.emb(msa) # (B, N, L, d_model) # MSA embedding
|
| 72 |
+
|
| 73 |
+
# Sergey's one hot trick
|
| 74 |
+
tmp = (seq @ self.emb_q.weight).unsqueeze(1) # (B, 1, L, d_model) -- query embedding
|
| 75 |
+
|
| 76 |
+
msa = msa + tmp.expand(-1, N, -1, -1) # adding query embedding to MSA
|
| 77 |
+
msa = self.drop(msa)
|
| 78 |
+
|
| 79 |
+
# pair embedding
|
| 80 |
+
# Sergey's one hot trick
|
| 81 |
+
left = (seq @ self.emb_left.weight)[:,None] # (B, 1, L, d_pair)
|
| 82 |
+
right = (seq @ self.emb_right.weight)[:,:,None] # (B, L, 1, d_pair)
|
| 83 |
+
|
| 84 |
+
pair = left + right # (B, L, L, d_pair)
|
| 85 |
+
pair = self.pos(pair, idx) # add relative position
|
| 86 |
+
|
| 87 |
+
# state embedding
|
| 88 |
+
# Sergey's one hot trick
|
| 89 |
+
state = self.drop(seq @ self.emb_state.weight)
|
| 90 |
+
return msa, pair, state
|
| 91 |
+
|
| 92 |
+
class Extra_emb(nn.Module):
|
| 93 |
+
# Get initial seed MSA embedding
|
| 94 |
+
def __init__(self, d_msa=256, d_init=22+1+2, p_drop=0.1, input_seq_onehot=False):
|
| 95 |
+
super(Extra_emb, self).__init__()
|
| 96 |
+
self.emb = nn.Linear(d_init, d_msa) # embedding for general MSA
|
| 97 |
+
self.emb_q = nn.Embedding(22, d_msa) # embedding for query sequence
|
| 98 |
+
self.drop = nn.Dropout(p_drop)
|
| 99 |
+
|
| 100 |
+
self.input_seq_onehot=input_seq_onehot
|
| 101 |
+
|
| 102 |
+
self.reset_parameter()
|
| 103 |
+
|
| 104 |
+
def reset_parameter(self):
|
| 105 |
+
self.emb = init_lecun_normal(self.emb)
|
| 106 |
+
nn.init.zeros_(self.emb.bias)
|
| 107 |
+
|
| 108 |
+
def forward(self, msa, seq, idx):
|
| 109 |
+
# Inputs:
|
| 110 |
+
# - msa: Input MSA (B, N, L, d_init)
|
| 111 |
+
# - seq: Input Sequence (B, L)
|
| 112 |
+
# - idx: Residue index
|
| 113 |
+
# Outputs:
|
| 114 |
+
# - msa: Initial MSA embedding (B, N, L, d_msa)
|
| 115 |
+
N = msa.shape[1] # number of sequenes in MSA
|
| 116 |
+
msa = self.emb(msa) # (B, N, L, d_model) # MSA embedding
|
| 117 |
+
|
| 118 |
+
# Sergey's one hot trick
|
| 119 |
+
seq = (seq @ self.emb_q.weight).unsqueeze(1) # (B, 1, L, d_model) -- query embedding
|
| 120 |
+
msa = msa + seq.expand(-1, N, -1, -1) # adding query embedding to MSA
|
| 121 |
+
return self.drop(msa)
|
| 122 |
+
|
| 123 |
+
class TemplatePairStack(nn.Module):
|
| 124 |
+
# process template pairwise features
|
| 125 |
+
# use structure-biased attention
|
| 126 |
+
def __init__(self, n_block=2, d_templ=64, n_head=4, d_hidden=16, p_drop=0.25):
|
| 127 |
+
super(TemplatePairStack, self).__init__()
|
| 128 |
+
self.n_block = n_block
|
| 129 |
+
proc_s = [PairStr2Pair(d_pair=d_templ, n_head=n_head, d_hidden=d_hidden, p_drop=p_drop) for i in range(n_block)]
|
| 130 |
+
self.block = nn.ModuleList(proc_s)
|
| 131 |
+
self.norm = nn.LayerNorm(d_templ)
|
| 132 |
+
def forward(self, templ, rbf_feat, use_checkpoint=False):
|
| 133 |
+
B, T, L = templ.shape[:3]
|
| 134 |
+
templ = templ.reshape(B*T, L, L, -1)
|
| 135 |
+
|
| 136 |
+
for i_block in range(self.n_block):
|
| 137 |
+
if use_checkpoint:
|
| 138 |
+
templ = checkpoint.checkpoint(create_custom_forward(self.block[i_block]), templ, rbf_feat)
|
| 139 |
+
else:
|
| 140 |
+
templ = self.block[i_block](templ, rbf_feat)
|
| 141 |
+
return self.norm(templ).reshape(B, T, L, L, -1)
|
| 142 |
+
|
| 143 |
+
class TemplateTorsionStack(nn.Module):
|
| 144 |
+
def __init__(self, n_block=2, d_templ=64, n_head=4, d_hidden=16, p_drop=0.15):
|
| 145 |
+
super(TemplateTorsionStack, self).__init__()
|
| 146 |
+
self.n_block=n_block
|
| 147 |
+
self.proj_pair = nn.Linear(d_templ+36, d_templ)
|
| 148 |
+
proc_s = [AttentionWithBias(d_in=d_templ, d_bias=d_templ,
|
| 149 |
+
n_head=n_head, d_hidden=d_hidden) for i in range(n_block)]
|
| 150 |
+
self.row_attn = nn.ModuleList(proc_s)
|
| 151 |
+
proc_s = [FeedForwardLayer(d_templ, 4, p_drop=p_drop) for i in range(n_block)]
|
| 152 |
+
self.ff = nn.ModuleList(proc_s)
|
| 153 |
+
self.norm = nn.LayerNorm(d_templ)
|
| 154 |
+
|
| 155 |
+
def reset_parameter(self):
|
| 156 |
+
self.proj_pair = init_lecun_normal(self.proj_pair)
|
| 157 |
+
nn.init.zeros_(self.proj_pair.bias)
|
| 158 |
+
|
| 159 |
+
def forward(self, tors, pair, rbf_feat, use_checkpoint=False):
|
| 160 |
+
B, T, L = tors.shape[:3]
|
| 161 |
+
tors = tors.reshape(B*T, L, -1)
|
| 162 |
+
pair = pair.reshape(B*T, L, L, -1)
|
| 163 |
+
pair = torch.cat((pair, rbf_feat), dim=-1)
|
| 164 |
+
pair = self.proj_pair(pair)
|
| 165 |
+
|
| 166 |
+
for i_block in range(self.n_block):
|
| 167 |
+
if use_checkpoint:
|
| 168 |
+
tors = tors + checkpoint.checkpoint(create_custom_forward(self.row_attn[i_block]), tors, pair)
|
| 169 |
+
else:
|
| 170 |
+
tors = tors + self.row_attn[i_block](tors, pair)
|
| 171 |
+
tors = tors + self.ff[i_block](tors)
|
| 172 |
+
return self.norm(tors).reshape(B, T, L, -1)
|
| 173 |
+
|
| 174 |
+
class Templ_emb(nn.Module):
|
| 175 |
+
# Get template embedding
|
| 176 |
+
# Features are
|
| 177 |
+
# t2d:
|
| 178 |
+
# - 37 distogram bins + 6 orientations (43)
|
| 179 |
+
# - Mask (missing/unaligned) (1)
|
| 180 |
+
# t1d:
|
| 181 |
+
# - tiled AA sequence (20 standard aa + gap)
|
| 182 |
+
# - confidence (1)
|
| 183 |
+
# - contacting or note (1). NB this is added for diffusion model. Used only in complex training examples - 1 signifies that a residue in the non-diffused chain\
|
| 184 |
+
# i.e. the context, is in contact with the diffused chain.
|
| 185 |
+
#
|
| 186 |
+
#Added extra t1d dimension for contacting or not
|
| 187 |
+
def __init__(self, d_t1d=21+1+1, d_t2d=43+1, d_tor=30, d_pair=128, d_state=32,
|
| 188 |
+
n_block=2, d_templ=64,
|
| 189 |
+
n_head=4, d_hidden=16, p_drop=0.25):
|
| 190 |
+
super(Templ_emb, self).__init__()
|
| 191 |
+
# process 2D features
|
| 192 |
+
self.emb = nn.Linear(d_t1d*2+d_t2d, d_templ)
|
| 193 |
+
self.templ_stack = TemplatePairStack(n_block=n_block, d_templ=d_templ, n_head=n_head,
|
| 194 |
+
d_hidden=d_hidden, p_drop=p_drop)
|
| 195 |
+
|
| 196 |
+
self.attn = Attention(d_pair, d_templ, n_head, d_hidden, d_pair)
|
| 197 |
+
|
| 198 |
+
# process torsion angles
|
| 199 |
+
self.emb_t1d = nn.Linear(d_t1d+d_tor, d_templ)
|
| 200 |
+
self.proj_t1d = nn.Linear(d_templ, d_templ)
|
| 201 |
+
#self.tor_stack = TemplateTorsionStack(n_block=n_block, d_templ=d_templ, n_head=n_head,
|
| 202 |
+
# d_hidden=d_hidden, p_drop=p_drop)
|
| 203 |
+
self.attn_tor = Attention(d_state, d_templ, n_head, d_hidden, d_state)
|
| 204 |
+
|
| 205 |
+
self.reset_parameter()
|
| 206 |
+
|
| 207 |
+
def reset_parameter(self):
|
| 208 |
+
self.emb = init_lecun_normal(self.emb)
|
| 209 |
+
nn.init.zeros_(self.emb.bias)
|
| 210 |
+
|
| 211 |
+
nn.init.kaiming_normal_(self.emb_t1d.weight, nonlinearity='relu')
|
| 212 |
+
nn.init.zeros_(self.emb_t1d.bias)
|
| 213 |
+
|
| 214 |
+
self.proj_t1d = init_lecun_normal(self.proj_t1d)
|
| 215 |
+
nn.init.zeros_(self.proj_t1d.bias)
|
| 216 |
+
|
| 217 |
+
def forward(self, t1d, t2d, alpha_t, xyz_t, pair, state, use_checkpoint=False):
|
| 218 |
+
# Input
|
| 219 |
+
# - t1d: 1D template info (B, T, L, 23)
|
| 220 |
+
# - t2d: 2D template info (B, T, L, L, 44)
|
| 221 |
+
B, T, L, _ = t1d.shape
|
| 222 |
+
|
| 223 |
+
# Prepare 2D template features
|
| 224 |
+
left = t1d.unsqueeze(3).expand(-1,-1,-1,L,-1)
|
| 225 |
+
right = t1d.unsqueeze(2).expand(-1,-1,L,-1,-1)
|
| 226 |
+
#
|
| 227 |
+
templ = torch.cat((t2d, left, right), -1) # (B, T, L, L, 90)
|
| 228 |
+
templ = self.emb(templ) # Template templures (B, T, L, L, d_templ)
|
| 229 |
+
# process each template features
|
| 230 |
+
xyz_t = xyz_t.reshape(B*T, L, -1, 3)
|
| 231 |
+
rbf_feat = rbf(torch.cdist(xyz_t[:,:,1], xyz_t[:,:,1]))
|
| 232 |
+
templ = self.templ_stack(templ, rbf_feat, use_checkpoint=use_checkpoint) # (B, T, L,L, d_templ)
|
| 233 |
+
|
| 234 |
+
# Prepare 1D template torsion angle features
|
| 235 |
+
t1d = torch.cat((t1d, alpha_t), dim=-1) # (B, T, L, 23+30)
|
| 236 |
+
|
| 237 |
+
# process each template features
|
| 238 |
+
t1d = self.proj_t1d(F.relu_(self.emb_t1d(t1d)))
|
| 239 |
+
|
| 240 |
+
# mixing query state features to template state features
|
| 241 |
+
state = state.reshape(B*L, 1, -1)
|
| 242 |
+
t1d = t1d.permute(0,2,1,3).reshape(B*L, T, -1)
|
| 243 |
+
if use_checkpoint:
|
| 244 |
+
out = checkpoint.checkpoint(create_custom_forward(self.attn_tor), state, t1d, t1d)
|
| 245 |
+
out = out.reshape(B, L, -1)
|
| 246 |
+
else:
|
| 247 |
+
out = self.attn_tor(state, t1d, t1d).reshape(B, L, -1)
|
| 248 |
+
state = state.reshape(B, L, -1)
|
| 249 |
+
state = state + out
|
| 250 |
+
|
| 251 |
+
# mixing query pair features to template information (Template pointwise attention)
|
| 252 |
+
pair = pair.reshape(B*L*L, 1, -1)
|
| 253 |
+
templ = templ.permute(0, 2, 3, 1, 4).reshape(B*L*L, T, -1)
|
| 254 |
+
if use_checkpoint:
|
| 255 |
+
out = checkpoint.checkpoint(create_custom_forward(self.attn), pair, templ, templ)
|
| 256 |
+
out = out.reshape(B, L, L, -1)
|
| 257 |
+
else:
|
| 258 |
+
out = self.attn(pair, templ, templ).reshape(B, L, L, -1)
|
| 259 |
+
#
|
| 260 |
+
pair = pair.reshape(B, L, L, -1)
|
| 261 |
+
pair = pair + out
|
| 262 |
+
|
| 263 |
+
return pair, state
|
| 264 |
+
|
| 265 |
+
class Recycling(nn.Module):
|
| 266 |
+
def __init__(self, d_msa=256, d_pair=128, d_state=32):
|
| 267 |
+
super(Recycling, self).__init__()
|
| 268 |
+
self.proj_dist = nn.Linear(36+d_state*2, d_pair)
|
| 269 |
+
self.norm_state = nn.LayerNorm(d_state)
|
| 270 |
+
self.norm_pair = nn.LayerNorm(d_pair)
|
| 271 |
+
self.norm_msa = nn.LayerNorm(d_msa)
|
| 272 |
+
|
| 273 |
+
self.reset_parameter()
|
| 274 |
+
|
| 275 |
+
def reset_parameter(self):
|
| 276 |
+
self.proj_dist = init_lecun_normal(self.proj_dist)
|
| 277 |
+
nn.init.zeros_(self.proj_dist.bias)
|
| 278 |
+
|
| 279 |
+
def forward(self, seq, msa, pair, xyz, state):
|
| 280 |
+
B, L = pair.shape[:2]
|
| 281 |
+
state = self.norm_state(state)
|
| 282 |
+
#
|
| 283 |
+
left = state.unsqueeze(2).expand(-1,-1,L,-1)
|
| 284 |
+
right = state.unsqueeze(1).expand(-1,L,-1,-1)
|
| 285 |
+
|
| 286 |
+
# three anchor atoms
|
| 287 |
+
N = xyz[:,:,0]
|
| 288 |
+
Ca = xyz[:,:,1]
|
| 289 |
+
C = xyz[:,:,2]
|
| 290 |
+
|
| 291 |
+
# recreate Cb given N,Ca,C
|
| 292 |
+
b = Ca - N
|
| 293 |
+
c = C - Ca
|
| 294 |
+
a = torch.cross(b, c, dim=-1)
|
| 295 |
+
Cb = -0.58273431*a + 0.56802827*b - 0.54067466*c + Ca
|
| 296 |
+
|
| 297 |
+
dist = rbf(torch.cdist(Cb, Cb))
|
| 298 |
+
dist = torch.cat((dist, left, right), dim=-1)
|
| 299 |
+
dist = self.proj_dist(dist)
|
| 300 |
+
pair = dist + self.norm_pair(pair)
|
| 301 |
+
msa = self.norm_msa(msa)
|
| 302 |
+
return msa, pair, state
|
| 303 |
+
|
models/RoseTTAFoldModel.py
ADDED
|
@@ -0,0 +1,140 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch
|
| 2 |
+
import torch.nn as nn
|
| 3 |
+
from .Embeddings import MSA_emb, Extra_emb, Templ_emb, Recycling
|
| 4 |
+
from .Track_module import IterativeSimulator
|
| 5 |
+
from .AuxiliaryPredictor import DistanceNetwork, MaskedTokenNetwork, ExpResolvedNetwork, LDDTNetwork
|
| 6 |
+
from opt_einsum import contract as einsum
|
| 7 |
+
|
| 8 |
+
class RoseTTAFoldModule(nn.Module):
|
| 9 |
+
def __init__(self,
|
| 10 |
+
n_extra_block,
|
| 11 |
+
n_main_block,
|
| 12 |
+
n_ref_block,
|
| 13 |
+
d_msa,
|
| 14 |
+
d_msa_full,
|
| 15 |
+
d_pair,
|
| 16 |
+
d_templ,
|
| 17 |
+
n_head_msa,
|
| 18 |
+
n_head_pair,
|
| 19 |
+
n_head_templ,
|
| 20 |
+
d_hidden,
|
| 21 |
+
d_hidden_templ,
|
| 22 |
+
p_drop,
|
| 23 |
+
d_t1d,
|
| 24 |
+
d_t2d,
|
| 25 |
+
T, # total timesteps (used in timestep emb
|
| 26 |
+
use_motif_timestep, # Whether to have a distinct emb for motif
|
| 27 |
+
freeze_track_motif, # Whether to freeze updates to motif in track
|
| 28 |
+
SE3_param_full={'l0_in_features':32, 'l0_out_features':16, 'num_edge_features':32},
|
| 29 |
+
SE3_param_topk={'l0_in_features':32, 'l0_out_features':16, 'num_edge_features':32},
|
| 30 |
+
input_seq_onehot=False, # For continuous vs. discrete sequence
|
| 31 |
+
):
|
| 32 |
+
|
| 33 |
+
super(RoseTTAFoldModule, self).__init__()
|
| 34 |
+
|
| 35 |
+
self.freeze_track_motif = freeze_track_motif
|
| 36 |
+
|
| 37 |
+
# Input Embeddings
|
| 38 |
+
d_state = SE3_param_topk['l0_out_features']
|
| 39 |
+
self.latent_emb = MSA_emb(d_msa=d_msa, d_pair=d_pair, d_state=d_state,
|
| 40 |
+
p_drop=p_drop, input_seq_onehot=input_seq_onehot) # Allowed to take onehotseq
|
| 41 |
+
self.full_emb = Extra_emb(d_msa=d_msa_full, d_init=25,
|
| 42 |
+
p_drop=p_drop, input_seq_onehot=input_seq_onehot) # Allowed to take onehotseq
|
| 43 |
+
self.templ_emb = Templ_emb(d_pair=d_pair, d_templ=d_templ, d_state=d_state,
|
| 44 |
+
n_head=n_head_templ,
|
| 45 |
+
d_hidden=d_hidden_templ, p_drop=0.25, d_t1d=d_t1d, d_t2d=d_t2d)
|
| 46 |
+
|
| 47 |
+
|
| 48 |
+
# Update inputs with outputs from previous round
|
| 49 |
+
self.recycle = Recycling(d_msa=d_msa, d_pair=d_pair, d_state=d_state)
|
| 50 |
+
#
|
| 51 |
+
self.simulator = IterativeSimulator(n_extra_block=n_extra_block,
|
| 52 |
+
n_main_block=n_main_block,
|
| 53 |
+
n_ref_block=n_ref_block,
|
| 54 |
+
d_msa=d_msa, d_msa_full=d_msa_full,
|
| 55 |
+
d_pair=d_pair, d_hidden=d_hidden,
|
| 56 |
+
n_head_msa=n_head_msa,
|
| 57 |
+
n_head_pair=n_head_pair,
|
| 58 |
+
SE3_param_full=SE3_param_full,
|
| 59 |
+
SE3_param_topk=SE3_param_topk,
|
| 60 |
+
p_drop=p_drop)
|
| 61 |
+
##
|
| 62 |
+
self.c6d_pred = DistanceNetwork(d_pair, p_drop=p_drop)
|
| 63 |
+
self.aa_pred = MaskedTokenNetwork(d_msa)
|
| 64 |
+
self.lddt_pred = LDDTNetwork(d_state)
|
| 65 |
+
|
| 66 |
+
self.exp_pred = ExpResolvedNetwork(d_msa, d_state)
|
| 67 |
+
|
| 68 |
+
def forward(self, msa_latent, msa_full, seq, xyz, idx, t,
|
| 69 |
+
t1d=None, t2d=None, xyz_t=None, alpha_t=None,
|
| 70 |
+
msa_prev=None, pair_prev=None, state_prev=None,
|
| 71 |
+
return_raw=False, return_full=False, return_infer=False,
|
| 72 |
+
use_checkpoint=False, motif_mask=None, i_cycle=None, n_cycle=None):
|
| 73 |
+
|
| 74 |
+
B, N, L = msa_latent.shape[:3]
|
| 75 |
+
# Get embeddings
|
| 76 |
+
msa_latent, pair, state = self.latent_emb(msa_latent, seq, idx)
|
| 77 |
+
msa_full = self.full_emb(msa_full, seq, idx)
|
| 78 |
+
|
| 79 |
+
# Do recycling
|
| 80 |
+
if msa_prev == None:
|
| 81 |
+
msa_prev = torch.zeros_like(msa_latent[:,0])
|
| 82 |
+
pair_prev = torch.zeros_like(pair)
|
| 83 |
+
state_prev = torch.zeros_like(state)
|
| 84 |
+
msa_recycle, pair_recycle, state_recycle = self.recycle(seq, msa_prev, pair_prev, xyz, state_prev)
|
| 85 |
+
msa_latent[:,0] = msa_latent[:,0] + msa_recycle.reshape(B,L,-1)
|
| 86 |
+
pair = pair + pair_recycle
|
| 87 |
+
state = state + state_recycle
|
| 88 |
+
|
| 89 |
+
|
| 90 |
+
# Get timestep embedding (if using)
|
| 91 |
+
if hasattr(self, 'timestep_embedder'):
|
| 92 |
+
assert t is not None
|
| 93 |
+
time_emb = self.timestep_embedder(L,t,motif_mask)
|
| 94 |
+
n_tmpl = t1d.shape[1]
|
| 95 |
+
t1d = torch.cat([t1d, time_emb[None,None,...].repeat(1,n_tmpl,1,1)], dim=-1)
|
| 96 |
+
|
| 97 |
+
# add template embedding
|
| 98 |
+
pair, state = self.templ_emb(t1d, t2d, alpha_t, xyz_t, pair, state, use_checkpoint=use_checkpoint)
|
| 99 |
+
|
| 100 |
+
# Predict coordinates from given inputs
|
| 101 |
+
is_frozen_residue = motif_mask if self.freeze_track_motif else torch.zeros_like(motif_mask).bool()
|
| 102 |
+
msa, pair, R, T, alpha_s, state = self.simulator(seq, msa_latent, msa_full, pair, xyz[:,:,:3],
|
| 103 |
+
state, idx, use_checkpoint=use_checkpoint,
|
| 104 |
+
motif_mask=is_frozen_residue)
|
| 105 |
+
|
| 106 |
+
if return_raw:
|
| 107 |
+
# get last structure
|
| 108 |
+
xyz = einsum('bnij,bnaj->bnai', R[-1], xyz[:,:,:3]-xyz[:,:,1].unsqueeze(-2)) + T[-1].unsqueeze(-2)
|
| 109 |
+
return msa[:,0], pair, xyz, state, alpha_s[-1]
|
| 110 |
+
|
| 111 |
+
# predict masked amino acids
|
| 112 |
+
logits_aa = self.aa_pred(msa)
|
| 113 |
+
|
| 114 |
+
# Predict LDDT
|
| 115 |
+
lddt = self.lddt_pred(state)
|
| 116 |
+
|
| 117 |
+
if return_infer:
|
| 118 |
+
# get last structure
|
| 119 |
+
xyz = einsum('bnij,bnaj->bnai', R[-1], xyz[:,:,:3]-xyz[:,:,1].unsqueeze(-2)) + T[-1].unsqueeze(-2)
|
| 120 |
+
|
| 121 |
+
# get scalar plddt
|
| 122 |
+
nbin = lddt.shape[1]
|
| 123 |
+
bin_step = 1.0 / nbin
|
| 124 |
+
lddt_bins = torch.linspace(bin_step, 1.0, nbin, dtype=lddt.dtype, device=lddt.device)
|
| 125 |
+
pred_lddt = nn.Softmax(dim=1)(lddt)
|
| 126 |
+
pred_lddt = torch.sum(lddt_bins[None,:,None]*pred_lddt, dim=1)
|
| 127 |
+
|
| 128 |
+
return msa[:,0], pair, xyz, state, alpha_s[-1], logits_aa.permute(0,2,1), pred_lddt
|
| 129 |
+
|
| 130 |
+
#
|
| 131 |
+
# predict distogram & orientograms
|
| 132 |
+
logits = self.c6d_pred(pair)
|
| 133 |
+
|
| 134 |
+
# predict experimentally resolved or not
|
| 135 |
+
logits_exp = self.exp_pred(msa[:,0], state)
|
| 136 |
+
|
| 137 |
+
# get all intermediate bb structures
|
| 138 |
+
xyz = einsum('rbnij,bnaj->rbnai', R, xyz[:,:,:3]-xyz[:,:,1].unsqueeze(-2)) + T.unsqueeze(-2)
|
| 139 |
+
|
| 140 |
+
return logits, logits_aa, logits_exp, xyz, alpha_s, lddt
|
models/SE3_network.py
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch
|
| 2 |
+
import torch.nn as nn
|
| 3 |
+
|
| 4 |
+
#from equivariant_attention.modules import get_basis_and_r, GSE3Res, GNormBias
|
| 5 |
+
#from equivariant_attention.modules import GConvSE3, GNormSE3
|
| 6 |
+
#from equivariant_attention.fibers import Fiber
|
| 7 |
+
|
| 8 |
+
from onescience.utils.rfdiffusion.util_module import init_lecun_normal_param
|
| 9 |
+
from onescience.models.se3_transformer import SE3Transformer
|
| 10 |
+
from onescience.models.se3_transformer.fiber import Fiber
|
| 11 |
+
|
| 12 |
+
class SE3TransformerWrapper(nn.Module):
|
| 13 |
+
"""SE(3) equivariant GCN with attention"""
|
| 14 |
+
def __init__(self, num_layers=2, num_channels=32, num_degrees=3, n_heads=4, div=4,
|
| 15 |
+
l0_in_features=32, l0_out_features=32,
|
| 16 |
+
l1_in_features=3, l1_out_features=2,
|
| 17 |
+
num_edge_features=32):
|
| 18 |
+
super().__init__()
|
| 19 |
+
# Build the network
|
| 20 |
+
self.l1_in = l1_in_features
|
| 21 |
+
#
|
| 22 |
+
fiber_edge = Fiber({0: num_edge_features})
|
| 23 |
+
if l1_out_features > 0:
|
| 24 |
+
if l1_in_features > 0:
|
| 25 |
+
fiber_in = Fiber({0: l0_in_features, 1: l1_in_features})
|
| 26 |
+
fiber_hidden = Fiber.create(num_degrees, num_channels)
|
| 27 |
+
fiber_out = Fiber({0: l0_out_features, 1: l1_out_features})
|
| 28 |
+
else:
|
| 29 |
+
fiber_in = Fiber({0: l0_in_features})
|
| 30 |
+
fiber_hidden = Fiber.create(num_degrees, num_channels)
|
| 31 |
+
fiber_out = Fiber({0: l0_out_features, 1: l1_out_features})
|
| 32 |
+
else:
|
| 33 |
+
if l1_in_features > 0:
|
| 34 |
+
fiber_in = Fiber({0: l0_in_features, 1: l1_in_features})
|
| 35 |
+
fiber_hidden = Fiber.create(num_degrees, num_channels)
|
| 36 |
+
fiber_out = Fiber({0: l0_out_features})
|
| 37 |
+
else:
|
| 38 |
+
fiber_in = Fiber({0: l0_in_features})
|
| 39 |
+
fiber_hidden = Fiber.create(num_degrees, num_channels)
|
| 40 |
+
fiber_out = Fiber({0: l0_out_features})
|
| 41 |
+
|
| 42 |
+
self.se3 = SE3Transformer(num_layers=num_layers,
|
| 43 |
+
fiber_in=fiber_in,
|
| 44 |
+
fiber_hidden=fiber_hidden,
|
| 45 |
+
fiber_out = fiber_out,
|
| 46 |
+
num_heads=n_heads,
|
| 47 |
+
channels_div=div,
|
| 48 |
+
fiber_edge=fiber_edge,
|
| 49 |
+
use_layer_norm=True)
|
| 50 |
+
#use_layer_norm=False)
|
| 51 |
+
|
| 52 |
+
self.reset_parameter()
|
| 53 |
+
|
| 54 |
+
def reset_parameter(self):
|
| 55 |
+
|
| 56 |
+
# make sure linear layer before ReLu are initialized with kaiming_normal_
|
| 57 |
+
for n, p in self.se3.named_parameters():
|
| 58 |
+
if "bias" in n:
|
| 59 |
+
nn.init.zeros_(p)
|
| 60 |
+
elif len(p.shape) == 1:
|
| 61 |
+
continue
|
| 62 |
+
else:
|
| 63 |
+
if "radial_func" not in n:
|
| 64 |
+
p = init_lecun_normal_param(p)
|
| 65 |
+
else:
|
| 66 |
+
if "net.6" in n:
|
| 67 |
+
nn.init.zeros_(p)
|
| 68 |
+
else:
|
| 69 |
+
nn.init.kaiming_normal_(p, nonlinearity='relu')
|
| 70 |
+
|
| 71 |
+
# make last layers to be zero-initialized
|
| 72 |
+
#self.se3.graph_modules[-1].to_kernel_self['0'] = init_lecun_normal_param(self.se3.graph_modules[-1].to_kernel_self['0'])
|
| 73 |
+
#self.se3.graph_modules[-1].to_kernel_self['1'] = init_lecun_normal_param(self.se3.graph_modules[-1].to_kernel_self['1'])
|
| 74 |
+
nn.init.zeros_(self.se3.graph_modules[-1].to_kernel_self['0'])
|
| 75 |
+
nn.init.zeros_(self.se3.graph_modules[-1].to_kernel_self['1'])
|
| 76 |
+
|
| 77 |
+
def forward(self, G, type_0_features, type_1_features=None, edge_features=None):
|
| 78 |
+
if self.l1_in > 0:
|
| 79 |
+
node_features = {'0': type_0_features, '1': type_1_features}
|
| 80 |
+
else:
|
| 81 |
+
node_features = {'0': type_0_features}
|
| 82 |
+
edge_features = {'0': edge_features}
|
| 83 |
+
return self.se3(G, node_features, edge_features)
|
models/Track_module.py
ADDED
|
@@ -0,0 +1,474 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch.utils.checkpoint as checkpoint
|
| 2 |
+
from onescience.utils.rfdiffusion.util_module import *
|
| 3 |
+
from .Attention_module import *
|
| 4 |
+
from .SE3_network import SE3TransformerWrapper
|
| 5 |
+
|
| 6 |
+
# Components for three-track blocks
|
| 7 |
+
# 1. MSA -> MSA update (biased attention. bias from pair & structure)
|
| 8 |
+
# 2. Pair -> Pair update (biased attention. bias from structure)
|
| 9 |
+
# 3. MSA -> Pair update (extract coevolution signal)
|
| 10 |
+
# 4. Str -> Str update (node from MSA, edge from Pair)
|
| 11 |
+
|
| 12 |
+
# Update MSA with biased self-attention. bias from Pair & Str
|
| 13 |
+
class MSAPairStr2MSA(nn.Module):
|
| 14 |
+
def __init__(self, d_msa=256, d_pair=128, n_head=8, d_state=16,
|
| 15 |
+
d_hidden=32, p_drop=0.15, use_global_attn=False):
|
| 16 |
+
super(MSAPairStr2MSA, self).__init__()
|
| 17 |
+
self.norm_pair = nn.LayerNorm(d_pair)
|
| 18 |
+
self.proj_pair = nn.Linear(d_pair+36, d_pair)
|
| 19 |
+
self.norm_state = nn.LayerNorm(d_state)
|
| 20 |
+
self.proj_state = nn.Linear(d_state, d_msa)
|
| 21 |
+
self.drop_row = Dropout(broadcast_dim=1, p_drop=p_drop)
|
| 22 |
+
self.row_attn = MSARowAttentionWithBias(d_msa=d_msa, d_pair=d_pair,
|
| 23 |
+
n_head=n_head, d_hidden=d_hidden)
|
| 24 |
+
if use_global_attn:
|
| 25 |
+
self.col_attn = MSAColGlobalAttention(d_msa=d_msa, n_head=n_head, d_hidden=d_hidden)
|
| 26 |
+
else:
|
| 27 |
+
self.col_attn = MSAColAttention(d_msa=d_msa, n_head=n_head, d_hidden=d_hidden)
|
| 28 |
+
self.ff = FeedForwardLayer(d_msa, 4, p_drop=p_drop)
|
| 29 |
+
|
| 30 |
+
# Do proper initialization
|
| 31 |
+
self.reset_parameter()
|
| 32 |
+
|
| 33 |
+
def reset_parameter(self):
|
| 34 |
+
# initialize weights to normal distrib
|
| 35 |
+
self.proj_pair = init_lecun_normal(self.proj_pair)
|
| 36 |
+
self.proj_state = init_lecun_normal(self.proj_state)
|
| 37 |
+
|
| 38 |
+
# initialize bias to zeros
|
| 39 |
+
nn.init.zeros_(self.proj_pair.bias)
|
| 40 |
+
nn.init.zeros_(self.proj_state.bias)
|
| 41 |
+
|
| 42 |
+
def forward(self, msa, pair, rbf_feat, state):
|
| 43 |
+
'''
|
| 44 |
+
Inputs:
|
| 45 |
+
- msa: MSA feature (B, N, L, d_msa)
|
| 46 |
+
- pair: Pair feature (B, L, L, d_pair)
|
| 47 |
+
- rbf_feat: Ca-Ca distance feature calculated from xyz coordinates (B, L, L, 36)
|
| 48 |
+
- xyz: xyz coordinates (B, L, n_atom, 3)
|
| 49 |
+
- state: updated node features after SE(3)-Transformer layer (B, L, d_state)
|
| 50 |
+
Output:
|
| 51 |
+
- msa: Updated MSA feature (B, N, L, d_msa)
|
| 52 |
+
'''
|
| 53 |
+
B, N, L = msa.shape[:3]
|
| 54 |
+
|
| 55 |
+
# prepare input bias feature by combining pair & coordinate info
|
| 56 |
+
pair = self.norm_pair(pair)
|
| 57 |
+
pair = torch.cat((pair, rbf_feat), dim=-1)
|
| 58 |
+
pair = self.proj_pair(pair) # (B, L, L, d_pair)
|
| 59 |
+
#
|
| 60 |
+
# update query sequence feature (first sequence in the MSA) with feedbacks (state) from SE3
|
| 61 |
+
state = self.norm_state(state)
|
| 62 |
+
state = self.proj_state(state).reshape(B, 1, L, -1)
|
| 63 |
+
msa = msa.index_add(1, torch.tensor([0,], device=state.device), state)
|
| 64 |
+
#
|
| 65 |
+
# Apply row/column attention to msa & transform
|
| 66 |
+
msa = msa + self.drop_row(self.row_attn(msa, pair))
|
| 67 |
+
msa = msa + self.col_attn(msa)
|
| 68 |
+
msa = msa + self.ff(msa)
|
| 69 |
+
|
| 70 |
+
return msa
|
| 71 |
+
|
| 72 |
+
class PairStr2Pair(nn.Module):
|
| 73 |
+
def __init__(self, d_pair=128, n_head=4, d_hidden=32, d_rbf=36, p_drop=0.15):
|
| 74 |
+
super(PairStr2Pair, self).__init__()
|
| 75 |
+
|
| 76 |
+
self.emb_rbf = nn.Linear(d_rbf, d_hidden)
|
| 77 |
+
self.proj_rbf = nn.Linear(d_hidden, d_pair)
|
| 78 |
+
|
| 79 |
+
self.drop_row = Dropout(broadcast_dim=1, p_drop=p_drop)
|
| 80 |
+
self.drop_col = Dropout(broadcast_dim=2, p_drop=p_drop)
|
| 81 |
+
|
| 82 |
+
self.row_attn = BiasedAxialAttention(d_pair, d_pair, n_head, d_hidden, p_drop=p_drop, is_row=True)
|
| 83 |
+
self.col_attn = BiasedAxialAttention(d_pair, d_pair, n_head, d_hidden, p_drop=p_drop, is_row=False)
|
| 84 |
+
|
| 85 |
+
self.ff = FeedForwardLayer(d_pair, 2)
|
| 86 |
+
|
| 87 |
+
self.reset_parameter()
|
| 88 |
+
|
| 89 |
+
def reset_parameter(self):
|
| 90 |
+
nn.init.kaiming_normal_(self.emb_rbf.weight, nonlinearity='relu')
|
| 91 |
+
nn.init.zeros_(self.emb_rbf.bias)
|
| 92 |
+
|
| 93 |
+
self.proj_rbf = init_lecun_normal(self.proj_rbf)
|
| 94 |
+
nn.init.zeros_(self.proj_rbf.bias)
|
| 95 |
+
|
| 96 |
+
def forward(self, pair, rbf_feat):
|
| 97 |
+
B, L = pair.shape[:2]
|
| 98 |
+
|
| 99 |
+
rbf_feat = self.proj_rbf(F.relu_(self.emb_rbf(rbf_feat)))
|
| 100 |
+
|
| 101 |
+
pair = pair + self.drop_row(self.row_attn(pair, rbf_feat))
|
| 102 |
+
pair = pair + self.drop_col(self.col_attn(pair, rbf_feat))
|
| 103 |
+
pair = pair + self.ff(pair)
|
| 104 |
+
return pair
|
| 105 |
+
|
| 106 |
+
class MSA2Pair(nn.Module):
|
| 107 |
+
def __init__(self, d_msa=256, d_pair=128, d_hidden=32, p_drop=0.15):
|
| 108 |
+
super(MSA2Pair, self).__init__()
|
| 109 |
+
self.norm = nn.LayerNorm(d_msa)
|
| 110 |
+
self.proj_left = nn.Linear(d_msa, d_hidden)
|
| 111 |
+
self.proj_right = nn.Linear(d_msa, d_hidden)
|
| 112 |
+
self.proj_out = nn.Linear(d_hidden*d_hidden, d_pair)
|
| 113 |
+
|
| 114 |
+
self.reset_parameter()
|
| 115 |
+
|
| 116 |
+
def reset_parameter(self):
|
| 117 |
+
# normal initialization
|
| 118 |
+
self.proj_left = init_lecun_normal(self.proj_left)
|
| 119 |
+
self.proj_right = init_lecun_normal(self.proj_right)
|
| 120 |
+
nn.init.zeros_(self.proj_left.bias)
|
| 121 |
+
nn.init.zeros_(self.proj_right.bias)
|
| 122 |
+
|
| 123 |
+
# zero initialize output
|
| 124 |
+
nn.init.zeros_(self.proj_out.weight)
|
| 125 |
+
nn.init.zeros_(self.proj_out.bias)
|
| 126 |
+
|
| 127 |
+
def forward(self, msa, pair):
|
| 128 |
+
B, N, L = msa.shape[:3]
|
| 129 |
+
msa = self.norm(msa)
|
| 130 |
+
left = self.proj_left(msa)
|
| 131 |
+
right = self.proj_right(msa)
|
| 132 |
+
right = right / float(N)
|
| 133 |
+
out = einsum('bsli,bsmj->blmij', left, right).reshape(B, L, L, -1)
|
| 134 |
+
out = self.proj_out(out)
|
| 135 |
+
|
| 136 |
+
pair = pair + out
|
| 137 |
+
|
| 138 |
+
return pair
|
| 139 |
+
|
| 140 |
+
class SCPred(nn.Module):
|
| 141 |
+
def __init__(self, d_msa=256, d_state=32, d_hidden=128, p_drop=0.15):
|
| 142 |
+
super(SCPred, self).__init__()
|
| 143 |
+
self.norm_s0 = nn.LayerNorm(d_msa)
|
| 144 |
+
self.norm_si = nn.LayerNorm(d_state)
|
| 145 |
+
self.linear_s0 = nn.Linear(d_msa, d_hidden)
|
| 146 |
+
self.linear_si = nn.Linear(d_state, d_hidden)
|
| 147 |
+
|
| 148 |
+
# ResNet layers
|
| 149 |
+
self.linear_1 = nn.Linear(d_hidden, d_hidden)
|
| 150 |
+
self.linear_2 = nn.Linear(d_hidden, d_hidden)
|
| 151 |
+
self.linear_3 = nn.Linear(d_hidden, d_hidden)
|
| 152 |
+
self.linear_4 = nn.Linear(d_hidden, d_hidden)
|
| 153 |
+
|
| 154 |
+
# Final outputs
|
| 155 |
+
self.linear_out = nn.Linear(d_hidden, 20)
|
| 156 |
+
|
| 157 |
+
self.reset_parameter()
|
| 158 |
+
|
| 159 |
+
def reset_parameter(self):
|
| 160 |
+
# normal initialization
|
| 161 |
+
self.linear_s0 = init_lecun_normal(self.linear_s0)
|
| 162 |
+
self.linear_si = init_lecun_normal(self.linear_si)
|
| 163 |
+
self.linear_out = init_lecun_normal(self.linear_out)
|
| 164 |
+
nn.init.zeros_(self.linear_s0.bias)
|
| 165 |
+
nn.init.zeros_(self.linear_si.bias)
|
| 166 |
+
nn.init.zeros_(self.linear_out.bias)
|
| 167 |
+
|
| 168 |
+
# right before relu activation: He initializer (kaiming normal)
|
| 169 |
+
nn.init.kaiming_normal_(self.linear_1.weight, nonlinearity='relu')
|
| 170 |
+
nn.init.zeros_(self.linear_1.bias)
|
| 171 |
+
nn.init.kaiming_normal_(self.linear_3.weight, nonlinearity='relu')
|
| 172 |
+
nn.init.zeros_(self.linear_3.bias)
|
| 173 |
+
|
| 174 |
+
# right before residual connection: zero initialize
|
| 175 |
+
nn.init.zeros_(self.linear_2.weight)
|
| 176 |
+
nn.init.zeros_(self.linear_2.bias)
|
| 177 |
+
nn.init.zeros_(self.linear_4.weight)
|
| 178 |
+
nn.init.zeros_(self.linear_4.bias)
|
| 179 |
+
|
| 180 |
+
def forward(self, seq, state):
|
| 181 |
+
'''
|
| 182 |
+
Predict side-chain torsion angles along with backbone torsions
|
| 183 |
+
Inputs:
|
| 184 |
+
- seq: hidden embeddings corresponding to query sequence (B, L, d_msa)
|
| 185 |
+
- state: state feature (output l0 feature) from previous SE3 layer (B, L, d_state)
|
| 186 |
+
Outputs:
|
| 187 |
+
- si: predicted torsion angles (phi, psi, omega, chi1~4 with cos/sin, Cb bend, Cb twist, CG) (B, L, 10, 2)
|
| 188 |
+
'''
|
| 189 |
+
B, L = seq.shape[:2]
|
| 190 |
+
seq = self.norm_s0(seq)
|
| 191 |
+
state = self.norm_si(state)
|
| 192 |
+
si = self.linear_s0(seq) + self.linear_si(state)
|
| 193 |
+
|
| 194 |
+
si = si + self.linear_2(F.relu_(self.linear_1(F.relu_(si))))
|
| 195 |
+
si = si + self.linear_4(F.relu_(self.linear_3(F.relu_(si))))
|
| 196 |
+
|
| 197 |
+
si = self.linear_out(F.relu_(si))
|
| 198 |
+
return si.view(B, L, 10, 2)
|
| 199 |
+
|
| 200 |
+
|
| 201 |
+
class Str2Str(nn.Module):
|
| 202 |
+
def __init__(self, d_msa=256, d_pair=128, d_state=16,
|
| 203 |
+
SE3_param={'l0_in_features':32, 'l0_out_features':16, 'num_edge_features':32}, p_drop=0.1):
|
| 204 |
+
super(Str2Str, self).__init__()
|
| 205 |
+
|
| 206 |
+
# initial node & pair feature process
|
| 207 |
+
self.norm_msa = nn.LayerNorm(d_msa)
|
| 208 |
+
self.norm_pair = nn.LayerNorm(d_pair)
|
| 209 |
+
self.norm_state = nn.LayerNorm(d_state)
|
| 210 |
+
|
| 211 |
+
self.embed_x = nn.Linear(d_msa+d_state, SE3_param['l0_in_features'])
|
| 212 |
+
self.embed_e1 = nn.Linear(d_pair, SE3_param['num_edge_features'])
|
| 213 |
+
self.embed_e2 = nn.Linear(SE3_param['num_edge_features']+36+1, SE3_param['num_edge_features'])
|
| 214 |
+
|
| 215 |
+
self.norm_node = nn.LayerNorm(SE3_param['l0_in_features'])
|
| 216 |
+
self.norm_edge1 = nn.LayerNorm(SE3_param['num_edge_features'])
|
| 217 |
+
self.norm_edge2 = nn.LayerNorm(SE3_param['num_edge_features'])
|
| 218 |
+
|
| 219 |
+
self.se3 = SE3TransformerWrapper(**SE3_param)
|
| 220 |
+
self.sc_predictor = SCPred(d_msa=d_msa, d_state=SE3_param['l0_out_features'],
|
| 221 |
+
p_drop=p_drop)
|
| 222 |
+
|
| 223 |
+
self.reset_parameter()
|
| 224 |
+
|
| 225 |
+
def reset_parameter(self):
|
| 226 |
+
# initialize weights to normal distribution
|
| 227 |
+
self.embed_x = init_lecun_normal(self.embed_x)
|
| 228 |
+
self.embed_e1 = init_lecun_normal(self.embed_e1)
|
| 229 |
+
self.embed_e2 = init_lecun_normal(self.embed_e2)
|
| 230 |
+
|
| 231 |
+
# initialize bias to zeros
|
| 232 |
+
nn.init.zeros_(self.embed_x.bias)
|
| 233 |
+
nn.init.zeros_(self.embed_e1.bias)
|
| 234 |
+
nn.init.zeros_(self.embed_e2.bias)
|
| 235 |
+
|
| 236 |
+
@torch.cuda.amp.autocast(enabled=False)
|
| 237 |
+
def forward(self, msa, pair, R_in, T_in, xyz, state, idx, motif_mask, top_k=64, eps=1e-5):
|
| 238 |
+
B, N, L = msa.shape[:3]
|
| 239 |
+
|
| 240 |
+
if motif_mask is None:
|
| 241 |
+
motif_mask = torch.zeros(L).bool()
|
| 242 |
+
|
| 243 |
+
# process msa & pair features
|
| 244 |
+
node = self.norm_msa(msa[:,0])
|
| 245 |
+
pair = self.norm_pair(pair)
|
| 246 |
+
state = self.norm_state(state)
|
| 247 |
+
|
| 248 |
+
node = torch.cat((node, state), dim=-1)
|
| 249 |
+
node = self.norm_node(self.embed_x(node))
|
| 250 |
+
pair = self.norm_edge1(self.embed_e1(pair))
|
| 251 |
+
|
| 252 |
+
neighbor = get_seqsep(idx)
|
| 253 |
+
rbf_feat = rbf(torch.cdist(xyz[:,:,1], xyz[:,:,1]))
|
| 254 |
+
pair = torch.cat((pair, rbf_feat, neighbor), dim=-1)
|
| 255 |
+
pair = self.norm_edge2(self.embed_e2(pair))
|
| 256 |
+
|
| 257 |
+
# define graph
|
| 258 |
+
if top_k != 0:
|
| 259 |
+
G, edge_feats = make_topk_graph(xyz[:,:,1,:], pair, idx, top_k=top_k)
|
| 260 |
+
else:
|
| 261 |
+
G, edge_feats = make_full_graph(xyz[:,:,1,:], pair, idx, top_k=top_k)
|
| 262 |
+
l1_feats = xyz - xyz[:,:,1,:].unsqueeze(2)
|
| 263 |
+
l1_feats = l1_feats.reshape(B*L, -1, 3)
|
| 264 |
+
|
| 265 |
+
# apply SE(3) Transformer & update coordinates
|
| 266 |
+
shift = self.se3(G, node.reshape(B*L, -1, 1), l1_feats, edge_feats)
|
| 267 |
+
|
| 268 |
+
state = shift['0'].reshape(B, L, -1) # (B, L, C)
|
| 269 |
+
|
| 270 |
+
offset = shift['1'].reshape(B, L, 2, 3)
|
| 271 |
+
offset[:,motif_mask,...] = 0 # NOTE: motif mask is all zeros if not freeezing the motif
|
| 272 |
+
|
| 273 |
+
delTi = offset[:,:,0,:] / 10.0 # translation
|
| 274 |
+
R = offset[:,:,1,:] / 100.0 # rotation
|
| 275 |
+
|
| 276 |
+
Qnorm = torch.sqrt( 1 + torch.sum(R*R, dim=-1) )
|
| 277 |
+
qA, qB, qC, qD = 1/Qnorm, R[:,:,0]/Qnorm, R[:,:,1]/Qnorm, R[:,:,2]/Qnorm
|
| 278 |
+
|
| 279 |
+
delRi = torch.zeros((B,L,3,3), device=xyz.device)
|
| 280 |
+
delRi[:,:,0,0] = qA*qA+qB*qB-qC*qC-qD*qD
|
| 281 |
+
delRi[:,:,0,1] = 2*qB*qC - 2*qA*qD
|
| 282 |
+
delRi[:,:,0,2] = 2*qB*qD + 2*qA*qC
|
| 283 |
+
delRi[:,:,1,0] = 2*qB*qC + 2*qA*qD
|
| 284 |
+
delRi[:,:,1,1] = qA*qA-qB*qB+qC*qC-qD*qD
|
| 285 |
+
delRi[:,:,1,2] = 2*qC*qD - 2*qA*qB
|
| 286 |
+
delRi[:,:,2,0] = 2*qB*qD - 2*qA*qC
|
| 287 |
+
delRi[:,:,2,1] = 2*qC*qD + 2*qA*qB
|
| 288 |
+
delRi[:,:,2,2] = qA*qA-qB*qB-qC*qC+qD*qD
|
| 289 |
+
|
| 290 |
+
Ri = einsum('bnij,bnjk->bnik', delRi, R_in)
|
| 291 |
+
Ti = delTi + T_in #einsum('bnij,bnj->bni', delRi, T_in) + delTi
|
| 292 |
+
|
| 293 |
+
alpha = self.sc_predictor(msa[:,0], state)
|
| 294 |
+
return Ri, Ti, state, alpha
|
| 295 |
+
|
| 296 |
+
class IterBlock(nn.Module):
|
| 297 |
+
def __init__(self, d_msa=256, d_pair=128,
|
| 298 |
+
n_head_msa=8, n_head_pair=4,
|
| 299 |
+
use_global_attn=False,
|
| 300 |
+
d_hidden=32, d_hidden_msa=None, p_drop=0.15,
|
| 301 |
+
SE3_param={'l0_in_features':32, 'l0_out_features':16, 'num_edge_features':32}):
|
| 302 |
+
super(IterBlock, self).__init__()
|
| 303 |
+
if d_hidden_msa == None:
|
| 304 |
+
d_hidden_msa = d_hidden
|
| 305 |
+
|
| 306 |
+
self.msa2msa = MSAPairStr2MSA(d_msa=d_msa, d_pair=d_pair,
|
| 307 |
+
n_head=n_head_msa,
|
| 308 |
+
d_state=SE3_param['l0_out_features'],
|
| 309 |
+
use_global_attn=use_global_attn,
|
| 310 |
+
d_hidden=d_hidden_msa, p_drop=p_drop)
|
| 311 |
+
self.msa2pair = MSA2Pair(d_msa=d_msa, d_pair=d_pair,
|
| 312 |
+
d_hidden=d_hidden//2, p_drop=p_drop)
|
| 313 |
+
#d_hidden=d_hidden, p_drop=p_drop)
|
| 314 |
+
self.pair2pair = PairStr2Pair(d_pair=d_pair, n_head=n_head_pair,
|
| 315 |
+
d_hidden=d_hidden, p_drop=p_drop)
|
| 316 |
+
self.str2str = Str2Str(d_msa=d_msa, d_pair=d_pair,
|
| 317 |
+
d_state=SE3_param['l0_out_features'],
|
| 318 |
+
SE3_param=SE3_param,
|
| 319 |
+
p_drop=p_drop)
|
| 320 |
+
|
| 321 |
+
def forward(self, msa, pair, R_in, T_in, xyz, state, idx, motif_mask, use_checkpoint=False):
|
| 322 |
+
rbf_feat = rbf(torch.cdist(xyz[:,:,1,:], xyz[:,:,1,:]))
|
| 323 |
+
if use_checkpoint:
|
| 324 |
+
msa = checkpoint.checkpoint(create_custom_forward(self.msa2msa), msa, pair, rbf_feat, state)
|
| 325 |
+
pair = checkpoint.checkpoint(create_custom_forward(self.msa2pair), msa, pair)
|
| 326 |
+
pair = checkpoint.checkpoint(create_custom_forward(self.pair2pair), pair, rbf_feat)
|
| 327 |
+
R, T, state, alpha = checkpoint.checkpoint(create_custom_forward(self.str2str, top_k=0), msa, pair, R_in, T_in, xyz, state, idx, motif_mask)
|
| 328 |
+
else:
|
| 329 |
+
msa = self.msa2msa(msa, pair, rbf_feat, state)
|
| 330 |
+
pair = self.msa2pair(msa, pair)
|
| 331 |
+
pair = self.pair2pair(pair, rbf_feat)
|
| 332 |
+
R, T, state, alpha = self.str2str(msa, pair, R_in, T_in, xyz, state, idx, motif_mask=motif_mask, top_k=0)
|
| 333 |
+
|
| 334 |
+
return msa, pair, R, T, state, alpha
|
| 335 |
+
|
| 336 |
+
class IterativeSimulator(nn.Module):
|
| 337 |
+
def __init__(self, n_extra_block=4, n_main_block=12, n_ref_block=4,
|
| 338 |
+
d_msa=256, d_msa_full=64, d_pair=128, d_hidden=32,
|
| 339 |
+
n_head_msa=8, n_head_pair=4,
|
| 340 |
+
SE3_param_full={'l0_in_features':32, 'l0_out_features':16, 'num_edge_features':32},
|
| 341 |
+
SE3_param_topk={'l0_in_features':32, 'l0_out_features':16, 'num_edge_features':32},
|
| 342 |
+
p_drop=0.15):
|
| 343 |
+
super(IterativeSimulator, self).__init__()
|
| 344 |
+
self.n_extra_block = n_extra_block
|
| 345 |
+
self.n_main_block = n_main_block
|
| 346 |
+
self.n_ref_block = n_ref_block
|
| 347 |
+
|
| 348 |
+
self.proj_state = nn.Linear(SE3_param_topk['l0_out_features'], SE3_param_full['l0_out_features'])
|
| 349 |
+
# Update with extra sequences
|
| 350 |
+
if n_extra_block > 0:
|
| 351 |
+
self.extra_block = nn.ModuleList([IterBlock(d_msa=d_msa_full, d_pair=d_pair,
|
| 352 |
+
n_head_msa=n_head_msa,
|
| 353 |
+
n_head_pair=n_head_pair,
|
| 354 |
+
d_hidden_msa=8,
|
| 355 |
+
d_hidden=d_hidden,
|
| 356 |
+
p_drop=p_drop,
|
| 357 |
+
use_global_attn=True,
|
| 358 |
+
SE3_param=SE3_param_full)
|
| 359 |
+
for i in range(n_extra_block)])
|
| 360 |
+
|
| 361 |
+
# Update with seed sequences
|
| 362 |
+
if n_main_block > 0:
|
| 363 |
+
self.main_block = nn.ModuleList([IterBlock(d_msa=d_msa, d_pair=d_pair,
|
| 364 |
+
n_head_msa=n_head_msa,
|
| 365 |
+
n_head_pair=n_head_pair,
|
| 366 |
+
d_hidden=d_hidden,
|
| 367 |
+
p_drop=p_drop,
|
| 368 |
+
use_global_attn=False,
|
| 369 |
+
SE3_param=SE3_param_full)
|
| 370 |
+
for i in range(n_main_block)])
|
| 371 |
+
|
| 372 |
+
self.proj_state2 = nn.Linear(SE3_param_full['l0_out_features'], SE3_param_topk['l0_out_features'])
|
| 373 |
+
# Final SE(3) refinement
|
| 374 |
+
if n_ref_block > 0:
|
| 375 |
+
self.str_refiner = Str2Str(d_msa=d_msa, d_pair=d_pair,
|
| 376 |
+
d_state=SE3_param_topk['l0_out_features'],
|
| 377 |
+
SE3_param=SE3_param_topk,
|
| 378 |
+
p_drop=p_drop)
|
| 379 |
+
|
| 380 |
+
self.reset_parameter()
|
| 381 |
+
def reset_parameter(self):
|
| 382 |
+
self.proj_state = init_lecun_normal(self.proj_state)
|
| 383 |
+
nn.init.zeros_(self.proj_state.bias)
|
| 384 |
+
self.proj_state2 = init_lecun_normal(self.proj_state2)
|
| 385 |
+
nn.init.zeros_(self.proj_state2.bias)
|
| 386 |
+
|
| 387 |
+
def forward(self, seq, msa, msa_full, pair, xyz_in, state, idx, use_checkpoint=False, motif_mask=None):
|
| 388 |
+
"""
|
| 389 |
+
input:
|
| 390 |
+
seq: query sequence (B, L)
|
| 391 |
+
msa: seed MSA embeddings (B, N, L, d_msa)
|
| 392 |
+
msa_full: extra MSA embeddings (B, N, L, d_msa_full)
|
| 393 |
+
pair: initial residue pair embeddings (B, L, L, d_pair)
|
| 394 |
+
xyz_in: initial BB coordinates (B, L, n_atom, 3)
|
| 395 |
+
state: initial state features containing mixture of query seq, sidechain, accuracy info (B, L, d_state)
|
| 396 |
+
idx: residue index
|
| 397 |
+
motif_mask: bool tensor, True if motif position that is frozen, else False(L,)
|
| 398 |
+
"""
|
| 399 |
+
|
| 400 |
+
B, L = pair.shape[:2]
|
| 401 |
+
|
| 402 |
+
if motif_mask is None:
|
| 403 |
+
motif_mask = torch.zeros(L).bool()
|
| 404 |
+
|
| 405 |
+
R_in = torch.eye(3, device=xyz_in.device).reshape(1,1,3,3).expand(B, L, -1, -1)
|
| 406 |
+
T_in = xyz_in[:,:,1].clone()
|
| 407 |
+
xyz_in = xyz_in - T_in.unsqueeze(-2)
|
| 408 |
+
|
| 409 |
+
state = self.proj_state(state)
|
| 410 |
+
|
| 411 |
+
R_s = list()
|
| 412 |
+
T_s = list()
|
| 413 |
+
alpha_s = list()
|
| 414 |
+
for i_m in range(self.n_extra_block):
|
| 415 |
+
R_in = R_in.detach() # detach rotation (for stability)
|
| 416 |
+
T_in = T_in.detach()
|
| 417 |
+
# Get current BB structure
|
| 418 |
+
xyz = einsum('bnij,bnaj->bnai', R_in, xyz_in) + T_in.unsqueeze(-2)
|
| 419 |
+
|
| 420 |
+
msa_full, pair, R_in, T_in, state, alpha = self.extra_block[i_m](msa_full,
|
| 421 |
+
pair,
|
| 422 |
+
R_in,
|
| 423 |
+
T_in,
|
| 424 |
+
xyz,
|
| 425 |
+
state,
|
| 426 |
+
idx,
|
| 427 |
+
motif_mask=motif_mask,
|
| 428 |
+
use_checkpoint=use_checkpoint)
|
| 429 |
+
R_s.append(R_in)
|
| 430 |
+
T_s.append(T_in)
|
| 431 |
+
alpha_s.append(alpha)
|
| 432 |
+
|
| 433 |
+
for i_m in range(self.n_main_block):
|
| 434 |
+
R_in = R_in.detach()
|
| 435 |
+
T_in = T_in.detach()
|
| 436 |
+
# Get current BB structure
|
| 437 |
+
xyz = einsum('bnij,bnaj->bnai', R_in, xyz_in) + T_in.unsqueeze(-2)
|
| 438 |
+
|
| 439 |
+
msa, pair, R_in, T_in, state, alpha = self.main_block[i_m](msa,
|
| 440 |
+
pair,
|
| 441 |
+
R_in,
|
| 442 |
+
T_in,
|
| 443 |
+
xyz,
|
| 444 |
+
state,
|
| 445 |
+
idx,
|
| 446 |
+
motif_mask=motif_mask,
|
| 447 |
+
use_checkpoint=use_checkpoint)
|
| 448 |
+
R_s.append(R_in)
|
| 449 |
+
T_s.append(T_in)
|
| 450 |
+
alpha_s.append(alpha)
|
| 451 |
+
|
| 452 |
+
state = self.proj_state2(state)
|
| 453 |
+
for i_m in range(self.n_ref_block):
|
| 454 |
+
R_in = R_in.detach()
|
| 455 |
+
T_in = T_in.detach()
|
| 456 |
+
xyz = einsum('bnij,bnaj->bnai', R_in, xyz_in) + T_in.unsqueeze(-2)
|
| 457 |
+
R_in, T_in, state, alpha = self.str_refiner(msa,
|
| 458 |
+
pair,
|
| 459 |
+
R_in,
|
| 460 |
+
T_in,
|
| 461 |
+
xyz,
|
| 462 |
+
state,
|
| 463 |
+
idx,
|
| 464 |
+
top_k=64,
|
| 465 |
+
motif_mask=motif_mask)
|
| 466 |
+
R_s.append(R_in)
|
| 467 |
+
T_s.append(T_in)
|
| 468 |
+
alpha_s.append(alpha)
|
| 469 |
+
|
| 470 |
+
R_s = torch.stack(R_s, dim=0)
|
| 471 |
+
T_s = torch.stack(T_s, dim=0)
|
| 472 |
+
alpha_s = torch.stack(alpha_s, dim=0)
|
| 473 |
+
|
| 474 |
+
return msa, pair, R_s, T_s, alpha_s, state
|
models/diffusion.py
ADDED
|
@@ -0,0 +1,695 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# script for diffusion protocols
|
| 2 |
+
import torch
|
| 3 |
+
import pickle
|
| 4 |
+
import numpy as np
|
| 5 |
+
import os
|
| 6 |
+
import logging
|
| 7 |
+
|
| 8 |
+
from scipy.spatial.transform import Rotation as scipy_R
|
| 9 |
+
|
| 10 |
+
from onescience.utils.rfdiffusion.util import rigid_from_3_points
|
| 11 |
+
|
| 12 |
+
from onescience.utils.rfdiffusion.util_module import ComputeAllAtomCoords
|
| 13 |
+
|
| 14 |
+
from onescience.utils.rfdiffusion import igso3
|
| 15 |
+
import time
|
| 16 |
+
|
| 17 |
+
torch.set_printoptions(sci_mode=False)
|
| 18 |
+
|
| 19 |
+
|
| 20 |
+
def get_beta_schedule(T, b0, bT, schedule_type, schedule_params={}, inference=False):
|
| 21 |
+
"""
|
| 22 |
+
Given a noise schedule type, create the beta schedule
|
| 23 |
+
"""
|
| 24 |
+
assert schedule_type in ["linear"]
|
| 25 |
+
|
| 26 |
+
# Adjust b0 and bT if T is not 200
|
| 27 |
+
# This is a good approximation, with the beta correction below, unless T is very small
|
| 28 |
+
assert T >= 15, "With discrete time and T < 15, the schedule is badly approximated"
|
| 29 |
+
b0 *= 200 / T
|
| 30 |
+
bT *= 200 / T
|
| 31 |
+
|
| 32 |
+
# linear noise schedule
|
| 33 |
+
if schedule_type == "linear":
|
| 34 |
+
schedule = torch.linspace(b0, bT, T)
|
| 35 |
+
|
| 36 |
+
else:
|
| 37 |
+
raise NotImplementedError(f"Schedule of type {schedule_type} not implemented.")
|
| 38 |
+
|
| 39 |
+
# get alphabar_t for convenience
|
| 40 |
+
alpha_schedule = 1 - schedule
|
| 41 |
+
alphabar_t_schedule = torch.cumprod(alpha_schedule, dim=0)
|
| 42 |
+
|
| 43 |
+
if inference:
|
| 44 |
+
print(
|
| 45 |
+
f"With this beta schedule ({schedule_type} schedule, beta_0 = {round(b0, 3)}, beta_T = {round(bT,3)}), alpha_bar_T = {alphabar_t_schedule[-1]}"
|
| 46 |
+
)
|
| 47 |
+
|
| 48 |
+
return schedule, alpha_schedule, alphabar_t_schedule
|
| 49 |
+
|
| 50 |
+
|
| 51 |
+
class EuclideanDiffuser:
|
| 52 |
+
# class for diffusing points in 3D
|
| 53 |
+
|
| 54 |
+
def __init__(
|
| 55 |
+
self,
|
| 56 |
+
T,
|
| 57 |
+
b_0,
|
| 58 |
+
b_T,
|
| 59 |
+
schedule_type="linear",
|
| 60 |
+
schedule_kwargs={},
|
| 61 |
+
):
|
| 62 |
+
self.T = T
|
| 63 |
+
|
| 64 |
+
# make noise/beta schedule
|
| 65 |
+
(
|
| 66 |
+
self.beta_schedule,
|
| 67 |
+
self.alpha_schedule,
|
| 68 |
+
self.alphabar_schedule,
|
| 69 |
+
) = get_beta_schedule(T, b_0, b_T, schedule_type, **schedule_kwargs)
|
| 70 |
+
|
| 71 |
+
def diffuse_translations(self, xyz, diffusion_mask=None, var_scale=1):
|
| 72 |
+
return self.apply_kernel_recursive(xyz, diffusion_mask, var_scale)
|
| 73 |
+
|
| 74 |
+
def apply_kernel(self, x, t, diffusion_mask=None, var_scale=1):
|
| 75 |
+
"""
|
| 76 |
+
Applies a noising kernel to the points in x
|
| 77 |
+
|
| 78 |
+
Parameters:
|
| 79 |
+
x (torch.tensor, required): (N,3,3) set of backbone coordinates
|
| 80 |
+
|
| 81 |
+
t (int, required): Which timestep
|
| 82 |
+
|
| 83 |
+
noise_scale (float, required): scale for noise
|
| 84 |
+
"""
|
| 85 |
+
t_idx = t - 1 # bring from 1-indexed to 0-indexed
|
| 86 |
+
|
| 87 |
+
assert len(x.shape) == 3
|
| 88 |
+
L, _, _ = x.shape
|
| 89 |
+
|
| 90 |
+
# c-alpha crds
|
| 91 |
+
ca_xyz = x[:, 1, :]
|
| 92 |
+
|
| 93 |
+
b_t = self.beta_schedule[t_idx]
|
| 94 |
+
|
| 95 |
+
# get the noise at timestep t
|
| 96 |
+
mean = torch.sqrt(1 - b_t) * ca_xyz
|
| 97 |
+
var = torch.ones(L, 3) * (b_t) * var_scale
|
| 98 |
+
|
| 99 |
+
sampled_crds = torch.normal(mean, torch.sqrt(var))
|
| 100 |
+
delta = sampled_crds - ca_xyz
|
| 101 |
+
|
| 102 |
+
if not diffusion_mask is None:
|
| 103 |
+
delta[diffusion_mask, ...] = 0
|
| 104 |
+
|
| 105 |
+
out_crds = x + delta[:, None, :]
|
| 106 |
+
|
| 107 |
+
return out_crds, delta
|
| 108 |
+
|
| 109 |
+
def apply_kernel_recursive(self, xyz, diffusion_mask=None, var_scale=1):
|
| 110 |
+
"""
|
| 111 |
+
Repeatedly apply self.apply_kernel T times and return all crds
|
| 112 |
+
"""
|
| 113 |
+
bb_stack = []
|
| 114 |
+
T_stack = []
|
| 115 |
+
|
| 116 |
+
cur_xyz = torch.clone(xyz)
|
| 117 |
+
|
| 118 |
+
for t in range(1, self.T + 1):
|
| 119 |
+
cur_xyz, cur_T = self.apply_kernel(
|
| 120 |
+
cur_xyz, t, var_scale=var_scale, diffusion_mask=diffusion_mask
|
| 121 |
+
)
|
| 122 |
+
bb_stack.append(cur_xyz)
|
| 123 |
+
T_stack.append(cur_T)
|
| 124 |
+
|
| 125 |
+
return torch.stack(bb_stack).transpose(0, 1), torch.stack(T_stack).transpose(
|
| 126 |
+
0, 1
|
| 127 |
+
)
|
| 128 |
+
|
| 129 |
+
|
| 130 |
+
def write_pkl(save_path: str, pkl_data):
|
| 131 |
+
"""Serialize data into a pickle file."""
|
| 132 |
+
with open(save_path, "wb") as handle:
|
| 133 |
+
pickle.dump(pkl_data, handle, protocol=pickle.HIGHEST_PROTOCOL)
|
| 134 |
+
|
| 135 |
+
|
| 136 |
+
def read_pkl(read_path: str, verbose=False):
|
| 137 |
+
"""Read data from a pickle file."""
|
| 138 |
+
with open(read_path, "rb") as handle:
|
| 139 |
+
try:
|
| 140 |
+
return pickle.load(handle)
|
| 141 |
+
except Exception as e:
|
| 142 |
+
if verbose:
|
| 143 |
+
print(f"Failed to read {read_path}")
|
| 144 |
+
raise (e)
|
| 145 |
+
|
| 146 |
+
|
| 147 |
+
class IGSO3:
|
| 148 |
+
"""
|
| 149 |
+
Class for taking in a set of backbone crds and performing IGSO3 diffusion
|
| 150 |
+
on all of them.
|
| 151 |
+
|
| 152 |
+
Unlike the diffusion on translations, much of this class is written for a
|
| 153 |
+
scaling between an initial time t=0 and final time t=1.
|
| 154 |
+
"""
|
| 155 |
+
|
| 156 |
+
def __init__(
|
| 157 |
+
self,
|
| 158 |
+
*,
|
| 159 |
+
T,
|
| 160 |
+
min_sigma,
|
| 161 |
+
max_sigma,
|
| 162 |
+
min_b,
|
| 163 |
+
max_b,
|
| 164 |
+
cache_dir,
|
| 165 |
+
num_omega=1000,
|
| 166 |
+
schedule="linear",
|
| 167 |
+
L=2000,
|
| 168 |
+
):
|
| 169 |
+
"""
|
| 170 |
+
|
| 171 |
+
Args:
|
| 172 |
+
T: total number of time steps
|
| 173 |
+
min_sigma: smallest allowed scale parameter, should be at least 0.01 to maintain numerical stability. Recommended value is 0.05.
|
| 174 |
+
max_sigma: for exponential schedule, the largest scale parameter. Ignored for recommeded linear schedule
|
| 175 |
+
min_b: lower value of beta in Ho schedule analogue
|
| 176 |
+
max_b: upper value of beta in Ho schedule analogue
|
| 177 |
+
num_omega: discretization level in the angles across [0, pi]
|
| 178 |
+
schedule: currently only linear and exponential are supported. The exponential schedule may be noising too slowly.
|
| 179 |
+
L: truncation level
|
| 180 |
+
"""
|
| 181 |
+
self._log = logging.getLogger(__name__)
|
| 182 |
+
|
| 183 |
+
self.T = T
|
| 184 |
+
|
| 185 |
+
self.schedule = schedule
|
| 186 |
+
self.cache_dir = cache_dir
|
| 187 |
+
self.min_sigma = min_sigma
|
| 188 |
+
self.max_sigma = max_sigma
|
| 189 |
+
|
| 190 |
+
if self.schedule == "linear":
|
| 191 |
+
self.min_b = min_b
|
| 192 |
+
self.max_b = max_b
|
| 193 |
+
self.max_sigma = self.sigma(1.0)
|
| 194 |
+
self.num_omega = num_omega
|
| 195 |
+
self.num_sigma = 500
|
| 196 |
+
# Calculate igso3 values.
|
| 197 |
+
self.L = L # truncation level
|
| 198 |
+
self.igso3_vals = self._calc_igso3_vals(L=L)
|
| 199 |
+
self.step_size = 1 / self.T
|
| 200 |
+
|
| 201 |
+
def _calc_igso3_vals(self, L=2000):
|
| 202 |
+
"""_calc_igso3_vals computes numerical approximations to the
|
| 203 |
+
relevant analytically intractable functionals of the igso3
|
| 204 |
+
distribution.
|
| 205 |
+
|
| 206 |
+
The calculated values are cached, or loaded from cache if they already
|
| 207 |
+
exist.
|
| 208 |
+
|
| 209 |
+
Args:
|
| 210 |
+
L: truncation level for power series expansion of the pdf.
|
| 211 |
+
"""
|
| 212 |
+
replace_period = lambda x: str(x).replace(".", "_")
|
| 213 |
+
if self.schedule == "linear":
|
| 214 |
+
cache_fname = os.path.join(
|
| 215 |
+
self.cache_dir,
|
| 216 |
+
f"T_{self.T}_omega_{self.num_omega}_min_sigma_{replace_period(self.min_sigma)}"
|
| 217 |
+
+ f"_min_b_{replace_period(self.min_b)}_max_b_{replace_period(self.max_b)}_schedule_{self.schedule}.pkl",
|
| 218 |
+
)
|
| 219 |
+
elif self.schedule == "exponential":
|
| 220 |
+
cache_fname = os.path.join(
|
| 221 |
+
self.cache_dir,
|
| 222 |
+
f"T_{self.T}_omega_{self.num_omega}_min_sigma_{replace_period(self.min_sigma)}"
|
| 223 |
+
f"_max_sigma_{replace_period(self.max_sigma)}_schedule_{self.schedule}",
|
| 224 |
+
)
|
| 225 |
+
else:
|
| 226 |
+
raise ValueError(f"Unrecognize schedule {self.schedule}")
|
| 227 |
+
|
| 228 |
+
if not os.path.isdir(self.cache_dir):
|
| 229 |
+
os.makedirs(self.cache_dir)
|
| 230 |
+
|
| 231 |
+
if os.path.exists(cache_fname):
|
| 232 |
+
self._log.info("Using cached IGSO3.")
|
| 233 |
+
igso3_vals = read_pkl(cache_fname)
|
| 234 |
+
else:
|
| 235 |
+
self._log.info("Calculating IGSO3.")
|
| 236 |
+
igso3_vals = igso3.calculate_igso3(
|
| 237 |
+
num_sigma=self.num_sigma,
|
| 238 |
+
min_sigma=self.min_sigma,
|
| 239 |
+
max_sigma=self.max_sigma,
|
| 240 |
+
num_omega=self.num_omega
|
| 241 |
+
)
|
| 242 |
+
write_pkl(cache_fname, igso3_vals)
|
| 243 |
+
|
| 244 |
+
return igso3_vals
|
| 245 |
+
|
| 246 |
+
@property
|
| 247 |
+
def discrete_sigma(self):
|
| 248 |
+
return self.igso3_vals["discrete_sigma"]
|
| 249 |
+
|
| 250 |
+
def sigma_idx(self, sigma: np.ndarray):
|
| 251 |
+
"""
|
| 252 |
+
Calculates the index for discretized sigma during IGSO(3) initialization."""
|
| 253 |
+
return np.digitize(sigma, self.discrete_sigma) - 1
|
| 254 |
+
|
| 255 |
+
def t_to_idx(self, t: np.ndarray):
|
| 256 |
+
"""
|
| 257 |
+
Helper function to go from discrete time index t to corresponding sigma_idx.
|
| 258 |
+
|
| 259 |
+
Args:
|
| 260 |
+
t: time index (integer between 1 and 200)
|
| 261 |
+
"""
|
| 262 |
+
continuous_t = t / self.T
|
| 263 |
+
return self.sigma_idx(self.sigma(continuous_t))
|
| 264 |
+
|
| 265 |
+
def sigma(self, t: torch.tensor):
|
| 266 |
+
"""
|
| 267 |
+
Extract \sigma(t) corresponding to chosen sigma schedule.
|
| 268 |
+
|
| 269 |
+
Args:
|
| 270 |
+
t: torch tensor with time between 0 and 1
|
| 271 |
+
"""
|
| 272 |
+
if not type(t) == torch.Tensor:
|
| 273 |
+
t = torch.tensor(t)
|
| 274 |
+
if torch.any(t < 0) or torch.any(t > 1):
|
| 275 |
+
raise ValueError(f"Invalid t={t}")
|
| 276 |
+
if self.schedule == "exponential":
|
| 277 |
+
sigma = t * np.log10(self.max_sigma) + (1 - t) * np.log10(self.min_sigma)
|
| 278 |
+
return 10**sigma
|
| 279 |
+
elif self.schedule == "linear": # Variance exploding analogue of Ho schedule
|
| 280 |
+
# add self.min_sigma for stability
|
| 281 |
+
return (
|
| 282 |
+
self.min_sigma
|
| 283 |
+
+ t * self.min_b
|
| 284 |
+
+ (1 / 2) * (t**2) * (self.max_b - self.min_b)
|
| 285 |
+
)
|
| 286 |
+
else:
|
| 287 |
+
raise ValueError(f"Unrecognize schedule {self.schedule}")
|
| 288 |
+
|
| 289 |
+
def g(self, t):
|
| 290 |
+
"""
|
| 291 |
+
g returns the drift coefficient at time t
|
| 292 |
+
|
| 293 |
+
since
|
| 294 |
+
sigma(t)^2 := \int_0^t g(s)^2 ds,
|
| 295 |
+
for arbitrary sigma(t) we invert this relationship to compute
|
| 296 |
+
g(t) = sqrt(d/dt sigma(t)^2).
|
| 297 |
+
|
| 298 |
+
Args:
|
| 299 |
+
t: scalar time between 0 and 1
|
| 300 |
+
|
| 301 |
+
Returns:
|
| 302 |
+
drift cooeficient as a scalar.
|
| 303 |
+
"""
|
| 304 |
+
t = torch.tensor(t, requires_grad=True)
|
| 305 |
+
sigma_sqr = self.sigma(t) ** 2
|
| 306 |
+
grads = torch.autograd.grad(sigma_sqr.sum(), t)[0]
|
| 307 |
+
return torch.sqrt(grads)
|
| 308 |
+
|
| 309 |
+
def sample(self, ts, n_samples=1):
|
| 310 |
+
"""
|
| 311 |
+
sample uses the inverse cdf to sample an angle of rotation from
|
| 312 |
+
IGSO(3)
|
| 313 |
+
|
| 314 |
+
Args:
|
| 315 |
+
ts: array of integer time steps to sample from.
|
| 316 |
+
n_samples: number of samples to draw.
|
| 317 |
+
Returns:
|
| 318 |
+
sampled angles of rotation. [len(ts), N]
|
| 319 |
+
"""
|
| 320 |
+
assert sum(ts == 0) == 0, "assumes one-indexed, not zero indexed"
|
| 321 |
+
all_samples = []
|
| 322 |
+
for t in ts:
|
| 323 |
+
sigma_idx = self.t_to_idx(t)
|
| 324 |
+
sample_i = np.interp(
|
| 325 |
+
np.random.rand(n_samples),
|
| 326 |
+
self.igso3_vals["cdf"][sigma_idx],
|
| 327 |
+
self.igso3_vals["discrete_omega"],
|
| 328 |
+
) # [N, 1]
|
| 329 |
+
all_samples.append(sample_i)
|
| 330 |
+
return np.stack(all_samples, axis=0)
|
| 331 |
+
|
| 332 |
+
def sample_vec(self, ts, n_samples=1):
|
| 333 |
+
"""sample_vec generates a rotation vector(s) from IGSO(3) at time steps
|
| 334 |
+
ts.
|
| 335 |
+
|
| 336 |
+
Return:
|
| 337 |
+
Sampled vector of shape [len(ts), N, 3]
|
| 338 |
+
"""
|
| 339 |
+
x = np.random.randn(len(ts), n_samples, 3)
|
| 340 |
+
x /= np.linalg.norm(x, axis=-1, keepdims=True)
|
| 341 |
+
return x * self.sample(ts, n_samples=n_samples)[..., None]
|
| 342 |
+
|
| 343 |
+
def score_norm(self, t, omega):
|
| 344 |
+
"""
|
| 345 |
+
score_norm computes the score norm based on the time step and angle
|
| 346 |
+
Args:
|
| 347 |
+
t: integer time step
|
| 348 |
+
omega: angles (scalar or shape [N])
|
| 349 |
+
Return:
|
| 350 |
+
score_norm with same shape as omega
|
| 351 |
+
"""
|
| 352 |
+
sigma_idx = self.t_to_idx(t)
|
| 353 |
+
score_norm_t = np.interp(
|
| 354 |
+
omega,
|
| 355 |
+
self.igso3_vals["discrete_omega"],
|
| 356 |
+
self.igso3_vals["score_norm"][sigma_idx],
|
| 357 |
+
)
|
| 358 |
+
return score_norm_t
|
| 359 |
+
|
| 360 |
+
def score_vec(self, ts, vec):
|
| 361 |
+
"""score_vec computes the score of the IGSO(3) density as a rotation
|
| 362 |
+
vector. This score vector is in the direction of the sampled vector,
|
| 363 |
+
and has magnitude given by score_norms.
|
| 364 |
+
|
| 365 |
+
In particular, Rt @ hat(score_vec(ts, vec)) is what is referred to as
|
| 366 |
+
the score approximation in Algorithm 1
|
| 367 |
+
|
| 368 |
+
|
| 369 |
+
Args:
|
| 370 |
+
ts: times of shape [T]
|
| 371 |
+
vec: where to compute the score of shape [T, N, 3]
|
| 372 |
+
Returns:
|
| 373 |
+
score vectors of shape [T, N, 3]
|
| 374 |
+
"""
|
| 375 |
+
omega = np.linalg.norm(vec, axis=-1)
|
| 376 |
+
all_score_norm = []
|
| 377 |
+
for i, t in enumerate(ts):
|
| 378 |
+
omega_t = omega[i]
|
| 379 |
+
t_idx = t - 1
|
| 380 |
+
sigma_idx = self.t_to_idx(t)
|
| 381 |
+
score_norm_t = np.interp(
|
| 382 |
+
omega_t,
|
| 383 |
+
self.igso3_vals["discrete_omega"],
|
| 384 |
+
self.igso3_vals["score_norm"][sigma_idx],
|
| 385 |
+
)[:, None]
|
| 386 |
+
all_score_norm.append(score_norm_t)
|
| 387 |
+
score_norm = np.stack(all_score_norm, axis=0)
|
| 388 |
+
return score_norm * vec / omega[..., None]
|
| 389 |
+
|
| 390 |
+
def exp_score_norm(self, ts):
|
| 391 |
+
"""exp_score_norm returns the expected value of norm of the score for
|
| 392 |
+
IGSO(3) with time parameter ts of shape [T].
|
| 393 |
+
"""
|
| 394 |
+
sigma_idcs = [self.t_to_idx(t) for t in ts]
|
| 395 |
+
return self.igso3_vals["exp_score_norms"][sigma_idcs]
|
| 396 |
+
|
| 397 |
+
def diffuse_frames(self, xyz, t_list, diffusion_mask=None):
|
| 398 |
+
"""diffuse_frames samples from the IGSO(3) distribution to noise frames
|
| 399 |
+
|
| 400 |
+
Parameters:
|
| 401 |
+
xyz (np.array or torch.tensor, required): (L,3,3) set of backbone coordinates
|
| 402 |
+
mask (np.array or torch.tensor, required): (L,) set of bools. True/1 is NOT diffused, False/0 IS diffused
|
| 403 |
+
Returns:
|
| 404 |
+
np.array : N/CA/C coordinates for each residue
|
| 405 |
+
(T,L,3,3), where T is num timesteps
|
| 406 |
+
"""
|
| 407 |
+
|
| 408 |
+
if torch.is_tensor(xyz):
|
| 409 |
+
xyz = xyz.numpy()
|
| 410 |
+
|
| 411 |
+
t = np.arange(self.T) + 1 # 1-indexed!!
|
| 412 |
+
num_res = len(xyz)
|
| 413 |
+
|
| 414 |
+
N = torch.from_numpy(xyz[None, :, 0, :])
|
| 415 |
+
Ca = torch.from_numpy(xyz[None, :, 1, :]) # [1, num_res, 3, 3]
|
| 416 |
+
C = torch.from_numpy(xyz[None, :, 2, :])
|
| 417 |
+
|
| 418 |
+
# scipy rotation object for true coordinates
|
| 419 |
+
R_true, Ca = rigid_from_3_points(N, Ca, C)
|
| 420 |
+
R_true = R_true[0]
|
| 421 |
+
Ca = Ca[0]
|
| 422 |
+
|
| 423 |
+
# Sample rotations and scores from IGSO3
|
| 424 |
+
sampled_rots = self.sample_vec(t, n_samples=num_res) # [T, N, 3]
|
| 425 |
+
|
| 426 |
+
if diffusion_mask is not None:
|
| 427 |
+
non_diffusion_mask = 1 - diffusion_mask[None, :, None]
|
| 428 |
+
sampled_rots = sampled_rots * non_diffusion_mask
|
| 429 |
+
|
| 430 |
+
# Apply sampled rot.
|
| 431 |
+
R_sampled = (
|
| 432 |
+
scipy_R.from_rotvec(sampled_rots.reshape(-1, 3))
|
| 433 |
+
.as_matrix()
|
| 434 |
+
.reshape(self.T, num_res, 3, 3)
|
| 435 |
+
)
|
| 436 |
+
R_perturbed = np.einsum("tnij,njk->tnik", R_sampled, R_true)
|
| 437 |
+
perturbed_crds = (
|
| 438 |
+
np.einsum(
|
| 439 |
+
"tnij,naj->tnai", R_sampled, xyz[:, :3, :] - Ca[:, None, ...].numpy()
|
| 440 |
+
)
|
| 441 |
+
+ Ca[None, :, None].numpy()
|
| 442 |
+
)
|
| 443 |
+
|
| 444 |
+
if t_list != None:
|
| 445 |
+
idx = [i - 1 for i in t_list]
|
| 446 |
+
perturbed_crds = perturbed_crds[idx]
|
| 447 |
+
R_perturbed = R_perturbed[idx]
|
| 448 |
+
|
| 449 |
+
return (
|
| 450 |
+
perturbed_crds.transpose(1, 0, 2, 3), # [L, T, 3, 3]
|
| 451 |
+
R_perturbed.transpose(1, 0, 2, 3),
|
| 452 |
+
)
|
| 453 |
+
|
| 454 |
+
def reverse_sample_vectorized(
|
| 455 |
+
self, R_t, R_0, t, noise_level, mask=None, return_perturb=False
|
| 456 |
+
):
|
| 457 |
+
"""reverse_sample uses an approximation to the IGSO3 score to sample
|
| 458 |
+
a rotation at the previous time step.
|
| 459 |
+
|
| 460 |
+
Roughly - this update follows the reverse time SDE for Reimannian
|
| 461 |
+
manifolds proposed by de Bortoli et al. Theorem 1 [1]. But with an
|
| 462 |
+
approximation to the score based on the prediction of R0.
|
| 463 |
+
Unlike in reference [1], this diffusion on SO(3) relies on geometric
|
| 464 |
+
variance schedule. Specifically we follow [2] (appendix C) and assume
|
| 465 |
+
sigma_t = sigma_min * (sigma_max / sigma_min)^{t/T},
|
| 466 |
+
for time step t. When we view this as a discretization of the SDE
|
| 467 |
+
from time 0 to 1 with step size (1/T). Following Eq. 5 and Eq. 6,
|
| 468 |
+
this maps on to the forward time SDEs
|
| 469 |
+
dx = g(t) dBt [FORWARD]
|
| 470 |
+
and
|
| 471 |
+
dx = g(t)^2 score(xt, t)dt + g(t) B't, [REVERSE]
|
| 472 |
+
where g(t) = sigma_t * sqrt(2 * log(sigma_max/ sigma_min)), and Bt and
|
| 473 |
+
B't are Brownian motions. The formula for g(t) obtains from equation 9
|
| 474 |
+
of [2], from which this sampling function may be generalized to
|
| 475 |
+
alternative noising schedules.
|
| 476 |
+
Args:
|
| 477 |
+
R_t: noisy rotation of shape [N, 3, 3]
|
| 478 |
+
R_0: prediction of un-noised rotation
|
| 479 |
+
t: integer time step
|
| 480 |
+
noise_level: scaling on the noise added when obtaining sample
|
| 481 |
+
(preliminary performance seems empirically better with noise
|
| 482 |
+
level=0.5)
|
| 483 |
+
mask: whether the residue is to be updated. A value of 1 means the
|
| 484 |
+
rotation is not updated from r_t. A value of 0 means the
|
| 485 |
+
rotation is updated.
|
| 486 |
+
Return:
|
| 487 |
+
sampled rotation matrix for time t-1 of shape [3, 3]
|
| 488 |
+
Reference:
|
| 489 |
+
[1] De Bortoli, V., Mathieu, E., Hutchinson, M., Thornton, J., Teh, Y.
|
| 490 |
+
W., & Doucet, A. (2022). Riemannian score-based generative modeling.
|
| 491 |
+
arXiv preprint arXiv:2202.02763.
|
| 492 |
+
[2] Song, Y., Sohl-Dickstein, J., Kingma, D. P., Kumar, A., Ermon, S.,
|
| 493 |
+
& Poole, B. (2020). Score-based generative modeling through stochastic
|
| 494 |
+
differential equations. arXiv preprint arXiv:2011.13456.
|
| 495 |
+
"""
|
| 496 |
+
# compute rotation vector corresponding to prediction of how r_t goes to r_0
|
| 497 |
+
R_0, R_t = torch.tensor(R_0), torch.tensor(R_t)
|
| 498 |
+
R_0t = torch.einsum("...ij,...kj->...ik", R_t, R_0)
|
| 499 |
+
R_0t_rotvec = torch.tensor(
|
| 500 |
+
scipy_R.from_matrix(R_0t.cpu().numpy()).as_rotvec()
|
| 501 |
+
).to(R_0.device)
|
| 502 |
+
|
| 503 |
+
# Approximate the score based on the prediction of R0.
|
| 504 |
+
# R_t @ hat(Score_approx) is the score approximation in the Lie algebra
|
| 505 |
+
# SO(3) (i.e. the output of Algorithm 1)
|
| 506 |
+
Omega = torch.linalg.norm(R_0t_rotvec, axis=-1).numpy()
|
| 507 |
+
Score_approx = R_0t_rotvec * (self.score_norm(t, Omega) / Omega)[:, None]
|
| 508 |
+
|
| 509 |
+
# Compute scaling for score and sampled noise (following Eq 6 of [2])
|
| 510 |
+
continuous_t = t / self.T
|
| 511 |
+
rot_g = self.g(continuous_t).to(Score_approx.device)
|
| 512 |
+
|
| 513 |
+
# Sample and scale noise to add to the rotation perturbation in the
|
| 514 |
+
# SO(3) tangent space. Since IG-SO(3) is the Brownian motion on SO(3)
|
| 515 |
+
# (up to a deceleration of time by a factor of two), for small enough
|
| 516 |
+
# time-steps, this is equivalent to perturbing r_t with IG-SO(3) noise.
|
| 517 |
+
# See e.g. Algorithm 1 of De Bortoli et al.
|
| 518 |
+
Z = np.random.normal(size=(R_0.shape[0], 3))
|
| 519 |
+
Z = torch.from_numpy(Z).to(Score_approx.device)
|
| 520 |
+
Z *= noise_level
|
| 521 |
+
|
| 522 |
+
Delta_r = (rot_g**2) * self.step_size * Score_approx
|
| 523 |
+
|
| 524 |
+
# Sample perturbation from discretized SDE (following eq. 6 of [2]),
|
| 525 |
+
# This approximate sampling from IGSO3(* ; Delta_r, rot_g^2 *
|
| 526 |
+
# self.step_size) with tangent Gaussian.
|
| 527 |
+
Perturb_tangent = Delta_r + rot_g * np.sqrt(self.step_size) * Z
|
| 528 |
+
if mask is not None:
|
| 529 |
+
Perturb_tangent *= (1 - mask.long())[:, None, None]
|
| 530 |
+
Perturb = igso3.Exp(Perturb_tangent)
|
| 531 |
+
|
| 532 |
+
if return_perturb:
|
| 533 |
+
return Perturb
|
| 534 |
+
|
| 535 |
+
Interp_rot = torch.einsum("...ij,...jk->...ik", Perturb, R_t)
|
| 536 |
+
|
| 537 |
+
return Interp_rot
|
| 538 |
+
|
| 539 |
+
|
| 540 |
+
class Diffuser:
|
| 541 |
+
# wrapper for yielding diffused coordinates
|
| 542 |
+
|
| 543 |
+
def __init__(
|
| 544 |
+
self,
|
| 545 |
+
T,
|
| 546 |
+
b_0,
|
| 547 |
+
b_T,
|
| 548 |
+
min_sigma,
|
| 549 |
+
max_sigma,
|
| 550 |
+
min_b,
|
| 551 |
+
max_b,
|
| 552 |
+
schedule_type,
|
| 553 |
+
so3_schedule_type,
|
| 554 |
+
so3_type,
|
| 555 |
+
crd_scale,
|
| 556 |
+
schedule_kwargs={},
|
| 557 |
+
var_scale=1.0,
|
| 558 |
+
cache_dir=".",
|
| 559 |
+
partial_T=None,
|
| 560 |
+
truncation_level=2000,
|
| 561 |
+
):
|
| 562 |
+
"""
|
| 563 |
+
Parameters:
|
| 564 |
+
|
| 565 |
+
T (int, required): Number of steps in the schedule
|
| 566 |
+
|
| 567 |
+
b_0 (float, required): Starting variance for Euclidean schedule
|
| 568 |
+
|
| 569 |
+
b_T (float, required): Ending variance for Euclidean schedule
|
| 570 |
+
|
| 571 |
+
"""
|
| 572 |
+
self.T = T
|
| 573 |
+
self.b_0 = b_0
|
| 574 |
+
self.b_T = b_T
|
| 575 |
+
self.min_sigma = min_sigma
|
| 576 |
+
self.max_sigma = max_sigma
|
| 577 |
+
self.crd_scale = crd_scale
|
| 578 |
+
self.var_scale = var_scale
|
| 579 |
+
self.cache_dir = cache_dir
|
| 580 |
+
|
| 581 |
+
# get backbone frame diffuser
|
| 582 |
+
self.so3_diffuser = IGSO3(
|
| 583 |
+
T=self.T,
|
| 584 |
+
min_sigma=self.min_sigma,
|
| 585 |
+
max_sigma=self.max_sigma,
|
| 586 |
+
schedule=so3_schedule_type,
|
| 587 |
+
min_b=min_b,
|
| 588 |
+
max_b=max_b,
|
| 589 |
+
cache_dir=self.cache_dir,
|
| 590 |
+
L=truncation_level,
|
| 591 |
+
)
|
| 592 |
+
|
| 593 |
+
# get backbone translation diffuser
|
| 594 |
+
self.eucl_diffuser = EuclideanDiffuser(
|
| 595 |
+
self.T, b_0, b_T, schedule_type=schedule_type, **schedule_kwargs
|
| 596 |
+
)
|
| 597 |
+
|
| 598 |
+
print("Successful diffuser __init__")
|
| 599 |
+
|
| 600 |
+
def diffuse_pose(
|
| 601 |
+
self,
|
| 602 |
+
xyz,
|
| 603 |
+
seq,
|
| 604 |
+
atom_mask,
|
| 605 |
+
include_motif_sidechains=True,
|
| 606 |
+
diffusion_mask=None,
|
| 607 |
+
t_list=None,
|
| 608 |
+
):
|
| 609 |
+
"""
|
| 610 |
+
Given full atom xyz, sequence and atom mask, diffuse the protein frame
|
| 611 |
+
translations and rotations
|
| 612 |
+
|
| 613 |
+
Parameters:
|
| 614 |
+
|
| 615 |
+
xyz (L,14/27,3) set of coordinates
|
| 616 |
+
|
| 617 |
+
seq (L,) integer sequence
|
| 618 |
+
|
| 619 |
+
atom_mask: mask describing presence/absence of an atom in pdb
|
| 620 |
+
|
| 621 |
+
diffusion_mask (torch.tensor, optional): Tensor of bools, True means NOT diffused at this residue, False means diffused
|
| 622 |
+
|
| 623 |
+
t_list (list, optional): If present, only return the diffused coordinates at timesteps t within the list
|
| 624 |
+
|
| 625 |
+
|
| 626 |
+
"""
|
| 627 |
+
|
| 628 |
+
if diffusion_mask is None:
|
| 629 |
+
diffusion_mask = torch.zeros(len(xyz.squeeze())).to(dtype=bool)
|
| 630 |
+
|
| 631 |
+
get_allatom = ComputeAllAtomCoords().to(device=xyz.device)
|
| 632 |
+
L = len(xyz)
|
| 633 |
+
|
| 634 |
+
# bring to origin and scale
|
| 635 |
+
# check if any BB atoms are nan before centering
|
| 636 |
+
nan_mask = ~torch.isnan(xyz.squeeze()[:, :3]).any(dim=-1).any(dim=-1)
|
| 637 |
+
assert torch.sum(~nan_mask) == 0
|
| 638 |
+
|
| 639 |
+
# Centre unmasked structure at origin, as in training (to prevent information leak)
|
| 640 |
+
if torch.sum(diffusion_mask) != 0:
|
| 641 |
+
self.motif_com = xyz[diffusion_mask, 1, :].mean(
|
| 642 |
+
dim=0
|
| 643 |
+
) # This is needed for one of the potentials
|
| 644 |
+
xyz = xyz - self.motif_com
|
| 645 |
+
elif torch.sum(diffusion_mask) == 0:
|
| 646 |
+
xyz = xyz - xyz[:, 1, :].mean(dim=0)
|
| 647 |
+
|
| 648 |
+
xyz_true = torch.clone(xyz)
|
| 649 |
+
xyz = xyz * self.crd_scale
|
| 650 |
+
|
| 651 |
+
# 1 get translations
|
| 652 |
+
tick = time.time()
|
| 653 |
+
diffused_T, deltas = self.eucl_diffuser.diffuse_translations(
|
| 654 |
+
xyz[:, :3, :].clone(), diffusion_mask=diffusion_mask
|
| 655 |
+
)
|
| 656 |
+
# print('Time to diffuse coordinates: ',time.time()-tick)
|
| 657 |
+
diffused_T /= self.crd_scale
|
| 658 |
+
deltas /= self.crd_scale
|
| 659 |
+
|
| 660 |
+
# 2 get frames
|
| 661 |
+
tick = time.time()
|
| 662 |
+
diffused_frame_crds, diffused_frames = self.so3_diffuser.diffuse_frames(
|
| 663 |
+
xyz[:, :3, :].clone(), diffusion_mask=diffusion_mask.numpy(), t_list=None
|
| 664 |
+
)
|
| 665 |
+
diffused_frame_crds /= self.crd_scale
|
| 666 |
+
# print('Time to diffuse frames: ',time.time()-tick)
|
| 667 |
+
|
| 668 |
+
##### Now combine all the diffused quantities to make full atom diffused poses
|
| 669 |
+
tick = time.time()
|
| 670 |
+
cum_delta = deltas.cumsum(dim=1)
|
| 671 |
+
# The coordinates of the translated AND rotated frames
|
| 672 |
+
diffused_BB = (
|
| 673 |
+
torch.from_numpy(diffused_frame_crds) + cum_delta[:, :, None, :]
|
| 674 |
+
).transpose(
|
| 675 |
+
0, 1
|
| 676 |
+
) # [n,L,3,3]
|
| 677 |
+
# diffused_BB = torch.from_numpy(diffused_frame_crds).transpose(0,1)
|
| 678 |
+
|
| 679 |
+
# diffused_BB is [t_steps,L,3,3]
|
| 680 |
+
t_steps, L = diffused_BB.shape[:2]
|
| 681 |
+
|
| 682 |
+
diffused_fa = torch.zeros(t_steps, L, 27, 3)
|
| 683 |
+
diffused_fa[:, :, :3, :] = diffused_BB
|
| 684 |
+
|
| 685 |
+
# Add in sidechains from motif
|
| 686 |
+
if include_motif_sidechains:
|
| 687 |
+
diffused_fa[:, diffusion_mask, :14, :] = xyz_true[None, diffusion_mask, :14]
|
| 688 |
+
|
| 689 |
+
if t_list is None:
|
| 690 |
+
fa_stack = diffused_fa
|
| 691 |
+
else:
|
| 692 |
+
t_idx_list = [t - 1 for t in t_list]
|
| 693 |
+
fa_stack = diffused_fa[t_idx_list]
|
| 694 |
+
|
| 695 |
+
return fa_stack, xyz_true
|
models/model_input_logger.py
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import traceback
|
| 2 |
+
import os
|
| 3 |
+
from inspect import signature
|
| 4 |
+
import pickle
|
| 5 |
+
import datetime
|
| 6 |
+
|
| 7 |
+
def pickle_function_call_wrapper(func, output_dir='pickled_inputs'):
|
| 8 |
+
i = 0
|
| 9 |
+
os.makedirs(output_dir)
|
| 10 |
+
# pickle.dump({'args': args, 'kwargs': kwargs}, fh)
|
| 11 |
+
def wrapper(*args, **kwargs):
|
| 12 |
+
"""
|
| 13 |
+
Wrap the original function call to print the arguments before
|
| 14 |
+
calling the intended function
|
| 15 |
+
"""
|
| 16 |
+
nonlocal i
|
| 17 |
+
i += 1
|
| 18 |
+
func_sig = signature(func)
|
| 19 |
+
# Create the argument binding so we can determine what
|
| 20 |
+
# parameters are given what values
|
| 21 |
+
argument_binding = func_sig.bind(*args, **kwargs)
|
| 22 |
+
argument_map = argument_binding.arguments
|
| 23 |
+
|
| 24 |
+
# Perform the print so that it shows the function name
|
| 25 |
+
# and arguments as a dictionary
|
| 26 |
+
path = os.path.join(output_dir, f'{i:05d}.pkl')
|
| 27 |
+
print(f"logging {func.__name__} arguments: {[k for k in argument_map]} to {path}")
|
| 28 |
+
argument_map['stack'] = traceback.format_stack()
|
| 29 |
+
|
| 30 |
+
for k, v in argument_map.items():
|
| 31 |
+
if hasattr(v, 'detach'):
|
| 32 |
+
argument_map[k] = v.cpu().detach()
|
| 33 |
+
with open(path, 'wb') as fh:
|
| 34 |
+
pickle.dump(argument_map, fh)
|
| 35 |
+
|
| 36 |
+
return func(*args, **kwargs)
|
| 37 |
+
|
| 38 |
+
return wrapper
|
| 39 |
+
|
| 40 |
+
def wrap_it(wrapper, instance, method, **kwargs):
|
| 41 |
+
class_method = getattr(instance, method)
|
| 42 |
+
wrapped_method = wrapper(class_method, **kwargs)
|
| 43 |
+
setattr(instance, method, wrapped_method)
|
| 44 |
+
|
| 45 |
+
|
| 46 |
+
|
| 47 |
+
def pickle_function_call(instance, method, subdir):
|
| 48 |
+
output_dir = os.path.join(os.getcwd(), 'pickled_inputs', subdir, datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S"))
|
| 49 |
+
wrap_it(pickle_function_call_wrapper, instance, method, output_dir=output_dir)
|
| 50 |
+
return output_dir
|
| 51 |
+
|
| 52 |
+
# For testing
|
| 53 |
+
if __name__=='__main__':
|
| 54 |
+
import glob
|
| 55 |
+
class Dog:
|
| 56 |
+
def __init__(self, name):
|
| 57 |
+
self.name = name
|
| 58 |
+
def bark(self, arg, kwarg=None):
|
| 59 |
+
print(f'{self.name}:{arg}:{kwarg}')
|
| 60 |
+
|
| 61 |
+
dog = Dog('fido')
|
| 62 |
+
dog.bark('ruff')
|
| 63 |
+
|
| 64 |
+
output_dir = pickle_function_call(dog, 'bark', 'debugging')
|
| 65 |
+
|
| 66 |
+
dog.bark('ruff', kwarg='wooof')
|
| 67 |
+
|
| 68 |
+
for p in glob.glob(os.path.join(output_dir, '*')):
|
| 69 |
+
print(p)
|
| 70 |
+
with open(p, 'rb') as fh:
|
| 71 |
+
print(pickle.load(fh))
|
scripts/preflight.py
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env python
|
| 2 |
+
"""Preflight checks for the standalone RFdiffusion package."""
|
| 3 |
+
|
| 4 |
+
from __future__ import annotations
|
| 5 |
+
|
| 6 |
+
import argparse
|
| 7 |
+
import importlib
|
| 8 |
+
import os
|
| 9 |
+
import sys
|
| 10 |
+
from pathlib import Path
|
| 11 |
+
|
| 12 |
+
|
| 13 |
+
ROOT = Path(__file__).resolve().parents[1]
|
| 14 |
+
os.environ.setdefault("DGLBACKEND", "pytorch")
|
| 15 |
+
REQUIRED_WEIGHTS = [
|
| 16 |
+
"ActiveSite_ckpt.pt",
|
| 17 |
+
"Base_ckpt.pt",
|
| 18 |
+
"Base_epoch8_ckpt.pt",
|
| 19 |
+
"Complex_Fold_base_ckpt.pt",
|
| 20 |
+
"Complex_base_ckpt.pt",
|
| 21 |
+
"Complex_beta_ckpt.pt",
|
| 22 |
+
"InpaintSeq_Fold_ckpt.pt",
|
| 23 |
+
"InpaintSeq_ckpt.pt",
|
| 24 |
+
"RF_structure_prediction_weights.pt",
|
| 25 |
+
]
|
| 26 |
+
REQUIRED_FILES = [
|
| 27 |
+
"README.md",
|
| 28 |
+
"configuration.json",
|
| 29 |
+
"config/inference/base.yaml",
|
| 30 |
+
"config/inference/symmetry.yaml",
|
| 31 |
+
"scripts/run_inference.py",
|
| 32 |
+
"examples/input_pdbs/1qys.pdb",
|
| 33 |
+
"examples/input_pdbs/1YCR.pdb",
|
| 34 |
+
]
|
| 35 |
+
TEXT_SUFFIXES = {".py", ".yaml", ".yml", ".json", ".md", ".sh", ".txt", ".tsv"}
|
| 36 |
+
GENERATED_DIRS = {"outputs", ".cache", "logs"}
|
| 37 |
+
|
| 38 |
+
|
| 39 |
+
def fail(message: str) -> None:
|
| 40 |
+
print(f"[FAIL] {message}")
|
| 41 |
+
raise SystemExit(1)
|
| 42 |
+
|
| 43 |
+
|
| 44 |
+
def check_required_files() -> None:
|
| 45 |
+
missing = [rel for rel in REQUIRED_FILES if not (ROOT / rel).is_file()]
|
| 46 |
+
if missing:
|
| 47 |
+
fail("Missing required files: " + ", ".join(missing))
|
| 48 |
+
print(f"[OK] Required files present: {len(REQUIRED_FILES)}")
|
| 49 |
+
|
| 50 |
+
|
| 51 |
+
def check_weights(strict: bool) -> None:
|
| 52 |
+
missing = []
|
| 53 |
+
bad = []
|
| 54 |
+
for name in REQUIRED_WEIGHTS:
|
| 55 |
+
path = ROOT / "weight" / name
|
| 56 |
+
if not path.is_file():
|
| 57 |
+
missing.append(str(path.relative_to(ROOT)))
|
| 58 |
+
continue
|
| 59 |
+
if strict:
|
| 60 |
+
size = path.stat().st_size
|
| 61 |
+
head = path.read_bytes()[:128]
|
| 62 |
+
lfs_marker = b"version https://git-lfs" + b".github.com"
|
| 63 |
+
if size < 1024 * 1024 or head.startswith(lfs_marker):
|
| 64 |
+
bad.append(f"{path.relative_to(ROOT)} ({size} bytes)")
|
| 65 |
+
if missing:
|
| 66 |
+
fail("Missing weight files: " + ", ".join(missing))
|
| 67 |
+
if bad:
|
| 68 |
+
fail("Invalid or placeholder weight files: " + ", ".join(bad))
|
| 69 |
+
mode = "strict" if strict else "basic"
|
| 70 |
+
print(f"[OK] Weight files present ({mode}): {len(REQUIRED_WEIGHTS)}")
|
| 71 |
+
|
| 72 |
+
|
| 73 |
+
def iter_text_files():
|
| 74 |
+
for path in ROOT.rglob("*"):
|
| 75 |
+
if not path.is_file():
|
| 76 |
+
continue
|
| 77 |
+
if GENERATED_DIRS.intersection(path.relative_to(ROOT).parts):
|
| 78 |
+
continue
|
| 79 |
+
if path.name == ".gitattributes" or path.suffix in TEXT_SUFFIXES:
|
| 80 |
+
yield path
|
| 81 |
+
|
| 82 |
+
|
| 83 |
+
|
| 84 |
+
def check_imports() -> None:
|
| 85 |
+
sys.path.insert(0, str(ROOT))
|
| 86 |
+
modules = [
|
| 87 |
+
"onescience.utils.rfdiffusion.inference.utils",
|
| 88 |
+
"onescience.utils.rfdiffusion.inference.model_runners",
|
| 89 |
+
"onescience.models.rfdiffusion.RoseTTAFoldModel",
|
| 90 |
+
"onescience.models.se3_transformer",
|
| 91 |
+
]
|
| 92 |
+
for name in modules:
|
| 93 |
+
importlib.import_module(name)
|
| 94 |
+
print(f"[OK] Strict imports succeeded: {len(modules)} modules")
|
| 95 |
+
|
| 96 |
+
|
| 97 |
+
def main() -> None:
|
| 98 |
+
parser = argparse.ArgumentParser()
|
| 99 |
+
parser.add_argument("--strict-weights", action="store_true")
|
| 100 |
+
parser.add_argument("--strict-imports", action="store_true")
|
| 101 |
+
args = parser.parse_args()
|
| 102 |
+
|
| 103 |
+
check_required_files()
|
| 104 |
+
check_weights(strict=args.strict_weights)
|
| 105 |
+
if args.strict_imports:
|
| 106 |
+
check_imports()
|
| 107 |
+
print("[OK] RFdiffusion standalone preflight passed")
|
| 108 |
+
|
| 109 |
+
|
| 110 |
+
if __name__ == "__main__":
|
| 111 |
+
main()
|
scripts/run_inference.py
ADDED
|
@@ -0,0 +1,202 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env python
|
| 2 |
+
"""Standalone RFdiffusion inference entry point."""
|
| 3 |
+
|
| 4 |
+
import re
|
| 5 |
+
import os
|
| 6 |
+
import pickle
|
| 7 |
+
import sys
|
| 8 |
+
import time
|
| 9 |
+
from pathlib import Path
|
| 10 |
+
|
| 11 |
+
PACKAGE_ROOT = Path(__file__).resolve().parents[1]
|
| 12 |
+
if str(PACKAGE_ROOT) not in sys.path:
|
| 13 |
+
sys.path.insert(0, str(PACKAGE_ROOT))
|
| 14 |
+
|
| 15 |
+
os.environ.setdefault("RF_DIFFUSION_MODEL_DIR", str(PACKAGE_ROOT / "weight"))
|
| 16 |
+
os.environ.setdefault("DGLBACKEND", "pytorch")
|
| 17 |
+
os.environ.setdefault(
|
| 18 |
+
"RF_DIFFUSION_INPUT_PDB", str(PACKAGE_ROOT / "examples" / "input_pdbs" / "1qys.pdb")
|
| 19 |
+
)
|
| 20 |
+
os.environ.setdefault("RF_DIFFUSION_OUTPUT_PREFIX", str(PACKAGE_ROOT / "outputs" / "design"))
|
| 21 |
+
os.environ.setdefault("RF_DIFFUSION_SCHEDULE_DIR", str(PACKAGE_ROOT / ".cache" / "schedules"))
|
| 22 |
+
|
| 23 |
+
import torch
|
| 24 |
+
from omegaconf import OmegaConf
|
| 25 |
+
import hydra
|
| 26 |
+
import logging
|
| 27 |
+
from onescience.utils.rfdiffusion.util import writepdb_multi, writepdb
|
| 28 |
+
from onescience.utils.rfdiffusion.inference import utils as iu
|
| 29 |
+
from hydra.core.hydra_config import HydraConfig
|
| 30 |
+
import numpy as np
|
| 31 |
+
import random
|
| 32 |
+
import glob
|
| 33 |
+
|
| 34 |
+
|
| 35 |
+
def make_deterministic(seed=0):
|
| 36 |
+
torch.manual_seed(seed)
|
| 37 |
+
np.random.seed(seed)
|
| 38 |
+
random.seed(seed)
|
| 39 |
+
|
| 40 |
+
|
| 41 |
+
@hydra.main(version_base=None, config_path="../config/inference", config_name="base")
|
| 42 |
+
def main(conf: HydraConfig) -> None:
|
| 43 |
+
log = logging.getLogger(__name__)
|
| 44 |
+
if conf.inference.deterministic:
|
| 45 |
+
make_deterministic()
|
| 46 |
+
|
| 47 |
+
if os.environ.get("RF_DIFFUSION_SMOKE_TEST") == "1":
|
| 48 |
+
log.info("RF_DIFFUSION_SMOKE_TEST=1; configuration loaded, skipping sampling.")
|
| 49 |
+
print("RFdiffusion smoke test passed: imports and Hydra config are available.")
|
| 50 |
+
return
|
| 51 |
+
|
| 52 |
+
# Check for available GPU and print result of check
|
| 53 |
+
if torch.cuda.is_available():
|
| 54 |
+
device_name = torch.cuda.get_device_name(torch.cuda.current_device())
|
| 55 |
+
log.info(f"Found GPU with device_name {device_name}. Will run RFdiffusion on {device_name}")
|
| 56 |
+
else:
|
| 57 |
+
log.info("////////////////////////////////////////////////")
|
| 58 |
+
log.info("///// NO GPU DETECTED! Falling back to CPU /////")
|
| 59 |
+
log.info("////////////////////////////////////////////////")
|
| 60 |
+
|
| 61 |
+
# Initialize sampler and target/contig.
|
| 62 |
+
sampler = iu.sampler_selector(conf)
|
| 63 |
+
|
| 64 |
+
# Loop over number of designs to sample.
|
| 65 |
+
design_startnum = sampler.inf_conf.design_startnum
|
| 66 |
+
if sampler.inf_conf.design_startnum == -1:
|
| 67 |
+
existing = glob.glob(sampler.inf_conf.output_prefix + "*.pdb")
|
| 68 |
+
indices = [-1]
|
| 69 |
+
for e in existing:
|
| 70 |
+
print(e)
|
| 71 |
+
m = re.match(".*_(\d+)\.pdb$", e)
|
| 72 |
+
print(m)
|
| 73 |
+
if not m:
|
| 74 |
+
continue
|
| 75 |
+
m = m.groups()[0]
|
| 76 |
+
indices.append(int(m))
|
| 77 |
+
design_startnum = max(indices) + 1
|
| 78 |
+
|
| 79 |
+
for i_des in range(design_startnum, design_startnum + sampler.inf_conf.num_designs):
|
| 80 |
+
if conf.inference.deterministic:
|
| 81 |
+
make_deterministic(i_des)
|
| 82 |
+
|
| 83 |
+
start_time = time.time()
|
| 84 |
+
out_prefix = f"{sampler.inf_conf.output_prefix}_{i_des}"
|
| 85 |
+
log.info(f"Making design {out_prefix}")
|
| 86 |
+
if sampler.inf_conf.cautious and os.path.exists(out_prefix + ".pdb"):
|
| 87 |
+
log.info(
|
| 88 |
+
f"(cautious mode) Skipping this design because {out_prefix}.pdb already exists."
|
| 89 |
+
)
|
| 90 |
+
continue
|
| 91 |
+
|
| 92 |
+
x_init, seq_init = sampler.sample_init()
|
| 93 |
+
denoised_xyz_stack = []
|
| 94 |
+
px0_xyz_stack = []
|
| 95 |
+
seq_stack = []
|
| 96 |
+
plddt_stack = []
|
| 97 |
+
|
| 98 |
+
x_t = torch.clone(x_init)
|
| 99 |
+
seq_t = torch.clone(seq_init)
|
| 100 |
+
# Loop over number of reverse diffusion time steps.
|
| 101 |
+
for t in range(int(sampler.t_step_input), sampler.inf_conf.final_step - 1, -1):
|
| 102 |
+
px0, x_t, seq_t, plddt = sampler.sample_step(
|
| 103 |
+
t=t, x_t=x_t, seq_init=seq_t, final_step=sampler.inf_conf.final_step
|
| 104 |
+
)
|
| 105 |
+
px0_xyz_stack.append(px0)
|
| 106 |
+
denoised_xyz_stack.append(x_t)
|
| 107 |
+
seq_stack.append(seq_t)
|
| 108 |
+
plddt_stack.append(plddt[0]) # remove singleton leading dimension
|
| 109 |
+
|
| 110 |
+
# Flip order for better visualization in pymol
|
| 111 |
+
denoised_xyz_stack = torch.stack(denoised_xyz_stack)
|
| 112 |
+
denoised_xyz_stack = torch.flip(
|
| 113 |
+
denoised_xyz_stack,
|
| 114 |
+
[
|
| 115 |
+
0,
|
| 116 |
+
],
|
| 117 |
+
)
|
| 118 |
+
px0_xyz_stack = torch.stack(px0_xyz_stack)
|
| 119 |
+
px0_xyz_stack = torch.flip(
|
| 120 |
+
px0_xyz_stack,
|
| 121 |
+
[
|
| 122 |
+
0,
|
| 123 |
+
],
|
| 124 |
+
)
|
| 125 |
+
|
| 126 |
+
# For logging -- don't flip
|
| 127 |
+
plddt_stack = torch.stack(plddt_stack)
|
| 128 |
+
|
| 129 |
+
# Save outputs
|
| 130 |
+
os.makedirs(os.path.dirname(out_prefix), exist_ok=True)
|
| 131 |
+
final_seq = seq_stack[-1]
|
| 132 |
+
|
| 133 |
+
# Output glycines, except for motif region
|
| 134 |
+
final_seq = torch.where(
|
| 135 |
+
torch.argmax(seq_init, dim=-1) == 21, 7, torch.argmax(seq_init, dim=-1)
|
| 136 |
+
) # 7 is glycine
|
| 137 |
+
|
| 138 |
+
bfacts = torch.ones_like(final_seq.squeeze())
|
| 139 |
+
# make bfact=0 for diffused coordinates
|
| 140 |
+
bfacts[torch.where(torch.argmax(seq_init, dim=-1) == 21, True, False)] = 0
|
| 141 |
+
# pX0 last step
|
| 142 |
+
out = f"{out_prefix}.pdb"
|
| 143 |
+
|
| 144 |
+
# Now don't output sidechains
|
| 145 |
+
writepdb(
|
| 146 |
+
out,
|
| 147 |
+
denoised_xyz_stack[0, :, :4],
|
| 148 |
+
final_seq,
|
| 149 |
+
sampler.binderlen,
|
| 150 |
+
chain_idx=sampler.chain_idx,
|
| 151 |
+
bfacts=bfacts,
|
| 152 |
+
)
|
| 153 |
+
|
| 154 |
+
# run metadata
|
| 155 |
+
trb = dict(
|
| 156 |
+
config=OmegaConf.to_container(sampler._conf, resolve=True),
|
| 157 |
+
plddt=plddt_stack.cpu().numpy(),
|
| 158 |
+
device=torch.cuda.get_device_name(torch.cuda.current_device())
|
| 159 |
+
if torch.cuda.is_available()
|
| 160 |
+
else "CPU",
|
| 161 |
+
time=time.time() - start_time,
|
| 162 |
+
)
|
| 163 |
+
if hasattr(sampler, "contig_map"):
|
| 164 |
+
for key, value in sampler.contig_map.get_mappings().items():
|
| 165 |
+
trb[key] = value
|
| 166 |
+
with open(f"{out_prefix}.trb", "wb") as f_out:
|
| 167 |
+
pickle.dump(trb, f_out)
|
| 168 |
+
|
| 169 |
+
if sampler.inf_conf.write_trajectory:
|
| 170 |
+
# trajectory pdbs
|
| 171 |
+
traj_prefix = (
|
| 172 |
+
os.path.dirname(out_prefix) + "/traj/" + os.path.basename(out_prefix)
|
| 173 |
+
)
|
| 174 |
+
os.makedirs(os.path.dirname(traj_prefix), exist_ok=True)
|
| 175 |
+
|
| 176 |
+
out = f"{traj_prefix}_Xt-1_traj.pdb"
|
| 177 |
+
writepdb_multi(
|
| 178 |
+
out,
|
| 179 |
+
denoised_xyz_stack,
|
| 180 |
+
bfacts,
|
| 181 |
+
final_seq.squeeze(),
|
| 182 |
+
use_hydrogens=False,
|
| 183 |
+
backbone_only=False,
|
| 184 |
+
chain_ids=sampler.chain_idx,
|
| 185 |
+
)
|
| 186 |
+
|
| 187 |
+
out = f"{traj_prefix}_pX0_traj.pdb"
|
| 188 |
+
writepdb_multi(
|
| 189 |
+
out,
|
| 190 |
+
px0_xyz_stack,
|
| 191 |
+
bfacts,
|
| 192 |
+
final_seq.squeeze(),
|
| 193 |
+
use_hydrogens=False,
|
| 194 |
+
backbone_only=False,
|
| 195 |
+
chain_ids=sampler.chain_idx,
|
| 196 |
+
)
|
| 197 |
+
|
| 198 |
+
log.info(f"Finished design in {(time.time()-start_time)/60:.2f} minutes")
|
| 199 |
+
|
| 200 |
+
|
| 201 |
+
if __name__ == "__main__":
|
| 202 |
+
main()
|
scripts/run_inference.sh
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env bash
|
| 2 |
+
set -euo pipefail
|
| 3 |
+
|
| 4 |
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
| 5 |
+
ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
| 6 |
+
|
| 7 |
+
cd "$ROOT_DIR"
|
| 8 |
+
python scripts/run_inference.py \
|
| 9 |
+
'contigmap.contigs=[80-80]' \
|
| 10 |
+
diffuser.T=15 \
|
| 11 |
+
inference.final_step=15 \
|
| 12 |
+
inference.num_designs=1 \
|
| 13 |
+
inference.write_trajectory=False \
|
| 14 |
+
inference.output_prefix=outputs/smoke/design
|
weight/ActiveSite_ckpt.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:beca1f672049161df0bc6a2d2523828f19fd9c8a2b449988e246dde42e7ea986
|
| 3 |
+
size 483616107
|
weight/Base_ckpt.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:0fcf7d7c32b4848030aca3a051e6768de194616f96ba6c38186351a33bfc6eca
|
| 3 |
+
size 483616107
|
weight/Base_epoch8_ckpt.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:b8e5d57f0b8a8f8cb30779c106b75210b46a914a4d19fb180676ae647f5ae23d
|
| 3 |
+
size 483616427
|
weight/Complex_Fold_base_ckpt.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:0ac3b4024aea811078cec41482528291d6d7d7084bf8190ec118f54642fb81a1
|
| 3 |
+
size 483626923
|
weight/Complex_base_ckpt.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:76e4e260aefee3b582bd76b77ab95d2592e64f00c51bf344968ab9239f3250bc
|
| 3 |
+
size 483619179
|
weight/Complex_beta_ckpt.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:5a0b1cafc23c60b1aabcec1e49391986ac4fd02cc1b6b4cc41714ca9fe882e9e
|
| 3 |
+
size 483380617
|
weight/InpaintSeq_Fold_ckpt.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:51849c9fe64c16a38fe41c75db76abe044e4d3493926f6cfd29a5bde0331b7cc
|
| 3 |
+
size 483626987
|
weight/InpaintSeq_ckpt.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:3b71b2b954e87d46b75a88ba64e0420fbf27f592604b10b6c3561b8c8ab70ab6
|
| 3 |
+
size 483619243
|
weight/RF_structure_prediction_weights.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:6414e9e60b0b01011e5a182def40b4e6de4e137554c887b2916d43566733ed95
|
| 3 |
+
size 241684523
|