Sophia Tang
commited on
Commit
·
7efee70
1
Parent(s):
4ce08b6
Initial commit with LFS
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- .gitignore +17 -0
- LICENSE +21 -0
- README.md +51 -0
- assets/entangled.gif +3 -0
- assets/fig-clonidine.png +3 -0
- assets/fig-trametinib.png +3 -0
- assets/tps-full.png +3 -0
- entangled-cell/README.md +89 -0
- entangled-cell/bias.py +187 -0
- entangled-cell/configs/clonidine_100D.yaml +11 -0
- entangled-cell/configs/clonidine_150D.yaml +11 -0
- entangled-cell/configs/clonidine_50D.yaml +11 -0
- entangled-cell/configs/trametinib_50D.yaml +11 -0
- entangled-cell/data/Trametinib_5.0uM_pca_and_leidenumap_labels.csv +3 -0
- entangled-cell/data/pca_and_leiden_labels.csv +3 -0
- entangled-cell/data/rainier2-thin.las +3 -0
- entangled-cell/dataloaders/clonidine_v2_data.py +316 -0
- entangled-cell/dataloaders/three_branch_data.py +313 -0
- entangled-cell/entangledcell_module_three.py +871 -0
- entangled-cell/entangledcell_module_unseen.py +817 -0
- entangled-cell/environment.yml +36 -0
- entangled-cell/eval.py +276 -0
- entangled-cell/geo_metrics/land.py +28 -0
- entangled-cell/geo_metrics/metric_factory.py +162 -0
- entangled-cell/geo_metrics/rbf_unseen.py +154 -0
- entangled-cell/parser.py +156 -0
- entangled-cell/scripts/clonidine100.sh +37 -0
- entangled-cell/scripts/clonidine150.sh +37 -0
- entangled-cell/scripts/clonidine50.sh +37 -0
- entangled-cell/scripts/trametinib.sh +37 -0
- entangled-cell/train_cell.py +104 -0
- entangled-cell/train_utils.py +115 -0
- entangled-tps/README.md +69 -0
- entangled-tps/data/aldp/c5.pdb +41 -0
- entangled-tps/data/aldp/c7ax.pdb +46 -0
- entangled-tps/data/aldp/landscape.dat +0 -0
- entangled-tps/data/aldp/path.gro +3 -0
- entangled-tps/data/bba/folded.pdb +515 -0
- entangled-tps/data/bba/path.gro +3 -0
- entangled-tps/data/bba/tica_model.pkl +3 -0
- entangled-tps/data/bba/unfolded.pdb +515 -0
- entangled-tps/data/bbl/bbl.h5 +3 -0
- entangled-tps/data/bbl/folded.pdb +917 -0
- entangled-tps/data/bbl/path.gro +3 -0
- entangled-tps/data/bbl/tica_model.pkl +3 -0
- entangled-tps/data/bbl/unfolded.pdb +716 -0
- entangled-tps/data/chignolin/folded.pdb +280 -0
- entangled-tps/data/chignolin/path.gro +3 -0
- entangled-tps/data/chignolin/tica_model.pkl +3 -0
- 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 |
+

|
| 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 |
+

|
| 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 |
+

|
| 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
|
assets/fig-clonidine.png
ADDED
|
Git LFS Details
|
assets/fig-trametinib.png
ADDED
|
Git LFS Details
|
assets/tps-full.png
ADDED
|
Git LFS Details
|
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
|