anzhi2710gmailcom commited on
Commit
24ba92e
·
verified ·
1 Parent(s): 34564ab

Upload folder using huggingface_hub

Browse files
.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
- *.gz filter=lfs diff=lfs merge=lfs -text
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
- *.pickle filter=lfs diff=lfs merge=lfs -text
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
- *.tar.* filter=lfs diff=lfs merge=lfs -text
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