Sophia Tang commited on
Commit
7efee70
·
1 Parent(s): 4ce08b6

Initial commit with LFS

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitignore +17 -0
  2. LICENSE +21 -0
  3. README.md +51 -0
  4. assets/entangled.gif +3 -0
  5. assets/fig-clonidine.png +3 -0
  6. assets/fig-trametinib.png +3 -0
  7. assets/tps-full.png +3 -0
  8. entangled-cell/README.md +89 -0
  9. entangled-cell/bias.py +187 -0
  10. entangled-cell/configs/clonidine_100D.yaml +11 -0
  11. entangled-cell/configs/clonidine_150D.yaml +11 -0
  12. entangled-cell/configs/clonidine_50D.yaml +11 -0
  13. entangled-cell/configs/trametinib_50D.yaml +11 -0
  14. entangled-cell/data/Trametinib_5.0uM_pca_and_leidenumap_labels.csv +3 -0
  15. entangled-cell/data/pca_and_leiden_labels.csv +3 -0
  16. entangled-cell/data/rainier2-thin.las +3 -0
  17. entangled-cell/dataloaders/clonidine_v2_data.py +316 -0
  18. entangled-cell/dataloaders/three_branch_data.py +313 -0
  19. entangled-cell/entangledcell_module_three.py +871 -0
  20. entangled-cell/entangledcell_module_unseen.py +817 -0
  21. entangled-cell/environment.yml +36 -0
  22. entangled-cell/eval.py +276 -0
  23. entangled-cell/geo_metrics/land.py +28 -0
  24. entangled-cell/geo_metrics/metric_factory.py +162 -0
  25. entangled-cell/geo_metrics/rbf_unseen.py +154 -0
  26. entangled-cell/parser.py +156 -0
  27. entangled-cell/scripts/clonidine100.sh +37 -0
  28. entangled-cell/scripts/clonidine150.sh +37 -0
  29. entangled-cell/scripts/clonidine50.sh +37 -0
  30. entangled-cell/scripts/trametinib.sh +37 -0
  31. entangled-cell/train_cell.py +104 -0
  32. entangled-cell/train_utils.py +115 -0
  33. entangled-tps/README.md +69 -0
  34. entangled-tps/data/aldp/c5.pdb +41 -0
  35. entangled-tps/data/aldp/c7ax.pdb +46 -0
  36. entangled-tps/data/aldp/landscape.dat +0 -0
  37. entangled-tps/data/aldp/path.gro +3 -0
  38. entangled-tps/data/bba/folded.pdb +515 -0
  39. entangled-tps/data/bba/path.gro +3 -0
  40. entangled-tps/data/bba/tica_model.pkl +3 -0
  41. entangled-tps/data/bba/unfolded.pdb +515 -0
  42. entangled-tps/data/bbl/bbl.h5 +3 -0
  43. entangled-tps/data/bbl/folded.pdb +917 -0
  44. entangled-tps/data/bbl/path.gro +3 -0
  45. entangled-tps/data/bbl/tica_model.pkl +3 -0
  46. entangled-tps/data/bbl/unfolded.pdb +716 -0
  47. entangled-tps/data/chignolin/folded.pdb +280 -0
  48. entangled-tps/data/chignolin/path.gro +3 -0
  49. entangled-tps/data/chignolin/tica_model.pkl +3 -0
  50. entangled-tps/data/chignolin/unfolded.pdb +277 -0
.gitignore ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ entangled-tps/results/
2
+ entangled-tps/scripts/wandb/
3
+ entangled-tps/scripts/logs/
4
+ entangled-tps/scripts/results/
5
+ entangled-tps/wandb/
6
+ entangled-tps/logs/
7
+ entangled-cell/__pycache__/
8
+ entangled-cell/scripts/lightning_logs/
9
+ entangled-cell/logs/
10
+ entangled-cell/results/
11
+ entangled-cell/scripts/wandb/
12
+ entangled-cell/wandb/
13
+ *.pt
14
+ *.log
15
+ *.ckpt
16
+ *.pyc
17
+ *.npy
LICENSE ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Sophia Tang
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
README.md ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # [Entangled Schrödinger Bridge Matching](https://arxiv.org/abs/2511.07406v1) ⚛️🌟
2
+
3
+
4
+ [**Sophia Tang**](https://sophtang.github.io/), **[Yinuo Zhang](https://www.linkedin.com/in/yinuozhang98/)**, and [**Pranam Chatterjee**](https://www.chatterjeelab.com/)
5
+
6
+ ![EntangledSBM](assets/entangled.gif)
7
+
8
+ This is the repository for **Entangled Schrödinger Bridge Matching** ⚛️🌟. It is partially built on the [**BranchSBM repo**](https://huggingface.co/ChatterjeeLab/BranchSBM) ([Tang et al. 2025](https://arxiv.org/abs/2506.09007)), the [**TPS-DPS repo**](https://github.com/kiyoung98/tps-dps) ([Seong et al. 2024](https://arxiv.org/abs/2405.19961)), and the [**Metric Flow Matching repo**](https://github.com/kkapusniak/metric-flow-matching) ([Kapusniak et al. 2024](https://arxiv.org/abs/2405.14780)).
9
+
10
+ Simulating trajectories of multi-particle systems on complex energy landscapes is a central task in molecular dynamics (MD) and drug discovery, but remains challenging at scale due to computationally expensive and long simulations. Flow and Schrödinger bridge matching have been used to implicitly learn joint trajectories through data snapshots. However, many systems undergo *dynamic interactions* that evolve over their trajectory and cannot be captured through static snapshots.
11
+
12
+ **EntangledSBM** solves this by learning the first- and second-order stochastic dynamics of interacting, multi-particle systems where the direction and magnitude of each particle’s path depend dynamically on the paths of the other particles.
13
+
14
+ 🌟 We formulate the **Entangled Schrödinger Bridge (EntangledSB) problem** that aims to parameterize a **bias force** that dynamically depends on the system’s positions and velocities as they evolve over time.
15
+
16
+ 🌟 To solve the EntangledSB problem, we introduce a novel parameterization of the bias force that can be conditioned, *at inference time*, on a target distribution or terminal state, enabling the generation of trajectories to **diverse target distributions.**
17
+
18
+ 🌟 We minimize the divergence of the simulated path distribution from the optimal bridge distribution using a **weighted cross-entropy** objective.
19
+
20
+ We evaluate EntangledSBM on **mapping cell cluster dynamics under drug perturbations** and **transition path sampling (TPS) of high-dimensional molecular systems.**
21
+
22
+ ## Cell-State Perturbation Experiment 🧫
23
+
24
+ In this experiment, we evaluate the ability of EntangledSBM to **generate the trajectories of cell clusters under perturbation**. We demonstrate that EntanlgedSBM accurately **reconstructs perturbed cell states** and **generalizes to divergent target states not seen during training**.
25
+
26
+ Code and instructions to reproduce our results are provided in `/entangled-cell`.
27
+
28
+ ![EntangledSBM for Cell Perturbation Modelling](assets/fig-trametinib.png)
29
+
30
+ ## Transition Path Sampling Experiment ⚛️
31
+
32
+ In this experiment, we evaluate the capability of EntangledSBM in **simulating molecular dynamics (MD) trajectories** given a potential energy landscape and the starting and target metastable states. We evaluate Alanine Dipeptide and three fast-folding proteins (Chignolin, Trp-cage, and BBA) and demonstrate enhanced performance against baselines for all-atom simulations.
33
+
34
+ Code and instructions to reproduce our results are provided in `/entangled-tps`.
35
+
36
+ ![EntangledSBM for Transition Path Sampling](assets/tps-full.png)
37
+
38
+ ## Citation
39
+
40
+ If you find this repository helpful for your publications, please consider citing our paper:
41
+
42
+ ```python
43
+ @article{tang2025entangledsbm,
44
+ title={Entangled Schrödinger Bridge Matching},
45
+ author={Sophia Tang and Yinuo Zhang and Pranam Chatterjee},
46
+ journal={arXiv preprint arXiv:2511.07406},
47
+ year={2025}
48
+ }
49
+ ```
50
+
51
+ To use this repository, you agree to abide by the MIT License.
assets/entangled.gif ADDED

Git LFS Details

  • SHA256: 47187441f0c97738323924429255924be186d7379e165669833a5a0ffb62eaa5
  • Pointer size: 132 Bytes
  • Size of remote file: 9.7 MB
assets/fig-clonidine.png ADDED

Git LFS Details

  • SHA256: b151347cd54a83eba8bc689c5ce9daf6ab9fbaf3f96a3424fac81fd32ef9e831
  • Pointer size: 132 Bytes
  • Size of remote file: 7.36 MB
assets/fig-trametinib.png ADDED

Git LFS Details

  • SHA256: e8375309494ac6d08934f08a423ab0f7d4222b361d5360c80dd547f1557e75a2
  • Pointer size: 132 Bytes
  • Size of remote file: 5.42 MB
assets/tps-full.png ADDED

Git LFS Details

  • SHA256: d46df17c955b7490785bee1920f1509ceb3d08d2e26ba2bbf05b8d3c77c0ad2a
  • Pointer size: 132 Bytes
  • Size of remote file: 4.77 MB
entangled-cell/README.md ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # EntangledSBM for Cell Perturbation Modelling 🧫
2
+
3
+ This part of the code is for running the cell perturbation experiments. We demonstrate that EntanlgedSBM accurately **reconstructs perturbed cell states** and **generalizes to divergent target states not seen during training**. This codebase is partially built off of the [BranchSBM repo](https://github.com/kiyoung98/tps-dps/tree/main) ([Tang et al. 2025](https://arxiv.org/abs/2506.09007)) and the [Metric Flow Matching repo](https://github.com/kkapusniak/metric-flow-matching) ([Kapusniak et al. 2024](https://arxiv.org/abs/2405.14780)).
4
+
5
+ ## Environment Installation
6
+ ```
7
+ conda env create -f environment.yml
8
+
9
+ conda activate entangled-cell
10
+ ```
11
+
12
+ ## Data
13
+
14
+ We use perturbation data from the [Tahoe-100M dataset](https://huggingface.co/datasets/tahoebio/Tahoe-100M) containing control DMSO-treated cell data and perturbed cell data.
15
+
16
+ The raw data contains a total of 60K genes. We select the top 2000 highly variable genes (HVGs) and perform principal component analysis (PCA), to maximally capture the variance in the data via the top principal components (38% in the top-50 PCs). **Our goal is to learn the dynamic trajectories that map control cell clusters to the perturbd cell clusters.**
17
+
18
+ **Specifically, we model the following perturbations**:
19
+
20
+ 1. **Clonidine**: Cell states under 5uM Clonidine perturbation at various PC dimensions (50D, 100D, 150D) with 1 unseen population.
21
+ 2. **Trametinib**: Cell states under 5uM Trametinib perturbation (50D) with 2 unseen populations.
22
+
23
+ Processed data files are stored in:
24
+ ```
25
+ entangled-cell/data/
26
+ ├── pca_and_leiden_labels.csv # Clonidine data
27
+ └── Trametinib_5.0uM_pca_and_leidenumap_labels.csv # Trametinib data
28
+ ```
29
+
30
+ ## Running Experiments
31
+
32
+ All training scripts are located in `entangled-cell/scripts/`. Each script is pre-configured for a specific experiment.
33
+
34
+ **Before running experiments:**
35
+
36
+ 1. Set `HOME_LOC` to the base path where EntangledSBM is located and `ENV_PATH` to the directory where your environment is downloaded in the `.sh` files in `scripts/`
37
+ 2. Create a path `entangled-cell/results` where the simulated trajectory figures and metrics will be saved. Also, create `entangled-cell/logs` where the training logs will be saved.
38
+ 3. Activate the conda environment:
39
+ ```
40
+ conda activate entangled-cell
41
+ ```
42
+ 4. Login to wandb using `wandb login`
43
+
44
+ **Run experiment using `nohup` with the following commands:**
45
+
46
+ ```
47
+ cd entangled-cell/scripts
48
+
49
+ chmod clonidine50.sh
50
+
51
+ nohup ./clonidine50.sh > clonidine50.log 2>&1 &
52
+ ```
53
+ Evaluation will run automatically after the specified number of rollouts `--num_rollouts` is finished. To see metrics, go to `results/<experiment>/metrics/` or the end of `logs/<experiment>.log`.
54
+
55
+ For Clonidine, `x1_1` indicates the cell cluster that is sampled from for training and `x1_2` is the held-out cell cluster. For Trametinib `x1_1` indicates the cell cluster that is sampled from for training and `x1_2` and `x1_3` are the held-out cell clusters.
56
+
57
+ We report the following metrics for each of the clusters in our paper:
58
+ 1. Maximum Mean Discrepancy (RBF-MMD) of simualted cell cluster with target cell cluster (same cell count).
59
+ 2. 1-Wasserstein and 2-Wasserstein distances against full cell population in the cluster.
60
+
61
+ ## Overview of Outputs
62
+
63
+ **Training outputs are saved to experiment-specific directories:**
64
+
65
+ ```
66
+ entangled-cell/results/
67
+ ├── clonidine_ce_50D/
68
+ │ └── positions/ # Generated trajectory
69
+ │ └── metrics/ # JSON of metrics
70
+ │ └── figures/ # Figures of simulated trajectories
71
+ ```
72
+
73
+ **PyTorch Lightning automatically saves model checkpoints to:**
74
+
75
+ ```
76
+ entangled-cell/scripts/lightning_logs/
77
+ ├── <wandb-run-id>/
78
+ │ ├── checkpoints/
79
+ │ │ ├── epoch=N-step=M.ckpt # Checkpoint
80
+ ```
81
+
82
+ **Training logs are saved in:**
83
+ ```
84
+ entangled-cell/logs/
85
+ ├── <DATE>_clonidine-ce-50D_train.log
86
+ ├── <DATE>_clonidine-ce-100D_train.log
87
+ ├── <DATE>_clonidine-ce-150D_train.log
88
+ └── <DATE>_trametinib-ce-50D_train.log
89
+ ```
entangled-cell/bias.py ADDED
@@ -0,0 +1,187 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import sys
2
+ import os
3
+ os.environ["CUDA_VISIBLE_DEVICES"] = "6"
4
+
5
+ import torch
6
+ import torch.nn as nn
7
+ import torch.nn.functional as F
8
+
9
+ class BiasForceTransformer(nn.Module):
10
+ def __init__(self,
11
+ args,
12
+ d_model = 256,
13
+ nhead = 8,
14
+ num_layers = 4,
15
+ dim_feedforward = 512,
16
+ dropout = 0.1,
17
+ ):
18
+ super().__init__()
19
+ self.device = args.device
20
+ self.N = args.num_particles
21
+
22
+ self.use_delta_to_target = args.use_delta_to_target
23
+ self.rbf = args.rbf
24
+
25
+ self.sigma = args.sigma
26
+
27
+ G = args.dim
28
+ # Per-atom features in aligned frame for the Transformer
29
+ # pos_al(3), vel_al(3), delta_to_target(3 optional), distance(1)
30
+ feat_dim = (2 * G) + (G if self.use_delta_to_target else 0) + 1
31
+
32
+ self.input_proj = nn.Linear(feat_dim, d_model)
33
+ enc_layer = nn.TransformerEncoderLayer(
34
+ d_model=d_model, nhead=nhead,
35
+ dim_feedforward=dim_feedforward,
36
+ dropout=dropout, activation="gelu",
37
+ batch_first=True, norm_first=True
38
+ )
39
+ self.encoder = nn.TransformerEncoder(enc_layer, num_layers=num_layers)
40
+
41
+ # Heads
42
+ self.scale_head = nn.Sequential(
43
+ nn.Linear(d_model, d_model // 2),
44
+ nn.GELU(),
45
+ nn.Linear(d_model // 2, 1),
46
+ )
47
+ self.vec_head = nn.Sequential(
48
+ nn.Linear(d_model, d_model // 2),
49
+ nn.GELU(),
50
+ nn.Linear(d_model // 2, args.dim),
51
+ )
52
+
53
+ self.log_z = nn.Parameter(torch.tensor(0.0))
54
+ #self.to(self.device)
55
+
56
+ @staticmethod
57
+ def _softplus_unit(x, beta=1.0, threshold=20.0, eps=1e-8):
58
+ return F.softplus(x, beta=beta, threshold=threshold) + eps
59
+
60
+ def forward(self, pos, vel, target):
61
+ """
62
+ pos, vel, target: (B,N,D)
63
+ Returns: force (B,N,D), scale (B,N), vector (B,N,D)
64
+
65
+ N: number of cells in batch
66
+ D: dimension of gene vector
67
+ """
68
+ B, N, G = pos.shape
69
+ assert N == self.N, f"Expected N={self.N}, got {N}"
70
+
71
+ # direction of target position
72
+ delta = target - pos # (B,N,G)
73
+ dist = torch.norm(delta, dim=-1, keepdim=True) # (B,N,1)
74
+ feats = torch.cat([pos, vel, delta, dist], dim=-1) \
75
+ if self.use_delta_to_target else torch.cat([pos, vel, dist], dim=-1)
76
+
77
+ x = self.input_proj(feats) # (B,N,d_model)
78
+ x = self.encoder(x) # (B,N,d_model)
79
+
80
+ # Heads
81
+ scale = self._softplus_unit(self.scale_head(x)).squeeze(-1) # (B,N)
82
+ vector = self.vec_head(x) # (B,N,3)
83
+
84
+ # Direction field d
85
+ d = (target - pos)
86
+
87
+ # Parallel component from scale head
88
+ scale = scale.unsqueeze(-1).expand(-1, -1, G)
89
+ scaled = scale * d # (B,N,3)
90
+
91
+ # Project vector head output onto plane orthogonal to d
92
+ eps = torch.finfo(pos.dtype).eps
93
+ denom = d.pow(2).sum(dim=-1, keepdim=True).clamp_min(eps) # (B,N,1)
94
+ vec_parallel = ((vector * d).sum(dim=-1, keepdim=True) / denom) * d
95
+ vec_perp = vector - vec_parallel
96
+
97
+ return vec_perp + scaled
98
+
99
+ class BiasForceTransformerNoVel(nn.Module):
100
+ def __init__(self,
101
+ args,
102
+ d_model = 256,
103
+ nhead = 8,
104
+ num_layers = 4,
105
+ dim_feedforward = 512,
106
+ dropout = 0.1,
107
+ ):
108
+ super().__init__()
109
+ self.device = args.device
110
+ self.N = args.num_particles
111
+
112
+ self.use_delta_to_target = args.use_delta_to_target
113
+ self.rbf = args.rbf
114
+
115
+ self.sigma = args.sigma
116
+
117
+ G = args.dim
118
+ # Per-atom features in aligned frame for the Transformer
119
+ # pos_al(3), vel_al(3), delta_to_target(3 optional), distance(1)
120
+ feat_dim = G + (G if self.use_delta_to_target else 0) + 1
121
+
122
+ self.input_proj = nn.Linear(feat_dim, d_model)
123
+ enc_layer = nn.TransformerEncoderLayer(
124
+ d_model=d_model, nhead=nhead,
125
+ dim_feedforward=dim_feedforward,
126
+ dropout=dropout, activation="gelu",
127
+ batch_first=True, norm_first=True
128
+ )
129
+ self.encoder = nn.TransformerEncoder(enc_layer, num_layers=num_layers)
130
+
131
+ # Heads
132
+ self.scale_head = nn.Sequential(
133
+ nn.Linear(d_model, d_model // 2),
134
+ nn.GELU(),
135
+ nn.Linear(d_model // 2, 1),
136
+ )
137
+ self.vec_head = nn.Sequential(
138
+ nn.Linear(d_model, d_model // 2),
139
+ nn.GELU(),
140
+ nn.Linear(d_model // 2, args.dim),
141
+ )
142
+
143
+ self.log_z = nn.Parameter(torch.tensor(0.0))
144
+ #self.to(self.device)
145
+
146
+ @staticmethod
147
+ def _softplus_unit(x, beta=1.0, threshold=20.0, eps=1e-8):
148
+ return F.softplus(x, beta=beta, threshold=threshold) + eps
149
+
150
+ def forward(self, pos, target):
151
+ """
152
+ pos, target: (B,N,D)
153
+ Returns: force (B,N,D), scale (B,N), vector (B,N,D)
154
+
155
+ N: number of cells in batch
156
+ D: dimension of gene vector
157
+ """
158
+ B, N, G = pos.shape
159
+ assert N == self.N, f"Expected N={self.N}, got {N}"
160
+
161
+ # direction of target position
162
+ delta = target - pos # (B,N,G)
163
+ dist = torch.norm(delta, dim=-1, keepdim=True) # (B,N,1)
164
+ feats = torch.cat([pos, delta, dist], dim=-1) \
165
+ if self.use_delta_to_target else torch.cat([pos, dist], dim=-1)
166
+
167
+ x = self.input_proj(feats) # (B,N,d_model)
168
+ x = self.encoder(x) # (B,N,d_model)
169
+
170
+ # Heads
171
+ scale = self._softplus_unit(self.scale_head(x)).squeeze(-1) # (B,N)
172
+ vector = self.vec_head(x) # (B,N,3)
173
+
174
+ # Direction field d
175
+ d = (target - pos)
176
+
177
+ # Parallel component from scale head
178
+ scale = scale.unsqueeze(-1).expand(-1, -1, G)
179
+ scaled = scale * d # (B,N,3)
180
+
181
+ # Project vector head output onto plane orthogonal to d
182
+ eps = torch.finfo(pos.dtype).eps
183
+ denom = d.pow(2).sum(dim=-1, keepdim=True).clamp_min(eps) # (B,N,1)
184
+ vec_parallel = ((vector * d).sum(dim=-1, keepdim=True) / denom) * d
185
+ vec_perp = vector - vec_parallel
186
+
187
+ return vec_perp + scaled
entangled-cell/configs/clonidine_100D.yaml ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ data_type: "tahoe"
2
+ data_name: "clonidine100D"
3
+ accelerator: "gpu"
4
+ dim: 100
5
+ velocity_metric: "rbf"
6
+ metric_patience: 25
7
+ n_centers: 300
8
+ kappa: 2
9
+ rho: -2.75
10
+ alpha_metric: 1
11
+ metric_epochs: 400
entangled-cell/configs/clonidine_150D.yaml ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ data_type: "tahoe"
2
+ data_name: "clonidine150D"
3
+ accelerator: "gpu"
4
+ dim: 150
5
+ velocity_metric: "rbf"
6
+ metric_patience: 25
7
+ n_centers: 300
8
+ kappa: 3
9
+ rho: -2.75
10
+ alpha_metric: 1
11
+ metric_epochs: 400
entangled-cell/configs/clonidine_50D.yaml ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ data_type: "tahoe"
2
+ data_name: "clonidine50Dsingle"
3
+ dim: 50
4
+ velocity_metric: "rbf"
5
+ metric_patience: 25
6
+ n_centers: 150
7
+ kappa: 1.5
8
+ rho: -2.75
9
+ alpha_metric: 1
10
+ metric_epochs: 200
11
+ accelerator: "gpu"
entangled-cell/configs/trametinib_50D.yaml ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ data_type: "tahoe"
2
+ data_name: "trametinib"
3
+ accelerator: "gpu"
4
+ dim: 50
5
+ velocity_metric: "rbf"
6
+ metric_patience: 25
7
+ n_centers: 150
8
+ kappa: 1.5
9
+ rho: -2.75
10
+ alpha_metric: 1
11
+ metric_epochs: 200
entangled-cell/data/Trametinib_5.0uM_pca_and_leidenumap_labels.csv ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1c8cda9ec3b589e99db0d7b48a8d004d6dff159a2c5c253e604e93eb95e0f723
3
+ size 40651087
entangled-cell/data/pca_and_leiden_labels.csv ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d63d8d2732d227be59d1106e456a9caad4b016972492e08e73f29a9d7226e805
3
+ size 271796108
entangled-cell/data/rainier2-thin.las ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:246c3f3f7d25bfb5fa0a6f2500b9fe12b88f0985b8bae8f9529eb89c6efc68e0
3
+ size 1878303
entangled-cell/dataloaders/clonidine_v2_data.py ADDED
@@ -0,0 +1,316 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ import sys
3
+ from sklearn.preprocessing import StandardScaler
4
+ import pytorch_lightning as pl
5
+ from torch.utils.data import DataLoader
6
+ from lightning.pytorch.utilities.combined_loader import CombinedLoader
7
+ import pandas as pd
8
+ import numpy as np
9
+ from functools import partial
10
+ from scipy.spatial import cKDTree
11
+ from sklearn.cluster import KMeans
12
+ from torch.utils.data import TensorDataset
13
+
14
+ class ClonidineV2DataModule(pl.LightningDataModule):
15
+ def __init__(self, args):
16
+ super().__init__()
17
+ self.save_hyperparameters()
18
+
19
+ self.batch_size = args.batch_size
20
+ self.max_dim = args.dim
21
+ #self.whiten = args.whiten
22
+ self.split_ratios = args.split_ratios
23
+
24
+ self.dim = args.dim
25
+ # Path to your combined data
26
+ self.data_path = f"{args.root_dir}/data/pca_and_leiden_labels.csv"
27
+ self.num_timesteps = 2
28
+ self.args = args
29
+ self._prepare_data()
30
+
31
+ def _prepare_data(self):
32
+ df = pd.read_csv(self.data_path, comment='#')
33
+ df = df.iloc[:, 1:]
34
+ df = df.replace('', np.nan)
35
+ pc_cols = df.columns[:self.dim]
36
+ for col in pc_cols:
37
+ df[col] = pd.to_numeric(df[col], errors='coerce')
38
+ leiden_dmso_col = 'leiden_DMSO_TF_0.0uM'
39
+ leiden_clonidine_col = 'leiden_Clonidine (hydrochloride)_5.0uM'
40
+
41
+ dmso_mask = df[leiden_dmso_col].notna() # Has leiden value in DMSO column
42
+ clonidine_mask = df[leiden_clonidine_col].notna() # Has leiden value in Clonidine column
43
+
44
+ dmso_data = df[dmso_mask].copy()
45
+ clonidine_data = df[clonidine_mask].copy()
46
+
47
+ top_clonidine_clusters = ['0.0', '4.0']
48
+
49
+ x1_1_data = clonidine_data[clonidine_data[leiden_clonidine_col].astype(str) == top_clonidine_clusters[0]]
50
+ x1_2_data = clonidine_data[clonidine_data[leiden_clonidine_col].astype(str) == top_clonidine_clusters[1]]
51
+
52
+ x1_1_coords = x1_1_data[pc_cols].values
53
+ x1_2_coords = x1_2_data[pc_cols].values
54
+
55
+ x1_1_coords = x1_1_coords.astype(float)
56
+ x1_2_coords = x1_2_coords.astype(float)
57
+
58
+ # Target size is now the minimum across all three endpoint clusters
59
+ target_size = min(len(x1_1_coords), len(x1_2_coords),)
60
+
61
+ # Helper function to select points closest to centroid
62
+ def select_closest_to_centroid(coords, target_size):
63
+ if len(coords) <= target_size:
64
+ return coords
65
+
66
+ # Calculate centroid
67
+ centroid = np.mean(coords, axis=0)
68
+
69
+ # Calculate distances to centroid
70
+ distances = np.linalg.norm(coords - centroid, axis=1)
71
+
72
+ # Get indices of closest points
73
+ closest_indices = np.argsort(distances)[:target_size]
74
+
75
+ return coords[closest_indices]
76
+
77
+ # Sample all endpoint clusters to target size using centroid-based selection
78
+ x1_1_coords = select_closest_to_centroid(x1_1_coords, target_size)
79
+ x1_2_coords = select_closest_to_centroid(x1_2_coords, target_size)
80
+
81
+ dmso_cluster_counts = dmso_data[leiden_dmso_col].value_counts()
82
+
83
+ # DMSO (unchanged)
84
+ largest_dmso_cluster = dmso_cluster_counts.index[0]
85
+ dmso_cluster_data = dmso_data[dmso_data[leiden_dmso_col] == largest_dmso_cluster]
86
+
87
+ dmso_coords = dmso_cluster_data[pc_cols].values
88
+
89
+ # Random sampling from largest DMSO cluster to match target size
90
+ # For DMSO, we'll also use centroid-based selection for consistency
91
+ if len(dmso_coords) >= target_size:
92
+ x0_coords = select_closest_to_centroid(dmso_coords, target_size)
93
+ else:
94
+ # If largest cluster is smaller than target, use all of it and pad with other DMSO cells
95
+ remaining_needed = target_size - len(dmso_coords)
96
+ other_dmso_data = dmso_data[dmso_data[leiden_dmso_col] != largest_dmso_cluster]
97
+ other_dmso_coords = other_dmso_data[pc_cols].values
98
+
99
+ if len(other_dmso_coords) >= remaining_needed:
100
+ # Select closest to centroid from other DMSO cells
101
+ other_selected = select_closest_to_centroid(other_dmso_coords, remaining_needed)
102
+ x0_coords = np.vstack([dmso_coords, other_selected])
103
+ else:
104
+ # Use all available DMSO cells and reduce target size
105
+ all_dmso_coords = dmso_data[pc_cols].values
106
+ target_size = min(target_size, len(all_dmso_coords))
107
+ x0_coords = select_closest_to_centroid(all_dmso_coords, target_size)
108
+
109
+ # Re-select endpoint clusters with updated target size
110
+ x1_1_coords = select_closest_to_centroid(x1_1_data[pc_cols].values.astype(float), target_size)
111
+ x1_2_coords = select_closest_to_centroid(x1_2_data[pc_cols].values.astype(float), target_size)
112
+
113
+ # No need to resample since we already selected the right number
114
+ # The endpoint clusters are already at target_size from centroid-based selection
115
+
116
+ self.n_samples = target_size
117
+
118
+ x0 = torch.tensor(x0_coords, dtype=torch.float32)
119
+ x1_1 = torch.tensor(x1_1_coords, dtype=torch.float32)
120
+ x1_2 = torch.tensor(x1_2_coords, dtype=torch.float32)
121
+
122
+ self.coords_t0 = x0
123
+ self.coords_t1_1 = x1_1
124
+ self.coords_t1_2 = x1_2
125
+ self.time_labels = np.concatenate([
126
+ np.zeros(len(self.coords_t0)), # t=0
127
+ np.ones(len(self.coords_t1_1)), # t=1
128
+ np.ones(len(self.coords_t1_2)),
129
+ ])
130
+
131
+ split_index = int(target_size * self.split_ratios[0])
132
+
133
+ if target_size - split_index < self.batch_size:
134
+ split_index = target_size - self.batch_size
135
+
136
+ train_x0 = x0[:split_index]
137
+ val_x0 = x0[split_index:]
138
+ train_x1_1 = x1_1[:split_index]
139
+ val_x1_1 = x1_1[split_index:]
140
+ train_x1_2 = x1_2[:split_index]
141
+ val_x1_2 = x1_2[split_index:]
142
+
143
+
144
+ self.val_x0 = val_x0
145
+ self.val_x1_1 = val_x1_1
146
+ self.val_x1_2 = val_x1_2
147
+
148
+ train_x0_weights = torch.full((train_x0.shape[0], 1), fill_value=1.0)
149
+ train_x1_1_weights = torch.full((train_x1_1.shape[0], 1), fill_value=0.5)
150
+ train_x1_2_weights = torch.full((train_x1_2.shape[0], 1), fill_value=0.5)
151
+
152
+ val_x0_weights = torch.full((val_x0.shape[0], 1), fill_value=1.0)
153
+ val_x1_1_weights = torch.full((val_x1_1.shape[0], 1), fill_value=0.5)
154
+ val_x1_2_weights = torch.full((val_x1_2.shape[0], 1), fill_value=0.5)
155
+
156
+ # Updated train dataloaders to include x1_3
157
+ self.train_dataloaders = {
158
+ "x0": DataLoader(TensorDataset(train_x0, train_x0_weights), batch_size=self.batch_size, shuffle=True, drop_last=True),
159
+ "x1_1": DataLoader(TensorDataset(train_x1_1, train_x1_1_weights), batch_size=self.batch_size, shuffle=True, drop_last=True),
160
+ "x1_2": DataLoader(TensorDataset(train_x1_2, train_x1_2_weights), batch_size=self.batch_size, shuffle=True, drop_last=True),
161
+ }
162
+
163
+ self.val_dataloaders = {
164
+ "x0": DataLoader(TensorDataset(val_x0, val_x0_weights), batch_size=self.batch_size, shuffle=False, drop_last=True),
165
+ "x1_1": DataLoader(TensorDataset(val_x1_1, val_x1_1_weights), batch_size=self.batch_size, shuffle=True, drop_last=True),
166
+ "x1_2": DataLoader(TensorDataset(val_x1_2, val_x1_2_weights), batch_size=self.batch_size, shuffle=True, drop_last=True),
167
+ }
168
+
169
+ all_coords = df[pc_cols].dropna().values.astype(float)
170
+ self.dataset = torch.tensor(all_coords, dtype=torch.float32)
171
+ self.tree = cKDTree(all_coords)
172
+
173
+ self.test_dataloaders = {
174
+ "x0": DataLoader(TensorDataset(val_x0, val_x0_weights), batch_size=self.val_x0.shape[0], shuffle=False, drop_last=False),
175
+ "x1_1": DataLoader(TensorDataset(val_x1_1, val_x1_1_weights), batch_size=self.val_x1_1.shape[0], shuffle=True, drop_last=True),
176
+ "x1_2": DataLoader(TensorDataset(val_x1_2, val_x1_2_weights), batch_size=self.val_x1_2.shape[0], shuffle=True, drop_last=True),
177
+ "dataset": DataLoader(TensorDataset(self.dataset), batch_size=self.dataset.shape[0], shuffle=False, drop_last=False),
178
+ }
179
+
180
+ # Updated metric samples - now using 4 clusters instead of 3
181
+ #km_all = KMeans(n_clusters=4, random_state=42).fit(self.dataset.numpy())
182
+ """km_all = KMeans(n_clusters=3, random_state=0).fit(self.dataset.numpy())
183
+
184
+ cluster_labels = km_all.labels_
185
+
186
+ cluster_0_mask = cluster_labels == 0
187
+ cluster_1_mask = cluster_labels == 1
188
+ cluster_2_mask = cluster_labels == 2
189
+
190
+ samples = self.dataset.cpu().numpy()
191
+
192
+ cluster_0_data = samples[cluster_0_mask]
193
+ cluster_1_data = samples[cluster_1_mask]
194
+ cluster_2_data = samples[cluster_2_mask]
195
+
196
+ self.metric_samples_dataloaders = [
197
+ DataLoader(
198
+ torch.tensor(cluster_2_data, dtype=torch.float32),
199
+ batch_size=cluster_2_data.shape[0],
200
+ shuffle=False,
201
+ drop_last=False,
202
+ ),
203
+ DataLoader(
204
+ torch.tensor(cluster_0_data, dtype=torch.float32),
205
+ batch_size=cluster_0_data.shape[0],
206
+ shuffle=False,
207
+ drop_last=False,
208
+ ),
209
+
210
+ DataLoader(
211
+ torch.tensor(cluster_1_data, dtype=torch.float32),
212
+ batch_size=cluster_1_data.shape[0],
213
+ shuffle=False,
214
+ drop_last=False,
215
+ ),
216
+ ]"""
217
+
218
+ # Updated metric samples - now using 4 clusters instead of 3
219
+ #km_all = KMeans(n_clusters=4, random_state=42).fit(self.dataset.numpy())
220
+ km_all = KMeans(n_clusters=2, random_state=0).fit(self.dataset.numpy())
221
+
222
+ cluster_labels = km_all.labels_
223
+
224
+ cluster_0_mask = cluster_labels == 0
225
+ cluster_1_mask = cluster_labels == 1
226
+
227
+ samples = self.dataset.cpu().numpy()
228
+
229
+ cluster_0_data = samples[cluster_0_mask]
230
+ cluster_1_data = samples[cluster_1_mask]
231
+
232
+ self.metric_samples_dataloaders = [
233
+ DataLoader(
234
+ torch.tensor(cluster_1_data, dtype=torch.float32),
235
+ batch_size=cluster_1_data.shape[0],
236
+ shuffle=False,
237
+ drop_last=False,
238
+ ),
239
+ DataLoader(
240
+ torch.tensor(cluster_0_data, dtype=torch.float32),
241
+ batch_size=cluster_0_data.shape[0],
242
+ shuffle=False,
243
+ drop_last=False,
244
+ ),
245
+ ]
246
+
247
+ def train_dataloader(self):
248
+ combined_loaders = {
249
+ "train_samples": CombinedLoader(self.train_dataloaders, mode="min_size"),
250
+ "metric_samples": CombinedLoader(
251
+ self.metric_samples_dataloaders, mode="min_size"
252
+ ),
253
+ }
254
+ return CombinedLoader(combined_loaders, mode="max_size_cycle")
255
+
256
+ def val_dataloader(self):
257
+ combined_loaders = {
258
+ "val_samples": CombinedLoader(self.val_dataloaders, mode="min_size"),
259
+ "metric_samples": CombinedLoader(
260
+ self.metric_samples_dataloaders, mode="min_size"
261
+ ),
262
+ }
263
+
264
+ return CombinedLoader(combined_loaders, mode="max_size_cycle")
265
+
266
+
267
+
268
+ def test_dataloader(self):
269
+ combined_loaders = {
270
+ "test_samples": CombinedLoader(self.test_dataloaders, mode="min_size"),
271
+ "metric_samples": CombinedLoader(
272
+ self.metric_samples_dataloaders, mode="min_size"
273
+ ),
274
+ }
275
+
276
+ return CombinedLoader(combined_loaders, mode="max_size_cycle")
277
+
278
+ def get_manifold_proj(self, points):
279
+ """Adapted for 2D cell data - uses local neighborhood averaging instead of plane fitting"""
280
+ return partial(self.local_smoothing_op, tree=self.tree, dataset=self.dataset)
281
+
282
+ @staticmethod
283
+ def local_smoothing_op(x, tree, dataset, k=10, temp=1e-3):
284
+ """
285
+ Apply local smoothing based on k-nearest neighbors in the full dataset
286
+ This replaces the plane projection for 2D manifold regularization
287
+ """
288
+ points_np = x.detach().cpu().numpy()
289
+ _, idx = tree.query(points_np, k=k)
290
+ nearest_pts = dataset[idx] # Shape: (batch_size, k, 2)
291
+
292
+ # Compute weighted average of neighbors
293
+ dists = (x.unsqueeze(1) - nearest_pts).pow(2).sum(-1, keepdim=True)
294
+ weights = torch.exp(-dists / temp)
295
+ weights = weights / weights.sum(dim=1, keepdim=True)
296
+
297
+ # Weighted average of neighbors
298
+ smoothed = (weights * nearest_pts).sum(dim=1)
299
+
300
+ # Blend original point with smoothed version
301
+ alpha = 0.3 # How much smoothing to apply
302
+ return (1 - alpha) * x + alpha * smoothed
303
+
304
+ def get_timepoint_data(self):
305
+ """Return data organized by timepoints for visualization"""
306
+ return {
307
+ 't0': self.coords_t0,
308
+ 't1_1': self.coords_t1_1,
309
+ 't1_2': self.coords_t1_2,
310
+ 'time_labels': self.time_labels
311
+ }
312
+
313
+ def get_datamodule():
314
+ datamodule = ClonidineV2DataModule(args)
315
+ datamodule.setup(stage="fit")
316
+ return datamodule
entangled-cell/dataloaders/three_branch_data.py ADDED
@@ -0,0 +1,313 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ import sys
3
+ from sklearn.preprocessing import StandardScaler
4
+ import pytorch_lightning as pl
5
+ from torch.utils.data import DataLoader
6
+ from lightning.pytorch.utilities.combined_loader import CombinedLoader
7
+ import pandas as pd
8
+ import numpy as np
9
+ from functools import partial
10
+ from scipy.spatial import cKDTree
11
+ from sklearn.cluster import KMeans
12
+ from torch.utils.data import TensorDataset
13
+
14
+ class ThreeBranchTahoeDataModule(pl.LightningDataModule):
15
+ def __init__(self, args):
16
+ super().__init__()
17
+ self.save_hyperparameters()
18
+
19
+ self.batch_size = args.batch_size
20
+ self.max_dim = args.dim
21
+ self.split_ratios = args.split_ratios
22
+ self.num_timesteps = 2
23
+ self.data_path = f"{args.root_dir}/data/Trametinib_5.0uM_pca_and_leidenumap_labels.csv"
24
+ self.args = args
25
+
26
+ self._prepare_data()
27
+
28
+ def _prepare_data(self):
29
+ df = pd.read_csv(self.data_path, comment='#')
30
+ df = df.iloc[:, 1:]
31
+ df = df.replace('', np.nan)
32
+ pc_cols = df.columns[:50]
33
+ for col in pc_cols:
34
+ df[col] = pd.to_numeric(df[col], errors='coerce')
35
+ leiden_dmso_col = 'leiden_DMSO_TF_0.0uM'
36
+ leiden_clonidine_col = 'leiden_Trametinib_5.0uM'
37
+
38
+ dmso_mask = df[leiden_dmso_col].notna() # Has leiden value in DMSO column
39
+ clonidine_mask = df[leiden_clonidine_col].notna() # Has leiden value in Clonidine column
40
+
41
+ dmso_data = df[dmso_mask].copy()
42
+ clonidine_data = df[clonidine_mask].copy()
43
+
44
+ # Updated to include all three clusters: 0, 4, and 6
45
+ top_clonidine_clusters = ['1.0', '3.0', '5.0']
46
+
47
+ x1_1_data = clonidine_data[clonidine_data[leiden_clonidine_col].astype(str) == top_clonidine_clusters[0]]
48
+ x1_2_data = clonidine_data[clonidine_data[leiden_clonidine_col].astype(str) == top_clonidine_clusters[1]]
49
+ x1_3_data = clonidine_data[clonidine_data[leiden_clonidine_col].astype(str) == top_clonidine_clusters[2]]
50
+
51
+ x1_1_coords = x1_1_data[pc_cols].values
52
+ x1_2_coords = x1_2_data[pc_cols].values
53
+ x1_3_coords = x1_3_data[pc_cols].values
54
+
55
+ x1_1_coords = x1_1_coords.astype(float)
56
+ x1_2_coords = x1_2_coords.astype(float)
57
+ x1_3_coords = x1_3_coords.astype(float)
58
+
59
+ # Target size is now the minimum across all three endpoint clusters
60
+ target_size = min(len(x1_1_coords), len(x1_2_coords), len(x1_3_coords))
61
+
62
+ # Helper function to select points closest to centroid
63
+ def select_closest_to_centroid(coords, target_size):
64
+ if len(coords) <= target_size:
65
+ return coords
66
+
67
+ # Calculate centroid
68
+ centroid = np.mean(coords, axis=0)
69
+
70
+ # Calculate distances to centroid
71
+ distances = np.linalg.norm(coords - centroid, axis=1)
72
+
73
+ # Get indices of closest points
74
+ closest_indices = np.argsort(distances)[:target_size]
75
+
76
+ return coords[closest_indices]
77
+
78
+ # Sample all endpoint clusters to target size using centroid-based selection
79
+ x1_1_coords = select_closest_to_centroid(x1_1_coords, target_size)
80
+ x1_2_coords = select_closest_to_centroid(x1_2_coords, target_size)
81
+ x1_3_coords = select_closest_to_centroid(x1_3_coords, target_size)
82
+
83
+ dmso_cluster_counts = dmso_data[leiden_dmso_col].value_counts()
84
+
85
+ # DMSO (unchanged)
86
+ largest_dmso_cluster = dmso_cluster_counts.index[0]
87
+ dmso_cluster_data = dmso_data[dmso_data[leiden_dmso_col] == largest_dmso_cluster]
88
+
89
+ dmso_coords = dmso_cluster_data[pc_cols].values
90
+
91
+ # Random sampling from largest DMSO cluster to match target size
92
+ # For DMSO, we'll also use centroid-based selection for consistency
93
+ if len(dmso_coords) >= target_size:
94
+ x0_coords = select_closest_to_centroid(dmso_coords, target_size)
95
+ else:
96
+ # If largest cluster is smaller than target, use all of it and pad with other DMSO cells
97
+ remaining_needed = target_size - len(dmso_coords)
98
+ other_dmso_data = dmso_data[dmso_data[leiden_dmso_col] != largest_dmso_cluster]
99
+ other_dmso_coords = other_dmso_data[pc_cols].values
100
+
101
+ if len(other_dmso_coords) >= remaining_needed:
102
+ # Select closest to centroid from other DMSO cells
103
+ other_selected = select_closest_to_centroid(other_dmso_coords, remaining_needed)
104
+ x0_coords = np.vstack([dmso_coords, other_selected])
105
+ else:
106
+ # Use all available DMSO cells and reduce target size
107
+ all_dmso_coords = dmso_data[pc_cols].values
108
+ target_size = min(target_size, len(all_dmso_coords))
109
+ x0_coords = select_closest_to_centroid(all_dmso_coords, target_size)
110
+
111
+ # Re-select endpoint clusters with updated target size
112
+ x1_1_coords = select_closest_to_centroid(x1_1_data[pc_cols].values.astype(float), target_size)
113
+ x1_2_coords = select_closest_to_centroid(x1_2_data[pc_cols].values.astype(float), target_size)
114
+ x1_3_coords = select_closest_to_centroid(x1_3_data[pc_cols].values.astype(float), target_size)
115
+
116
+ # No need to resample since we already selected the right number
117
+ # The endpoint clusters are already at target_size from centroid-based selection
118
+
119
+ self.n_samples = target_size
120
+
121
+ # for plotting
122
+ self.coords_t0 = torch.tensor(x0_coords, dtype=torch.float32)
123
+ self.coords_t1_1 = torch.tensor(x1_1_coords, dtype=torch.float32)
124
+ self.coords_t1_2 = torch.tensor(x1_2_coords, dtype=torch.float32)
125
+ self.coords_t1_3 = torch.tensor(x1_3_coords, dtype=torch.float32)
126
+
127
+ self.time_labels = np.concatenate([
128
+ np.zeros(len(self.coords_t0)), # t=0
129
+ np.ones(len(self.coords_t1_1)), # t=1
130
+ np.ones(len(self.coords_t1_2)), # t=1
131
+ np.ones(len(self.coords_t1_3)), # t=1
132
+ ])
133
+
134
+ x0 = torch.tensor(x0_coords, dtype=torch.float32)
135
+ x1_1 = torch.tensor(x1_1_coords, dtype=torch.float32)
136
+ x1_2 = torch.tensor(x1_2_coords, dtype=torch.float32)
137
+ x1_3 = torch.tensor(x1_3_coords, dtype=torch.float32)
138
+
139
+ split_index = int(target_size * self.split_ratios[0])
140
+
141
+ if target_size - split_index < self.batch_size:
142
+ split_index = target_size - self.batch_size
143
+
144
+ train_x0 = x0[:split_index]
145
+ val_x0 = x0[split_index:]
146
+ train_x1_1 = x1_1[:split_index]
147
+ val_x1_1 = x1_1[split_index:]
148
+ train_x1_2 = x1_2[:split_index]
149
+ val_x1_2 = x1_2[split_index:]
150
+ train_x1_3 = x1_3[:split_index]
151
+ val_x1_3 = x1_3[split_index:]
152
+
153
+ self.val_x0 = val_x0
154
+ self.val_x1_1 = val_x1_1
155
+ self.val_x1_2 = val_x1_2
156
+ self.val_x1_3 = val_x1_3
157
+
158
+ train_x0_weights = torch.full((train_x0.shape[0], 1), fill_value=1.0)
159
+ train_x1_1_weights = torch.full((train_x1_1.shape[0], 1), fill_value=0.603)
160
+ train_x1_2_weights = torch.full((train_x1_2.shape[0], 1), fill_value=0.255)
161
+ train_x1_3_weights = torch.full((train_x1_3.shape[0], 1), fill_value=0.142)
162
+
163
+ val_x0_weights = torch.full((val_x0.shape[0], 1), fill_value=1.0)
164
+ val_x1_1_weights = torch.full((val_x1_1.shape[0], 1), fill_value=0.603)
165
+ val_x1_2_weights = torch.full((val_x1_2.shape[0], 1), fill_value=0.255)
166
+ val_x1_3_weights = torch.full((val_x1_3.shape[0], 1), fill_value=0.142)
167
+
168
+ # Updated train dataloaders to include x1_3
169
+ self.train_dataloaders = {
170
+ "x0": DataLoader(TensorDataset(train_x0, train_x0_weights), batch_size=self.batch_size, shuffle=True, drop_last=True),
171
+ "x1_1": DataLoader(TensorDataset(train_x1_1, train_x1_1_weights), batch_size=self.batch_size, shuffle=True, drop_last=True),
172
+ "x1_2": DataLoader(TensorDataset(train_x1_2, train_x1_2_weights), batch_size=self.batch_size, shuffle=True, drop_last=True),
173
+ "x1_3": DataLoader(TensorDataset(train_x1_3, train_x1_3_weights), batch_size=self.batch_size, shuffle=True, drop_last=True),
174
+ }
175
+
176
+ # Updated val dataloaders to include x1_3
177
+ self.val_dataloaders = {
178
+ "x0": DataLoader(TensorDataset(val_x0, val_x0_weights), batch_size=self.batch_size, shuffle=False, drop_last=True),
179
+ "x1_1": DataLoader(TensorDataset(val_x1_1, val_x1_1_weights), batch_size=self.batch_size, shuffle=True, drop_last=True),
180
+ "x1_2": DataLoader(TensorDataset(val_x1_2, val_x1_2_weights), batch_size=self.batch_size, shuffle=True, drop_last=True),
181
+ "x1_3": DataLoader(TensorDataset(val_x1_3, val_x1_3_weights), batch_size=self.batch_size, shuffle=True, drop_last=True),
182
+ }
183
+
184
+ all_coords = df[pc_cols].dropna().values.astype(float)
185
+ self.dataset = torch.tensor(all_coords, dtype=torch.float32)
186
+ self.tree = cKDTree(all_coords)
187
+
188
+ self.test_dataloaders = {
189
+ "x0": DataLoader(TensorDataset(val_x0, val_x0_weights), batch_size=self.val_x0.shape[0], shuffle=False, drop_last=False),
190
+ "x1_1": DataLoader(TensorDataset(val_x1_1, val_x1_1_weights), batch_size=self.val_x1_1.shape[0], shuffle=True, drop_last=True),
191
+ "x1_2": DataLoader(TensorDataset(val_x1_2, val_x1_2_weights), batch_size=self.val_x1_2.shape[0], shuffle=True, drop_last=True),
192
+ "x1_3": DataLoader(TensorDataset(val_x1_3, val_x1_3_weights), batch_size=self.val_x1_3.shape[0], shuffle=True, drop_last=True),
193
+ "dataset": DataLoader(TensorDataset(self.dataset), batch_size=self.dataset.shape[0], shuffle=False, drop_last=False),
194
+ }
195
+
196
+ # Updated metric samples - now using 4 clusters instead of 3
197
+ #km_all = KMeans(n_clusters=4, random_state=42).fit(self.dataset.numpy())
198
+ km_all = KMeans(n_clusters=4, random_state=0).fit(self.dataset[:, :3].numpy())
199
+
200
+ cluster_labels = km_all.labels_
201
+
202
+ cluster_0_mask = cluster_labels == 0
203
+ cluster_1_mask = cluster_labels == 1
204
+ cluster_2_mask = cluster_labels == 2
205
+ cluster_3_mask = cluster_labels == 3
206
+
207
+ samples = self.dataset.cpu().numpy()
208
+
209
+ cluster_0_data = samples[cluster_0_mask]
210
+ cluster_1_data = samples[cluster_1_mask]
211
+ cluster_2_data = samples[cluster_2_mask]
212
+ cluster_3_data = samples[cluster_3_mask]
213
+
214
+ self.metric_samples_dataloaders = [
215
+ DataLoader(
216
+ torch.tensor(cluster_1_data, dtype=torch.float32),
217
+ batch_size=cluster_1_data.shape[0],
218
+ shuffle=False,
219
+ drop_last=False,
220
+ ),
221
+ DataLoader(
222
+ torch.tensor(cluster_3_data, dtype=torch.float32),
223
+ batch_size=cluster_3_data.shape[0],
224
+ shuffle=False,
225
+ drop_last=False,
226
+ ),
227
+
228
+
229
+ DataLoader(
230
+ torch.tensor(cluster_2_data, dtype=torch.float32),
231
+ batch_size=cluster_2_data.shape[0],
232
+ shuffle=False,
233
+ drop_last=False,
234
+ ),
235
+ DataLoader(
236
+ torch.tensor(cluster_0_data, dtype=torch.float32),
237
+ batch_size=cluster_0_data.shape[0],
238
+ shuffle=False,
239
+ drop_last=False,
240
+ ),
241
+ ]
242
+
243
+ def train_dataloader(self):
244
+ combined_loaders = {
245
+ "train_samples": CombinedLoader(self.train_dataloaders, mode="min_size"),
246
+ "metric_samples": CombinedLoader(
247
+ self.metric_samples_dataloaders, mode="min_size"
248
+ ),
249
+ }
250
+ return CombinedLoader(combined_loaders, mode="max_size_cycle")
251
+
252
+ def val_dataloader(self):
253
+ combined_loaders = {
254
+ "val_samples": CombinedLoader(self.val_dataloaders, mode="min_size"),
255
+ "metric_samples": CombinedLoader(
256
+ self.metric_samples_dataloaders, mode="min_size"
257
+ ),
258
+ }
259
+
260
+ return CombinedLoader(combined_loaders, mode="max_size_cycle")
261
+
262
+
263
+
264
+ def test_dataloader(self):
265
+ combined_loaders = {
266
+ "test_samples": CombinedLoader(self.test_dataloaders, mode="min_size"),
267
+ "metric_samples": CombinedLoader(
268
+ self.metric_samples_dataloaders, mode="min_size"
269
+ ),
270
+ }
271
+
272
+ return CombinedLoader(combined_loaders, mode="max_size_cycle")
273
+
274
+ def get_manifold_proj(self, points):
275
+ """Adapted for 2D cell data - uses local neighborhood averaging instead of plane fitting"""
276
+ return partial(self.local_smoothing_op, tree=self.tree, dataset=self.dataset)
277
+
278
+ @staticmethod
279
+ def local_smoothing_op(x, tree, dataset, k=10, temp=1e-3):
280
+ """
281
+ Apply local smoothing based on k-nearest neighbors in the full dataset
282
+ This replaces the plane projection for 2D manifold regularization
283
+ """
284
+ points_np = x.detach().cpu().numpy()
285
+ _, idx = tree.query(points_np, k=k)
286
+ nearest_pts = dataset[idx] # Shape: (batch_size, k, 2)
287
+
288
+ # Compute weighted average of neighbors
289
+ dists = (x.unsqueeze(1) - nearest_pts).pow(2).sum(-1, keepdim=True)
290
+ weights = torch.exp(-dists / temp)
291
+ weights = weights / weights.sum(dim=1, keepdim=True)
292
+
293
+ # Weighted average of neighbors
294
+ smoothed = (weights * nearest_pts).sum(dim=1)
295
+
296
+ # Blend original point with smoothed version
297
+ alpha = 0.3 # How much smoothing to apply
298
+ return (1 - alpha) * x + alpha * smoothed
299
+
300
+ def get_timepoint_data(self):
301
+ """Return data organized by timepoints for visualization"""
302
+ return {
303
+ 't0': self.coords_t0,
304
+ 't1_1': self.coords_t1_1,
305
+ 't1_2': self.coords_t1_2,
306
+ 't1_3': self.coords_t1_3,
307
+ 'time_labels': self.time_labels
308
+ }
309
+
310
+ def get_datamodule():
311
+ datamodule = ThreeBranchTahoeDataModule(args)
312
+ datamodule.setup(stage="fit")
313
+ return datamodule
entangled-cell/entangledcell_module_three.py ADDED
@@ -0,0 +1,871 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import sys
3
+ os.environ["CUDA_VISIBLE_DEVICES"] = "5"
4
+
5
+ import torch
6
+ import wandb
7
+ import matplotlib.pyplot as plt
8
+ import pytorch_lightning as pl
9
+
10
+ import numpy as np
11
+
12
+ from torch.distributions import Normal
13
+ from geo_metrics.metric_factory import natural_gradient_force
14
+ import math
15
+ from train_utils import make_aligned_clusters
16
+ from matplotlib.colors import LinearSegmentedColormap
17
+ from eval import compute_distribution_distances, compute_wasserstein_distances
18
+ import json, time, csv
19
+
20
+
21
+ class EntangledNetTrainBaseThree(pl.LightningModule):
22
+ def __init__(
23
+ self,
24
+ args,
25
+ bias_net, # input bias net
26
+ data_manifold_metric,
27
+ timepoint_data,
28
+ ot_sampler=None,
29
+ vel_conditioned=False,
30
+ ):
31
+ super().__init__()
32
+ self.args = args
33
+
34
+ self.ot_sampler = ot_sampler
35
+
36
+ self.bias_net = bias_net
37
+
38
+ self.data_manifold_metric = data_manifold_metric
39
+
40
+ self.target_measure = PathObjective(args)
41
+ if args.training:
42
+ self.replay = ReplayBuffer(args)
43
+
44
+ self.dt = float(1.0 / args.num_steps)
45
+ self.std = (2.0 * args.kT / (args.friction * self.dt)) ** 0.5
46
+ self.log_prob = Normal(0, self.std).log_prob
47
+ self.timepoint_data = timepoint_data
48
+ self.vel_conditioned = vel_conditioned
49
+ self.dir_only = getattr(args, "dir_only", False)
50
+ #self.device = args.device
51
+
52
+ # returns the bias force given the position, velocity and target
53
+ def forward(self, pos, vel, target):
54
+ # output velocity given branch_idx
55
+ if self.vel_conditioned:
56
+ # Use velocity direction (unit vector) instead of full velocity
57
+ if self.dir_only:
58
+ velocity_magnitude = torch.norm(vel, dim=-1, keepdim=True)
59
+ velocity_direction = vel / (velocity_magnitude + 1e-8) # Avoid division by zero
60
+
61
+ return self.bias_net(pos, velocity_direction, target)
62
+ else:
63
+ return self.bias_net(pos, vel, target)
64
+
65
+ return self.bias_net(pos, target)
66
+
67
+ def on_train_epoch_start(self):
68
+ pass
69
+
70
+ def _sample(self, x0, x1, metric_samples):
71
+ """
72
+ Simulate first-order velocity dynamics
73
+
74
+ x0: initial positions of batch (B, N, g)
75
+ x1: final positions of batch (B, N, g)
76
+ """
77
+ device = x0.device
78
+ print(device)
79
+
80
+ B, N, G = x0.shape
81
+ T = self.args.num_steps
82
+
83
+ gamma = float(self.args.friction)
84
+ kT = float(getattr(self.args, "kT", 0.1))
85
+
86
+ positions = torch.empty((B, T+1, N, G), dtype=x0.dtype, device=device)
87
+ forces = torch.empty((B, T, N, G), dtype=x0.dtype, device=device)
88
+ biases = torch.empty((B, T, N, G), dtype=x0.dtype, device=device)
89
+
90
+ # set initial positions
91
+ positions[:, 0] = x0.clone()
92
+ pos = x0.clone()
93
+
94
+ target_positions = x1.clone().to(device, dtype=x0.dtype)
95
+ #target_positions = x1.clone().unsqueeze(dim=1).repeat(1, T+1, 1, 1)
96
+
97
+ for t_idx in range(T):
98
+ if t_idx == 0:
99
+ velocity = torch.zeros_like(pos)
100
+ else:
101
+ velocity = (pos - positions[:, t_idx - 1]) / self.dt
102
+
103
+
104
+ F_nat, _ = natural_gradient_force(self.data_manifold_metric,
105
+ pos,
106
+ metric_samples,
107
+ t_idx,
108
+ )
109
+
110
+ base_force = F_nat # unbiased base force
111
+ # learned bias force
112
+ if self.vel_conditioned:
113
+ if self.dir_only:
114
+ velocity_magnitude = torch.norm(velocity, dim=-1, keepdim=True)
115
+ velocity_direction = velocity / (velocity_magnitude + 1e-8) # Avoid division by zero
116
+
117
+ bias_force = self.bias_net(pos.detach(),
118
+ velocity_direction.detach(),
119
+ target_positions.detach()).detach()
120
+ else:
121
+ bias_force = self.bias_net(pos.detach(),
122
+ velocity.detach(),
123
+ target_positions.detach()).detach()
124
+ else:
125
+ bias_force = self.bias_net(pos.detach(),
126
+ target_positions.detach()).detach()
127
+
128
+ if kT > 0:
129
+ xi = torch.randn_like(pos) * ((2.0 * kT * self.dt / gamma) ** 0.5)
130
+ else:
131
+ xi = 0.0
132
+
133
+ pos = pos + (self.dt / gamma) * (base_force + bias_force) + xi
134
+
135
+ positions[:, t_idx + 1] = pos.clone()
136
+ forces[:, t_idx] = base_force.clone()
137
+ biases[:, t_idx] = bias_force.clone()
138
+
139
+ log_tpm, final_idx, log_ri = self.target_measure(positions, target_positions, forces)
140
+
141
+ if self.args.training:
142
+ self.replay.add_ranked((positions.detach(),
143
+ target_positions.detach(),
144
+ forces.detach(),
145
+ log_tpm.detach(),
146
+ log_ri.detach()))
147
+
148
+ for i in range(B):
149
+ end = int(final_idx[i].item()) + 1 if torch.is_tensor(final_idx) else T + 1
150
+ np.save(f"{self.args.save_dir}/positions/{i}.npy", positions[i, :end].detach().cpu().numpy())
151
+
152
+ return positions, target_positions, forces, log_tpm, log_ri
153
+
154
+ def _compute_loss(self):
155
+ positions, target_positions, base_forces, log_tpm, log_ri = self.replay.sample()
156
+ # shapes: pos (B,T+1,N,G), tgt (B,N,G), base_forces (B,T,N,G)
157
+
158
+ gamma = float(self.args.friction)
159
+
160
+ B, T, N, G = base_forces.shape
161
+ v = (positions[:, 1:] - positions[:, :-1]) / self.dt # (B,T,N,G)
162
+
163
+ # rebuild bias per step for correct mean
164
+ x_t = positions[:, :-1].reshape(-1, N, G)
165
+ v_t = v.reshape(-1, N, G) # reshape velocity to match other tensors
166
+ tgt_t = target_positions[:, None].expand(-1, T, N, G).reshape(-1, N, G)
167
+ if self.vel_conditioned:
168
+ if self.dir_only:
169
+ velocity_magnitude = torch.norm(v_t, dim=-1, keepdim=True)
170
+ velocity_direction = v_t / (velocity_magnitude + 1e-8) # Avoid division by zero
171
+ B_t = self.bias_net(x_t, velocity_direction, tgt_t).view(B, T, N, G)
172
+ else:
173
+ B_t = self.bias_net(x_t, v_t, tgt_t).view(B, T, N, G)
174
+ else:
175
+ B_t = self.bias_net(x_t, tgt_t).view(B, T, N, G)
176
+
177
+ means = (base_forces + B_t) / self.args.friction
178
+ resid = v - means
179
+
180
+ sigma_v = math.sqrt(2.0 * self.args.kT / (gamma * self.dt))
181
+ sigma_v = torch.as_tensor(sigma_v, dtype=resid.dtype, device=resid.device)
182
+ log_bpm = Normal(0.0, sigma_v).log_prob(resid).mean((1,2,3))
183
+
184
+ # control variate
185
+ cv = self.args.control_variate
186
+ if cv == "global":
187
+ log_z = self.bias_net.log_z
188
+ elif cv == "local":
189
+ log_z = (log_tpm - log_bpm).mean().detach()
190
+ elif cv == "zero":
191
+ log_z = 0.0
192
+ else: raise ValueError(cv)
193
+
194
+ # objective
195
+ if self.args.objective == "ce":
196
+ log_rnd = (log_tpm - log_bpm.detach())
197
+ weights = torch.softmax(log_rnd, dim=0)
198
+ loss = -(weights * log_bpm).sum()
199
+
200
+ else: # 'lv'
201
+ loss = (log_z + log_bpm - log_tpm).pow(2).mean()
202
+
203
+ return loss, log_ri.mean()
204
+
205
+ def training_step(self, batch, batch_idx):
206
+ epoch = self.current_epoch
207
+
208
+ main_batch = batch[0]["train_samples"][0]
209
+ metric_batch = batch[0]["metric_samples"][0]
210
+
211
+ x0s = main_batch["x0"][0]
212
+ x1s = main_batch["x1_1"][0] # train on cluster 1
213
+ N = self.args.num_particles
214
+
215
+ x0_clusters, x1_clusters, idx1 = \
216
+ make_aligned_clusters(self.ot_sampler, x0s, x1s, N, replace=True)
217
+
218
+ sample_pairs = [
219
+ (metric_batch[0], metric_batch[1]), # x0 → x1_1 (branch 1)
220
+ ]
221
+
222
+ batch = self._sample(x0_clusters, x1_clusters, sample_pairs)
223
+
224
+
225
+ # timesteps from 0 to 1
226
+ self.timesteps = torch.linspace(0.0, 1.0, len(main_batch["x0"])).tolist()
227
+ loss, mean_log_ri = self._compute_loss()
228
+
229
+
230
+ self.log(
231
+ "train/loss",
232
+ loss,
233
+ on_step=False,
234
+ on_epoch=True,
235
+ prog_bar=True,
236
+ logger=True,
237
+ )
238
+ self.log(
239
+ "train/mean_log_ri",
240
+ mean_log_ri,
241
+ on_step=False,
242
+ on_epoch=True,
243
+ prog_bar=True,
244
+ logger=True,
245
+ )
246
+
247
+ return loss
248
+
249
+ def validation_step(self, batch, batch_idx):
250
+ main_batch = batch[0]["val_samples"][0]
251
+ metric_batch = batch[0]["metric_samples"][0]
252
+
253
+ x0s = main_batch["x0"][0]
254
+ x1s = main_batch["x1_2"][0] # validate on cluster 2
255
+ N = self.args.num_particles
256
+
257
+ x0_clusters, x1_clusters, idx1 = \
258
+ make_aligned_clusters(self.ot_sampler, x0s, x1s, N, replace=True)
259
+
260
+ sample_pairs = [
261
+ (metric_batch[0], metric_batch[1]), # x0 → x1_1 (branch 1)
262
+ ]
263
+
264
+ batch = self._sample(x0_clusters, x1_clusters, sample_pairs)
265
+
266
+
267
+ # timesteps from 0 to 1
268
+ self.timesteps = torch.linspace(0.0, 1.0, len(main_batch["x0"])).tolist()
269
+ val_loss, mean_log_ri = self._compute_loss()
270
+
271
+
272
+ self.log(
273
+ "val/loss",
274
+ val_loss,
275
+ on_step=False,
276
+ on_epoch=True,
277
+ prog_bar=True,
278
+ logger=True,
279
+ )
280
+ self.log(
281
+ "val/mean_log_ri",
282
+ mean_log_ri,
283
+ on_step=False,
284
+ on_epoch=True,
285
+ prog_bar=True,
286
+ logger=True,
287
+ )
288
+
289
+ return val_loss
290
+
291
+ def optimizer_step(self, *args, **kwargs):
292
+ super().optimizer_step(*args, **kwargs)
293
+
294
+
295
+ def configure_optimizers(self):
296
+ exclude = {id(self.bias_net.log_z)}
297
+ params_except = [p for p in self.bias_net.parameters() if id(p) not in exclude]
298
+ optimizer = torch.optim.AdamW(
299
+ [
300
+ {"params": [self.bias_net.log_z], "lr": self.args.log_z_lr},
301
+ {"params": params_except, "lr": self.args.policy_lr},
302
+ ]
303
+ )
304
+
305
+ return optimizer
306
+
307
+ class EntangledNetTrainCellThree(EntangledNetTrainBaseThree):
308
+ @torch.no_grad()
309
+ def plot_trajs(
310
+ self, traj, title, fname, targets,
311
+ timepoint_data=None, # dict with keys 't0','t1'
312
+ cmap=None,
313
+ c_end='#B83CFF',
314
+ x_label="PC1", y_label="PC2",
315
+ save_dir=None,
316
+
317
+ ):
318
+ """
319
+ traj: (B, T+1, N, 2) torch tensor
320
+ targets: (B, N, 2) torch tensor
321
+ timepoint_data (optional): {'t0': (M0,2), 't1': (M1,2)} np arrays or tensors
322
+ """
323
+
324
+ custom_colors_1 = ["#05009E", "#A19EFF", "#D577FF"]
325
+ custom_colors_2 = ["#05009E", "#A19EFF", "#50B2D7"]
326
+ custom_cmap_1 = LinearSegmentedColormap.from_list("my_cmap", custom_colors_1)
327
+ custom_cmap_2 = LinearSegmentedColormap.from_list("my_cmap", custom_colors_2)
328
+
329
+ # --- to numpy ---
330
+ tb = traj[..., :2].detach().cpu().numpy() # (B,T+1,N,2)
331
+ targ2 = targets[..., :2].detach().cpu().numpy() # (B,N,2)
332
+
333
+ # Optional background conversion
334
+ def _to_np(x):
335
+ if x is None: return None
336
+ return x.detach().cpu().numpy() if hasattr(x, "detach") else x
337
+
338
+ def to_np_2d(x):
339
+ """Convert to np and force last dim=2 (take first two PCs). Returns None if <2 dims."""
340
+ if x is None:
341
+ return None
342
+ arr = x.detach().cpu().numpy() if hasattr(x, "detach") else np.asarray(x)
343
+ if arr.ndim == 1: # (G,) -> (1,G)
344
+ arr = arr[None, :]
345
+ if arr.shape[-1] < 2:
346
+ return None
347
+ arr2 = arr[..., :2].reshape(-1, 2)
348
+ return arr2
349
+
350
+ t0_bg = to_np_2d(timepoint_data['t0']) if (timepoint_data and 't0' in timepoint_data) else None
351
+ t1_bg = to_np_2d(timepoint_data['t1']) if (timepoint_data and 't1' in timepoint_data) else None
352
+
353
+ if t0_bg is not None or t1_bg is not None:
354
+ coords_list = []
355
+ if t0_bg is not None: coords_list.append(t0_bg)
356
+ if t1_bg is not None: coords_list.append(t1_bg)
357
+ coords_list.append(tb.reshape(-1, 2))
358
+ coords_list.append(targ2.reshape(-1, 2))
359
+ all_coords = np.concatenate(coords_list, axis=0)
360
+ x_min, x_max = all_coords[:, 0].min(), all_coords[:, 0].max()
361
+ y_min, y_max = all_coords[:, 1].min(), all_coords[:, 1].max()
362
+ x_margin = 0.05 * max(1e-12, (x_max - x_min))
363
+ y_margin = 0.05 * max(1e-12, (y_max - y_min))
364
+ x_min -= x_margin; x_max += x_margin
365
+ y_min -= y_margin; y_max += y_margin
366
+ else:
367
+ x_min = y_min = -np.inf
368
+ x_max = y_max = +np.inf
369
+
370
+ # figure
371
+ fig, ax = plt.subplots(figsize=(10, 8))
372
+
373
+ # background timepoints
374
+ if t0_bg is not None:
375
+ ax.scatter(t0_bg[:, 0], t0_bg[:, 1],
376
+ c='#05009E', s=80, alpha=0.4, marker='x',
377
+ label='t=0 cells', linewidth=1.5)
378
+ if t1_bg is not None:
379
+ ax.scatter(t1_bg[:, 0], t1_bg[:, 1],
380
+ c=c_end, s=80, alpha=0.4, marker='x',
381
+ label='t=1 cells', linewidth=1.5)
382
+
383
+ # color map for temporal segments
384
+ if cmap is None:
385
+ cmap = custom_cmap_1
386
+ num_segments = tb.shape[1] # T+1 points -> T segments, but use T+1 for colors indexing
387
+ colors = cmap(np.linspace(0, 1, max(2, num_segments)))
388
+
389
+ # trajectories as time-colored segments
390
+ B, T1, N, _ = tb.shape
391
+ for b in range(B):
392
+ for n in range(N):
393
+ xy = tb[b, :, n, :] # (T+1, 2)
394
+ # segment plotting per time step
395
+ for t in range(T1 - 1):
396
+ ax.plot(
397
+ xy[t:t+2, 0], xy[t:t+2, 1],
398
+ color=colors[t], linewidth=2, alpha=0.8, zorder=2
399
+ )
400
+
401
+ # start/end dots with white edges
402
+ starts = tb[:, 0, :, :].reshape(-1, 2)
403
+ ends = tb[:, -1, :, :].reshape(-1, 2)
404
+ ax.scatter(starts[:, 0], starts[:, 1],
405
+ c='#05009E', s=30, marker='o', label='Trajectory Start',
406
+ zorder=5, edgecolors='white', linewidth=1)
407
+ ax.scatter(ends[:, 0], ends[:, 1],
408
+ c=c_end, s=30, marker='o', label='Trajectory End',
409
+ zorder=5, edgecolors='white', linewidth=1)
410
+
411
+ tars = targ2.reshape(-1, 2)
412
+ ax.scatter(tars[:, 0], tars[:, 1],
413
+ s=24, marker='x', linewidths=1.5, c='#B83CFF',
414
+ alpha=0.7, label='targets', zorder=4)
415
+
416
+ if np.isfinite(x_min):
417
+ ax.set_xlim(x_min, x_max)
418
+ ax.set_ylim(y_min, y_max)
419
+ ax.set_xlabel(x_label, fontsize=12)
420
+ ax.set_ylabel(y_label, fontsize=12)
421
+ ax.set_title(title, fontsize=14)
422
+ ax.grid(True, alpha=0.3)
423
+ ax.legend(loc='upper right', fontsize=12, frameon=False)
424
+ ax.set_aspect('equal', adjustable='box')
425
+
426
+ plt.tight_layout()
427
+
428
+ if save_dir is None:
429
+ out_path = os.path.join(self.args.save_dir, "figures", self.args.data_name)
430
+ os.makedirs(out_path, exist_ok=True)
431
+ else:
432
+ out_path = save_dir
433
+ os.makedirs(out_path, exist_ok=True)
434
+
435
+ fpath = os.path.join(out_path, fname)
436
+ plt.savefig(fpath, dpi=300)
437
+ print(f"figure saved: {fpath}")
438
+ plt.close(fig)
439
+
440
+ def test_step(self, batch, batch_idx):
441
+ main_batch = batch[0]["test_samples"][0]
442
+ x0s = main_batch["x0"][0] # (B,G) or (B,N,G)
443
+ x1_1s = main_batch["x1_1"][0] # training endpoint
444
+ x1_2s = main_batch["x1_2"][0] # unseen endpoint 1
445
+ x1_3s = main_batch["x1_3"][0] # unseen endpoint 2
446
+ #x1s = torch.cat([x1_1s, x1_2s], dim=0) # (M1+M2,G) or (B,G)
447
+ dataset_full = main_batch["dataset"][0] # (M,G)
448
+
449
+ device = x0s.device
450
+
451
+ #B, N, G = x0s.shape
452
+ N = self.args.num_particles
453
+ T = self.args.num_steps
454
+ G = self.args.dim
455
+ gamma = float(self.args.friction)
456
+ kT = float(getattr(self.args, "kT", 0.1))
457
+ ell = float(getattr(self.args, "adj_length_scale", 1.0))
458
+ noise_scale = (0.0 if kT <= 0 else math.sqrt(2.0 * kT * self.dt / gamma))
459
+
460
+ # Ensure pools are (M,G)
461
+ if x1_1s.ndim == 3: x1_1s = x1_1s.reshape(-1, G)
462
+ if x1_2s.ndim == 3: x1_2s = x1_2s.reshape(-1, G)
463
+ if x1_3s.ndim == 3: x1_3s = x1_3s.reshape(-1, G)
464
+
465
+ x0c_1, x1c_1, _ = make_aligned_clusters(self.ot_sampler, x0s, x1_1s, N, replace=True) # to training endpoint
466
+ x0c_2, x1c_2, _ = make_aligned_clusters(self.ot_sampler, x0s, x1_2s, N, replace=True) # to unseen endpoint
467
+ x0c_3, x1c_3, _ = make_aligned_clusters(self.ot_sampler, x0s, x1_3s, N, replace=True) # to unseen endpoint
468
+
469
+ B = x0c_1.shape[0]
470
+
471
+ # rollout base-only dynamics (no bias)
472
+ def rollout_base(x0c, x1c):
473
+ pos = x0c.clone()
474
+ traj = torch.empty((B, T+1, N, G), dtype=pos.dtype, device=pos.device)
475
+ traj[:, 0] = pos.clone()
476
+ for t in range(T):
477
+
478
+ F_nat, _ = natural_gradient_force(
479
+ self.data_manifold_metric, pos, metric_samples=None, timestep=t
480
+ ) # (B,N,G)
481
+ base_force = F_nat
482
+ xi = torch.randn_like(pos) * noise_scale if noise_scale > 0 else 0.0
483
+ pos = pos + (self.dt / gamma) * base_force + xi
484
+ traj[:, t+1] = pos.clone()
485
+ return traj # (B,T+1,N,G)
486
+
487
+ # rollout bias-only (use bias for dynamics; base only to condition the net)
488
+ def rollout_bias_only(x0c, x1c):
489
+ pos = x0c.clone()
490
+ traj = torch.empty((B, T+1, N, G), dtype=pos.dtype, device=pos.device)
491
+ traj[:, 0] = pos.clone()
492
+ for t in range(T):
493
+ if t == 0:
494
+ velocity = torch.zeros_like(pos)
495
+ else:
496
+ velocity = (pos - traj[:, t-1]) / self.dt
497
+
498
+ if self.vel_conditioned:
499
+ if self.dir_only:
500
+ velocity_magnitude = torch.norm(velocity, dim=-1, keepdim=True)
501
+ velocity_direction = velocity / (velocity_magnitude + 1e-8)
502
+
503
+ bias_force = self.bias_net(
504
+ pos.detach(), velocity_direction.detach(), x1c.detach()
505
+ ).detach()
506
+ else:
507
+ bias_force = self.bias_net(
508
+ pos.detach(), velocity.detach(), x1c.detach()
509
+ ).detach()
510
+ else:
511
+ bias_force = self.bias_net(
512
+ pos.detach(), x1c.detach()
513
+ ).detach() # (B,N,G)
514
+
515
+ xi = torch.randn_like(pos) * noise_scale if noise_scale > 0 else 0.0
516
+ pos = pos + (self.dt / gamma) * (bias_force) + xi
517
+ traj[:, t+1] = pos.clone()
518
+ return traj # (B,T+1,N,G)
519
+
520
+ # rollout bias+base (controlled dynamics)
521
+ def rollout_bias_plus_base(x0c, x1c):
522
+ pos = x0c.clone()
523
+ traj = torch.empty((B, T+1, N, G), dtype=pos.dtype, device=pos.device)
524
+ traj[:, 0] = pos.clone()
525
+ for t in range(T):
526
+ if t == 0:
527
+ velocity = torch.zeros_like(pos)
528
+ else:
529
+ velocity = (pos - traj[:, t-1]) / self.dt
530
+
531
+ F_nat, _ = natural_gradient_force(
532
+ self.data_manifold_metric, pos, metric_samples=None, timestep=t
533
+ ) # (B,N,G)
534
+ base_force = F_nat
535
+
536
+ if self.vel_conditioned:
537
+ if self.dir_only:
538
+ velocity_magnitude = torch.norm(velocity, dim=-1, keepdim=True)
539
+ velocity_direction = velocity / (velocity_magnitude + 1e-8)
540
+
541
+ bias_force = self.bias_net(
542
+ pos.detach(), velocity_direction.detach(), x1c.detach()
543
+ ).detach()
544
+ else:
545
+ bias_force = self.bias_net(
546
+ pos.detach(), velocity.detach(), x1c.detach()
547
+ ).detach()
548
+ else:
549
+ bias_force = self.bias_net(
550
+ pos.detach(), x1c.detach()
551
+ ).detach()
552
+
553
+ xi = torch.randn_like(pos) * noise_scale if noise_scale > 0 else 0.0
554
+ pos = pos + (self.dt / gamma) * (base_force + bias_force) + xi
555
+ traj[:, t+1] = pos.clone()
556
+ return traj # (B,T+1,N,G)
557
+
558
+
559
+ traj_to_x1_1 = rollout_base(x0c_1, x1c_1)
560
+ traj_to_x1_2 = rollout_base(x0c_2, x1c_2)
561
+ traj_to_x1_3 = rollout_base(x0c_3, x1c_3)
562
+
563
+ traj_bias_only_x1_1 = rollout_bias_only(x0c_1, x1c_1)
564
+ traj_bias_plus_x1_1 = rollout_bias_plus_base(x0c_1, x1c_1)
565
+ traj_bias_only_x1_2 = rollout_bias_only(x0c_2, x1c_2)
566
+ traj_bias_plus_x1_2 = rollout_bias_plus_base(x0c_2, x1c_2)
567
+ traj_bias_only_x1_3 = rollout_bias_only(x0c_3, x1c_3)
568
+ traj_bias_plus_x1_3 = rollout_bias_plus_base(x0c_3, x1c_3)
569
+
570
+ # plot (first two dims)
571
+ save_dir = os.path.join(self.args.save_dir, "figures", self.args.data_name)
572
+ os.makedirs(save_dir, exist_ok=True)
573
+
574
+ ds2 = (dataset_full[:, :2].detach().cpu().numpy()
575
+ if isinstance(dataset_full, torch.Tensor) else dataset_full[:, :2])
576
+
577
+ custom_colors_1 = ["#05009E", "#A19EFF", "#6B67EE"]
578
+ custom_colors_2 = ["#05009E", "#A19EFF", "#50B2D7"]
579
+ custom_colors_3 = ["#05009E", "#A19EFF", "#EABBFF"]
580
+ custom_cmap_1 = LinearSegmentedColormap.from_list("my_cmap", custom_colors_1)
581
+ custom_cmap_2 = LinearSegmentedColormap.from_list("my_cmap", custom_colors_2)
582
+ custom_cmap_3 = LinearSegmentedColormap.from_list("my_cmap", custom_colors_3)
583
+
584
+ t0_data = self.timepoint_data["t0"]
585
+ t1_data = torch.cat([self.timepoint_data["t1_1"], self.timepoint_data["t1_2"], self.timepoint_data["t1_3"]],
586
+ dim=0)
587
+
588
+ # seen endpoint
589
+ self.plot_trajs(
590
+ traj_bias_only_x1_1,
591
+ "Bias-only → training endpoint (x1_1)",
592
+ f"{self.args.data_name}_bias_only_to_x1_1.png",
593
+ x1c_1,
594
+ timepoint_data={"t0": t0_data, "t1": t1_data},
595
+ cmap=custom_cmap_1,
596
+ c_end='#6B67EE',
597
+ save_dir=save_dir
598
+ )
599
+
600
+ self.plot_trajs(traj_to_x1_1,
601
+ "Base-only trajectories → training endpoint (x1_1)",
602
+ f"{self.args.data_name}_base_only_to_x1_1.png",
603
+ x1c_1,
604
+ timepoint_data={"t0": t0_data, "t1": t1_data},
605
+ cmap=custom_cmap_1,
606
+ c_end='#6B67EE',
607
+ save_dir=save_dir
608
+ )
609
+
610
+ self.plot_trajs(traj_bias_plus_x1_1,
611
+ "Bias + base trajectories → training endpoint (x1_1)",
612
+ f"{self.args.data_name}_bias_plus_base_to_x1_1.png",
613
+ x1c_1,
614
+ timepoint_data={"t0": t0_data, "t1": t1_data},
615
+ cmap=custom_cmap_1,
616
+ c_end='#6B67EE',
617
+ save_dir=save_dir
618
+ )
619
+
620
+ # unseen endpoint
621
+ self.plot_trajs(traj_to_x1_2,
622
+ "Base-only trajectories → unseen endpoint (x1_2)",
623
+ f"{self.args.data_name}_base_only_to_x1_2.png",
624
+ x1c_2,
625
+ timepoint_data={"t0": t0_data, "t1": t1_data},
626
+ cmap=custom_cmap_2,
627
+ c_end='#50B2D7',
628
+ save_dir=save_dir
629
+ )
630
+
631
+ self.plot_trajs(traj_bias_only_x1_2,
632
+ "Bias-only trajectories → unseen endpoint (x1_2)",
633
+ f"{self.args.data_name}_bias_only_to_x1_2.png",
634
+ x1c_2,
635
+ timepoint_data={"t0": t0_data, "t1": t1_data},
636
+ cmap=custom_cmap_2,
637
+ c_end='#50B2D7',
638
+ save_dir=save_dir
639
+ )
640
+
641
+ self.plot_trajs(traj_bias_plus_x1_2,
642
+ "Bias + base trajectories → unseen endpoint (x1_2)",
643
+ f"{self.args.data_name}_bias_plus_base_to_x1_2.png",
644
+ x1c_2,
645
+ timepoint_data={"t0": t0_data, "t1": t1_data},
646
+ cmap=custom_cmap_2,
647
+ c_end='#50B2D7',
648
+ save_dir=save_dir
649
+ )
650
+
651
+
652
+ # unseen endpoint 3
653
+ self.plot_trajs(traj_to_x1_3,
654
+ "Base-only trajectories → unseen endpoint (x1_3)",
655
+ f"{self.args.data_name}_base_only_to_x1_3.png",
656
+ x1c_3,
657
+ timepoint_data={"t0": t0_data, "t1": t1_data},
658
+ cmap=custom_cmap_3,
659
+ c_end='#B83CFF',
660
+ save_dir=save_dir
661
+ )
662
+
663
+ self.plot_trajs(traj_bias_only_x1_3,
664
+ "Bias-only trajectories → unseen endpoint (x1_3)",
665
+ f"{self.args.data_name}_bias_only_to_x1_3.png",
666
+ x1c_3,
667
+ timepoint_data={"t0": t0_data, "t1": t1_data},
668
+ cmap=custom_cmap_3,
669
+ c_end='#B83CFF',
670
+ save_dir=save_dir
671
+ )
672
+
673
+ self.plot_trajs(traj_bias_plus_x1_3,
674
+ "Bias + base trajectories → unseen endpoint (x1_3)",
675
+ f"{self.args.data_name}_bias_plus_base_to_x1_3.png",
676
+ x1c_3,
677
+ timepoint_data={"t0": t0_data, "t1": t1_data},
678
+ cmap=custom_cmap_3,
679
+ c_end='#B83CFF',
680
+ save_dir=save_dir
681
+ )
682
+
683
+ # quantitative metrics (per-cluster)
684
+ def eval_cluster_set(traj_B_T1_N_G, targets_B_N_G, tag: str):
685
+ finals = traj_B_T1_N_G[:, -1] # (B, N, G)
686
+ B = finals.shape[0]
687
+
688
+ # accumulate per-anchor metrics, then mean over B
689
+ per_b_vals = []
690
+ for b in range(B):
691
+ pred_b = finals[b].to(device) # (N, G)
692
+ true_b = targets_B_N_G[b].to(device) # (N, G)
693
+
694
+ names, vals = compute_distribution_distances(pred_b, true_b)
695
+ per_b_vals.append(vals)
696
+
697
+ per_b_vals = np.asarray(per_b_vals, dtype=float) # (B, num_metrics)
698
+ mean_vals = per_b_vals.mean(axis=0)
699
+ std_vals = per_b_vals.std(axis=0, ddof=1) if B > 1 else np.zeros_like(mean_vals)
700
+
701
+ # log (Lightning-friendly); also return a dict
702
+ out = {}
703
+ for n, m, s in zip(names, mean_vals, std_vals):
704
+ self.log(f"test/{tag}/{n}", float(m), on_step=False, on_epoch=True, prog_bar=False, logger=True)
705
+ self.log(f"test/{tag}/{n}_std", float(s), on_step=False, on_epoch=True, prog_bar=False, logger=True)
706
+ out[f"{n}"] = float(m)
707
+ out[f"{n}_std"] = float(s)
708
+ return out
709
+
710
+ # quantitative metrics (vs full distribution)
711
+ def eval_vs_full_distribution(traj_B_T1_N_G, full_target_distribution, tag: str):
712
+ finals = traj_B_T1_N_G[:, -1] # (B, N, G)
713
+
714
+ # flatten all trajectory endpoints into single distribution
715
+ pred_all = finals.reshape(-1, G).to(device) # (B*N, G)
716
+ true_all = full_target_distribution.to(device) # (M, G)
717
+
718
+ pred_all = pred_all.float()
719
+ true_all = true_all.float()
720
+
721
+ names, vals = compute_wasserstein_distances(pred_all, true_all)
722
+
723
+ out = {}
724
+ for n, v in zip(names, vals):
725
+ self.log(f"test/{tag}/{n}", float(v), on_step=False, on_epoch=True, prog_bar=False, logger=True)
726
+ out[f"{n}"] = float(v)
727
+ return out
728
+
729
+ # quantitative metrics over multiple independent simulations
730
+ num_sims = 5
731
+ base_seed = 12345
732
+
733
+ def run_one_sim(sim_idx: int):
734
+ # re-rollout all six variants with a distinct RNG state
735
+ devices = [device.index] if device.type == "cuda" and device.index is not None else None
736
+ with torch.random.fork_rng(devices=devices):
737
+
738
+ torch.manual_seed(base_seed + sim_idx)
739
+
740
+ tr_base_11 = rollout_base(x0c_1, x1c_1)
741
+ tr_base_12 = rollout_base(x0c_2, x1c_2)
742
+ tr_base_13 = rollout_base(x0c_3, x1c_3)
743
+
744
+ tr_bias_only_11 = rollout_bias_only(x0c_1, x1c_1)
745
+ tr_bias_plus_11 = rollout_bias_plus_base(x0c_1, x1c_1)
746
+
747
+ tr_bias_only_12 = rollout_bias_only(x0c_2, x1c_2)
748
+ tr_bias_plus_12 = rollout_bias_plus_base(x0c_2, x1c_2)
749
+
750
+ tr_bias_only_13 = rollout_bias_only(x0c_3, x1c_3)
751
+ tr_bias_plus_13 = rollout_bias_plus_base(x0c_3, x1c_3)
752
+
753
+ # evaluate per-cluster metrics (against clustered targets)
754
+ metrics = {}
755
+ metrics.update({f"base_x1_1/{k}": v for k, v in eval_cluster_set(tr_base_11, x1c_1, "base/x1_1").items()})
756
+ metrics.update({f"base_x1_2/{k}": v for k, v in eval_cluster_set(tr_base_12, x1c_2, "base/x1_2").items()})
757
+ metrics.update({f"base_x1_3/{k}": v for k, v in eval_cluster_set(tr_base_13, x1c_3, "base/x1_3").items()})
758
+ metrics.update({f"bias_only_x1_1/{k}": v for k, v in eval_cluster_set(tr_bias_only_11, x1c_1, "bias_only/x1_1").items()})
759
+ metrics.update({f"bias_plus_x1_1/{k}": v for k, v in eval_cluster_set(tr_bias_plus_11, x1c_1, "bias_plus/x1_1").items()})
760
+ metrics.update({f"bias_only_x1_2/{k}": v for k, v in eval_cluster_set(tr_bias_only_12, x1c_2, "bias_only/x1_2").items()})
761
+ metrics.update({f"bias_plus_x1_2/{k}": v for k, v in eval_cluster_set(tr_bias_plus_12, x1c_2, "bias_plus/x1_2").items()})
762
+ metrics.update({f"bias_only_x1_3/{k}": v for k, v in eval_cluster_set(tr_bias_only_13, x1c_3, "bias_only/x1_3").items()})
763
+ metrics.update({f"bias_plus_x1_3/{k}": v for k, v in eval_cluster_set(tr_bias_plus_13, x1c_3, "bias_plus/x1_3").items()})
764
+
765
+ # evaluate against full distributions
766
+ metrics.update({f"base_vs_full_x1_1/{k}": v for k, v in eval_vs_full_distribution(tr_base_11, x1_1s, "base_vs_full/x1_1").items()})
767
+ metrics.update({f"base_vs_full_x1_2/{k}": v for k, v in eval_vs_full_distribution(tr_base_12, x1_2s, "base_vs_full/x1_2").items()})
768
+ metrics.update({f"base_vs_full_x1_3/{k}": v for k, v in eval_vs_full_distribution(tr_base_13, x1_3s, "base_vs_full/x1_3").items()})
769
+ metrics.update({f"bias_only_vs_full_x1_1/{k}": v for k, v in eval_vs_full_distribution(tr_bias_only_11, x1_1s, "bias_only_vs_full/x1_1").items()})
770
+ metrics.update({f"bias_plus_vs_full_x1_1/{k}": v for k, v in eval_vs_full_distribution(tr_bias_plus_11, x1_1s, "bias_plus_vs_full/x1_1").items()})
771
+ metrics.update({f"bias_only_vs_full_x1_2/{k}": v for k, v in eval_vs_full_distribution(tr_bias_only_12, x1_2s, "bias_only_vs_full/x1_2").items()})
772
+ metrics.update({f"bias_plus_vs_full_x1_2/{k}": v for k, v in eval_vs_full_distribution(tr_bias_plus_12, x1_2s, "bias_plus_vs_full/x1_2").items()})
773
+ metrics.update({f"bias_only_vs_full_x1_3/{k}": v for k, v in eval_vs_full_distribution(tr_bias_only_13, x1_3s, "bias_only_vs_full/x1_3").items()})
774
+ metrics.update({f"bias_plus_vs_full_x1_3/{k}": v for k, v in eval_vs_full_distribution(tr_bias_plus_13, x1_3s, "bias_plus_vs_full/x1_3").items()})
775
+
776
+ return metrics
777
+
778
+ # run K sims and collect metrics per run
779
+ metrics_runs = [run_one_sim(k) for k in range(num_sims)]
780
+
781
+ agg = {}
782
+ all_keys = sorted(metrics_runs[0].keys())
783
+
784
+ for key in all_keys:
785
+ vals = torch.tensor([m[key] for m in metrics_runs], dtype=torch.float32)
786
+ agg[f"{key}_runs_mean"] = vals.mean().item()
787
+ agg[f"{key}_runs_std"] = (vals.std(unbiased=True).item() if num_sims > 1 else 0.0)
788
+
789
+ # Log for Lightning
790
+ self.log(f"test/{key}_runs_mean", agg[f"{key}_runs_mean"], on_step=False, on_epoch=True, logger=True)
791
+ self.log(f"test/{key}_runs_std", agg[f"{key}_runs_std"], on_step=False, on_epoch=True, logger=True)
792
+
793
+ if getattr(self.trainer, "is_global_zero", True):
794
+ out_dir = os.path.join(self.args.save_dir, "metrics", self.args.data_name)
795
+ os.makedirs(out_dir, exist_ok=True)
796
+ stamp = time.strftime("%Y%m%d-%H%M%S")
797
+ with open(os.path.join(out_dir, f"test_metrics_aggregated_{num_sims}runs_{stamp}.json"), "w") as f:
798
+ json.dump(agg, f, indent=2)
799
+
800
+ return {"num_traj": B}
801
+
802
+ class ReplayBuffer:
803
+ def __init__(self, args):
804
+ BZ, T, N, G = args.buffer_size, args.num_steps, args.num_particles, args.dim
805
+ self.positions = torch.zeros((BZ, T+1, N, G), device=args.device)
806
+ self.target_positions = torch.zeros((BZ, N, G), device=args.device)
807
+ self.forces = torch.zeros((BZ, T, N, G), device=args.device)
808
+ self.log_tpm = torch.zeros((BZ,), device=args.device)
809
+ self.rewards = torch.zeros((BZ,), device=args.device)
810
+ self.batch_size, self.buffer_size, self.count = args.batch_size, args.buffer_size, 0
811
+
812
+ def add_ranked(self, data):
813
+ positions, target_positions, forces, log_tpm, rewards = data
814
+ # concat existing + new, keep top by reward
815
+ if self.count > 0:
816
+ pos = torch.cat([self.positions[:self.count], positions], dim=0)
817
+ tgt = torch.cat([self.target_positions[:self.count], target_positions], dim=0)
818
+ frc = torch.cat([self.forces[:self.count], forces], dim=0)
819
+ ltp = torch.cat([self.log_tpm[:self.count], log_tpm], dim=0)
820
+ rwd = torch.cat([self.rewards[:self.count], rewards], dim=0)
821
+ else:
822
+ pos, tgt, frc, ltp, rwd = positions, target_positions, forces, log_tpm, rewards
823
+ k = min(self.buffer_size, pos.size(0))
824
+ top_vals, top_idx = torch.topk(rwd, k=k, largest=True, sorted=False)
825
+ self.positions[:k] = pos.index_select(0, top_idx)
826
+ self.target_positions[:k] = tgt.index_select(0, top_idx)
827
+ self.forces[:k] = frc.index_select(0, top_idx)
828
+ self.log_tpm[:k] = ltp.index_select(0, top_idx)
829
+ self.rewards[:k] = top_vals
830
+ self.count = k
831
+
832
+ def sample(self):
833
+ assert self.count > 0, "buffer is empty"
834
+ idx = torch.randint(0, self.count, (self.batch_size,), device=self.positions.device)
835
+ return (
836
+ self.positions[idx], self.target_positions[idx],
837
+ self.forces[idx], self.log_tpm[idx], self.rewards[idx],
838
+ )
839
+
840
+ class PathObjective:
841
+ def __init__(self, args):
842
+ self.dt = float(1.0 / args.num_steps)
843
+ self.gamma = args.friction
844
+ self.kT = getattr(args, "kT", 0.1)
845
+ self.sigma_v = math.sqrt(2.0 * self.kT / (self.gamma * self.dt))
846
+ self.log_prob = Normal(0.0, self.sigma_v).log_prob
847
+ self.sigma = args.sigma
848
+
849
+ def __call__(self, positions, target_positions, base_forces):
850
+ log_upm = self.unbiased_path_measure(positions, base_forces)
851
+ log_ri, final_idx = self.relaxed_indicator(positions, target_positions)
852
+ return log_upm + log_ri, final_idx, log_ri
853
+
854
+ def unbiased_path_measure(self, positions, base_forces):
855
+ v = (positions[:, 1:] - positions[:, :-1]) / self.dt
856
+
857
+ means = base_forces / self.gamma # (B,T,N,G)
858
+ resid = v - means
859
+ return self.log_prob(resid).mean((1,2,3))
860
+
861
+ def relaxed_indicator(self, positions, target_positions):
862
+ # allow (B,N,G) or (B,T+1,N,G)
863
+ device = positions.device
864
+ if target_positions.ndim == 3:
865
+ target_positions = target_positions[:, None].expand_as(positions)
866
+
867
+ target_positions = target_positions.to(device)
868
+ dist2 = (positions - target_positions).pow(2).mean((-2,-1)) # (B,T+1)
869
+ log_ri = -0.5 * dist2 / (self.sigma**2)
870
+ vals, idx = log_ri.max(dim=1)
871
+ return vals, idx
entangled-cell/entangledcell_module_unseen.py ADDED
@@ -0,0 +1,817 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import sys
3
+ os.environ["CUDA_VISIBLE_DEVICES"] = "5"
4
+
5
+ import torch
6
+ import wandb
7
+ import matplotlib.pyplot as plt
8
+ import pytorch_lightning as pl
9
+
10
+ import numpy as np
11
+
12
+ from torch.distributions import Normal
13
+ from geo_metrics.metric_factory import natural_gradient_force
14
+ import math
15
+ from train_utils import make_aligned_clusters
16
+ from matplotlib.colors import LinearSegmentedColormap
17
+ from eval import compute_distribution_distances, compute_wasserstein_distances
18
+ import json, time, csv
19
+
20
+
21
+ class EntangledNetTrainBaseUnseen(pl.LightningModule):
22
+ def __init__(
23
+ self,
24
+ args,
25
+ bias_net, # input bias net
26
+ data_manifold_metric,
27
+ timepoint_data,
28
+ ot_sampler=None,
29
+ vel_conditioned=False,
30
+ ):
31
+ super().__init__()
32
+ self.args = args
33
+
34
+ self.ot_sampler = ot_sampler
35
+
36
+ self.bias_net = bias_net
37
+
38
+ self.data_manifold_metric = data_manifold_metric
39
+
40
+ self.target_measure = PathObjective(args)
41
+ if args.training:
42
+ self.replay = ReplayBuffer(args)
43
+
44
+ self.dt = float(1.0 / args.num_steps)
45
+ self.std = (2.0 * args.kT / (args.friction * self.dt)) ** 0.5
46
+ self.log_prob = Normal(0, self.std).log_prob
47
+ self.timepoint_data = timepoint_data
48
+ self.vel_conditioned = vel_conditioned
49
+ self.dir_only = getattr(args, "dir_only", False)
50
+ #self.device = args.device
51
+
52
+ # returns the bias force given the position, velocity and target
53
+ def forward(self, pos, vel, target):
54
+ if self.vel_conditioned:
55
+ if self.dir_only:
56
+ velocity_magnitude = torch.norm(vel, dim=-1, keepdim=True)
57
+ velocity_direction = vel / (velocity_magnitude + 1e-8)
58
+ return self.bias_net(pos, velocity_direction, target)
59
+ else:
60
+ return self.bias_net(pos, vel, target)
61
+
62
+ return self.bias_net(pos, target)
63
+
64
+ def on_train_epoch_start(self):
65
+ pass
66
+
67
+ def _sample(self, x0, x1, metric_samples):
68
+ """
69
+ Simulate first-order velocity dynamics
70
+
71
+ x0: initial positions of batch (B, N, g)
72
+ x1: final positions of batch (B, N, g)
73
+ """
74
+ device = x0.device
75
+ print(device)
76
+
77
+ B, N, G = x0.shape
78
+ T = self.args.num_steps
79
+
80
+ gamma = float(self.args.friction)
81
+ kT = float(getattr(self.args, "kT", 0.0))
82
+
83
+ positions = torch.empty((B, T+1, N, G), dtype=x0.dtype, device=device)
84
+ forces = torch.empty((B, T, N, G), dtype=x0.dtype, device=device)
85
+ biases = torch.empty((B, T, N, G), dtype=x0.dtype, device=device)
86
+
87
+ # set initial positions
88
+ positions[:, 0] = x0
89
+ pos = x0.clone()
90
+
91
+ target_positions = x1.clone().to(device, dtype=x0.dtype)
92
+ #target_positions = x1.clone().unsqueeze(dim=1).repeat(1, T+1, 1, 1)
93
+
94
+ for t_idx in range(T):
95
+ if t_idx == 0:
96
+ velocity = torch.zeros_like(pos)
97
+ else:
98
+ velocity = (pos - positions[:, t_idx-1]) / self.dt
99
+
100
+
101
+ F_nat, _ = natural_gradient_force(self.data_manifold_metric,
102
+ pos,
103
+ metric_samples,
104
+ t_idx,
105
+ )
106
+
107
+ base_force = F_nat # unbiased base force
108
+ # learned bias force
109
+ if self.vel_conditioned:
110
+ if self.dir_only:
111
+ velocity_magnitude = torch.norm(velocity, dim=-1, keepdim=True)
112
+ velocity_direction = velocity / (velocity_magnitude + 1e-8) # Avoid division by zero
113
+
114
+ bias_force = self.bias_net(pos.detach(),
115
+ velocity_direction.detach(),
116
+ target_positions.detach()).detach()
117
+ else:
118
+ bias_force = self.bias_net(pos.detach(),
119
+ velocity.detach(),
120
+ target_positions.detach()).detach()
121
+ else:
122
+ bias_force = self.bias_net(pos.detach(),
123
+ target_positions.detach()).detach()
124
+
125
+ if kT > 0:
126
+ xi = torch.randn_like(pos) * ((2.0 * kT * self.dt / gamma) ** 0.5)
127
+ else:
128
+ xi = 0.0
129
+
130
+ pos = pos + (self.dt / gamma) * (base_force + bias_force) + xi
131
+
132
+ positions[:, t_idx + 1] = pos.clone()
133
+ forces[:, t_idx] = base_force.clone()
134
+ biases[:, t_idx] = bias_force.clone()
135
+
136
+ log_tpm, final_idx, log_ri = self.target_measure(positions, target_positions, forces)
137
+
138
+ if self.args.training:
139
+ self.replay.add_ranked((positions.detach(),
140
+ target_positions.detach(),
141
+ forces.detach(),
142
+ log_tpm.detach(),
143
+ log_ri.detach()))
144
+
145
+ for i in range(B):
146
+ end = int(final_idx[i].item()) + 1 if torch.is_tensor(final_idx) else T + 1
147
+ np.save(f"{self.args.save_dir}/positions/{i}.npy", positions[i, :end].detach().cpu().numpy())
148
+
149
+ return positions, target_positions, forces, log_tpm, log_ri
150
+
151
+ def _compute_loss(self):
152
+ positions, target_positions, base_forces, log_tpm, log_ri = self.replay.sample()
153
+ # shapes: pos (B,T+1,N,G), tgt (B,N,G), base_forces (B,T,N,G)
154
+
155
+ gamma = float(self.args.friction)
156
+
157
+ B, T, N, G = base_forces.shape
158
+ v = (positions[:, 1:] - positions[:, :-1]) / self.dt # (B,T,N,G)
159
+
160
+ # rebuild bias per step for correct mean
161
+ x_t = positions[:, :-1].reshape(-1, N, G)
162
+ v_t = v.reshape(-1, N, G) # reshape velocity to match other tensors
163
+ tgt_t = target_positions[:, None].expand(-1, T, N, G).reshape(-1, N, G)
164
+
165
+ if self.vel_conditioned:
166
+ if self.dir_only:
167
+ velocity_magnitude = torch.norm(v_t, dim=-1, keepdim=True)
168
+ velocity_direction = v_t / (velocity_magnitude + 1e-8)
169
+ B_t = self.bias_net(x_t, velocity_direction, tgt_t).view(B, T, N, G)
170
+ else:
171
+ B_t = self.bias_net(x_t, v_t, tgt_t).view(B, T, N, G)
172
+ else:
173
+ B_t = self.bias_net(x_t, tgt_t).view(B, T, N, G)
174
+
175
+ means = (base_forces + B_t) / self.args.friction
176
+ resid = v - means
177
+
178
+ sigma_v = math.sqrt(2.0 * self.args.kT / (gamma * self.dt))
179
+ sigma_v = torch.as_tensor(sigma_v, dtype=resid.dtype, device=resid.device)
180
+ log_bpm = Normal(0.0, sigma_v).log_prob(resid).mean((1,2,3))
181
+
182
+ # control variate
183
+ cv = self.args.control_variate
184
+ if cv == "global":
185
+ log_z = self.bias_net.log_z
186
+ elif cv == "local":
187
+ log_z = (log_tpm - log_bpm).mean().detach()
188
+ elif cv == "zero":
189
+ log_z = 0.0
190
+ else: raise ValueError(cv)
191
+
192
+ # ce objective
193
+ if self.args.objective == "ce":
194
+ log_rnd = (log_tpm - log_bpm.detach())
195
+ weights = torch.softmax(log_rnd, dim=0)
196
+ loss = -(weights * log_bpm).sum()
197
+
198
+ else: # lv loss
199
+ loss = (log_z + log_bpm - log_tpm).pow(2).mean()
200
+
201
+ return loss, log_ri.mean()
202
+
203
+ def training_step(self, batch, batch_idx):
204
+ epoch = self.current_epoch
205
+
206
+ main_batch = batch[0]["train_samples"][0]
207
+ metric_batch = batch[0]["metric_samples"][0]
208
+
209
+ x0s = main_batch["x0"][0]
210
+ x1s = main_batch["x1_1"][0] # train on cluster 1
211
+ N = self.args.num_particles
212
+
213
+ x0_clusters, x1_clusters, idx1 = \
214
+ make_aligned_clusters(self.ot_sampler, x0s, x1s, N, replace=True)
215
+
216
+ sample_pairs = [
217
+ (metric_batch[0], metric_batch[1]), # x0 → x1_1 (branch 1)
218
+ ]
219
+
220
+ batch = self._sample(x0_clusters, x1_clusters, sample_pairs)
221
+
222
+ # timesteps from 0 to 1
223
+ self.timesteps = torch.linspace(0.0, 1.0, len(main_batch["x0"])).tolist()
224
+ loss, mean_log_ri = self._compute_loss()
225
+
226
+ self.log(
227
+ "train/loss",
228
+ loss,
229
+ on_step=False,
230
+ on_epoch=True,
231
+ prog_bar=True,
232
+ logger=True,
233
+ )
234
+ self.log(
235
+ "train/mean_log_ri",
236
+ mean_log_ri,
237
+ on_step=False,
238
+ on_epoch=True,
239
+ prog_bar=True,
240
+ logger=True,
241
+ )
242
+
243
+ return loss
244
+
245
+ def validation_step(self, batch, batch_idx):
246
+ main_batch = batch[0]["val_samples"][0]
247
+ metric_batch = batch[0]["metric_samples"][0]
248
+
249
+ x0s = main_batch["x0"][0]
250
+ x1s = main_batch["x1_2"][0] # validate on cluster 2
251
+ N = self.args.num_particles
252
+
253
+ x0_clusters, x1_clusters, idx1 = \
254
+ make_aligned_clusters(self.ot_sampler, x0s, x1s, N, replace=True)
255
+
256
+ sample_pairs = [
257
+ (metric_batch[0], metric_batch[1]), # x0 -> x1_1 (branch 1)
258
+ ]
259
+
260
+ batch = self._sample(x0_clusters, x1_clusters, sample_pairs)
261
+
262
+
263
+ # timesteps from 0 to 1
264
+ self.timesteps = torch.linspace(0.0, 1.0, len(main_batch["x0"])).tolist()
265
+ val_loss, mean_log_ri = self._compute_loss()
266
+
267
+
268
+ self.log(
269
+ "val/loss",
270
+ val_loss,
271
+ on_step=False,
272
+ on_epoch=True,
273
+ prog_bar=True,
274
+ logger=True,
275
+ )
276
+ self.log(
277
+ "val/mean_log_ri",
278
+ mean_log_ri,
279
+ on_step=False,
280
+ on_epoch=True,
281
+ prog_bar=True,
282
+ logger=True,
283
+ )
284
+
285
+ return val_loss
286
+
287
+ def optimizer_step(self, *args, **kwargs):
288
+ super().optimizer_step(*args, **kwargs)
289
+
290
+
291
+ def configure_optimizers(self):
292
+ exclude = {id(self.bias_net.log_z)}
293
+ params_except = [p for p in self.bias_net.parameters() if id(p) not in exclude]
294
+ optimizer = torch.optim.AdamW(
295
+ [
296
+ {"params": [self.bias_net.log_z], "lr": self.args.log_z_lr},
297
+ {"params": params_except, "lr": self.args.policy_lr},
298
+ ]
299
+ )
300
+
301
+ return optimizer
302
+
303
+ class EntangledNetTrainCellUnseen(EntangledNetTrainBaseUnseen):
304
+ @torch.no_grad()
305
+ def plot_trajs(
306
+ self, traj, title, fname, targets,
307
+ timepoint_data=None, # dict with keys 't0','t1'
308
+ cmap=None,
309
+ c_end='#B83CFF',
310
+ x_label="PC1", y_label="PC2",
311
+ save_dir=None,
312
+
313
+ ):
314
+
315
+ custom_colors_1 = ["#05009E", "#A19EFF", "#D577FF"]
316
+ custom_colors_2 = ["#05009E", "#A19EFF", "#50B2D7"]
317
+ custom_cmap_1 = LinearSegmentedColormap.from_list("my_cmap", custom_colors_1)
318
+ custom_cmap_2 = LinearSegmentedColormap.from_list("my_cmap", custom_colors_2)
319
+
320
+ tb = traj[..., :2].detach().cpu().numpy() # (B,T+1,N,2)
321
+ targ2 = targets[..., :2].detach().cpu().numpy() # (B,N,2)
322
+
323
+ # optional background conversion
324
+ def _to_np(x):
325
+ if x is None: return None
326
+ return x.detach().cpu().numpy() if hasattr(x, "detach") else x
327
+
328
+ def to_np_2d(x):
329
+ """Convert to np and force last dim=2 (take first two PCs). Returns None if <2 dims."""
330
+ if x is None:
331
+ return None
332
+ arr = x.detach().cpu().numpy() if hasattr(x, "detach") else np.asarray(x)
333
+ if arr.ndim == 1: # (G,) -> (1,G)
334
+ arr = arr[None, :]
335
+ if arr.shape[-1] < 2:
336
+ return None
337
+ arr2 = arr[..., :2].reshape(-1, 2)
338
+ return arr2
339
+
340
+ t0_bg = to_np_2d(timepoint_data['t0']) if (timepoint_data and 't0' in timepoint_data) else None
341
+ t1_bg = to_np_2d(timepoint_data['t1']) if (timepoint_data and 't1' in timepoint_data) else None
342
+
343
+ # axis limits (match global-limits logic with small margins if background present)
344
+ if t0_bg is not None or t1_bg is not None:
345
+ coords_list = []
346
+ if t0_bg is not None: coords_list.append(t0_bg)
347
+ if t1_bg is not None: coords_list.append(t1_bg)
348
+ coords_list.append(tb.reshape(-1, 2))
349
+ coords_list.append(targ2.reshape(-1, 2))
350
+ all_coords = np.concatenate(coords_list, axis=0)
351
+ x_min, x_max = all_coords[:, 0].min(), all_coords[:, 0].max()
352
+ y_min, y_max = all_coords[:, 1].min(), all_coords[:, 1].max()
353
+ x_margin = 0.05 * max(1e-12, (x_max - x_min))
354
+ y_margin = 0.05 * max(1e-12, (y_max - y_min))
355
+ x_min -= x_margin; x_max += x_margin
356
+ y_min -= y_margin; y_max += y_margin
357
+ else:
358
+ x_min = y_min = -np.inf
359
+ x_max = y_max = +np.inf
360
+
361
+ # figure
362
+ fig, ax = plt.subplots(figsize=(10, 8))
363
+
364
+ # background timepoints
365
+ if t0_bg is not None:
366
+ ax.scatter(t0_bg[:, 0], t0_bg[:, 1],
367
+ c='#05009E', s=80, alpha=0.4, marker='x',
368
+ label='t=0 cells', linewidth=1.5)
369
+ if t1_bg is not None:
370
+ ax.scatter(t1_bg[:, 0], t1_bg[:, 1],
371
+ c=c_end, s=80, alpha=0.4, marker='x',
372
+ label='t=1 cells', linewidth=1.5)
373
+
374
+ # color map for temporal segments
375
+ if cmap is None:
376
+ cmap = custom_cmap_1
377
+ num_segments = tb.shape[1] # T+1 points -> T segments, but use T+1 for colors indexing
378
+ colors = cmap(np.linspace(0, 1, max(2, num_segments)))
379
+
380
+ B, T1, N, _ = tb.shape
381
+ for b in range(B):
382
+ for n in range(N):
383
+ xy = tb[b, :, n, :] # (T+1, 2)
384
+ for t in range(T1 - 1):
385
+ ax.plot(
386
+ xy[t:t+2, 0], xy[t:t+2, 1],
387
+ color=colors[t], linewidth=2, alpha=0.8, zorder=2
388
+ )
389
+
390
+ starts = tb[:, 0, :, :].reshape(-1, 2) # (B*N, 2)
391
+ ends = tb[:, -1, :, :].reshape(-1, 2) # (B*N, 2)
392
+ ax.scatter(starts[:, 0], starts[:, 1],
393
+ c='#05009E', s=30, marker='o', label='Trajectory Start',
394
+ zorder=5, edgecolors='white', linewidth=1)
395
+ ax.scatter(ends[:, 0], ends[:, 1],
396
+ c=c_end, s=30, marker='o', label='Trajectory End',
397
+ zorder=5, edgecolors='white', linewidth=1)
398
+
399
+ tars = targ2.reshape(-1, 2)
400
+ ax.scatter(tars[:, 0], tars[:, 1],
401
+ s=24, marker='x', linewidths=1.5, c='#B83CFF',
402
+ alpha=0.7, label='targets', zorder=4)
403
+
404
+ if np.isfinite(x_min):
405
+ ax.set_xlim(x_min, x_max)
406
+ ax.set_ylim(y_min, y_max)
407
+ ax.set_xlabel(x_label, fontsize=12)
408
+ ax.set_ylabel(y_label, fontsize=12)
409
+ ax.set_title(title, fontsize=14)
410
+ ax.grid(True, alpha=0.3)
411
+ ax.legend(loc='upper right', fontsize=12, frameon=False)
412
+ ax.set_aspect('equal', adjustable='box')
413
+
414
+ plt.tight_layout()
415
+
416
+ if save_dir is None:
417
+ out_path = os.path.join(self.args.save_dir, "figures", self.args.data_name)
418
+ os.makedirs(out_path, exist_ok=True)
419
+ else:
420
+ out_path = save_dir
421
+ os.makedirs(out_path, exist_ok=True)
422
+
423
+ fpath = os.path.join(out_path, fname)
424
+ plt.savefig(fpath, dpi=300)
425
+ print(f"figure saved: {fpath}")
426
+ plt.close(fig)
427
+
428
+ def test_step(self, batch, batch_idx):
429
+ main_batch = batch[0]["test_samples"][0]
430
+ x0s = main_batch["x0"][0]
431
+ x1_1s = main_batch["x1_1"][0] # training endpoint
432
+ x1_2s = main_batch["x1_2"][0] # unseen endpoint
433
+ #x1s = torch.cat([x1_1s, x1_2s], dim=0) # (M1+M2,G) or (B,G)
434
+ dataset_full = main_batch["dataset"][0] # (M,G)
435
+
436
+ device = x0s.device
437
+
438
+ #B, N, G = x0s.shape
439
+ N = self.args.num_particles
440
+ T = self.args.num_steps
441
+ G = self.args.dim
442
+ gamma = float(self.args.friction)
443
+ kT = float(getattr(self.args, "kT", 0.0))
444
+ ell = float(getattr(self.args, "adj_length_scale", 1.0))
445
+ noise_scale = (0.0 if kT <= 0 else math.sqrt(2.0 * kT * self.dt / gamma))
446
+
447
+ # Ensure pools are (M,G)
448
+ if x1_1s.ndim == 3: x1_1s = x1_1s.reshape(-1, G)
449
+ if x1_2s.ndim == 3: x1_2s = x1_2s.reshape(-1, G)
450
+
451
+ x0c_1, x1c_1, _ = make_aligned_clusters(self.ot_sampler, x0s, x1_1s, N, replace=True) # to training endpoint
452
+ x0c_2, x1c_2, _ = make_aligned_clusters(self.ot_sampler, x0s, x1_2s, N, replace=True) # to unseen endpoint
453
+
454
+ B = x0c_1.shape[0]
455
+
456
+ # rollout base-only dynamics (no bias)
457
+ def rollout_base(x0c, x1c):
458
+ pos = x0c.clone()
459
+ traj = torch.empty((B, T+1, N, G), dtype=pos.dtype, device=pos.device)
460
+ traj[:, 0] = pos.clone()
461
+ for t in range(T):
462
+
463
+ # manifold/natural gradient towards target
464
+ F_nat, _ = natural_gradient_force(
465
+ self.data_manifold_metric, pos, metric_samples=None, timestep=t
466
+ ) # (B,N,G)
467
+ base_force = F_nat
468
+ xi = torch.randn_like(pos) * noise_scale if noise_scale > 0 else 0.0
469
+ pos = pos + (self.dt / gamma) * base_force + xi
470
+ traj[:, t+1] = pos.clone()
471
+ return traj # (B,T+1,N,G)
472
+
473
+ # rollout bias-only
474
+ def rollout_bias_only(x0c, x1c):
475
+ pos = x0c.clone()
476
+ traj = torch.empty((B, T+1, N, G), dtype=pos.dtype, device=pos.device)
477
+ traj[:, 0] = pos.clone()
478
+ for t in range(T):
479
+ if t == 0:
480
+ velocity = torch.zeros_like(pos)
481
+ else:
482
+ velocity = (pos - traj[:, t-1]) / self.dt
483
+
484
+ if self.vel_conditioned:
485
+ # Use velocity direction (unit vector) instead of full velocity
486
+ if self.dir_only:
487
+ velocity_magnitude = torch.norm(velocity, dim=-1, keepdim=True)
488
+ velocity_direction = velocity / (velocity_magnitude + 1e-8)
489
+ bias_force = self.bias_net(
490
+ pos.detach(), velocity_direction.detach(), x1c.detach()
491
+ ).detach()
492
+ else:
493
+ bias_force = self.bias_net(
494
+ pos.detach(), velocity.detach(), x1c.detach()
495
+ ).detach()
496
+ else:
497
+ bias_force = self.bias_net(
498
+ pos.detach(), x1c.detach()
499
+ ).detach() # (B,N,G)
500
+
501
+ xi = torch.randn_like(pos) * noise_scale if noise_scale > 0 else 0.0
502
+ pos = pos + (self.dt / gamma) * (bias_force) + xi
503
+ traj[:, t+1] = pos.clone()
504
+ return traj # (B,T+1,N,G)
505
+
506
+ # rollout bias+base (controlled dynamics)
507
+ def rollout_bias_plus_base(x0c, x1c):
508
+ pos = x0c.clone()
509
+ traj = torch.empty((B, T+1, N, G), dtype=pos.dtype, device=pos.device)
510
+ traj[:, 0] = pos.clone()
511
+ for t in range(T):
512
+ if t == 0:
513
+ velocity = torch.zeros_like(pos)
514
+ else:
515
+ velocity = (pos - traj[:, t-1]) / self.dt
516
+
517
+ F_nat, _ = natural_gradient_force(
518
+ self.data_manifold_metric, pos, metric_samples=None, timestep=t
519
+ ) # (B,N,G)
520
+ base_force = F_nat
521
+
522
+ if self.vel_conditioned:
523
+ if self.dir_only:
524
+ velocity_magnitude = torch.norm(velocity, dim=-1, keepdim=True)
525
+ velocity_direction = velocity / (velocity_magnitude + 1e-8)
526
+ bias_force = self.bias_net(
527
+ pos.detach(), velocity_direction.detach(), x1c.detach()
528
+ ).detach()
529
+ else:
530
+ bias_force = self.bias_net(
531
+ pos.detach(), velocity.detach(), x1c.detach()
532
+ ).detach()
533
+ else:
534
+ bias_force = self.bias_net(
535
+ pos.detach(), x1c.detach()
536
+ ).detach() # (B,N,G)
537
+
538
+ xi = torch.randn_like(pos) * noise_scale if noise_scale > 0 else 0.0
539
+ pos = pos + (self.dt / gamma) * (base_force + bias_force) + xi
540
+ traj[:, t+1] = pos.clone()
541
+ return traj # (B,T+1,N,G)
542
+
543
+
544
+ traj_to_x1_1 = rollout_base(x0c_1, x1c_1)
545
+ traj_to_x1_2 = rollout_base(x0c_2, x1c_2)
546
+
547
+ # New:
548
+ traj_bias_only_x1_1 = rollout_bias_only(x0c_1, x1c_1)
549
+ traj_bias_plus_x1_1 = rollout_bias_plus_base(x0c_1, x1c_1)
550
+ traj_bias_only_x1_2 = rollout_bias_only(x0c_2, x1c_2)
551
+ traj_bias_plus_x1_2 = rollout_bias_plus_base(x0c_2, x1c_2)
552
+
553
+
554
+ # ---------- 4) Plot (first two dims) with targets as blue X ----------
555
+ save_dir = os.path.join(self.args.save_dir, "figures", self.args.data_name)
556
+ os.makedirs(save_dir, exist_ok=True)
557
+
558
+ ds2 = (dataset_full[:, :2].detach().cpu().numpy()
559
+ if isinstance(dataset_full, torch.Tensor) else dataset_full[:, :2])
560
+
561
+ custom_colors_1 = ["#05009E", "#A19EFF", "#6B67EE"]
562
+ custom_colors_2 = ["#05009E", "#A19EFF", "#50B2D7"]
563
+ custom_cmap_1 = LinearSegmentedColormap.from_list("my_cmap", custom_colors_1)
564
+ custom_cmap_2 = LinearSegmentedColormap.from_list("my_cmap", custom_colors_2)
565
+
566
+ t0_data = self.timepoint_data["t0"]
567
+ t1_data = torch.cat([self.timepoint_data["t1_1"], self.timepoint_data["t1_2"]],
568
+ dim=0)
569
+
570
+ # seen endpoint
571
+ self.plot_trajs(
572
+ traj_bias_only_x1_1,
573
+ "Bias-only → training endpoint (x1_1)",
574
+ f"{self.args.data_name}_bias_only_to_x1_1.png",
575
+ x1c_1,
576
+ timepoint_data={"t0": t0_data, "t1": t1_data},
577
+ cmap=custom_cmap_1,
578
+ c_end='#6B67EE',
579
+ save_dir=save_dir
580
+ )
581
+
582
+ self.plot_trajs(traj_to_x1_1,
583
+ "Base-only trajectories → training endpoint (x1_1)",
584
+ f"{self.args.data_name}_base_only_to_x1_1.png",
585
+ x1c_1,
586
+ timepoint_data={"t0": t0_data, "t1": t1_data},
587
+ cmap=custom_cmap_1,
588
+ c_end='#6B67EE',
589
+ save_dir=save_dir
590
+ )
591
+
592
+ self.plot_trajs(traj_bias_plus_x1_1,
593
+ "Bias + base trajectories → training endpoint (x1_1)",
594
+ f"{self.args.data_name}_bias_plus_base_to_x1_1.png",
595
+ x1c_1,
596
+ timepoint_data={"t0": t0_data, "t1": t1_data},
597
+ cmap=custom_cmap_1,
598
+ c_end='#6B67EE',
599
+ save_dir=save_dir
600
+ )
601
+
602
+ # unseen endpoint
603
+ self.plot_trajs(traj_to_x1_2,
604
+ "Base-only trajectories → unseen endpoint (x1_2)",
605
+ f"{self.args.data_name}_base_only_to_x1_2.png",
606
+ x1c_2,
607
+ timepoint_data={"t0": t0_data, "t1": t1_data},
608
+ cmap=custom_cmap_2,
609
+ c_end='#50B2D7',
610
+ save_dir=save_dir
611
+ )
612
+
613
+ self.plot_trajs(traj_bias_only_x1_2,
614
+ "Bias-only trajectories → unseen endpoint (x1_2)",
615
+ f"{self.args.data_name}_bias_only_to_x1_2.png",
616
+ x1c_2,
617
+ timepoint_data={"t0": t0_data, "t1": t1_data},
618
+ cmap=custom_cmap_2,
619
+ c_end='#50B2D7',
620
+ save_dir=save_dir
621
+ )
622
+
623
+ self.plot_trajs(traj_bias_plus_x1_2,
624
+ "Bias + base trajectories → unseen endpoint (x1_2)",
625
+ f"{self.args.data_name}_bias_plus_base_to_x1_2.png",
626
+ x1c_2,
627
+ timepoint_data={"t0": t0_data, "t1": t1_data},
628
+ cmap=custom_cmap_2,
629
+ c_end='#50B2D7',
630
+ save_dir=save_dir
631
+ )
632
+
633
+ def eval_cluster_set(traj_B_T1_N_G, targets_B_N_G, tag: str):
634
+
635
+ finals = traj_B_T1_N_G[:, -1] # (B, N, G)
636
+ B = finals.shape[0]
637
+
638
+ # accumulate per-anchor metrics, then mean over B
639
+ per_b_vals = []
640
+ for b in range(B):
641
+ pred_b = finals[b].to(device) # (N, G)
642
+ true_b = targets_B_N_G[b].to(device) # (N, G)
643
+
644
+ names, vals = compute_distribution_distances(pred_b, true_b)
645
+ per_b_vals.append(vals)
646
+
647
+ per_b_vals = np.asarray(per_b_vals, dtype=float) # (B, num_metrics)
648
+ mean_vals = per_b_vals.mean(axis=0)
649
+ std_vals = per_b_vals.std(axis=0, ddof=1) if B > 1 else np.zeros_like(mean_vals)
650
+
651
+ # log (Lightning-friendly); also return a dict
652
+ out = {}
653
+ for n, m, s in zip(names, mean_vals, std_vals):
654
+ self.log(f"test/{tag}/{n}", float(m), on_step=False, on_epoch=True, prog_bar=False, logger=True)
655
+ self.log(f"test/{tag}/{n}_std", float(s), on_step=False, on_epoch=True, prog_bar=False, logger=True)
656
+ out[f"{n}"] = float(m)
657
+ out[f"{n}_std"] = float(s)
658
+ return out
659
+
660
+
661
+ def eval_vs_full_distribution(traj_B_T1_N_G, full_target_distribution, tag: str):
662
+
663
+ finals = traj_B_T1_N_G[:, -1] # (B, N, G)
664
+
665
+ # Flatten all trajectory endpoints into single distribution
666
+ pred_all = finals.reshape(-1, G).to(device) # (B*N, G)
667
+ true_all = full_target_distribution.to(device) # (M, G)
668
+
669
+ # Ensure both tensors are on the same device and have the right dtype
670
+ pred_all = pred_all.float()
671
+ true_all = true_all.float()
672
+
673
+ # Resample to same size for MMD compatibility
674
+ names, vals = compute_wasserstein_distances(pred_all, true_all)
675
+
676
+ # log results
677
+ out = {}
678
+ for n, v in zip(names, vals):
679
+ self.log(f"test/{tag}/{n}", float(v), on_step=False, on_epoch=True, prog_bar=False, logger=True)
680
+ out[f"{n}"] = float(v)
681
+ return out
682
+
683
+ # quantitative metrics over multiple independent simulations
684
+ num_sims = 5
685
+ base_seed = 12345
686
+
687
+ def run_one_sim(sim_idx: int):
688
+ # re-rollout all six variants with a distinct RNG state
689
+ devices = [device.index] if device.type == "cuda" and device.index is not None else None
690
+ with torch.random.fork_rng(devices=devices):
691
+
692
+ torch.manual_seed(base_seed + sim_idx)
693
+
694
+ tr_base_11 = rollout_base(x0c_1, x1c_1)
695
+ tr_base_12 = rollout_base(x0c_2, x1c_2)
696
+
697
+ tr_bias_only_11 = rollout_bias_only(x0c_1, x1c_1)
698
+ tr_bias_plus_11 = rollout_bias_plus_base(x0c_1, x1c_1)
699
+
700
+ tr_bias_only_12 = rollout_bias_only(x0c_2, x1c_2)
701
+ tr_bias_plus_12 = rollout_bias_plus_base(x0c_2, x1c_2)
702
+
703
+ # evaluate per-cluster metrics (your helper returns a dict of means/std over B)
704
+ metrics = {}
705
+ metrics.update({f"base_x1_1/{k}": v for k, v in eval_cluster_set(tr_base_11, x1c_1, "base/x1_1").items()})
706
+ metrics.update({f"base_x1_2/{k}": v for k, v in eval_cluster_set(tr_base_12, x1c_2, "base/x1_2").items()})
707
+ metrics.update({f"bias_only_x1_1/{k}": v for k, v in eval_cluster_set(tr_bias_only_11, x1c_1, "bias_only/x1_1").items()})
708
+ metrics.update({f"bias_plus_x1_1/{k}": v for k, v in eval_cluster_set(tr_bias_plus_11, x1c_1, "bias_plus/x1_1").items()})
709
+ metrics.update({f"bias_only_x1_2/{k}": v for k, v in eval_cluster_set(tr_bias_only_12, x1c_2, "bias_only/x1_2").items()})
710
+ metrics.update({f"bias_plus_x1_2/{k}": v for k, v in eval_cluster_set(tr_bias_plus_12, x1c_2, "bias_plus/x1_2").items()})
711
+
712
+ # evaluate vs full distributions
713
+ metrics.update({f"base_vs_full_x1_1/{k}": v for k, v in eval_vs_full_distribution(tr_base_11, x1_1s, "base_vs_full/x1_1").items()})
714
+ metrics.update({f"base_vs_full_x1_2/{k}": v for k, v in eval_vs_full_distribution(tr_base_12, x1_2s, "base_vs_full/x1_2").items()})
715
+ metrics.update({f"bias_only_vs_full_x1_1/{k}": v for k, v in eval_vs_full_distribution(tr_bias_only_11, x1_1s, "bias_only_vs_full/x1_1").items()})
716
+ metrics.update({f"bias_plus_vs_full_x1_1/{k}": v for k, v in eval_vs_full_distribution(tr_bias_plus_11, x1_1s, "bias_plus_vs_full/x1_1").items()})
717
+ metrics.update({f"bias_only_vs_full_x1_2/{k}": v for k, v in eval_vs_full_distribution(tr_bias_only_12, x1_2s, "bias_only_vs_full/x1_2").items()})
718
+ metrics.update({f"bias_plus_vs_full_x1_2/{k}": v for k, v in eval_vs_full_distribution(tr_bias_plus_12, x1_2s, "bias_plus_vs_full/x1_2").items()})
719
+
720
+ return metrics
721
+
722
+ # run K sims and collect metrics per run
723
+ metrics_runs = [run_one_sim(k) for k in range(num_sims)]
724
+
725
+ agg = {}
726
+ all_keys = sorted(metrics_runs[0].keys())
727
+
728
+ for key in all_keys:
729
+ vals = torch.tensor([m[key] for m in metrics_runs], dtype=torch.float32)
730
+ agg[f"{key}_runs_mean"] = vals.mean().item()
731
+ agg[f"{key}_runs_std"] = (vals.std(unbiased=True).item() if num_sims > 1 else 0.0)
732
+
733
+ # Log for Lightning
734
+ self.log(f"test/{key}_runs_mean", agg[f"{key}_runs_mean"], on_step=False, on_epoch=True, logger=True)
735
+ self.log(f"test/{key}_runs_std", agg[f"{key}_runs_std"], on_step=False, on_epoch=True, logger=True)
736
+
737
+ if getattr(self.trainer, "is_global_zero", True):
738
+ out_dir = os.path.join(self.args.save_dir, "metrics", self.args.data_name)
739
+ os.makedirs(out_dir, exist_ok=True)
740
+ stamp = time.strftime("%Y%m%d-%H%M%S")
741
+ with open(os.path.join(out_dir, f"test_metrics_aggregated_{num_sims}runs_{stamp}.json"), "w") as f:
742
+ json.dump(agg, f, indent=2)
743
+
744
+ return {"num_traj": B}
745
+
746
+ ### REPLAY BUFFER ###
747
+ class ReplayBuffer:
748
+ def __init__(self, args):
749
+ BZ, T, N, G = args.buffer_size, args.num_steps, args.num_particles, args.dim
750
+ self.positions = torch.zeros((BZ, T+1, N, G), device=args.device)
751
+ self.target_positions = torch.zeros((BZ, N, G), device=args.device)
752
+ self.forces = torch.zeros((BZ, T, N, G), device=args.device)
753
+ self.log_tpm = torch.zeros((BZ,), device=args.device)
754
+ self.rewards = torch.zeros((BZ,), device=args.device)
755
+ self.batch_size, self.buffer_size, self.count = args.batch_size, args.buffer_size, 0
756
+
757
+ def add_ranked(self, data):
758
+ positions, target_positions, forces, log_tpm, rewards = data
759
+ # concat existing + new, keep top by reward
760
+ if self.count > 0:
761
+ pos = torch.cat([self.positions[:self.count], positions], dim=0)
762
+ tgt = torch.cat([self.target_positions[:self.count], target_positions], dim=0)
763
+ frc = torch.cat([self.forces[:self.count], forces], dim=0)
764
+ ltp = torch.cat([self.log_tpm[:self.count], log_tpm], dim=0)
765
+ rwd = torch.cat([self.rewards[:self.count], rewards], dim=0)
766
+ else:
767
+ pos, tgt, frc, ltp, rwd = positions, target_positions, forces, log_tpm, rewards
768
+ k = min(self.buffer_size, pos.size(0))
769
+ top_vals, top_idx = torch.topk(rwd, k=k, largest=True, sorted=False)
770
+ self.positions[:k] = pos.index_select(0, top_idx)
771
+ self.target_positions[:k] = tgt.index_select(0, top_idx)
772
+ self.forces[:k] = frc.index_select(0, top_idx)
773
+ self.log_tpm[:k] = ltp.index_select(0, top_idx)
774
+ self.rewards[:k] = top_vals
775
+ self.count = k
776
+
777
+ def sample(self):
778
+ assert self.count > 0, "buffer is empty"
779
+ idx = torch.randint(0, self.count, (self.batch_size,), device=self.positions.device)
780
+ return (
781
+ self.positions[idx], self.target_positions[idx],
782
+ self.forces[idx], self.log_tpm[idx], self.rewards[idx],
783
+ )
784
+
785
+ ### PATH OBJECTIVE ###
786
+ class PathObjective:
787
+ def __init__(self, args):
788
+ self.dt = float(1.0 / args.num_steps)
789
+ self.gamma = args.friction
790
+ self.kT = getattr(args, "kT", 0.0)
791
+ self.sigma_v = math.sqrt(2.0 * self.kT / (self.gamma * self.dt))
792
+ self.log_prob = Normal(0.0, self.sigma_v).log_prob
793
+ self.sigma = args.sigma
794
+
795
+ def __call__(self, positions, target_positions, base_forces):
796
+ log_upm = self.unbiased_path_measure(positions, base_forces)
797
+ log_ri, final_idx = self.relaxed_indicator(positions, target_positions)
798
+ return log_upm + log_ri, final_idx, log_ri
799
+
800
+ def unbiased_path_measure(self, positions, base_forces):
801
+ v = (positions[:, 1:] - positions[:, :-1]) / self.dt # (B,T,N,G)
802
+
803
+ means = base_forces / self.gamma # (B,T,N,G)
804
+ resid = v - means
805
+ return self.log_prob(resid).mean((1,2,3))
806
+
807
+ def relaxed_indicator(self, positions, target_positions):
808
+ # allow (B,N,G) or (B,T+1,N,G)
809
+ device = positions.device
810
+ if target_positions.ndim == 3:
811
+ target_positions = target_positions[:, None].expand_as(positions)
812
+
813
+ target_positions = target_positions.to(device)
814
+ dist2 = (positions - target_positions).pow(2).mean((-2,-1)) # (B,T+1)
815
+ log_ri = -0.5 * dist2 / (self.sigma**2)
816
+ vals, idx = log_ri.max(dim=1)
817
+ return vals, idx
entangled-cell/environment.yml ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: entangled-cell
2
+ channels:
3
+ - conda-forge
4
+ - omnia
5
+ - defaults
6
+ dependencies:
7
+ - python=3.10
8
+ - pytorch-cuda=12.4
9
+ - rdkit=2024.09.6
10
+ - seaborn
11
+ - torchmetrics
12
+ - numpy[version='>=1.26.0,<2.0.0']
13
+ - mctc-lib
14
+ - scikit-learn
15
+ - pyyaml
16
+ - jupyter
17
+ - ase
18
+ - python[version='>=3.10']
19
+ - tqdm
20
+ - dxtb
21
+ - openbabel=3.1.1
22
+ - pytorch-lightning>=2.0.0
23
+ - lightning>=2.0.0
24
+ - joblib
25
+ - pip
26
+ - pip:
27
+ - scipy==1.13.1
28
+ - wandb==0.22.1
29
+ - torchcfm==1.0.7
30
+ - pyemma==2.5.12
31
+ - torchdyn==1.0.6
32
+ - pot
33
+
34
+ - jupyter
35
+ - ipykernel
36
+ - notebook
entangled-cell/eval.py ADDED
@@ -0,0 +1,276 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ # evaluation metrics
3
+ import torch
4
+ import math
5
+ from functools import partial
6
+ from typing import Optional
7
+
8
+ import numpy as np
9
+ import ot as pot
10
+ import torch
11
+
12
+ def wasserstein(
13
+ x0: torch.Tensor,
14
+ x1: torch.Tensor,
15
+ method: Optional[str] = None,
16
+ reg: float = 0.05,
17
+ power: int = 2,
18
+ **kwargs,
19
+ ) -> float:
20
+ assert power == 1 or power == 2
21
+ # ot_fn should take (a, b, M) as arguments where a, b are marginals and
22
+ # M is a cost matrix
23
+ if method == "exact" or method is None:
24
+ ot_fn = pot.emd2
25
+ elif method == "sinkhorn":
26
+ ot_fn = partial(pot.sinkhorn2, reg=reg)
27
+ else:
28
+ raise ValueError(f"Unknown method: {method}")
29
+
30
+ a, b = pot.unif(x0.shape[0]), pot.unif(x1.shape[0])
31
+ if x0.dim() > 2:
32
+ x0 = x0.reshape(x0.shape[0], -1)
33
+ if x1.dim() > 2:
34
+ x1 = x1.reshape(x1.shape[0], -1)
35
+ M = torch.cdist(x0, x1)
36
+ if power == 2:
37
+ M = M**2
38
+ ret = ot_fn(a, b, M.detach().cpu().numpy(), numItermax=1e7)
39
+ if power == 2:
40
+ ret = math.sqrt(ret)
41
+ return ret
42
+
43
+ min_var_est = 1e-8
44
+
45
+
46
+ # Consider linear time MMD with a linear kernel:
47
+ # K(f(x), f(y)) = f(x)^Tf(y)
48
+ # h(z_i, z_j) = k(x_i, x_j) + k(y_i, y_j) - k(x_i, y_j) - k(x_j, y_i)
49
+ # = [f(x_i) - f(y_i)]^T[f(x_j) - f(y_j)]
50
+ #
51
+ # f_of_X: batch_size * k
52
+ # f_of_Y: batch_size * k
53
+ def linear_mmd2(f_of_X, f_of_Y):
54
+ loss = 0.0
55
+ delta = f_of_X - f_of_Y
56
+ loss = torch.mean((delta[:-1] * delta[1:]).sum(1))
57
+ return loss
58
+
59
+
60
+ # Consider linear time MMD with a polynomial kernel:
61
+ # K(f(x), f(y)) = (alpha*f(x)^Tf(y) + c)^d
62
+ # f_of_X: batch_size * k
63
+ # f_of_Y: batch_size * k
64
+ def poly_mmd2(f_of_X, f_of_Y, d=2, alpha=1.0, c=2.0):
65
+ K_XX = alpha * (f_of_X[:-1] * f_of_X[1:]).sum(1) + c
66
+ K_XX_mean = torch.mean(K_XX.pow(d))
67
+
68
+ K_YY = alpha * (f_of_Y[:-1] * f_of_Y[1:]).sum(1) + c
69
+ K_YY_mean = torch.mean(K_YY.pow(d))
70
+
71
+ K_XY = alpha * (f_of_X[:-1] * f_of_Y[1:]).sum(1) + c
72
+ K_XY_mean = torch.mean(K_XY.pow(d))
73
+
74
+ K_YX = alpha * (f_of_Y[:-1] * f_of_X[1:]).sum(1) + c
75
+ K_YX_mean = torch.mean(K_YX.pow(d))
76
+
77
+ return K_XX_mean + K_YY_mean - K_XY_mean - K_YX_mean
78
+
79
+
80
+ def _mix_rbf_kernel(X, Y, sigma_list):
81
+ assert X.size(0) == Y.size(0)
82
+ m = X.size(0)
83
+
84
+ Z = torch.cat((X, Y), 0)
85
+ ZZT = torch.mm(Z, Z.t())
86
+ diag_ZZT = torch.diag(ZZT).unsqueeze(1)
87
+ Z_norm_sqr = diag_ZZT.expand_as(ZZT)
88
+ exponent = Z_norm_sqr - 2 * ZZT + Z_norm_sqr.t()
89
+
90
+ K = 0.0
91
+ for sigma in sigma_list:
92
+ gamma = 1.0 / (2 * sigma**2)
93
+ K += torch.exp(-gamma * exponent)
94
+
95
+ return K[:m, :m], K[:m, m:], K[m:, m:], len(sigma_list)
96
+
97
+
98
+ def mix_rbf_mmd2(X, Y, sigma_list, biased=True):
99
+ K_XX, K_XY, K_YY, d = _mix_rbf_kernel(X, Y, sigma_list)
100
+ # return _mmd2(K_XX, K_XY, K_YY, const_diagonal=d, biased=biased)
101
+ return _mmd2(K_XX, K_XY, K_YY, const_diagonal=False, biased=biased)
102
+
103
+
104
+ def mix_rbf_mmd2_and_ratio(X, Y, sigma_list, biased=True):
105
+ K_XX, K_XY, K_YY, d = _mix_rbf_kernel(X, Y, sigma_list)
106
+ # return _mmd2_and_ratio(K_XX, K_XY, K_YY, const_diagonal=d, biased=biased)
107
+ return _mmd2_and_ratio(K_XX, K_XY, K_YY, const_diagonal=False, biased=biased)
108
+
109
+
110
+ ################################################################################
111
+ # Helper functions to compute variances based on kernel matrices
112
+ ################################################################################
113
+
114
+
115
+ def _mmd2(K_XX, K_XY, K_YY, const_diagonal=False, biased=False):
116
+ m = K_XX.size(0) # assume X, Y are same shape
117
+
118
+ # Get the various sums of kernels that we'll use
119
+ # Kts drop the diagonal, but we don't need to compute them explicitly
120
+ if const_diagonal is not False:
121
+ diag_X = diag_Y = const_diagonal
122
+ sum_diag_X = sum_diag_Y = m * const_diagonal
123
+ else:
124
+ diag_X = torch.diag(K_XX) # (m,)
125
+ diag_Y = torch.diag(K_YY) # (m,)
126
+ sum_diag_X = torch.sum(diag_X)
127
+ sum_diag_Y = torch.sum(diag_Y)
128
+
129
+ Kt_XX_sums = K_XX.sum(dim=1) - diag_X # \tilde{K}_XX * e = K_XX * e - diag_X
130
+ Kt_YY_sums = K_YY.sum(dim=1) - diag_Y # \tilde{K}_YY * e = K_YY * e - diag_Y
131
+ K_XY_sums_0 = K_XY.sum(dim=0) # K_{XY}^T * e
132
+
133
+ Kt_XX_sum = Kt_XX_sums.sum() # e^T * \tilde{K}_XX * e
134
+ Kt_YY_sum = Kt_YY_sums.sum() # e^T * \tilde{K}_YY * e
135
+ K_XY_sum = K_XY_sums_0.sum() # e^T * K_{XY} * e
136
+
137
+ if biased:
138
+ mmd2 = (
139
+ (Kt_XX_sum + sum_diag_X) / (m * m)
140
+ + (Kt_YY_sum + sum_diag_Y) / (m * m)
141
+ - 2.0 * K_XY_sum / (m * m)
142
+ )
143
+ else:
144
+ mmd2 = Kt_XX_sum / (m * (m - 1)) + Kt_YY_sum / (m * (m - 1)) - 2.0 * K_XY_sum / (m * m)
145
+
146
+ return mmd2
147
+
148
+
149
+ def _mmd2_and_ratio(K_XX, K_XY, K_YY, const_diagonal=False, biased=False):
150
+ mmd2, var_est = _mmd2_and_variance(
151
+ K_XX, K_XY, K_YY, const_diagonal=const_diagonal, biased=biased
152
+ )
153
+ loss = mmd2 / torch.sqrt(torch.clamp(var_est, min=min_var_est))
154
+ return loss, mmd2, var_est
155
+
156
+
157
+ def _mmd2_and_variance(K_XX, K_XY, K_YY, const_diagonal=False, biased=False):
158
+ m = K_XX.size(0) # assume X, Y are same shape
159
+
160
+ # Get the various sums of kernels that we'll use
161
+ # Kts drop the diagonal, but we don't need to compute them explicitly
162
+ if const_diagonal is not False:
163
+ diag_X = diag_Y = const_diagonal
164
+ sum_diag_X = sum_diag_Y = m * const_diagonal
165
+ sum_diag2_X = sum_diag2_Y = m * const_diagonal**2
166
+ else:
167
+ diag_X = torch.diag(K_XX) # (m,)
168
+ diag_Y = torch.diag(K_YY) # (m,)
169
+ sum_diag_X = torch.sum(diag_X)
170
+ sum_diag_Y = torch.sum(diag_Y)
171
+ sum_diag2_X = diag_X.dot(diag_X)
172
+ sum_diag2_Y = diag_Y.dot(diag_Y)
173
+
174
+ Kt_XX_sums = K_XX.sum(dim=1) - diag_X # \tilde{K}_XX * e = K_XX * e - diag_X
175
+ Kt_YY_sums = K_YY.sum(dim=1) - diag_Y # \tilde{K}_YY * e = K_YY * e - diag_Y
176
+ K_XY_sums_0 = K_XY.sum(dim=0) # K_{XY}^T * e
177
+ K_XY_sums_1 = K_XY.sum(dim=1) # K_{XY} * e
178
+
179
+ Kt_XX_sum = Kt_XX_sums.sum() # e^T * \tilde{K}_XX * e
180
+ Kt_YY_sum = Kt_YY_sums.sum() # e^T * \tilde{K}_YY * e
181
+ K_XY_sum = K_XY_sums_0.sum() # e^T * K_{XY} * e
182
+
183
+ Kt_XX_2_sum = (K_XX**2).sum() - sum_diag2_X # \| \tilde{K}_XX \|_F^2
184
+ Kt_YY_2_sum = (K_YY**2).sum() - sum_diag2_Y # \| \tilde{K}_YY \|_F^2
185
+ K_XY_2_sum = (K_XY**2).sum() # \| K_{XY} \|_F^2
186
+
187
+ if biased:
188
+ mmd2 = (
189
+ (Kt_XX_sum + sum_diag_X) / (m * m)
190
+ + (Kt_YY_sum + sum_diag_Y) / (m * m)
191
+ - 2.0 * K_XY_sum / (m * m)
192
+ )
193
+ else:
194
+ mmd2 = Kt_XX_sum / (m * (m - 1)) + Kt_YY_sum / (m * (m - 1)) - 2.0 * K_XY_sum / (m * m)
195
+
196
+ var_est = (
197
+ 2.0
198
+ / (m**2 * (m - 1.0) ** 2)
199
+ * (
200
+ 2 * Kt_XX_sums.dot(Kt_XX_sums)
201
+ - Kt_XX_2_sum
202
+ + 2 * Kt_YY_sums.dot(Kt_YY_sums)
203
+ - Kt_YY_2_sum
204
+ )
205
+ - (4.0 * m - 6.0) / (m**3 * (m - 1.0) ** 3) * (Kt_XX_sum**2 + Kt_YY_sum**2)
206
+ + 4.0
207
+ * (m - 2.0)
208
+ / (m**3 * (m - 1.0) ** 2)
209
+ * (K_XY_sums_1.dot(K_XY_sums_1) + K_XY_sums_0.dot(K_XY_sums_0))
210
+ - 4.0 * (m - 3.0) / (m**3 * (m - 1.0) ** 2) * (K_XY_2_sum)
211
+ - (8 * m - 12) / (m**5 * (m - 1)) * K_XY_sum**2
212
+ + 8.0
213
+ / (m**3 * (m - 1.0))
214
+ * (
215
+ 1.0 / m * (Kt_XX_sum + Kt_YY_sum) * K_XY_sum
216
+ - Kt_XX_sums.dot(K_XY_sums_1)
217
+ - Kt_YY_sums.dot(K_XY_sums_0)
218
+ )
219
+ )
220
+ return mmd2, var_est
221
+
222
+ from typing import Union
223
+ def compute_distances(pred, true):
224
+ """Computes distances between vectors."""
225
+ mse = torch.nn.functional.mse_loss(pred, true).item()
226
+ me = math.sqrt(mse)
227
+ mae = torch.mean(torch.abs(pred - true)).item()
228
+ return mse, me, mae
229
+
230
+ def compute_distribution_distances(pred: torch.Tensor, true: Union[torch.Tensor, list]):
231
+ """computes distances between distributions.
232
+
233
+ This handles jagged times as a list of tensors.
234
+ """
235
+ NAMES = [
236
+ "1-Wasserstein",
237
+ "2-Wasserstein",
238
+ "RBF_MMD",
239
+ "Mean_MSE",
240
+ "Mean_L2",
241
+ "Mean_L1",
242
+ "Median_MSE",
243
+ "Median_L2",
244
+ "Median_L1",
245
+ "Eq-EMD2",
246
+ ]
247
+ a = pred
248
+ b = true
249
+ pred_2d = pred[:, :2]
250
+ true_2d = true[:, :2]
251
+ w1 = wasserstein(pred_2d, true_2d, power=1)
252
+ w2 = wasserstein(pred_2d, true_2d, power=2)
253
+
254
+ mmd_rbf = mix_rbf_mmd2(a, b, sigma_list=[0.01, 0.1, 1, 10, 100]).item()
255
+ mean_dists = compute_distances(torch.mean(a, dim=0), torch.mean(b, dim=0))
256
+ median_dists = compute_distances(torch.median(a, dim=0)[0], torch.median(b, dim=0)[0])
257
+ dists = [w1, w2, mmd_rbf, *mean_dists, *median_dists]
258
+ return NAMES, dists
259
+
260
+
261
+ def compute_wasserstein_distances(pred: torch.Tensor, true: Union[torch.Tensor, list]):
262
+ """computes distances between distributions.
263
+
264
+ This handles jagged times as a list of tensors.
265
+ """
266
+ NAMES = [
267
+ "1-Wasserstein",
268
+ "2-Wasserstein",
269
+ ]
270
+ pred_2d = pred[:, :2]
271
+ true_2d = true[:, :2]
272
+ w1 = wasserstein(pred_2d, true_2d, power=1)
273
+ w2 = wasserstein(pred_2d, true_2d, power=2)
274
+
275
+ dists = [w1, w2]
276
+ return NAMES, dists
entangled-cell/geo_metrics/land.py ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ### Adapted from Metric Flow Matching (https://github.com/kkapusniak/metric-flow-matching)
2
+
3
+ import torch
4
+
5
+
6
+ def weighting_function(x, samples, gamma):
7
+ pairwise_sq_diff = (x[:, None, :] - samples[None, :, :]) ** 2
8
+ pairwise_sq_dist = pairwise_sq_diff.sum(-1)
9
+ weights = torch.exp(-pairwise_sq_dist / (2 * gamma**2))
10
+ return weights
11
+
12
+
13
+ def land_metric_tensor(x, samples, gamma, rho):
14
+ weights = weighting_function(x, samples, gamma) # Shape [B, N]
15
+ differences = samples[None, :, :] - x[:, None, :] # Shape [B, N, D]
16
+ squared_differences = differences**2 # Shape [B, N, D]
17
+
18
+ # Compute the sum of weighted squared differences for each dimension
19
+ M_dd_diag = torch.einsum("bn,bnd->bd", weights, squared_differences) + rho
20
+
21
+ # Invert the metric tensor diagonal for each x_t
22
+ M_dd_inv_diag = 1.0 / M_dd_diag # Shape [B, D] since it's diagonal
23
+ return M_dd_inv_diag
24
+
25
+
26
+ def weighting_function_dt(x, dx_dt, samples, gamma, weights):
27
+ pairwise_sq_diff_dt = (x[:, None, :] - samples[None, :, :]) * dx_dt[:, None, :]
28
+ return -pairwise_sq_diff_dt.sum(-1) * weights / (gamma**2)
entangled-cell/geo_metrics/metric_factory.py ADDED
@@ -0,0 +1,162 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ### Adapted from Metric Flow Matching (https://github.com/kkapusniak/metric-flow-matching)
2
+
3
+ import torch
4
+ import pytorch_lightning as pl
5
+ from pytorch_lightning.loggers import WandbLogger
6
+ from torch.utils.data import Dataset, DataLoader
7
+
8
+
9
+ from geo_metrics.land import land_metric_tensor
10
+ from geo_metrics.rbf_unseen import RBFNetwork
11
+
12
+ def unconditional_landscape_force(
13
+ data_manifold_metric, position, metric_samples, timestep=0,
14
+ landscape_mode="metric_potential", eps=1e-6, unit_speed=False, target_speed=None
15
+ ):
16
+ # Call natural_gradient_force with dummy grad_phi
17
+ dummy_grad_phi = torch.zeros_like(position)
18
+ return natural_gradient_force(
19
+ data_manifold_metric, position, dummy_grad_phi, metric_samples,
20
+ timestep=timestep, eps=eps, unit_speed=unit_speed,
21
+ target_speed=target_speed, landscape_mode=landscape_mode
22
+ )
23
+
24
+ def manifold_metric_diag(data_manifold_metric, position, metric_samples, timestep):
25
+
26
+ B, N, G = position.shape
27
+ x_flat = position.reshape(B*N, G) # (B*N, G)
28
+ M_flat = data_manifold_metric.calculate_metric(x_flat, metric_samples, timestep) # (B*N, G)
29
+ return M_flat.view(B, N, -1) # reshape back
30
+
31
+
32
+ def natural_gradient_force(
33
+ data_manifold_metric, position, metric_samples, timestep=0,
34
+ eps=1e-6, unit_speed=False, target_speed=None
35
+ ):
36
+ B, N, G = position.shape
37
+ M_dd = manifold_metric_diag(data_manifold_metric, position, metric_samples, timestep=0) # (B,N,G)
38
+
39
+ position_grad = position.clone().requires_grad_(True)
40
+ M_dd_grad = manifold_metric_diag(data_manifold_metric, position_grad, metric_samples, timestep=0)
41
+
42
+ # Create potential from metric: U = -sum(log(M_ii + eps))
43
+ potential = -(M_dd_grad + eps).log().sum()
44
+
45
+ try:
46
+ grad_potential = torch.autograd.grad(
47
+ outputs=potential,
48
+ inputs=position_grad,
49
+ create_graph=False,
50
+ retain_graph=False,
51
+ allow_unused=True
52
+ )[0]
53
+
54
+ if grad_potential is not None:
55
+ u = -grad_potential / (M_dd.detach() + eps)
56
+ else:
57
+ u = torch.randn_like(position) / (M_dd + eps)
58
+ except:
59
+ u = torch.randn_like(position) / (M_dd + eps)
60
+
61
+ speed_M = torch.sqrt((u.pow(2) * M_dd.detach()).sum(dim=-1, keepdim=True).clamp_min(1e-24)) # (B,N,1)
62
+
63
+ if unit_speed:
64
+ if target_speed is None:
65
+ u = u / speed_M.clamp_min(1e-12)
66
+ else:
67
+ ts = (target_speed if torch.is_tensor(target_speed)
68
+ else torch.tensor(target_speed, dtype=u.dtype, device=u.device))
69
+ u = u * (ts.view(1, 1, 1) / speed_M.clamp_min(1e-12))
70
+
71
+ return u, speed_M
72
+
73
+
74
+ class DataManifoldMetric:
75
+ def __init__(
76
+ self,
77
+ args,
78
+ skipped_time_points=None,
79
+ datamodule=None,
80
+ ):
81
+ self.skipped_time_points = skipped_time_points
82
+ self.datamodule = datamodule
83
+
84
+ self.gamma = args.gamma
85
+ self.rho = args.rho
86
+ self.metric = args.velocity_metric
87
+ self.n_centers = args.n_centers
88
+ self.kappa = args.kappa
89
+ self.metric_epochs = args.metric_epochs
90
+ self.metric_patience = args.metric_patience
91
+ self.lr = args.metric_lr
92
+ self.alpha_metric = args.alpha_metric
93
+ self.image_data = args.data_type == "image"
94
+ self.accelerator = args.accelerator
95
+
96
+ self.called_first_time = True
97
+ self.args = args
98
+
99
+ def calculate_metric(self, x_t, samples, current_timestep):
100
+ if self.metric == "land":
101
+ M_dd_x_t = (
102
+ land_metric_tensor(x_t, samples, self.gamma, self.rho)
103
+ ** self.alpha_metric
104
+ )
105
+
106
+ elif self.metric == "rbf":
107
+ if self.called_first_time:
108
+ self.rbf_networks = []
109
+ for timestep in range(self.datamodule.num_timesteps - 1):
110
+ if timestep in self.skipped_time_points:
111
+ continue
112
+ print("Learning RBF networks, timestep: ", timestep)
113
+ rbf_network = RBFNetwork(
114
+ current_timestep=timestep,
115
+ next_timestep=timestep
116
+ + 1
117
+ + (1 if timestep + 1 in self.skipped_time_points else 0),
118
+ n_centers=self.n_centers,
119
+ kappa=self.kappa,
120
+ lr=self.lr,
121
+ datamodule=self.datamodule,
122
+ args=self.args
123
+ )
124
+ early_stop_callback = pl.callbacks.EarlyStopping(
125
+ monitor="MetricModel/val_loss_learn_metric",
126
+ patience=self.metric_patience,
127
+ mode="min",
128
+ )
129
+ trainer = pl.Trainer(
130
+ max_epochs=self.metric_epochs,
131
+ accelerator=self.accelerator,
132
+ logger=WandbLogger(),
133
+ num_sanity_val_steps=0,
134
+ callbacks=(
135
+ [early_stop_callback] if not self.image_data else None
136
+ ),
137
+ )
138
+
139
+ trainer.fit(rbf_network, self.datamodule)
140
+
141
+ self.rbf_networks.append(rbf_network)
142
+ self.called_first_time = False
143
+ print("Learning RBF networksss... Done")
144
+ M_dd_x_t = self.rbf_networks[current_timestep].compute_metric(
145
+ x_t,
146
+ epsilon=self.rho,
147
+ alpha=self.alpha_metric,
148
+ image_hx=self.image_data,
149
+ )
150
+ return M_dd_x_t
151
+
152
+ def calculate_velocity(self, x_t, u_t, samples, timestep):
153
+
154
+ if len(u_t.shape) > 2:
155
+ u_t = u_t.reshape(u_t.shape[0], -1)
156
+ x_t = x_t.reshape(x_t.shape[0], -1)
157
+ M_dd_x_t = self.calculate_metric(x_t, samples, timestep).to(u_t.device)
158
+
159
+ velocity = torch.sqrt(((u_t**2) * M_dd_x_t).sum(dim=-1))
160
+ ut_sum = (u_t**2).sum(dim=-1)
161
+ metric_sum = M_dd_x_t.sum(dim=-1)
162
+ return velocity, ut_sum, metric_sum
entangled-cell/geo_metrics/rbf_unseen.py ADDED
@@ -0,0 +1,154 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ### Adapted from Metric Flow Matching (https://github.com/kkapusniak/metric-flow-matching)
2
+
3
+ import pytorch_lightning as pl
4
+ import torch
5
+ from sklearn.cluster import KMeans
6
+ import numpy as np
7
+
8
+
9
+ class RBFNetwork(pl.LightningModule):
10
+ def __init__(
11
+ self,
12
+ current_timestep,
13
+ next_timestep,
14
+ n_centers: int = 100,
15
+ kappa: float = 1.0,
16
+ lr=1e-2,
17
+ datamodule=None,
18
+ image_data=False,
19
+ args=None
20
+ ):
21
+ super().__init__()
22
+ self.K = n_centers
23
+ self.current_timestep = current_timestep
24
+ self.next_timestep = next_timestep
25
+ self.clustering_model = KMeans(n_clusters=self.K)
26
+ self.kappa = kappa
27
+ self.last_val_loss = 1
28
+ self.lr = lr
29
+ self.W = torch.nn.Parameter(torch.rand(self.K, 1))
30
+ self.datamodule = datamodule
31
+ self.image_data = image_data
32
+ self.args = args
33
+
34
+ def on_before_zero_grad(self, *args, **kwargs):
35
+ self.W.data = torch.clamp(self.W.data, min=0.0001)
36
+
37
+ def on_train_start(self):
38
+ with torch.no_grad():
39
+
40
+ batch = next(iter(self.trainer.datamodule.train_dataloader()))
41
+ """metric_samples_batch_filtered = [
42
+ x
43
+ for i, x in enumerate(batch[0]["metric_samples"][0])
44
+ if i in [self.current_timestep, self.next_timestep]
45
+ ]"""
46
+ metric_samples = batch[0]["metric_samples"][0]
47
+ all_data = torch.cat(metric_samples)
48
+ data_to_fit = all_data
49
+
50
+ print("Fitting Clustering model...")
51
+ self.clustering_model.fit(data_to_fit)
52
+
53
+ clusters = (
54
+ self.calculate_centroids(all_data, self.clustering_model.labels_)
55
+ if self.image_data
56
+ else self.clustering_model.cluster_centers_
57
+ )
58
+
59
+ self.C = torch.tensor(clusters, dtype=torch.float32).to(self.device)
60
+ labels = self.clustering_model.labels_
61
+ sigmas = np.zeros((self.K, 1))
62
+
63
+ for k in range(self.K):
64
+ points = all_data[labels == k, :]
65
+ variance = ((points - clusters[k]) ** 2).mean(axis=0)
66
+ sigmas[k, :] = np.sqrt(
67
+ variance.sum() if self.image_data else variance.mean()
68
+ )
69
+
70
+ self.lamda = torch.tensor(
71
+ 0.5 / (self.kappa * sigmas) ** 2, dtype=torch.float32
72
+ ).to(self.device)
73
+
74
+ def forward(self, x):
75
+ if len(x.shape) > 2:
76
+ x = x.reshape(x.shape[0], -1).to(self.C.device)
77
+
78
+ x = x.to(self.C.device)
79
+ dist2 = torch.cdist(x, self.C) ** 2
80
+ self.phi_x = torch.exp(-0.5 * self.lamda[None, :, :] * dist2[:, :, None])
81
+
82
+ h_x = (self.W.to(x.device) * self.phi_x).sum(dim=1)
83
+ return h_x
84
+
85
+ def training_step(self, batch, batch_idx):
86
+ main_batch = batch[0]["train_samples"][0]
87
+
88
+ x0 = main_batch["x0"][0]
89
+ if not self.args.unseen:
90
+ x1 = main_batch["x1"][0]
91
+ inputs = torch.cat([x0, x1], dim=0).to(self.device)
92
+ else:
93
+ x1_1 = main_batch["x1_1"][0]
94
+ x1_2 = main_batch["x1_2"][0]
95
+
96
+ inputs = torch.cat([x0, x1_1, x1_2], dim=0).to(self.device)
97
+
98
+ loss = ((1 - self.forward(inputs)) ** 2).mean()
99
+ self.log(
100
+ "MetricModel/train_loss_learn_metric",
101
+ loss,
102
+ on_step=True,
103
+ on_epoch=True,
104
+ prog_bar=True,
105
+ )
106
+ return loss
107
+
108
+ def validation_step(self, batch, batch_idx):
109
+ main_batch = batch[0]["val_samples"][0]
110
+
111
+ x0 = main_batch["x0"][0]
112
+ if not self.args.unseen:
113
+ x1 = main_batch["x1"][0]
114
+ inputs = torch.cat([x0, x1], dim=0).to(self.device)
115
+ else:
116
+ x1_1 = main_batch["x1_1"][0]
117
+ x1_2 = main_batch["x1_2"][0]
118
+
119
+ inputs = torch.cat([x0, x1_1, x1_2], dim=0).to(self.device)
120
+
121
+ h = self.forward(inputs)
122
+
123
+ loss = ((1 - h) ** 2).mean()
124
+ self.log(
125
+ "MetricModel/val_loss_learn_metric",
126
+ loss,
127
+ on_step=True,
128
+ on_epoch=True,
129
+ prog_bar=True,
130
+ )
131
+ self.last_val_loss = loss.detach()
132
+ return loss
133
+
134
+ def calculate_centroids(self, all_data, labels):
135
+ unique_labels = np.unique(labels)
136
+ centroids = np.zeros((len(unique_labels), all_data.shape[1]))
137
+ for i, label in enumerate(unique_labels):
138
+ centroids[i] = all_data[labels == label].mean(axis=0)
139
+ return centroids
140
+
141
+ def configure_optimizers(self):
142
+ optimizer = torch.optim.Adam(self.parameters(), lr=self.lr)
143
+ return optimizer
144
+
145
+ def compute_metric(self, x, alpha=1, epsilon=1e-2, image_hx=False):
146
+ if epsilon < 0:
147
+ epsilon = (1 - self.last_val_loss.item()) / abs(epsilon)
148
+ h_x = self.forward(x)
149
+ if image_hx:
150
+ h_x = 1 - torch.abs(1 - h_x)
151
+ M_x = 1 / (h_x**alpha + epsilon)
152
+ else:
153
+ M_x = 1 / (h_x + epsilon) ** alpha
154
+ return M_x
entangled-cell/parser.py ADDED
@@ -0,0 +1,156 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import argparse
2
+
3
+
4
+ def parse_args():
5
+ parser = argparse.ArgumentParser()
6
+ parser.add_argument(
7
+ "--config_path", type=str,
8
+ default='',
9
+ help="Path to config file"
10
+ )
11
+ parser.add_argument(
12
+ "--optimal_transport_method",
13
+ type=str,
14
+ default="exact",
15
+ help="Use optimal transport in CFM training",
16
+ )
17
+ parser.add_argument(
18
+ "--split_ratios",
19
+ nargs=2,
20
+ type=float,
21
+ default=[0.9, 0.1],
22
+ help="Split ratios for training/validation data in CFM training",
23
+ )
24
+ parser.add_argument(
25
+ "--accelerator", type=str, default="cpu", help="Training accelerator"
26
+ )
27
+ parser.add_argument("--date", type=str)
28
+ parser.add_argument("--seed", default=2, type=int)
29
+ parser.add_argument("--device", default="cuda:1", type=str)
30
+ parser.add_argument("--molecule", default="aldp", type=str)
31
+ parser.add_argument('--wandb', action='store_true', default=False)
32
+ parser.add_argument('--unseen', action='store_true', default=False)
33
+ parser.add_argument('--run_name', default=None, type=str)
34
+ # Logger Config
35
+ parser.add_argument("--save_dir", default="", type=str)
36
+ parser.add_argument("--root_dir", default="", type=str)
37
+ # Policy Config
38
+ parser.add_argument("--bias", default="force", type=str)
39
+ # Sampling Config
40
+ parser.add_argument("--start_state", default="c5", type=str)
41
+ parser.add_argument("--end_state", default="c7ax", type=str)
42
+ parser.add_argument("--num_steps", default=100, type=int)
43
+ #parser.add_argument("--timestep", default=1, type=float)
44
+ parser.add_argument("--sigma", default=0.1, type=float)
45
+ parser.add_argument("--num_samples", default=16, type=int)
46
+ parser.add_argument("--temperature", default=300, type=float)
47
+ parser.add_argument("--friction", default=2.0, type=float)
48
+ parser.add_argument("--rbf", action='store_true', default=False)
49
+ parser.add_argument("--use_delta_to_target", action='store_true', default=False)
50
+ parser.add_argument("--use_gnn", action='store_true', default=False)
51
+ # Training Config
52
+ parser.add_argument("--start_temperature", default=600, type=float)
53
+ parser.add_argument("--end_temperature", default=300, type=float)
54
+ parser.add_argument("--num_rollouts", default=1000, type=int)
55
+ parser.add_argument("--trains_per_rollout", default=1000, type=int)
56
+ parser.add_argument("--log_z_lr", default=1e-3, type=float)
57
+ parser.add_argument("--policy_lr", default=1e-4, type=float)
58
+ parser.add_argument("--batch_size", default=64, type=int)
59
+ parser.add_argument("--buffer_size", default=1000, type=int)
60
+ parser.add_argument("--max_grad_norm", default=1, type=int)
61
+ parser.add_argument("--control_variate", default="global", type=str)
62
+ parser.add_argument("--self_normalize", action='store_true', default=False)
63
+ # path objective
64
+ parser.add_argument("--objective", default="ce", type=str)
65
+ parser.add_argument("--vel_conditioned", action='store_true', default=False)
66
+ parser.add_argument("--dir_only", action='store_true', default=False)
67
+
68
+ # cell experiment
69
+ parser.add_argument("--num_particles", default=16, type=int)
70
+ #parser.add_argument("--gene_dim", default=50, type=int)
71
+ parser.add_argument("--kT", type=float, default=0.0)
72
+ ######### DATASETS #################
73
+ parser = datasets_parser(parser)
74
+
75
+ ######### METRICS ##################
76
+ parser = metric_parser(parser)
77
+
78
+ return parser.parse_args()
79
+
80
+
81
+ def datasets_parser(parser):
82
+ parser.add_argument("--dim", type=int, default=50, help="Dimension of data")
83
+
84
+ parser.add_argument(
85
+ "--data_type",
86
+ type=str,
87
+ default="tahoe",
88
+ help="Type of data, now wither scrna or one of toys",
89
+ )
90
+ parser.add_argument(
91
+ "--data_name",
92
+ type=str,
93
+ default="tahoe",
94
+ help="Path to the dataset",
95
+ )
96
+ return parser
97
+
98
+
99
+ def metric_parser(parser):
100
+ parser.add_argument(
101
+ "--n_centers",
102
+ type=int,
103
+ default=300,
104
+ help="Number of centers for RBF network",
105
+ )
106
+ parser.add_argument(
107
+ "--kappa",
108
+ type=float,
109
+ default=1.5,
110
+ help="Kappa parameter for RBF network",
111
+ )
112
+ parser.add_argument(
113
+ "--rho",
114
+ type=float,
115
+ default=-2.75,
116
+ help="Rho parameter in Riemanian Velocity Calculation",
117
+ )
118
+ parser.add_argument(
119
+ "--velocity_metric",
120
+ type=str,
121
+ default="rbf",
122
+ help="Metric for velocity calculation",
123
+ )
124
+ parser.add_argument(
125
+ "--gamma",
126
+ nargs="+",
127
+ type=float,
128
+ default=0.2,
129
+ help="Gamma parameter in Riemanian Velocity Calculation",
130
+ )
131
+ parser.add_argument(
132
+ "--metric_epochs",
133
+ type=int,
134
+ default=200,
135
+ help="Number of epochs for metric learning",
136
+ )
137
+ parser.add_argument(
138
+ "--metric_patience",
139
+ type=int,
140
+ default=25,
141
+ help="Patience for metric learning",
142
+ )
143
+ parser.add_argument(
144
+ "--metric_lr",
145
+ type=float,
146
+ default=1e-2,
147
+ help="Learning rate for metric learning",
148
+ )
149
+ parser.add_argument(
150
+ "--alpha_metric",
151
+ type=float,
152
+ default=1.0,
153
+ help="Alpha parameter for metric learning",
154
+ )
155
+ return parser
156
+
entangled-cell/scripts/clonidine100.sh ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ HOME_LOC=/path/to/your/home/EntangledSBM
4
+ ENV_LOC=/path/to/your/envs/entangled-cell
5
+ SCRIPT_LOC=$HOME_LOC/entangled-cell
6
+ LOG_LOC=$HOME_LOC/entangled-cell/logs
7
+ DATE=$(date +%m_%d)
8
+ SPECIAL_PREFIX='clonidine-ce-100D'
9
+ PYTHON_EXECUTABLE=$ENV_LOC/bin/python
10
+
11
+ # ===================================================================
12
+ source "$(conda info --base)/etc/profile.d/conda.sh"
13
+ conda activate $ENV_LOC
14
+
15
+ $PYTHON_EXECUTABLE $SCRIPT_LOC/train_cell.py \
16
+ --config_path "$SCRIPT_LOC/configs/clonidine_100D.yaml" \
17
+ --save_dir "$SCRIPT_LOC/results/$DATE-clonidine-ce-100D" \
18
+ --root_dir "$SCRIPT_LOC" \
19
+ --wandb \
20
+ --device "cuda:0" \
21
+ --run_name "clonidine-ce-100D" \
22
+ --date "$DATE-clonidine-ce-100D" \
23
+ --num_rollouts 100 \
24
+ --num_steps 100 \
25
+ --use_delta_to_target \
26
+ --objective "ce" \
27
+ --sigma 0.1 \
28
+ --num_samples 64 \
29
+ --self_normalize \
30
+ --kT 0.05 \
31
+ --unseen \
32
+ --num_particles 16 \
33
+ --batch_size 64 \
34
+ --friction 2.0 \
35
+ --vel_conditioned >> ${LOG_LOC}/${DATE}_${SPECIAL_PREFIX}_train.log 2>&1
36
+
37
+ conda deactivate
entangled-cell/scripts/clonidine150.sh ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ HOME_LOC=/path/to/your/home/EntangledSBM
4
+ ENV_LOC=/path/to/your/envs/entangled-cell
5
+ SCRIPT_LOC=$HOME_LOC/entangled-cell
6
+ LOG_LOC=$HOME_LOC/entangled-cell/logs
7
+ DATE=$(date +%m_%d)
8
+ SPECIAL_PREFIX='clonidine-ce-150D'
9
+ PYTHON_EXECUTABLE=$ENV_LOC/bin/python
10
+
11
+ # ===================================================================
12
+ source "$(conda info --base)/etc/profile.d/conda.sh"
13
+ conda activate $ENV_LOC
14
+
15
+ $PYTHON_EXECUTABLE $SCRIPT_LOC/train_cell.py \
16
+ --config_path "$SCRIPT_LOC/configs/clonidine_150D.yaml" \
17
+ --save_dir "$SCRIPT_LOC/results/$DATE-clonidine-ce-150D" \
18
+ --root_dir "$SCRIPT_LOC" \
19
+ --wandb \
20
+ --device "cuda:0" \
21
+ --run_name "clonidine-ce-150D" \
22
+ --date "$DATE-clonidine-ce-150D" \
23
+ --num_rollouts 100 \
24
+ --num_steps 100 \
25
+ --use_delta_to_target \
26
+ --objective "ce" \
27
+ --sigma 0.1 \
28
+ --num_samples 64 \
29
+ --self_normalize \
30
+ --kT 0.1 \
31
+ --unseen \
32
+ --num_particles 16 \
33
+ --batch_size 64 \
34
+ --friction 2.0 \
35
+ --vel_conditioned >> ${LOG_LOC}/${DATE}_${SPECIAL_PREFIX}_train.log 2>&1
36
+
37
+ conda deactivate
entangled-cell/scripts/clonidine50.sh ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ HOME_LOC=/path/to/your/home/EntangledSBM
4
+ ENV_LOC=/path/to/your/envs/entangled-cell
5
+ SCRIPT_LOC=$HOME_LOC/entangled-cell
6
+ LOG_LOC=$HOME_LOC/entangled-cell/logs
7
+ DATE=$(date +%m_%d)
8
+ SPECIAL_PREFIX='clonidine-ce-50D'
9
+ PYTHON_EXECUTABLE=$ENV_LOC/bin/python
10
+
11
+ # ===================================================================
12
+ source "$(conda info --base)/etc/profile.d/conda.sh"
13
+ conda activate $ENV_LOC
14
+
15
+ $PYTHON_EXECUTABLE $SCRIPT_LOC/train_cell.py \
16
+ --config_path "$SCRIPT_LOC/configs/clonidine_50D.yaml" \
17
+ --save_dir "$SCRIPT_LOC/results/$DATE-clonidine-ce-50D" \
18
+ --root_dir "$SCRIPT_LOC" \
19
+ --wandb \
20
+ --device "cuda:0" \
21
+ --run_name "clonidine-ce-50D" \
22
+ --date "$DATE-clonidine-ce-50D" \
23
+ --num_rollouts 100 \
24
+ --num_steps 100 \
25
+ --use_delta_to_target \
26
+ --objective "ce" \
27
+ --sigma 0.1 \
28
+ --num_samples 64 \
29
+ --self_normalize \
30
+ --kT 0.1 \
31
+ --unseen \
32
+ --num_particles 16 \
33
+ --batch_size 64 \
34
+ --friction 2.0 \
35
+ --vel_conditioned >> ${LOG_LOC}/${DATE}_${SPECIAL_PREFIX}_train.log 2>&1
36
+
37
+ conda deactivate
entangled-cell/scripts/trametinib.sh ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ HOME_LOC=/path/to/your/home/EntangledSBM
4
+ ENV_LOC=/path/to/your/envs/entangled-cell
5
+ SCRIPT_LOC=$HOME_LOC/entangled-cell
6
+ LOG_LOC=$HOME_LOC/entangled-cell/logs
7
+ DATE=$(date +%m_%d)
8
+ SPECIAL_PREFIX='trametinib-ce-50D'
9
+ PYTHON_EXECUTABLE=$ENV_LOC/bin/python
10
+
11
+ # ===================================================================
12
+ source "$(conda info --base)/etc/profile.d/conda.sh"
13
+ conda activate $ENV_LOC
14
+
15
+ $PYTHON_EXECUTABLE $SCRIPT_LOC/train_cell.py \
16
+ --config_path "$SCRIPT_LOC/configs/trametinib_50D.yaml" \
17
+ --save_dir "$SCRIPT_LOC/results/$DATE-trametinib-ce-50D" \
18
+ --root_dir "$SCRIPT_LOC" \
19
+ --wandb \
20
+ --device "cuda:0" \
21
+ --run_name "trametinib-ce-50D" \
22
+ --date "$DATE-trametinib-ce-50D" \
23
+ --num_rollouts 100 \
24
+ --num_steps 100 \
25
+ --use_delta_to_target \
26
+ --objective "ce" \
27
+ --sigma 0.1 \
28
+ --num_samples 64 \
29
+ --self_normalize \
30
+ --kT 0.1 \
31
+ --unseen \
32
+ --num_particles 16 \
33
+ --batch_size 64 \
34
+ --friction 2.0 \
35
+ --vel_conditioned >> ${LOG_LOC}/${DATE}_${SPECIAL_PREFIX}_train.log 2>&1
36
+
37
+ conda deactivate
entangled-cell/train_cell.py ADDED
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import sys
3
+ os.environ["CUDA_VISIBLE_DEVICES"] = "6"
4
+
5
+ import torch
6
+ import wandb
7
+
8
+ from entangledcell_module_unseen import EntangledNetTrainCellUnseen
9
+ from entangledcell_module_three import EntangledNetTrainCellThree
10
+
11
+ # cell
12
+ from dataloaders.three_branch_data import ThreeBranchTahoeDataModule
13
+ from dataloaders.clonidine_v2_data import ClonidineV2DataModule
14
+
15
+ from geo_metrics.metric_factory import DataManifoldMetric
16
+ from pytorch_lightning.loggers import WandbLogger
17
+ from pytorch_lightning import Trainer
18
+
19
+ from torchcfm.optimal_transport import OTPlanSampler
20
+ from parser import parse_args
21
+ from train_utils import load_config, merge_config
22
+ from bias import BiasForceTransformer, BiasForceTransformerNoVel
23
+
24
+ def main():
25
+
26
+ args = parse_args()
27
+ if args.config_path:
28
+ config = load_config(args.config_path)
29
+ args = merge_config(args, config)
30
+
31
+ args.training = True
32
+ args.save_dir = args.save_dir
33
+
34
+ # Create positions directory for saving trajectory samples
35
+ positions_dir = f"{args.save_dir}/positions"
36
+ if not os.path.exists(positions_dir):
37
+ os.makedirs(positions_dir)
38
+
39
+ wandb.init(project="entangled-cell",
40
+ config=args,
41
+ name=args.run_name)
42
+
43
+ torch.manual_seed(args.seed)
44
+
45
+ ot_sampler = (
46
+ OTPlanSampler(method=args.optimal_transport_method)
47
+ if args.optimal_transport_method != "None"
48
+ else None
49
+ )
50
+
51
+ # get data
52
+ if args.data_name == "trametinib":
53
+ datamodule = ThreeBranchTahoeDataModule(args=args)
54
+ else:
55
+ datamodule = ClonidineV2DataModule(args=args)
56
+
57
+ # data manifold metrics
58
+ data_manifold_metric = DataManifoldMetric(
59
+ args=args,
60
+ skipped_time_points=[],
61
+ datamodule=datamodule,
62
+ )
63
+
64
+ if args.vel_conditioned:
65
+ bias_net = BiasForceTransformer(args)
66
+ else:
67
+ print("Using no velocity conditioned model")
68
+ bias_net = BiasForceTransformerNoVel(args)
69
+
70
+ timepoint_data = datamodule.get_timepoint_data()
71
+
72
+ if args.data_name == "trametinib":
73
+ entangled_train = EntangledNetTrainCellThree(args=args,
74
+ bias_net=bias_net,
75
+ data_manifold_metric=data_manifold_metric,
76
+ timepoint_data=timepoint_data,
77
+ ot_sampler=ot_sampler,
78
+ vel_conditioned=args.vel_conditioned)
79
+ else:
80
+ entangled_train = EntangledNetTrainCellUnseen(args=args,
81
+ bias_net=bias_net,
82
+ data_manifold_metric=data_manifold_metric,
83
+ timepoint_data=timepoint_data,
84
+ ot_sampler=ot_sampler,
85
+ vel_conditioned=args.vel_conditioned)
86
+
87
+ wandb_logger = WandbLogger()
88
+
89
+ trainer = Trainer(
90
+ max_epochs=args.num_rollouts,
91
+ logger=wandb_logger,
92
+ num_sanity_val_steps=0,
93
+ default_root_dir=args.root_dir,
94
+ gradient_clip_val=None,
95
+ devices=[0],
96
+ )
97
+
98
+ trainer.fit(
99
+ entangled_train, datamodule=datamodule
100
+ )
101
+ trainer.test(entangled_train, datamodule=datamodule)
102
+
103
+ if __name__ == "__main__":
104
+ main()
entangled-cell/train_utils.py ADDED
@@ -0,0 +1,115 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import yaml
2
+ import string
3
+ import secrets
4
+ import os
5
+
6
+ import torch
7
+ import wandb
8
+ from pytorch_lightning.callbacks import Callback, EarlyStopping, ModelCheckpoint
9
+ from torchdyn.core import NeuralODE
10
+
11
+ import torch
12
+
13
+ @torch.no_grad()
14
+ def gather_local_starts(x0s, X0_pool, N, k=64):
15
+ # for each anchor b, take its k-NN from pool, then sample N distinct
16
+ B, G = x0s.shape
17
+ d2 = torch.cdist(x0s, X0_pool).pow(2) # (B, M0)
18
+ knn_idx = d2.topk(k=min(k, X0_pool.size(0)), largest=False).indices # (B,k)
19
+ x0_clusters = []
20
+ for b in range(B):
21
+ choices = knn_idx[b]
22
+ pick = choices[torch.randperm(choices.numel(), device=choices.device)[:N]]
23
+ x0_clusters.append(X0_pool[pick]) # (N,G)
24
+ return torch.stack(x0_clusters, dim=0) # (B,N,G)
25
+
26
+ @torch.no_grad()
27
+ def make_aligned_clusters(ot_sampler, x0s, x1s, N, replace=True, k_local=128):
28
+
29
+ device, dtype = x0s.device, x0s.dtype
30
+
31
+ B, G = x0s.shape
32
+ M = x1s.shape[0]
33
+ # Use gather_local_starts to get N distinct cells for each source
34
+ x0_clusters = gather_local_starts(x0s, x0s, N, k=k_local).to(device=device, dtype=dtype)
35
+ x1_clusters = torch.empty((B, N, G), device=device, dtype=dtype)
36
+ idx1 = torch.empty((B, N), device=device, dtype=torch.long)
37
+
38
+ # Try to get a full coupling once (preferred: row-stochastic matrix P of shape (B, M))
39
+ P = None
40
+ if hasattr(ot_sampler, "coupling"):
41
+ P = ot_sampler.coupling(x0s, x1s) # expected (B, M) torch tensor
42
+ elif hasattr(ot_sampler, "plan"):
43
+ P = ot_sampler.plan(x0s, x1s) # same expectation
44
+ # If your ot_sampler only supports sampling, we’ll fall back row-by-row below.
45
+
46
+ for b in range(B):
47
+ x0_b = x0s[b:b+1] # (1, G)
48
+
49
+ if P is not None:
50
+ # --- Sample N targets from the row distribution P[b] ---
51
+ probs = P[b].clamp_min(0)
52
+ probs = probs / probs.sum().clamp_min(1e-12)
53
+ if replace:
54
+ j = torch.multinomial(probs, num_samples=N, replacement=True) # (N,)
55
+ else:
56
+ k = min(N, (probs > 0).sum().item())
57
+ j = torch.multinomial(probs, num_samples=k, replacement=False)
58
+ if k < N: # pad by repeating the last choice to keep shape
59
+ j = torch.cat([j, j[-1:].expand(N-k)], dim=0)
60
+ x1_match = x1s[j] # (N, G)
61
+ else:
62
+ # --- Row-wise fallback using sampler’s own sampling API ---
63
+ # Try to ask for N pairs at once
64
+ got = False
65
+ if hasattr(ot_sampler, "sample_plan"):
66
+ try:
67
+ # many samplers support an argument like n_pairs / k / n
68
+ x0_rep, x1_match = ot_sampler.sample_plan(
69
+ x0_b, x1s, replace=replace, n_pairs=N
70
+ )
71
+ # x0_rep: (N, G) or (1, N, G) -> squeeze if needed
72
+ x1_match = x1_match.view(N, G)
73
+ got = True
74
+ except TypeError:
75
+ pass
76
+ if not got:
77
+ # last resort: call sample_plan N times
78
+ xs, ys, js = [], [], []
79
+ for _ in range(N):
80
+ x0_rep, x1_one = ot_sampler.sample_plan(x0_b, x1s, replace=replace)
81
+ # infer index by nearest neighbor for bookkeeping (optional)
82
+ j_hat = torch.cdist(x1_one.view(1, -1), x1s).argmin()
83
+ xs.append(x0_rep.view(1, G))
84
+ ys.append(x1_one.view(1, G))
85
+ js.append(j_hat.view(1))
86
+ x1_match = torch.cat(ys, dim=0)
87
+ j = torch.cat(js, dim=0)
88
+
89
+ # Fill clusters (source row replicated N times)
90
+ #x0_clusters[b] = x0_b.expand(N, G)
91
+ x1_clusters[b] = x1_match
92
+ idx1[b] = j
93
+
94
+ return x0_clusters, x1_clusters, idx1
95
+
96
+
97
+ def load_config(path):
98
+ with open(path, "r") as file:
99
+ config = yaml.safe_load(file)
100
+ return config
101
+
102
+
103
+ def merge_config(args, config_updates):
104
+ for key, value in config_updates.items():
105
+ if not hasattr(args, key):
106
+ raise ValueError(
107
+ f"Unknown configuration parameter '{key}' found in the config file."
108
+ )
109
+ setattr(args, key, value)
110
+ return args
111
+
112
+
113
+ def generate_group_string(length=16):
114
+ alphabet = string.ascii_letters + string.digits
115
+ return "".join(secrets.choice(alphabet) for _ in range(length))
entangled-tps/README.md ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # EntangledSBM for Transition Path Sampling ⚛️ 
2
+
3
+ This part of the code is for running the transition path sampling (TPS) experiments. We demonstrate that EntanlgedSBM generates physically plausible transition paths for fast-folding proteins at an **all-atom resolution**. This codebase is partially built off of the [TPS-DPS repo](https://github.com/kiyoung98/tps-dps/tree/main).
4
+
5
+ ## Environment Installation
6
+ ```
7
+ conda env create -f environment.yml
8
+
9
+ conda activate entangled-tps
10
+ ```
11
+
12
+ ## Running Experiments
13
+
14
+ All training scripts are located in `entangled-tps/scripts/`. Each script is pre-configured for a specific experiment.
15
+
16
+ **Before running experiments:**
17
+
18
+ 1. Set `HOME_LOC` to the base path where EntangledSBM is located and `ENV_PATH` to the directory where your environment is downloaded in the `.bash` files in `scripts/`
19
+ 2. Replace `/path/to/your/home` to the base path where EntangledSBM is located in the `.slurm` files in `scripts/`
20
+ 3. Create a path `entangled-tps/results` where the simulated trajectory figures and metrics will be saved. Also, create `entangled-tps/logs` where the training logs will be saved.
21
+ 4. Activate the conda environment:
22
+ ```
23
+ conda activate entangled-tps
24
+ ```
25
+ 5. Login to wandb using `wandb login`
26
+
27
+ **Run experiment using `nohup` with the following commands:**
28
+
29
+ ```
30
+ cd entangled-tps/scripts
31
+
32
+ chmod aldp.sh
33
+
34
+ nohup ./aldp.sh > aldp.log 2>&1 &
35
+ ```
36
+ **Run experiment using `slurm` with the following commands:**
37
+ ```
38
+ cd entangled-tps/scripts
39
+
40
+ sbatch aldp.slurm
41
+ ```
42
+
43
+ Evaluation will run automatically after each sampling step and logged with wandb.
44
+
45
+ We report the following metrics in our paper:
46
+ 1. Root-Mean Squared Distance **(RMSD)** of the Kabsch-aligned coordinates averaged across 64 paths.
47
+ 2. Percentage of simulated trajectories that hit the target state **(THP)**
48
+ 3. Highest energy transition state along the biased trajectories averaged across the trajectories that hit the target **(ETS; kJ/mol)**
49
+
50
+ ## Overview of Outputs
51
+
52
+ **Training outputs are saved to experiment-specific directories:**
53
+
54
+ ```
55
+ entangled-tps/results/
56
+ ├── aldp_ce/
57
+ │ └── positions/ # Generated trajectory
58
+ │ └── paths.png # Figure of simulated trajectories
59
+ │ └── policy.pt # Model checkpoint
60
+ ```
61
+
62
+ **Training logs are saved in:**
63
+ ```
64
+ entangled-tps/logs/
65
+ ├── <DATE>_entangled-aldp-ce.log
66
+ ├── <DATE>_entangled-chignolin-ce.log
67
+ ├── <DATE>_entangled-trpcage-ce.log
68
+ └── <DATE>_entangled-bba-ce.log
69
+ ```
entangled-tps/data/aldp/c5.pdb ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ REMARK 1 CREATED WITH OPENMM 7.1.1, 2017-09-12
2
+ CRYST1 25.580 25.580 25.580 90.00 90.00 90.00 P 1 1
3
+ HETATM 1 H1 ACE A 1 19.745 3.573 20.603 1.00 0.00 H
4
+ HETATM 2 CH3 ACE A 1 18.882 3.072 21.040 1.00 0.00 C
5
+ HETATM 3 H2 ACE A 1 19.299 2.583 21.920 1.00 0.00 H
6
+ HETATM 4 H3 ACE A 1 18.428 2.368 20.342 1.00 0.00 H
7
+ HETATM 5 C ACE A 1 17.901 4.069 21.635 1.00 0.00 C
8
+ HETATM 6 O ACE A 1 16.732 3.819 21.870 1.00 0.00 O
9
+ ATOM 7 N ALA A 2 18.376 5.305 21.721 1.00 0.00 N
10
+ ATOM 8 H ALA A 2 19.385 5.264 21.729 1.00 0.00 H
11
+ ATOM 9 CA ALA A 2 17.741 6.537 22.185 1.00 0.00 C
12
+ ATOM 10 HA ALA A 2 16.674 6.456 21.975 1.00 0.00 H
13
+ ATOM 11 CB ALA A 2 18.128 6.686 23.697 1.00 0.00 C
14
+ ATOM 12 HB1 ALA A 2 17.646 7.564 24.127 1.00 0.00 H
15
+ ATOM 13 HB2 ALA A 2 19.202 6.812 23.836 1.00 0.00 H
16
+ ATOM 14 HB3 ALA A 2 17.804 5.840 24.302 1.00 0.00 H
17
+ ATOM 15 C ALA A 2 18.239 7.806 21.423 1.00 0.00 C
18
+ ATOM 16 O ALA A 2 19.120 7.699 20.619 1.00 0.00 O
19
+ HETATM 17 N NME A 3 17.667 8.950 21.653 1.00 0.00 N
20
+ HETATM 18 H NME A 3 16.917 8.869 22.326 1.00 0.00 H
21
+ HETATM 19 C NME A 3 17.764 10.096 20.832 1.00 0.00 C
22
+ HETATM 20 H1 NME A 3 16.789 10.514 20.583 1.00 0.00 H
23
+ HETATM 21 H2 NME A 3 18.366 10.885 21.283 1.00 0.00 H
24
+ HETATM 22 H3 NME A 3 18.270 9.740 19.934 1.00 0.00 H
25
+ TER 23 NME A 3
26
+
27
+ CONECT 1 2
28
+ CONECT 2 5 1 3 4
29
+ CONECT 3 2
30
+ CONECT 4 2
31
+ CONECT 5 2 6 7
32
+ CONECT 6 5
33
+ CONECT 7 5
34
+ CONECT 15 17
35
+ CONECT 17 15 19 18
36
+ CONECT 18 17
37
+ CONECT 19 20 21 22 17
38
+ CONECT 20 19
39
+ CONECT 21 19
40
+ CONECT 22 19
41
+ END
entangled-tps/data/aldp/c7ax.pdb ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ REMARK 1 CREATED WITH MDTraj 1.9.6, 2021-09-14
2
+ CRYST1 20.233 20.233 20.233 90.00 90.00 90.00 P 1 1
3
+ MODEL 0
4
+ ATOM 1 H1 ACE A 1 16.734 13.798 -5.063 1.00 0.00 H
5
+ ATOM 2 CH3 ACE A 1 16.819 14.884 -5.024 1.00 0.00 C
6
+ ATOM 3 H2 ACE A 1 16.937 15.273 -6.035 1.00 0.00 H
7
+ ATOM 4 H3 ACE A 1 17.584 15.382 -4.428 1.00 0.00 H
8
+ ATOM 5 C ACE A 1 15.448 15.348 -4.527 1.00 0.00 C
9
+ ATOM 6 O ACE A 1 14.509 14.546 -4.680 1.00 0.00 O
10
+ ATOM 7 N ALA A 2 15.389 16.468 -3.821 1.00 0.00 N
11
+ ATOM 8 H ALA A 2 16.258 16.974 -3.728 1.00 0.00 H
12
+ ATOM 9 CA ALA A 2 14.180 16.968 -3.207 1.00 0.00 C
13
+ ATOM 10 HA ALA A 2 14.400 17.953 -2.796 1.00 0.00 H
14
+ ATOM 11 CB ALA A 2 13.100 17.348 -4.367 1.00 0.00 C
15
+ ATOM 12 HB1 ALA A 2 12.345 17.906 -3.814 1.00 0.00 H
16
+ ATOM 13 HB2 ALA A 2 13.561 18.014 -5.097 1.00 0.00 H
17
+ ATOM 14 HB3 ALA A 2 12.594 16.544 -4.900 1.00 0.00 H
18
+ ATOM 15 C ALA A 2 13.562 16.147 -2.110 1.00 0.00 C
19
+ ATOM 16 O ALA A 2 12.413 16.349 -1.656 1.00 0.00 O
20
+ ATOM 17 N NME A 3 14.353 15.212 -1.508 1.00 0.00 N
21
+ ATOM 18 H NME A 3 15.281 15.107 -1.892 1.00 0.00 H
22
+ ATOM 19 C NME A 3 13.880 14.275 -0.463 1.00 0.00 C
23
+ ATOM 20 H1 NME A 3 14.433 13.336 -0.485 1.00 0.00 H
24
+ ATOM 21 H2 NME A 3 13.926 14.785 0.499 1.00 0.00 H
25
+ ATOM 22 H3 NME A 3 12.874 13.900 -0.652 1.00 0.00 H
26
+ TER 23 NME A 3
27
+ ENDMDL
28
+ CONECT 1 2 2
29
+ CONECT 2 5 1 3
30
+ CONECT 2 1 5 3 4
31
+ CONECT 3 2 2
32
+ CONECT 4 2 2
33
+ CONECT 5 2 6 7
34
+ CONECT 5 6 7
35
+ CONECT 6 5 5
36
+ CONECT 7 5 5
37
+ CONECT 15 17 17
38
+ CONECT 17 15 19 18
39
+ CONECT 17 19 18
40
+ CONECT 18 17 17
41
+ CONECT 19 20 21 22
42
+ CONECT 19 17 20 21 22
43
+ CONECT 20 19 19
44
+ CONECT 21 19 19
45
+ CONECT 22 19 19
46
+ END
entangled-tps/data/aldp/landscape.dat ADDED
The diff for this file is too large to render. See raw diff
 
entangled-tps/data/aldp/path.gro ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1d4172aa7cba65dc8422ba41f104a25dcc7c44b903cfa64dc92e01c1dbf891f5
3
+ size 573110
entangled-tps/data/bba/folded.pdb ADDED
@@ -0,0 +1,515 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ TITLE MDANALYSIS FRAMES FROM 0, STEP 1: Created by PDBWriter
2
+ CRYST1 50.000 50.000 50.000 90.00 90.00 90.00 P 1 1
3
+ REMARK 285 UNITARY VALUES FOR THE UNIT CELL AUTOMATICALLY SET
4
+ REMARK 285 BY MDANALYSIS PDBWRITER BECAUSE UNIT CELL INFORMATION
5
+ REMARK 285 WAS MISSING.
6
+ REMARK 285 PROTEIN DATA BANK CONVENTIONS REQUIRE THAT
7
+ REMARK 285 CRYST1 RECORD IS INCLUDED, BUT THE VALUES ON
8
+ REMARK 285 THIS RECORD ARE MEANINGLESS.
9
+ MODEL 1
10
+ ATOM 1 N GLU A 1 -13.277 11.380 -1.109 1.00 0.00 A N
11
+ ATOM 2 CA GLU A 1 -13.673 10.089 -0.459 1.00 0.00 A C
12
+ ATOM 3 C GLU A 1 -12.444 9.311 -0.154 1.00 0.00 A C
13
+ ATOM 4 O GLU A 1 -11.501 9.407 -0.873 1.00 0.00 A O
14
+ ATOM 5 CB GLU A 1 -14.431 9.389 -1.565 1.00 0.00 A C
15
+ ATOM 6 CG GLU A 1 -15.087 7.999 -1.193 1.00 0.00 A C
16
+ ATOM 7 CD GLU A 1 -15.962 7.965 0.100 1.00 0.00 A C
17
+ ATOM 8 OE1 GLU A 1 -15.508 8.544 1.143 1.00 0.00 A O
18
+ ATOM 9 OE2 GLU A 1 -17.001 7.222 0.180 1.00 0.00 A O
19
+ ATOM 10 H1 GLU A 1 -13.952 11.889 -1.662 1.00 0.00 A H
20
+ ATOM 11 H2 GLU A 1 -12.498 11.203 -1.726 1.00 0.00 A H
21
+ ATOM 12 H3 GLU A 1 -12.975 12.076 -0.443 1.00 0.00 A H
22
+ ATOM 13 HA GLU A 1 -14.346 10.228 0.387 1.00 0.00 A H
23
+ ATOM 14 HB2 GLU A 1 -15.243 10.059 -1.848 1.00 0.00 A H
24
+ ATOM 15 HB3 GLU A 1 -13.776 9.282 -2.430 1.00 0.00 A H
25
+ ATOM 16 HG2 GLU A 1 -15.782 7.788 -2.006 1.00 0.00 A H
26
+ ATOM 17 HG3 GLU A 1 -14.445 7.125 -1.088 1.00 0.00 A H
27
+ ATOM 18 N GLN A 2 -12.539 8.460 0.848 1.00 0.00 A N
28
+ ATOM 19 CA GLN A 2 -11.462 7.529 1.160 1.00 0.00 A C
29
+ ATOM 20 C GLN A 2 -11.681 6.117 0.379 1.00 0.00 A C
30
+ ATOM 21 O GLN A 2 -12.740 5.905 -0.186 1.00 0.00 A O
31
+ ATOM 22 CB GLN A 2 -11.340 7.287 2.608 1.00 0.00 A C
32
+ ATOM 23 CG GLN A 2 -10.881 8.536 3.381 1.00 0.00 A C
33
+ ATOM 24 CD GLN A 2 -10.778 8.409 4.966 1.00 0.00 A C
34
+ ATOM 25 OE1 GLN A 2 -9.877 8.877 5.604 1.00 0.00 A O
35
+ ATOM 26 NE2 GLN A 2 -11.661 7.721 5.593 1.00 0.00 A N
36
+ ATOM 27 H GLN A 2 -13.423 8.411 1.333 1.00 0.00 A H
37
+ ATOM 28 HA GLN A 2 -10.461 7.863 0.884 1.00 0.00 A H
38
+ ATOM 29 HB2 GLN A 2 -12.336 6.958 2.904 1.00 0.00 A H
39
+ ATOM 30 HB3 GLN A 2 -10.764 6.376 2.774 1.00 0.00 A H
40
+ ATOM 31 HG2 GLN A 2 -9.865 8.759 3.057 1.00 0.00 A H
41
+ ATOM 32 HG3 GLN A 2 -11.577 9.354 3.192 1.00 0.00 A H
42
+ ATOM 33 HE21 GLN A 2 -12.262 7.143 5.025 1.00 0.00 A H
43
+ ATOM 34 HE22 GLN A 2 -11.946 8.161 6.456 1.00 0.00 A H
44
+ ATOM 35 N TYR A 3 -10.671 5.132 0.478 1.00 0.00 A N
45
+ ATOM 36 CA TYR A 3 -10.647 3.992 -0.522 1.00 0.00 A C
46
+ ATOM 37 C TYR A 3 -10.323 2.663 0.071 1.00 0.00 A C
47
+ ATOM 38 O TYR A 3 -9.702 2.530 1.150 1.00 0.00 A O
48
+ ATOM 39 CB TYR A 3 -9.737 4.333 -1.691 1.00 0.00 A C
49
+ ATOM 40 CG TYR A 3 -8.334 4.976 -1.479 1.00 0.00 A C
50
+ ATOM 41 CD1 TYR A 3 -7.522 4.494 -0.405 1.00 0.00 A C
51
+ ATOM 42 CD2 TYR A 3 -7.947 6.112 -2.082 1.00 0.00 A C
52
+ ATOM 43 CE1 TYR A 3 -6.407 5.224 0.000 1.00 0.00 A C
53
+ ATOM 44 CE2 TYR A 3 -6.800 6.827 -1.778 1.00 0.00 A C
54
+ ATOM 45 CZ TYR A 3 -5.951 6.325 -0.743 1.00 0.00 A C
55
+ ATOM 46 OH TYR A 3 -4.797 7.008 -0.456 1.00 0.00 A O
56
+ ATOM 47 H TYR A 3 -9.812 5.408 0.930 1.00 0.00 A H
57
+ ATOM 48 HA TYR A 3 -11.621 3.943 -1.010 1.00 0.00 A H
58
+ ATOM 49 HB2 TYR A 3 -9.632 3.481 -2.363 1.00 0.00 A H
59
+ ATOM 50 HB3 TYR A 3 -10.347 5.039 -2.255 1.00 0.00 A H
60
+ ATOM 51 HD1 TYR A 3 -7.872 3.651 0.170 1.00 0.00 A H
61
+ ATOM 52 HD2 TYR A 3 -8.666 6.587 -2.732 1.00 0.00 A H
62
+ ATOM 53 HE1 TYR A 3 -5.826 4.957 0.871 1.00 0.00 A H
63
+ ATOM 54 HE2 TYR A 3 -6.580 7.815 -2.155 1.00 0.00 A H
64
+ ATOM 55 HH TYR A 3 -4.553 7.654 -1.123 1.00 0.00 A H
65
+ ATOM 56 N THR A 4 -10.666 1.616 -0.767 1.00 0.00 A N
66
+ ATOM 57 CA THR A 4 -10.382 0.214 -0.468 1.00 0.00 A C
67
+ ATOM 58 C THR A 4 -9.155 -0.295 -1.285 1.00 0.00 A C
68
+ ATOM 59 O THR A 4 -9.217 -1.388 -1.854 1.00 0.00 A O
69
+ ATOM 60 CB THR A 4 -11.648 -0.576 -0.740 1.00 0.00 A C
70
+ ATOM 61 OG1 THR A 4 -11.955 -0.560 -2.119 1.00 0.00 A O
71
+ ATOM 62 CG2 THR A 4 -12.888 0.019 -0.120 1.00 0.00 A C
72
+ ATOM 63 H THR A 4 -11.258 1.671 -1.583 1.00 0.00 A H
73
+ ATOM 64 HA THR A 4 -10.082 0.180 0.580 1.00 0.00 A H
74
+ ATOM 65 HB THR A 4 -11.676 -1.591 -0.343 1.00 0.00 A H
75
+ ATOM 66 HG1 THR A 4 -11.191 -0.935 -2.562 1.00 0.00 A H
76
+ ATOM 67 HG21 THR A 4 -12.695 0.293 0.918 1.00 0.00 A H
77
+ ATOM 68 HG22 THR A 4 -13.646 -0.754 0.004 1.00 0.00 A H
78
+ ATOM 69 HG23 THR A 4 -13.160 0.786 -0.845 1.00 0.00 A H
79
+ ATOM 70 N ALA A 5 -8.103 0.531 -1.348 1.00 0.00 A N
80
+ ATOM 71 CA ALA A 5 -6.841 0.236 -1.991 1.00 0.00 A C
81
+ ATOM 72 C ALA A 5 -6.291 -1.202 -1.731 1.00 0.00 A C
82
+ ATOM 73 O ALA A 5 -5.558 -1.413 -0.746 1.00 0.00 A O
83
+ ATOM 74 CB ALA A 5 -5.846 1.317 -1.458 1.00 0.00 A C
84
+ ATOM 75 H ALA A 5 -8.296 1.477 -1.050 1.00 0.00 A H
85
+ ATOM 76 HA ALA A 5 -6.980 0.529 -3.032 1.00 0.00 A H
86
+ ATOM 77 HB1 ALA A 5 -6.405 2.214 -1.725 1.00 0.00 A H
87
+ ATOM 78 HB2 ALA A 5 -4.933 1.269 -2.051 1.00 0.00 A H
88
+ ATOM 79 HB3 ALA A 5 -5.717 1.260 -0.377 1.00 0.00 A H
89
+ ATOM 80 N LYS A 6 -6.602 -2.216 -2.595 1.00 0.00 A N
90
+ ATOM 81 CA LYS A 6 -6.165 -3.599 -2.409 1.00 0.00 A C
91
+ ATOM 82 C LYS A 6 -5.255 -4.211 -3.485 1.00 0.00 A C
92
+ ATOM 83 O LYS A 6 -5.318 -3.902 -4.664 1.00 0.00 A O
93
+ ATOM 84 CB LYS A 6 -7.414 -4.509 -2.311 1.00 0.00 A C
94
+ ATOM 85 CG LYS A 6 -8.462 -4.381 -3.436 1.00 0.00 A C
95
+ ATOM 86 CD LYS A 6 -9.654 -5.208 -3.189 1.00 0.00 A C
96
+ ATOM 87 CE LYS A 6 -10.882 -4.772 -3.998 1.00 0.00 A C
97
+ ATOM 88 NZ LYS A 6 -10.835 -5.035 -5.467 1.00 0.00 A N
98
+ ATOM 89 H LYS A 6 -7.221 -2.093 -3.384 1.00 0.00 A H
99
+ ATOM 90 HA LYS A 6 -5.588 -3.739 -1.495 1.00 0.00 A H
100
+ ATOM 91 HB2 LYS A 6 -7.128 -5.560 -2.366 1.00 0.00 A H
101
+ ATOM 92 HB3 LYS A 6 -7.884 -4.216 -1.372 1.00 0.00 A H
102
+ ATOM 93 HG2 LYS A 6 -8.806 -3.354 -3.555 1.00 0.00 A H
103
+ ATOM 94 HG3 LYS A 6 -8.043 -4.639 -4.408 1.00 0.00 A H
104
+ ATOM 95 HD2 LYS A 6 -9.395 -6.255 -3.351 1.00 0.00 A H
105
+ ATOM 96 HD3 LYS A 6 -9.957 -5.064 -2.152 1.00 0.00 A H
106
+ ATOM 97 HE2 LYS A 6 -11.686 -5.378 -3.580 1.00 0.00 A H
107
+ ATOM 98 HE3 LYS A 6 -11.077 -3.703 -3.922 1.00 0.00 A H
108
+ ATOM 99 HZ1 LYS A 6 -10.564 -5.988 -5.663 1.00 0.00 A H
109
+ ATOM 100 HZ2 LYS A 6 -10.147 -4.419 -5.877 1.00 0.00 A H
110
+ ATOM 101 HZ3 LYS A 6 -11.729 -4.848 -5.899 1.00 0.00 A H
111
+ ATOM 102 N TYR A 7 -4.306 -5.072 -3.002 1.00 0.00 A N
112
+ ATOM 103 CA TYR A 7 -3.109 -5.382 -3.677 1.00 0.00 A C
113
+ ATOM 104 C TYR A 7 -2.660 -6.862 -3.301 1.00 0.00 A C
114
+ ATOM 105 O TYR A 7 -3.302 -7.611 -2.551 1.00 0.00 A O
115
+ ATOM 106 CB TYR A 7 -1.989 -4.512 -3.335 1.00 0.00 A C
116
+ ATOM 107 CG TYR A 7 -2.096 -3.076 -3.848 1.00 0.00 A C
117
+ ATOM 108 CD1 TYR A 7 -2.737 -2.165 -2.998 1.00 0.00 A C
118
+ ATOM 109 CD2 TYR A 7 -1.710 -2.735 -5.165 1.00 0.00 A C
119
+ ATOM 110 CE1 TYR A 7 -2.924 -0.866 -3.472 1.00 0.00 A C
120
+ ATOM 111 CE2 TYR A 7 -2.063 -1.424 -5.653 1.00 0.00 A C
121
+ ATOM 112 CZ TYR A 7 -2.617 -0.484 -4.786 1.00 0.00 A C
122
+ ATOM 113 OH TYR A 7 -2.967 0.733 -5.181 1.00 0.00 A O
123
+ ATOM 114 H TYR A 7 -4.343 -5.298 -2.018 1.00 0.00 A H
124
+ ATOM 115 HA TYR A 7 -3.259 -5.209 -4.742 1.00 0.00 A H
125
+ ATOM 116 HB2 TYR A 7 -1.762 -4.620 -2.275 1.00 0.00 A H
126
+ ATOM 117 HB3 TYR A 7 -1.125 -4.956 -3.829 1.00 0.00 A H
127
+ ATOM 118 HD1 TYR A 7 -2.993 -2.379 -1.971 1.00 0.00 A H
128
+ ATOM 119 HD2 TYR A 7 -1.251 -3.476 -5.803 1.00 0.00 A H
129
+ ATOM 120 HE1 TYR A 7 -3.478 -0.243 -2.785 1.00 0.00 A H
130
+ ATOM 121 HE2 TYR A 7 -2.021 -1.291 -6.724 1.00 0.00 A H
131
+ ATOM 122 HH TYR A 7 -2.782 1.432 -4.549 1.00 0.00 A H
132
+ ATOM 123 N LYS A 8 -1.529 -7.469 -3.831 1.00 0.00 A N
133
+ ATOM 124 CA LYS A 8 -0.846 -8.822 -3.561 1.00 0.00 A C
134
+ ATOM 125 C LYS A 8 -0.628 -9.270 -2.083 1.00 0.00 A C
135
+ ATOM 126 O LYS A 8 0.441 -9.097 -1.543 1.00 0.00 A O
136
+ ATOM 127 CB LYS A 8 0.452 -9.065 -4.389 1.00 0.00 A C
137
+ ATOM 128 CG LYS A 8 0.247 -8.653 -5.895 1.00 0.00 A C
138
+ ATOM 129 CD LYS A 8 -0.878 -9.429 -6.507 1.00 0.00 A C
139
+ ATOM 130 CE LYS A 8 -0.360 -10.870 -6.624 1.00 0.00 A C
140
+ ATOM 131 NZ LYS A 8 -0.859 -11.596 -7.842 1.00 0.00 A N
141
+ ATOM 132 H LYS A 8 -0.997 -6.881 -4.456 1.00 0.00 A H
142
+ ATOM 133 HA LYS A 8 -1.485 -9.636 -3.903 1.00 0.00 A H
143
+ ATOM 134 HB2 LYS A 8 1.244 -8.375 -4.098 1.00 0.00 A H
144
+ ATOM 135 HB3 LYS A 8 0.780 -10.099 -4.282 1.00 0.00 A H
145
+ ATOM 136 HG2 LYS A 8 0.009 -7.592 -5.818 1.00 0.00 A H
146
+ ATOM 137 HG3 LYS A 8 1.129 -8.879 -6.493 1.00 0.00 A H
147
+ ATOM 138 HD2 LYS A 8 -1.790 -9.524 -5.918 1.00 0.00 A H
148
+ ATOM 139 HD3 LYS A 8 -1.230 -8.961 -7.427 1.00 0.00 A H
149
+ ATOM 140 HE2 LYS A 8 0.717 -10.955 -6.766 1.00 0.00 A H
150
+ ATOM 141 HE3 LYS A 8 -0.558 -11.306 -5.645 1.00 0.00 A H
151
+ ATOM 142 HZ1 LYS A 8 -1.787 -11.989 -7.774 1.00 0.00 A H
152
+ ATOM 143 HZ2 LYS A 8 -0.251 -12.398 -7.914 1.00 0.00 A H
153
+ ATOM 144 HZ3 LYS A 8 -0.781 -11.178 -8.758 1.00 0.00 A H
154
+ ATOM 145 N GLY A 9 -1.729 -9.823 -1.564 1.00 0.00 A N
155
+ ATOM 146 CA GLY A 9 -1.879 -10.239 -0.128 1.00 0.00 A C
156
+ ATOM 147 C GLY A 9 -2.642 -9.065 0.667 1.00 0.00 A C
157
+ ATOM 148 O GLY A 9 -3.771 -9.220 1.186 1.00 0.00 A O
158
+ ATOM 149 H GLY A 9 -2.560 -9.671 -2.118 1.00 0.00 A H
159
+ ATOM 150 HA2 GLY A 9 -2.410 -11.189 -0.192 1.00 0.00 A H
160
+ ATOM 151 HA3 GLY A 9 -0.864 -10.376 0.244 1.00 0.00 A H
161
+ ATOM 152 N ARG A 10 -1.969 -7.942 0.825 1.00 0.00 A N
162
+ ATOM 153 CA ARG A 10 -2.255 -6.824 1.680 1.00 0.00 A C
163
+ ATOM 154 C ARG A 10 -3.417 -5.930 1.177 1.00 0.00 A C
164
+ ATOM 155 O ARG A 10 -3.814 -6.103 0.033 1.00 0.00 A O
165
+ ATOM 156 CB ARG A 10 -1.001 -6.087 1.945 1.00 0.00 A C
166
+ ATOM 157 CG ARG A 10 0.133 -6.942 2.378 1.00 0.00 A C
167
+ ATOM 158 CD ARG A 10 1.471 -6.179 2.704 1.00 0.00 A C
168
+ ATOM 159 NE ARG A 10 2.580 -7.172 2.862 1.00 0.00 A N
169
+ ATOM 160 CZ ARG A 10 3.448 -7.127 3.869 1.00 0.00 A C
170
+ ATOM 161 NH1 ARG A 10 3.418 -6.106 4.692 1.00 0.00 A N
171
+ ATOM 162 NH2 ARG A 10 4.282 -8.045 3.991 1.00 0.00 A N
172
+ ATOM 163 H ARG A 10 -1.272 -7.764 0.117 1.00 0.00 A H
173
+ ATOM 164 HA ARG A 10 -2.529 -7.169 2.677 1.00 0.00 A H
174
+ ATOM 165 HB2 ARG A 10 -0.725 -5.653 0.985 1.00 0.00 A H
175
+ ATOM 166 HB3 ARG A 10 -1.127 -5.280 2.667 1.00 0.00 A H
176
+ ATOM 167 HG2 ARG A 10 -0.140 -7.723 3.087 1.00 0.00 A H
177
+ ATOM 168 HG3 ARG A 10 0.361 -7.641 1.573 1.00 0.00 A H
178
+ ATOM 169 HD2 ARG A 10 1.952 -5.548 1.957 1.00 0.00 A H
179
+ ATOM 170 HD3 ARG A 10 1.410 -5.594 3.622 1.00 0.00 A H
180
+ ATOM 171 HE ARG A 10 2.555 -8.054 2.370 1.00 0.00 A H
181
+ ATOM 172 HH11 ARG A 10 2.625 -5.489 4.584 1.00 0.00 A H
182
+ ATOM 173 HH12 ARG A 10 4.077 -6.065 5.456 1.00 0.00 A H
183
+ ATOM 174 HH21 ARG A 10 4.416 -8.618 3.170 1.00 0.00 A H
184
+ ATOM 175 HH22 ARG A 10 4.872 -8.176 4.800 1.00 0.00 A H
185
+ ATOM 176 N THR A 11 -4.061 -5.162 2.093 1.00 0.00 A N
186
+ ATOM 177 CA THR A 11 -4.972 -4.020 1.735 1.00 0.00 A C
187
+ ATOM 178 C THR A 11 -4.988 -2.916 2.847 1.00 0.00 A C
188
+ ATOM 179 O THR A 11 -4.888 -3.198 4.082 1.00 0.00 A O
189
+ ATOM 180 CB THR A 11 -6.352 -4.591 1.726 1.00 0.00 A C
190
+ ATOM 181 OG1 THR A 11 -6.465 -5.376 0.508 1.00 0.00 A O
191
+ ATOM 182 CG2 THR A 11 -7.476 -3.619 1.977 1.00 0.00 A C
192
+ ATOM 183 H THR A 11 -3.714 -5.218 3.040 1.00 0.00 A H
193
+ ATOM 184 HA THR A 11 -4.687 -3.569 0.785 1.00 0.00 A H
194
+ ATOM 185 HB THR A 11 -6.443 -5.302 2.547 1.00 0.00 A H
195
+ ATOM 186 HG1 THR A 11 -5.585 -5.753 0.435 1.00 0.00 A H
196
+ ATOM 187 HG21 THR A 11 -8.413 -4.144 1.790 1.00 0.00 A H
197
+ ATOM 188 HG22 THR A 11 -7.400 -2.691 1.410 1.00 0.00 A H
198
+ ATOM 189 HG23 THR A 11 -7.412 -3.364 3.035 1.00 0.00 A H
199
+ ATOM 190 N PHE A 12 -5.027 -1.600 2.437 1.00 0.00 A N
200
+ ATOM 191 CA PHE A 12 -4.892 -0.415 3.254 1.00 0.00 A C
201
+ ATOM 192 C PHE A 12 -6.045 0.590 3.075 1.00 0.00 A C
202
+ ATOM 193 O PHE A 12 -6.753 0.641 2.115 1.00 0.00 A O
203
+ ATOM 194 CB PHE A 12 -3.431 0.158 3.027 1.00 0.00 A C
204
+ ATOM 195 CG PHE A 12 -2.214 -0.818 2.850 1.00 0.00 A C
205
+ ATOM 196 CD1 PHE A 12 -1.951 -1.340 1.571 1.00 0.00 A C
206
+ ATOM 197 CD2 PHE A 12 -1.356 -1.041 3.929 1.00 0.00 A C
207
+ ATOM 198 CE1 PHE A 12 -0.857 -2.170 1.323 1.00 0.00 A C
208
+ ATOM 199 CE2 PHE A 12 -0.173 -1.863 3.660 1.00 0.00 A C
209
+ ATOM 200 CZ PHE A 12 -0.049 -2.472 2.427 1.00 0.00 A C
210
+ ATOM 201 H PHE A 12 -5.281 -1.474 1.468 1.00 0.00 A H
211
+ ATOM 202 HA PHE A 12 -4.977 -0.656 4.314 1.00 0.00 A H
212
+ ATOM 203 HB2 PHE A 12 -3.385 0.990 2.325 1.00 0.00 A H
213
+ ATOM 204 HB3 PHE A 12 -3.141 0.780 3.874 1.00 0.00 A H
214
+ ATOM 205 HD1 PHE A 12 -2.522 -0.909 0.762 1.00 0.00 A H
215
+ ATOM 206 HD2 PHE A 12 -1.505 -0.520 4.864 1.00 0.00 A H
216
+ ATOM 207 HE1 PHE A 12 -0.661 -2.581 0.344 1.00 0.00 A H
217
+ ATOM 208 HE2 PHE A 12 0.672 -2.034 4.309 1.00 0.00 A H
218
+ ATOM 209 HZ PHE A 12 0.740 -3.158 2.155 1.00 0.00 A H
219
+ ATOM 210 N ARG A 13 -6.038 1.514 4.058 1.00 0.00 A N
220
+ ATOM 211 CA ARG A 13 -6.966 2.662 4.237 1.00 0.00 A C
221
+ ATOM 212 C ARG A 13 -6.317 3.950 4.285 1.00 0.00 A C
222
+ ATOM 213 O ARG A 13 -7.052 4.927 4.192 1.00 0.00 A O
223
+ ATOM 214 CB ARG A 13 -7.760 2.513 5.582 1.00 0.00 A C
224
+ ATOM 215 CG ARG A 13 -9.220 3.071 5.592 1.00 0.00 A C
225
+ ATOM 216 CD ARG A 13 -10.103 2.143 4.841 1.00 0.00 A C
226
+ ATOM 217 NE ARG A 13 -10.379 0.944 5.729 1.00 0.00 A N
227
+ ATOM 218 CZ ARG A 13 -10.998 -0.109 5.259 1.00 0.00 A C
228
+ ATOM 219 NH1 ARG A 13 -11.660 -0.132 4.126 1.00 0.00 A N
229
+ ATOM 220 NH2 ARG A 13 -11.077 -1.200 5.906 1.00 0.00 A N
230
+ ATOM 221 H ARG A 13 -5.361 1.572 4.805 1.00 0.00 A H
231
+ ATOM 222 HA ARG A 13 -7.811 2.604 3.550 1.00 0.00 A H
232
+ ATOM 223 HB2 ARG A 13 -7.846 1.470 5.888 1.00 0.00 A H
233
+ ATOM 224 HB3 ARG A 13 -7.158 3.017 6.338 1.00 0.00 A H
234
+ ATOM 225 HG2 ARG A 13 -9.535 3.211 6.626 1.00 0.00 A H
235
+ ATOM 226 HG3 ARG A 13 -9.287 3.989 5.008 1.00 0.00 A H
236
+ ATOM 227 HD2 ARG A 13 -11.018 2.728 4.749 1.00 0.00 A H
237
+ ATOM 228 HD3 ARG A 13 -9.753 1.905 3.836 1.00 0.00 A H
238
+ ATOM 229 HE ARG A 13 -9.946 0.961 6.642 1.00 0.00 A H
239
+ ATOM 230 HH11 ARG A 13 -11.829 0.655 3.515 1.00 0.00 A H
240
+ ATOM 231 HH12 ARG A 13 -12.165 -0.985 3.932 1.00 0.00 A H
241
+ ATOM 232 HH21 ARG A 13 -10.467 -1.359 6.695 1.00 0.00 A H
242
+ ATOM 233 HH22 ARG A 13 -11.366 -2.012 5.380 1.00 0.00 A H
243
+ ATOM 234 N ASN A 14 -4.976 4.098 4.434 1.00 0.00 A N
244
+ ATOM 235 CA ASN A 14 -4.309 5.374 4.614 1.00 0.00 A C
245
+ ATOM 236 C ASN A 14 -2.956 5.321 3.757 1.00 0.00 A C
246
+ ATOM 237 O ASN A 14 -2.253 4.292 3.720 1.00 0.00 A O
247
+ ATOM 238 CB ASN A 14 -3.986 5.642 6.094 1.00 0.00 A C
248
+ ATOM 239 CG ASN A 14 -3.338 6.979 6.461 1.00 0.00 A C
249
+ ATOM 240 OD1 ASN A 14 -2.128 7.111 6.351 1.00 0.00 A O
250
+ ATOM 241 ND2 ASN A 14 -4.028 7.955 6.940 1.00 0.00 A N
251
+ ATOM 242 H ASN A 14 -4.355 3.330 4.642 1.00 0.00 A H
252
+ ATOM 243 HA ASN A 14 -4.862 6.228 4.225 1.00 0.00 A H
253
+ ATOM 244 HB2 ASN A 14 -4.704 5.360 6.864 1.00 0.00 A H
254
+ ATOM 245 HB3 ASN A 14 -3.257 4.894 6.406 1.00 0.00 A H
255
+ ATOM 246 HD21 ASN A 14 -5.025 7.843 7.060 1.00 0.00 A H
256
+ ATOM 247 HD22 ASN A 14 -3.495 8.812 6.984 1.00 0.00 A H
257
+ ATOM 248 N GLU A 15 -2.519 6.472 3.309 1.00 0.00 A N
258
+ ATOM 249 CA GLU A 15 -1.451 6.632 2.287 1.00 0.00 A C
259
+ ATOM 250 C GLU A 15 -0.002 6.459 2.806 1.00 0.00 A C
260
+ ATOM 251 O GLU A 15 0.855 5.881 2.167 1.00 0.00 A O
261
+ ATOM 252 CB GLU A 15 -1.695 7.981 1.560 1.00 0.00 A C
262
+ ATOM 253 CG GLU A 15 -0.589 8.540 0.736 1.00 0.00 A C
263
+ ATOM 254 CD GLU A 15 -0.651 10.113 0.740 1.00 0.00 A C
264
+ ATOM 255 OE1 GLU A 15 -0.726 10.778 1.773 1.00 0.00 A O
265
+ ATOM 256 OE2 GLU A 15 -0.654 10.650 -0.391 1.00 0.00 A O
266
+ ATOM 257 H GLU A 15 -3.045 7.254 3.671 1.00 0.00 A H
267
+ ATOM 258 HA GLU A 15 -1.511 5.834 1.546 1.00 0.00 A H
268
+ ATOM 259 HB2 GLU A 15 -2.569 7.983 0.908 1.00 0.00 A H
269
+ ATOM 260 HB3 GLU A 15 -1.814 8.684 2.385 1.00 0.00 A H
270
+ ATOM 261 HG2 GLU A 15 0.352 8.368 1.258 1.00 0.00 A H
271
+ ATOM 262 HG3 GLU A 15 -0.525 8.034 -0.228 1.00 0.00 A H
272
+ ATOM 263 N LYS A 16 0.179 6.747 4.098 1.00 0.00 A N
273
+ ATOM 264 CA LYS A 16 1.405 6.596 4.795 1.00 0.00 A C
274
+ ATOM 265 C LYS A 16 1.901 5.120 4.894 1.00 0.00 A C
275
+ ATOM 266 O LYS A 16 3.106 4.892 4.880 1.00 0.00 A O
276
+ ATOM 267 CB LYS A 16 1.233 7.275 6.136 1.00 0.00 A C
277
+ ATOM 268 CG LYS A 16 2.466 7.264 7.077 1.00 0.00 A C
278
+ ATOM 269 CD LYS A 16 2.087 6.289 8.313 1.00 0.00 A C
279
+ ATOM 270 CE LYS A 16 3.208 6.205 9.312 1.00 0.00 A C
280
+ ATOM 271 NZ LYS A 16 2.861 5.364 10.508 1.00 0.00 A N
281
+ ATOM 272 H LYS A 16 -0.582 7.171 4.608 1.00 0.00 A H
282
+ ATOM 273 HA LYS A 16 2.180 7.178 4.295 1.00 0.00 A H
283
+ ATOM 274 HB2 LYS A 16 1.025 8.317 5.888 1.00 0.00 A H
284
+ ATOM 275 HB3 LYS A 16 0.449 6.644 6.555 1.00 0.00 A H
285
+ ATOM 276 HG2 LYS A 16 3.393 6.969 6.584 1.00 0.00 A H
286
+ ATOM 277 HG3 LYS A 16 2.586 8.260 7.505 1.00 0.00 A H
287
+ ATOM 278 HD2 LYS A 16 1.163 6.646 8.767 1.00 0.00 A H
288
+ ATOM 279 HD3 LYS A 16 1.892 5.279 7.953 1.00 0.00 A H
289
+ ATOM 280 HE2 LYS A 16 4.103 5.811 8.830 1.00 0.00 A H
290
+ ATOM 281 HE3 LYS A 16 3.352 7.241 9.620 1.00 0.00 A H
291
+ ATOM 282 HZ1 LYS A 16 2.783 4.366 10.377 1.00 0.00 A H
292
+ ATOM 283 HZ2 LYS A 16 1.948 5.555 10.894 1.00 0.00 A H
293
+ ATOM 284 HZ3 LYS A 16 3.593 5.482 11.194 1.00 0.00 A H
294
+ ATOM 285 N GLU A 17 0.960 4.171 5.196 1.00 0.00 A N
295
+ ATOM 286 CA GLU A 17 1.180 2.758 5.448 1.00 0.00 A C
296
+ ATOM 287 C GLU A 17 1.167 1.884 4.153 1.00 0.00 A C
297
+ ATOM 288 O GLU A 17 1.802 0.818 4.089 1.00 0.00 A O
298
+ ATOM 289 CB GLU A 17 0.065 2.126 6.253 1.00 0.00 A C
299
+ ATOM 290 CG GLU A 17 -0.043 2.543 7.799 1.00 0.00 A C
300
+ ATOM 291 CD GLU A 17 1.247 2.449 8.535 1.00 0.00 A C
301
+ ATOM 292 OE1 GLU A 17 1.991 1.473 8.392 1.00 0.00 A O
302
+ ATOM 293 OE2 GLU A 17 1.494 3.216 9.486 1.00 0.00 A O
303
+ ATOM 294 H GLU A 17 0.066 4.610 5.029 1.00 0.00 A H
304
+ ATOM 295 HA GLU A 17 2.117 2.794 6.003 1.00 0.00 A H
305
+ ATOM 296 HB2 GLU A 17 -0.889 2.473 5.854 1.00 0.00 A H
306
+ ATOM 297 HB3 GLU A 17 0.150 1.039 6.266 1.00 0.00 A H
307
+ ATOM 298 HG2 GLU A 17 -0.367 3.582 7.861 1.00 0.00 A H
308
+ ATOM 299 HG3 GLU A 17 -0.820 2.002 8.339 1.00 0.00 A H
309
+ ATOM 300 N LEU A 18 0.488 2.533 3.180 1.00 0.00 A N
310
+ ATOM 301 CA LEU A 18 0.421 2.015 1.815 1.00 0.00 A C
311
+ ATOM 302 C LEU A 18 1.767 2.212 1.044 1.00 0.00 A C
312
+ ATOM 303 O LEU A 18 2.276 1.320 0.421 1.00 0.00 A O
313
+ ATOM 304 CB LEU A 18 -0.707 2.750 1.156 1.00 0.00 A C
314
+ ATOM 305 CG LEU A 18 -0.799 2.763 -0.367 1.00 0.00 A C
315
+ ATOM 306 CD1 LEU A 18 -1.004 1.321 -0.879 1.00 0.00 A C
316
+ ATOM 307 CD2 LEU A 18 -1.835 3.808 -0.914 1.00 0.00 A C
317
+ ATOM 308 H LEU A 18 -0.098 3.338 3.350 1.00 0.00 A H
318
+ ATOM 309 HA LEU A 18 0.217 0.944 1.790 1.00 0.00 A H
319
+ ATOM 310 HB2 LEU A 18 -1.672 2.466 1.576 1.00 0.00 A H
320
+ ATOM 311 HB3 LEU A 18 -0.481 3.782 1.422 1.00 0.00 A H
321
+ ATOM 312 HG LEU A 18 0.198 3.047 -0.704 1.00 0.00 A H
322
+ ATOM 313 HD11 LEU A 18 -0.033 0.926 -0.581 1.00 0.00 A H
323
+ ATOM 314 HD12 LEU A 18 -1.142 1.369 -1.959 1.00 0.00 A H
324
+ ATOM 315 HD13 LEU A 18 -1.873 0.844 -0.426 1.00 0.00 A H
325
+ ATOM 316 HD21 LEU A 18 -1.338 4.368 -1.706 1.00 0.00 A H
326
+ ATOM 317 HD22 LEU A 18 -2.148 4.594 -0.228 1.00 0.00 A H
327
+ ATOM 318 HD23 LEU A 18 -2.737 3.274 -1.216 1.00 0.00 A H
328
+ ATOM 319 N ARG A 19 2.422 3.382 1.251 1.00 0.00 A N
329
+ ATOM 320 CA ARG A 19 3.770 3.733 0.499 1.00 0.00 A C
330
+ ATOM 321 C ARG A 19 4.978 2.933 1.078 1.00 0.00 A C
331
+ ATOM 322 O ARG A 19 5.931 2.658 0.432 1.00 0.00 A O
332
+ ATOM 323 CB ARG A 19 3.954 5.253 0.461 1.00 0.00 A C
333
+ ATOM 324 CG ARG A 19 2.835 5.968 -0.375 1.00 0.00 A C
334
+ ATOM 325 CD ARG A 19 3.107 5.890 -1.858 1.00 0.00 A C
335
+ ATOM 326 NE ARG A 19 1.893 6.010 -2.647 1.00 0.00 A N
336
+ ATOM 327 CZ ARG A 19 1.951 5.962 -4.011 1.00 0.00 A C
337
+ ATOM 328 NH1 ARG A 19 3.092 6.091 -4.675 1.00 0.00 A N
338
+ ATOM 329 NH2 ARG A 19 0.879 5.883 -4.711 1.00 0.00 A N
339
+ ATOM 330 H ARG A 19 2.050 4.061 1.900 1.00 0.00 A H
340
+ ATOM 331 HA ARG A 19 3.708 3.493 -0.562 1.00 0.00 A H
341
+ ATOM 332 HB2 ARG A 19 3.937 5.594 1.497 1.00 0.00 A H
342
+ ATOM 333 HB3 ARG A 19 4.893 5.392 -0.075 1.00 0.00 A H
343
+ ATOM 334 HG2 ARG A 19 1.784 5.687 -0.303 1.00 0.00 A H
344
+ ATOM 335 HG3 ARG A 19 2.858 7.032 -0.140 1.00 0.00 A H
345
+ ATOM 336 HD2 ARG A 19 3.786 6.707 -2.102 1.00 0.00 A H
346
+ ATOM 337 HD3 ARG A 19 3.490 4.888 -2.055 1.00 0.00 A H
347
+ ATOM 338 HE ARG A 19 1.000 5.938 -2.180 1.00 0.00 A H
348
+ ATOM 339 HH11 ARG A 19 3.984 6.027 -4.205 1.00 0.00 A H
349
+ ATOM 340 HH12 ARG A 19 3.104 6.010 -5.682 1.00 0.00 A H
350
+ ATOM 341 HH21 ARG A 19 0.078 5.684 -4.129 1.00 0.00 A H
351
+ ATOM 342 HH22 ARG A 19 0.926 5.795 -5.716 1.00 0.00 A H
352
+ ATOM 343 N ASP A 20 4.835 2.438 2.272 1.00 0.00 A N
353
+ ATOM 344 CA ASP A 20 5.679 1.376 2.746 1.00 0.00 A C
354
+ ATOM 345 C ASP A 20 5.619 0.041 1.907 1.00 0.00 A C
355
+ ATOM 346 O ASP A 20 6.550 -0.846 1.885 1.00 0.00 A O
356
+ ATOM 347 CB ASP A 20 5.413 1.103 4.233 1.00 0.00 A C
357
+ ATOM 348 CG ASP A 20 6.365 0.212 4.931 1.00 0.00 A C
358
+ ATOM 349 OD1 ASP A 20 7.577 0.532 4.695 1.00 0.00 A O
359
+ ATOM 350 OD2 ASP A 20 5.846 -0.665 5.673 1.00 0.00 A O
360
+ ATOM 351 H ASP A 20 4.048 2.776 2.808 1.00 0.00 A H
361
+ ATOM 352 HA ASP A 20 6.664 1.819 2.600 1.00 0.00 A H
362
+ ATOM 353 HB2 ASP A 20 5.312 2.049 4.765 1.00 0.00 A H
363
+ ATOM 354 HB3 ASP A 20 4.417 0.664 4.176 1.00 0.00 A H
364
+ ATOM 355 N PHE A 21 4.510 -0.142 1.117 1.00 0.00 A N
365
+ ATOM 356 CA PHE A 21 4.479 -1.362 0.191 1.00 0.00 A C
366
+ ATOM 357 C PHE A 21 4.967 -1.038 -1.187 1.00 0.00 A C
367
+ ATOM 358 O PHE A 21 5.796 -1.770 -1.680 1.00 0.00 A O
368
+ ATOM 359 CB PHE A 21 3.071 -1.941 0.316 1.00 0.00 A C
369
+ ATOM 360 CG PHE A 21 2.872 -3.128 -0.633 1.00 0.00 A C
370
+ ATOM 361 CD1 PHE A 21 3.152 -4.479 -0.231 1.00 0.00 A C
371
+ ATOM 362 CD2 PHE A 21 2.384 -2.961 -1.928 1.00 0.00 A C
372
+ ATOM 363 CE1 PHE A 21 3.036 -5.521 -1.170 1.00 0.00 A C
373
+ ATOM 364 CE2 PHE A 21 2.295 -3.938 -2.901 1.00 0.00 A C
374
+ ATOM 365 CZ PHE A 21 2.661 -5.203 -2.489 1.00 0.00 A C
375
+ ATOM 366 H PHE A 21 3.725 0.489 1.190 1.00 0.00 A H
376
+ ATOM 367 HA PHE A 21 5.159 -2.153 0.508 1.00 0.00 A H
377
+ ATOM 368 HB2 PHE A 21 2.891 -2.337 1.316 1.00 0.00 A H
378
+ ATOM 369 HB3 PHE A 21 2.317 -1.233 -0.026 1.00 0.00 A H
379
+ ATOM 370 HD1 PHE A 21 3.483 -4.535 0.796 1.00 0.00 A H
380
+ ATOM 371 HD2 PHE A 21 2.046 -1.959 -2.146 1.00 0.00 A H
381
+ ATOM 372 HE1 PHE A 21 3.538 -6.450 -0.944 1.00 0.00 A H
382
+ ATOM 373 HE2 PHE A 21 2.014 -3.675 -3.911 1.00 0.00 A H
383
+ ATOM 374 HZ PHE A 21 2.789 -5.988 -3.220 1.00 0.00 A H
384
+ ATOM 375 N ILE A 22 4.493 0.047 -1.893 1.00 0.00 A N
385
+ ATOM 376 CA ILE A 22 4.911 0.267 -3.300 1.00 0.00 A C
386
+ ATOM 377 C ILE A 22 6.442 0.524 -3.333 1.00 0.00 A C
387
+ ATOM 378 O ILE A 22 7.124 -0.083 -4.178 1.00 0.00 A O
388
+ ATOM 379 CB ILE A 22 4.016 1.326 -4.011 1.00 0.00 A C
389
+ ATOM 380 CG1 ILE A 22 2.615 0.855 -4.450 1.00 0.00 A C
390
+ ATOM 381 CG2 ILE A 22 4.773 2.057 -5.141 1.00 0.00 A C
391
+ ATOM 382 CD1 ILE A 22 1.566 1.000 -3.308 1.00 0.00 A C
392
+ ATOM 383 H ILE A 22 3.777 0.577 -1.416 1.00 0.00 A H
393
+ ATOM 384 HA ILE A 22 4.551 -0.571 -3.897 1.00 0.00 A H
394
+ ATOM 385 HB ILE A 22 3.752 2.148 -3.347 1.00 0.00 A H
395
+ ATOM 386 HG12 ILE A 22 2.246 1.515 -5.235 1.00 0.00 A H
396
+ ATOM 387 HG13 ILE A 22 2.579 -0.172 -4.814 1.00 0.00 A H
397
+ ATOM 388 HG21 ILE A 22 4.033 2.677 -5.647 1.00 0.00 A H
398
+ ATOM 389 HG22 ILE A 22 5.307 1.382 -5.810 1.00 0.00 A H
399
+ ATOM 390 HG23 ILE A 22 5.468 2.787 -4.726 1.00 0.00 A H
400
+ ATOM 391 HD11 ILE A 22 1.897 0.404 -2.457 1.00 0.00 A H
401
+ ATOM 392 HD12 ILE A 22 0.620 0.493 -3.499 1.00 0.00 A H
402
+ ATOM 393 HD13 ILE A 22 1.307 2.009 -2.987 1.00 0.00 A H
403
+ ATOM 394 N GLU A 23 7.067 1.237 -2.397 1.00 0.00 A N
404
+ ATOM 395 CA GLU A 23 8.512 1.285 -2.234 1.00 0.00 A C
405
+ ATOM 396 C GLU A 23 9.374 -0.002 -2.186 1.00 0.00 A C
406
+ ATOM 397 O GLU A 23 10.548 -0.111 -2.515 1.00 0.00 A O
407
+ ATOM 398 CB GLU A 23 8.811 2.330 -1.173 1.00 0.00 A C
408
+ ATOM 399 CG GLU A 23 10.254 2.888 -1.081 1.00 0.00 A C
409
+ ATOM 400 CD GLU A 23 10.443 4.061 -0.186 1.00 0.00 A C
410
+ ATOM 401 OE1 GLU A 23 11.199 4.018 0.799 1.00 0.00 A O
411
+ ATOM 402 OE2 GLU A 23 9.830 5.117 -0.492 1.00 0.00 A O
412
+ ATOM 403 H GLU A 23 6.562 1.819 -1.743 1.00 0.00 A H
413
+ ATOM 404 HA GLU A 23 8.859 1.795 -3.132 1.00 0.00 A H
414
+ ATOM 405 HB2 GLU A 23 8.128 3.169 -1.304 1.00 0.00 A H
415
+ ATOM 406 HB3 GLU A 23 8.512 1.974 -0.187 1.00 0.00 A H
416
+ ATOM 407 HG2 GLU A 23 10.995 2.110 -0.895 1.00 0.00 A H
417
+ ATOM 408 HG3 GLU A 23 10.418 3.161 -2.124 1.00 0.00 A H
418
+ ATOM 409 N LYS A 24 8.716 -1.118 -1.887 1.00 0.00 A N
419
+ ATOM 410 CA LYS A 24 9.307 -2.472 -1.874 1.00 0.00 A C
420
+ ATOM 411 C LYS A 24 8.858 -3.329 -3.086 1.00 0.00 A C
421
+ ATOM 412 O LYS A 24 9.665 -4.104 -3.644 1.00 0.00 A O
422
+ ATOM 413 CB LYS A 24 9.073 -3.198 -0.469 1.00 0.00 A C
423
+ ATOM 414 CG LYS A 24 9.830 -2.469 0.690 1.00 0.00 A C
424
+ ATOM 415 CD LYS A 24 11.303 -2.850 0.841 1.00 0.00 A C
425
+ ATOM 416 CE LYS A 24 12.061 -2.141 2.008 1.00 0.00 A C
426
+ ATOM 417 NZ LYS A 24 11.452 -2.599 3.307 1.00 0.00 A N
427
+ ATOM 418 H LYS A 24 7.733 -1.031 -1.672 1.00 0.00 A H
428
+ ATOM 419 HA LYS A 24 10.389 -2.446 -2.009 1.00 0.00 A H
429
+ ATOM 420 HB2 LYS A 24 8.002 -3.033 -0.348 1.00 0.00 A H
430
+ ATOM 421 HB3 LYS A 24 9.395 -4.233 -0.588 1.00 0.00 A H
431
+ ATOM 422 HG2 LYS A 24 9.567 -1.416 0.589 1.00 0.00 A H
432
+ ATOM 423 HG3 LYS A 24 9.374 -2.875 1.593 1.00 0.00 A H
433
+ ATOM 424 HD2 LYS A 24 11.409 -3.931 0.939 1.00 0.00 A H
434
+ ATOM 425 HD3 LYS A 24 11.856 -2.581 -0.059 1.00 0.00 A H
435
+ ATOM 426 HE2 LYS A 24 13.147 -2.237 1.986 1.00 0.00 A H
436
+ ATOM 427 HE3 LYS A 24 11.949 -1.075 1.809 1.00 0.00 A H
437
+ ATOM 428 HZ1 LYS A 24 10.512 -2.299 3.525 1.00 0.00 A H
438
+ ATOM 429 HZ2 LYS A 24 12.017 -2.492 4.137 1.00 0.00 A H
439
+ ATOM 430 HZ3 LYS A 24 11.359 -3.599 3.416 1.00 0.00 A H
440
+ ATOM 431 N PHE A 25 7.631 -3.061 -3.583 1.00 0.00 A N
441
+ ATOM 432 CA PHE A 25 7.036 -3.461 -4.870 1.00 0.00 A C
442
+ ATOM 433 C PHE A 25 7.940 -3.117 -6.155 1.00 0.00 A C
443
+ ATOM 434 O PHE A 25 7.622 -3.533 -7.253 1.00 0.00 A O
444
+ ATOM 435 CB PHE A 25 5.657 -2.871 -5.023 1.00 0.00 A C
445
+ ATOM 436 CG PHE A 25 4.781 -3.650 -6.012 1.00 0.00 A C
446
+ ATOM 437 CD1 PHE A 25 4.199 -4.877 -5.645 1.00 0.00 A C
447
+ ATOM 438 CD2 PHE A 25 4.481 -3.065 -7.285 1.00 0.00 A C
448
+ ATOM 439 CE1 PHE A 25 3.380 -5.659 -6.590 1.00 0.00 A C
449
+ ATOM 440 CE2 PHE A 25 3.597 -3.836 -8.140 1.00 0.00 A C
450
+ ATOM 441 CZ PHE A 25 2.997 -5.044 -7.830 1.00 0.00 A C
451
+ ATOM 442 H PHE A 25 7.050 -2.522 -2.957 1.00 0.00 A H
452
+ ATOM 443 HA PHE A 25 7.029 -4.551 -4.855 1.00 0.00 A H
453
+ ATOM 444 HB2 PHE A 25 5.082 -3.041 -4.113 1.00 0.00 A H
454
+ ATOM 445 HB3 PHE A 25 5.776 -1.847 -5.378 1.00 0.00 A H
455
+ ATOM 446 HD1 PHE A 25 4.420 -5.231 -4.649 1.00 0.00 A H
456
+ ATOM 447 HD2 PHE A 25 4.874 -2.107 -7.591 1.00 0.00 A H
457
+ ATOM 448 HE1 PHE A 25 2.813 -6.539 -6.327 1.00 0.00 A H
458
+ ATOM 449 HE2 PHE A 25 3.283 -3.319 -9.035 1.00 0.00 A H
459
+ ATOM 450 HZ PHE A 25 2.300 -5.603 -8.437 1.00 0.00 A H
460
+ ATOM 451 N LYS A 26 9.030 -2.366 -6.002 1.00 0.00 A N
461
+ ATOM 452 CA LYS A 26 10.067 -2.124 -6.967 1.00 0.00 A C
462
+ ATOM 453 C LYS A 26 11.129 -3.241 -7.079 1.00 0.00 A C
463
+ ATOM 454 O LYS A 26 11.745 -3.441 -8.185 1.00 0.00 A O
464
+ ATOM 455 CB LYS A 26 10.618 -0.753 -6.504 1.00 0.00 A C
465
+ ATOM 456 CG LYS A 26 9.693 0.438 -6.750 1.00 0.00 A C
466
+ ATOM 457 CD LYS A 26 10.065 1.715 -6.017 1.00 0.00 A C
467
+ ATOM 458 CE LYS A 26 11.430 2.205 -6.517 1.00 0.00 A C
468
+ ATOM 459 NZ LYS A 26 12.043 3.155 -5.520 1.00 0.00 A N
469
+ ATOM 460 H LYS A 26 9.147 -1.928 -5.099 1.00 0.00 A H
470
+ ATOM 461 HA LYS A 26 9.703 -2.030 -7.991 1.00 0.00 A H
471
+ ATOM 462 HB2 LYS A 26 10.826 -0.859 -5.439 1.00 0.00 A H
472
+ ATOM 463 HB3 LYS A 26 11.552 -0.622 -7.050 1.00 0.00 A H
473
+ ATOM 464 HG2 LYS A 26 9.671 0.698 -7.809 1.00 0.00 A H
474
+ ATOM 465 HG3 LYS A 26 8.660 0.301 -6.432 1.00 0.00 A H
475
+ ATOM 466 HD2 LYS A 26 9.318 2.426 -6.370 1.00 0.00 A H
476
+ ATOM 467 HD3 LYS A 26 10.157 1.492 -4.954 1.00 0.00 A H
477
+ ATOM 468 HE2 LYS A 26 12.070 1.327 -6.599 1.00 0.00 A H
478
+ ATOM 469 HE3 LYS A 26 11.355 2.749 -7.459 1.00 0.00 A H
479
+ ATOM 470 HZ1 LYS A 26 12.342 2.742 -4.648 1.00 0.00 A H
480
+ ATOM 471 HZ2 LYS A 26 11.419 3.882 -5.202 1.00 0.00 A H
481
+ ATOM 472 HZ3 LYS A 26 12.951 3.437 -5.861 1.00 0.00 A H
482
+ ATOM 473 N GLY A 27 11.203 -4.185 -6.135 1.00 0.00 A N
483
+ ATOM 474 CA GLY A 27 12.245 -5.277 -6.200 1.00 0.00 A C
484
+ ATOM 475 C GLY A 27 12.303 -6.417 -5.189 1.00 0.00 A C
485
+ ATOM 476 O GLY A 27 13.024 -7.384 -5.358 1.00 0.00 A O
486
+ ATOM 477 H GLY A 27 10.572 -4.023 -5.363 1.00 0.00 A H
487
+ ATOM 478 HA2 GLY A 27 12.295 -5.727 -7.192 1.00 0.00 A H
488
+ ATOM 479 HA3 GLY A 27 13.193 -4.757 -6.061 1.00 0.00 A H
489
+ ATOM 480 N ARG A 28 11.648 -6.204 -4.050 1.00 0.00 A N
490
+ ATOM 481 CA ARG A 28 11.843 -7.016 -2.825 1.00 0.00 A C
491
+ ATOM 482 C ARG A 28 10.465 -7.599 -2.428 1.00 0.00 A C
492
+ ATOM 483 O ARG A 28 10.160 -8.653 -2.968 1.00 0.00 A O
493
+ ATOM 484 CB ARG A 28 12.567 -6.206 -1.682 1.00 0.00 A C
494
+ ATOM 485 CG ARG A 28 13.954 -5.592 -2.164 1.00 0.00 A C
495
+ ATOM 486 CD ARG A 28 14.538 -4.936 -0.890 1.00 0.00 A C
496
+ ATOM 487 NE ARG A 28 15.927 -4.408 -1.136 1.00 0.00 A N
497
+ ATOM 488 CZ ARG A 28 16.724 -4.142 -0.141 1.00 0.00 A C
498
+ ATOM 489 NH1 ARG A 28 16.380 -4.268 1.109 1.00 0.00 A N
499
+ ATOM 490 NH2 ARG A 28 17.962 -3.672 -0.292 1.00 0.00 A N
500
+ ATOM 491 OXT ARG A 28 9.747 -6.925 -1.642 1.00 0.00 A O
501
+ ATOM 492 H ARG A 28 10.981 -5.447 -3.997 1.00 0.00 A H
502
+ ATOM 493 HA ARG A 28 12.497 -7.867 -3.014 1.00 0.00 A H
503
+ ATOM 494 HB2 ARG A 28 12.056 -5.335 -1.273 1.00 0.00 A H
504
+ ATOM 495 HB3 ARG A 28 12.791 -6.866 -0.844 1.00 0.00 A H
505
+ ATOM 496 HG2 ARG A 28 14.701 -6.230 -2.637 1.00 0.00 A H
506
+ ATOM 497 HG3 ARG A 28 13.832 -4.925 -3.018 1.00 0.00 A H
507
+ ATOM 498 HD2 ARG A 28 13.823 -4.164 -0.604 1.00 0.00 A H
508
+ ATOM 499 HD3 ARG A 28 14.614 -5.683 -0.101 1.00 0.00 A H
509
+ ATOM 500 HE ARG A 28 16.342 -4.209 -2.034 1.00 0.00 A H
510
+ ATOM 501 HH11 ARG A 28 15.404 -4.360 1.353 1.00 0.00 A H
511
+ ATOM 502 HH12 ARG A 28 16.964 -4.032 1.898 1.00 0.00 A H
512
+ ATOM 503 HH21 ARG A 28 18.400 -3.645 -1.202 1.00 0.00 A H
513
+ ATOM 504 HH22 ARG A 28 18.411 -3.259 0.513 1.00 0.00 A H
514
+ ENDMDL
515
+ END
entangled-tps/data/bba/path.gro ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3f07c5e9042d5003e8e048906a985710890828878bdda913315c51b66007a313
3
+ size 54665982
entangled-tps/data/bba/tica_model.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:77300123d261710b6f17bcfac5a870b4d42915cf57abcf29ce3f0dc74fd70086
3
+ size 752721
entangled-tps/data/bba/unfolded.pdb ADDED
@@ -0,0 +1,515 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ TITLE MDANALYSIS FRAMES FROM 0, STEP 1: Created by PDBWriter
2
+ CRYST1 50.000 50.000 50.000 90.00 90.00 90.00 P 1 1
3
+ REMARK 285 UNITARY VALUES FOR THE UNIT CELL AUTOMATICALLY SET
4
+ REMARK 285 BY MDANALYSIS PDBWRITER BECAUSE UNIT CELL INFORMATION
5
+ REMARK 285 WAS MISSING.
6
+ REMARK 285 PROTEIN DATA BANK CONVENTIONS REQUIRE THAT
7
+ REMARK 285 CRYST1 RECORD IS INCLUDED, BUT THE VALUES ON
8
+ REMARK 285 THIS RECORD ARE MEANINGLESS.
9
+ MODEL 1
10
+ ATOM 1 N GLU A 1 -13.633 -2.853 19.490 1.00 0.00 A N
11
+ ATOM 2 CA GLU A 1 -13.212 -4.007 18.774 1.00 0.00 A C
12
+ ATOM 3 C GLU A 1 -12.455 -3.550 17.505 1.00 0.00 A C
13
+ ATOM 4 O GLU A 1 -13.076 -2.780 16.738 1.00 0.00 A O
14
+ ATOM 5 CB GLU A 1 -14.368 -4.905 18.207 1.00 0.00 A C
15
+ ATOM 6 CG GLU A 1 -13.894 -6.135 17.353 1.00 0.00 A C
16
+ ATOM 7 CD GLU A 1 -12.876 -7.030 18.099 1.00 0.00 A C
17
+ ATOM 8 OE1 GLU A 1 -11.814 -6.566 18.548 1.00 0.00 A O
18
+ ATOM 9 OE2 GLU A 1 -13.142 -8.261 18.082 1.00 0.00 A O
19
+ ATOM 10 H1 GLU A 1 -14.494 -3.083 19.965 1.00 0.00 A H
20
+ ATOM 11 H2 GLU A 1 -13.848 -2.043 18.926 1.00 0.00 A H
21
+ ATOM 12 H3 GLU A 1 -13.027 -2.436 20.182 1.00 0.00 A H
22
+ ATOM 13 HA GLU A 1 -12.564 -4.674 19.342 1.00 0.00 A H
23
+ ATOM 14 HB2 GLU A 1 -15.163 -5.241 18.873 1.00 0.00 A H
24
+ ATOM 15 HB3 GLU A 1 -15.002 -4.403 17.477 1.00 0.00 A H
25
+ ATOM 16 HG2 GLU A 1 -14.597 -6.824 16.884 1.00 0.00 A H
26
+ ATOM 17 HG3 GLU A 1 -13.525 -5.630 16.460 1.00 0.00 A H
27
+ ATOM 18 N GLN A 2 -11.247 -3.979 17.294 1.00 0.00 A N
28
+ ATOM 19 CA GLN A 2 -10.494 -3.860 15.959 1.00 0.00 A C
29
+ ATOM 20 C GLN A 2 -9.369 -4.984 16.005 1.00 0.00 A C
30
+ ATOM 21 O GLN A 2 -8.362 -4.859 16.662 1.00 0.00 A O
31
+ ATOM 22 CB GLN A 2 -9.817 -2.523 15.667 1.00 0.00 A C
32
+ ATOM 23 CG GLN A 2 -9.523 -1.769 17.007 1.00 0.00 A C
33
+ ATOM 24 CD GLN A 2 -8.229 -1.020 16.883 1.00 0.00 A C
34
+ ATOM 25 OE1 GLN A 2 -7.799 -0.600 15.815 1.00 0.00 A O
35
+ ATOM 26 NE2 GLN A 2 -7.511 -0.906 17.984 1.00 0.00 A N
36
+ ATOM 27 H GLN A 2 -10.956 -4.692 17.948 1.00 0.00 A H
37
+ ATOM 28 HA GLN A 2 -11.027 -4.047 15.027 1.00 0.00 A H
38
+ ATOM 29 HB2 GLN A 2 -8.867 -2.618 15.140 1.00 0.00 A H
39
+ ATOM 30 HB3 GLN A 2 -10.390 -1.837 15.044 1.00 0.00 A H
40
+ ATOM 31 HG2 GLN A 2 -10.253 -0.973 17.154 1.00 0.00 A H
41
+ ATOM 32 HG3 GLN A 2 -9.336 -2.436 17.849 1.00 0.00 A H
42
+ ATOM 33 HE21 GLN A 2 -7.875 -1.262 18.857 1.00 0.00 A H
43
+ ATOM 34 HE22 GLN A 2 -6.560 -0.567 17.976 1.00 0.00 A H
44
+ ATOM 35 N TYR A 3 -9.483 -6.042 15.223 1.00 0.00 A N
45
+ ATOM 36 CA TYR A 3 -8.492 -7.069 14.903 1.00 0.00 A C
46
+ ATOM 37 C TYR A 3 -7.319 -6.536 14.091 1.00 0.00 A C
47
+ ATOM 38 O TYR A 3 -7.462 -5.699 13.232 1.00 0.00 A O
48
+ ATOM 39 CB TYR A 3 -9.209 -8.220 14.296 1.00 0.00 A C
49
+ ATOM 40 CG TYR A 3 -8.361 -9.385 13.806 1.00 0.00 A C
50
+ ATOM 41 CD1 TYR A 3 -7.796 -10.370 14.703 1.00 0.00 A C
51
+ ATOM 42 CD2 TYR A 3 -7.949 -9.431 12.398 1.00 0.00 A C
52
+ ATOM 43 CE1 TYR A 3 -6.900 -11.325 14.248 1.00 0.00 A C
53
+ ATOM 44 CE2 TYR A 3 -7.124 -10.494 11.994 1.00 0.00 A C
54
+ ATOM 45 CZ TYR A 3 -6.569 -11.420 12.882 1.00 0.00 A C
55
+ ATOM 46 OH TYR A 3 -5.918 -12.529 12.412 1.00 0.00 A O
56
+ ATOM 47 H TYR A 3 -10.275 -6.015 14.598 1.00 0.00 A H
57
+ ATOM 48 HA TYR A 3 -8.104 -7.383 15.872 1.00 0.00 A H
58
+ ATOM 49 HB2 TYR A 3 -9.994 -8.574 14.963 1.00 0.00 A H
59
+ ATOM 50 HB3 TYR A 3 -9.709 -7.818 13.415 1.00 0.00 A H
60
+ ATOM 51 HD1 TYR A 3 -8.085 -10.424 15.742 1.00 0.00 A H
61
+ ATOM 52 HD2 TYR A 3 -8.372 -8.850 11.592 1.00 0.00 A H
62
+ ATOM 53 HE1 TYR A 3 -6.677 -12.137 14.924 1.00 0.00 A H
63
+ ATOM 54 HE2 TYR A 3 -6.744 -10.620 10.991 1.00 0.00 A H
64
+ ATOM 55 HH TYR A 3 -6.014 -13.272 13.013 1.00 0.00 A H
65
+ ATOM 56 N THR A 4 -6.059 -7.005 14.416 1.00 0.00 A N
66
+ ATOM 57 CA THR A 4 -4.738 -6.486 13.888 1.00 0.00 A C
67
+ ATOM 58 C THR A 4 -3.781 -7.570 13.262 1.00 0.00 A C
68
+ ATOM 59 O THR A 4 -3.626 -8.639 13.868 1.00 0.00 A O
69
+ ATOM 60 CB THR A 4 -4.195 -5.449 14.893 1.00 0.00 A C
70
+ ATOM 61 OG1 THR A 4 -3.150 -4.640 14.443 1.00 0.00 A O
71
+ ATOM 62 CG2 THR A 4 -3.666 -6.106 16.098 1.00 0.00 A C
72
+ ATOM 63 H THR A 4 -6.027 -7.762 15.084 1.00 0.00 A H
73
+ ATOM 64 HA THR A 4 -5.004 -5.847 13.046 1.00 0.00 A H
74
+ ATOM 65 HB THR A 4 -5.036 -4.790 15.106 1.00 0.00 A H
75
+ ATOM 66 HG1 THR A 4 -3.366 -3.726 14.244 1.00 0.00 A H
76
+ ATOM 67 HG21 THR A 4 -2.994 -6.892 15.755 1.00 0.00 A H
77
+ ATOM 68 HG22 THR A 4 -4.469 -6.683 16.558 1.00 0.00 A H
78
+ ATOM 69 HG23 THR A 4 -3.303 -5.373 16.819 1.00 0.00 A H
79
+ ATOM 70 N ALA A 5 -3.166 -7.269 12.148 1.00 0.00 A N
80
+ ATOM 71 CA ALA A 5 -2.082 -7.988 11.483 1.00 0.00 A C
81
+ ATOM 72 C ALA A 5 -0.865 -7.328 10.731 1.00 0.00 A C
82
+ ATOM 73 O ALA A 5 -0.028 -8.017 10.139 1.00 0.00 A O
83
+ ATOM 74 CB ALA A 5 -2.749 -8.921 10.386 1.00 0.00 A C
84
+ ATOM 75 H ALA A 5 -3.562 -6.444 11.721 1.00 0.00 A H
85
+ ATOM 76 HA ALA A 5 -1.725 -8.723 12.205 1.00 0.00 A H
86
+ ATOM 77 HB1 ALA A 5 -3.084 -8.323 9.539 1.00 0.00 A H
87
+ ATOM 78 HB2 ALA A 5 -3.585 -9.488 10.795 1.00 0.00 A H
88
+ ATOM 79 HB3 ALA A 5 -2.124 -9.658 9.881 1.00 0.00 A H
89
+ ATOM 80 N LYS A 6 -0.760 -5.974 10.739 1.00 0.00 A N
90
+ ATOM 81 CA LYS A 6 0.228 -5.135 10.021 1.00 0.00 A C
91
+ ATOM 82 C LYS A 6 1.686 -5.395 10.414 1.00 0.00 A C
92
+ ATOM 83 O LYS A 6 2.588 -4.834 9.705 1.00 0.00 A O
93
+ ATOM 84 CB LYS A 6 -0.175 -3.688 10.226 1.00 0.00 A C
94
+ ATOM 85 CG LYS A 6 0.023 -3.275 11.760 1.00 0.00 A C
95
+ ATOM 86 CD LYS A 6 -0.109 -1.769 11.725 1.00 0.00 A C
96
+ ATOM 87 CE LYS A 6 -0.104 -1.142 13.177 1.00 0.00 A C
97
+ ATOM 88 NZ LYS A 6 0.038 0.266 12.979 1.00 0.00 A N
98
+ ATOM 89 H LYS A 6 -1.368 -5.515 11.402 1.00 0.00 A H
99
+ ATOM 90 HA LYS A 6 0.067 -5.302 8.956 1.00 0.00 A H
100
+ ATOM 91 HB2 LYS A 6 0.488 -3.136 9.559 1.00 0.00 A H
101
+ ATOM 92 HB3 LYS A 6 -1.196 -3.502 9.894 1.00 0.00 A H
102
+ ATOM 93 HG2 LYS A 6 -0.823 -3.699 12.300 1.00 0.00 A H
103
+ ATOM 94 HG3 LYS A 6 0.953 -3.792 11.997 1.00 0.00 A H
104
+ ATOM 95 HD2 LYS A 6 0.851 -1.540 11.263 1.00 0.00 A H
105
+ ATOM 96 HD3 LYS A 6 -1.021 -1.579 11.159 1.00 0.00 A H
106
+ ATOM 97 HE2 LYS A 6 -0.988 -1.361 13.775 1.00 0.00 A H
107
+ ATOM 98 HE3 LYS A 6 0.815 -1.502 13.639 1.00 0.00 A H
108
+ ATOM 99 HZ1 LYS A 6 -0.084 0.786 13.836 1.00 0.00 A H
109
+ ATOM 100 HZ2 LYS A 6 -0.728 0.445 12.346 1.00 0.00 A H
110
+ ATOM 101 HZ3 LYS A 6 0.852 0.594 12.480 1.00 0.00 A H
111
+ ATOM 102 N TYR A 7 1.911 -6.198 11.490 1.00 0.00 A N
112
+ ATOM 103 CA TYR A 7 3.305 -6.711 11.680 1.00 0.00 A C
113
+ ATOM 104 C TYR A 7 3.668 -8.089 11.074 1.00 0.00 A C
114
+ ATOM 105 O TYR A 7 4.884 -8.407 11.052 1.00 0.00 A O
115
+ ATOM 106 CB TYR A 7 3.543 -6.737 13.131 1.00 0.00 A C
116
+ ATOM 107 CG TYR A 7 2.420 -7.391 14.012 1.00 0.00 A C
117
+ ATOM 108 CD1 TYR A 7 1.273 -6.655 14.496 1.00 0.00 A C
118
+ ATOM 109 CD2 TYR A 7 2.460 -8.740 14.287 1.00 0.00 A C
119
+ ATOM 110 CE1 TYR A 7 0.164 -7.345 15.044 1.00 0.00 A C
120
+ ATOM 111 CE2 TYR A 7 1.457 -9.485 14.938 1.00 0.00 A C
121
+ ATOM 112 CZ TYR A 7 0.254 -8.790 15.286 1.00 0.00 A C
122
+ ATOM 113 OH TYR A 7 -0.767 -9.471 15.805 1.00 0.00 A O
123
+ ATOM 114 H TYR A 7 1.214 -6.556 12.126 1.00 0.00 A H
124
+ ATOM 115 HA TYR A 7 4.029 -6.022 11.245 1.00 0.00 A H
125
+ ATOM 116 HB2 TYR A 7 4.508 -7.212 13.304 1.00 0.00 A H
126
+ ATOM 117 HB3 TYR A 7 3.645 -5.661 13.274 1.00 0.00 A H
127
+ ATOM 118 HD1 TYR A 7 1.221 -5.593 14.306 1.00 0.00 A H
128
+ ATOM 119 HD2 TYR A 7 3.306 -9.319 13.948 1.00 0.00 A H
129
+ ATOM 120 HE1 TYR A 7 -0.642 -6.738 15.430 1.00 0.00 A H
130
+ ATOM 121 HE2 TYR A 7 1.435 -10.545 15.143 1.00 0.00 A H
131
+ ATOM 122 HH TYR A 7 -1.596 -9.222 15.390 1.00 0.00 A H
132
+ ATOM 123 N LYS A 8 2.694 -8.910 10.611 1.00 0.00 A N
133
+ ATOM 124 CA LYS A 8 2.808 -10.230 9.950 1.00 0.00 A C
134
+ ATOM 125 C LYS A 8 2.483 -10.115 8.436 1.00 0.00 A C
135
+ ATOM 126 O LYS A 8 3.013 -10.904 7.668 1.00 0.00 A O
136
+ ATOM 127 CB LYS A 8 2.089 -11.230 10.836 1.00 0.00 A C
137
+ ATOM 128 CG LYS A 8 0.615 -11.492 10.334 1.00 0.00 A C
138
+ ATOM 129 CD LYS A 8 0.384 -12.396 9.095 1.00 0.00 A C
139
+ ATOM 130 CE LYS A 8 -1.100 -12.587 8.906 1.00 0.00 A C
140
+ ATOM 131 NZ LYS A 8 -1.563 -14.009 8.949 1.00 0.00 A N
141
+ ATOM 132 H LYS A 8 1.813 -8.422 10.674 1.00 0.00 A H
142
+ ATOM 133 HA LYS A 8 3.840 -10.581 9.947 1.00 0.00 A H
143
+ ATOM 134 HB2 LYS A 8 2.704 -12.125 10.741 1.00 0.00 A H
144
+ ATOM 135 HB3 LYS A 8 2.078 -10.882 11.869 1.00 0.00 A H
145
+ ATOM 136 HG2 LYS A 8 -0.004 -11.813 11.172 1.00 0.00 A H
146
+ ATOM 137 HG3 LYS A 8 0.270 -10.494 10.062 1.00 0.00 A H
147
+ ATOM 138 HD2 LYS A 8 0.668 -11.906 8.164 1.00 0.00 A H
148
+ ATOM 139 HD3 LYS A 8 0.872 -13.369 9.158 1.00 0.00 A H
149
+ ATOM 140 HE2 LYS A 8 -1.543 -11.982 9.696 1.00 0.00 A H
150
+ ATOM 141 HE3 LYS A 8 -1.320 -12.236 7.898 1.00 0.00 A H
151
+ ATOM 142 HZ1 LYS A 8 -2.567 -14.105 8.888 1.00 0.00 A H
152
+ ATOM 143 HZ2 LYS A 8 -1.205 -14.398 9.810 1.00 0.00 A H
153
+ ATOM 144 HZ3 LYS A 8 -1.217 -14.660 8.259 1.00 0.00 A H
154
+ ATOM 145 N GLY A 9 1.769 -9.052 8.014 1.00 0.00 A N
155
+ ATOM 146 CA GLY A 9 1.549 -8.661 6.583 1.00 0.00 A C
156
+ ATOM 147 C GLY A 9 0.797 -7.376 6.326 1.00 0.00 A C
157
+ ATOM 148 O GLY A 9 0.186 -6.811 7.216 1.00 0.00 A O
158
+ ATOM 149 H GLY A 9 1.276 -8.567 8.750 1.00 0.00 A H
159
+ ATOM 150 HA2 GLY A 9 2.490 -8.606 6.036 1.00 0.00 A H
160
+ ATOM 151 HA3 GLY A 9 0.886 -9.404 6.139 1.00 0.00 A H
161
+ ATOM 152 N ARG A 10 0.952 -6.808 5.112 1.00 0.00 A N
162
+ ATOM 153 CA ARG A 10 0.353 -5.523 4.617 1.00 0.00 A C
163
+ ATOM 154 C ARG A 10 -0.351 -5.444 3.186 1.00 0.00 A C
164
+ ATOM 155 O ARG A 10 0.246 -5.621 2.102 1.00 0.00 A O
165
+ ATOM 156 CB ARG A 10 1.400 -4.364 4.737 1.00 0.00 A C
166
+ ATOM 157 CG ARG A 10 1.855 -4.051 6.209 1.00 0.00 A C
167
+ ATOM 158 CD ARG A 10 2.907 -2.935 6.278 1.00 0.00 A C
168
+ ATOM 159 NE ARG A 10 3.583 -2.876 7.613 1.00 0.00 A N
169
+ ATOM 160 CZ ARG A 10 4.377 -1.973 8.131 1.00 0.00 A C
170
+ ATOM 161 NH1 ARG A 10 4.682 -0.853 7.429 1.00 0.00 A N
171
+ ATOM 162 NH2 ARG A 10 4.913 -2.129 9.280 1.00 0.00 A N
172
+ ATOM 163 H ARG A 10 1.392 -7.308 4.352 1.00 0.00 A H
173
+ ATOM 164 HA ARG A 10 -0.486 -5.310 5.279 1.00 0.00 A H
174
+ ATOM 165 HB2 ARG A 10 2.222 -4.681 4.096 1.00 0.00 A H
175
+ ATOM 166 HB3 ARG A 10 1.035 -3.394 4.400 1.00 0.00 A H
176
+ ATOM 167 HG2 ARG A 10 0.923 -3.712 6.662 1.00 0.00 A H
177
+ ATOM 168 HG3 ARG A 10 2.233 -4.867 6.825 1.00 0.00 A H
178
+ ATOM 169 HD2 ARG A 10 3.720 -3.053 5.561 1.00 0.00 A H
179
+ ATOM 170 HD3 ARG A 10 2.419 -1.980 6.083 1.00 0.00 A H
180
+ ATOM 171 HE ARG A 10 3.601 -3.778 8.068 1.00 0.00 A H
181
+ ATOM 172 HH11 ARG A 10 4.332 -0.659 6.502 1.00 0.00 A H
182
+ ATOM 173 HH12 ARG A 10 5.370 -0.276 7.891 1.00 0.00 A H
183
+ ATOM 174 HH21 ARG A 10 4.787 -2.991 9.790 1.00 0.00 A H
184
+ ATOM 175 HH22 ARG A 10 5.397 -1.356 9.714 1.00 0.00 A H
185
+ ATOM 176 N THR A 11 -1.649 -4.931 3.127 1.00 0.00 A N
186
+ ATOM 177 CA THR A 11 -2.163 -4.454 1.791 1.00 0.00 A C
187
+ ATOM 178 C THR A 11 -1.862 -2.932 1.606 1.00 0.00 A C
188
+ ATOM 179 O THR A 11 -1.386 -2.151 2.504 1.00 0.00 A O
189
+ ATOM 180 CB THR A 11 -3.618 -4.835 1.753 1.00 0.00 A C
190
+ ATOM 181 OG1 THR A 11 -4.085 -4.652 0.417 1.00 0.00 A O
191
+ ATOM 182 CG2 THR A 11 -4.535 -4.003 2.636 1.00 0.00 A C
192
+ ATOM 183 H THR A 11 -2.258 -4.717 3.904 1.00 0.00 A H
193
+ ATOM 184 HA THR A 11 -1.627 -4.933 0.972 1.00 0.00 A H
194
+ ATOM 185 HB THR A 11 -3.618 -5.887 2.039 1.00 0.00 A H
195
+ ATOM 186 HG1 THR A 11 -4.979 -4.306 0.372 1.00 0.00 A H
196
+ ATOM 187 HG21 THR A 11 -3.940 -3.481 3.385 1.00 0.00 A H
197
+ ATOM 188 HG22 THR A 11 -5.295 -4.537 3.206 1.00 0.00 A H
198
+ ATOM 189 HG23 THR A 11 -4.993 -3.241 2.005 1.00 0.00 A H
199
+ ATOM 190 N PHE A 12 -1.919 -2.665 0.269 1.00 0.00 A N
200
+ ATOM 191 CA PHE A 12 -1.365 -1.482 -0.469 1.00 0.00 A C
201
+ ATOM 192 C PHE A 12 -1.741 -0.160 0.044 1.00 0.00 A C
202
+ ATOM 193 O PHE A 12 -0.873 0.709 0.185 1.00 0.00 A O
203
+ ATOM 194 CB PHE A 12 -1.669 -1.633 -1.924 1.00 0.00 A C
204
+ ATOM 195 CG PHE A 12 -1.146 -2.945 -2.552 1.00 0.00 A C
205
+ ATOM 196 CD1 PHE A 12 0.193 -3.217 -2.854 1.00 0.00 A C
206
+ ATOM 197 CD2 PHE A 12 -2.112 -3.962 -2.956 1.00 0.00 A C
207
+ ATOM 198 CE1 PHE A 12 0.583 -4.368 -3.548 1.00 0.00 A C
208
+ ATOM 199 CE2 PHE A 12 -1.725 -5.095 -3.704 1.00 0.00 A C
209
+ ATOM 200 CZ PHE A 12 -0.370 -5.329 -4.018 1.00 0.00 A C
210
+ ATOM 201 H PHE A 12 -2.313 -3.413 -0.282 1.00 0.00 A H
211
+ ATOM 202 HA PHE A 12 -0.309 -1.680 -0.288 1.00 0.00 A H
212
+ ATOM 203 HB2 PHE A 12 -2.750 -1.721 -2.031 1.00 0.00 A H
213
+ ATOM 204 HB3 PHE A 12 -1.167 -0.814 -2.440 1.00 0.00 A H
214
+ ATOM 205 HD1 PHE A 12 1.025 -2.538 -2.732 1.00 0.00 A H
215
+ ATOM 206 HD2 PHE A 12 -3.119 -3.743 -2.633 1.00 0.00 A H
216
+ ATOM 207 HE1 PHE A 12 1.640 -4.562 -3.652 1.00 0.00 A H
217
+ ATOM 208 HE2 PHE A 12 -2.553 -5.722 -4.001 1.00 0.00 A H
218
+ ATOM 209 HZ PHE A 12 0.040 -6.218 -4.473 1.00 0.00 A H
219
+ ATOM 210 N ARG A 13 -3.022 -0.017 0.385 1.00 0.00 A N
220
+ ATOM 211 CA ARG A 13 -3.626 1.186 1.026 1.00 0.00 A C
221
+ ATOM 212 C ARG A 13 -3.046 1.594 2.333 1.00 0.00 A C
222
+ ATOM 213 O ARG A 13 -2.802 2.758 2.510 1.00 0.00 A O
223
+ ATOM 214 CB ARG A 13 -5.248 1.116 1.109 1.00 0.00 A C
224
+ ATOM 215 CG ARG A 13 -5.956 1.597 -0.197 1.00 0.00 A C
225
+ ATOM 216 CD ARG A 13 -5.906 3.059 -0.606 1.00 0.00 A C
226
+ ATOM 217 NE ARG A 13 -6.717 4.025 0.100 1.00 0.00 A N
227
+ ATOM 218 CZ ARG A 13 -7.018 5.245 -0.194 1.00 0.00 A C
228
+ ATOM 219 NH1 ARG A 13 -6.419 5.789 -1.155 1.00 0.00 A N
229
+ ATOM 220 NH2 ARG A 13 -7.969 5.915 0.391 1.00 0.00 A N
230
+ ATOM 221 H ARG A 13 -3.651 -0.806 0.412 1.00 0.00 A H
231
+ ATOM 222 HA ARG A 13 -3.354 2.055 0.426 1.00 0.00 A H
232
+ ATOM 223 HB2 ARG A 13 -5.577 0.083 1.223 1.00 0.00 A H
233
+ ATOM 224 HB3 ARG A 13 -5.569 1.716 1.961 1.00 0.00 A H
234
+ ATOM 225 HG2 ARG A 13 -5.472 1.144 -1.062 1.00 0.00 A H
235
+ ATOM 226 HG3 ARG A 13 -6.978 1.235 -0.308 1.00 0.00 A H
236
+ ATOM 227 HD2 ARG A 13 -4.870 3.386 -0.517 1.00 0.00 A H
237
+ ATOM 228 HD3 ARG A 13 -6.189 3.223 -1.646 1.00 0.00 A H
238
+ ATOM 229 HE ARG A 13 -7.264 3.704 0.886 1.00 0.00 A H
239
+ ATOM 230 HH11 ARG A 13 -5.643 5.289 -1.564 1.00 0.00 A H
240
+ ATOM 231 HH12 ARG A 13 -6.777 6.648 -1.547 1.00 0.00 A H
241
+ ATOM 232 HH21 ARG A 13 -8.701 5.374 0.830 1.00 0.00 A H
242
+ ATOM 233 HH22 ARG A 13 -8.095 6.917 0.359 1.00 0.00 A H
243
+ ATOM 234 N ASN A 14 -2.854 0.636 3.236 1.00 0.00 A N
244
+ ATOM 235 CA ASN A 14 -2.067 0.849 4.448 1.00 0.00 A C
245
+ ATOM 236 C ASN A 14 -0.584 1.100 4.137 1.00 0.00 A C
246
+ ATOM 237 O ASN A 14 -0.055 2.097 4.616 1.00 0.00 A O
247
+ ATOM 238 CB ASN A 14 -2.234 -0.422 5.351 1.00 0.00 A C
248
+ ATOM 239 CG ASN A 14 -3.603 -0.696 6.023 1.00 0.00 A C
249
+ ATOM 240 OD1 ASN A 14 -4.709 -0.597 5.493 1.00 0.00 A O
250
+ ATOM 241 ND2 ASN A 14 -3.497 -0.990 7.271 1.00 0.00 A N
251
+ ATOM 242 H ASN A 14 -3.070 -0.350 3.203 1.00 0.00 A H
252
+ ATOM 243 HA ASN A 14 -2.480 1.711 4.971 1.00 0.00 A H
253
+ ATOM 244 HB2 ASN A 14 -2.017 -1.329 4.787 1.00 0.00 A H
254
+ ATOM 245 HB3 ASN A 14 -1.557 -0.344 6.201 1.00 0.00 A H
255
+ ATOM 246 HD21 ASN A 14 -2.626 -1.051 7.779 1.00 0.00 A H
256
+ ATOM 247 HD22 ASN A 14 -4.398 -0.992 7.727 1.00 0.00 A H
257
+ ATOM 248 N GLU A 15 0.038 0.373 3.181 1.00 0.00 A N
258
+ ATOM 249 CA GLU A 15 1.447 0.664 2.798 1.00 0.00 A C
259
+ ATOM 250 C GLU A 15 1.854 1.983 2.068 1.00 0.00 A C
260
+ ATOM 251 O GLU A 15 1.088 2.804 1.654 1.00 0.00 A O
261
+ ATOM 252 CB GLU A 15 2.024 -0.623 2.031 1.00 0.00 A C
262
+ ATOM 253 CG GLU A 15 2.858 -1.513 3.017 1.00 0.00 A C
263
+ ATOM 254 CD GLU A 15 4.290 -0.986 3.243 1.00 0.00 A C
264
+ ATOM 255 OE1 GLU A 15 5.244 -1.785 3.311 1.00 0.00 A O
265
+ ATOM 256 OE2 GLU A 15 4.543 0.288 3.264 1.00 0.00 A O
266
+ ATOM 257 H GLU A 15 -0.385 -0.438 2.752 1.00 0.00 A H
267
+ ATOM 258 HA GLU A 15 1.960 0.610 3.758 1.00 0.00 A H
268
+ ATOM 259 HB2 GLU A 15 1.107 -1.131 1.734 1.00 0.00 A H
269
+ ATOM 260 HB3 GLU A 15 2.635 -0.419 1.152 1.00 0.00 A H
270
+ ATOM 261 HG2 GLU A 15 2.499 -1.367 4.036 1.00 0.00 A H
271
+ ATOM 262 HG3 GLU A 15 2.960 -2.487 2.538 1.00 0.00 A H
272
+ ATOM 263 N LYS A 16 3.143 2.204 1.720 1.00 0.00 A N
273
+ ATOM 264 CA LYS A 16 3.742 3.170 0.730 1.00 0.00 A C
274
+ ATOM 265 C LYS A 16 4.387 2.656 -0.543 1.00 0.00 A C
275
+ ATOM 266 O LYS A 16 5.100 3.436 -1.140 1.00 0.00 A O
276
+ ATOM 267 CB LYS A 16 4.712 4.153 1.473 1.00 0.00 A C
277
+ ATOM 268 CG LYS A 16 6.029 3.726 2.021 1.00 0.00 A C
278
+ ATOM 269 CD LYS A 16 6.768 4.863 2.651 1.00 0.00 A C
279
+ ATOM 270 CE LYS A 16 6.546 4.584 4.140 1.00 0.00 A C
280
+ ATOM 271 NZ LYS A 16 6.922 5.681 5.047 1.00 0.00 A N
281
+ ATOM 272 H LYS A 16 3.823 1.635 2.203 1.00 0.00 A H
282
+ ATOM 273 HA LYS A 16 2.907 3.763 0.358 1.00 0.00 A H
283
+ ATOM 274 HB2 LYS A 16 4.879 4.985 0.789 1.00 0.00 A H
284
+ ATOM 275 HB3 LYS A 16 4.170 4.555 2.329 1.00 0.00 A H
285
+ ATOM 276 HG2 LYS A 16 5.874 2.861 2.666 1.00 0.00 A H
286
+ ATOM 277 HG3 LYS A 16 6.567 3.533 1.093 1.00 0.00 A H
287
+ ATOM 278 HD2 LYS A 16 7.850 4.829 2.527 1.00 0.00 A H
288
+ ATOM 279 HD3 LYS A 16 6.416 5.865 2.404 1.00 0.00 A H
289
+ ATOM 280 HE2 LYS A 16 5.489 4.408 4.339 1.00 0.00 A H
290
+ ATOM 281 HE3 LYS A 16 7.192 3.727 4.330 1.00 0.00 A H
291
+ ATOM 282 HZ1 LYS A 16 6.763 5.317 5.975 1.00 0.00 A H
292
+ ATOM 283 HZ2 LYS A 16 6.350 6.513 5.069 1.00 0.00 A H
293
+ ATOM 284 HZ3 LYS A 16 7.908 5.898 5.003 1.00 0.00 A H
294
+ ATOM 285 N GLU A 17 4.094 1.423 -1.000 1.00 0.00 A N
295
+ ATOM 286 CA GLU A 17 4.451 0.987 -2.365 1.00 0.00 A C
296
+ ATOM 287 C GLU A 17 3.339 1.101 -3.443 1.00 0.00 A C
297
+ ATOM 288 O GLU A 17 2.206 1.347 -3.037 1.00 0.00 A O
298
+ ATOM 289 CB GLU A 17 4.750 -0.466 -2.254 1.00 0.00 A C
299
+ ATOM 290 CG GLU A 17 6.023 -1.131 -1.630 1.00 0.00 A C
300
+ ATOM 291 CD GLU A 17 5.976 -2.592 -1.629 1.00 0.00 A C
301
+ ATOM 292 OE1 GLU A 17 5.491 -3.163 -2.602 1.00 0.00 A O
302
+ ATOM 293 OE2 GLU A 17 6.600 -3.213 -0.745 1.00 0.00 A O
303
+ ATOM 294 H GLU A 17 3.259 1.003 -0.617 1.00 0.00 A H
304
+ ATOM 295 HA GLU A 17 5.334 1.551 -2.666 1.00 0.00 A H
305
+ ATOM 296 HB2 GLU A 17 3.900 -0.913 -1.739 1.00 0.00 A H
306
+ ATOM 297 HB3 GLU A 17 4.803 -0.658 -3.326 1.00 0.00 A H
307
+ ATOM 298 HG2 GLU A 17 6.928 -0.687 -2.047 1.00 0.00 A H
308
+ ATOM 299 HG3 GLU A 17 5.984 -0.872 -0.572 1.00 0.00 A H
309
+ ATOM 300 N LEU A 18 3.784 1.097 -4.705 1.00 0.00 A N
310
+ ATOM 301 CA LEU A 18 2.999 1.271 -5.912 1.00 0.00 A C
311
+ ATOM 302 C LEU A 18 2.193 2.600 -5.923 1.00 0.00 A C
312
+ ATOM 303 O LEU A 18 1.076 2.683 -6.452 1.00 0.00 A O
313
+ ATOM 304 CB LEU A 18 2.185 0.063 -6.209 1.00 0.00 A C
314
+ ATOM 305 CG LEU A 18 2.902 -1.281 -6.449 1.00 0.00 A C
315
+ ATOM 306 CD1 LEU A 18 1.934 -2.428 -6.377 1.00 0.00 A C
316
+ ATOM 307 CD2 LEU A 18 3.745 -1.318 -7.716 1.00 0.00 A C
317
+ ATOM 308 H LEU A 18 4.774 0.977 -4.862 1.00 0.00 A H
318
+ ATOM 309 HA LEU A 18 3.717 1.300 -6.731 1.00 0.00 A H
319
+ ATOM 310 HB2 LEU A 18 1.553 -0.048 -5.328 1.00 0.00 A H
320
+ ATOM 311 HB3 LEU A 18 1.642 0.169 -7.148 1.00 0.00 A H
321
+ ATOM 312 HG LEU A 18 3.568 -1.407 -5.596 1.00 0.00 A H
322
+ ATOM 313 HD11 LEU A 18 0.954 -2.181 -6.786 1.00 0.00 A H
323
+ ATOM 314 HD12 LEU A 18 1.764 -2.649 -5.323 1.00 0.00 A H
324
+ ATOM 315 HD13 LEU A 18 2.385 -3.262 -6.916 1.00 0.00 A H
325
+ ATOM 316 HD21 LEU A 18 3.111 -1.530 -8.577 1.00 0.00 A H
326
+ ATOM 317 HD22 LEU A 18 4.399 -2.185 -7.620 1.00 0.00 A H
327
+ ATOM 318 HD23 LEU A 18 4.373 -0.442 -7.878 1.00 0.00 A H
328
+ ATOM 319 N ARG A 19 2.758 3.636 -5.453 1.00 0.00 A N
329
+ ATOM 320 CA ARG A 19 2.072 4.980 -5.431 1.00 0.00 A C
330
+ ATOM 321 C ARG A 19 1.827 5.576 -6.758 1.00 0.00 A C
331
+ ATOM 322 O ARG A 19 0.780 6.172 -6.838 1.00 0.00 A O
332
+ ATOM 323 CB ARG A 19 2.820 5.948 -4.435 1.00 0.00 A C
333
+ ATOM 324 CG ARG A 19 2.904 5.520 -2.909 1.00 0.00 A C
334
+ ATOM 325 CD ARG A 19 4.035 6.245 -2.085 1.00 0.00 A C
335
+ ATOM 326 NE ARG A 19 3.789 7.692 -1.994 1.00 0.00 A N
336
+ ATOM 327 CZ ARG A 19 4.479 8.677 -2.565 1.00 0.00 A C
337
+ ATOM 328 NH1 ARG A 19 5.247 8.599 -3.627 1.00 0.00 A N
338
+ ATOM 329 NH2 ARG A 19 4.338 9.872 -2.036 1.00 0.00 A N
339
+ ATOM 330 H ARG A 19 3.653 3.582 -4.989 1.00 0.00 A H
340
+ ATOM 331 HA ARG A 19 1.104 4.663 -5.042 1.00 0.00 A H
341
+ ATOM 332 HB2 ARG A 19 3.856 5.946 -4.772 1.00 0.00 A H
342
+ ATOM 333 HB3 ARG A 19 2.420 6.962 -4.453 1.00 0.00 A H
343
+ ATOM 334 HG2 ARG A 19 2.050 5.956 -2.390 1.00 0.00 A H
344
+ ATOM 335 HG3 ARG A 19 3.102 4.450 -2.837 1.00 0.00 A H
345
+ ATOM 336 HD2 ARG A 19 3.842 5.887 -1.073 1.00 0.00 A H
346
+ ATOM 337 HD3 ARG A 19 5.031 5.952 -2.417 1.00 0.00 A H
347
+ ATOM 338 HE ARG A 19 3.299 7.932 -1.144 1.00 0.00 A H
348
+ ATOM 339 HH11 ARG A 19 5.240 7.682 -4.051 1.00 0.00 A H
349
+ ATOM 340 HH12 ARG A 19 5.721 9.409 -4.000 1.00 0.00 A H
350
+ ATOM 341 HH21 ARG A 19 3.787 10.126 -1.228 1.00 0.00 A H
351
+ ATOM 342 HH22 ARG A 19 4.480 10.708 -2.585 1.00 0.00 A H
352
+ ATOM 343 N ASP A 20 2.606 5.324 -7.794 1.00 0.00 A N
353
+ ATOM 344 CA ASP A 20 2.384 5.861 -9.114 1.00 0.00 A C
354
+ ATOM 345 C ASP A 20 1.125 5.291 -9.751 1.00 0.00 A C
355
+ ATOM 346 O ASP A 20 0.268 6.007 -10.295 1.00 0.00 A O
356
+ ATOM 347 CB ASP A 20 3.591 5.667 -10.091 1.00 0.00 A C
357
+ ATOM 348 CG ASP A 20 4.825 6.395 -9.690 1.00 0.00 A C
358
+ ATOM 349 OD1 ASP A 20 4.809 7.101 -8.690 1.00 0.00 A O
359
+ ATOM 350 OD2 ASP A 20 5.819 6.420 -10.497 1.00 0.00 A O
360
+ ATOM 351 H ASP A 20 3.348 4.661 -7.616 1.00 0.00 A H
361
+ ATOM 352 HA ASP A 20 2.293 6.945 -9.054 1.00 0.00 A H
362
+ ATOM 353 HB2 ASP A 20 3.840 4.625 -10.295 1.00 0.00 A H
363
+ ATOM 354 HB3 ASP A 20 3.264 6.030 -11.065 1.00 0.00 A H
364
+ ATOM 355 N PHE A 21 1.049 3.975 -9.692 1.00 0.00 A N
365
+ ATOM 356 CA PHE A 21 -0.102 3.227 -10.218 1.00 0.00 A C
366
+ ATOM 357 C PHE A 21 -1.348 3.453 -9.483 1.00 0.00 A C
367
+ ATOM 358 O PHE A 21 -2.313 3.668 -10.192 1.00 0.00 A O
368
+ ATOM 359 CB PHE A 21 0.096 1.756 -10.271 1.00 0.00 A C
369
+ ATOM 360 CG PHE A 21 1.324 1.319 -10.907 1.00 0.00 A C
370
+ ATOM 361 CD1 PHE A 21 1.410 0.973 -12.275 1.00 0.00 A C
371
+ ATOM 362 CD2 PHE A 21 2.493 1.224 -10.141 1.00 0.00 A C
372
+ ATOM 363 CE1 PHE A 21 2.629 0.658 -12.938 1.00 0.00 A C
373
+ ATOM 364 CE2 PHE A 21 3.731 0.975 -10.771 1.00 0.00 A C
374
+ ATOM 365 CZ PHE A 21 3.774 0.619 -12.103 1.00 0.00 A C
375
+ ATOM 366 H PHE A 21 1.867 3.433 -9.456 1.00 0.00 A H
376
+ ATOM 367 HA PHE A 21 -0.261 3.578 -11.237 1.00 0.00 A H
377
+ ATOM 368 HB2 PHE A 21 0.062 1.349 -9.260 1.00 0.00 A H
378
+ ATOM 369 HB3 PHE A 21 -0.797 1.323 -10.722 1.00 0.00 A H
379
+ ATOM 370 HD1 PHE A 21 0.460 0.997 -12.790 1.00 0.00 A H
380
+ ATOM 371 HD2 PHE A 21 2.509 1.467 -9.089 1.00 0.00 A H
381
+ ATOM 372 HE1 PHE A 21 2.640 0.594 -14.016 1.00 0.00 A H
382
+ ATOM 373 HE2 PHE A 21 4.586 0.817 -10.130 1.00 0.00 A H
383
+ ATOM 374 HZ PHE A 21 4.721 0.381 -12.563 1.00 0.00 A H
384
+ ATOM 375 N ILE A 22 -1.395 3.430 -8.157 1.00 0.00 A N
385
+ ATOM 376 CA ILE A 22 -2.673 3.694 -7.468 1.00 0.00 A C
386
+ ATOM 377 C ILE A 22 -3.294 5.077 -7.804 1.00 0.00 A C
387
+ ATOM 378 O ILE A 22 -4.469 5.256 -8.090 1.00 0.00 A O
388
+ ATOM 379 CB ILE A 22 -2.580 3.465 -5.872 1.00 0.00 A C
389
+ ATOM 380 CG1 ILE A 22 -2.389 1.999 -5.679 1.00 0.00 A C
390
+ ATOM 381 CG2 ILE A 22 -3.679 3.963 -4.928 1.00 0.00 A C
391
+ ATOM 382 CD1 ILE A 22 -1.813 1.522 -4.336 1.00 0.00 A C
392
+ ATOM 383 H ILE A 22 -0.583 3.148 -7.627 1.00 0.00 A H
393
+ ATOM 384 HA ILE A 22 -3.323 2.858 -7.724 1.00 0.00 A H
394
+ ATOM 385 HB ILE A 22 -1.641 3.937 -5.583 1.00 0.00 A H
395
+ ATOM 386 HG12 ILE A 22 -3.303 1.431 -5.854 1.00 0.00 A H
396
+ ATOM 387 HG13 ILE A 22 -1.644 1.648 -6.393 1.00 0.00 A H
397
+ ATOM 388 HG21 ILE A 22 -3.386 3.774 -3.895 1.00 0.00 A H
398
+ ATOM 389 HG22 ILE A 22 -4.586 3.420 -5.193 1.00 0.00 A H
399
+ ATOM 390 HG23 ILE A 22 -3.805 5.042 -5.015 1.00 0.00 A H
400
+ ATOM 391 HD11 ILE A 22 -2.353 1.916 -3.475 1.00 0.00 A H
401
+ ATOM 392 HD12 ILE A 22 -0.774 1.745 -4.092 1.00 0.00 A H
402
+ ATOM 393 HD13 ILE A 22 -1.877 0.435 -4.288 1.00 0.00 A H
403
+ ATOM 394 N GLU A 23 -2.431 6.103 -7.781 1.00 0.00 A N
404
+ ATOM 395 CA GLU A 23 -2.759 7.466 -8.006 1.00 0.00 A C
405
+ ATOM 396 C GLU A 23 -3.209 7.813 -9.404 1.00 0.00 A C
406
+ ATOM 397 O GLU A 23 -3.256 8.965 -9.767 1.00 0.00 A O
407
+ ATOM 398 CB GLU A 23 -1.582 8.400 -7.487 1.00 0.00 A C
408
+ ATOM 399 CG GLU A 23 -1.419 8.361 -5.929 1.00 0.00 A C
409
+ ATOM 400 CD GLU A 23 -2.564 9.086 -5.167 1.00 0.00 A C
410
+ ATOM 401 OE1 GLU A 23 -2.706 8.894 -3.960 1.00 0.00 A O
411
+ ATOM 402 OE2 GLU A 23 -3.293 9.878 -5.773 1.00 0.00 A O
412
+ ATOM 403 H GLU A 23 -1.488 5.825 -7.549 1.00 0.00 A H
413
+ ATOM 404 HA GLU A 23 -3.614 7.810 -7.423 1.00 0.00 A H
414
+ ATOM 405 HB2 GLU A 23 -0.634 8.208 -7.990 1.00 0.00 A H
415
+ ATOM 406 HB3 GLU A 23 -1.800 9.418 -7.810 1.00 0.00 A H
416
+ ATOM 407 HG2 GLU A 23 -1.363 7.319 -5.612 1.00 0.00 A H
417
+ ATOM 408 HG3 GLU A 23 -0.457 8.790 -5.649 1.00 0.00 A H
418
+ ATOM 409 N LYS A 24 -3.269 6.761 -10.225 1.00 0.00 A N
419
+ ATOM 410 CA LYS A 24 -3.589 6.810 -11.637 1.00 0.00 A C
420
+ ATOM 411 C LYS A 24 -2.768 7.800 -12.528 1.00 0.00 A C
421
+ ATOM 412 O LYS A 24 -3.199 8.476 -13.516 1.00 0.00 A O
422
+ ATOM 413 CB LYS A 24 -5.126 6.888 -11.900 1.00 0.00 A C
423
+ ATOM 414 CG LYS A 24 -5.380 6.277 -13.323 1.00 0.00 A C
424
+ ATOM 415 CD LYS A 24 -6.773 6.848 -13.707 1.00 0.00 A C
425
+ ATOM 416 CE LYS A 24 -7.413 6.384 -15.036 1.00 0.00 A C
426
+ ATOM 417 NZ LYS A 24 -7.853 4.924 -14.863 1.00 0.00 A N
427
+ ATOM 418 H LYS A 24 -3.126 5.851 -9.811 1.00 0.00 A H
428
+ ATOM 419 HA LYS A 24 -3.421 5.789 -11.979 1.00 0.00 A H
429
+ ATOM 420 HB2 LYS A 24 -5.542 6.226 -11.140 1.00 0.00 A H
430
+ ATOM 421 HB3 LYS A 24 -5.622 7.857 -11.854 1.00 0.00 A H
431
+ ATOM 422 HG2 LYS A 24 -4.712 6.681 -14.083 1.00 0.00 A H
432
+ ATOM 423 HG3 LYS A 24 -5.440 5.189 -13.344 1.00 0.00 A H
433
+ ATOM 424 HD2 LYS A 24 -7.522 6.502 -12.995 1.00 0.00 A H
434
+ ATOM 425 HD3 LYS A 24 -6.659 7.923 -13.850 1.00 0.00 A H
435
+ ATOM 426 HE2 LYS A 24 -8.291 6.991 -15.253 1.00 0.00 A H
436
+ ATOM 427 HE3 LYS A 24 -6.776 6.445 -15.919 1.00 0.00 A H
437
+ ATOM 428 HZ1 LYS A 24 -8.492 4.798 -14.091 1.00 0.00 A H
438
+ ATOM 429 HZ2 LYS A 24 -7.095 4.257 -14.887 1.00 0.00 A H
439
+ ATOM 430 HZ3 LYS A 24 -8.414 4.683 -15.667 1.00 0.00 A H
440
+ ATOM 431 N PHE A 25 -1.498 7.886 -12.167 1.00 0.00 A N
441
+ ATOM 432 CA PHE A 25 -0.453 8.639 -12.825 1.00 0.00 A C
442
+ ATOM 433 C PHE A 25 0.387 7.828 -13.793 1.00 0.00 A C
443
+ ATOM 434 O PHE A 25 0.775 6.700 -13.522 1.00 0.00 A O
444
+ ATOM 435 CB PHE A 25 0.452 9.173 -11.726 1.00 0.00 A C
445
+ ATOM 436 CG PHE A 25 1.736 9.761 -12.303 1.00 0.00 A C
446
+ ATOM 437 CD1 PHE A 25 2.907 9.005 -12.538 1.00 0.00 A C
447
+ ATOM 438 CD2 PHE A 25 1.758 11.178 -12.564 1.00 0.00 A C
448
+ ATOM 439 CE1 PHE A 25 4.105 9.587 -13.043 1.00 0.00 A C
449
+ ATOM 440 CE2 PHE A 25 2.994 11.728 -13.084 1.00 0.00 A C
450
+ ATOM 441 CZ PHE A 25 4.085 10.962 -13.279 1.00 0.00 A C
451
+ ATOM 442 H PHE A 25 -1.231 7.421 -11.311 1.00 0.00 A H
452
+ ATOM 443 HA PHE A 25 -0.893 9.530 -13.275 1.00 0.00 A H
453
+ ATOM 444 HB2 PHE A 25 -0.002 10.009 -11.193 1.00 0.00 A H
454
+ ATOM 445 HB3 PHE A 25 0.748 8.413 -11.002 1.00 0.00 A H
455
+ ATOM 446 HD1 PHE A 25 2.979 7.945 -12.345 1.00 0.00 A H
456
+ ATOM 447 HD2 PHE A 25 0.921 11.788 -12.258 1.00 0.00 A H
457
+ ATOM 448 HE1 PHE A 25 4.994 8.998 -13.217 1.00 0.00 A H
458
+ ATOM 449 HE2 PHE A 25 2.881 12.757 -13.392 1.00 0.00 A H
459
+ ATOM 450 HZ PHE A 25 4.965 11.501 -13.596 1.00 0.00 A H
460
+ ATOM 451 N LYS A 26 0.696 8.387 -15.072 1.00 0.00 A N
461
+ ATOM 452 CA LYS A 26 1.513 7.610 -16.075 1.00 0.00 A C
462
+ ATOM 453 C LYS A 26 2.702 8.334 -16.546 1.00 0.00 A C
463
+ ATOM 454 O LYS A 26 3.520 7.917 -17.351 1.00 0.00 A O
464
+ ATOM 455 CB LYS A 26 0.566 7.240 -17.203 1.00 0.00 A C
465
+ ATOM 456 CG LYS A 26 -0.557 6.295 -16.712 1.00 0.00 A C
466
+ ATOM 457 CD LYS A 26 -1.581 6.037 -17.844 1.00 0.00 A C
467
+ ATOM 458 CE LYS A 26 -2.532 7.199 -18.062 1.00 0.00 A C
468
+ ATOM 459 NZ LYS A 26 -3.664 6.645 -18.781 1.00 0.00 A N
469
+ ATOM 460 H LYS A 26 0.297 9.279 -15.326 1.00 0.00 A H
470
+ ATOM 461 HA LYS A 26 1.909 6.715 -15.596 1.00 0.00 A H
471
+ ATOM 462 HB2 LYS A 26 0.244 8.128 -17.747 1.00 0.00 A H
472
+ ATOM 463 HB3 LYS A 26 1.162 6.746 -17.971 1.00 0.00 A H
473
+ ATOM 464 HG2 LYS A 26 -0.126 5.320 -16.482 1.00 0.00 A H
474
+ ATOM 465 HG3 LYS A 26 -1.081 6.683 -15.839 1.00 0.00 A H
475
+ ATOM 466 HD2 LYS A 26 -0.950 5.857 -18.714 1.00 0.00 A H
476
+ ATOM 467 HD3 LYS A 26 -2.032 5.073 -17.610 1.00 0.00 A H
477
+ ATOM 468 HE2 LYS A 26 -2.799 7.553 -17.066 1.00 0.00 A H
478
+ ATOM 469 HE3 LYS A 26 -2.053 8.032 -18.575 1.00 0.00 A H
479
+ ATOM 470 HZ1 LYS A 26 -3.320 5.937 -19.414 1.00 0.00 A H
480
+ ATOM 471 HZ2 LYS A 26 -4.088 7.285 -19.437 1.00 0.00 A H
481
+ ATOM 472 HZ3 LYS A 26 -4.371 6.208 -18.207 1.00 0.00 A H
482
+ ATOM 473 N GLY A 27 2.925 9.560 -16.181 1.00 0.00 A N
483
+ ATOM 474 CA GLY A 27 3.925 10.536 -16.724 1.00 0.00 A C
484
+ ATOM 475 C GLY A 27 3.505 11.237 -18.002 1.00 0.00 A C
485
+ ATOM 476 O GLY A 27 2.515 10.891 -18.640 1.00 0.00 A O
486
+ ATOM 477 H GLY A 27 2.449 9.820 -15.329 1.00 0.00 A H
487
+ ATOM 478 HA2 GLY A 27 3.974 11.288 -15.937 1.00 0.00 A H
488
+ ATOM 479 HA3 GLY A 27 4.845 9.957 -16.805 1.00 0.00 A H
489
+ ATOM 480 N ARG A 28 4.361 12.092 -18.555 1.00 0.00 A N
490
+ ATOM 481 CA ARG A 28 4.198 12.643 -19.927 1.00 0.00 A C
491
+ ATOM 482 C ARG A 28 4.508 11.676 -21.108 1.00 0.00 A C
492
+ ATOM 483 O ARG A 28 5.715 11.485 -21.411 1.00 0.00 A O
493
+ ATOM 484 CB ARG A 28 4.721 14.125 -20.019 1.00 0.00 A C
494
+ ATOM 485 CG ARG A 28 6.244 14.390 -19.960 1.00 0.00 A C
495
+ ATOM 486 CD ARG A 28 6.638 15.892 -19.830 1.00 0.00 A C
496
+ ATOM 487 NE ARG A 28 6.120 16.567 -18.672 1.00 0.00 A N
497
+ ATOM 488 CZ ARG A 28 6.549 16.544 -17.395 1.00 0.00 A C
498
+ ATOM 489 NH1 ARG A 28 7.641 15.897 -17.049 1.00 0.00 A N
499
+ ATOM 490 NH2 ARG A 28 5.992 17.092 -16.384 1.00 0.00 A N
500
+ ATOM 491 OXT ARG A 28 3.581 10.995 -21.640 1.00 0.00 A O
501
+ ATOM 492 H ARG A 28 5.119 12.430 -17.980 1.00 0.00 A H
502
+ ATOM 493 HA ARG A 28 3.136 12.803 -20.116 1.00 0.00 A H
503
+ ATOM 494 HB2 ARG A 28 4.447 14.543 -20.988 1.00 0.00 A H
504
+ ATOM 495 HB3 ARG A 28 4.368 14.713 -19.172 1.00 0.00 A H
505
+ ATOM 496 HG2 ARG A 28 6.640 13.731 -19.187 1.00 0.00 A H
506
+ ATOM 497 HG3 ARG A 28 6.596 13.953 -20.894 1.00 0.00 A H
507
+ ATOM 498 HD2 ARG A 28 7.719 15.846 -19.699 1.00 0.00 A H
508
+ ATOM 499 HD3 ARG A 28 6.516 16.420 -20.776 1.00 0.00 A H
509
+ ATOM 500 HE ARG A 28 5.316 17.165 -18.795 1.00 0.00 A H
510
+ ATOM 501 HH11 ARG A 28 8.207 15.416 -17.733 1.00 0.00 A H
511
+ ATOM 502 HH12 ARG A 28 7.972 15.597 -16.143 1.00 0.00 A H
512
+ ATOM 503 HH21 ARG A 28 5.062 17.442 -16.564 1.00 0.00 A H
513
+ ATOM 504 HH22 ARG A 28 6.402 16.979 -15.468 1.00 0.00 A H
514
+ ENDMDL
515
+ END
entangled-tps/data/bbl/bbl.h5 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5f1bc7e9cc2cfea8490cae88ee65bc1e2695c9ecbb15b6c25e1a029dbafd54f5
3
+ size 28951641
entangled-tps/data/bbl/folded.pdb ADDED
@@ -0,0 +1,917 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ HEADER TRANSFERASE 06-NOV-09 2WXC
2
+ TITLE THE FOLDING MECHANISM OF BBL: PLASTICITY OF TRANSITION-STATE STRUCTURE
3
+ TITLE 2 OBSERVED WITHIN AN ULTRAFAST FOLDING PROTEIN FAMILY.
4
+ COMPND MOL_ID: 1;
5
+ COMPND 2 MOLECULE: DIHYDROLIPOYLTRANSSUCCINASE;
6
+ COMPND 3 CHAIN: A;
7
+ COMPND 4 FRAGMENT: RESIDUES 109-153;
8
+ COMPND 5 EC: 2.3.1.61;
9
+ COMPND 6 ENGINEERED: YES;
10
+ COMPND 7 MUTATION: YES
11
+ SOURCE MOL_ID: 1;
12
+ SOURCE 2 ORGANISM_SCIENTIFIC: ESCHERICHIA COLI;
13
+ SOURCE 3 ORGANISM_TAXID: 562;
14
+ SOURCE 4 EXPRESSION_SYSTEM: ESCHERICHIA COLI;
15
+ SOURCE 5 EXPRESSION_SYSTEM_TAXID: 562;
16
+ SOURCE 6 EXPRESSION_SYSTEM_VECTOR: MODIFIED PRSETA
17
+ KEYWDS LIPOYL, TRANSFERASE, ACYLTRANSFERASE
18
+ EXPDTA SOLUTION NMR
19
+ NUMMDL 20
20
+ AUTHOR H.NEUWEILER,T.D.SHARPE,T.J.RUTHERFORD,C.M.JOHNSON,M.D.ALLEN,
21
+ AUTHOR 2 N.FERGUSON,A.R.FERSHT
22
+ REVDAT 3 15-MAY-24 2WXC 1 REMARK
23
+ REVDAT 2 19-APR-17 2WXC 1 REMARK
24
+ REVDAT 1 17-NOV-09 2WXC 0
25
+ SPRSDE 17-NOV-09 2WXC 2WAV
26
+ JRNL AUTH H.NEUWEILER,T.D.SHARPE,T.J.RUTHERFORD,C.M.JOHNSON,M.D.ALLEN,
27
+ JRNL AUTH 2 N.FERGUSON,A.R.FERSHT
28
+ JRNL TITL THE FOLDING MECHANISM OF BBL: PLASTICITY OF TRANSITION-STATE
29
+ JRNL TITL 2 STRUCTURE OBSERVED WITHIN AN ULTRAFAST FOLDING PROTEIN
30
+ JRNL TITL 3 FAMILY.
31
+ JRNL REF J.MOL.BIOL. V. 390 1060 2009
32
+ JRNL REFN ISSN 0022-2836
33
+ JRNL PMID 19445954
34
+ JRNL DOI 10.1016/J.JMB.2009.05.011
35
+ REMARK 2
36
+ REMARK 2 RESOLUTION. NOT APPLICABLE.
37
+ REMARK 3
38
+ REMARK 3 REFINEMENT.
39
+ REMARK 3 PROGRAM : CNS 1.1
40
+ REMARK 3 AUTHORS : BRUNGER,ADAMS,CLORE,DELANO,GROS,GROSSE-
41
+ REMARK 3 KUNSTLEVE,JIANG,KUSZEWSKI,NILGES,PANNU,READ, RICE,
42
+ REMARK 3 SIMONSON,WARREN
43
+ REMARK 3
44
+ REMARK 3 OTHER REFINEMENT REMARKS: NULL
45
+ REMARK 4
46
+ REMARK 4 2WXC COMPLIES WITH FORMAT V. 3.30, 13-JUL-11
47
+ REMARK 100
48
+ REMARK 100 THIS ENTRY HAS BEEN PROCESSED BY PDBE ON 06-NOV-09.
49
+ REMARK 100 THE DEPOSITION ID IS D_1290041668.
50
+ REMARK 210
51
+ REMARK 210 EXPERIMENTAL DETAILS
52
+ REMARK 210 EXPERIMENT TYPE : NMR
53
+ REMARK 210 TEMPERATURE (KELVIN) : 298.0
54
+ REMARK 210 PH : 7.0
55
+ REMARK 210 IONIC STRENGTH : NULL
56
+ REMARK 210 PRESSURE : 1.0 ATM
57
+ REMARK 210 SAMPLE CONTENTS : 10% WATER/90% D2O
58
+ REMARK 210
59
+ REMARK 210 NMR EXPERIMENTS CONDUCTED : NULL
60
+ REMARK 210 SPECTROMETER FIELD STRENGTH : 600 MHZ; 800 MHZ; 500 MHZ
61
+ REMARK 210 SPECTROMETER MODEL : AVANCE; DMX
62
+ REMARK 210 SPECTROMETER MANUFACTURER : BRUKER
63
+ REMARK 210
64
+ REMARK 210 STRUCTURE DETERMINATION.
65
+ REMARK 210 SOFTWARE USED : ANSIG 3.3
66
+ REMARK 210 METHOD USED : CNS
67
+ REMARK 210
68
+ REMARK 210 CONFORMERS, NUMBER CALCULATED : 20
69
+ REMARK 210 CONFORMERS, NUMBER SUBMITTED : 20
70
+ REMARK 210 CONFORMERS, SELECTION CRITERIA : NO VIOLATIONS
71
+ REMARK 210
72
+ REMARK 210 BEST REPRESENTATIVE CONFORMER IN THIS ENSEMBLE : 1
73
+ REMARK 210
74
+ REMARK 210 REMARK: THE STRUCTURE WAS DETERMINED USING TRIPLE-RESONANCE NMR
75
+ REMARK 210 SPECTROSCOPY ON 13C, 15N-LABELED MATERIAL AND BU 1H METHODS
76
+ REMARK 215
77
+ REMARK 215 NMR STUDY
78
+ REMARK 215 THE COORDINATES IN THIS ENTRY WERE GENERATED FROM SOLUTION
79
+ REMARK 215 NMR DATA. PROTEIN DATA BANK CONVENTIONS REQUIRE THAT
80
+ REMARK 215 CRYST1 AND SCALE RECORDS BE INCLUDED, BUT THE VALUES ON
81
+ REMARK 215 THESE RECORDS ARE MEANINGLESS.
82
+ REMARK 300
83
+ REMARK 300 BIOMOLECULE: 1
84
+ REMARK 300 SEE REMARK 350 FOR THE AUTHOR PROVIDED AND/OR PROGRAM
85
+ REMARK 300 GENERATED ASSEMBLY INFORMATION FOR THE STRUCTURE IN
86
+ REMARK 300 THIS ENTRY. THE REMARK MAY ALSO PROVIDE INFORMATION ON
87
+ REMARK 300 BURIED SURFACE AREA.
88
+ REMARK 350
89
+ REMARK 350 COORDINATES FOR A COMPLETE MULTIMER REPRESENTING THE KNOWN
90
+ REMARK 350 BIOLOGICALLY SIGNIFICANT OLIGOMERIZATION STATE OF THE
91
+ REMARK 350 MOLECULE CAN BE GENERATED BY APPLYING BIOMT TRANSFORMATIONS
92
+ REMARK 350 GIVEN BELOW. BOTH NON-CRYSTALLOGRAPHIC AND
93
+ REMARK 350 CRYSTALLOGRAPHIC OPERATIONS ARE GIVEN.
94
+ REMARK 350
95
+ REMARK 350 BIOMOLECULE: 1
96
+ REMARK 350 AUTHOR DETERMINED BIOLOGICAL UNIT: MONOMERIC
97
+ REMARK 350 APPLY THE FOLLOWING TO CHAINS: A
98
+ REMARK 350 BIOMT1 1 1.000000 0.000000 0.000000 0.00000
99
+ REMARK 350 BIOMT2 1 0.000000 1.000000 0.000000 0.00000
100
+ REMARK 350 BIOMT3 1 0.000000 0.000000 1.000000 0.00000
101
+ REMARK 400
102
+ REMARK 400 COMPOUND
103
+ REMARK 400 ENGINEERED RESIDUE IN CHAIN A, HIS 125 TO TRP
104
+ REMARK 500
105
+ REMARK 500 GEOMETRY AND STEREOCHEMISTRY
106
+ REMARK 500 SUBTOPIC: CLOSE CONTACTS
107
+ REMARK 500
108
+ REMARK 500 THE FOLLOWING ATOMS ARE IN CLOSE CONTACT.
109
+ REMARK 500
110
+ REMARK 500 ATM1 RES C SSEQI ATM2 RES C SSEQI DISTANCE
111
+ REMARK 500
112
+ REMARK 500 REMARK: NULL
113
+ REMARK 500
114
+ REMARK 500 GEOMETRY AND STEREOCHEMISTRY
115
+ REMARK 500 SUBTOPIC: TORSION ANGLES
116
+ REMARK 500
117
+ REMARK 500 TORSION ANGLES OUTSIDE THE EXPECTED RAMACHANDRAN REGIONS:
118
+ REMARK 500 (M=MODEL NUMBER; RES=RESIDUE NAME; C=CHAIN IDENTIFIER;
119
+ REMARK 500 SSEQ=SEQUENCE NUMBER; I=INSERTION CODE).
120
+ REMARK 500
121
+ REMARK 500 STANDARD TABLE:
122
+ REMARK 500 FORMAT:(10X,I3,1X,A3,1X,A1,I4,A1,4X,F7.2,3X,F7.2)
123
+ REMARK 500
124
+ REMARK 500 EXPECTED VALUES: GJ KLEYWEGT AND TA JONES (1996). PHI/PSI-
125
+ REMARK 500 CHOLOGY: RAMACHANDRAN REVISITED. STRUCTURE 4, 1395 - 1400
126
+ REMARK 500
127
+ REMARK 500 M RES CSSEQI PSI PHI
128
+ REMARK 500 1 ASN A 127 -56.99 -176.59
129
+ REMARK 500 1 THR A 152 75.34 -166.97
130
+ REMARK 500 1 VAL A 154 38.88 -145.01
131
+ REMARK 500 2 ASN A 128 77.69 -117.27
132
+ REMARK 500 2 ASP A 129 81.93 61.13
133
+ REMARK 500 2 VAL A 154 97.06 59.60
134
+ REMARK 500 2 LYS A 169 42.53 -107.72
135
+ REMARK 500 3 SER A 125 -41.83 -174.18
136
+ REMARK 500 3 VAL A 154 -66.52 -128.07
137
+ REMARK 500 4 SER A 125 78.26 61.16
138
+ REMARK 500 4 ASN A 127 -55.46 -125.66
139
+ REMARK 500 4 LYS A 169 40.04 -104.93
140
+ REMARK 500 6 SER A 125 -41.86 -172.89
141
+ REMARK 500 6 GLN A 126 86.60 -66.89
142
+ REMARK 500 6 VAL A 154 117.49 -176.56
143
+ REMARK 500 7 ASN A 127 -176.99 58.97
144
+ REMARK 500 7 ASP A 129 79.62 -118.99
145
+ REMARK 500 7 THR A 152 35.51 -172.29
146
+ REMARK 500 7 VAL A 154 60.30 -178.20
147
+ REMARK 500 7 ARG A 157 147.59 -177.35
148
+ REMARK 500 8 LYS A 169 61.40 -115.08
149
+ REMARK 500 9 SER A 125 -68.65 -133.05
150
+ REMARK 500 9 GLN A 126 84.50 59.92
151
+ REMARK 500 9 ASN A 127 -46.99 -157.68
152
+ REMARK 500 9 ASN A 128 -74.26 -79.09
153
+ REMARK 500 9 ASP A 129 152.20 61.54
154
+ REMARK 500 9 VAL A 154 -67.66 69.25
155
+ REMARK 500 9 LYS A 169 35.29 -96.97
156
+ REMARK 500 10 ASN A 128 41.95 -150.05
157
+ REMARK 500 10 VAL A 154 -54.39 -135.90
158
+ REMARK 500 10 LYS A 169 68.50 -112.16
159
+ REMARK 500 11 GLN A 126 31.26 -162.46
160
+ REMARK 500 11 ASN A 128 169.74 60.39
161
+ REMARK 500 11 LYS A 169 34.83 -98.40
162
+ REMARK 500 12 ASN A 128 98.11 61.75
163
+ REMARK 500 12 ASP A 129 -56.99 -120.24
164
+ REMARK 500 12 THR A 152 62.97 -114.42
165
+ REMARK 500 12 VAL A 154 -46.08 -147.26
166
+ REMARK 500 12 LYS A 169 48.67 -92.96
167
+ REMARK 500 13 SER A 125 -57.88 -164.71
168
+ REMARK 500 13 VAL A 154 51.81 -174.22
169
+ REMARK 500 14 GLN A 126 99.86 60.44
170
+ REMARK 500 14 THR A 152 32.54 -163.83
171
+ REMARK 500 14 LYS A 169 42.84 -95.63
172
+ REMARK 500 15 ASP A 129 80.39 -163.11
173
+ REMARK 500 15 THR A 152 -70.82 -139.61
174
+ REMARK 500 15 VAL A 154 -44.96 -158.72
175
+ REMARK 500 16 SER A 125 33.57 -163.35
176
+ REMARK 500 16 THR A 152 36.21 -97.85
177
+ REMARK 500 17 ASN A 128 42.03 -104.81
178
+ REMARK 500
179
+ REMARK 500 THIS ENTRY HAS 62 RAMACHANDRAN OUTLIERS.
180
+ REMARK 500
181
+ REMARK 500 REMARK: NULL
182
+ REMARK 999
183
+ REMARK 999 SEQUENCE
184
+ REMARK 999 HIS-TRP POINT MUTATION WAS INTRODUCED TO ENABLE FOLDING
185
+ REMARK 999 ANALYSIS
186
+ DBREF 2WXC A 124 125 PDB 2WXC 2WXC 124 125
187
+ DBREF 2WXC A 126 170 UNP B7M5P0 B7M5P0_ECO8A 109 153
188
+ SEQADV 2WXC TRP A 142 UNP B7M5P0 HIS 125 ENGINEERED MUTATION
189
+ SEQRES 1 A 47 GLY SER GLN ASN ASN ASP ALA LEU SER PRO ALA ILE ARG
190
+ SEQRES 2 A 47 ARG LEU LEU ALA GLU TRP ASN LEU ASP ALA SER ALA ILE
191
+ SEQRES 3 A 47 LYS GLY THR GLY VAL GLY GLY ARG LEU THR ARG GLU ASP
192
+ SEQRES 4 A 47 VAL GLU LYS HIS LEU ALA LYS ALA
193
+ HELIX 1 1 SER A 132 ASN A 143 1 12
194
+ HELIX 2 2 ASP A 145 ILE A 149 5 5
195
+ HELIX 3 3 THR A 159 ALA A 170 1 12
196
+ CRYST1 1.000 1.000 1.000 90.00 90.00 90.00 P 1 1
197
+ ORIGX1 1.000000 0.000000 0.000000 0.00000
198
+ ORIGX2 0.000000 1.000000 0.000000 0.00000
199
+ ORIGX3 0.000000 0.000000 1.000000 0.00000
200
+ SCALE1 1.000000 0.000000 0.000000 0.00000
201
+ SCALE2 0.000000 1.000000 0.000000 0.00000
202
+ SCALE3 0.000000 0.000000 1.000000 0.00000
203
+ MODEL 1
204
+ ATOM 1 N GLY A 124 -7.122 -14.918 15.009 1.00 0.00 N
205
+ ATOM 2 CA GLY A 124 -7.128 -13.588 15.678 1.00 0.00 C
206
+ ATOM 3 C GLY A 124 -7.129 -12.440 14.689 1.00 0.00 C
207
+ ATOM 4 O GLY A 124 -8.187 -11.935 14.313 1.00 0.00 O
208
+ ATOM 5 H1 GLY A 124 -7.460 -14.826 14.030 1.00 0.00 H
209
+ ATOM 6 H2 GLY A 124 -6.158 -15.307 14.997 1.00 0.00 H
210
+ ATOM 7 H3 GLY A 124 -7.743 -15.577 15.518 1.00 0.00 H
211
+ ATOM 8 HA2 GLY A 124 -8.009 -13.513 16.299 1.00 0.00 H
212
+ ATOM 9 HA3 GLY A 124 -6.253 -13.508 16.306 1.00 0.00 H
213
+ ATOM 10 N SER A 125 -5.938 -12.025 14.266 1.00 0.00 N
214
+ ATOM 11 CA SER A 125 -5.805 -10.929 13.313 1.00 0.00 C
215
+ ATOM 12 C SER A 125 -5.331 -11.442 11.957 1.00 0.00 C
216
+ ATOM 13 O SER A 125 -5.677 -10.884 10.916 1.00 0.00 O
217
+ ATOM 14 CB SER A 125 -4.825 -9.881 13.845 1.00 0.00 C
218
+ ATOM 15 OG SER A 125 -3.537 -10.438 14.041 1.00 0.00 O
219
+ ATOM 16 H SER A 125 -5.131 -12.468 14.602 1.00 0.00 H
220
+ ATOM 17 HA SER A 125 -6.776 -10.473 13.193 1.00 0.00 H
221
+ ATOM 18 HB2 SER A 125 -4.749 -9.071 13.136 1.00 0.00 H
222
+ ATOM 19 HB3 SER A 125 -5.187 -9.500 14.789 1.00 0.00 H
223
+ ATOM 20 HG SER A 125 -3.021 -9.861 14.607 1.00 0.00 H
224
+ ATOM 21 N GLN A 126 -4.537 -12.508 11.978 1.00 0.00 N
225
+ ATOM 22 CA GLN A 126 -4.015 -13.096 10.749 1.00 0.00 C
226
+ ATOM 23 C GLN A 126 -5.111 -13.843 9.996 1.00 0.00 C
227
+ ATOM 24 O GLN A 126 -5.719 -14.773 10.526 1.00 0.00 O
228
+ ATOM 25 CB GLN A 126 -2.860 -14.047 11.066 1.00 0.00 C
229
+ ATOM 26 CG GLN A 126 -1.515 -13.349 11.188 1.00 0.00 C
230
+ ATOM 27 CD GLN A 126 -0.376 -14.318 11.436 1.00 0.00 C
231
+ ATOM 28 OE1 GLN A 126 -0.584 -15.423 11.938 1.00 0.00 O
232
+ ATOM 29 NE2 GLN A 126 0.838 -13.907 11.086 1.00 0.00 N
233
+ ATOM 30 H GLN A 126 -4.296 -12.908 12.839 1.00 0.00 H
234
+ ATOM 31 HA GLN A 126 -3.650 -12.294 10.127 1.00 0.00 H
235
+ ATOM 32 HB2 GLN A 126 -3.067 -14.549 11.999 1.00 0.00 H
236
+ ATOM 33 HB3 GLN A 126 -2.788 -14.783 10.279 1.00 0.00 H
237
+ ATOM 34 HG2 GLN A 126 -1.317 -12.813 10.272 1.00 0.00 H
238
+ ATOM 35 HG3 GLN A 126 -1.560 -12.651 12.011 1.00 0.00 H
239
+ ATOM 36 HE21 GLN A 126 0.928 -13.014 10.692 1.00 0.00 H
240
+ ATOM 37 HE22 GLN A 126 1.592 -14.514 11.235 1.00 0.00 H
241
+ ATOM 38 N ASN A 127 -5.358 -13.430 8.757 1.00 0.00 N
242
+ ATOM 39 CA ASN A 127 -6.381 -14.060 7.931 1.00 0.00 C
243
+ ATOM 40 C ASN A 127 -6.401 -13.452 6.532 1.00 0.00 C
244
+ ATOM 41 O ASN A 127 -6.247 -14.157 5.535 1.00 0.00 O
245
+ ATOM 42 CB ASN A 127 -7.757 -13.914 8.588 1.00 0.00 C
246
+ ATOM 43 CG ASN A 127 -8.334 -15.247 9.025 1.00 0.00 C
247
+ ATOM 44 OD1 ASN A 127 -8.196 -15.645 10.182 1.00 0.00 O
248
+ ATOM 45 ND2 ASN A 127 -8.981 -15.944 8.099 1.00 0.00 N
249
+ ATOM 46 H ASN A 127 -4.840 -12.683 8.390 1.00 0.00 H
250
+ ATOM 47 HA ASN A 127 -6.141 -15.109 7.850 1.00 0.00 H
251
+ ATOM 48 HB2 ASN A 127 -7.669 -13.280 9.457 1.00 0.00 H
252
+ ATOM 49 HB3 ASN A 127 -8.441 -13.460 7.885 1.00 0.00 H
253
+ ATOM 50 HD21 ASN A 127 -9.051 -15.564 7.199 1.00 0.00 H
254
+ ATOM 51 HD22 ASN A 127 -9.364 -16.808 8.355 1.00 0.00 H
255
+ ATOM 52 N ASN A 128 -6.590 -12.137 6.466 1.00 0.00 N
256
+ ATOM 53 CA ASN A 128 -6.629 -11.434 5.190 1.00 0.00 C
257
+ ATOM 54 C ASN A 128 -5.697 -10.227 5.206 1.00 0.00 C
258
+ ATOM 55 O ASN A 128 -5.769 -9.387 6.103 1.00 0.00 O
259
+ ATOM 56 CB ASN A 128 -8.057 -10.986 4.872 1.00 0.00 C
260
+ ATOM 57 CG ASN A 128 -8.604 -10.020 5.905 1.00 0.00 C
261
+ ATOM 58 OD1 ASN A 128 -9.305 -10.418 6.835 1.00 0.00 O
262
+ ATOM 59 ND2 ASN A 128 -8.285 -8.741 5.745 1.00 0.00 N
263
+ ATOM 60 H ASN A 128 -6.706 -11.630 7.296 1.00 0.00 H
264
+ ATOM 61 HA ASN A 128 -6.298 -12.118 4.424 1.00 0.00 H
265
+ ATOM 62 HB2 ASN A 128 -8.070 -10.499 3.909 1.00 0.00 H
266
+ ATOM 63 HB3 ASN A 128 -8.700 -11.853 4.841 1.00 0.00 H
267
+ ATOM 64 HD21 ASN A 128 -7.723 -8.496 4.981 1.00 0.00 H
268
+ ATOM 65 HD22 ASN A 128 -8.625 -8.094 6.398 1.00 0.00 H
269
+ ATOM 66 N ASP A 129 -4.822 -10.147 4.209 1.00 0.00 N
270
+ ATOM 67 CA ASP A 129 -3.875 -9.042 4.109 1.00 0.00 C
271
+ ATOM 68 C ASP A 129 -4.537 -7.810 3.501 1.00 0.00 C
272
+ ATOM 69 O ASP A 129 -5.453 -7.923 2.687 1.00 0.00 O
273
+ ATOM 70 CB ASP A 129 -2.666 -9.456 3.266 1.00 0.00 C
274
+ ATOM 71 CG ASP A 129 -1.474 -9.847 4.117 1.00 0.00 C
275
+ ATOM 72 OD1 ASP A 129 -1.257 -9.204 5.166 1.00 0.00 O
276
+ ATOM 73 OD2 ASP A 129 -0.757 -10.796 3.735 1.00 0.00 O
277
+ ATOM 74 H ASP A 129 -4.813 -10.848 3.524 1.00 0.00 H
278
+ ATOM 75 HA ASP A 129 -3.540 -8.801 5.107 1.00 0.00 H
279
+ ATOM 76 HB2 ASP A 129 -2.937 -10.300 2.650 1.00 0.00 H
280
+ ATOM 77 HB3 ASP A 129 -2.377 -8.630 2.631 1.00 0.00 H
281
+ ATOM 78 N ALA A 130 -4.064 -6.634 3.899 1.00 0.00 N
282
+ ATOM 79 CA ALA A 130 -4.607 -5.379 3.392 1.00 0.00 C
283
+ ATOM 80 C ALA A 130 -3.829 -4.890 2.171 1.00 0.00 C
284
+ ATOM 81 O ALA A 130 -3.974 -3.740 1.750 1.00 0.00 O
285
+ ATOM 82 CB ALA A 130 -4.594 -4.321 4.484 1.00 0.00 C
286
+ ATOM 83 H ALA A 130 -3.331 -6.608 4.550 1.00 0.00 H
287
+ ATOM 84 HA ALA A 130 -5.634 -5.554 3.107 1.00 0.00 H
288
+ ATOM 85 HB1 ALA A 130 -4.573 -4.802 5.451 1.00 0.00 H
289
+ ATOM 86 HB2 ALA A 130 -5.482 -3.711 4.405 1.00 0.00 H
290
+ ATOM 87 HB3 ALA A 130 -3.719 -3.698 4.372 1.00 0.00 H
291
+ ATOM 88 N LEU A 131 -2.999 -5.765 1.607 1.00 0.00 N
292
+ ATOM 89 CA LEU A 131 -2.199 -5.413 0.440 1.00 0.00 C
293
+ ATOM 90 C LEU A 131 -2.149 -6.552 -0.569 1.00 0.00 C
294
+ ATOM 91 O LEU A 131 -2.534 -7.683 -0.273 1.00 0.00 O
295
+ ATOM 92 CB LEU A 131 -0.771 -5.061 0.857 1.00 0.00 C
296
+ ATOM 93 CG LEU A 131 -0.628 -3.900 1.839 1.00 0.00 C
297
+ ATOM 94 CD1 LEU A 131 -1.464 -2.704 1.401 1.00 0.00 C
298
+ ATOM 95 CD2 LEU A 131 -1.010 -4.341 3.247 1.00 0.00 C
299
+ ATOM 96 H LEU A 131 -2.922 -6.667 1.983 1.00 0.00 H
300
+ ATOM 97 HA LEU A 131 -2.652 -4.553 -0.027 1.00 0.00 H
301
+ ATOM 98 HB2 LEU A 131 -0.328 -5.937 1.307 1.00 0.00 H
302
+ ATOM 99 HB3 LEU A 131 -0.213 -4.818 -0.032 1.00 0.00 H
303
+ ATOM 100 HG LEU A 131 0.405 -3.588 1.855 1.00 0.00 H
304
+ ATOM 101 HD11 LEU A 131 -1.944 -2.923 0.459 1.00 0.00 H
305
+ ATOM 102 HD12 LEU A 131 -2.214 -2.493 2.148 1.00 0.00 H
306
+ ATOM 103 HD13 LEU A 131 -0.822 -1.847 1.283 1.00 0.00 H
307
+ ATOM 104 HD21 LEU A 131 -1.338 -5.371 3.226 1.00 0.00 H
308
+ ATOM 105 HD22 LEU A 131 -0.152 -4.251 3.896 1.00 0.00 H
309
+ ATOM 106 HD23 LEU A 131 -1.810 -3.717 3.617 1.00 0.00 H
310
+ ATOM 107 N SER A 132 -1.646 -6.239 -1.756 1.00 0.00 N
311
+ ATOM 108 CA SER A 132 -1.507 -7.224 -2.817 1.00 0.00 C
312
+ ATOM 109 C SER A 132 -0.045 -7.644 -2.943 1.00 0.00 C
313
+ ATOM 110 O SER A 132 0.817 -7.121 -2.238 1.00 0.00 O
314
+ ATOM 111 CB SER A 132 -2.012 -6.654 -4.145 1.00 0.00 C
315
+ ATOM 112 OG SER A 132 -2.846 -7.583 -4.815 1.00 0.00 O
316
+ ATOM 113 H SER A 132 -1.342 -5.323 -1.916 1.00 0.00 H
317
+ ATOM 114 HA SER A 132 -2.099 -8.087 -2.552 1.00 0.00 H
318
+ ATOM 115 HB2 SER A 132 -2.577 -5.754 -3.956 1.00 0.00 H
319
+ ATOM 116 HB3 SER A 132 -1.169 -6.422 -4.780 1.00 0.00 H
320
+ ATOM 117 HG SER A 132 -3.547 -7.869 -4.225 1.00 0.00 H
321
+ ATOM 118 N PRO A 133 0.259 -8.596 -3.837 1.00 0.00 N
322
+ ATOM 119 CA PRO A 133 1.631 -9.074 -4.033 1.00 0.00 C
323
+ ATOM 120 C PRO A 133 2.596 -7.954 -4.404 1.00 0.00 C
324
+ ATOM 121 O PRO A 133 3.740 -7.934 -3.950 1.00 0.00 O
325
+ ATOM 122 CB PRO A 133 1.506 -10.077 -5.185 1.00 0.00 C
326
+ ATOM 123 CG PRO A 133 0.072 -10.484 -5.189 1.00 0.00 C
327
+ ATOM 124 CD PRO A 133 -0.700 -9.284 -4.718 1.00 0.00 C
328
+ ATOM 125 HA PRO A 133 1.998 -9.578 -3.152 1.00 0.00 H
329
+ ATOM 126 HB2 PRO A 133 1.783 -9.598 -6.113 1.00 0.00 H
330
+ ATOM 127 HB3 PRO A 133 2.154 -10.922 -5.003 1.00 0.00 H
331
+ ATOM 128 HG2 PRO A 133 -0.231 -10.755 -6.189 1.00 0.00 H
332
+ ATOM 129 HG3 PRO A 133 -0.077 -11.313 -4.513 1.00 0.00 H
333
+ ATOM 130 HD2 PRO A 133 -0.973 -8.658 -5.556 1.00 0.00 H
334
+ ATOM 131 HD3 PRO A 133 -1.577 -9.589 -4.169 1.00 0.00 H
335
+ ATOM 132 N ALA A 134 2.134 -7.023 -5.232 1.00 0.00 N
336
+ ATOM 133 CA ALA A 134 2.968 -5.905 -5.659 1.00 0.00 C
337
+ ATOM 134 C ALA A 134 3.196 -4.917 -4.523 1.00 0.00 C
338
+ ATOM 135 O ALA A 134 4.277 -4.347 -4.395 1.00 0.00 O
339
+ ATOM 136 CB ALA A 134 2.349 -5.206 -6.859 1.00 0.00 C
340
+ ATOM 137 H ALA A 134 1.215 -7.090 -5.564 1.00 0.00 H
341
+ ATOM 138 HA ALA A 134 3.925 -6.307 -5.958 1.00 0.00 H
342
+ ATOM 139 HB1 ALA A 134 2.095 -5.939 -7.612 1.00 0.00 H
343
+ ATOM 140 HB2 ALA A 134 3.055 -4.500 -7.270 1.00 0.00 H
344
+ ATOM 141 HB3 ALA A 134 1.455 -4.684 -6.551 1.00 0.00 H
345
+ ATOM 142 N ILE A 135 2.180 -4.721 -3.693 1.00 0.00 N
346
+ ATOM 143 CA ILE A 135 2.304 -3.808 -2.567 1.00 0.00 C
347
+ ATOM 144 C ILE A 135 3.112 -4.455 -1.457 1.00 0.00 C
348
+ ATOM 145 O ILE A 135 3.811 -3.776 -0.716 1.00 0.00 O
349
+ ATOM 146 CB ILE A 135 0.937 -3.387 -2.003 1.00 0.00 C
350
+ ATOM 147 CG1 ILE A 135 0.082 -2.740 -3.095 1.00 0.00 C
351
+ ATOM 148 CG2 ILE A 135 1.124 -2.433 -0.830 1.00 0.00 C
352
+ ATOM 149 CD1 ILE A 135 -0.910 -3.688 -3.731 1.00 0.00 C
353
+ ATOM 150 H ILE A 135 1.340 -5.205 -3.833 1.00 0.00 H
354
+ ATOM 151 HA ILE A 135 2.826 -2.921 -2.908 1.00 0.00 H
355
+ ATOM 152 HB ILE A 135 0.439 -4.271 -1.637 1.00 0.00 H
356
+ ATOM 153 HG12 ILE A 135 -0.473 -1.917 -2.669 1.00 0.00 H
357
+ ATOM 154 HG13 ILE A 135 0.730 -2.365 -3.874 1.00 0.00 H
358
+ ATOM 155 HG21 ILE A 135 1.752 -2.900 -0.082 1.00 0.00 H
359
+ ATOM 156 HG22 ILE A 135 1.592 -1.523 -1.176 1.00 0.00 H
360
+ ATOM 157 HG23 ILE A 135 0.162 -2.201 -0.398 1.00 0.00 H
361
+ ATOM 158 HD11 ILE A 135 -0.557 -4.703 -3.625 1.00 0.00 H
362
+ ATOM 159 HD12 ILE A 135 -1.868 -3.586 -3.244 1.00 0.00 H
363
+ ATOM 160 HD13 ILE A 135 -1.013 -3.451 -4.780 1.00 0.00 H
364
+ ATOM 161 N ARG A 136 3.012 -5.774 -1.345 1.00 0.00 N
365
+ ATOM 162 CA ARG A 136 3.751 -6.490 -0.318 1.00 0.00 C
366
+ ATOM 163 C ARG A 136 5.245 -6.423 -0.611 1.00 0.00 C
367
+ ATOM 164 O ARG A 136 6.058 -6.183 0.286 1.00 0.00 O
368
+ ATOM 165 CB ARG A 136 3.293 -7.949 -0.246 1.00 0.00 C
369
+ ATOM 166 CG ARG A 136 2.038 -8.154 0.585 1.00 0.00 C
370
+ ATOM 167 CD ARG A 136 1.807 -9.626 0.888 1.00 0.00 C
371
+ ATOM 168 NE ARG A 136 1.099 -10.304 -0.196 1.00 0.00 N
372
+ ATOM 169 CZ ARG A 136 -0.223 -10.283 -0.347 1.00 0.00 C
373
+ ATOM 170 NH1 ARG A 136 -0.987 -9.614 0.508 1.00 0.00 N
374
+ ATOM 171 NH2 ARG A 136 -0.785 -10.933 -1.358 1.00 0.00 N
375
+ ATOM 172 H ARG A 136 2.434 -6.272 -1.964 1.00 0.00 H
376
+ ATOM 173 HA ARG A 136 3.557 -6.006 0.630 1.00 0.00 H
377
+ ATOM 174 HB2 ARG A 136 3.099 -8.303 -1.247 1.00 0.00 H
378
+ ATOM 175 HB3 ARG A 136 4.087 -8.541 0.187 1.00 0.00 H
379
+ ATOM 176 HG2 ARG A 136 2.141 -7.618 1.516 1.00 0.00 H
380
+ ATOM 177 HG3 ARG A 136 1.190 -7.771 0.038 1.00 0.00 H
381
+ ATOM 178 HD2 ARG A 136 2.765 -10.104 1.033 1.00 0.00 H
382
+ ATOM 179 HD3 ARG A 136 1.224 -9.708 1.794 1.00 0.00 H
383
+ ATOM 180 HE ARG A 136 1.638 -10.805 -0.844 1.00 0.00 H
384
+ ATOM 181 HH11 ARG A 136 -0.571 -9.121 1.271 1.00 0.00 H
385
+ ATOM 182 HH12 ARG A 136 -1.980 -9.603 0.388 1.00 0.00 H
386
+ ATOM 183 HH21 ARG A 136 -0.215 -11.437 -2.007 1.00 0.00 H
387
+ ATOM 184 HH22 ARG A 136 -1.778 -10.918 -1.472 1.00 0.00 H
388
+ ATOM 185 N ARG A 137 5.606 -6.602 -1.882 1.00 0.00 N
389
+ ATOM 186 CA ARG A 137 7.001 -6.530 -2.275 1.00 0.00 C
390
+ ATOM 187 C ARG A 137 7.494 -5.102 -2.100 1.00 0.00 C
391
+ ATOM 188 O ARG A 137 8.551 -4.862 -1.521 1.00 0.00 O
392
+ ATOM 189 CB ARG A 137 7.189 -7.009 -3.723 1.00 0.00 C
393
+ ATOM 190 CG ARG A 137 6.996 -5.928 -4.775 1.00 0.00 C
394
+ ATOM 191 CD ARG A 137 7.210 -6.470 -6.179 1.00 0.00 C
395
+ ATOM 192 NE ARG A 137 8.508 -7.126 -6.321 1.00 0.00 N
396
+ ATOM 193 CZ ARG A 137 8.857 -7.856 -7.377 1.00 0.00 C
397
+ ATOM 194 NH1 ARG A 137 8.011 -8.026 -8.385 1.00 0.00 N
398
+ ATOM 195 NH2 ARG A 137 10.058 -8.418 -7.426 1.00 0.00 N
399
+ ATOM 196 H ARG A 137 4.917 -6.764 -2.566 1.00 0.00 H
400
+ ATOM 197 HA ARG A 137 7.563 -7.171 -1.615 1.00 0.00 H
401
+ ATOM 198 HB2 ARG A 137 8.189 -7.404 -3.829 1.00 0.00 H
402
+ ATOM 199 HB3 ARG A 137 6.480 -7.800 -3.919 1.00 0.00 H
403
+ ATOM 200 HG2 ARG A 137 5.992 -5.543 -4.700 1.00 0.00 H
404
+ ATOM 201 HG3 ARG A 137 7.703 -5.131 -4.595 1.00 0.00 H
405
+ ATOM 202 HD2 ARG A 137 6.430 -7.185 -6.397 1.00 0.00 H
406
+ ATOM 203 HD3 ARG A 137 7.153 -5.652 -6.880 1.00 0.00 H
407
+ ATOM 204 HE ARG A 137 9.152 -7.018 -5.589 1.00 0.00 H
408
+ ATOM 205 HH11 ARG A 137 7.104 -7.605 -8.354 1.00 0.00 H
409
+ ATOM 206 HH12 ARG A 137 8.280 -8.575 -9.176 1.00 0.00 H
410
+ ATOM 207 HH21 ARG A 137 10.700 -8.293 -6.670 1.00 0.00 H
411
+ ATOM 208 HH22 ARG A 137 10.321 -8.966 -8.220 1.00 0.00 H
412
+ ATOM 209 N LEU A 138 6.694 -4.158 -2.579 1.00 0.00 N
413
+ ATOM 210 CA LEU A 138 7.018 -2.744 -2.458 1.00 0.00 C
414
+ ATOM 211 C LEU A 138 7.164 -2.365 -0.993 1.00 0.00 C
415
+ ATOM 212 O LEU A 138 8.086 -1.653 -0.611 1.00 0.00 O
416
+ ATOM 213 CB LEU A 138 5.922 -1.892 -3.106 1.00 0.00 C
417
+ ATOM 214 CG LEU A 138 6.206 -1.453 -4.544 1.00 0.00 C
418
+ ATOM 215 CD1 LEU A 138 5.021 -1.765 -5.444 1.00 0.00 C
419
+ ATOM 216 CD2 LEU A 138 6.538 0.031 -4.595 1.00 0.00 C
420
+ ATOM 217 H LEU A 138 5.853 -4.420 -3.008 1.00 0.00 H
421
+ ATOM 218 HA LEU A 138 7.954 -2.568 -2.964 1.00 0.00 H
422
+ ATOM 219 HB2 LEU A 138 5.005 -2.464 -3.100 1.00 0.00 H
423
+ ATOM 220 HB3 LEU A 138 5.778 -1.007 -2.503 1.00 0.00 H
424
+ ATOM 221 HG LEU A 138 7.058 -2.000 -4.917 1.00 0.00 H
425
+ ATOM 222 HD11 LEU A 138 4.115 -1.767 -4.857 1.00 0.00 H
426
+ ATOM 223 HD12 LEU A 138 4.949 -1.015 -6.216 1.00 0.00 H
427
+ ATOM 224 HD13 LEU A 138 5.159 -2.737 -5.896 1.00 0.00 H
428
+ ATOM 225 HD21 LEU A 138 6.904 0.352 -3.631 1.00 0.00 H
429
+ ATOM 226 HD22 LEU A 138 7.296 0.205 -5.344 1.00 0.00 H
430
+ ATOM 227 HD23 LEU A 138 5.648 0.590 -4.846 1.00 0.00 H
431
+ ATOM 228 N LEU A 139 6.240 -2.853 -0.180 1.00 0.00 N
432
+ ATOM 229 CA LEU A 139 6.248 -2.578 1.250 1.00 0.00 C
433
+ ATOM 230 C LEU A 139 7.558 -3.027 1.879 1.00 0.00 C
434
+ ATOM 231 O LEU A 139 8.099 -2.352 2.755 1.00 0.00 O
435
+ ATOM 232 CB LEU A 139 5.069 -3.283 1.932 1.00 0.00 C
436
+ ATOM 233 CG LEU A 139 3.756 -2.498 1.970 1.00 0.00 C
437
+ ATOM 234 CD1 LEU A 139 2.759 -3.172 2.903 1.00 0.00 C
438
+ ATOM 235 CD2 LEU A 139 3.995 -1.056 2.398 1.00 0.00 C
439
+ ATOM 236 H LEU A 139 5.534 -3.417 -0.552 1.00 0.00 H
440
+ ATOM 237 HA LEU A 139 6.149 -1.513 1.381 1.00 0.00 H
441
+ ATOM 238 HB2 LEU A 139 4.882 -4.210 1.409 1.00 0.00 H
442
+ ATOM 239 HB3 LEU A 139 5.353 -3.515 2.948 1.00 0.00 H
443
+ ATOM 240 HG LEU A 139 3.329 -2.489 0.981 1.00 0.00 H
444
+ ATOM 241 HD11 LEU A 139 3.276 -3.541 3.775 1.00 0.00 H
445
+ ATOM 242 HD12 LEU A 139 2.009 -2.455 3.205 1.00 0.00 H
446
+ ATOM 243 HD13 LEU A 139 2.286 -3.995 2.388 1.00 0.00 H
447
+ ATOM 244 HD21 LEU A 139 4.960 -0.978 2.877 1.00 0.00 H
448
+ ATOM 245 HD22 LEU A 139 3.971 -0.415 1.531 1.00 0.00 H
449
+ ATOM 246 HD23 LEU A 139 3.224 -0.752 3.092 1.00 0.00 H
450
+ ATOM 247 N ALA A 140 8.056 -4.176 1.433 1.00 0.00 N
451
+ ATOM 248 CA ALA A 140 9.303 -4.723 1.959 1.00 0.00 C
452
+ ATOM 249 C ALA A 140 10.519 -3.909 1.525 1.00 0.00 C
453
+ ATOM 250 O ALA A 140 11.366 -3.561 2.348 1.00 0.00 O
454
+ ATOM 251 CB ALA A 140 9.461 -6.176 1.536 1.00 0.00 C
455
+ ATOM 252 H ALA A 140 7.566 -4.674 0.738 1.00 0.00 H
456
+ ATOM 253 HA ALA A 140 9.242 -4.694 3.032 1.00 0.00 H
457
+ ATOM 254 HB1 ALA A 140 9.109 -6.297 0.523 1.00 0.00 H
458
+ ATOM 255 HB2 ALA A 140 8.884 -6.808 2.196 1.00 0.00 H
459
+ ATOM 256 HB3 ALA A 140 10.503 -6.455 1.592 1.00 0.00 H
460
+ ATOM 257 N GLU A 141 10.604 -3.608 0.236 1.00 0.00 N
461
+ ATOM 258 CA GLU A 141 11.727 -2.835 -0.291 1.00 0.00 C
462
+ ATOM 259 C GLU A 141 11.593 -1.372 0.098 1.00 0.00 C
463
+ ATOM 260 O GLU A 141 12.571 -0.716 0.456 1.00 0.00 O
464
+ ATOM 261 CB GLU A 141 11.811 -2.952 -1.815 1.00 0.00 C
465
+ ATOM 262 CG GLU A 141 11.487 -4.336 -2.340 1.00 0.00 C
466
+ ATOM 263 CD GLU A 141 12.352 -5.415 -1.719 1.00 0.00 C
467
+ ATOM 264 OE1 GLU A 141 11.815 -6.497 -1.402 1.00 0.00 O
468
+ ATOM 265 OE2 GLU A 141 13.566 -5.178 -1.549 1.00 0.00 O
469
+ ATOM 266 H GLU A 141 9.903 -3.909 -0.370 1.00 0.00 H
470
+ ATOM 267 HA GLU A 141 12.628 -3.231 0.142 1.00 0.00 H
471
+ ATOM 268 HB2 GLU A 141 11.116 -2.252 -2.256 1.00 0.00 H
472
+ ATOM 269 HB3 GLU A 141 12.812 -2.696 -2.128 1.00 0.00 H
473
+ ATOM 270 HG2 GLU A 141 10.455 -4.551 -2.121 1.00 0.00 H
474
+ ATOM 271 HG3 GLU A 141 11.636 -4.345 -3.409 1.00 0.00 H
475
+ ATOM 272 N TRP A 142 10.370 -0.874 0.025 1.00 0.00 N
476
+ ATOM 273 CA TRP A 142 10.084 0.511 0.368 1.00 0.00 C
477
+ ATOM 274 C TRP A 142 9.892 0.672 1.877 1.00 0.00 C
478
+ ATOM 275 O TRP A 142 9.834 1.792 2.384 1.00 0.00 O
479
+ ATOM 276 CB TRP A 142 8.832 0.997 -0.372 1.00 0.00 C
480
+ ATOM 277 CG TRP A 142 8.995 1.033 -1.863 1.00 0.00 C
481
+ ATOM 278 CD1 TRP A 142 9.191 -0.031 -2.697 1.00 0.00 C
482
+ ATOM 279 CD2 TRP A 142 8.975 2.197 -2.696 1.00 0.00 C
483
+ ATOM 280 NE1 TRP A 142 9.295 0.401 -3.996 1.00 0.00 N
484
+ ATOM 281 CE2 TRP A 142 9.164 1.764 -4.022 1.00 0.00 C
485
+ ATOM 282 CE3 TRP A 142 8.814 3.562 -2.449 1.00 0.00 C
486
+ ATOM 283 CZ2 TRP A 142 9.197 2.650 -5.096 1.00 0.00 C
487
+ ATOM 284 CZ3 TRP A 142 8.846 4.441 -3.515 1.00 0.00 C
488
+ ATOM 285 CH2 TRP A 142 9.037 3.981 -4.825 1.00 0.00 C
489
+ ATOM 286 H TRP A 142 9.638 -1.458 -0.270 1.00 0.00 H
490
+ ATOM 287 HA TRP A 142 10.928 1.110 0.060 1.00 0.00 H
491
+ ATOM 288 HB2 TRP A 142 8.008 0.341 -0.143 1.00 0.00 H
492
+ ATOM 289 HB3 TRP A 142 8.590 1.993 -0.041 1.00 0.00 H
493
+ ATOM 290 HD1 TRP A 142 9.254 -1.059 -2.370 1.00 0.00 H
494
+ ATOM 291 HE1 TRP A 142 9.437 -0.173 -4.778 1.00 0.00 H
495
+ ATOM 292 HE3 TRP A 142 8.667 3.935 -1.446 1.00 0.00 H
496
+ ATOM 293 HZ2 TRP A 142 9.342 2.313 -6.111 1.00 0.00 H
497
+ ATOM 294 HZ3 TRP A 142 8.722 5.499 -3.343 1.00 0.00 H
498
+ ATOM 295 HH2 TRP A 142 9.056 4.704 -5.628 1.00 0.00 H
499
+ ATOM 296 N ASN A 143 9.795 -0.452 2.592 1.00 0.00 N
500
+ ATOM 297 CA ASN A 143 9.612 -0.422 4.041 1.00 0.00 C
501
+ ATOM 298 C ASN A 143 8.482 0.527 4.428 1.00 0.00 C
502
+ ATOM 299 O ASN A 143 8.675 1.457 5.210 1.00 0.00 O
503
+ ATOM 300 CB ASN A 143 10.912 0.000 4.731 1.00 0.00 C
504
+ ATOM 301 CG ASN A 143 11.784 -1.185 5.095 1.00 0.00 C
505
+ ATOM 302 OD1 ASN A 143 11.312 -2.321 5.164 1.00 0.00 O
506
+ ATOM 303 ND2 ASN A 143 13.065 -0.927 5.332 1.00 0.00 N
507
+ ATOM 304 H ASN A 143 9.849 -1.320 2.139 1.00 0.00 H
508
+ ATOM 305 HA ASN A 143 9.354 -1.420 4.362 1.00 0.00 H
509
+ ATOM 306 HB2 ASN A 143 11.471 0.644 4.069 1.00 0.00 H
510
+ ATOM 307 HB3 ASN A 143 10.673 0.540 5.635 1.00 0.00 H
511
+ ATOM 308 HD21 ASN A 143 13.371 0.001 5.259 1.00 0.00 H
512
+ ATOM 309 HD22 ASN A 143 13.652 -1.675 5.569 1.00 0.00 H
513
+ ATOM 310 N LEU A 144 7.301 0.286 3.868 1.00 0.00 N
514
+ ATOM 311 CA LEU A 144 6.140 1.121 4.150 1.00 0.00 C
515
+ ATOM 312 C LEU A 144 5.147 0.395 5.053 1.00 0.00 C
516
+ ATOM 313 O LEU A 144 5.117 -0.834 5.098 1.00 0.00 O
517
+ ATOM 314 CB LEU A 144 5.455 1.535 2.845 1.00 0.00 C
518
+ ATOM 315 CG LEU A 144 5.921 2.870 2.263 1.00 0.00 C
519
+ ATOM 316 CD1 LEU A 144 5.241 3.137 0.929 1.00 0.00 C
520
+ ATOM 317 CD2 LEU A 144 5.644 4.004 3.239 1.00 0.00 C
521
+ ATOM 318 H LEU A 144 7.211 -0.472 3.250 1.00 0.00 H
522
+ ATOM 319 HA LEU A 144 6.486 2.008 4.659 1.00 0.00 H
523
+ ATOM 320 HB2 LEU A 144 5.635 0.764 2.110 1.00 0.00 H
524
+ ATOM 321 HB3 LEU A 144 4.392 1.598 3.024 1.00 0.00 H
525
+ ATOM 322 HG LEU A 144 6.987 2.828 2.092 1.00 0.00 H
526
+ ATOM 323 HD11 LEU A 144 4.296 2.614 0.896 1.00 0.00 H
527
+ ATOM 324 HD12 LEU A 144 5.070 4.197 0.818 1.00 0.00 H
528
+ ATOM 325 HD13 LEU A 144 5.874 2.787 0.127 1.00 0.00 H
529
+ ATOM 326 HD21 LEU A 144 4.802 3.744 3.863 1.00 0.00 H
530
+ ATOM 327 HD22 LEU A 144 6.515 4.168 3.856 1.00 0.00 H
531
+ ATOM 328 HD23 LEU A 144 5.419 4.906 2.687 1.00 0.00 H
532
+ ATOM 329 N ASP A 145 4.337 1.166 5.772 1.00 0.00 N
533
+ ATOM 330 CA ASP A 145 3.342 0.599 6.673 1.00 0.00 C
534
+ ATOM 331 C ASP A 145 1.935 0.797 6.117 1.00 0.00 C
535
+ ATOM 332 O ASP A 145 1.444 1.922 6.030 1.00 0.00 O
536
+ ATOM 333 CB ASP A 145 3.451 1.241 8.057 1.00 0.00 C
537
+ ATOM 334 CG ASP A 145 3.205 0.247 9.177 1.00 0.00 C
538
+ ATOM 335 OD1 ASP A 145 2.727 0.669 10.250 1.00 0.00 O
539
+ ATOM 336 OD2 ASP A 145 3.490 -0.953 8.978 1.00 0.00 O
540
+ ATOM 337 H ASP A 145 4.409 2.140 5.692 1.00 0.00 H
541
+ ATOM 338 HA ASP A 145 3.537 -0.460 6.759 1.00 0.00 H
542
+ ATOM 339 HB2 ASP A 145 4.442 1.652 8.179 1.00 0.00 H
543
+ ATOM 340 HB3 ASP A 145 2.723 2.034 8.138 1.00 0.00 H
544
+ ATOM 341 N ALA A 146 1.293 -0.304 5.741 1.00 0.00 N
545
+ ATOM 342 CA ALA A 146 -0.055 -0.251 5.190 1.00 0.00 C
546
+ ATOM 343 C ALA A 146 -1.031 0.376 6.180 1.00 0.00 C
547
+ ATOM 344 O ALA A 146 -1.961 1.083 5.788 1.00 0.00 O
548
+ ATOM 345 CB ALA A 146 -0.520 -1.646 4.802 1.00 0.00 C
549
+ ATOM 346 H ALA A 146 1.738 -1.172 5.832 1.00 0.00 H
550
+ ATOM 347 HA ALA A 146 -0.026 0.354 4.296 1.00 0.00 H
551
+ ATOM 348 HB1 ALA A 146 -0.232 -2.347 5.571 1.00 0.00 H
552
+ ATOM 349 HB2 ALA A 146 -1.595 -1.650 4.696 1.00 0.00 H
553
+ ATOM 350 HB3 ALA A 146 -0.064 -1.929 3.865 1.00 0.00 H
554
+ ATOM 351 N SER A 147 -0.814 0.112 7.463 1.00 0.00 N
555
+ ATOM 352 CA SER A 147 -1.675 0.647 8.511 1.00 0.00 C
556
+ ATOM 353 C SER A 147 -1.648 2.173 8.515 1.00 0.00 C
557
+ ATOM 354 O SER A 147 -2.632 2.820 8.873 1.00 0.00 O
558
+ ATOM 355 CB SER A 147 -1.240 0.115 9.877 1.00 0.00 C
559
+ ATOM 356 OG SER A 147 0.067 0.557 10.204 1.00 0.00 O
560
+ ATOM 357 H SER A 147 -0.058 -0.459 7.711 1.00 0.00 H
561
+ ATOM 358 HA SER A 147 -2.683 0.318 8.312 1.00 0.00 H
562
+ ATOM 359 HB2 SER A 147 -1.925 0.469 10.634 1.00 0.00 H
563
+ ATOM 360 HB3 SER A 147 -1.249 -0.964 9.860 1.00 0.00 H
564
+ ATOM 361 HG SER A 147 0.018 1.205 10.911 1.00 0.00 H
565
+ ATOM 362 N ALA A 148 -0.515 2.742 8.116 1.00 0.00 N
566
+ ATOM 363 CA ALA A 148 -0.361 4.191 8.075 1.00 0.00 C
567
+ ATOM 364 C ALA A 148 -0.604 4.740 6.671 1.00 0.00 C
568
+ ATOM 365 O ALA A 148 -0.231 5.874 6.369 1.00 0.00 O
569
+ ATOM 366 CB ALA A 148 1.024 4.586 8.565 1.00 0.00 C
570
+ ATOM 367 H ALA A 148 0.236 2.174 7.842 1.00 0.00 H
571
+ ATOM 368 HA ALA A 148 -1.089 4.620 8.749 1.00 0.00 H
572
+ ATOM 369 HB1 ALA A 148 1.263 4.026 9.457 1.00 0.00 H
573
+ ATOM 370 HB2 ALA A 148 1.039 5.643 8.788 1.00 0.00 H
574
+ ATOM 371 HB3 ALA A 148 1.752 4.369 7.797 1.00 0.00 H
575
+ ATOM 372 N ILE A 149 -1.228 3.935 5.816 1.00 0.00 N
576
+ ATOM 373 CA ILE A 149 -1.514 4.350 4.448 1.00 0.00 C
577
+ ATOM 374 C ILE A 149 -2.976 4.095 4.092 1.00 0.00 C
578
+ ATOM 375 O ILE A 149 -3.486 2.990 4.276 1.00 0.00 O
579
+ ATOM 376 CB ILE A 149 -0.614 3.613 3.436 1.00 0.00 C
580
+ ATOM 377 CG1 ILE A 149 0.856 3.738 3.841 1.00 0.00 C
581
+ ATOM 378 CG2 ILE A 149 -0.828 4.164 2.034 1.00 0.00 C
582
+ ATOM 379 CD1 ILE A 149 1.711 2.578 3.380 1.00 0.00 C
583
+ ATOM 380 H ILE A 149 -1.502 3.042 6.111 1.00 0.00 H
584
+ ATOM 381 HA ILE A 149 -1.315 5.409 4.373 1.00 0.00 H
585
+ ATOM 382 HB ILE A 149 -0.891 2.570 3.433 1.00 0.00 H
586
+ ATOM 383 HG12 ILE A 149 1.266 4.641 3.413 1.00 0.00 H
587
+ ATOM 384 HG13 ILE A 149 0.923 3.793 4.918 1.00 0.00 H
588
+ ATOM 385 HG21 ILE A 149 -1.115 5.204 2.095 1.00 0.00 H
589
+ ATOM 386 HG22 ILE A 149 0.086 4.075 1.468 1.00 0.00 H
590
+ ATOM 387 HG23 ILE A 149 -1.611 3.603 1.543 1.00 0.00 H
591
+ ATOM 388 HD11 ILE A 149 1.100 1.691 3.297 1.00 0.00 H
592
+ ATOM 389 HD12 ILE A 149 2.141 2.809 2.416 1.00 0.00 H
593
+ ATOM 390 HD13 ILE A 149 2.501 2.406 4.095 1.00 0.00 H
594
+ ATOM 391 N LYS A 150 -3.642 5.125 3.580 1.00 0.00 N
595
+ ATOM 392 CA LYS A 150 -5.045 5.012 3.198 1.00 0.00 C
596
+ ATOM 393 C LYS A 150 -5.187 4.322 1.846 1.00 0.00 C
597
+ ATOM 394 O LYS A 150 -4.365 4.514 0.951 1.00 0.00 O
598
+ ATOM 395 CB LYS A 150 -5.693 6.397 3.147 1.00 0.00 C
599
+ ATOM 396 CG LYS A 150 -7.171 6.391 3.501 1.00 0.00 C
600
+ ATOM 397 CD LYS A 150 -7.386 6.238 5.000 1.00 0.00 C
601
+ ATOM 398 CE LYS A 150 -8.316 7.311 5.543 1.00 0.00 C
602
+ ATOM 399 NZ LYS A 150 -8.889 6.933 6.865 1.00 0.00 N
603
+ ATOM 400 H LYS A 150 -3.180 5.980 3.457 1.00 0.00 H
604
+ ATOM 401 HA LYS A 150 -5.546 4.418 3.947 1.00 0.00 H
605
+ ATOM 402 HB2 LYS A 150 -5.181 7.048 3.840 1.00 0.00 H
606
+ ATOM 403 HB3 LYS A 150 -5.586 6.795 2.148 1.00 0.00 H
607
+ ATOM 404 HG2 LYS A 150 -7.613 7.322 3.177 1.00 0.00 H
608
+ ATOM 405 HG3 LYS A 150 -7.650 5.567 2.993 1.00 0.00 H
609
+ ATOM 406 HD2 LYS A 150 -7.819 5.270 5.195 1.00 0.00 H
610
+ ATOM 407 HD3 LYS A 150 -6.432 6.315 5.501 1.00 0.00 H
611
+ ATOM 408 HE2 LYS A 150 -7.761 8.230 5.653 1.00 0.00 H
612
+ ATOM 409 HE3 LYS A 150 -9.122 7.460 4.840 1.00 0.00 H
613
+ ATOM 410 HZ1 LYS A 150 -8.209 6.352 7.396 1.00 0.00 H
614
+ ATOM 411 HZ2 LYS A 150 -9.107 7.786 7.419 1.00 0.00 H
615
+ ATOM 412 HZ3 LYS A 150 -9.765 6.387 6.732 1.00 0.00 H
616
+ ATOM 413 N GLY A 151 -6.234 3.517 1.706 1.00 0.00 N
617
+ ATOM 414 CA GLY A 151 -6.464 2.809 0.459 1.00 0.00 C
618
+ ATOM 415 C GLY A 151 -7.936 2.553 0.200 1.00 0.00 C
619
+ ATOM 416 O GLY A 151 -8.796 3.022 0.945 1.00 0.00 O
620
+ ATOM 417 H GLY A 151 -6.857 3.401 2.453 1.00 0.00 H
621
+ ATOM 418 HA2 GLY A 151 -6.064 3.396 -0.354 1.00 0.00 H
622
+ ATOM 419 HA3 GLY A 151 -5.946 1.863 0.496 1.00 0.00 H
623
+ ATOM 420 N THR A 152 -8.227 1.805 -0.860 1.00 0.00 N
624
+ ATOM 421 CA THR A 152 -9.604 1.487 -1.216 1.00 0.00 C
625
+ ATOM 422 C THR A 152 -9.655 0.373 -2.258 1.00 0.00 C
626
+ ATOM 423 O THR A 152 -9.911 0.622 -3.436 1.00 0.00 O
627
+ ATOM 424 CB THR A 152 -10.316 2.732 -1.748 1.00 0.00 C
628
+ ATOM 425 OG1 THR A 152 -11.652 2.429 -2.111 1.00 0.00 O
629
+ ATOM 426 CG2 THR A 152 -9.638 3.337 -2.958 1.00 0.00 C
630
+ ATOM 427 H THR A 152 -7.497 1.459 -1.417 1.00 0.00 H
631
+ ATOM 428 HA THR A 152 -10.107 1.150 -0.322 1.00 0.00 H
632
+ ATOM 429 HB THR A 152 -10.336 3.482 -0.970 1.00 0.00 H
633
+ ATOM 430 HG1 THR A 152 -11.652 1.776 -2.814 1.00 0.00 H
634
+ ATOM 431 HG21 THR A 152 -8.686 2.852 -3.117 1.00 0.00 H
635
+ ATOM 432 HG22 THR A 152 -10.262 3.198 -3.828 1.00 0.00 H
636
+ ATOM 433 HG23 THR A 152 -9.480 4.393 -2.792 1.00 0.00 H
637
+ ATOM 434 N GLY A 153 -9.409 -0.856 -1.814 1.00 0.00 N
638
+ ATOM 435 CA GLY A 153 -9.432 -1.990 -2.720 1.00 0.00 C
639
+ ATOM 436 C GLY A 153 -10.647 -2.873 -2.512 1.00 0.00 C
640
+ ATOM 437 O GLY A 153 -11.397 -3.139 -3.451 1.00 0.00 O
641
+ ATOM 438 H GLY A 153 -9.211 -0.994 -0.865 1.00 0.00 H
642
+ ATOM 439 HA2 GLY A 153 -9.436 -1.625 -3.736 1.00 0.00 H
643
+ ATOM 440 HA3 GLY A 153 -8.540 -2.579 -2.564 1.00 0.00 H
644
+ ATOM 441 N VAL A 154 -10.839 -3.328 -1.279 1.00 0.00 N
645
+ ATOM 442 CA VAL A 154 -11.971 -4.188 -0.949 1.00 0.00 C
646
+ ATOM 443 C VAL A 154 -12.485 -3.896 0.457 1.00 0.00 C
647
+ ATOM 444 O VAL A 154 -12.857 -4.807 1.197 1.00 0.00 O
648
+ ATOM 445 CB VAL A 154 -11.594 -5.679 -1.048 1.00 0.00 C
649
+ ATOM 446 CG1 VAL A 154 -12.836 -6.552 -0.954 1.00 0.00 C
650
+ ATOM 447 CG2 VAL A 154 -10.836 -5.954 -2.338 1.00 0.00 C
651
+ ATOM 448 H VAL A 154 -10.205 -3.081 -0.574 1.00 0.00 H
652
+ ATOM 449 HA VAL A 154 -12.759 -3.987 -1.659 1.00 0.00 H
653
+ ATOM 450 HB VAL A 154 -10.947 -5.922 -0.217 1.00 0.00 H
654
+ ATOM 451 HG11 VAL A 154 -13.650 -5.978 -0.539 1.00 0.00 H
655
+ ATOM 452 HG12 VAL A 154 -13.106 -6.901 -1.939 1.00 0.00 H
656
+ ATOM 453 HG13 VAL A 154 -12.632 -7.399 -0.315 1.00 0.00 H
657
+ ATOM 454 HG21 VAL A 154 -9.989 -5.288 -2.407 1.00 0.00 H
658
+ ATOM 455 HG22 VAL A 154 -10.490 -6.977 -2.340 1.00 0.00 H
659
+ ATOM 456 HG23 VAL A 154 -11.491 -5.793 -3.182 1.00 0.00 H
660
+ ATOM 457 N GLY A 155 -12.501 -2.617 0.821 1.00 0.00 N
661
+ ATOM 458 CA GLY A 155 -12.970 -2.226 2.137 1.00 0.00 C
662
+ ATOM 459 C GLY A 155 -11.832 -1.859 3.070 1.00 0.00 C
663
+ ATOM 460 O GLY A 155 -12.006 -1.059 3.989 1.00 0.00 O
664
+ ATOM 461 H GLY A 155 -12.193 -1.934 0.191 1.00 0.00 H
665
+ ATOM 462 HA2 GLY A 155 -13.627 -1.375 2.036 1.00 0.00 H
666
+ ATOM 463 HA3 GLY A 155 -13.524 -3.047 2.569 1.00 0.00 H
667
+ ATOM 464 N GLY A 156 -10.663 -2.448 2.833 1.00 0.00 N
668
+ ATOM 465 CA GLY A 156 -9.509 -2.166 3.664 1.00 0.00 C
669
+ ATOM 466 C GLY A 156 -8.214 -2.641 3.033 1.00 0.00 C
670
+ ATOM 467 O GLY A 156 -7.546 -3.528 3.564 1.00 0.00 O
671
+ ATOM 468 H GLY A 156 -10.586 -3.076 2.085 1.00 0.00 H
672
+ ATOM 469 HA2 GLY A 156 -9.447 -1.101 3.828 1.00 0.00 H
673
+ ATOM 470 HA3 GLY A 156 -9.635 -2.661 4.615 1.00 0.00 H
674
+ ATOM 471 N ARG A 157 -7.860 -2.050 1.896 1.00 0.00 N
675
+ ATOM 472 CA ARG A 157 -6.638 -2.418 1.189 1.00 0.00 C
676
+ ATOM 473 C ARG A 157 -6.072 -1.227 0.426 1.00 0.00 C
677
+ ATOM 474 O ARG A 157 -6.821 -0.391 -0.080 1.00 0.00 O
678
+ ATOM 475 CB ARG A 157 -6.914 -3.567 0.218 1.00 0.00 C
679
+ ATOM 476 CG ARG A 157 -7.078 -4.917 0.897 1.00 0.00 C
680
+ ATOM 477 CD ARG A 157 -7.586 -5.970 -0.074 1.00 0.00 C
681
+ ATOM 478 NE ARG A 157 -6.508 -6.524 -0.891 1.00 0.00 N
682
+ ATOM 479 CZ ARG A 157 -6.578 -7.697 -1.518 1.00 0.00 C
683
+ ATOM 480 NH1 ARG A 157 -7.674 -8.442 -1.428 1.00 0.00 N
684
+ ATOM 481 NH2 ARG A 157 -5.550 -8.127 -2.237 1.00 0.00 N
685
+ ATOM 482 H ARG A 157 -8.436 -1.350 1.522 1.00 0.00 H
686
+ ATOM 483 HA ARG A 157 -5.916 -2.741 1.922 1.00 0.00 H
687
+ ATOM 484 HB2 ARG A 157 -7.821 -3.352 -0.328 1.00 0.00 H
688
+ ATOM 485 HB3 ARG A 157 -6.093 -3.637 -0.480 1.00 0.00 H
689
+ ATOM 486 HG2 ARG A 157 -6.121 -5.231 1.283 1.00 0.00 H
690
+ ATOM 487 HG3 ARG A 157 -7.782 -4.818 1.709 1.00 0.00 H
691
+ ATOM 488 HD2 ARG A 157 -8.044 -6.769 0.489 1.00 0.00 H
692
+ ATOM 489 HD3 ARG A 157 -8.321 -5.519 -0.723 1.00 0.00 H
693
+ ATOM 490 HE ARG A 157 -5.687 -5.995 -0.977 1.00 0.00 H
694
+ ATOM 491 HH11 ARG A 157 -8.453 -8.124 -0.888 1.00 0.00 H
695
+ ATOM 492 HH12 ARG A 157 -7.720 -9.321 -1.902 1.00 0.00 H
696
+ ATOM 493 HH21 ARG A 157 -4.723 -7.570 -2.309 1.00 0.00 H
697
+ ATOM 494 HH22 ARG A 157 -5.603 -9.007 -2.707 1.00 0.00 H
698
+ ATOM 495 N LEU A 158 -4.746 -1.155 0.336 1.00 0.00 N
699
+ ATOM 496 CA LEU A 158 -4.093 -0.068 -0.380 1.00 0.00 C
700
+ ATOM 497 C LEU A 158 -3.454 -0.604 -1.661 1.00 0.00 C
701
+ ATOM 498 O LEU A 158 -2.802 -1.648 -1.649 1.00 0.00 O
702
+ ATOM 499 CB LEU A 158 -3.074 0.619 0.553 1.00 0.00 C
703
+ ATOM 500 CG LEU A 158 -1.625 0.711 0.059 1.00 0.00 C
704
+ ATOM 501 CD1 LEU A 158 -1.378 2.051 -0.615 1.00 0.00 C
705
+ ATOM 502 CD2 LEU A 158 -0.658 0.522 1.220 1.00 0.00 C
706
+ ATOM 503 H LEU A 158 -4.193 -1.854 0.751 1.00 0.00 H
707
+ ATOM 504 HA LEU A 158 -4.857 0.648 -0.651 1.00 0.00 H
708
+ ATOM 505 HB2 LEU A 158 -3.422 1.624 0.739 1.00 0.00 H
709
+ ATOM 506 HB3 LEU A 158 -3.073 0.085 1.491 1.00 0.00 H
710
+ ATOM 507 HG LEU A 158 -1.440 -0.072 -0.661 1.00 0.00 H
711
+ ATOM 508 HD11 LEU A 158 -2.095 2.772 -0.254 1.00 0.00 H
712
+ ATOM 509 HD12 LEU A 158 -0.379 2.390 -0.384 1.00 0.00 H
713
+ ATOM 510 HD13 LEU A 158 -1.481 1.941 -1.682 1.00 0.00 H
714
+ ATOM 511 HD21 LEU A 158 -1.153 -0.008 2.019 1.00 0.00 H
715
+ ATOM 512 HD22 LEU A 158 0.198 -0.046 0.886 1.00 0.00 H
716
+ ATOM 513 HD23 LEU A 158 -0.332 1.488 1.578 1.00 0.00 H
717
+ ATOM 514 N THR A 159 -3.669 0.100 -2.770 1.00 0.00 N
718
+ ATOM 515 CA THR A 159 -3.138 -0.329 -4.064 1.00 0.00 C
719
+ ATOM 516 C THR A 159 -1.926 0.498 -4.478 1.00 0.00 C
720
+ ATOM 517 O THR A 159 -1.539 1.434 -3.784 1.00 0.00 O
721
+ ATOM 518 CB THR A 159 -4.224 -0.242 -5.134 1.00 0.00 C
722
+ ATOM 519 OG1 THR A 159 -4.432 1.100 -5.533 1.00 0.00 O
723
+ ATOM 520 CG2 THR A 159 -5.554 -0.796 -4.671 1.00 0.00 C
724
+ ATOM 521 H THR A 159 -4.215 0.913 -2.724 1.00 0.00 H
725
+ ATOM 522 HA THR A 159 -2.831 -1.360 -3.965 1.00 0.00 H
726
+ ATOM 523 HB THR A 159 -3.912 -0.810 -5.999 1.00 0.00 H
727
+ ATOM 524 HG1 THR A 159 -4.724 1.617 -4.778 1.00 0.00 H
728
+ ATOM 525 HG21 THR A 159 -5.481 -1.088 -3.634 1.00 0.00 H
729
+ ATOM 526 HG22 THR A 159 -6.317 -0.039 -4.780 1.00 0.00 H
730
+ ATOM 527 HG23 THR A 159 -5.813 -1.657 -5.270 1.00 0.00 H
731
+ ATOM 528 N ARG A 160 -1.335 0.139 -5.619 1.00 0.00 N
732
+ ATOM 529 CA ARG A 160 -0.152 0.830 -6.129 1.00 0.00 C
733
+ ATOM 530 C ARG A 160 -0.413 2.322 -6.283 1.00 0.00 C
734
+ ATOM 531 O ARG A 160 0.491 3.139 -6.108 1.00 0.00 O
735
+ ATOM 532 CB ARG A 160 0.260 0.237 -7.477 1.00 0.00 C
736
+ ATOM 533 CG ARG A 160 -0.772 0.442 -8.574 1.00 0.00 C
737
+ ATOM 534 CD ARG A 160 -0.394 -0.304 -9.844 1.00 0.00 C
738
+ ATOM 535 NE ARG A 160 -1.385 -0.124 -10.901 1.00 0.00 N
739
+ ATOM 536 CZ ARG A 160 -1.558 1.015 -11.571 1.00 0.00 C
740
+ ATOM 537 NH1 ARG A 160 -0.810 2.075 -11.295 1.00 0.00 N
741
+ ATOM 538 NH2 ARG A 160 -2.483 1.092 -12.518 1.00 0.00 N
742
+ ATOM 539 H ARG A 160 -1.697 -0.619 -6.123 1.00 0.00 H
743
+ ATOM 540 HA ARG A 160 0.652 0.685 -5.424 1.00 0.00 H
744
+ ATOM 541 HB2 ARG A 160 1.184 0.699 -7.792 1.00 0.00 H
745
+ ATOM 542 HB3 ARG A 160 0.420 -0.824 -7.357 1.00 0.00 H
746
+ ATOM 543 HG2 ARG A 160 -1.728 0.079 -8.228 1.00 0.00 H
747
+ ATOM 544 HG3 ARG A 160 -0.844 1.498 -8.795 1.00 0.00 H
748
+ ATOM 545 HD2 ARG A 160 0.560 0.066 -10.192 1.00 0.00 H
749
+ ATOM 546 HD3 ARG A 160 -0.309 -1.356 -9.617 1.00 0.00 H
750
+ ATOM 547 HE ARG A 160 -1.952 -0.891 -11.125 1.00 0.00 H
751
+ ATOM 548 HH11 ARG A 160 -0.111 2.024 -10.582 1.00 0.00 H
752
+ ATOM 549 HH12 ARG A 160 -0.944 2.927 -11.801 1.00 0.00 H
753
+ ATOM 550 HH21 ARG A 160 -3.050 0.296 -12.730 1.00 0.00 H
754
+ ATOM 551 HH22 ARG A 160 -2.613 1.946 -13.020 1.00 0.00 H
755
+ ATOM 552 N GLU A 161 -1.651 2.676 -6.592 1.00 0.00 N
756
+ ATOM 553 CA GLU A 161 -2.017 4.075 -6.743 1.00 0.00 C
757
+ ATOM 554 C GLU A 161 -2.089 4.743 -5.374 1.00 0.00 C
758
+ ATOM 555 O GLU A 161 -1.765 5.923 -5.221 1.00 0.00 O
759
+ ATOM 556 CB GLU A 161 -3.352 4.214 -7.482 1.00 0.00 C
760
+ ATOM 557 CG GLU A 161 -4.562 3.781 -6.668 1.00 0.00 C
761
+ ATOM 558 CD GLU A 161 -5.480 2.849 -7.434 1.00 0.00 C
762
+ ATOM 559 OE1 GLU A 161 -4.974 1.874 -8.028 1.00 0.00 O
763
+ ATOM 560 OE2 GLU A 161 -6.705 3.093 -7.439 1.00 0.00 O
764
+ ATOM 561 H GLU A 161 -2.335 1.984 -6.706 1.00 0.00 H
765
+ ATOM 562 HA GLU A 161 -1.241 4.556 -7.319 1.00 0.00 H
766
+ ATOM 563 HB2 GLU A 161 -3.488 5.248 -7.762 1.00 0.00 H
767
+ ATOM 564 HB3 GLU A 161 -3.315 3.611 -8.378 1.00 0.00 H
768
+ ATOM 565 HG2 GLU A 161 -4.220 3.275 -5.780 1.00 0.00 H
769
+ ATOM 566 HG3 GLU A 161 -5.121 4.661 -6.384 1.00 0.00 H
770
+ ATOM 567 N ASP A 162 -2.509 3.973 -4.375 1.00 0.00 N
771
+ ATOM 568 CA ASP A 162 -2.616 4.483 -3.017 1.00 0.00 C
772
+ ATOM 569 C ASP A 162 -1.233 4.615 -2.390 1.00 0.00 C
773
+ ATOM 570 O ASP A 162 -0.984 5.530 -1.602 1.00 0.00 O
774
+ ATOM 571 CB ASP A 162 -3.502 3.566 -2.171 1.00 0.00 C
775
+ ATOM 572 CG ASP A 162 -4.957 3.622 -2.588 1.00 0.00 C
776
+ ATOM 573 OD1 ASP A 162 -5.525 4.735 -2.613 1.00 0.00 O
777
+ ATOM 574 OD2 ASP A 162 -5.530 2.554 -2.890 1.00 0.00 O
778
+ ATOM 575 H ASP A 162 -2.742 3.037 -4.554 1.00 0.00 H
779
+ ATOM 576 HA ASP A 162 -3.070 5.461 -3.067 1.00 0.00 H
780
+ ATOM 577 HB2 ASP A 162 -3.159 2.548 -2.276 1.00 0.00 H
781
+ ATOM 578 HB3 ASP A 162 -3.431 3.862 -1.135 1.00 0.00 H
782
+ ATOM 579 N VAL A 163 -0.326 3.711 -2.756 1.00 0.00 N
783
+ ATOM 580 CA VAL A 163 1.035 3.759 -2.227 1.00 0.00 C
784
+ ATOM 581 C VAL A 163 1.798 4.903 -2.876 1.00 0.00 C
785
+ ATOM 582 O VAL A 163 2.469 5.673 -2.195 1.00 0.00 O
786
+ ATOM 583 CB VAL A 163 1.842 2.448 -2.438 1.00 0.00 C
787
+ ATOM 584 CG1 VAL A 163 2.572 2.067 -1.161 1.00 0.00 C
788
+ ATOM 585 CG2 VAL A 163 0.966 1.302 -2.901 1.00 0.00 C
789
+ ATOM 586 H VAL A 163 -0.574 3.016 -3.398 1.00 0.00 H
790
+ ATOM 587 HA VAL A 163 0.966 3.950 -1.164 1.00 0.00 H
791
+ ATOM 588 HB VAL A 163 2.584 2.629 -3.203 1.00 0.00 H
792
+ ATOM 589 HG11 VAL A 163 2.808 2.959 -0.600 1.00 0.00 H
793
+ ATOM 590 HG12 VAL A 163 1.937 1.423 -0.566 1.00 0.00 H
794
+ ATOM 591 HG13 VAL A 163 3.483 1.546 -1.410 1.00 0.00 H
795
+ ATOM 592 HG21 VAL A 163 0.200 1.111 -2.167 1.00 0.00 H
796
+ ATOM 593 HG22 VAL A 163 0.512 1.561 -3.840 1.00 0.00 H
797
+ ATOM 594 HG23 VAL A 163 1.571 0.417 -3.027 1.00 0.00 H
798
+ ATOM 595 N GLU A 164 1.683 5.022 -4.199 1.00 0.00 N
799
+ ATOM 596 CA GLU A 164 2.361 6.090 -4.920 1.00 0.00 C
800
+ ATOM 597 C GLU A 164 1.890 7.442 -4.403 1.00 0.00 C
801
+ ATOM 598 O GLU A 164 2.691 8.352 -4.188 1.00 0.00 O
802
+ ATOM 599 CB GLU A 164 2.117 5.973 -6.428 1.00 0.00 C
803
+ ATOM 600 CG GLU A 164 0.714 6.371 -6.855 1.00 0.00 C
804
+ ATOM 601 CD GLU A 164 0.527 6.326 -8.358 1.00 0.00 C
805
+ ATOM 602 OE1 GLU A 164 1.001 5.355 -8.986 1.00 0.00 O
806
+ ATOM 603 OE2 GLU A 164 -0.092 7.260 -8.908 1.00 0.00 O
807
+ ATOM 604 H GLU A 164 1.122 4.385 -4.696 1.00 0.00 H
808
+ ATOM 605 HA GLU A 164 3.418 5.997 -4.726 1.00 0.00 H
809
+ ATOM 606 HB2 GLU A 164 2.819 6.610 -6.944 1.00 0.00 H
810
+ ATOM 607 HB3 GLU A 164 2.284 4.949 -6.728 1.00 0.00 H
811
+ ATOM 608 HG2 GLU A 164 0.011 5.694 -6.400 1.00 0.00 H
812
+ ATOM 609 HG3 GLU A 164 0.520 7.376 -6.512 1.00 0.00 H
813
+ ATOM 610 N LYS A 165 0.584 7.558 -4.183 1.00 0.00 N
814
+ ATOM 611 CA LYS A 165 0.009 8.790 -3.664 1.00 0.00 C
815
+ ATOM 612 C LYS A 165 0.561 9.067 -2.271 1.00 0.00 C
816
+ ATOM 613 O LYS A 165 0.889 10.203 -1.932 1.00 0.00 O
817
+ ATOM 614 CB LYS A 165 -1.517 8.692 -3.618 1.00 0.00 C
818
+ ATOM 615 CG LYS A 165 -2.181 8.866 -4.973 1.00 0.00 C
819
+ ATOM 616 CD LYS A 165 -2.189 10.322 -5.407 1.00 0.00 C
820
+ ATOM 617 CE LYS A 165 -3.262 10.586 -6.450 1.00 0.00 C
821
+ ATOM 618 NZ LYS A 165 -4.630 10.536 -5.864 1.00 0.00 N
822
+ ATOM 619 H LYS A 165 -0.002 6.790 -4.360 1.00 0.00 H
823
+ ATOM 620 HA LYS A 165 0.295 9.597 -4.322 1.00 0.00 H
824
+ ATOM 621 HB2 LYS A 165 -1.792 7.722 -3.228 1.00 0.00 H
825
+ ATOM 622 HB3 LYS A 165 -1.896 9.456 -2.955 1.00 0.00 H
826
+ ATOM 623 HG2 LYS A 165 -1.639 8.286 -5.706 1.00 0.00 H
827
+ ATOM 624 HG3 LYS A 165 -3.199 8.512 -4.913 1.00 0.00 H
828
+ ATOM 625 HD2 LYS A 165 -2.378 10.944 -4.545 1.00 0.00 H
829
+ ATOM 626 HD3 LYS A 165 -1.224 10.569 -5.825 1.00 0.00 H
830
+ ATOM 627 HE2 LYS A 165 -3.100 11.566 -6.876 1.00 0.00 H
831
+ ATOM 628 HE3 LYS A 165 -3.184 9.839 -7.225 1.00 0.00 H
832
+ ATOM 629 HZ1 LYS A 165 -4.618 10.909 -4.894 1.00 0.00 H
833
+ ATOM 630 HZ2 LYS A 165 -5.286 11.109 -6.434 1.00 0.00 H
834
+ ATOM 631 HZ3 LYS A 165 -4.974 9.555 -5.842 1.00 0.00 H
835
+ ATOM 632 N HIS A 166 0.670 8.007 -1.476 1.00 0.00 N
836
+ ATOM 633 CA HIS A 166 1.197 8.110 -0.121 1.00 0.00 C
837
+ ATOM 634 C HIS A 166 2.704 8.346 -0.154 1.00 0.00 C
838
+ ATOM 635 O HIS A 166 3.256 9.044 0.695 1.00 0.00 O
839
+ ATOM 636 CB HIS A 166 0.890 6.831 0.662 1.00 0.00 C
840
+ ATOM 637 CG HIS A 166 1.430 6.838 2.059 1.00 0.00 C
841
+ ATOM 638 ND1 HIS A 166 0.669 7.170 3.160 1.00 0.00 N
842
+ ATOM 639 CD2 HIS A 166 2.665 6.549 2.531 1.00 0.00 C
843
+ ATOM 640 CE1 HIS A 166 1.414 7.087 4.249 1.00 0.00 C
844
+ ATOM 641 NE2 HIS A 166 2.629 6.712 3.894 1.00 0.00 N
845
+ ATOM 642 H HIS A 166 0.398 7.128 -1.816 1.00 0.00 H
846
+ ATOM 643 HA HIS A 166 0.719 8.947 0.363 1.00 0.00 H
847
+ ATOM 644 HB2 HIS A 166 -0.179 6.697 0.719 1.00 0.00 H
848
+ ATOM 645 HB3 HIS A 166 1.324 5.989 0.143 1.00 0.00 H
849
+ ATOM 646 HD1 HIS A 166 -0.276 7.429 3.146 1.00 0.00 H
850
+ ATOM 647 HD2 HIS A 166 3.522 6.247 1.945 1.00 0.00 H
851
+ ATOM 648 HE1 HIS A 166 1.085 7.292 5.256 1.00 0.00 H
852
+ ATOM 649 HE2 HIS A 166 3.350 6.479 4.514 1.00 0.00 H
853
+ ATOM 650 N LEU A 167 3.358 7.748 -1.144 1.00 0.00 N
854
+ ATOM 651 CA LEU A 167 4.801 7.874 -1.308 1.00 0.00 C
855
+ ATOM 652 C LEU A 167 5.206 9.336 -1.464 1.00 0.00 C
856
+ ATOM 653 O LEU A 167 6.299 9.735 -1.062 1.00 0.00 O
857
+ ATOM 654 CB LEU A 167 5.261 7.070 -2.526 1.00 0.00 C
858
+ ATOM 655 CG LEU A 167 5.466 5.572 -2.279 1.00 0.00 C
859
+ ATOM 656 CD1 LEU A 167 5.894 4.876 -3.562 1.00 0.00 C
860
+ ATOM 657 CD2 LEU A 167 6.495 5.349 -1.181 1.00 0.00 C
861
+ ATOM 658 H LEU A 167 2.855 7.205 -1.784 1.00 0.00 H
862
+ ATOM 659 HA LEU A 167 5.272 7.474 -0.423 1.00 0.00 H
863
+ ATOM 660 HB2 LEU A 167 4.522 7.186 -3.307 1.00 0.00 H
864
+ ATOM 661 HB3 LEU A 167 6.196 7.486 -2.874 1.00 0.00 H
865
+ ATOM 662 HG LEU A 167 4.531 5.134 -1.959 1.00 0.00 H
866
+ ATOM 663 HD11 LEU A 167 6.585 5.507 -4.101 1.00 0.00 H
867
+ ATOM 664 HD12 LEU A 167 6.374 3.940 -3.320 1.00 0.00 H
868
+ ATOM 665 HD13 LEU A 167 5.025 4.687 -4.175 1.00 0.00 H
869
+ ATOM 666 HD21 LEU A 167 7.387 5.917 -1.402 1.00 0.00 H
870
+ ATOM 667 HD22 LEU A 167 6.088 5.674 -0.235 1.00 0.00 H
871
+ ATOM 668 HD23 LEU A 167 6.740 4.299 -1.126 1.00 0.00 H
872
+ ATOM 669 N ALA A 168 4.318 10.130 -2.051 1.00 0.00 N
873
+ ATOM 670 CA ALA A 168 4.582 11.549 -2.261 1.00 0.00 C
874
+ ATOM 671 C ALA A 168 4.171 12.370 -1.042 1.00 0.00 C
875
+ ATOM 672 O ALA A 168 4.749 13.421 -0.767 1.00 0.00 O
876
+ ATOM 673 CB ALA A 168 3.853 12.043 -3.502 1.00 0.00 C
877
+ ATOM 674 H ALA A 168 3.465 9.753 -2.350 1.00 0.00 H
878
+ ATOM 675 HA ALA A 168 5.643 11.670 -2.423 1.00 0.00 H
879
+ ATOM 676 HB1 ALA A 168 4.507 11.966 -4.358 1.00 0.00 H
880
+ ATOM 677 HB2 ALA A 168 3.563 13.074 -3.362 1.00 0.00 H
881
+ ATOM 678 HB3 ALA A 168 2.972 11.440 -3.666 1.00 0.00 H
882
+ ATOM 679 N LYS A 169 3.171 11.883 -0.315 1.00 0.00 N
883
+ ATOM 680 CA LYS A 169 2.683 12.572 0.873 1.00 0.00 C
884
+ ATOM 681 C LYS A 169 3.773 12.665 1.936 1.00 0.00 C
885
+ ATOM 682 O LYS A 169 3.847 13.643 2.679 1.00 0.00 O
886
+ ATOM 683 CB LYS A 169 1.460 11.847 1.442 1.00 0.00 C
887
+ ATOM 684 CG LYS A 169 0.141 12.338 0.869 1.00 0.00 C
888
+ ATOM 685 CD LYS A 169 -0.553 13.308 1.813 1.00 0.00 C
889
+ ATOM 686 CE LYS A 169 -1.186 14.467 1.060 1.00 0.00 C
890
+ ATOM 687 NZ LYS A 169 -0.505 15.758 1.352 1.00 0.00 N
891
+ ATOM 688 H LYS A 169 2.749 11.040 -0.585 1.00 0.00 H
892
+ ATOM 689 HA LYS A 169 2.395 13.570 0.582 1.00 0.00 H
893
+ ATOM 690 HB2 LYS A 169 1.551 10.792 1.229 1.00 0.00 H
894
+ ATOM 691 HB3 LYS A 169 1.439 11.989 2.513 1.00 0.00 H
895
+ ATOM 692 HG2 LYS A 169 0.332 12.839 -0.069 1.00 0.00 H
896
+ ATOM 693 HG3 LYS A 169 -0.504 11.489 0.700 1.00 0.00 H
897
+ ATOM 694 HD2 LYS A 169 -1.324 12.779 2.354 1.00 0.00 H
898
+ ATOM 695 HD3 LYS A 169 0.175 13.697 2.511 1.00 0.00 H
899
+ ATOM 696 HE2 LYS A 169 -1.125 14.270 0.000 1.00 0.00 H
900
+ ATOM 697 HE3 LYS A 169 -2.223 14.543 1.351 1.00 0.00 H
901
+ ATOM 698 HZ1 LYS A 169 -0.203 15.786 2.347 1.00 0.00 H
902
+ ATOM 699 HZ2 LYS A 169 0.331 15.866 0.743 1.00 0.00 H
903
+ ATOM 700 HZ3 LYS A 169 -1.153 16.552 1.176 1.00 0.00 H
904
+ ATOM 701 N ALA A 170 4.617 11.641 2.002 1.00 0.00 N
905
+ ATOM 702 CA ALA A 170 5.702 11.607 2.976 1.00 0.00 C
906
+ ATOM 703 C ALA A 170 6.963 10.997 2.371 1.00 0.00 C
907
+ ATOM 704 O ALA A 170 8.005 10.994 3.059 1.00 0.00 O
908
+ ATOM 705 CB ALA A 170 5.278 10.829 4.212 1.00 0.00 C
909
+ ATOM 706 OXT ALA A 170 6.897 10.529 1.215 1.00 0.00 O
910
+ ATOM 707 H ALA A 170 4.506 10.889 1.383 1.00 0.00 H
911
+ ATOM 708 HA ALA A 170 5.914 12.624 3.273 1.00 0.00 H
912
+ ATOM 709 HB1 ALA A 170 5.121 9.793 3.950 1.00 0.00 H
913
+ ATOM 710 HB2 ALA A 170 4.362 11.246 4.602 1.00 0.00 H
914
+ ATOM 711 HB3 ALA A 170 6.052 10.896 4.962 1.00 0.00 H
915
+ ENDMDL
916
+ MASTER 151 0 0 3 0 0 0 6 352 1 0 4
917
+ END
entangled-tps/data/bbl/path.gro ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:03b2f98348d04efa76733327039953596d84175e39b02a375ea7b51da725b4a4
3
+ size 80334621
entangled-tps/data/bbl/tica_model.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:00450a5f91daa1948be66c9734cfcbbe8b47adef4da81a67f94ad649bd409c82
3
+ size 2176049
entangled-tps/data/bbl/unfolded.pdb ADDED
@@ -0,0 +1,716 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ TITLE MDANALYSIS FRAMES FROM 0, STEP 1: Created by PDBWriter
2
+ CRYST1 56.912 56.912 56.912 90.00 90.00 90.00 P 1 1
3
+ MODEL 1
4
+ ATOM 1 N GLY A 124 -15.235 -28.566 -26.194 1.00 0.00 A N
5
+ ATOM 2 CA GLY A 124 -13.943 -28.304 -25.502 1.00 0.00 A C
6
+ ATOM 3 C GLY A 124 -13.998 -28.701 -24.010 1.00 0.00 A C
7
+ ATOM 4 O GLY A 124 -15.021 -29.042 -23.491 1.00 0.00 A O
8
+ ATOM 5 H1 GLY A 124 -15.625 -29.495 -25.939 1.00 0.00 A H
9
+ ATOM 6 H2 GLY A 124 -15.935 -27.889 -25.826 1.00 0.00 A H
10
+ ATOM 7 H3 GLY A 124 -15.068 -28.460 -27.215 1.00 0.00 A H
11
+ ATOM 8 HA2 GLY A 124 -13.511 -27.337 -25.714 1.00 0.00 A H
12
+ ATOM 9 HA3 GLY A 124 -13.430 -29.181 -25.868 1.00 0.00 A H
13
+ ATOM 10 N SER A 125 -12.886 -28.580 -23.288 1.00 0.00 A N
14
+ ATOM 11 CA SER A 125 -12.653 -29.147 -21.978 1.00 0.00 A C
15
+ ATOM 12 C SER A 125 -13.603 -28.655 -20.817 1.00 0.00 A C
16
+ ATOM 13 O SER A 125 -13.560 -27.492 -20.398 1.00 0.00 A O
17
+ ATOM 14 CB SER A 125 -11.225 -29.017 -21.520 1.00 0.00 A C
18
+ ATOM 15 OG SER A 125 -10.316 -29.600 -22.435 1.00 0.00 A O
19
+ ATOM 16 H SER A 125 -12.021 -28.337 -23.719 1.00 0.00 A H
20
+ ATOM 17 HA SER A 125 -12.729 -30.223 -22.020 1.00 0.00 A H
21
+ ATOM 18 HB2 SER A 125 -10.894 -27.960 -21.439 1.00 0.00 A H
22
+ ATOM 19 HB3 SER A 125 -11.010 -29.421 -20.507 1.00 0.00 A H
23
+ ATOM 20 HG SER A 125 -10.280 -30.530 -22.198 1.00 0.00 A H
24
+ ATOM 21 N GLN A 126 -14.556 -29.542 -20.279 1.00 0.00 A N
25
+ ATOM 22 CA GLN A 126 -15.534 -29.221 -19.245 1.00 0.00 A C
26
+ ATOM 23 C GLN A 126 -14.921 -28.626 -18.007 1.00 0.00 A C
27
+ ATOM 24 O GLN A 126 -14.025 -29.248 -17.397 1.00 0.00 A O
28
+ ATOM 25 CB GLN A 126 -16.514 -30.366 -18.880 1.00 0.00 A C
29
+ ATOM 26 CG GLN A 126 -16.021 -31.662 -18.171 1.00 0.00 A C
30
+ ATOM 27 CD GLN A 126 -17.227 -32.713 -18.089 1.00 0.00 A C
31
+ ATOM 28 OE1 GLN A 126 -17.254 -33.815 -18.695 1.00 0.00 A O
32
+ ATOM 29 NE2 GLN A 126 -18.264 -32.257 -17.382 1.00 0.00 A N
33
+ ATOM 30 H GLN A 126 -14.445 -30.434 -20.710 1.00 0.00 A H
34
+ ATOM 31 HA GLN A 126 -16.098 -28.438 -19.730 1.00 0.00 A H
35
+ ATOM 32 HB2 GLN A 126 -17.214 -29.970 -18.113 1.00 0.00 A H
36
+ ATOM 33 HB3 GLN A 126 -16.951 -30.722 -19.838 1.00 0.00 A H
37
+ ATOM 34 HG2 GLN A 126 -15.190 -32.172 -18.703 1.00 0.00 A H
38
+ ATOM 35 HG3 GLN A 126 -15.714 -31.437 -17.127 1.00 0.00 A H
39
+ ATOM 36 HE21 GLN A 126 -19.102 -32.803 -17.387 1.00 0.00 A H
40
+ ATOM 37 HE22 GLN A 126 -18.203 -31.484 -16.751 1.00 0.00 A H
41
+ ATOM 38 N ASN A 127 -15.316 -27.415 -17.503 1.00 0.00 A N
42
+ ATOM 39 CA ASN A 127 -14.843 -26.726 -16.300 1.00 0.00 A C
43
+ ATOM 40 C ASN A 127 -13.367 -26.099 -16.420 1.00 0.00 A C
44
+ ATOM 41 O ASN A 127 -12.615 -26.015 -15.436 1.00 0.00 A O
45
+ ATOM 42 CB ASN A 127 -15.051 -27.584 -14.950 1.00 0.00 A C
46
+ ATOM 43 CG ASN A 127 -16.431 -28.258 -14.808 1.00 0.00 A C
47
+ ATOM 44 OD1 ASN A 127 -17.492 -27.627 -14.728 1.00 0.00 A O
48
+ ATOM 45 ND2 ASN A 127 -16.356 -29.593 -14.678 1.00 0.00 A N
49
+ ATOM 46 H ASN A 127 -16.043 -27.060 -18.086 1.00 0.00 A H
50
+ ATOM 47 HA ASN A 127 -15.528 -25.897 -16.201 1.00 0.00 A H
51
+ ATOM 48 HB2 ASN A 127 -14.254 -28.354 -14.875 1.00 0.00 A H
52
+ ATOM 49 HB3 ASN A 127 -14.997 -26.793 -14.172 1.00 0.00 A H
53
+ ATOM 50 HD21 ASN A 127 -17.269 -29.994 -14.757 1.00 0.00 A H
54
+ ATOM 51 HD22 ASN A 127 -15.505 -29.985 -14.330 1.00 0.00 A H
55
+ ATOM 52 N ASN A 128 -12.882 -25.775 -17.671 1.00 0.00 A N
56
+ ATOM 53 CA ASN A 128 -11.620 -25.129 -17.944 1.00 0.00 A C
57
+ ATOM 54 C ASN A 128 -11.889 -23.723 -18.587 1.00 0.00 A C
58
+ ATOM 55 O ASN A 128 -12.708 -23.630 -19.473 1.00 0.00 A O
59
+ ATOM 56 CB ASN A 128 -10.688 -25.954 -18.851 1.00 0.00 A C
60
+ ATOM 57 CG ASN A 128 -10.427 -27.283 -18.264 1.00 0.00 A C
61
+ ATOM 58 OD1 ASN A 128 -11.268 -28.080 -17.884 1.00 0.00 A O
62
+ ATOM 59 ND2 ASN A 128 -9.092 -27.677 -18.185 1.00 0.00 A N
63
+ ATOM 60 H ASN A 128 -13.391 -25.964 -18.507 1.00 0.00 A H
64
+ ATOM 61 HA ASN A 128 -11.070 -24.986 -17.025 1.00 0.00 A H
65
+ ATOM 62 HB2 ASN A 128 -11.158 -26.111 -19.845 1.00 0.00 A H
66
+ ATOM 63 HB3 ASN A 128 -9.780 -25.334 -19.009 1.00 0.00 A H
67
+ ATOM 64 HD21 ASN A 128 -8.904 -28.573 -17.781 1.00 0.00 A H
68
+ ATOM 65 HD22 ASN A 128 -8.359 -27.103 -18.551 1.00 0.00 A H
69
+ ATOM 66 N ASP A 129 -11.058 -22.743 -18.154 1.00 0.00 A N
70
+ ATOM 67 CA ASP A 129 -11.197 -21.300 -18.534 1.00 0.00 A C
71
+ ATOM 68 C ASP A 129 -10.194 -20.841 -19.579 1.00 0.00 A C
72
+ ATOM 69 O ASP A 129 -9.137 -21.426 -19.688 1.00 0.00 A O
73
+ ATOM 70 CB ASP A 129 -10.924 -20.374 -17.318 1.00 0.00 A C
74
+ ATOM 71 CG ASP A 129 -12.218 -20.265 -16.519 1.00 0.00 A C
75
+ ATOM 72 OD1 ASP A 129 -13.316 -19.980 -17.128 1.00 0.00 A O
76
+ ATOM 73 OD2 ASP A 129 -12.102 -20.325 -15.270 1.00 0.00 A O
77
+ ATOM 74 H ASP A 129 -10.310 -22.962 -17.532 1.00 0.00 A H
78
+ ATOM 75 HA ASP A 129 -12.165 -21.050 -18.942 1.00 0.00 A H
79
+ ATOM 76 HB2 ASP A 129 -10.033 -20.772 -16.788 1.00 0.00 A H
80
+ ATOM 77 HB3 ASP A 129 -10.683 -19.360 -17.702 1.00 0.00 A H
81
+ ATOM 78 N ALA A 130 -10.476 -19.809 -20.349 1.00 0.00 A N
82
+ ATOM 79 CA ALA A 130 -9.608 -19.449 -21.443 1.00 0.00 A C
83
+ ATOM 80 C ALA A 130 -8.481 -18.469 -21.057 1.00 0.00 A C
84
+ ATOM 81 O ALA A 130 -8.798 -17.437 -20.429 1.00 0.00 A O
85
+ ATOM 82 CB ALA A 130 -10.471 -18.890 -22.525 1.00 0.00 A C
86
+ ATOM 83 H ALA A 130 -11.231 -19.228 -20.057 1.00 0.00 A H
87
+ ATOM 84 HA ALA A 130 -9.212 -20.394 -21.783 1.00 0.00 A H
88
+ ATOM 85 HB1 ALA A 130 -10.600 -17.787 -22.513 1.00 0.00 A H
89
+ ATOM 86 HB2 ALA A 130 -11.448 -19.419 -22.530 1.00 0.00 A H
90
+ ATOM 87 HB3 ALA A 130 -10.014 -18.997 -23.533 1.00 0.00 A H
91
+ ATOM 88 N LEU A 131 -7.210 -18.767 -21.391 1.00 0.00 A N
92
+ ATOM 89 CA LEU A 131 -6.199 -17.681 -21.161 1.00 0.00 A C
93
+ ATOM 90 C LEU A 131 -6.270 -16.632 -22.214 1.00 0.00 A C
94
+ ATOM 91 O LEU A 131 -6.319 -16.918 -23.412 1.00 0.00 A O
95
+ ATOM 92 CB LEU A 131 -4.707 -18.270 -21.230 1.00 0.00 A C
96
+ ATOM 93 CG LEU A 131 -3.567 -17.373 -20.736 1.00 0.00 A C
97
+ ATOM 94 CD1 LEU A 131 -3.657 -17.095 -19.239 1.00 0.00 A C
98
+ ATOM 95 CD2 LEU A 131 -2.198 -18.097 -20.825 1.00 0.00 A C
99
+ ATOM 96 H LEU A 131 -6.891 -19.645 -21.740 1.00 0.00 A H
100
+ ATOM 97 HA LEU A 131 -6.325 -17.178 -20.213 1.00 0.00 A H
101
+ ATOM 98 HB2 LEU A 131 -4.661 -19.154 -20.559 1.00 0.00 A H
102
+ ATOM 99 HB3 LEU A 131 -4.491 -18.543 -22.285 1.00 0.00 A H
103
+ ATOM 100 HG LEU A 131 -3.503 -16.468 -21.377 1.00 0.00 A H
104
+ ATOM 101 HD11 LEU A 131 -3.603 -17.942 -18.522 1.00 0.00 A H
105
+ ATOM 102 HD12 LEU A 131 -2.775 -16.474 -18.976 1.00 0.00 A H
106
+ ATOM 103 HD13 LEU A 131 -4.552 -16.443 -19.154 1.00 0.00 A H
107
+ ATOM 104 HD21 LEU A 131 -1.983 -18.064 -21.915 1.00 0.00 A H
108
+ ATOM 105 HD22 LEU A 131 -1.397 -17.486 -20.358 1.00 0.00 A H
109
+ ATOM 106 HD23 LEU A 131 -2.129 -19.116 -20.386 1.00 0.00 A H
110
+ ATOM 107 N SER A 132 -6.297 -15.374 -21.789 1.00 0.00 A N
111
+ ATOM 108 CA SER A 132 -6.632 -14.251 -22.625 1.00 0.00 A C
112
+ ATOM 109 C SER A 132 -5.369 -13.469 -22.601 1.00 0.00 A C
113
+ ATOM 110 O SER A 132 -4.988 -12.903 -21.586 1.00 0.00 A O
114
+ ATOM 111 CB SER A 132 -7.799 -13.372 -22.056 1.00 0.00 A C
115
+ ATOM 112 OG SER A 132 -8.106 -12.217 -22.848 1.00 0.00 A O
116
+ ATOM 113 H SER A 132 -6.363 -15.334 -20.795 1.00 0.00 A H
117
+ ATOM 114 HA SER A 132 -6.937 -14.705 -23.556 1.00 0.00 A H
118
+ ATOM 115 HB2 SER A 132 -8.723 -13.968 -21.897 1.00 0.00 A H
119
+ ATOM 116 HB3 SER A 132 -7.423 -13.011 -21.075 1.00 0.00 A H
120
+ ATOM 117 HG SER A 132 -8.953 -11.856 -22.575 1.00 0.00 A H
121
+ ATOM 118 N PRO A 133 -4.700 -13.406 -23.703 1.00 0.00 A N
122
+ ATOM 119 CA PRO A 133 -3.415 -12.657 -23.819 1.00 0.00 A C
123
+ ATOM 120 C PRO A 133 -3.480 -11.208 -23.401 1.00 0.00 A C
124
+ ATOM 121 O PRO A 133 -2.476 -10.638 -22.926 1.00 0.00 A O
125
+ ATOM 122 CB PRO A 133 -2.974 -12.770 -25.286 1.00 0.00 A C
126
+ ATOM 123 CG PRO A 133 -3.774 -13.919 -25.879 1.00 0.00 A C
127
+ ATOM 124 CD PRO A 133 -5.033 -13.982 -24.989 1.00 0.00 A C
128
+ ATOM 125 HA PRO A 133 -2.741 -13.157 -23.140 1.00 0.00 A H
129
+ ATOM 126 HB2 PRO A 133 -3.272 -11.852 -25.836 1.00 0.00 A H
130
+ ATOM 127 HB3 PRO A 133 -1.865 -12.824 -25.302 1.00 0.00 A H
131
+ ATOM 128 HG2 PRO A 133 -3.996 -13.773 -26.957 1.00 0.00 A H
132
+ ATOM 129 HG3 PRO A 133 -3.209 -14.867 -25.752 1.00 0.00 A H
133
+ ATOM 130 HD2 PRO A 133 -5.781 -13.388 -25.557 1.00 0.00 A H
134
+ ATOM 131 HD3 PRO A 133 -5.421 -15.001 -24.777 1.00 0.00 A H
135
+ ATOM 132 N ALA A 134 -4.646 -10.483 -23.671 1.00 0.00 A N
136
+ ATOM 133 CA ALA A 134 -4.733 -9.126 -23.152 1.00 0.00 A C
137
+ ATOM 134 C ALA A 134 -4.919 -8.940 -21.646 1.00 0.00 A C
138
+ ATOM 135 O ALA A 134 -4.464 -7.942 -21.039 1.00 0.00 A O
139
+ ATOM 136 CB ALA A 134 -5.935 -8.465 -23.873 1.00 0.00 A C
140
+ ATOM 137 H ALA A 134 -5.363 -10.947 -24.186 1.00 0.00 A H
141
+ ATOM 138 HA ALA A 134 -3.891 -8.503 -23.416 1.00 0.00 A H
142
+ ATOM 139 HB1 ALA A 134 -6.803 -9.072 -23.537 1.00 0.00 A H
143
+ ATOM 140 HB2 ALA A 134 -5.769 -8.556 -24.968 1.00 0.00 A H
144
+ ATOM 141 HB3 ALA A 134 -6.057 -7.376 -23.695 1.00 0.00 A H
145
+ ATOM 142 N ILE A 135 -5.548 -9.921 -20.885 1.00 0.00 A N
146
+ ATOM 143 CA ILE A 135 -5.667 -9.849 -19.469 1.00 0.00 A C
147
+ ATOM 144 C ILE A 135 -4.321 -10.395 -18.843 1.00 0.00 A C
148
+ ATOM 145 O ILE A 135 -3.737 -9.702 -18.034 1.00 0.00 A O
149
+ ATOM 146 CB ILE A 135 -6.845 -10.542 -18.772 1.00 0.00 A C
150
+ ATOM 147 CG1 ILE A 135 -8.157 -10.119 -19.465 1.00 0.00 A C
151
+ ATOM 148 CG2 ILE A 135 -6.871 -10.065 -17.308 1.00 0.00 A C
152
+ ATOM 149 CD1 ILE A 135 -8.482 -8.565 -19.345 1.00 0.00 A C
153
+ ATOM 150 H ILE A 135 -5.947 -10.732 -21.305 1.00 0.00 A H
154
+ ATOM 151 HA ILE A 135 -5.745 -8.810 -19.186 1.00 0.00 A H
155
+ ATOM 152 HB ILE A 135 -6.844 -11.653 -18.774 1.00 0.00 A H
156
+ ATOM 153 HG12 ILE A 135 -8.053 -10.530 -20.492 1.00 0.00 A H
157
+ ATOM 154 HG13 ILE A 135 -9.023 -10.708 -19.094 1.00 0.00 A H
158
+ ATOM 155 HG21 ILE A 135 -7.789 -10.429 -16.800 1.00 0.00 A H
159
+ ATOM 156 HG22 ILE A 135 -6.026 -10.513 -16.742 1.00 0.00 A H
160
+ ATOM 157 HG23 ILE A 135 -6.950 -8.957 -17.267 1.00 0.00 A H
161
+ ATOM 158 HD11 ILE A 135 -9.492 -8.404 -19.780 1.00 0.00 A H
162
+ ATOM 159 HD12 ILE A 135 -8.472 -8.281 -18.271 1.00 0.00 A H
163
+ ATOM 160 HD13 ILE A 135 -7.757 -8.023 -19.989 1.00 0.00 A H
164
+ ATOM 161 N ARG A 136 -3.780 -11.437 -19.439 1.00 0.00 A N
165
+ ATOM 162 CA ARG A 136 -2.470 -11.949 -19.094 1.00 0.00 A C
166
+ ATOM 163 C ARG A 136 -1.279 -11.042 -19.268 1.00 0.00 A C
167
+ ATOM 164 O ARG A 136 -0.399 -10.966 -18.421 1.00 0.00 A O
168
+ ATOM 165 CB ARG A 136 -2.113 -13.179 -19.973 1.00 0.00 A C
169
+ ATOM 166 CG ARG A 136 -0.735 -13.809 -19.820 1.00 0.00 A C
170
+ ATOM 167 CD ARG A 136 -0.436 -14.327 -18.388 1.00 0.00 A C
171
+ ATOM 168 NE ARG A 136 0.987 -14.833 -18.465 1.00 0.00 A N
172
+ ATOM 169 CZ ARG A 136 1.826 -14.957 -17.451 1.00 0.00 A C
173
+ ATOM 170 NH1 ARG A 136 1.406 -14.824 -16.229 1.00 0.00 A N
174
+ ATOM 171 NH2 ARG A 136 3.049 -15.500 -17.692 1.00 0.00 A N
175
+ ATOM 172 H ARG A 136 -4.335 -12.001 -20.046 1.00 0.00 A H
176
+ ATOM 173 HA ARG A 136 -2.458 -12.323 -18.080 1.00 0.00 A H
177
+ ATOM 174 HB2 ARG A 136 -2.923 -13.939 -19.936 1.00 0.00 A H
178
+ ATOM 175 HB3 ARG A 136 -2.132 -12.816 -21.023 1.00 0.00 A H
179
+ ATOM 176 HG2 ARG A 136 -0.499 -14.604 -20.560 1.00 0.00 A H
180
+ ATOM 177 HG3 ARG A 136 0.036 -13.031 -20.000 1.00 0.00 A H
181
+ ATOM 178 HD2 ARG A 136 -0.402 -13.514 -17.631 1.00 0.00 A H
182
+ ATOM 179 HD3 ARG A 136 -1.154 -15.119 -18.085 1.00 0.00 A H
183
+ ATOM 180 HE ARG A 136 1.332 -15.082 -19.370 1.00 0.00 A H
184
+ ATOM 181 HH11 ARG A 136 2.015 -15.050 -15.469 1.00 0.00 A H
185
+ ATOM 182 HH12 ARG A 136 0.560 -14.390 -15.921 1.00 0.00 A H
186
+ ATOM 183 HH21 ARG A 136 3.305 -15.741 -18.628 1.00 0.00 A H
187
+ ATOM 184 HH22 ARG A 136 3.672 -15.688 -16.932 1.00 0.00 A H
188
+ ATOM 185 N ARG A 137 -1.154 -10.289 -20.390 1.00 0.00 A N
189
+ ATOM 186 CA ARG A 137 -0.144 -9.232 -20.518 1.00 0.00 A C
190
+ ATOM 187 C ARG A 137 -0.336 -7.992 -19.681 1.00 0.00 A C
191
+ ATOM 188 O ARG A 137 0.677 -7.451 -19.179 1.00 0.00 A O
192
+ ATOM 189 CB ARG A 137 -0.014 -8.755 -22.015 1.00 0.00 A C
193
+ ATOM 190 CG ARG A 137 1.168 -7.847 -22.352 1.00 0.00 A C
194
+ ATOM 191 CD ARG A 137 1.510 -7.639 -23.840 1.00 0.00 A C
195
+ ATOM 192 NE ARG A 137 2.985 -7.234 -23.944 1.00 0.00 A N
196
+ ATOM 193 CZ ARG A 137 3.691 -7.337 -25.051 1.00 0.00 A C
197
+ ATOM 194 NH1 ARG A 137 3.015 -7.812 -26.139 1.00 0.00 A N
198
+ ATOM 195 NH2 ARG A 137 4.954 -7.047 -25.098 1.00 0.00 A N
199
+ ATOM 196 H ARG A 137 -1.782 -10.327 -21.162 1.00 0.00 A H
200
+ ATOM 197 HA ARG A 137 0.815 -9.628 -20.219 1.00 0.00 A H
201
+ ATOM 198 HB2 ARG A 137 0.093 -9.702 -22.586 1.00 0.00 A H
202
+ ATOM 199 HB3 ARG A 137 -0.986 -8.274 -22.255 1.00 0.00 A H
203
+ ATOM 200 HG2 ARG A 137 1.215 -6.826 -21.917 1.00 0.00 A H
204
+ ATOM 201 HG3 ARG A 137 2.061 -8.245 -21.824 1.00 0.00 A H
205
+ ATOM 202 HD2 ARG A 137 1.322 -8.603 -24.357 1.00 0.00 A H
206
+ ATOM 203 HD3 ARG A 137 0.828 -6.861 -24.245 1.00 0.00 A H
207
+ ATOM 204 HE ARG A 137 3.428 -6.752 -23.187 1.00 0.00 A H
208
+ ATOM 205 HH11 ARG A 137 3.553 -8.108 -26.929 1.00 0.00 A H
209
+ ATOM 206 HH12 ARG A 137 2.017 -7.851 -26.104 1.00 0.00 A H
210
+ ATOM 207 HH21 ARG A 137 5.424 -6.770 -24.260 1.00 0.00 A H
211
+ ATOM 208 HH22 ARG A 137 5.531 -7.019 -25.915 1.00 0.00 A H
212
+ ATOM 209 N LEU A 138 -1.596 -7.509 -19.415 1.00 0.00 A N
213
+ ATOM 210 CA LEU A 138 -1.697 -6.391 -18.475 1.00 0.00 A C
214
+ ATOM 211 C LEU A 138 -1.405 -6.774 -17.010 1.00 0.00 A C
215
+ ATOM 212 O LEU A 138 -0.902 -5.967 -16.194 1.00 0.00 A O
216
+ ATOM 213 CB LEU A 138 -3.081 -5.669 -18.612 1.00 0.00 A C
217
+ ATOM 214 CG LEU A 138 -4.477 -6.249 -18.054 1.00 0.00 A C
218
+ ATOM 215 CD1 LEU A 138 -4.706 -5.968 -16.541 1.00 0.00 A C
219
+ ATOM 216 CD2 LEU A 138 -5.700 -5.845 -18.901 1.00 0.00 A C
220
+ ATOM 217 H LEU A 138 -2.427 -7.890 -19.812 1.00 0.00 A H
221
+ ATOM 218 HA LEU A 138 -0.908 -5.674 -18.647 1.00 0.00 A H
222
+ ATOM 219 HB2 LEU A 138 -3.001 -4.608 -18.295 1.00 0.00 A H
223
+ ATOM 220 HB3 LEU A 138 -3.207 -5.640 -19.715 1.00 0.00 A H
224
+ ATOM 221 HG LEU A 138 -4.539 -7.338 -18.265 1.00 0.00 A H
225
+ ATOM 222 HD11 LEU A 138 -3.934 -6.495 -15.941 1.00 0.00 A H
226
+ ATOM 223 HD12 LEU A 138 -4.482 -4.923 -16.238 1.00 0.00 A H
227
+ ATOM 224 HD13 LEU A 138 -5.697 -6.164 -16.077 1.00 0.00 A H
228
+ ATOM 225 HD21 LEU A 138 -5.959 -4.771 -18.779 1.00 0.00 A H
229
+ ATOM 226 HD22 LEU A 138 -5.618 -6.027 -19.994 1.00 0.00 A H
230
+ ATOM 227 HD23 LEU A 138 -6.551 -6.458 -18.536 1.00 0.00 A H
231
+ ATOM 228 N LEU A 139 -1.589 -8.073 -16.650 1.00 0.00 A N
232
+ ATOM 229 CA LEU A 139 -1.085 -8.589 -15.374 1.00 0.00 A C
233
+ ATOM 230 C LEU A 139 0.480 -8.645 -15.289 1.00 0.00 A C
234
+ ATOM 231 O LEU A 139 1.072 -8.008 -14.387 1.00 0.00 A O
235
+ ATOM 232 CB LEU A 139 -1.676 -9.917 -15.060 1.00 0.00 A C
236
+ ATOM 233 CG LEU A 139 -3.186 -9.884 -14.779 1.00 0.00 A C
237
+ ATOM 234 CD1 LEU A 139 -3.643 -11.319 -14.766 1.00 0.00 A C
238
+ ATOM 235 CD2 LEU A 139 -3.461 -9.190 -13.425 1.00 0.00 A C
239
+ ATOM 236 H LEU A 139 -1.946 -8.809 -17.220 1.00 0.00 A H
240
+ ATOM 237 HA LEU A 139 -1.411 -7.991 -14.536 1.00 0.00 A H
241
+ ATOM 238 HB2 LEU A 139 -1.454 -10.587 -15.918 1.00 0.00 A H
242
+ ATOM 239 HB3 LEU A 139 -1.130 -10.428 -14.238 1.00 0.00 A H
243
+ ATOM 240 HG LEU A 139 -3.812 -9.428 -15.576 1.00 0.00 A H
244
+ ATOM 241 HD11 LEU A 139 -4.641 -11.362 -14.280 1.00 0.00 A H
245
+ ATOM 242 HD12 LEU A 139 -3.592 -11.721 -15.801 1.00 0.00 A H
246
+ ATOM 243 HD13 LEU A 139 -2.967 -11.932 -14.132 1.00 0.00 A H
247
+ ATOM 244 HD21 LEU A 139 -3.101 -8.139 -13.415 1.00 0.00 A H
248
+ ATOM 245 HD22 LEU A 139 -4.564 -9.214 -13.293 1.00 0.00 A H
249
+ ATOM 246 HD23 LEU A 139 -3.038 -9.785 -12.587 1.00 0.00 A H
250
+ ATOM 247 N ALA A 140 1.052 -9.434 -16.235 1.00 0.00 A N
251
+ ATOM 248 CA ALA A 140 2.444 -9.834 -16.348 1.00 0.00 A C
252
+ ATOM 249 C ALA A 140 3.021 -9.564 -17.817 1.00 0.00 A C
253
+ ATOM 250 O ALA A 140 2.895 -10.339 -18.744 1.00 0.00 A O
254
+ ATOM 251 CB ALA A 140 2.575 -11.365 -16.014 1.00 0.00 A C
255
+ ATOM 252 H ALA A 140 0.523 -9.990 -16.872 1.00 0.00 A H
256
+ ATOM 253 HA ALA A 140 3.076 -9.207 -15.736 1.00 0.00 A H
257
+ ATOM 254 HB1 ALA A 140 3.618 -11.742 -15.948 1.00 0.00 A H
258
+ ATOM 255 HB2 ALA A 140 1.982 -11.944 -16.754 1.00 0.00 A H
259
+ ATOM 256 HB3 ALA A 140 2.131 -11.614 -15.027 1.00 0.00 A H
260
+ ATOM 257 N GLU A 141 3.587 -8.391 -18.032 1.00 0.00 A N
261
+ ATOM 258 CA GLU A 141 4.167 -8.016 -19.348 1.00 0.00 A C
262
+ ATOM 259 C GLU A 141 5.320 -8.949 -19.801 1.00 0.00 A C
263
+ ATOM 260 O GLU A 141 6.211 -9.336 -19.025 1.00 0.00 A O
264
+ ATOM 261 CB GLU A 141 4.452 -6.533 -19.200 1.00 0.00 A C
265
+ ATOM 262 CG GLU A 141 5.380 -5.899 -20.251 1.00 0.00 A C
266
+ ATOM 263 CD GLU A 141 4.823 -5.899 -21.706 1.00 0.00 A C
267
+ ATOM 264 OE1 GLU A 141 5.387 -6.691 -22.533 1.00 0.00 A O
268
+ ATOM 265 OE2 GLU A 141 3.836 -5.137 -22.006 1.00 0.00 A O
269
+ ATOM 266 H GLU A 141 3.552 -7.666 -17.350 1.00 0.00 A H
270
+ ATOM 267 HA GLU A 141 3.347 -8.186 -20.030 1.00 0.00 A H
271
+ ATOM 268 HB2 GLU A 141 3.508 -5.948 -19.178 1.00 0.00 A H
272
+ ATOM 269 HB3 GLU A 141 4.867 -6.278 -18.201 1.00 0.00 A H
273
+ ATOM 270 HG2 GLU A 141 5.640 -4.831 -20.091 1.00 0.00 A H
274
+ ATOM 271 HG3 GLU A 141 6.413 -6.306 -20.209 1.00 0.00 A H
275
+ ATOM 272 N TRP A 142 5.280 -9.371 -21.076 1.00 0.00 A N
276
+ ATOM 273 CA TRP A 142 6.227 -10.289 -21.789 1.00 0.00 A C
277
+ ATOM 274 C TRP A 142 7.612 -9.724 -21.904 1.00 0.00 A C
278
+ ATOM 275 O TRP A 142 8.545 -10.455 -21.855 1.00 0.00 A O
279
+ ATOM 276 CB TRP A 142 5.697 -10.785 -23.146 1.00 0.00 A C
280
+ ATOM 277 CG TRP A 142 4.264 -11.380 -22.960 1.00 0.00 A C
281
+ ATOM 278 CD1 TRP A 142 3.588 -11.758 -21.815 1.00 0.00 A C
282
+ ATOM 279 CD2 TRP A 142 3.299 -11.376 -24.069 1.00 0.00 A C
283
+ ATOM 280 NE1 TRP A 142 2.237 -11.889 -22.163 1.00 0.00 A N
284
+ ATOM 281 CE2 TRP A 142 2.024 -11.723 -23.480 1.00 0.00 A C
285
+ ATOM 282 CE3 TRP A 142 3.391 -11.042 -25.392 1.00 0.00 A C
286
+ ATOM 283 CZ2 TRP A 142 0.851 -11.736 -24.261 1.00 0.00 A C
287
+ ATOM 284 CZ3 TRP A 142 2.231 -11.051 -26.190 1.00 0.00 A C
288
+ ATOM 285 CH2 TRP A 142 0.987 -11.376 -25.563 1.00 0.00 A C
289
+ ATOM 286 H TRP A 142 4.529 -8.992 -21.611 1.00 0.00 A H
290
+ ATOM 287 HA TRP A 142 6.381 -11.046 -21.034 1.00 0.00 A H
291
+ ATOM 288 HB2 TRP A 142 5.792 -10.119 -24.031 1.00 0.00 A H
292
+ ATOM 289 HB3 TRP A 142 6.330 -11.633 -23.485 1.00 0.00 A H
293
+ ATOM 290 HD1 TRP A 142 3.955 -11.848 -20.803 1.00 0.00 A H
294
+ ATOM 291 HE1 TRP A 142 1.537 -12.058 -21.505 1.00 0.00 A H
295
+ ATOM 292 HE3 TRP A 142 4.358 -10.873 -25.841 1.00 0.00 A H
296
+ ATOM 293 HZ2 TRP A 142 -0.126 -11.944 -23.850 1.00 0.00 A H
297
+ ATOM 294 HZ3 TRP A 142 2.270 -10.971 -27.266 1.00 0.00 A H
298
+ ATOM 295 HH2 TRP A 142 0.130 -11.164 -26.185 1.00 0.00 A H
299
+ ATOM 296 N ASN A 143 7.685 -8.409 -22.068 1.00 0.00 A N
300
+ ATOM 297 CA ASN A 143 8.978 -7.746 -22.219 1.00 0.00 A C
301
+ ATOM 298 C ASN A 143 9.239 -6.701 -21.198 1.00 0.00 A C
302
+ ATOM 299 O ASN A 143 8.679 -5.615 -21.253 1.00 0.00 A O
303
+ ATOM 300 CB ASN A 143 8.994 -7.100 -23.631 1.00 0.00 A C
304
+ ATOM 301 CG ASN A 143 8.711 -8.106 -24.763 1.00 0.00 A C
305
+ ATOM 302 OD1 ASN A 143 7.616 -8.063 -25.379 1.00 0.00 A O
306
+ ATOM 303 ND2 ASN A 143 9.679 -8.997 -24.960 1.00 0.00 A N
307
+ ATOM 304 H ASN A 143 6.864 -7.849 -22.150 1.00 0.00 A H
308
+ ATOM 305 HA ASN A 143 9.795 -8.441 -22.092 1.00 0.00 A H
309
+ ATOM 306 HB2 ASN A 143 8.323 -6.216 -23.670 1.00 0.00 A H
310
+ ATOM 307 HB3 ASN A 143 10.033 -6.723 -23.736 1.00 0.00 A H
311
+ ATOM 308 HD21 ASN A 143 10.486 -8.752 -24.422 1.00 0.00 A H
312
+ ATOM 309 HD22 ASN A 143 9.535 -9.644 -25.709 1.00 0.00 A H
313
+ ATOM 310 N LEU A 144 9.977 -6.982 -20.038 1.00 0.00 A N
314
+ ATOM 311 CA LEU A 144 10.120 -5.975 -19.013 1.00 0.00 A C
315
+ ATOM 312 C LEU A 144 11.411 -6.447 -18.299 1.00 0.00 A C
316
+ ATOM 313 O LEU A 144 11.483 -7.599 -17.896 1.00 0.00 A O
317
+ ATOM 314 CB LEU A 144 8.951 -5.940 -18.094 1.00 0.00 A C
318
+ ATOM 315 CG LEU A 144 9.039 -4.825 -17.075 1.00 0.00 A C
319
+ ATOM 316 CD1 LEU A 144 9.498 -3.473 -17.608 1.00 0.00 A C
320
+ ATOM 317 CD2 LEU A 144 7.541 -4.555 -16.660 1.00 0.00 A C
321
+ ATOM 318 H LEU A 144 10.580 -7.774 -19.983 1.00 0.00 A H
322
+ ATOM 319 HA LEU A 144 10.457 -5.053 -19.463 1.00 0.00 A H
323
+ ATOM 320 HB2 LEU A 144 7.988 -5.794 -18.628 1.00 0.00 A H
324
+ ATOM 321 HB3 LEU A 144 8.874 -6.840 -17.447 1.00 0.00 A H
325
+ ATOM 322 HG LEU A 144 9.630 -5.107 -16.178 1.00 0.00 A H
326
+ ATOM 323 HD11 LEU A 144 9.039 -3.317 -18.607 1.00 0.00 A H
327
+ ATOM 324 HD12 LEU A 144 9.403 -2.605 -16.921 1.00 0.00 A H
328
+ ATOM 325 HD13 LEU A 144 10.580 -3.442 -17.859 1.00 0.00 A H
329
+ ATOM 326 HD21 LEU A 144 7.249 -5.479 -16.116 1.00 0.00 A H
330
+ ATOM 327 HD22 LEU A 144 7.356 -3.675 -16.007 1.00 0.00 A H
331
+ ATOM 328 HD23 LEU A 144 6.967 -4.429 -17.603 1.00 0.00 A H
332
+ ATOM 329 N ASP A 145 12.420 -5.593 -17.981 1.00 0.00 A N
333
+ ATOM 330 CA ASP A 145 13.705 -6.063 -17.555 1.00 0.00 A C
334
+ ATOM 331 C ASP A 145 13.788 -6.040 -16.045 1.00 0.00 A C
335
+ ATOM 332 O ASP A 145 13.048 -5.352 -15.324 1.00 0.00 A O
336
+ ATOM 333 CB ASP A 145 14.805 -5.065 -18.046 1.00 0.00 A C
337
+ ATOM 334 CG ASP A 145 14.848 -5.005 -19.526 1.00 0.00 A C
338
+ ATOM 335 OD1 ASP A 145 15.130 -6.016 -20.110 1.00 0.00 A O
339
+ ATOM 336 OD2 ASP A 145 14.658 -3.877 -20.095 1.00 0.00 A O
340
+ ATOM 337 H ASP A 145 12.284 -4.608 -18.052 1.00 0.00 A H
341
+ ATOM 338 HA ASP A 145 13.895 -7.064 -17.914 1.00 0.00 A H
342
+ ATOM 339 HB2 ASP A 145 14.558 -4.015 -17.784 1.00 0.00 A H
343
+ ATOM 340 HB3 ASP A 145 15.812 -5.318 -17.650 1.00 0.00 A H
344
+ ATOM 341 N ALA A 146 14.748 -6.823 -15.473 1.00 0.00 A N
345
+ ATOM 342 CA ALA A 146 15.082 -6.725 -14.110 1.00 0.00 A C
346
+ ATOM 343 C ALA A 146 16.539 -6.396 -13.868 1.00 0.00 A C
347
+ ATOM 344 O ALA A 146 17.472 -6.779 -14.558 1.00 0.00 A O
348
+ ATOM 345 CB ALA A 146 14.721 -8.013 -13.457 1.00 0.00 A C
349
+ ATOM 346 H ALA A 146 15.373 -7.341 -16.052 1.00 0.00 A H
350
+ ATOM 347 HA ALA A 146 14.687 -5.783 -13.758 1.00 0.00 A H
351
+ ATOM 348 HB1 ALA A 146 13.673 -8.152 -13.800 1.00 0.00 A H
352
+ ATOM 349 HB2 ALA A 146 14.793 -8.070 -12.350 1.00 0.00 A H
353
+ ATOM 350 HB3 ALA A 146 15.428 -8.781 -13.839 1.00 0.00 A H
354
+ ATOM 351 N SER A 147 16.810 -5.687 -12.670 1.00 0.00 A N
355
+ ATOM 352 CA SER A 147 18.107 -5.273 -12.339 1.00 0.00 A C
356
+ ATOM 353 C SER A 147 19.057 -6.429 -11.887 1.00 0.00 A C
357
+ ATOM 354 O SER A 147 18.834 -7.190 -10.967 1.00 0.00 A O
358
+ ATOM 355 CB SER A 147 18.065 -4.412 -11.020 1.00 0.00 A C
359
+ ATOM 356 OG SER A 147 17.528 -3.183 -11.173 1.00 0.00 A O
360
+ ATOM 357 H SER A 147 16.153 -5.473 -11.951 1.00 0.00 A H
361
+ ATOM 358 HA SER A 147 18.530 -4.809 -13.217 1.00 0.00 A H
362
+ ATOM 359 HB2 SER A 147 17.495 -4.980 -10.254 1.00 0.00 A H
363
+ ATOM 360 HB3 SER A 147 19.139 -4.295 -10.760 1.00 0.00 A H
364
+ ATOM 361 HG SER A 147 17.063 -2.948 -10.367 1.00 0.00 A H
365
+ ATOM 362 N ALA A 148 20.128 -6.604 -12.723 1.00 0.00 A N
366
+ ATOM 363 CA ALA A 148 20.966 -7.791 -12.728 1.00 0.00 A C
367
+ ATOM 364 C ALA A 148 21.999 -7.833 -11.556 1.00 0.00 A C
368
+ ATOM 365 O ALA A 148 22.506 -8.861 -11.286 1.00 0.00 A O
369
+ ATOM 366 CB ALA A 148 21.713 -7.830 -14.101 1.00 0.00 A C
370
+ ATOM 367 H ALA A 148 20.309 -5.887 -13.392 1.00 0.00 A H
371
+ ATOM 368 HA ALA A 148 20.328 -8.661 -12.671 1.00 0.00 A H
372
+ ATOM 369 HB1 ALA A 148 22.406 -6.971 -14.228 1.00 0.00 A H
373
+ ATOM 370 HB2 ALA A 148 20.965 -7.704 -14.914 1.00 0.00 A H
374
+ ATOM 371 HB3 ALA A 148 22.241 -8.803 -14.189 1.00 0.00 A H
375
+ ATOM 372 N ILE A 149 22.252 -6.794 -10.749 1.00 0.00 A N
376
+ ATOM 373 CA ILE A 149 23.199 -6.885 -9.636 1.00 0.00 A C
377
+ ATOM 374 C ILE A 149 22.628 -7.391 -8.424 1.00 0.00 A C
378
+ ATOM 375 O ILE A 149 21.457 -7.134 -8.224 1.00 0.00 A O
379
+ ATOM 376 CB ILE A 149 23.832 -5.561 -9.345 1.00 0.00 A C
380
+ ATOM 377 CG1 ILE A 149 25.178 -5.524 -8.580 1.00 0.00 A C
381
+ ATOM 378 CG2 ILE A 149 22.850 -4.507 -8.665 1.00 0.00 A C
382
+ ATOM 379 CD1 ILE A 149 26.350 -6.291 -9.269 1.00 0.00 A C
383
+ ATOM 380 H ILE A 149 21.926 -5.890 -11.012 1.00 0.00 A H
384
+ ATOM 381 HA ILE A 149 23.959 -7.567 -9.988 1.00 0.00 A H
385
+ ATOM 382 HB ILE A 149 24.168 -5.103 -10.300 1.00 0.00 A H
386
+ ATOM 383 HG12 ILE A 149 25.438 -4.445 -8.546 1.00 0.00 A H
387
+ ATOM 384 HG13 ILE A 149 25.023 -5.893 -7.543 1.00 0.00 A H
388
+ ATOM 385 HG21 ILE A 149 21.919 -4.438 -9.268 1.00 0.00 A H
389
+ ATOM 386 HG22 ILE A 149 22.621 -4.931 -7.664 1.00 0.00 A H
390
+ ATOM 387 HG23 ILE A 149 23.395 -3.555 -8.489 1.00 0.00 A H
391
+ ATOM 388 HD11 ILE A 149 27.256 -5.930 -8.735 1.00 0.00 A H
392
+ ATOM 389 HD12 ILE A 149 26.281 -7.395 -9.176 1.00 0.00 A H
393
+ ATOM 390 HD13 ILE A 149 26.459 -6.039 -10.345 1.00 0.00 A H
394
+ ATOM 391 N LYS A 150 23.424 -8.152 -7.572 1.00 0.00 A N
395
+ ATOM 392 CA LYS A 150 22.927 -8.649 -6.291 1.00 0.00 A C
396
+ ATOM 393 C LYS A 150 24.215 -9.065 -5.536 1.00 0.00 A C
397
+ ATOM 394 O LYS A 150 25.084 -9.680 -6.082 1.00 0.00 A O
398
+ ATOM 395 CB LYS A 150 22.004 -9.857 -6.458 1.00 0.00 A C
399
+ ATOM 396 CG LYS A 150 21.455 -10.509 -5.208 1.00 0.00 A C
400
+ ATOM 397 CD LYS A 150 20.460 -11.555 -5.553 1.00 0.00 A C
401
+ ATOM 398 CE LYS A 150 21.133 -12.864 -6.145 1.00 0.00 A C
402
+ ATOM 399 NZ LYS A 150 19.975 -13.691 -6.566 1.00 0.00 A N
403
+ ATOM 400 H LYS A 150 24.352 -8.402 -7.839 1.00 0.00 A H
404
+ ATOM 401 HA LYS A 150 22.438 -7.846 -5.761 1.00 0.00 A H
405
+ ATOM 402 HB2 LYS A 150 21.086 -9.614 -7.035 1.00 0.00 A H
406
+ ATOM 403 HB3 LYS A 150 22.537 -10.601 -7.089 1.00 0.00 A H
407
+ ATOM 404 HG2 LYS A 150 22.204 -10.900 -4.486 1.00 0.00 A H
408
+ ATOM 405 HG3 LYS A 150 20.780 -9.851 -4.620 1.00 0.00 A H
409
+ ATOM 406 HD2 LYS A 150 19.959 -11.845 -4.605 1.00 0.00 A H
410
+ ATOM 407 HD3 LYS A 150 19.728 -11.120 -6.267 1.00 0.00 A H
411
+ ATOM 408 HE2 LYS A 150 21.853 -12.704 -6.975 1.00 0.00 A H
412
+ ATOM 409 HE3 LYS A 150 21.736 -13.453 -5.420 1.00 0.00 A H
413
+ ATOM 410 HZ1 LYS A 150 19.549 -14.075 -5.698 1.00 0.00 A H
414
+ ATOM 411 HZ2 LYS A 150 19.307 -13.055 -7.046 1.00 0.00 A H
415
+ ATOM 412 HZ3 LYS A 150 20.279 -14.479 -7.172 1.00 0.00 A H
416
+ ATOM 413 N GLY A 151 24.432 -8.646 -4.233 1.00 0.00 A N
417
+ ATOM 414 CA GLY A 151 25.589 -9.095 -3.462 1.00 0.00 A C
418
+ ATOM 415 C GLY A 151 25.202 -10.262 -2.466 1.00 0.00 A C
419
+ ATOM 416 O GLY A 151 26.072 -10.750 -1.760 1.00 0.00 A O
420
+ ATOM 417 H GLY A 151 24.009 -7.868 -3.775 1.00 0.00 A H
421
+ ATOM 418 HA2 GLY A 151 26.081 -8.261 -2.983 1.00 0.00 A H
422
+ ATOM 419 HA3 GLY A 151 26.296 -9.597 -4.107 1.00 0.00 A H
423
+ ATOM 420 N THR A 152 23.912 -10.565 -2.367 1.00 0.00 A N
424
+ ATOM 421 CA THR A 152 23.472 -11.595 -1.501 1.00 0.00 A C
425
+ ATOM 422 C THR A 152 22.815 -12.661 -2.246 1.00 0.00 A C
426
+ ATOM 423 O THR A 152 21.717 -12.439 -2.718 1.00 0.00 A O
427
+ ATOM 424 CB THR A 152 22.466 -11.133 -0.417 1.00 0.00 A C
428
+ ATOM 425 OG1 THR A 152 22.809 -9.853 0.001 1.00 0.00 A O
429
+ ATOM 426 CG2 THR A 152 22.471 -12.057 0.802 1.00 0.00 A C
430
+ ATOM 427 H THR A 152 23.211 -10.076 -2.881 1.00 0.00 A H
431
+ ATOM 428 HA THR A 152 24.269 -11.989 -0.887 1.00 0.00 A H
432
+ ATOM 429 HB THR A 152 21.408 -11.158 -0.754 1.00 0.00 A H
433
+ ATOM 430 HG1 THR A 152 22.626 -9.364 -0.805 1.00 0.00 A H
434
+ ATOM 431 HG21 THR A 152 22.324 -13.118 0.506 1.00 0.00 A H
435
+ ATOM 432 HG22 THR A 152 23.472 -12.023 1.283 1.00 0.00 A H
436
+ ATOM 433 HG23 THR A 152 21.576 -11.870 1.433 1.00 0.00 A H
437
+ ATOM 434 N GLY A 153 23.477 -13.798 -2.371 1.00 0.00 A N
438
+ ATOM 435 CA GLY A 153 23.275 -14.925 -3.272 1.00 0.00 A C
439
+ ATOM 436 C GLY A 153 22.496 -16.047 -2.684 1.00 0.00 A C
440
+ ATOM 437 O GLY A 153 21.427 -15.830 -2.144 1.00 0.00 A O
441
+ ATOM 438 H GLY A 153 24.287 -13.974 -1.816 1.00 0.00 A H
442
+ ATOM 439 HA2 GLY A 153 24.243 -15.316 -3.548 1.00 0.00 A H
443
+ ATOM 440 HA3 GLY A 153 22.677 -14.576 -4.101 1.00 0.00 A H
444
+ ATOM 441 N VAL A 154 22.930 -17.328 -2.887 1.00 0.00 A N
445
+ ATOM 442 CA VAL A 154 21.984 -18.385 -2.591 1.00 0.00 A C
446
+ ATOM 443 C VAL A 154 21.842 -18.608 -1.063 1.00 0.00 A C
447
+ ATOM 444 O VAL A 154 22.794 -18.444 -0.296 1.00 0.00 A O
448
+ ATOM 445 CB VAL A 154 22.391 -19.648 -3.288 1.00 0.00 A C
449
+ ATOM 446 CG1 VAL A 154 21.593 -20.947 -2.932 1.00 0.00 A C
450
+ ATOM 447 CG2 VAL A 154 22.270 -19.250 -4.752 1.00 0.00 A C
451
+ ATOM 448 H VAL A 154 23.817 -17.615 -3.240 1.00 0.00 A H
452
+ ATOM 449 HA VAL A 154 21.062 -18.140 -3.097 1.00 0.00 A H
453
+ ATOM 450 HB VAL A 154 23.482 -19.852 -3.257 1.00 0.00 A H
454
+ ATOM 451 HG11 VAL A 154 21.900 -21.783 -3.596 1.00 0.00 A H
455
+ ATOM 452 HG12 VAL A 154 21.791 -21.262 -1.885 1.00 0.00 A H
456
+ ATOM 453 HG13 VAL A 154 20.510 -20.741 -3.072 1.00 0.00 A H
457
+ ATOM 454 HG21 VAL A 154 22.391 -20.186 -5.339 1.00 0.00 A H
458
+ ATOM 455 HG22 VAL A 154 21.292 -18.770 -4.968 1.00 0.00 A H
459
+ ATOM 456 HG23 VAL A 154 23.047 -18.476 -4.926 1.00 0.00 A H
460
+ ATOM 457 N GLY A 155 20.670 -18.879 -0.537 1.00 0.00 A N
461
+ ATOM 458 CA GLY A 155 20.462 -19.118 0.874 1.00 0.00 A C
462
+ ATOM 459 C GLY A 155 20.487 -17.919 1.756 1.00 0.00 A C
463
+ ATOM 460 O GLY A 155 20.401 -18.084 2.963 1.00 0.00 A O
464
+ ATOM 461 H GLY A 155 19.926 -19.039 -1.181 1.00 0.00 A H
465
+ ATOM 462 HA2 GLY A 155 21.117 -19.871 1.287 1.00 0.00 A H
466
+ ATOM 463 HA3 GLY A 155 19.496 -19.588 0.986 1.00 0.00 A H
467
+ ATOM 464 N GLY A 156 20.566 -16.676 1.198 1.00 0.00 A N
468
+ ATOM 465 CA GLY A 156 20.723 -15.470 1.979 1.00 0.00 A C
469
+ ATOM 466 C GLY A 156 22.131 -15.258 2.394 1.00 0.00 A C
470
+ ATOM 467 O GLY A 156 22.425 -14.303 3.132 1.00 0.00 A O
471
+ ATOM 468 H GLY A 156 20.557 -16.688 0.201 1.00 0.00 A H
472
+ ATOM 469 HA2 GLY A 156 20.205 -15.571 2.921 1.00 0.00 A H
473
+ ATOM 470 HA3 GLY A 156 20.379 -14.636 1.386 1.00 0.00 A H
474
+ ATOM 471 N ARG A 157 23.060 -16.033 1.825 1.00 0.00 A N
475
+ ATOM 472 CA ARG A 157 24.449 -15.991 2.225 1.00 0.00 A C
476
+ ATOM 473 C ARG A 157 25.265 -15.035 1.312 1.00 0.00 A C
477
+ ATOM 474 O ARG A 157 25.093 -15.130 0.101 1.00 0.00 A O
478
+ ATOM 475 CB ARG A 157 24.950 -17.387 2.294 1.00 0.00 A C
479
+ ATOM 476 CG ARG A 157 24.255 -18.480 3.149 1.00 0.00 A C
480
+ ATOM 477 CD ARG A 157 24.698 -19.941 3.030 1.00 0.00 A C
481
+ ATOM 478 NE ARG A 157 24.285 -20.297 1.608 1.00 0.00 A N
482
+ ATOM 479 CZ ARG A 157 23.592 -21.427 1.267 1.00 0.00 A C
483
+ ATOM 480 NH1 ARG A 157 23.045 -22.252 2.220 1.00 0.00 A N
484
+ ATOM 481 NH2 ARG A 157 23.460 -21.768 0.002 1.00 0.00 A N
485
+ ATOM 482 H ARG A 157 22.805 -16.776 1.212 1.00 0.00 A H
486
+ ATOM 483 HA ARG A 157 24.517 -15.542 3.205 1.00 0.00 A H
487
+ ATOM 484 HB2 ARG A 157 25.079 -17.854 1.294 1.00 0.00 A H
488
+ ATOM 485 HB3 ARG A 157 25.904 -17.322 2.859 1.00 0.00 A H
489
+ ATOM 486 HG2 ARG A 157 24.499 -18.178 4.189 1.00 0.00 A H
490
+ ATOM 487 HG3 ARG A 157 23.161 -18.354 3.006 1.00 0.00 A H
491
+ ATOM 488 HD2 ARG A 157 25.806 -20.010 3.054 1.00 0.00 A H
492
+ ATOM 489 HD3 ARG A 157 24.096 -20.544 3.743 1.00 0.00 A H
493
+ ATOM 490 HE ARG A 157 24.517 -19.714 0.829 1.00 0.00 A H
494
+ ATOM 491 HH11 ARG A 157 22.733 -21.747 3.024 1.00 0.00 A H
495
+ ATOM 492 HH12 ARG A 157 22.433 -22.978 1.906 1.00 0.00 A H
496
+ ATOM 493 HH21 ARG A 157 23.932 -21.178 -0.653 1.00 0.00 A H
497
+ ATOM 494 HH22 ARG A 157 23.161 -22.692 -0.236 1.00 0.00 A H
498
+ ATOM 495 N LEU A 158 26.030 -14.089 1.880 1.00 0.00 A N
499
+ ATOM 496 CA LEU A 158 26.794 -13.198 1.023 1.00 0.00 A C
500
+ ATOM 497 C LEU A 158 27.763 -13.855 0.095 1.00 0.00 A C
501
+ ATOM 498 O LEU A 158 28.547 -14.756 0.450 1.00 0.00 A O
502
+ ATOM 499 CB LEU A 158 27.596 -12.175 1.939 1.00 0.00 A C
503
+ ATOM 500 CG LEU A 158 26.735 -11.099 2.480 1.00 0.00 A C
504
+ ATOM 501 CD1 LEU A 158 27.477 -10.199 3.511 1.00 0.00 A C
505
+ ATOM 502 CD2 LEU A 158 26.165 -10.110 1.423 1.00 0.00 A C
506
+ ATOM 503 H LEU A 158 26.174 -14.130 2.866 1.00 0.00 A H
507
+ ATOM 504 HA LEU A 158 26.120 -12.647 0.385 1.00 0.00 A H
508
+ ATOM 505 HB2 LEU A 158 28.057 -12.807 2.728 1.00 0.00 A H
509
+ ATOM 506 HB3 LEU A 158 28.342 -11.655 1.301 1.00 0.00 A H
510
+ ATOM 507 HG LEU A 158 25.833 -11.521 2.973 1.00 0.00 A H
511
+ ATOM 508 HD11 LEU A 158 26.788 -9.523 4.061 1.00 0.00 A H
512
+ ATOM 509 HD12 LEU A 158 28.027 -10.816 4.254 1.00 0.00 A H
513
+ ATOM 510 HD13 LEU A 158 28.134 -9.455 3.012 1.00 0.00 A H
514
+ ATOM 511 HD21 LEU A 158 25.305 -10.512 0.845 1.00 0.00 A H
515
+ ATOM 512 HD22 LEU A 158 25.959 -9.208 2.038 1.00 0.00 A H
516
+ ATOM 513 HD23 LEU A 158 26.976 -9.809 0.725 1.00 0.00 A H
517
+ ATOM 514 N THR A 159 27.768 -13.320 -1.216 1.00 0.00 A N
518
+ ATOM 515 CA THR A 159 28.492 -13.952 -2.333 1.00 0.00 A C
519
+ ATOM 516 C THR A 159 29.976 -13.573 -2.252 1.00 0.00 A C
520
+ ATOM 517 O THR A 159 30.319 -12.423 -1.910 1.00 0.00 A O
521
+ ATOM 518 CB THR A 159 27.804 -13.547 -3.601 1.00 0.00 A C
522
+ ATOM 519 OG1 THR A 159 26.414 -13.866 -3.602 1.00 0.00 A O
523
+ ATOM 520 CG2 THR A 159 28.549 -14.091 -4.822 1.00 0.00 A C
524
+ ATOM 521 H THR A 159 27.273 -12.474 -1.396 1.00 0.00 A H
525
+ ATOM 522 HA THR A 159 28.343 -15.019 -2.260 1.00 0.00 A H
526
+ ATOM 523 HB THR A 159 27.990 -12.452 -3.595 1.00 0.00 A H
527
+ ATOM 524 HG1 THR A 159 25.965 -13.383 -4.300 1.00 0.00 A H
528
+ ATOM 525 HG21 THR A 159 27.904 -13.986 -5.720 1.00 0.00 A H
529
+ ATOM 526 HG22 THR A 159 29.373 -13.367 -4.998 1.00 0.00 A H
530
+ ATOM 527 HG23 THR A 159 28.901 -15.141 -4.728 1.00 0.00 A H
531
+ ATOM 528 N ARG A 160 30.850 -14.614 -2.377 1.00 0.00 A N
532
+ ATOM 529 CA ARG A 160 32.251 -14.508 -2.141 1.00 0.00 A C
533
+ ATOM 530 C ARG A 160 32.866 -15.844 -2.668 1.00 0.00 A C
534
+ ATOM 531 O ARG A 160 32.166 -16.885 -2.938 1.00 0.00 A O
535
+ ATOM 532 CB ARG A 160 32.515 -14.247 -0.641 1.00 0.00 A C
536
+ ATOM 533 CG ARG A 160 31.906 -15.350 0.283 1.00 0.00 A C
537
+ ATOM 534 CD ARG A 160 31.898 -14.910 1.738 1.00 0.00 A C
538
+ ATOM 535 NE ARG A 160 31.832 -16.153 2.496 1.00 0.00 A N
539
+ ATOM 536 CZ ARG A 160 30.729 -16.851 2.654 1.00 0.00 A C
540
+ ATOM 537 NH1 ARG A 160 29.502 -16.493 2.181 1.00 0.00 A N
541
+ ATOM 538 NH2 ARG A 160 30.712 -17.868 3.516 1.00 0.00 A N
542
+ ATOM 539 H ARG A 160 30.569 -15.483 -2.777 1.00 0.00 A H
543
+ ATOM 540 HA ARG A 160 32.607 -13.642 -2.679 1.00 0.00 A H
544
+ ATOM 541 HB2 ARG A 160 33.617 -14.295 -0.505 1.00 0.00 A H
545
+ ATOM 542 HB3 ARG A 160 32.112 -13.283 -0.261 1.00 0.00 A H
546
+ ATOM 543 HG2 ARG A 160 30.858 -15.417 -0.077 1.00 0.00 A H
547
+ ATOM 544 HG3 ARG A 160 32.265 -16.372 0.037 1.00 0.00 A H
548
+ ATOM 545 HD2 ARG A 160 32.841 -14.444 2.096 1.00 0.00 A H
549
+ ATOM 546 HD3 ARG A 160 31.048 -14.230 1.960 1.00 0.00 A H
550
+ ATOM 547 HE ARG A 160 32.661 -16.494 2.940 1.00 0.00 A H
551
+ ATOM 548 HH11 ARG A 160 29.405 -15.731 1.540 1.00 0.00 A H
552
+ ATOM 549 HH12 ARG A 160 28.692 -16.965 2.527 1.00 0.00 A H
553
+ ATOM 550 HH21 ARG A 160 31.483 -17.950 4.148 1.00 0.00 A H
554
+ ATOM 551 HH22 ARG A 160 29.853 -18.326 3.746 1.00 0.00 A H
555
+ ATOM 552 N GLU A 161 34.179 -15.835 -3.029 1.00 0.00 A N
556
+ ATOM 553 CA GLU A 161 34.990 -16.890 -3.695 1.00 0.00 A C
557
+ ATOM 554 C GLU A 161 35.046 -18.210 -2.964 1.00 0.00 A C
558
+ ATOM 555 O GLU A 161 34.949 -18.305 -1.715 1.00 0.00 A O
559
+ ATOM 556 CB GLU A 161 36.417 -16.455 -3.828 1.00 0.00 A C
560
+ ATOM 557 CG GLU A 161 37.096 -16.071 -2.391 1.00 0.00 A C
561
+ ATOM 558 CD GLU A 161 38.524 -15.712 -2.548 1.00 0.00 A C
562
+ ATOM 559 OE1 GLU A 161 39.025 -15.127 -1.561 1.00 0.00 A O
563
+ ATOM 560 OE2 GLU A 161 39.174 -15.970 -3.609 1.00 0.00 A O
564
+ ATOM 561 H GLU A 161 34.712 -15.026 -2.794 1.00 0.00 A H
565
+ ATOM 562 HA GLU A 161 34.482 -17.002 -4.642 1.00 0.00 A H
566
+ ATOM 563 HB2 GLU A 161 36.969 -17.312 -4.268 1.00 0.00 A H
567
+ ATOM 564 HB3 GLU A 161 36.679 -15.693 -4.593 1.00 0.00 A H
568
+ ATOM 565 HG2 GLU A 161 36.625 -15.158 -1.968 1.00 0.00 A H
569
+ ATOM 566 HG3 GLU A 161 37.037 -16.867 -1.617 1.00 0.00 A H
570
+ ATOM 567 N ASP A 162 34.988 -19.331 -3.723 1.00 0.00 A N
571
+ ATOM 568 CA ASP A 162 34.844 -20.691 -3.245 1.00 0.00 A C
572
+ ATOM 569 C ASP A 162 36.237 -21.265 -3.090 1.00 0.00 A C
573
+ ATOM 570 O ASP A 162 36.927 -21.523 -4.061 1.00 0.00 A O
574
+ ATOM 571 CB ASP A 162 33.982 -21.590 -4.190 1.00 0.00 A C
575
+ ATOM 572 CG ASP A 162 32.623 -21.026 -4.187 1.00 0.00 A C
576
+ ATOM 573 OD1 ASP A 162 32.147 -20.634 -3.070 1.00 0.00 A O
577
+ ATOM 574 OD2 ASP A 162 32.007 -20.866 -5.235 1.00 0.00 A O
578
+ ATOM 575 H ASP A 162 35.079 -19.288 -4.715 1.00 0.00 A H
579
+ ATOM 576 HA ASP A 162 34.460 -20.672 -2.235 1.00 0.00 A H
580
+ ATOM 577 HB2 ASP A 162 34.482 -21.529 -5.180 1.00 0.00 A H
581
+ ATOM 578 HB3 ASP A 162 33.916 -22.649 -3.858 1.00 0.00 A H
582
+ ATOM 579 N VAL A 163 36.695 -21.414 -1.843 1.00 0.00 A N
583
+ ATOM 580 CA VAL A 163 38.011 -21.848 -1.488 1.00 0.00 A C
584
+ ATOM 581 C VAL A 163 38.110 -23.264 -1.558 1.00 0.00 A C
585
+ ATOM 582 O VAL A 163 37.130 -23.989 -1.326 1.00 0.00 A O
586
+ ATOM 583 CB VAL A 163 38.432 -21.356 -0.110 1.00 0.00 A C
587
+ ATOM 584 CG1 VAL A 163 38.503 -19.825 0.013 1.00 0.00 A C
588
+ ATOM 585 CG2 VAL A 163 37.498 -21.881 0.959 1.00 0.00 A C
589
+ ATOM 586 H VAL A 163 36.064 -21.351 -1.074 1.00 0.00 A H
590
+ ATOM 587 HA VAL A 163 38.761 -21.613 -2.229 1.00 0.00 A H
591
+ ATOM 588 HB VAL A 163 39.409 -21.795 0.188 1.00 0.00 A H
592
+ ATOM 589 HG11 VAL A 163 37.468 -19.450 0.157 1.00 0.00 A H
593
+ ATOM 590 HG12 VAL A 163 38.946 -19.520 0.985 1.00 0.00 A H
594
+ ATOM 591 HG13 VAL A 163 39.003 -19.264 -0.805 1.00 0.00 A H
595
+ ATOM 592 HG21 VAL A 163 37.668 -22.969 1.102 1.00 0.00 A H
596
+ ATOM 593 HG22 VAL A 163 37.792 -21.419 1.926 1.00 0.00 A H
597
+ ATOM 594 HG23 VAL A 163 36.415 -21.739 0.753 1.00 0.00 A H
598
+ ATOM 595 N GLU A 164 39.312 -23.847 -1.816 1.00 0.00 A N
599
+ ATOM 596 CA GLU A 164 39.563 -25.296 -1.630 1.00 0.00 A C
600
+ ATOM 597 C GLU A 164 40.185 -25.475 -0.306 1.00 0.00 A C
601
+ ATOM 598 O GLU A 164 41.023 -24.721 0.174 1.00 0.00 A O
602
+ ATOM 599 CB GLU A 164 40.455 -25.714 -2.766 1.00 0.00 A C
603
+ ATOM 600 CG GLU A 164 40.929 -27.166 -2.834 1.00 0.00 A C
604
+ ATOM 601 CD GLU A 164 41.492 -27.553 -4.165 1.00 0.00 A C
605
+ ATOM 602 OE1 GLU A 164 40.925 -28.488 -4.804 1.00 0.00 A O
606
+ ATOM 603 OE2 GLU A 164 42.436 -26.890 -4.549 1.00 0.00 A O
607
+ ATOM 604 H GLU A 164 40.129 -23.275 -1.813 1.00 0.00 A H
608
+ ATOM 605 HA GLU A 164 38.646 -25.860 -1.718 1.00 0.00 A H
609
+ ATOM 606 HB2 GLU A 164 39.878 -25.381 -3.655 1.00 0.00 A H
610
+ ATOM 607 HB3 GLU A 164 41.319 -25.019 -2.700 1.00 0.00 A H
611
+ ATOM 608 HG2 GLU A 164 41.644 -27.243 -1.988 1.00 0.00 A H
612
+ ATOM 609 HG3 GLU A 164 40.025 -27.803 -2.728 1.00 0.00 A H
613
+ ATOM 610 N LYS A 165 39.818 -26.591 0.329 1.00 0.00 A N
614
+ ATOM 611 CA LYS A 165 40.227 -27.195 1.541 1.00 0.00 A C
615
+ ATOM 612 C LYS A 165 41.507 -28.047 1.318 1.00 0.00 A C
616
+ ATOM 613 O LYS A 165 41.554 -28.760 0.325 1.00 0.00 A O
617
+ ATOM 614 CB LYS A 165 39.052 -27.981 2.209 1.00 0.00 A C
618
+ ATOM 615 CG LYS A 165 39.197 -28.116 3.761 1.00 0.00 A C
619
+ ATOM 616 CD LYS A 165 38.115 -28.943 4.435 1.00 0.00 A C
620
+ ATOM 617 CE LYS A 165 36.736 -28.410 4.133 1.00 0.00 A C
621
+ ATOM 618 NZ LYS A 165 35.709 -29.143 4.962 1.00 0.00 A N
622
+ ATOM 619 H LYS A 165 39.204 -27.185 -0.186 1.00 0.00 A H
623
+ ATOM 620 HA LYS A 165 40.533 -26.407 2.213 1.00 0.00 A H
624
+ ATOM 621 HB2 LYS A 165 38.242 -27.227 2.111 1.00 0.00 A H
625
+ ATOM 622 HB3 LYS A 165 38.836 -28.955 1.718 1.00 0.00 A H
626
+ ATOM 623 HG2 LYS A 165 40.149 -28.661 3.942 1.00 0.00 A H
627
+ ATOM 624 HG3 LYS A 165 39.294 -27.083 4.158 1.00 0.00 A H
628
+ ATOM 625 HD2 LYS A 165 38.170 -29.991 4.071 1.00 0.00 A H
629
+ ATOM 626 HD3 LYS A 165 38.295 -29.094 5.521 1.00 0.00 A H
630
+ ATOM 627 HE2 LYS A 165 36.784 -27.381 4.549 1.00 0.00 A H
631
+ ATOM 628 HE3 LYS A 165 36.505 -28.473 3.048 1.00 0.00 A H
632
+ ATOM 629 HZ1 LYS A 165 35.589 -30.144 4.708 1.00 0.00 A H
633
+ ATOM 630 HZ2 LYS A 165 35.833 -29.145 5.995 1.00 0.00 A H
634
+ ATOM 631 HZ3 LYS A 165 34.815 -28.612 4.946 1.00 0.00 A H
635
+ ATOM 632 N HIS A 166 42.582 -27.949 2.164 1.00 0.00 A N
636
+ ATOM 633 CA HIS A 166 43.794 -28.673 2.005 1.00 0.00 A C
637
+ ATOM 634 C HIS A 166 43.699 -30.190 1.885 1.00 0.00 A C
638
+ ATOM 635 O HIS A 166 42.790 -30.774 2.456 1.00 0.00 A O
639
+ ATOM 636 CB HIS A 166 42.574 -27.400 2.997 1.00 0.00 A C
640
+ ATOM 637 CG HIS A 166 44.268 -28.349 1.090 1.00 0.00 A C
641
+ ATOM 638 ND1 HIS A 166 44.595 -30.884 1.103 1.00 0.00 A N
642
+ ATOM 639 CD2 HIS A 166 44.445 -32.344 0.881 1.00 0.00 A C
643
+ ATOM 640 CE1 HIS A 166 44.968 -33.236 2.052 1.00 0.00 A C
644
+ ATOM 641 NE2 HIS A 166 44.919 -34.436 2.052 1.00 0.00 A N
645
+ ATOM 642 H HIS A 166 45.251 -32.777 -0.401 1.00 0.00 A H
646
+ ATOM 643 HA HIS A 166 46.703 -32.461 -0.321 1.00 0.00 A H
647
+ ATOM 644 HB2 HIS A 166 47.648 -33.506 -0.943 1.00 0.00 A H
648
+ ATOM 645 HB3 HIS A 166 46.965 -31.179 -1.157 1.00 0.00 A H
649
+ ATOM 646 HD1 HIS A 166 45.290 -30.378 0.598 1.00 0.00 A H
650
+ ATOM 647 HD2 HIS A 166 43.436 -32.663 0.666 1.00 0.00 A H
651
+ ATOM 648 HE1 HIS A 166 45.238 -33.880 -0.538 1.00 0.00 A H
652
+ ATOM 649 HE2 HIS A 166 44.788 -32.269 -1.273 1.00 0.00 A H
653
+ ATOM 650 N LEU A 167 46.963 -32.119 0.703 1.00 0.00 A N
654
+ ATOM 651 CA LEU A 167 48.673 -33.079 -0.907 1.00 0.00 A C
655
+ ATOM 652 C LEU A 167 47.710 -34.439 -0.343 1.00 0.00 A C
656
+ ATOM 653 O LEU A 167 47.311 -33.662 -1.990 1.00 0.00 A O
657
+ ATOM 654 CB LEU A 167 47.992 -30.766 -1.056 1.00 0.00 A C
658
+ ATOM 655 CG LEU A 167 46.756 -31.434 -2.218 1.00 0.00 A C
659
+ ATOM 656 CD1 LEU A 167 46.250 -30.384 -0.855 1.00 0.00 A C
660
+ ATOM 657 CD2 LEU A 167 45.405 -32.605 3.125 1.00 0.00 A C
661
+ ATOM 658 H LEU A 167 46.104 -33.169 4.219 1.00 0.00 A H
662
+ ATOM 659 HA LEU A 167 45.705 -32.478 5.476 1.00 0.00 A H
663
+ ATOM 660 HB2 LEU A 167 45.585 -31.247 5.639 1.00 0.00 A H
664
+ ATOM 661 HB3 LEU A 167 47.647 -33.170 3.940 1.00 0.00 A H
665
+ ATOM 662 HG LEU A 167 45.169 -31.643 3.244 1.00 0.00 A H
666
+ ATOM 663 HD11 LEU A 167 45.819 -34.184 4.458 1.00 0.00 A H
667
+ ATOM 664 HD12 LEU A 167 48.104 -32.163 3.832 1.00 0.00 A H
668
+ ATOM 665 HD13 LEU A 167 47.782 -33.966 3.176 1.00 0.00 A H
669
+ ATOM 666 HD21 LEU A 167 48.113 -33.641 4.831 1.00 0.00 A H
670
+ ATOM 667 HD22 LEU A 167 45.490 -33.311 6.543 1.00 0.00 A H
671
+ ATOM 668 HD23 LEU A 167 45.195 -32.925 7.855 1.00 0.00 A H
672
+ ATOM 669 N ALA A 168 43.939 -32.192 8.221 1.00 0.00 A N
673
+ ATOM 670 CA ALA A 168 43.863 -31.474 9.199 1.00 0.00 A C
674
+ ATOM 671 C ALA A 168 46.451 -32.367 8.557 1.00 0.00 A C
675
+ ATOM 672 O ALA A 168 47.665 -33.314 8.652 1.00 0.00 A O
676
+ ATOM 673 CB ALA A 168 48.902 -32.764 9.306 1.00 0.00 A C
677
+ ATOM 674 H ALA A 168 50.227 -33.217 8.851 1.00 0.00 A H
678
+ ATOM 675 HA ALA A 168 50.547 -34.551 9.456 1.00 0.00 A H
679
+ ATOM 676 HB1 ALA A 168 45.462 -34.305 6.464 1.00 0.00 A H
680
+ ATOM 677 HB2 ALA A 168 44.953 -33.866 8.327 1.00 0.00 A H
681
+ ATOM 678 HB3 ALA A 168 46.839 -31.465 8.037 1.00 0.00 A H
682
+ ATOM 679 N LYS A 169 46.225 -32.006 9.583 1.00 0.00 A N
683
+ ATOM 680 CA LYS A 169 47.407 -34.288 9.121 1.00 0.00 A C
684
+ ATOM 681 C LYS A 169 47.952 -33.609 7.621 1.00 0.00 A C
685
+ ATOM 682 O LYS A 169 48.912 -31.693 9.011 1.00 0.00 A O
686
+ ATOM 683 CB LYS A 169 48.811 -32.747 10.413 1.00 0.00 A C
687
+ ATOM 684 CG LYS A 169 50.181 -33.422 7.760 1.00 0.00 A C
688
+ ATOM 685 CD LYS A 169 50.977 -32.483 9.216 1.00 0.00 A C
689
+ ATOM 686 CE LYS A 169 50.008 -35.352 9.069 1.00 0.00 A C
690
+ ATOM 687 NZ LYS A 169 51.550 -34.795 9.582 1.00 0.00 A N
691
+ ATOM 688 H LYS A 169 50.213 -34.374 10.424 1.00 0.00 A H
692
+ ATOM 689 HA LYS A 169 42.902 -32.282 7.413 1.00 0.00 A H
693
+ ATOM 690 HB2 LYS A 169 41.617 -31.640 7.644 1.00 0.00 A H
694
+ ATOM 691 HB3 LYS A 169 40.535 -32.686 7.777 1.00 0.00 A H
695
+ ATOM 692 HG2 LYS A 169 40.592 -33.712 7.092 1.00 0.00 A H
696
+ ATOM 693 HG3 LYS A 169 41.149 -30.748 6.485 1.00 0.00 A H
697
+ ATOM 694 HD2 LYS A 169 39.479 -32.423 8.408 1.00 0.00 A H
698
+ ATOM 695 HD3 LYS A 169 42.878 -32.764 6.541 1.00 0.00 A H
699
+ ATOM 696 HE2 LYS A 169 41.644 -31.027 8.533 1.00 0.00 A H
700
+ ATOM 697 HE3 LYS A 169 40.160 -30.282 6.686 1.00 0.00 A H
701
+ ATOM 698 HZ1 LYS A 169 40.969 -31.238 5.504 1.00 0.00 A H
702
+ ATOM 699 HZ2 LYS A 169 41.931 -29.988 6.270 1.00 0.00 A H
703
+ ATOM 700 HZ3 LYS A 169 44.885 -28.326 3.002 1.00 0.00 A H
704
+ ATOM 701 N ALA A 170 46.334 -28.790 2.681 1.00 0.00 A N
705
+ ATOM 702 CA ALA A 170 46.879 -28.412 1.451 1.00 0.00 A C
706
+ ATOM 703 C ALA A 170 47.274 -29.487 3.401 1.00 0.00 A C
707
+ ATOM 704 O ALA A 170 48.099 -29.008 1.405 1.00 0.00 A O
708
+ ATOM 705 CB ALA A 170 48.414 -29.555 2.605 1.00 0.00 A C
709
+ ATOM 706 OXT ALA A 170 44.962 -27.218 2.975 1.00 0.00 A O
710
+ ATOM 707 H ALA A 170 44.538 -28.658 4.004 1.00 0.00 A H
711
+ ATOM 708 HA ALA A 170 47.368 -29.678 4.463 1.00 0.00 A H
712
+ ATOM 709 HB1 ALA A 170 48.911 -28.743 0.728 1.00 0.00 A H
713
+ ATOM 710 HB2 ALA A 170 49.336 -29.822 2.884 1.00 0.00 A H
714
+ ATOM 711 HB3 ALA A 170 47.800 -30.200 2.700 1.00 0.00 A H
715
+ ENDMDL
716
+ END
entangled-tps/data/chignolin/folded.pdb ADDED
@@ -0,0 +1,280 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ COMPND chignolin_folded.pdb
2
+ AUTHOR GENERATED BY OPEN BABEL 3.1.1
3
+ ATOM 1 N GLY A 1 -6.986 1.003 3.359 1.00 0.00 N
4
+ ATOM 2 CA GLY A 1 -6.740 -0.436 3.053 1.00 0.00 C
5
+ ATOM 3 C GLY A 1 -5.453 -0.575 2.240 1.00 0.00 C
6
+ ATOM 4 O GLY A 1 -4.472 -1.123 2.702 1.00 0.00 O
7
+ ATOM 5 H1 GLY A 1 -6.931 1.558 2.483 1.00 0.00 H
8
+ ATOM 6 H2 GLY A 1 -6.265 1.342 4.030 1.00 0.00 H
9
+ ATOM 7 H3 GLY A 1 -7.930 1.112 3.779 1.00 0.00 H
10
+ ATOM 8 HA2 GLY A 1 -6.645 -0.987 3.978 1.00 0.00 H
11
+ ATOM 9 HA3 GLY A 1 -7.567 -0.829 2.482 1.00 0.00 H
12
+ ATOM 10 N TYR A 2 -5.446 -0.085 1.032 1.00 0.00 N
13
+ ATOM 11 CA TYR A 2 -4.221 -0.193 0.191 1.00 0.00 C
14
+ ATOM 12 C TYR A 2 -3.136 0.733 0.742 1.00 0.00 C
15
+ ATOM 13 O TYR A 2 -3.289 1.939 0.768 1.00 0.00 O
16
+ ATOM 14 CB TYR A 2 -4.547 0.213 -1.247 1.00 0.00 C
17
+ ATOM 15 CG TYR A 2 -3.286 0.169 -2.076 1.00 0.00 C
18
+ ATOM 16 CD1 TYR A 2 -2.899 -1.024 -2.700 1.00 0.00 C
19
+ ATOM 17 CD2 TYR A 2 -2.501 1.320 -2.221 1.00 0.00 C
20
+ ATOM 18 CE1 TYR A 2 -1.728 -1.066 -3.466 1.00 0.00 C
21
+ ATOM 19 CE2 TYR A 2 -1.331 1.277 -2.987 1.00 0.00 C
22
+ ATOM 20 CZ TYR A 2 -0.944 0.085 -3.609 1.00 0.00 C
23
+ ATOM 21 OH TYR A 2 0.210 0.044 -4.364 1.00 0.00 O
24
+ ATOM 22 H TYR A 2 -6.249 0.353 0.675 1.00 0.00 H
25
+ ATOM 23 HA TYR A 2 -3.865 -1.213 0.204 1.00 0.00 H
26
+ ATOM 24 HB2 TYR A 2 -5.275 -0.471 -1.658 1.00 0.00 H
27
+ ATOM 25 HB3 TYR A 2 -4.948 1.216 -1.255 1.00 0.00 H
28
+ ATOM 26 HD1 TYR A 2 -3.504 -1.913 -2.589 1.00 0.00 H
29
+ ATOM 27 HD2 TYR A 2 -2.799 2.240 -1.740 1.00 0.00 H
30
+ ATOM 28 HE1 TYR A 2 -1.429 -1.985 -3.945 1.00 0.00 H
31
+ ATOM 29 HE2 TYR A 2 -0.726 2.166 -3.098 1.00 0.00 H
32
+ ATOM 30 HH TYR A 2 0.080 -0.594 -5.069 1.00 0.00 H
33
+ ATOM 31 N ASP A 3 -2.037 0.182 1.177 1.00 0.00 N
34
+ ATOM 32 CA ASP A 3 -0.940 1.032 1.718 1.00 0.00 C
35
+ ATOM 33 C ASP A 3 -0.123 1.602 0.550 1.00 0.00 C
36
+ ATOM 34 O ASP A 3 0.515 0.860 -0.169 1.00 0.00 O
37
+ ATOM 35 CB ASP A 3 -0.030 0.183 2.608 1.00 0.00 C
38
+ ATOM 36 CG ASP A 3 0.783 1.097 3.527 1.00 0.00 C
39
+ ATOM 37 OD1 ASP A 3 1.270 2.106 3.046 1.00 0.00 O
40
+ ATOM 38 OD2 ASP A 3 0.904 0.771 4.696 1.00 0.00 O
41
+ ATOM 39 H ASP A 3 -1.929 -0.792 1.143 1.00 0.00 H
42
+ ATOM 40 HA ASP A 3 -1.364 1.834 2.301 1.00 0.00 H
43
+ ATOM 41 HB2 ASP A 3 -0.633 -0.486 3.205 1.00 0.00 H
44
+ ATOM 42 HB3 ASP A 3 0.643 -0.392 1.990 1.00 0.00 H
45
+ ATOM 43 N PRO A 4 -0.167 2.902 0.390 1.00 0.00 N
46
+ ATOM 44 CA PRO A 4 0.563 3.590 -0.689 1.00 0.00 C
47
+ ATOM 45 C PRO A 4 2.049 3.716 -0.336 1.00 0.00 C
48
+ ATOM 46 O PRO A 4 2.907 3.662 -1.194 1.00 0.00 O
49
+ ATOM 47 CB PRO A 4 -0.102 4.968 -0.753 1.00 0.00 C
50
+ ATOM 48 CG PRO A 4 -0.765 5.195 0.626 1.00 0.00 C
51
+ ATOM 49 CD PRO A 4 -0.947 3.805 1.262 1.00 0.00 C
52
+ ATOM 50 HA PRO A 4 0.436 3.074 -1.627 1.00 0.00 H
53
+ ATOM 51 HB2 PRO A 4 0.642 5.729 -0.942 1.00 0.00 H
54
+ ATOM 52 HB3 PRO A 4 -0.856 4.981 -1.525 1.00 0.00 H
55
+ ATOM 53 HG2 PRO A 4 -0.125 5.809 1.246 1.00 0.00 H
56
+ ATOM 54 HG3 PRO A 4 -1.726 5.668 0.503 1.00 0.00 H
57
+ ATOM 55 HD2 PRO A 4 -0.551 3.796 2.269 1.00 0.00 H
58
+ ATOM 56 HD3 PRO A 4 -1.987 3.519 1.258 1.00 0.00 H
59
+ ATOM 57 N GLU A 5 2.359 3.886 0.920 1.00 0.00 N
60
+ ATOM 58 CA GLU A 5 3.789 4.014 1.322 1.00 0.00 C
61
+ ATOM 59 C GLU A 5 4.498 2.675 1.111 1.00 0.00 C
62
+ ATOM 60 O GLU A 5 5.499 2.593 0.427 1.00 0.00 O
63
+ ATOM 61 CB GLU A 5 3.870 4.411 2.797 1.00 0.00 C
64
+ ATOM 62 CG GLU A 5 3.427 5.866 2.958 1.00 0.00 C
65
+ ATOM 63 CD GLU A 5 4.308 6.557 4.001 1.00 0.00 C
66
+ ATOM 64 OE1 GLU A 5 4.729 5.887 4.930 1.00 0.00 O
67
+ ATOM 65 OE2 GLU A 5 4.547 7.745 3.853 1.00 0.00 O
68
+ ATOM 66 H GLU A 5 1.655 3.927 1.599 1.00 0.00 H
69
+ ATOM 67 HA GLU A 5 4.265 4.773 0.718 1.00 0.00 H
70
+ ATOM 68 HB2 GLU A 5 3.224 3.770 3.379 1.00 0.00 H
71
+ ATOM 69 HB3 GLU A 5 4.888 4.307 3.143 1.00 0.00 H
72
+ ATOM 70 HG2 GLU A 5 3.519 6.378 2.012 1.00 0.00 H
73
+ ATOM 71 HG3 GLU A 5 2.397 5.895 3.284 1.00 0.00 H
74
+ ATOM 72 N THR A 6 3.985 1.625 1.691 1.00 0.00 N
75
+ ATOM 73 CA THR A 6 4.627 0.292 1.519 1.00 0.00 C
76
+ ATOM 74 C THR A 6 4.208 -0.297 0.171 1.00 0.00 C
77
+ ATOM 75 O THR A 6 4.872 -1.155 -0.378 1.00 0.00 O
78
+ ATOM 76 CB THR A 6 4.180 -0.641 2.646 1.00 0.00 C
79
+ ATOM 77 OG1 THR A 6 4.472 -0.040 3.899 1.00 0.00 O
80
+ ATOM 78 CG2 THR A 6 4.921 -1.973 2.530 1.00 0.00 C
81
+ ATOM 79 H THR A 6 3.174 1.712 2.236 1.00 0.00 H
82
+ ATOM 80 HA THR A 6 5.701 0.402 1.546 1.00 0.00 H
83
+ ATOM 81 HB THR A 6 3.118 -0.817 2.568 1.00 0.00 H
84
+ ATOM 82 HG1 THR A 6 4.471 -0.730 4.567 1.00 0.00 H
85
+ ATOM 83 HG21 THR A 6 4.207 -2.784 2.533 1.00 0.00 H
86
+ ATOM 84 HG22 THR A 6 5.594 -2.084 3.369 1.00 0.00 H
87
+ ATOM 85 HG23 THR A 6 5.485 -1.992 1.610 1.00 0.00 H
88
+ ATOM 86 N GLY A 7 3.112 0.161 -0.368 1.00 0.00 N
89
+ ATOM 87 CA GLY A 7 2.646 -0.365 -1.681 1.00 0.00 C
90
+ ATOM 88 C GLY A 7 2.326 -1.855 -1.558 1.00 0.00 C
91
+ ATOM 89 O GLY A 7 2.897 -2.681 -2.244 1.00 0.00 O
92
+ ATOM 90 H GLY A 7 2.595 0.855 0.092 1.00 0.00 H
93
+ ATOM 91 HA2 GLY A 7 1.758 0.171 -1.988 1.00 0.00 H
94
+ ATOM 92 HA3 GLY A 7 3.421 -0.228 -2.419 1.00 0.00 H
95
+ ATOM 93 N THR A 8 1.415 -2.209 -0.692 1.00 0.00 N
96
+ ATOM 94 CA THR A 8 1.063 -3.648 -0.534 1.00 0.00 C
97
+ ATOM 95 C THR A 8 -0.420 -3.781 -0.220 1.00 0.00 C
98
+ ATOM 96 O THR A 8 -1.024 -2.913 0.377 1.00 0.00 O
99
+ ATOM 97 CB THR A 8 1.884 -4.260 0.602 1.00 0.00 C
100
+ ATOM 98 OG1 THR A 8 3.116 -3.560 0.725 1.00 0.00 O
101
+ ATOM 99 CG2 THR A 8 2.158 -5.733 0.294 1.00 0.00 C
102
+ ATOM 100 H THR A 8 0.964 -1.530 -0.150 1.00 0.00 H
103
+ ATOM 101 HA THR A 8 1.269 -4.173 -1.451 1.00 0.00 H
104
+ ATOM 102 HB THR A 8 1.334 -4.187 1.527 1.00 0.00 H
105
+ ATOM 103 HG1 THR A 8 3.759 -3.990 0.158 1.00 0.00 H
106
+ ATOM 104 HG21 THR A 8 1.575 -6.036 -0.564 1.00 0.00 H
107
+ ATOM 105 HG22 THR A 8 1.884 -6.336 1.147 1.00 0.00 H
108
+ ATOM 106 HG23 THR A 8 3.208 -5.868 0.081 1.00 0.00 H
109
+ ATOM 107 N TRP A 9 -1.014 -4.864 -0.632 1.00 0.00 N
110
+ ATOM 108 CA TRP A 9 -2.453 -5.058 -0.377 1.00 0.00 C
111
+ ATOM 109 C TRP A 9 -2.656 -5.717 0.990 1.00 0.00 C
112
+ ATOM 110 O TRP A 9 -3.517 -6.556 1.162 1.00 0.00 O
113
+ ATOM 111 CB TRP A 9 -3.043 -5.945 -1.472 1.00 0.00 C
114
+ ATOM 112 CG TRP A 9 -4.054 -5.163 -2.241 1.00 0.00 C
115
+ ATOM 113 CD1 TRP A 9 -4.281 -5.276 -3.568 1.00 0.00 C
116
+ ATOM 114 CD2 TRP A 9 -4.970 -4.148 -1.750 1.00 0.00 C
117
+ ATOM 115 NE1 TRP A 9 -5.292 -4.396 -3.922 1.00 0.00 N
118
+ ATOM 116 CE2 TRP A 9 -5.747 -3.679 -2.833 1.00 0.00 C
119
+ ATOM 117 CE3 TRP A 9 -5.200 -3.599 -0.479 1.00 0.00 C
120
+ ATOM 118 CZ2 TRP A 9 -6.723 -2.696 -2.660 1.00 0.00 C
121
+ ATOM 119 CZ3 TRP A 9 -6.179 -2.609 -0.299 1.00 0.00 C
122
+ ATOM 120 CH2 TRP A 9 -6.940 -2.158 -1.388 1.00 0.00 C
123
+ ATOM 121 H TRP A 9 -0.514 -5.543 -1.118 1.00 0.00 H
124
+ ATOM 122 HA TRP A 9 -2.936 -4.098 -0.395 1.00 0.00 H
125
+ ATOM 123 HB2 TRP A 9 -2.255 -6.270 -2.137 1.00 0.00 H
126
+ ATOM 124 HB3 TRP A 9 -3.516 -6.806 -1.023 1.00 0.00 H
127
+ ATOM 125 HD1 TRP A 9 -3.762 -5.943 -4.239 1.00 0.00 H
128
+ ATOM 126 HE1 TRP A 9 -5.652 -4.282 -4.827 1.00 0.00 H
129
+ ATOM 127 HE3 TRP A 9 -4.611 -3.941 0.364 1.00 0.00 H
130
+ ATOM 128 HZ2 TRP A 9 -7.306 -2.353 -3.502 1.00 0.00 H
131
+ ATOM 129 HZ3 TRP A 9 -6.349 -2.193 0.683 1.00 0.00 H
132
+ ATOM 130 HH2 TRP A 9 -7.692 -1.397 -1.244 1.00 0.00 H
133
+ ATOM 131 N GLY A 10 -1.870 -5.345 1.962 1.00 0.00 N
134
+ ATOM 132 CA GLY A 10 -2.020 -5.954 3.315 1.00 0.00 C
135
+ ATOM 133 C GLY A 10 -1.022 -7.102 3.475 1.00 0.00 C
136
+ ATOM 134 O GLY A 10 -0.340 -7.406 2.510 1.00 0.00 O
137
+ ATOM 135 OXT GLY A 10 -0.958 -7.658 4.558 1.00 0.00 O
138
+ ATOM 136 H GLY A 10 -1.180 -4.668 1.804 1.00 0.00 H
139
+ ATOM 137 HA2 GLY A 10 -1.831 -5.203 4.069 1.00 0.00 H
140
+ ATOM 138 HA3 GLY A 10 -3.023 -6.335 3.429 1.00 0.00 H
141
+ CONECT 1 5 2 7 6
142
+ CONECT 2 3 9 1 8
143
+ CONECT 3 10 4 4 2
144
+ CONECT 4 3 3
145
+ CONECT 5 1
146
+ CONECT 6 1
147
+ CONECT 7 1
148
+ CONECT 8 2
149
+ CONECT 9 2
150
+ CONECT 10 11 22 3
151
+ CONECT 11 14 23 12 10
152
+ CONECT 12 11 13 13 31
153
+ CONECT 13 12 12
154
+ CONECT 14 15 24 25 11
155
+ CONECT 15 16 16 17 14
156
+ CONECT 16 18 26 15 15
157
+ CONECT 17 19 19 15 27
158
+ CONECT 18 28 20 20 16
159
+ CONECT 19 20 29 17 17
160
+ CONECT 20 21 18 18 19
161
+ CONECT 21 30 20
162
+ CONECT 22 10
163
+ CONECT 23 11
164
+ CONECT 24 14
165
+ CONECT 25 14
166
+ CONECT 26 16
167
+ CONECT 27 17
168
+ CONECT 28 18
169
+ CONECT 29 19
170
+ CONECT 30 21
171
+ CONECT 31 12 39 32
172
+ CONECT 32 33 31 40 35
173
+ CONECT 33 34 34 43 32
174
+ CONECT 34 33 33
175
+ CONECT 35 32 42 41 36
176
+ CONECT 36 35 37 37 38
177
+ CONECT 37 36 36
178
+ CONECT 38 36
179
+ CONECT 39 31
180
+ CONECT 40 32
181
+ CONECT 41 35
182
+ CONECT 42 35
183
+ CONECT 43 44 33 49
184
+ CONECT 44 50 47 45 43
185
+ CONECT 45 46 46 44 57
186
+ CONECT 46 45 45
187
+ CONECT 47 52 51 44 48
188
+ CONECT 48 47 54 53 49
189
+ CONECT 49 43 48 56 55
190
+ CONECT 50 44
191
+ CONECT 51 47
192
+ CONECT 52 47
193
+ CONECT 53 48
194
+ CONECT 54 48
195
+ CONECT 55 49
196
+ CONECT 56 49
197
+ CONECT 57 45 58 66
198
+ CONECT 58 67 57 59 61
199
+ CONECT 59 60 60 58 72
200
+ CONECT 60 59 59
201
+ CONECT 61 58 62 69 68
202
+ CONECT 62 70 61 71 63
203
+ CONECT 63 62 65 65 64
204
+ CONECT 64 63
205
+ CONECT 65 63 63
206
+ CONECT 66 57
207
+ CONECT 67 58
208
+ CONECT 68 61
209
+ CONECT 69 61
210
+ CONECT 70 62
211
+ CONECT 71 62
212
+ CONECT 72 59 73 79
213
+ CONECT 73 74 80 72 76
214
+ CONECT 74 75 75 86 73
215
+ CONECT 75 74 74
216
+ CONECT 76 73 78 81 77
217
+ CONECT 77 76 82
218
+ CONECT 78 85 83 76 84
219
+ CONECT 79 72
220
+ CONECT 80 73
221
+ CONECT 81 76
222
+ CONECT 82 77
223
+ CONECT 83 78
224
+ CONECT 84 78
225
+ CONECT 85 78
226
+ CONECT 86 87 90 74
227
+ CONECT 87 92 91 88 86
228
+ CONECT 88 89 89 87 93
229
+ CONECT 89 88 88
230
+ CONECT 90 86
231
+ CONECT 91 87
232
+ CONECT 92 87
233
+ CONECT 93 88 94 100
234
+ CONECT 94 101 93 95 97
235
+ CONECT 95 107 94 96 96
236
+ CONECT 96 95 95
237
+ CONECT 97 94 99 98 102
238
+ CONECT 98 103 97
239
+ CONECT 99 104 106 97 105
240
+ CONECT 100 93
241
+ CONECT 101 94
242
+ CONECT 102 97
243
+ CONECT 103 98
244
+ CONECT 104 99
245
+ CONECT 105 99
246
+ CONECT 106 99
247
+ CONECT 107 121 108 95
248
+ CONECT 108 111 107 122 109
249
+ CONECT 109 108 110 110 131
250
+ CONECT 110 109 109
251
+ CONECT 111 112 123 124 108
252
+ CONECT 112 113 113 114 111
253
+ CONECT 113 125 115 112 112
254
+ CONECT 114 116 116 112 117
255
+ CONECT 115 126 113 116
256
+ CONECT 116 115 118 114 114
257
+ CONECT 117 114 119 119 127
258
+ CONECT 118 128 116 120 120
259
+ CONECT 119 120 117 117 129
260
+ CONECT 120 118 118 130 119
261
+ CONECT 121 107
262
+ CONECT 122 108
263
+ CONECT 123 111
264
+ CONECT 124 111
265
+ CONECT 125 113
266
+ CONECT 126 115
267
+ CONECT 127 117
268
+ CONECT 128 118
269
+ CONECT 129 119
270
+ CONECT 130 120
271
+ CONECT 131 109 136 132
272
+ CONECT 132 131 138 133 137
273
+ CONECT 133 134 134 132 135
274
+ CONECT 134 133 133
275
+ CONECT 135 133
276
+ CONECT 136 131
277
+ CONECT 137 132
278
+ CONECT 138 132
279
+ MASTER 0 0 0 0 0 0 0 0 138 0 138 0
280
+ END
entangled-tps/data/chignolin/path.gro ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e1b886d2e29e11d4ac2080ca6cfb49deb4df2af352c9a94364a5c9b612b74a2c
3
+ size 31686336
entangled-tps/data/chignolin/tica_model.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c96f96cc1a47e14babc588e432997b0d4877fa9980cc5f45a7c7788e49e1e38e
3
+ size 86291
entangled-tps/data/chignolin/unfolded.pdb ADDED
@@ -0,0 +1,277 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ATOM 1 N GLY A 1 2.442 9.156 -5.701 1.00 0.00 N
2
+ ATOM 2 CA GLY A 1 3.003 9.402 -4.424 1.00 0.00 C
3
+ ATOM 3 C GLY A 1 4.122 8.405 -4.140 1.00 0.00 C
4
+ ATOM 4 O GLY A 1 4.722 7.912 -5.026 1.00 0.00 O
5
+ ATOM 5 H GLY A 1 2.094 10.047 -6.024 1.00 0.00 H
6
+ ATOM 6 H2 GLY A 1 1.624 8.604 -5.484 1.00 0.00 H
7
+ ATOM 7 H3 GLY A 1 3.106 8.676 -6.291 1.00 0.00 H
8
+ ATOM 8 HA2 GLY A 1 3.561 10.337 -4.480 1.00 0.00 H
9
+ ATOM 9 HA3 GLY A 1 2.216 9.620 -3.703 1.00 0.00 H
10
+ ATOM 10 N TYR A 2 4.448 8.113 -2.898 1.00 0.00 N
11
+ ATOM 11 CA TYR A 2 5.632 7.139 -2.581 1.00 0.00 C
12
+ ATOM 12 C TYR A 2 5.028 5.676 -2.559 1.00 0.00 C
13
+ ATOM 13 O TYR A 2 3.855 5.487 -2.235 1.00 0.00 O
14
+ ATOM 14 CB TYR A 2 6.143 7.396 -1.275 1.00 0.00 C
15
+ ATOM 15 CG TYR A 2 6.931 8.808 -1.152 1.00 0.00 C
16
+ ATOM 16 CD1 TYR A 2 6.390 9.758 -0.314 1.00 0.00 C
17
+ ATOM 17 CD2 TYR A 2 7.970 9.138 -2.016 1.00 0.00 C
18
+ ATOM 18 CE1 TYR A 2 6.699 11.125 -0.591 1.00 0.00 C
19
+ ATOM 19 CE2 TYR A 2 8.436 10.440 -2.164 1.00 0.00 C
20
+ ATOM 20 CZ TYR A 2 7.892 11.516 -1.319 1.00 0.00 C
21
+ ATOM 21 OH TYR A 2 8.569 12.633 -1.630 1.00 0.00 O
22
+ ATOM 22 H TYR A 2 3.893 8.462 -2.130 1.00 0.00 H
23
+ ATOM 23 HA TYR A 2 6.303 7.114 -3.439 1.00 0.00 H
24
+ ATOM 24 HB2 TYR A 2 5.286 7.527 -0.615 1.00 0.00 H
25
+ ATOM 25 HB3 TYR A 2 6.997 6.737 -1.118 1.00 0.00 H
26
+ ATOM 26 HD1 TYR A 2 5.501 9.434 0.206 1.00 0.00 H
27
+ ATOM 27 HD2 TYR A 2 8.186 8.304 -2.667 1.00 0.00 H
28
+ ATOM 28 HE1 TYR A 2 6.364 11.941 0.032 1.00 0.00 H
29
+ ATOM 29 HE2 TYR A 2 9.234 10.639 -2.864 1.00 0.00 H
30
+ ATOM 30 HH TYR A 2 8.061 13.381 -1.308 1.00 0.00 H
31
+ ATOM 31 N ASP A 3 5.913 4.639 -2.484 1.00 0.00 N
32
+ ATOM 32 CA ASP A 3 5.804 3.172 -2.156 1.00 0.00 C
33
+ ATOM 33 C ASP A 3 4.669 2.942 -1.007 1.00 0.00 C
34
+ ATOM 34 O ASP A 3 4.934 3.483 0.092 1.00 0.00 O
35
+ ATOM 35 CB ASP A 3 7.205 2.595 -1.827 1.00 0.00 C
36
+ ATOM 36 CG ASP A 3 7.311 1.068 -1.550 1.00 0.00 C
37
+ ATOM 37 OD1 ASP A 3 6.499 0.321 -2.183 1.00 0.00 O
38
+ ATOM 38 OD2 ASP A 3 8.002 0.635 -0.623 1.00 0.00 O
39
+ ATOM 39 H ASP A 3 6.853 5.005 -2.542 1.00 0.00 H
40
+ ATOM 40 HA ASP A 3 5.434 2.742 -3.087 1.00 0.00 H
41
+ ATOM 41 HB2 ASP A 3 8.047 2.941 -2.427 1.00 0.00 H
42
+ ATOM 42 HB3 ASP A 3 7.467 2.782 -0.786 1.00 0.00 H
43
+ ATOM 43 N PRO A 4 3.580 2.175 -1.326 1.00 0.00 N
44
+ ATOM 44 CA PRO A 4 2.414 1.706 -0.531 1.00 0.00 C
45
+ ATOM 45 C PRO A 4 2.852 0.500 0.294 1.00 0.00 C
46
+ ATOM 46 O PRO A 4 3.647 -0.381 -0.181 1.00 0.00 O
47
+ ATOM 47 CB PRO A 4 1.364 1.207 -1.442 1.00 0.00 C
48
+ ATOM 48 CG PRO A 4 1.546 2.002 -2.725 1.00 0.00 C
49
+ ATOM 49 CD PRO A 4 3.074 2.070 -2.671 1.00 0.00 C
50
+ ATOM 50 HA PRO A 4 2.103 2.610 -0.007 1.00 0.00 H
51
+ ATOM 51 HB2 PRO A 4 1.480 0.158 -1.714 1.00 0.00 H
52
+ ATOM 52 HB3 PRO A 4 0.320 1.258 -1.132 1.00 0.00 H
53
+ ATOM 53 HG2 PRO A 4 1.220 1.520 -3.646 1.00 0.00 H
54
+ ATOM 54 HG3 PRO A 4 1.216 3.039 -2.668 1.00 0.00 H
55
+ ATOM 55 HD2 PRO A 4 3.372 1.126 -3.127 1.00 0.00 H
56
+ ATOM 56 HD3 PRO A 4 3.536 2.825 -3.307 1.00 0.00 H
57
+ ATOM 57 N GLU A 5 2.373 0.465 1.518 1.00 0.00 N
58
+ ATOM 58 CA GLU A 5 2.721 -0.619 2.358 1.00 0.00 C
59
+ ATOM 59 C GLU A 5 1.492 -1.211 2.928 1.00 0.00 C
60
+ ATOM 60 O GLU A 5 0.595 -0.511 3.350 1.00 0.00 O
61
+ ATOM 61 CB GLU A 5 3.650 -0.105 3.468 1.00 0.00 C
62
+ ATOM 62 CG GLU A 5 4.893 0.774 3.091 1.00 0.00 C
63
+ ATOM 63 CD GLU A 5 5.354 1.571 4.471 1.00 0.00 C
64
+ ATOM 64 OE1 GLU A 5 5.240 0.949 5.551 1.00 0.00 O
65
+ ATOM 65 OE2 GLU A 5 5.911 2.733 4.424 1.00 0.00 O
66
+ ATOM 66 H GLU A 5 1.514 0.994 1.562 1.00 0.00 H
67
+ ATOM 67 HA GLU A 5 3.341 -1.273 1.744 1.00 0.00 H
68
+ ATOM 68 HB2 GLU A 5 3.023 0.458 4.160 1.00 0.00 H
69
+ ATOM 69 HB3 GLU A 5 3.839 -1.014 4.039 1.00 0.00 H
70
+ ATOM 70 HG2 GLU A 5 5.786 0.311 2.669 1.00 0.00 H
71
+ ATOM 71 HG3 GLU A 5 4.495 1.578 2.471 1.00 0.00 H
72
+ ATOM 72 N THR A 6 1.246 -2.477 2.792 1.00 0.00 N
73
+ ATOM 73 CA THR A 6 -0.108 -3.080 2.811 1.00 0.00 C
74
+ ATOM 74 C THR A 6 -1.347 -2.253 2.502 1.00 0.00 C
75
+ ATOM 75 O THR A 6 -2.124 -1.847 3.315 1.00 0.00 O
76
+ ATOM 76 CB THR A 6 -0.461 -3.643 4.177 1.00 0.00 C
77
+ ATOM 77 OG1 THR A 6 0.846 -4.169 4.744 1.00 0.00 O
78
+ ATOM 78 CG2 THR A 6 -1.433 -4.884 4.198 1.00 0.00 C
79
+ ATOM 79 H THR A 6 1.955 -2.902 2.212 1.00 0.00 H
80
+ ATOM 80 HA THR A 6 -0.164 -3.849 2.040 1.00 0.00 H
81
+ ATOM 81 HB THR A 6 -0.787 -2.796 4.782 1.00 0.00 H
82
+ ATOM 82 HG1 THR A 6 1.512 -3.526 4.490 1.00 0.00 H
83
+ ATOM 83 HG21 THR A 6 -1.698 -5.093 3.162 1.00 0.00 H
84
+ ATOM 84 HG22 THR A 6 -2.395 -4.519 4.558 1.00 0.00 H
85
+ ATOM 85 HG23 THR A 6 -0.936 -5.678 4.754 1.00 0.00 H
86
+ ATOM 86 N GLY A 7 -1.601 -2.024 1.238 1.00 0.00 N
87
+ ATOM 87 CA GLY A 7 -2.792 -1.493 0.548 1.00 0.00 C
88
+ ATOM 88 C GLY A 7 -3.911 -2.501 0.091 1.00 0.00 C
89
+ ATOM 89 O GLY A 7 -4.433 -2.291 -0.978 1.00 0.00 O
90
+ ATOM 90 H GLY A 7 -0.824 -2.331 0.670 1.00 0.00 H
91
+ ATOM 91 HA2 GLY A 7 -3.303 -0.868 1.280 1.00 0.00 H
92
+ ATOM 92 HA3 GLY A 7 -2.504 -0.902 -0.321 1.00 0.00 H
93
+ ATOM 93 N THR A 8 -4.046 -3.643 0.769 1.00 0.00 N
94
+ ATOM 94 CA THR A 8 -4.908 -4.678 0.348 1.00 0.00 C
95
+ ATOM 95 C THR A 8 -5.821 -5.309 1.496 1.00 0.00 C
96
+ ATOM 96 O THR A 8 -5.236 -6.022 2.379 1.00 0.00 O
97
+ ATOM 97 CB THR A 8 -4.418 -5.877 -0.652 1.00 0.00 C
98
+ ATOM 98 OG1 THR A 8 -3.720 -5.332 -1.784 1.00 0.00 O
99
+ ATOM 99 CG2 THR A 8 -5.612 -6.624 -1.264 1.00 0.00 C
100
+ ATOM 100 H THR A 8 -3.292 -3.834 1.414 1.00 0.00 H
101
+ ATOM 101 HA THR A 8 -5.725 -4.105 -0.090 1.00 0.00 H
102
+ ATOM 102 HB THR A 8 -3.633 -6.476 -0.190 1.00 0.00 H
103
+ ATOM 103 HG1 THR A 8 -4.217 -4.512 -1.746 1.00 0.00 H
104
+ ATOM 104 HG21 THR A 8 -6.346 -6.979 -0.540 1.00 0.00 H
105
+ ATOM 105 HG22 THR A 8 -5.163 -7.511 -1.710 1.00 0.00 H
106
+ ATOM 106 HG23 THR A 8 -6.432 -6.015 -1.644 1.00 0.00 H
107
+ ATOM 107 N TRP A 9 -7.189 -5.332 1.418 1.00 0.00 N
108
+ ATOM 108 CA TRP A 9 -8.243 -6.319 1.819 1.00 0.00 C
109
+ ATOM 109 C TRP A 9 -9.168 -6.736 0.607 1.00 0.00 C
110
+ ATOM 110 O TRP A 9 -9.248 -6.174 -0.549 1.00 0.00 O
111
+ ATOM 111 CB TRP A 9 -8.800 -5.866 3.214 1.00 0.00 C
112
+ ATOM 112 CG TRP A 9 -9.614 -6.753 4.010 1.00 0.00 C
113
+ ATOM 113 CD1 TRP A 9 -10.894 -6.733 4.104 1.00 0.00 C
114
+ ATOM 114 CD2 TRP A 9 -9.137 -7.780 4.952 1.00 0.00 C
115
+ ATOM 115 NE1 TRP A 9 -11.363 -7.476 5.149 1.00 0.00 N
116
+ ATOM 116 CE2 TRP A 9 -10.269 -8.144 5.743 1.00 0.00 C
117
+ ATOM 117 CE3 TRP A 9 -7.868 -8.369 5.264 1.00 0.00 C
118
+ ATOM 118 CZ2 TRP A 9 -10.191 -8.963 6.750 1.00 0.00 C
119
+ ATOM 119 CZ3 TRP A 9 -7.818 -8.924 6.540 1.00 0.00 C
120
+ ATOM 120 CH2 TRP A 9 -8.921 -9.323 7.252 1.00 0.00 C
121
+ ATOM 121 H TRP A 9 -7.746 -4.623 0.964 1.00 0.00 H
122
+ ATOM 122 HA TRP A 9 -7.757 -7.233 2.159 1.00 0.00 H
123
+ ATOM 123 HB2 TRP A 9 -8.098 -5.440 3.931 1.00 0.00 H
124
+ ATOM 124 HB3 TRP A 9 -9.466 -5.023 3.031 1.00 0.00 H
125
+ ATOM 125 HD1 TRP A 9 -11.430 -6.001 3.517 1.00 0.00 H
126
+ ATOM 126 HE1 TRP A 9 -12.339 -7.480 5.408 1.00 0.00 H
127
+ ATOM 127 HE3 TRP A 9 -6.940 -8.301 4.716 1.00 0.00 H
128
+ ATOM 128 HZ2 TRP A 9 -11.127 -9.178 7.243 1.00 0.00 H
129
+ ATOM 129 HZ3 TRP A 9 -6.824 -9.260 6.797 1.00 0.00 H
130
+ ATOM 130 HH2 TRP A 9 -8.986 -9.733 8.249 1.00 0.00 H
131
+ ATOM 131 N GLY A 10 -9.841 -7.874 0.709 1.00 0.00 N
132
+ ATOM 132 CA GLY A 10 -10.490 -8.642 -0.346 1.00 0.00 C
133
+ ATOM 133 C GLY A 10 -9.646 -9.737 -0.865 1.00 0.00 C
134
+ ATOM 134 O GLY A 10 -8.824 -9.742 -1.894 1.00 0.00 O
135
+ ATOM 135 OXT GLY A 10 -9.783 -10.762 -0.231 1.00 0.00 O
136
+ ATOM 136 H GLY A 10 -9.683 -8.434 1.535 1.00 0.00 H
137
+ ATOM 137 HA2 GLY A 10 -11.470 -9.051 -0.099 1.00 0.00 H
138
+ ATOM 138 HA3 GLY A 10 -10.788 -7.967 -1.149 1.00 0.00 H
139
+ CONECT 1 5 2 7 6
140
+ CONECT 2 3 9 1 8
141
+ CONECT 3 10 4 4 2
142
+ CONECT 4 3 3
143
+ CONECT 5 1
144
+ CONECT 6 1
145
+ CONECT 7 1
146
+ CONECT 8 2
147
+ CONECT 9 2
148
+ CONECT 10 11 22 3
149
+ CONECT 11 14 23 12 10
150
+ CONECT 12 11 13 13 31
151
+ CONECT 13 12 12
152
+ CONECT 14 15 24 25 11
153
+ CONECT 15 16 16 17 14
154
+ CONECT 16 18 26 15 15
155
+ CONECT 17 19 19 15 27
156
+ CONECT 18 28 20 20 16
157
+ CONECT 19 20 29 17 17
158
+ CONECT 20 21 18 18 19
159
+ CONECT 21 30 20
160
+ CONECT 22 10
161
+ CONECT 23 11
162
+ CONECT 24 14
163
+ CONECT 25 14
164
+ CONECT 26 16
165
+ CONECT 27 17
166
+ CONECT 28 18
167
+ CONECT 29 19
168
+ CONECT 30 21
169
+ CONECT 31 12 39 32
170
+ CONECT 32 33 31 40 35
171
+ CONECT 33 34 34 43 32
172
+ CONECT 34 33 33
173
+ CONECT 35 32 42 41 36
174
+ CONECT 36 35 37 37 38
175
+ CONECT 37 36 36
176
+ CONECT 38 36
177
+ CONECT 39 31
178
+ CONECT 40 32
179
+ CONECT 41 35
180
+ CONECT 42 35
181
+ CONECT 43 44 33 49
182
+ CONECT 44 50 47 45 43
183
+ CONECT 45 46 46 44 57
184
+ CONECT 46 45 45
185
+ CONECT 47 52 51 44 48
186
+ CONECT 48 47 54 53 49
187
+ CONECT 49 43 48 56 55
188
+ CONECT 50 44
189
+ CONECT 51 47
190
+ CONECT 52 47
191
+ CONECT 53 48
192
+ CONECT 54 48
193
+ CONECT 55 49
194
+ CONECT 56 49
195
+ CONECT 57 45 58 66
196
+ CONECT 58 67 57 59 61
197
+ CONECT 59 60 60 58 72
198
+ CONECT 60 59 59
199
+ CONECT 61 58 62 69 68
200
+ CONECT 62 70 61 71 63
201
+ CONECT 63 62 65 65 64
202
+ CONECT 64 63
203
+ CONECT 65 63 63
204
+ CONECT 66 57
205
+ CONECT 67 58
206
+ CONECT 68 61
207
+ CONECT 69 61
208
+ CONECT 70 62
209
+ CONECT 71 62
210
+ CONECT 72 59 73 79
211
+ CONECT 73 74 80 72 76
212
+ CONECT 74 75 75 86 73
213
+ CONECT 75 74 74
214
+ CONECT 76 73 78 81 77
215
+ CONECT 77 76 82
216
+ CONECT 78 85 83 76 84
217
+ CONECT 79 72
218
+ CONECT 80 73
219
+ CONECT 81 76
220
+ CONECT 82 77
221
+ CONECT 83 78
222
+ CONECT 84 78
223
+ CONECT 85 78
224
+ CONECT 86 87 90 74
225
+ CONECT 87 92 91 88 86
226
+ CONECT 88 89 89 87 93
227
+ CONECT 89 88 88
228
+ CONECT 90 86
229
+ CONECT 91 87
230
+ CONECT 92 87
231
+ CONECT 93 88 94 100
232
+ CONECT 94 101 93 95 97
233
+ CONECT 95 107 94 96 96
234
+ CONECT 96 95 95
235
+ CONECT 97 94 99 98 102
236
+ CONECT 98 103 97
237
+ CONECT 99 104 106 97 105
238
+ CONECT 100 93
239
+ CONECT 101 94
240
+ CONECT 102 97
241
+ CONECT 103 98
242
+ CONECT 104 99
243
+ CONECT 105 99
244
+ CONECT 106 99
245
+ CONECT 107 121 108 95
246
+ CONECT 108 111 107 122 109
247
+ CONECT 109 108 110 110 131
248
+ CONECT 110 109 109
249
+ CONECT 111 112 123 124 108
250
+ CONECT 112 113 113 114 111
251
+ CONECT 113 125 115 112 112
252
+ CONECT 114 116 116 112 117
253
+ CONECT 115 126 113 116
254
+ CONECT 116 115 118 114 114
255
+ CONECT 117 114 119 119 127
256
+ CONECT 118 128 116 120 120
257
+ CONECT 119 120 117 117 129
258
+ CONECT 120 118 118 130 119
259
+ CONECT 121 107
260
+ CONECT 122 108
261
+ CONECT 123 111
262
+ CONECT 124 111
263
+ CONECT 125 113
264
+ CONECT 126 115
265
+ CONECT 127 117
266
+ CONECT 128 118
267
+ CONECT 129 119
268
+ CONECT 130 120
269
+ CONECT 131 109 136 132
270
+ CONECT 132 131 138 133 137
271
+ CONECT 133 134 134 132 135
272
+ CONECT 134 133 133
273
+ CONECT 135 133
274
+ CONECT 136 131
275
+ CONECT 137 132
276
+ CONECT 138 132
277
+ END