Showing preview only (1,409K chars total). Download the full file or copy to clipboard to get everything.
Repository: Zuricho/ParallelFold
Branch: main
Commit: b1cefc00331c
Files: 108
Total size: 1.3 MB
Directory structure:
gitextract_x11711o3/
├── .gitignore
├── README.md
├── alphafold/
│ ├── __init__.py
│ ├── common/
│ │ ├── __init__.py
│ │ ├── confidence.py
│ │ ├── protein.py
│ │ ├── protein_test.py
│ │ ├── residue_constants.py
│ │ ├── residue_constants_test.py
│ │ ├── stereo_chemical_props.txt
│ │ └── testdata/
│ │ └── 2rbg.pdb
│ ├── data/
│ │ ├── __init__.py
│ │ ├── feature_processing.py
│ │ ├── mmcif_parsing.py
│ │ ├── msa_identifiers.py
│ │ ├── msa_pairing.py
│ │ ├── parsers.py
│ │ ├── pipeline.py
│ │ ├── pipeline_multimer.py
│ │ ├── templates.py
│ │ └── tools/
│ │ ├── __init__.py
│ │ ├── hhblits.py
│ │ ├── hhsearch.py
│ │ ├── hmmbuild.py
│ │ ├── hmmsearch.py
│ │ ├── jackhmmer.py
│ │ ├── kalign.py
│ │ └── utils.py
│ ├── model/
│ │ ├── __init__.py
│ │ ├── all_atom.py
│ │ ├── all_atom_multimer.py
│ │ ├── all_atom_test.py
│ │ ├── common_modules.py
│ │ ├── config.py
│ │ ├── data.py
│ │ ├── features.py
│ │ ├── folding.py
│ │ ├── folding_multimer.py
│ │ ├── geometry/
│ │ │ ├── __init__.py
│ │ │ ├── rigid_matrix_vector.py
│ │ │ ├── rotation_matrix.py
│ │ │ ├── struct_of_array.py
│ │ │ ├── test_utils.py
│ │ │ ├── utils.py
│ │ │ └── vector.py
│ │ ├── layer_stack.py
│ │ ├── layer_stack_test.py
│ │ ├── lddt.py
│ │ ├── lddt_test.py
│ │ ├── mapping.py
│ │ ├── model.py
│ │ ├── modules.py
│ │ ├── modules_multimer.py
│ │ ├── prng.py
│ │ ├── prng_test.py
│ │ ├── quat_affine.py
│ │ ├── quat_affine_test.py
│ │ ├── r3.py
│ │ ├── tf/
│ │ │ ├── __init__.py
│ │ │ ├── data_transforms.py
│ │ │ ├── input_pipeline.py
│ │ │ ├── protein_features.py
│ │ │ ├── protein_features_test.py
│ │ │ ├── proteins_dataset.py
│ │ │ ├── shape_helpers.py
│ │ │ ├── shape_helpers_test.py
│ │ │ ├── shape_placeholders.py
│ │ │ └── utils.py
│ │ └── utils.py
│ ├── notebooks/
│ │ ├── __init__.py
│ │ ├── notebook_utils.py
│ │ └── notebook_utils_test.py
│ └── relax/
│ ├── __init__.py
│ ├── amber_minimize.py
│ ├── amber_minimize_test.py
│ ├── cleanup.py
│ ├── cleanup_test.py
│ ├── relax.py
│ ├── relax_test.py
│ ├── testdata/
│ │ ├── model_output.pdb
│ │ ├── multiple_disulfides_target.pdb
│ │ ├── with_violations.pdb
│ │ └── with_violations_casp14.pdb
│ ├── utils.py
│ └── utils_test.py
├── docs/
│ ├── python_inputs.md
│ └── usage.md
├── environment/
│ └── environment_gpu.yml
├── input/
│ └── mono_set1/
│ ├── GA98.fasta
│ └── GB98.fasta
├── requirements.txt
├── run_alphafold.py
├── run_alphafold.sh
├── scripts/
│ ├── download_all_data.sh
│ ├── download_alphafold_params.sh
│ ├── download_bfd.sh
│ ├── download_mgnify.sh
│ ├── download_pdb70.sh
│ ├── download_pdb_mmcif.sh
│ ├── download_pdb_seqres.sh
│ ├── download_small_bfd.sh
│ ├── download_uniprot.sh
│ ├── download_uniref30.sh
│ └── download_uniref90.sh
└── tools/
├── batch_scripts/
│ ├── batch_alphafold.sh
│ ├── batch_feature.sh
│ └── move_batch.sh
└── plddt.py
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
*.slurm
================================================
FILE: README.md
================================================
<div align=center>
<img src="./docs/parafoldlogo.png" width="400" >
</div>
# ParaFold
Author: Bozitao Zhong - zbztzhz@gmail.com
:bookmark_tabs: Please cite our [paper](https://arxiv.org/abs/2111.06340) if you used ParaFold (ParallelFold) in you research.
## Overview
Recent change: **ParaFold now supports AlphaFold 2.3.1**
This project is a modified version of DeepMind's [AlphaFold2](https://github.com/deepmind/alphafold) to achieve high-throughput protein structure prediction.
We have these following modifications to the original AlphaFold pipeline:
- Divide **CPU part** (MSA and template searching) and **GPU part** (prediction model)
## How to install
We recommend to install AlphaFold locally, and not using **docker**.
```bash
# clone this repo
git clone https://github.com/Zuricho/ParallelFold.git
# Create a miniconda environment for ParaFold/AlphaFold
# Recommend you to use python 3.8, version < 3.7 have missing packages, python versions newer than 3.8 were not tested
conda create -n parafold python=3.8
pip install py3dmol
# openmm 7.7 is recommended (original alphafold using 7.5.1, but it is not supported now)
conda install -c conda-forge openmm=7.7 pdbfixer
# use pip3 to install most of packages
pip3 install -r requirements.txt
# install cuda and cudnn
# cudatoolkit 11.3.1 matches cudnn 8.2.1
conda install cudatoolkit=11.3 cudnn
# downgrade jaxlib to the correct version, matches with cuda and cudnn version
pip3 install --upgrade --no-cache-dir jax==0.3.25 jaxlib==0.3.25+cuda11.cudnn82 -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
# install packages for multiple sequence alignment
conda install -c bioconda hmmer=3.3.2 hhsuite=3.3.0 kalign2=2.04
chmod +x run_alphafold.sh
```
## Download the sequence database
You can use the [downloading script from AlphaFold repo](https://github.com/google-deepmind/alphafold/blob/main/scripts/download_all_data.sh).
The `data` directory should have the following directory structure. Some old versions of AlphaFold might have older database versions, you should update them (reference to AlphaFold repo)
```text
$DOWNLOAD_DIR/ # Total: ~ 2.62 TB (download: 556 GB)
bfd/ # ~ 1.8 TB (download: 271.6 GB)
# 6 files.
mgnify/ # ~ 120 GB (download: 67 GB)
mgy_clusters_2022_05.fa
params/ # ~ 5.3 GB (download: 5.3 GB)
# 5 CASP14 models,
# 5 pTM models,
# 5 AlphaFold-Multimer models,
# LICENSE,
# = 16 files.
pdb70/ # ~ 56 GB (download: 19.5 GB)
# 9 files.
pdb_mmcif/ # ~ 238 GB (download: 43 GB)
mmcif_files/
# About 199,000 .cif files.
obsolete.dat
pdb_seqres/ # ~ 0.2 GB (download: 0.2 GB)
pdb_seqres.txt
small_bfd/ # ~ 17 GB (download: 9.6 GB)
bfd-first_non_consensus_sequences.fasta
uniref30/ # ~ 206 GB (download: 52.5 GB)
# 7 files.
uniprot/ # ~ 105 GB (download: 53 GB)
uniprot.fasta
uniref90/ # ~ 67 GB (download: 34 GB)
uniref90.fasta
```
## Some detail information of modified files
- `run_alphafold.py`: modified version of original `run_alphafold.py`, it has multiple additional functions like skipping featuring steps when exists `feature.pkl` in output folder
- `run_alphafold.sh`: bash script to run `run_alphafold.py`
## How to run
### Run features
Run on CPUs to get features:
```bash
./run_alphafold.sh \
-d data \
-o output \
-p monomer_ptm \
-i input/GA98.fasta \
-t 1800-01-01 \
-m model_1 \
-f
```
`-f` means only run the featurization step, result in a `feature.pkl` file, and skip the following steps.
> 8 CPUs is enough, according to my test, more CPUs won't help with speed
Featuring step will output the `feature.pkl` and MSA folder in your output folder: `./output/[FASTA_NAME]/`
PS: Here we put input files in an `input` folder to organize files in a better way.
### Run monomer prediction
After the feature step, you can run `run_alphafold.sh` using GPU:
```bash
./run_alphafold.sh \
-d data \
-o output \
-m model_1,model_2,model_3,model_4,model_5 \
-p monomer_ptm \
-i input/GA98.fasta \
-t 1800-01-01
```
If you have successfully output `feature.pkl`, you can have a very fast featuring step
### Run multimer prediction
```bash
./run_alphafold.sh \
-d data \
-o output \
-m model_1_multimer,model_2_multimer,model_3_multimer,model_4_multimer,model_5_multimer \
-p multimer \
-i input/GA98.fasta \
-t 1800-01-01
```
## What is this for
ParallelFold can help you accelerate AlphaFold when you want to predict multiple sequences. After dividing the CPU part and GPU part, users can finish feature step by multiple processors. Using ParaFold, you can run AlphaFold 2~3 times faster than DeepMind's procedure.
**If you have any question, please raise issues**
================================================
FILE: alphafold/__init__.py
================================================
# Copyright 2021 DeepMind Technologies Limited
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""An implementation of the inference pipeline of AlphaFold v2.0."""
================================================
FILE: alphafold/common/__init__.py
================================================
# Copyright 2021 DeepMind Technologies Limited
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Common data types and constants used within Alphafold."""
================================================
FILE: alphafold/common/confidence.py
================================================
# Copyright 2021 DeepMind Technologies Limited
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Functions for processing confidence metrics."""
from typing import Dict, Optional, Tuple
import numpy as np
import scipy.special
def compute_plddt(logits: np.ndarray) -> np.ndarray:
"""Computes per-residue pLDDT from logits.
Args:
logits: [num_res, num_bins] output from the PredictedLDDTHead.
Returns:
plddt: [num_res] per-residue pLDDT.
"""
num_bins = logits.shape[-1]
bin_width = 1.0 / num_bins
bin_centers = np.arange(start=0.5 * bin_width, stop=1.0, step=bin_width)
probs = scipy.special.softmax(logits, axis=-1)
predicted_lddt_ca = np.sum(probs * bin_centers[None, :], axis=-1)
return predicted_lddt_ca * 100
def _calculate_bin_centers(breaks: np.ndarray):
"""Gets the bin centers from the bin edges.
Args:
breaks: [num_bins - 1] the error bin edges.
Returns:
bin_centers: [num_bins] the error bin centers.
"""
step = (breaks[1] - breaks[0])
# Add half-step to get the center
bin_centers = breaks + step / 2
# Add a catch-all bin at the end.
bin_centers = np.concatenate([bin_centers, [bin_centers[-1] + step]],
axis=0)
return bin_centers
def _calculate_expected_aligned_error(
alignment_confidence_breaks: np.ndarray,
aligned_distance_error_probs: np.ndarray) -> Tuple[np.ndarray, np.ndarray]:
"""Calculates expected aligned distance errors for every pair of residues.
Args:
alignment_confidence_breaks: [num_bins - 1] the error bin edges.
aligned_distance_error_probs: [num_res, num_res, num_bins] the predicted
probs for each error bin, for each pair of residues.
Returns:
predicted_aligned_error: [num_res, num_res] the expected aligned distance
error for each pair of residues.
max_predicted_aligned_error: The maximum predicted error possible.
"""
bin_centers = _calculate_bin_centers(alignment_confidence_breaks)
# Tuple of expected aligned distance error and max possible error.
return (np.sum(aligned_distance_error_probs * bin_centers, axis=-1),
np.asarray(bin_centers[-1]))
def compute_predicted_aligned_error(
logits: np.ndarray,
breaks: np.ndarray) -> Dict[str, np.ndarray]:
"""Computes aligned confidence metrics from logits.
Args:
logits: [num_res, num_res, num_bins] the logits output from
PredictedAlignedErrorHead.
breaks: [num_bins - 1] the error bin edges.
Returns:
aligned_confidence_probs: [num_res, num_res, num_bins] the predicted
aligned error probabilities over bins for each residue pair.
predicted_aligned_error: [num_res, num_res] the expected aligned distance
error for each pair of residues.
max_predicted_aligned_error: The maximum predicted error possible.
"""
aligned_confidence_probs = scipy.special.softmax(
logits,
axis=-1)
predicted_aligned_error, max_predicted_aligned_error = (
_calculate_expected_aligned_error(
alignment_confidence_breaks=breaks,
aligned_distance_error_probs=aligned_confidence_probs))
return {
'aligned_confidence_probs': aligned_confidence_probs,
'predicted_aligned_error': predicted_aligned_error,
'max_predicted_aligned_error': max_predicted_aligned_error,
}
def predicted_tm_score(
logits: np.ndarray,
breaks: np.ndarray,
residue_weights: Optional[np.ndarray] = None,
asym_id: Optional[np.ndarray] = None,
interface: bool = False) -> np.ndarray:
"""Computes predicted TM alignment or predicted interface TM alignment score.
Args:
logits: [num_res, num_res, num_bins] the logits output from
PredictedAlignedErrorHead.
breaks: [num_bins] the error bins.
residue_weights: [num_res] the per residue weights to use for the
expectation.
asym_id: [num_res] the asymmetric unit ID - the chain ID. Only needed for
ipTM calculation, i.e. when interface=True.
interface: If True, interface predicted TM score is computed.
Returns:
ptm_score: The predicted TM alignment or the predicted iTM score.
"""
# residue_weights has to be in [0, 1], but can be floating-point, i.e. the
# exp. resolved head's probability.
if residue_weights is None:
residue_weights = np.ones(logits.shape[0])
bin_centers = _calculate_bin_centers(breaks)
num_res = int(np.sum(residue_weights))
# Clip num_res to avoid negative/undefined d0.
clipped_num_res = max(num_res, 19)
# Compute d_0(num_res) as defined by TM-score, eqn. (5) in Yang & Skolnick
# "Scoring function for automated assessment of protein structure template
# quality", 2004: http://zhanglab.ccmb.med.umich.edu/papers/2004_3.pdf
d0 = 1.24 * (clipped_num_res - 15) ** (1./3) - 1.8
# Convert logits to probs.
probs = scipy.special.softmax(logits, axis=-1)
# TM-Score term for every bin.
tm_per_bin = 1. / (1 + np.square(bin_centers) / np.square(d0))
# E_distances tm(distance).
predicted_tm_term = np.sum(probs * tm_per_bin, axis=-1)
pair_mask = np.ones(shape=(num_res, num_res), dtype=bool)
if interface:
pair_mask *= asym_id[:, None] != asym_id[None, :]
predicted_tm_term *= pair_mask
pair_residue_weights = pair_mask * (
residue_weights[None, :] * residue_weights[:, None])
normed_residue_mask = pair_residue_weights / (1e-8 + np.sum(
pair_residue_weights, axis=-1, keepdims=True))
per_alignment = np.sum(predicted_tm_term * normed_residue_mask, axis=-1)
return np.asarray(per_alignment[(per_alignment * residue_weights).argmax()])
================================================
FILE: alphafold/common/protein.py
================================================
# Copyright 2021 DeepMind Technologies Limited
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Protein data type."""
import dataclasses
import io
from typing import Any, Mapping, Optional
from alphafold.common import residue_constants
from Bio.PDB import PDBParser
import numpy as np
FeatureDict = Mapping[str, np.ndarray]
ModelOutput = Mapping[str, Any] # Is a nested dict.
# Complete sequence of chain IDs supported by the PDB format.
PDB_CHAIN_IDS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
PDB_MAX_CHAINS = len(PDB_CHAIN_IDS) # := 62.
@dataclasses.dataclass(frozen=True)
class Protein:
"""Protein structure representation."""
# Cartesian coordinates of atoms in angstroms. The atom types correspond to
# residue_constants.atom_types, i.e. the first three are N, CA, CB.
atom_positions: np.ndarray # [num_res, num_atom_type, 3]
# Amino-acid type for each residue represented as an integer between 0 and
# 20, where 20 is 'X'.
aatype: np.ndarray # [num_res]
# Binary float mask to indicate presence of a particular atom. 1.0 if an atom
# is present and 0.0 if not. This should be used for loss masking.
atom_mask: np.ndarray # [num_res, num_atom_type]
# Residue index as used in PDB. It is not necessarily continuous or 0-indexed.
residue_index: np.ndarray # [num_res]
# 0-indexed number corresponding to the chain in the protein that this residue
# belongs to.
chain_index: np.ndarray # [num_res]
# B-factors, or temperature factors, of each residue (in sq. angstroms units),
# representing the displacement of the residue from its ground truth mean
# value.
b_factors: np.ndarray # [num_res, num_atom_type]
def __post_init__(self):
if len(np.unique(self.chain_index)) > PDB_MAX_CHAINS:
raise ValueError(
f'Cannot build an instance with more than {PDB_MAX_CHAINS} chains '
'because these cannot be written to PDB format.')
def from_pdb_string(pdb_str: str, chain_id: Optional[str] = None) -> Protein:
"""Takes a PDB string and constructs a Protein object.
WARNING: All non-standard residue types will be converted into UNK. All
non-standard atoms will be ignored.
Args:
pdb_str: The contents of the pdb file
chain_id: If chain_id is specified (e.g. A), then only that chain
is parsed. Otherwise all chains are parsed.
Returns:
A new `Protein` parsed from the pdb contents.
"""
pdb_fh = io.StringIO(pdb_str)
parser = PDBParser(QUIET=True)
structure = parser.get_structure('none', pdb_fh)
models = list(structure.get_models())
if len(models) != 1:
raise ValueError(
f'Only single model PDBs are supported. Found {len(models)} models.')
model = models[0]
atom_positions = []
aatype = []
atom_mask = []
residue_index = []
chain_ids = []
b_factors = []
for chain in model:
if chain_id is not None and chain.id != chain_id:
continue
for res in chain:
if res.id[2] != ' ':
raise ValueError(
f'PDB contains an insertion code at chain {chain.id} and residue '
f'index {res.id[1]}. These are not supported.')
res_shortname = residue_constants.restype_3to1.get(res.resname, 'X')
restype_idx = residue_constants.restype_order.get(
res_shortname, residue_constants.restype_num)
pos = np.zeros((residue_constants.atom_type_num, 3))
mask = np.zeros((residue_constants.atom_type_num,))
res_b_factors = np.zeros((residue_constants.atom_type_num,))
for atom in res:
if atom.name not in residue_constants.atom_types:
continue
pos[residue_constants.atom_order[atom.name]] = atom.coord
mask[residue_constants.atom_order[atom.name]] = 1.
res_b_factors[residue_constants.atom_order[atom.name]] = atom.bfactor
if np.sum(mask) < 0.5:
# If no known atom positions are reported for the residue then skip it.
continue
aatype.append(restype_idx)
atom_positions.append(pos)
atom_mask.append(mask)
residue_index.append(res.id[1])
chain_ids.append(chain.id)
b_factors.append(res_b_factors)
# Chain IDs are usually characters so map these to ints.
unique_chain_ids = np.unique(chain_ids)
chain_id_mapping = {cid: n for n, cid in enumerate(unique_chain_ids)}
chain_index = np.array([chain_id_mapping[cid] for cid in chain_ids])
return Protein(
atom_positions=np.array(atom_positions),
atom_mask=np.array(atom_mask),
aatype=np.array(aatype),
residue_index=np.array(residue_index),
chain_index=chain_index,
b_factors=np.array(b_factors))
def _chain_end(atom_index, end_resname, chain_name, residue_index) -> str:
chain_end = 'TER'
return (f'{chain_end:<6}{atom_index:>5} {end_resname:>3} '
f'{chain_name:>1}{residue_index:>4}')
def to_pdb(prot: Protein) -> str:
"""Converts a `Protein` instance to a PDB string.
Args:
prot: The protein to convert to PDB.
Returns:
PDB string.
"""
restypes = residue_constants.restypes + ['X']
res_1to3 = lambda r: residue_constants.restype_1to3.get(restypes[r], 'UNK')
atom_types = residue_constants.atom_types
pdb_lines = []
atom_mask = prot.atom_mask
aatype = prot.aatype
atom_positions = prot.atom_positions
residue_index = prot.residue_index.astype(np.int32)
chain_index = prot.chain_index.astype(np.int32)
b_factors = prot.b_factors
if np.any(aatype > residue_constants.restype_num):
raise ValueError('Invalid aatypes.')
# Construct a mapping from chain integer indices to chain ID strings.
chain_ids = {}
for i in np.unique(chain_index): # np.unique gives sorted output.
if i >= PDB_MAX_CHAINS:
raise ValueError(
f'The PDB format supports at most {PDB_MAX_CHAINS} chains.')
chain_ids[i] = PDB_CHAIN_IDS[i]
pdb_lines.append('MODEL 1')
atom_index = 1
last_chain_index = chain_index[0]
# Add all atom sites.
for i in range(aatype.shape[0]):
# Close the previous chain if in a multichain PDB.
if last_chain_index != chain_index[i]:
pdb_lines.append(_chain_end(
atom_index, res_1to3(aatype[i - 1]), chain_ids[chain_index[i - 1]],
residue_index[i - 1]))
last_chain_index = chain_index[i]
atom_index += 1 # Atom index increases at the TER symbol.
res_name_3 = res_1to3(aatype[i])
for atom_name, pos, mask, b_factor in zip(
atom_types, atom_positions[i], atom_mask[i], b_factors[i]):
if mask < 0.5:
continue
record_type = 'ATOM'
name = atom_name if len(atom_name) == 4 else f' {atom_name}'
alt_loc = ''
insertion_code = ''
occupancy = 1.00
element = atom_name[0] # Protein supports only C, N, O, S, this works.
charge = ''
# PDB is a columnar format, every space matters here!
atom_line = (f'{record_type:<6}{atom_index:>5} {name:<4}{alt_loc:>1}'
f'{res_name_3:>3} {chain_ids[chain_index[i]]:>1}'
f'{residue_index[i]:>4}{insertion_code:>1} '
f'{pos[0]:>8.3f}{pos[1]:>8.3f}{pos[2]:>8.3f}'
f'{occupancy:>6.2f}{b_factor:>6.2f} '
f'{element:>2}{charge:>2}')
pdb_lines.append(atom_line)
atom_index += 1
# Close the final chain.
pdb_lines.append(_chain_end(atom_index, res_1to3(aatype[-1]),
chain_ids[chain_index[-1]], residue_index[-1]))
pdb_lines.append('ENDMDL')
pdb_lines.append('END')
# Pad all lines to 80 characters.
pdb_lines = [line.ljust(80) for line in pdb_lines]
return '\n'.join(pdb_lines) + '\n' # Add terminating newline.
def ideal_atom_mask(prot: Protein) -> np.ndarray:
"""Computes an ideal atom mask.
`Protein.atom_mask` typically is defined according to the atoms that are
reported in the PDB. This function computes a mask according to heavy atoms
that should be present in the given sequence of amino acids.
Args:
prot: `Protein` whose fields are `numpy.ndarray` objects.
Returns:
An ideal atom mask.
"""
return residue_constants.STANDARD_ATOM_MASK[prot.aatype]
def from_prediction(
features: FeatureDict,
result: ModelOutput,
b_factors: Optional[np.ndarray] = None,
remove_leading_feature_dimension: bool = True) -> Protein:
"""Assembles a protein from a prediction.
Args:
features: Dictionary holding model inputs.
result: Dictionary holding model outputs.
b_factors: (Optional) B-factors to use for the protein.
remove_leading_feature_dimension: Whether to remove the leading dimension
of the `features` values.
Returns:
A protein instance.
"""
fold_output = result['structure_module']
def _maybe_remove_leading_dim(arr: np.ndarray) -> np.ndarray:
return arr[0] if remove_leading_feature_dimension else arr
if 'asym_id' in features:
chain_index = _maybe_remove_leading_dim(features['asym_id'])
else:
chain_index = np.zeros_like(_maybe_remove_leading_dim(features['aatype']))
if b_factors is None:
b_factors = np.zeros_like(fold_output['final_atom_mask'])
return Protein(
aatype=_maybe_remove_leading_dim(features['aatype']),
atom_positions=fold_output['final_atom_positions'],
atom_mask=fold_output['final_atom_mask'],
residue_index=_maybe_remove_leading_dim(features['residue_index']) + 1,
chain_index=chain_index,
b_factors=b_factors)
================================================
FILE: alphafold/common/protein_test.py
================================================
# Copyright 2021 DeepMind Technologies Limited
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Tests for protein."""
import os
from absl.testing import absltest
from absl.testing import parameterized
from alphafold.common import protein
from alphafold.common import residue_constants
import numpy as np
# Internal import (7716).
TEST_DATA_DIR = 'alphafold/common/testdata/'
class ProteinTest(parameterized.TestCase):
def _check_shapes(self, prot, num_res):
"""Check that the processed shapes are correct."""
num_atoms = residue_constants.atom_type_num
self.assertEqual((num_res, num_atoms, 3), prot.atom_positions.shape)
self.assertEqual((num_res,), prot.aatype.shape)
self.assertEqual((num_res, num_atoms), prot.atom_mask.shape)
self.assertEqual((num_res,), prot.residue_index.shape)
self.assertEqual((num_res,), prot.chain_index.shape)
self.assertEqual((num_res, num_atoms), prot.b_factors.shape)
@parameterized.named_parameters(
dict(testcase_name='chain_A',
pdb_file='2rbg.pdb', chain_id='A', num_res=282, num_chains=1),
dict(testcase_name='chain_B',
pdb_file='2rbg.pdb', chain_id='B', num_res=282, num_chains=1),
dict(testcase_name='multichain',
pdb_file='2rbg.pdb', chain_id=None, num_res=564, num_chains=2))
def test_from_pdb_str(self, pdb_file, chain_id, num_res, num_chains):
pdb_file = os.path.join(absltest.get_default_test_srcdir(), TEST_DATA_DIR,
pdb_file)
with open(pdb_file) as f:
pdb_string = f.read()
prot = protein.from_pdb_string(pdb_string, chain_id)
self._check_shapes(prot, num_res)
self.assertGreaterEqual(prot.aatype.min(), 0)
# Allow equal since unknown restypes have index equal to restype_num.
self.assertLessEqual(prot.aatype.max(), residue_constants.restype_num)
self.assertLen(np.unique(prot.chain_index), num_chains)
def test_to_pdb(self):
with open(
os.path.join(absltest.get_default_test_srcdir(), TEST_DATA_DIR,
'2rbg.pdb')) as f:
pdb_string = f.read()
prot = protein.from_pdb_string(pdb_string)
pdb_string_reconstr = protein.to_pdb(prot)
for line in pdb_string_reconstr.splitlines():
self.assertLen(line, 80)
prot_reconstr = protein.from_pdb_string(pdb_string_reconstr)
np.testing.assert_array_equal(prot_reconstr.aatype, prot.aatype)
np.testing.assert_array_almost_equal(
prot_reconstr.atom_positions, prot.atom_positions)
np.testing.assert_array_almost_equal(
prot_reconstr.atom_mask, prot.atom_mask)
np.testing.assert_array_equal(
prot_reconstr.residue_index, prot.residue_index)
np.testing.assert_array_equal(
prot_reconstr.chain_index, prot.chain_index)
np.testing.assert_array_almost_equal(
prot_reconstr.b_factors, prot.b_factors)
def test_ideal_atom_mask(self):
with open(
os.path.join(absltest.get_default_test_srcdir(), TEST_DATA_DIR,
'2rbg.pdb')) as f:
pdb_string = f.read()
prot = protein.from_pdb_string(pdb_string)
ideal_mask = protein.ideal_atom_mask(prot)
non_ideal_residues = set([102] + list(range(127, 286)))
for i, (res, atom_mask) in enumerate(
zip(prot.residue_index, prot.atom_mask)):
if res in non_ideal_residues:
self.assertFalse(np.all(atom_mask == ideal_mask[i]), msg=f'{res}')
else:
self.assertTrue(np.all(atom_mask == ideal_mask[i]), msg=f'{res}')
def test_too_many_chains(self):
num_res = protein.PDB_MAX_CHAINS + 1
num_atom_type = residue_constants.atom_type_num
with self.assertRaises(ValueError):
_ = protein.Protein(
atom_positions=np.random.random([num_res, num_atom_type, 3]),
aatype=np.random.randint(0, 21, [num_res]),
atom_mask=np.random.randint(0, 2, [num_res]).astype(np.float32),
residue_index=np.arange(1, num_res+1),
chain_index=np.arange(num_res),
b_factors=np.random.uniform(1, 100, [num_res]))
if __name__ == '__main__':
absltest.main()
================================================
FILE: alphafold/common/residue_constants.py
================================================
# Copyright 2021 DeepMind Technologies Limited
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Constants used in AlphaFold."""
import collections
import functools
import os
from typing import List, Mapping, Tuple
import numpy as np
import tree
# Internal import (35fd).
# Distance from one CA to next CA [trans configuration: omega = 180].
ca_ca = 3.80209737096
# Format: The list for each AA type contains chi1, chi2, chi3, chi4 in
# this order (or a relevant subset from chi1 onwards). ALA and GLY don't have
# chi angles so their chi angle lists are empty.
chi_angles_atoms = {
'ALA': [],
# Chi5 in arginine is always 0 +- 5 degrees, so ignore it.
'ARG': [['N', 'CA', 'CB', 'CG'], ['CA', 'CB', 'CG', 'CD'],
['CB', 'CG', 'CD', 'NE'], ['CG', 'CD', 'NE', 'CZ']],
'ASN': [['N', 'CA', 'CB', 'CG'], ['CA', 'CB', 'CG', 'OD1']],
'ASP': [['N', 'CA', 'CB', 'CG'], ['CA', 'CB', 'CG', 'OD1']],
'CYS': [['N', 'CA', 'CB', 'SG']],
'GLN': [['N', 'CA', 'CB', 'CG'], ['CA', 'CB', 'CG', 'CD'],
['CB', 'CG', 'CD', 'OE1']],
'GLU': [['N', 'CA', 'CB', 'CG'], ['CA', 'CB', 'CG', 'CD'],
['CB', 'CG', 'CD', 'OE1']],
'GLY': [],
'HIS': [['N', 'CA', 'CB', 'CG'], ['CA', 'CB', 'CG', 'ND1']],
'ILE': [['N', 'CA', 'CB', 'CG1'], ['CA', 'CB', 'CG1', 'CD1']],
'LEU': [['N', 'CA', 'CB', 'CG'], ['CA', 'CB', 'CG', 'CD1']],
'LYS': [['N', 'CA', 'CB', 'CG'], ['CA', 'CB', 'CG', 'CD'],
['CB', 'CG', 'CD', 'CE'], ['CG', 'CD', 'CE', 'NZ']],
'MET': [['N', 'CA', 'CB', 'CG'], ['CA', 'CB', 'CG', 'SD'],
['CB', 'CG', 'SD', 'CE']],
'PHE': [['N', 'CA', 'CB', 'CG'], ['CA', 'CB', 'CG', 'CD1']],
'PRO': [['N', 'CA', 'CB', 'CG'], ['CA', 'CB', 'CG', 'CD']],
'SER': [['N', 'CA', 'CB', 'OG']],
'THR': [['N', 'CA', 'CB', 'OG1']],
'TRP': [['N', 'CA', 'CB', 'CG'], ['CA', 'CB', 'CG', 'CD1']],
'TYR': [['N', 'CA', 'CB', 'CG'], ['CA', 'CB', 'CG', 'CD1']],
'VAL': [['N', 'CA', 'CB', 'CG1']],
}
# If chi angles given in fixed-length array, this matrix determines how to mask
# them for each AA type. The order is as per restype_order (see below).
chi_angles_mask = [
[0.0, 0.0, 0.0, 0.0], # ALA
[1.0, 1.0, 1.0, 1.0], # ARG
[1.0, 1.0, 0.0, 0.0], # ASN
[1.0, 1.0, 0.0, 0.0], # ASP
[1.0, 0.0, 0.0, 0.0], # CYS
[1.0, 1.0, 1.0, 0.0], # GLN
[1.0, 1.0, 1.0, 0.0], # GLU
[0.0, 0.0, 0.0, 0.0], # GLY
[1.0, 1.0, 0.0, 0.0], # HIS
[1.0, 1.0, 0.0, 0.0], # ILE
[1.0, 1.0, 0.0, 0.0], # LEU
[1.0, 1.0, 1.0, 1.0], # LYS
[1.0, 1.0, 1.0, 0.0], # MET
[1.0, 1.0, 0.0, 0.0], # PHE
[1.0, 1.0, 0.0, 0.0], # PRO
[1.0, 0.0, 0.0, 0.0], # SER
[1.0, 0.0, 0.0, 0.0], # THR
[1.0, 1.0, 0.0, 0.0], # TRP
[1.0, 1.0, 0.0, 0.0], # TYR
[1.0, 0.0, 0.0, 0.0], # VAL
]
# The following chi angles are pi periodic: they can be rotated by a multiple
# of pi without affecting the structure.
chi_pi_periodic = [
[0.0, 0.0, 0.0, 0.0], # ALA
[0.0, 0.0, 0.0, 0.0], # ARG
[0.0, 0.0, 0.0, 0.0], # ASN
[0.0, 1.0, 0.0, 0.0], # ASP
[0.0, 0.0, 0.0, 0.0], # CYS
[0.0, 0.0, 0.0, 0.0], # GLN
[0.0, 0.0, 1.0, 0.0], # GLU
[0.0, 0.0, 0.0, 0.0], # GLY
[0.0, 0.0, 0.0, 0.0], # HIS
[0.0, 0.0, 0.0, 0.0], # ILE
[0.0, 0.0, 0.0, 0.0], # LEU
[0.0, 0.0, 0.0, 0.0], # LYS
[0.0, 0.0, 0.0, 0.0], # MET
[0.0, 1.0, 0.0, 0.0], # PHE
[0.0, 0.0, 0.0, 0.0], # PRO
[0.0, 0.0, 0.0, 0.0], # SER
[0.0, 0.0, 0.0, 0.0], # THR
[0.0, 0.0, 0.0, 0.0], # TRP
[0.0, 1.0, 0.0, 0.0], # TYR
[0.0, 0.0, 0.0, 0.0], # VAL
[0.0, 0.0, 0.0, 0.0], # UNK
]
# Atoms positions relative to the 8 rigid groups, defined by the pre-omega, phi,
# psi and chi angles:
# 0: 'backbone group',
# 1: 'pre-omega-group', (empty)
# 2: 'phi-group', (currently empty, because it defines only hydrogens)
# 3: 'psi-group',
# 4,5,6,7: 'chi1,2,3,4-group'
# The atom positions are relative to the axis-end-atom of the corresponding
# rotation axis. The x-axis is in direction of the rotation axis, and the y-axis
# is defined such that the dihedral-angle-defining atom (the last entry in
# chi_angles_atoms above) is in the xy-plane (with a positive y-coordinate).
# format: [atomname, group_idx, rel_position]
rigid_group_atom_positions = {
'ALA': [
['N', 0, (-0.525, 1.363, 0.000)],
['CA', 0, (0.000, 0.000, 0.000)],
['C', 0, (1.526, -0.000, -0.000)],
['CB', 0, (-0.529, -0.774, -1.205)],
['O', 3, (0.627, 1.062, 0.000)],
],
'ARG': [
['N', 0, (-0.524, 1.362, -0.000)],
['CA', 0, (0.000, 0.000, 0.000)],
['C', 0, (1.525, -0.000, -0.000)],
['CB', 0, (-0.524, -0.778, -1.209)],
['O', 3, (0.626, 1.062, 0.000)],
['CG', 4, (0.616, 1.390, -0.000)],
['CD', 5, (0.564, 1.414, 0.000)],
['NE', 6, (0.539, 1.357, -0.000)],
['NH1', 7, (0.206, 2.301, 0.000)],
['NH2', 7, (2.078, 0.978, -0.000)],
['CZ', 7, (0.758, 1.093, -0.000)],
],
'ASN': [
['N', 0, (-0.536, 1.357, 0.000)],
['CA', 0, (0.000, 0.000, 0.000)],
['C', 0, (1.526, -0.000, -0.000)],
['CB', 0, (-0.531, -0.787, -1.200)],
['O', 3, (0.625, 1.062, 0.000)],
['CG', 4, (0.584, 1.399, 0.000)],
['ND2', 5, (0.593, -1.188, 0.001)],
['OD1', 5, (0.633, 1.059, 0.000)],
],
'ASP': [
['N', 0, (-0.525, 1.362, -0.000)],
['CA', 0, (0.000, 0.000, 0.000)],
['C', 0, (1.527, 0.000, -0.000)],
['CB', 0, (-0.526, -0.778, -1.208)],
['O', 3, (0.626, 1.062, -0.000)],
['CG', 4, (0.593, 1.398, -0.000)],
['OD1', 5, (0.610, 1.091, 0.000)],
['OD2', 5, (0.592, -1.101, -0.003)],
],
'CYS': [
['N', 0, (-0.522, 1.362, -0.000)],
['CA', 0, (0.000, 0.000, 0.000)],
['C', 0, (1.524, 0.000, 0.000)],
['CB', 0, (-0.519, -0.773, -1.212)],
['O', 3, (0.625, 1.062, -0.000)],
['SG', 4, (0.728, 1.653, 0.000)],
],
'GLN': [
['N', 0, (-0.526, 1.361, -0.000)],
['CA', 0, (0.000, 0.000, 0.000)],
['C', 0, (1.526, 0.000, 0.000)],
['CB', 0, (-0.525, -0.779, -1.207)],
['O', 3, (0.626, 1.062, -0.000)],
['CG', 4, (0.615, 1.393, 0.000)],
['CD', 5, (0.587, 1.399, -0.000)],
['NE2', 6, (0.593, -1.189, -0.001)],
['OE1', 6, (0.634, 1.060, 0.000)],
],
'GLU': [
['N', 0, (-0.528, 1.361, 0.000)],
['CA', 0, (0.000, 0.000, 0.000)],
['C', 0, (1.526, -0.000, -0.000)],
['CB', 0, (-0.526, -0.781, -1.207)],
['O', 3, (0.626, 1.062, 0.000)],
['CG', 4, (0.615, 1.392, 0.000)],
['CD', 5, (0.600, 1.397, 0.000)],
['OE1', 6, (0.607, 1.095, -0.000)],
['OE2', 6, (0.589, -1.104, -0.001)],
],
'GLY': [
['N', 0, (-0.572, 1.337, 0.000)],
['CA', 0, (0.000, 0.000, 0.000)],
['C', 0, (1.517, -0.000, -0.000)],
['O', 3, (0.626, 1.062, -0.000)],
],
'HIS': [
['N', 0, (-0.527, 1.360, 0.000)],
['CA', 0, (0.000, 0.000, 0.000)],
['C', 0, (1.525, 0.000, 0.000)],
['CB', 0, (-0.525, -0.778, -1.208)],
['O', 3, (0.625, 1.063, 0.000)],
['CG', 4, (0.600, 1.370, -0.000)],
['CD2', 5, (0.889, -1.021, 0.003)],
['ND1', 5, (0.744, 1.160, -0.000)],
['CE1', 5, (2.030, 0.851, 0.002)],
['NE2', 5, (2.145, -0.466, 0.004)],
],
'ILE': [
['N', 0, (-0.493, 1.373, -0.000)],
['CA', 0, (0.000, 0.000, 0.000)],
['C', 0, (1.527, -0.000, -0.000)],
['CB', 0, (-0.536, -0.793, -1.213)],
['O', 3, (0.627, 1.062, -0.000)],
['CG1', 4, (0.534, 1.437, -0.000)],
['CG2', 4, (0.540, -0.785, -1.199)],
['CD1', 5, (0.619, 1.391, 0.000)],
],
'LEU': [
['N', 0, (-0.520, 1.363, 0.000)],
['CA', 0, (0.000, 0.000, 0.000)],
['C', 0, (1.525, -0.000, -0.000)],
['CB', 0, (-0.522, -0.773, -1.214)],
['O', 3, (0.625, 1.063, -0.000)],
['CG', 4, (0.678, 1.371, 0.000)],
['CD1', 5, (0.530, 1.430, -0.000)],
['CD2', 5, (0.535, -0.774, 1.200)],
],
'LYS': [
['N', 0, (-0.526, 1.362, -0.000)],
['CA', 0, (0.000, 0.000, 0.000)],
['C', 0, (1.526, 0.000, 0.000)],
['CB', 0, (-0.524, -0.778, -1.208)],
['O', 3, (0.626, 1.062, -0.000)],
['CG', 4, (0.619, 1.390, 0.000)],
['CD', 5, (0.559, 1.417, 0.000)],
['CE', 6, (0.560, 1.416, 0.000)],
['NZ', 7, (0.554, 1.387, 0.000)],
],
'MET': [
['N', 0, (-0.521, 1.364, -0.000)],
['CA', 0, (0.000, 0.000, 0.000)],
['C', 0, (1.525, 0.000, 0.000)],
['CB', 0, (-0.523, -0.776, -1.210)],
['O', 3, (0.625, 1.062, -0.000)],
['CG', 4, (0.613, 1.391, -0.000)],
['SD', 5, (0.703, 1.695, 0.000)],
['CE', 6, (0.320, 1.786, -0.000)],
],
'PHE': [
['N', 0, (-0.518, 1.363, 0.000)],
['CA', 0, (0.000, 0.000, 0.000)],
['C', 0, (1.524, 0.000, -0.000)],
['CB', 0, (-0.525, -0.776, -1.212)],
['O', 3, (0.626, 1.062, -0.000)],
['CG', 4, (0.607, 1.377, 0.000)],
['CD1', 5, (0.709, 1.195, -0.000)],
['CD2', 5, (0.706, -1.196, 0.000)],
['CE1', 5, (2.102, 1.198, -0.000)],
['CE2', 5, (2.098, -1.201, -0.000)],
['CZ', 5, (2.794, -0.003, -0.001)],
],
'PRO': [
['N', 0, (-0.566, 1.351, -0.000)],
['CA', 0, (0.000, 0.000, 0.000)],
['C', 0, (1.527, -0.000, 0.000)],
['CB', 0, (-0.546, -0.611, -1.293)],
['O', 3, (0.621, 1.066, 0.000)],
['CG', 4, (0.382, 1.445, 0.0)],
# ['CD', 5, (0.427, 1.440, 0.0)],
['CD', 5, (0.477, 1.424, 0.0)], # manually made angle 2 degrees larger
],
'SER': [
['N', 0, (-0.529, 1.360, -0.000)],
['CA', 0, (0.000, 0.000, 0.000)],
['C', 0, (1.525, -0.000, -0.000)],
['CB', 0, (-0.518, -0.777, -1.211)],
['O', 3, (0.626, 1.062, -0.000)],
['OG', 4, (0.503, 1.325, 0.000)],
],
'THR': [
['N', 0, (-0.517, 1.364, 0.000)],
['CA', 0, (0.000, 0.000, 0.000)],
['C', 0, (1.526, 0.000, -0.000)],
['CB', 0, (-0.516, -0.793, -1.215)],
['O', 3, (0.626, 1.062, 0.000)],
['CG2', 4, (0.550, -0.718, -1.228)],
['OG1', 4, (0.472, 1.353, 0.000)],
],
'TRP': [
['N', 0, (-0.521, 1.363, 0.000)],
['CA', 0, (0.000, 0.000, 0.000)],
['C', 0, (1.525, -0.000, 0.000)],
['CB', 0, (-0.523, -0.776, -1.212)],
['O', 3, (0.627, 1.062, 0.000)],
['CG', 4, (0.609, 1.370, -0.000)],
['CD1', 5, (0.824, 1.091, 0.000)],
['CD2', 5, (0.854, -1.148, -0.005)],
['CE2', 5, (2.186, -0.678, -0.007)],
['CE3', 5, (0.622, -2.530, -0.007)],
['NE1', 5, (2.140, 0.690, -0.004)],
['CH2', 5, (3.028, -2.890, -0.013)],
['CZ2', 5, (3.283, -1.543, -0.011)],
['CZ3', 5, (1.715, -3.389, -0.011)],
],
'TYR': [
['N', 0, (-0.522, 1.362, 0.000)],
['CA', 0, (0.000, 0.000, 0.000)],
['C', 0, (1.524, -0.000, -0.000)],
['CB', 0, (-0.522, -0.776, -1.213)],
['O', 3, (0.627, 1.062, -0.000)],
['CG', 4, (0.607, 1.382, -0.000)],
['CD1', 5, (0.716, 1.195, -0.000)],
['CD2', 5, (0.713, -1.194, -0.001)],
['CE1', 5, (2.107, 1.200, -0.002)],
['CE2', 5, (2.104, -1.201, -0.003)],
['OH', 5, (4.168, -0.002, -0.005)],
['CZ', 5, (2.791, -0.001, -0.003)],
],
'VAL': [
['N', 0, (-0.494, 1.373, -0.000)],
['CA', 0, (0.000, 0.000, 0.000)],
['C', 0, (1.527, -0.000, -0.000)],
['CB', 0, (-0.533, -0.795, -1.213)],
['O', 3, (0.627, 1.062, -0.000)],
['CG1', 4, (0.540, 1.429, -0.000)],
['CG2', 4, (0.533, -0.776, 1.203)],
],
}
# A list of atoms (excluding hydrogen) for each AA type. PDB naming convention.
residue_atoms = {
'ALA': ['C', 'CA', 'CB', 'N', 'O'],
'ARG': ['C', 'CA', 'CB', 'CG', 'CD', 'CZ', 'N', 'NE', 'O', 'NH1', 'NH2'],
'ASP': ['C', 'CA', 'CB', 'CG', 'N', 'O', 'OD1', 'OD2'],
'ASN': ['C', 'CA', 'CB', 'CG', 'N', 'ND2', 'O', 'OD1'],
'CYS': ['C', 'CA', 'CB', 'N', 'O', 'SG'],
'GLU': ['C', 'CA', 'CB', 'CG', 'CD', 'N', 'O', 'OE1', 'OE2'],
'GLN': ['C', 'CA', 'CB', 'CG', 'CD', 'N', 'NE2', 'O', 'OE1'],
'GLY': ['C', 'CA', 'N', 'O'],
'HIS': ['C', 'CA', 'CB', 'CG', 'CD2', 'CE1', 'N', 'ND1', 'NE2', 'O'],
'ILE': ['C', 'CA', 'CB', 'CG1', 'CG2', 'CD1', 'N', 'O'],
'LEU': ['C', 'CA', 'CB', 'CG', 'CD1', 'CD2', 'N', 'O'],
'LYS': ['C', 'CA', 'CB', 'CG', 'CD', 'CE', 'N', 'NZ', 'O'],
'MET': ['C', 'CA', 'CB', 'CG', 'CE', 'N', 'O', 'SD'],
'PHE': ['C', 'CA', 'CB', 'CG', 'CD1', 'CD2', 'CE1', 'CE2', 'CZ', 'N', 'O'],
'PRO': ['C', 'CA', 'CB', 'CG', 'CD', 'N', 'O'],
'SER': ['C', 'CA', 'CB', 'N', 'O', 'OG'],
'THR': ['C', 'CA', 'CB', 'CG2', 'N', 'O', 'OG1'],
'TRP': ['C', 'CA', 'CB', 'CG', 'CD1', 'CD2', 'CE2', 'CE3', 'CZ2', 'CZ3',
'CH2', 'N', 'NE1', 'O'],
'TYR': ['C', 'CA', 'CB', 'CG', 'CD1', 'CD2', 'CE1', 'CE2', 'CZ', 'N', 'O',
'OH'],
'VAL': ['C', 'CA', 'CB', 'CG1', 'CG2', 'N', 'O']
}
# Naming swaps for ambiguous atom names.
# Due to symmetries in the amino acids the naming of atoms is ambiguous in
# 4 of the 20 amino acids.
# (The LDDT paper lists 7 amino acids as ambiguous, but the naming ambiguities
# in LEU, VAL and ARG can be resolved by using the 3d constellations of
# the 'ambiguous' atoms and their neighbours)
residue_atom_renaming_swaps = {
'ASP': {'OD1': 'OD2'},
'GLU': {'OE1': 'OE2'},
'PHE': {'CD1': 'CD2', 'CE1': 'CE2'},
'TYR': {'CD1': 'CD2', 'CE1': 'CE2'},
}
# Van der Waals radii [Angstroem] of the atoms (from Wikipedia)
van_der_waals_radius = {
'C': 1.7,
'N': 1.55,
'O': 1.52,
'S': 1.8,
}
Bond = collections.namedtuple(
'Bond', ['atom1_name', 'atom2_name', 'length', 'stddev'])
BondAngle = collections.namedtuple(
'BondAngle',
['atom1_name', 'atom2_name', 'atom3name', 'angle_rad', 'stddev'])
@functools.lru_cache(maxsize=None)
def load_stereo_chemical_props() -> Tuple[Mapping[str, List[Bond]],
Mapping[str, List[Bond]],
Mapping[str, List[BondAngle]]]:
"""Load stereo_chemical_props.txt into a nice structure.
Load literature values for bond lengths and bond angles and translate
bond angles into the length of the opposite edge of the triangle
("residue_virtual_bonds").
Returns:
residue_bonds: Dict that maps resname -> list of Bond tuples.
residue_virtual_bonds: Dict that maps resname -> list of Bond tuples.
residue_bond_angles: Dict that maps resname -> list of BondAngle tuples.
"""
stereo_chemical_props_path = os.path.join(
os.path.dirname(os.path.abspath(__file__)), 'stereo_chemical_props.txt'
)
with open(stereo_chemical_props_path, 'rt') as f:
stereo_chemical_props = f.read()
lines_iter = iter(stereo_chemical_props.splitlines())
# Load bond lengths.
residue_bonds = {}
next(lines_iter) # Skip header line.
for line in lines_iter:
if line.strip() == '-':
break
bond, resname, length, stddev = line.split()
atom1, atom2 = bond.split('-')
if resname not in residue_bonds:
residue_bonds[resname] = []
residue_bonds[resname].append(
Bond(atom1, atom2, float(length), float(stddev)))
residue_bonds['UNK'] = []
# Load bond angles.
residue_bond_angles = {}
next(lines_iter) # Skip empty line.
next(lines_iter) # Skip header line.
for line in lines_iter:
if line.strip() == '-':
break
bond, resname, angle_degree, stddev_degree = line.split()
atom1, atom2, atom3 = bond.split('-')
if resname not in residue_bond_angles:
residue_bond_angles[resname] = []
residue_bond_angles[resname].append(
BondAngle(atom1, atom2, atom3,
float(angle_degree) / 180. * np.pi,
float(stddev_degree) / 180. * np.pi))
residue_bond_angles['UNK'] = []
def make_bond_key(atom1_name, atom2_name):
"""Unique key to lookup bonds."""
return '-'.join(sorted([atom1_name, atom2_name]))
# Translate bond angles into distances ("virtual bonds").
residue_virtual_bonds = {}
for resname, bond_angles in residue_bond_angles.items():
# Create a fast lookup dict for bond lengths.
bond_cache = {}
for b in residue_bonds[resname]:
bond_cache[make_bond_key(b.atom1_name, b.atom2_name)] = b
residue_virtual_bonds[resname] = []
for ba in bond_angles:
bond1 = bond_cache[make_bond_key(ba.atom1_name, ba.atom2_name)]
bond2 = bond_cache[make_bond_key(ba.atom2_name, ba.atom3name)]
# Compute distance between atom1 and atom3 using the law of cosines
# c^2 = a^2 + b^2 - 2ab*cos(gamma).
gamma = ba.angle_rad
length = np.sqrt(bond1.length**2 + bond2.length**2
- 2 * bond1.length * bond2.length * np.cos(gamma))
# Propagation of uncertainty assuming uncorrelated errors.
dl_outer = 0.5 / length
dl_dgamma = (2 * bond1.length * bond2.length * np.sin(gamma)) * dl_outer
dl_db1 = (2 * bond1.length - 2 * bond2.length * np.cos(gamma)) * dl_outer
dl_db2 = (2 * bond2.length - 2 * bond1.length * np.cos(gamma)) * dl_outer
stddev = np.sqrt((dl_dgamma * ba.stddev)**2 +
(dl_db1 * bond1.stddev)**2 +
(dl_db2 * bond2.stddev)**2)
residue_virtual_bonds[resname].append(
Bond(ba.atom1_name, ba.atom3name, length, stddev))
return (residue_bonds,
residue_virtual_bonds,
residue_bond_angles)
# Between-residue bond lengths for general bonds (first element) and for Proline
# (second element).
between_res_bond_length_c_n = [1.329, 1.341]
between_res_bond_length_stddev_c_n = [0.014, 0.016]
# Between-residue cos_angles.
between_res_cos_angles_c_n_ca = [-0.5203, 0.0353] # degrees: 121.352 +- 2.315
between_res_cos_angles_ca_c_n = [-0.4473, 0.0311] # degrees: 116.568 +- 1.995
# This mapping is used when we need to store atom data in a format that requires
# fixed atom data size for every residue (e.g. a numpy array).
atom_types = [
'N', 'CA', 'C', 'CB', 'O', 'CG', 'CG1', 'CG2', 'OG', 'OG1', 'SG', 'CD',
'CD1', 'CD2', 'ND1', 'ND2', 'OD1', 'OD2', 'SD', 'CE', 'CE1', 'CE2', 'CE3',
'NE', 'NE1', 'NE2', 'OE1', 'OE2', 'CH2', 'NH1', 'NH2', 'OH', 'CZ', 'CZ2',
'CZ3', 'NZ', 'OXT'
]
atom_order = {atom_type: i for i, atom_type in enumerate(atom_types)}
atom_type_num = len(atom_types) # := 37.
# A compact atom encoding with 14 columns
# pylint: disable=line-too-long
# pylint: disable=bad-whitespace
restype_name_to_atom14_names = {
'ALA': ['N', 'CA', 'C', 'O', 'CB', '', '', '', '', '', '', '', '', ''],
'ARG': ['N', 'CA', 'C', 'O', 'CB', 'CG', 'CD', 'NE', 'CZ', 'NH1', 'NH2', '', '', ''],
'ASN': ['N', 'CA', 'C', 'O', 'CB', 'CG', 'OD1', 'ND2', '', '', '', '', '', ''],
'ASP': ['N', 'CA', 'C', 'O', 'CB', 'CG', 'OD1', 'OD2', '', '', '', '', '', ''],
'CYS': ['N', 'CA', 'C', 'O', 'CB', 'SG', '', '', '', '', '', '', '', ''],
'GLN': ['N', 'CA', 'C', 'O', 'CB', 'CG', 'CD', 'OE1', 'NE2', '', '', '', '', ''],
'GLU': ['N', 'CA', 'C', 'O', 'CB', 'CG', 'CD', 'OE1', 'OE2', '', '', '', '', ''],
'GLY': ['N', 'CA', 'C', 'O', '', '', '', '', '', '', '', '', '', ''],
'HIS': ['N', 'CA', 'C', 'O', 'CB', 'CG', 'ND1', 'CD2', 'CE1', 'NE2', '', '', '', ''],
'ILE': ['N', 'CA', 'C', 'O', 'CB', 'CG1', 'CG2', 'CD1', '', '', '', '', '', ''],
'LEU': ['N', 'CA', 'C', 'O', 'CB', 'CG', 'CD1', 'CD2', '', '', '', '', '', ''],
'LYS': ['N', 'CA', 'C', 'O', 'CB', 'CG', 'CD', 'CE', 'NZ', '', '', '', '', ''],
'MET': ['N', 'CA', 'C', 'O', 'CB', 'CG', 'SD', 'CE', '', '', '', '', '', ''],
'PHE': ['N', 'CA', 'C', 'O', 'CB', 'CG', 'CD1', 'CD2', 'CE1', 'CE2', 'CZ', '', '', ''],
'PRO': ['N', 'CA', 'C', 'O', 'CB', 'CG', 'CD', '', '', '', '', '', '', ''],
'SER': ['N', 'CA', 'C', 'O', 'CB', 'OG', '', '', '', '', '', '', '', ''],
'THR': ['N', 'CA', 'C', 'O', 'CB', 'OG1', 'CG2', '', '', '', '', '', '', ''],
'TRP': ['N', 'CA', 'C', 'O', 'CB', 'CG', 'CD1', 'CD2', 'NE1', 'CE2', 'CE3', 'CZ2', 'CZ3', 'CH2'],
'TYR': ['N', 'CA', 'C', 'O', 'CB', 'CG', 'CD1', 'CD2', 'CE1', 'CE2', 'CZ', 'OH', '', ''],
'VAL': ['N', 'CA', 'C', 'O', 'CB', 'CG1', 'CG2', '', '', '', '', '', '', ''],
'UNK': ['', '', '', '', '', '', '', '', '', '', '', '', '', ''],
}
# pylint: enable=line-too-long
# pylint: enable=bad-whitespace
# This is the standard residue order when coding AA type as a number.
# Reproduce it by taking 3-letter AA codes and sorting them alphabetically.
restypes = [
'A', 'R', 'N', 'D', 'C', 'Q', 'E', 'G', 'H', 'I', 'L', 'K', 'M', 'F', 'P',
'S', 'T', 'W', 'Y', 'V'
]
restype_order = {restype: i for i, restype in enumerate(restypes)}
restype_num = len(restypes) # := 20.
unk_restype_index = restype_num # Catch-all index for unknown restypes.
restypes_with_x = restypes + ['X']
restype_order_with_x = {restype: i for i, restype in enumerate(restypes_with_x)}
def sequence_to_onehot(
sequence: str,
mapping: Mapping[str, int],
map_unknown_to_x: bool = False) -> np.ndarray:
"""Maps the given sequence into a one-hot encoded matrix.
Args:
sequence: An amino acid sequence.
mapping: A dictionary mapping amino acids to integers.
map_unknown_to_x: If True, any amino acid that is not in the mapping will be
mapped to the unknown amino acid 'X'. If the mapping doesn't contain
amino acid 'X', an error will be thrown. If False, any amino acid not in
the mapping will throw an error.
Returns:
A numpy array of shape (seq_len, num_unique_aas) with one-hot encoding of
the sequence.
Raises:
ValueError: If the mapping doesn't contain values from 0 to
num_unique_aas - 1 without any gaps.
"""
num_entries = max(mapping.values()) + 1
if sorted(set(mapping.values())) != list(range(num_entries)):
raise ValueError('The mapping must have values from 0 to num_unique_aas-1 '
'without any gaps. Got: %s' % sorted(mapping.values()))
one_hot_arr = np.zeros((len(sequence), num_entries), dtype=np.int32)
for aa_index, aa_type in enumerate(sequence):
if map_unknown_to_x:
if aa_type.isalpha() and aa_type.isupper():
aa_id = mapping.get(aa_type, mapping['X'])
else:
raise ValueError(f'Invalid character in the sequence: {aa_type}')
else:
aa_id = mapping[aa_type]
one_hot_arr[aa_index, aa_id] = 1
return one_hot_arr
restype_1to3 = {
'A': 'ALA',
'R': 'ARG',
'N': 'ASN',
'D': 'ASP',
'C': 'CYS',
'Q': 'GLN',
'E': 'GLU',
'G': 'GLY',
'H': 'HIS',
'I': 'ILE',
'L': 'LEU',
'K': 'LYS',
'M': 'MET',
'F': 'PHE',
'P': 'PRO',
'S': 'SER',
'T': 'THR',
'W': 'TRP',
'Y': 'TYR',
'V': 'VAL',
}
# NB: restype_3to1 differs from Bio.PDB.protein_letters_3to1 by being a simple
# 1-to-1 mapping of 3 letter names to one letter names. The latter contains
# many more, and less common, three letter names as keys and maps many of these
# to the same one letter name (including 'X' and 'U' which we don't use here).
restype_3to1 = {v: k for k, v in restype_1to3.items()}
# Define a restype name for all unknown residues.
unk_restype = 'UNK'
resnames = [restype_1to3[r] for r in restypes] + [unk_restype]
resname_to_idx = {resname: i for i, resname in enumerate(resnames)}
# The mapping here uses hhblits convention, so that B is mapped to D, J and O
# are mapped to X, U is mapped to C, and Z is mapped to E. Other than that the
# remaining 20 amino acids are kept in alphabetical order.
# There are 2 non-amino acid codes, X (representing any amino acid) and
# "-" representing a missing amino acid in an alignment. The id for these
# codes is put at the end (20 and 21) so that they can easily be ignored if
# desired.
HHBLITS_AA_TO_ID = {
'A': 0,
'B': 2,
'C': 1,
'D': 2,
'E': 3,
'F': 4,
'G': 5,
'H': 6,
'I': 7,
'J': 20,
'K': 8,
'L': 9,
'M': 10,
'N': 11,
'O': 20,
'P': 12,
'Q': 13,
'R': 14,
'S': 15,
'T': 16,
'U': 1,
'V': 17,
'W': 18,
'X': 20,
'Y': 19,
'Z': 3,
'-': 21,
}
# Partial inversion of HHBLITS_AA_TO_ID.
ID_TO_HHBLITS_AA = {
0: 'A',
1: 'C', # Also U.
2: 'D', # Also B.
3: 'E', # Also Z.
4: 'F',
5: 'G',
6: 'H',
7: 'I',
8: 'K',
9: 'L',
10: 'M',
11: 'N',
12: 'P',
13: 'Q',
14: 'R',
15: 'S',
16: 'T',
17: 'V',
18: 'W',
19: 'Y',
20: 'X', # Includes J and O.
21: '-',
}
restypes_with_x_and_gap = restypes + ['X', '-']
MAP_HHBLITS_AATYPE_TO_OUR_AATYPE = tuple(
restypes_with_x_and_gap.index(ID_TO_HHBLITS_AA[i])
for i in range(len(restypes_with_x_and_gap)))
def _make_standard_atom_mask() -> np.ndarray:
"""Returns [num_res_types, num_atom_types] mask array."""
# +1 to account for unknown (all 0s).
mask = np.zeros([restype_num + 1, atom_type_num], dtype=np.int32)
for restype, restype_letter in enumerate(restypes):
restype_name = restype_1to3[restype_letter]
atom_names = residue_atoms[restype_name]
for atom_name in atom_names:
atom_type = atom_order[atom_name]
mask[restype, atom_type] = 1
return mask
STANDARD_ATOM_MASK = _make_standard_atom_mask()
# A one hot representation for the first and second atoms defining the axis
# of rotation for each chi-angle in each residue.
def chi_angle_atom(atom_index: int) -> np.ndarray:
"""Define chi-angle rigid groups via one-hot representations."""
chi_angles_index = {}
one_hots = []
for k, v in chi_angles_atoms.items():
indices = [atom_types.index(s[atom_index]) for s in v]
indices.extend([-1]*(4-len(indices)))
chi_angles_index[k] = indices
for r in restypes:
res3 = restype_1to3[r]
one_hot = np.eye(atom_type_num)[chi_angles_index[res3]]
one_hots.append(one_hot)
one_hots.append(np.zeros([4, atom_type_num])) # Add zeros for residue `X`.
one_hot = np.stack(one_hots, axis=0)
one_hot = np.transpose(one_hot, [0, 2, 1])
return one_hot
chi_atom_1_one_hot = chi_angle_atom(1)
chi_atom_2_one_hot = chi_angle_atom(2)
# An array like chi_angles_atoms but using indices rather than names.
chi_angles_atom_indices = [chi_angles_atoms[restype_1to3[r]] for r in restypes]
chi_angles_atom_indices = tree.map_structure(
lambda atom_name: atom_order[atom_name], chi_angles_atom_indices)
chi_angles_atom_indices = np.array([
chi_atoms + ([[0, 0, 0, 0]] * (4 - len(chi_atoms)))
for chi_atoms in chi_angles_atom_indices])
# Mapping from (res_name, atom_name) pairs to the atom's chi group index
# and atom index within that group.
chi_groups_for_atom = collections.defaultdict(list)
for res_name, chi_angle_atoms_for_res in chi_angles_atoms.items():
for chi_group_i, chi_group in enumerate(chi_angle_atoms_for_res):
for atom_i, atom in enumerate(chi_group):
chi_groups_for_atom[(res_name, atom)].append((chi_group_i, atom_i))
chi_groups_for_atom = dict(chi_groups_for_atom)
def _make_rigid_transformation_4x4(ex, ey, translation):
"""Create a rigid 4x4 transformation matrix from two axes and transl."""
# Normalize ex.
ex_normalized = ex / np.linalg.norm(ex)
# make ey perpendicular to ex
ey_normalized = ey - np.dot(ey, ex_normalized) * ex_normalized
ey_normalized /= np.linalg.norm(ey_normalized)
# compute ez as cross product
eznorm = np.cross(ex_normalized, ey_normalized)
m = np.stack([ex_normalized, ey_normalized, eznorm, translation]).transpose()
m = np.concatenate([m, [[0., 0., 0., 1.]]], axis=0)
return m
# create an array with (restype, atomtype) --> rigid_group_idx
# and an array with (restype, atomtype, coord) for the atom positions
# and compute affine transformation matrices (4,4) from one rigid group to the
# previous group
restype_atom37_to_rigid_group = np.zeros([21, 37], dtype=int)
restype_atom37_mask = np.zeros([21, 37], dtype=np.float32)
restype_atom37_rigid_group_positions = np.zeros([21, 37, 3], dtype=np.float32)
restype_atom14_to_rigid_group = np.zeros([21, 14], dtype=int)
restype_atom14_mask = np.zeros([21, 14], dtype=np.float32)
restype_atom14_rigid_group_positions = np.zeros([21, 14, 3], dtype=np.float32)
restype_rigid_group_default_frame = np.zeros([21, 8, 4, 4], dtype=np.float32)
def _make_rigid_group_constants():
"""Fill the arrays above."""
for restype, restype_letter in enumerate(restypes):
resname = restype_1to3[restype_letter]
for atomname, group_idx, atom_position in rigid_group_atom_positions[
resname]:
atomtype = atom_order[atomname]
restype_atom37_to_rigid_group[restype, atomtype] = group_idx
restype_atom37_mask[restype, atomtype] = 1
restype_atom37_rigid_group_positions[restype, atomtype, :] = atom_position
atom14idx = restype_name_to_atom14_names[resname].index(atomname)
restype_atom14_to_rigid_group[restype, atom14idx] = group_idx
restype_atom14_mask[restype, atom14idx] = 1
restype_atom14_rigid_group_positions[restype,
atom14idx, :] = atom_position
for restype, restype_letter in enumerate(restypes):
resname = restype_1to3[restype_letter]
atom_positions = {name: np.array(pos) for name, _, pos
in rigid_group_atom_positions[resname]}
# backbone to backbone is the identity transform
restype_rigid_group_default_frame[restype, 0, :, :] = np.eye(4)
# pre-omega-frame to backbone (currently dummy identity matrix)
restype_rigid_group_default_frame[restype, 1, :, :] = np.eye(4)
# phi-frame to backbone
mat = _make_rigid_transformation_4x4(
ex=atom_positions['N'] - atom_positions['CA'],
ey=np.array([1., 0., 0.]),
translation=atom_positions['N'])
restype_rigid_group_default_frame[restype, 2, :, :] = mat
# psi-frame to backbone
mat = _make_rigid_transformation_4x4(
ex=atom_positions['C'] - atom_positions['CA'],
ey=atom_positions['CA'] - atom_positions['N'],
translation=atom_positions['C'])
restype_rigid_group_default_frame[restype, 3, :, :] = mat
# chi1-frame to backbone
if chi_angles_mask[restype][0]:
base_atom_names = chi_angles_atoms[resname][0]
base_atom_positions = [atom_positions[name] for name in base_atom_names]
mat = _make_rigid_transformation_4x4(
ex=base_atom_positions[2] - base_atom_positions[1],
ey=base_atom_positions[0] - base_atom_positions[1],
translation=base_atom_positions[2])
restype_rigid_group_default_frame[restype, 4, :, :] = mat
# chi2-frame to chi1-frame
# chi3-frame to chi2-frame
# chi4-frame to chi3-frame
# luckily all rotation axes for the next frame start at (0,0,0) of the
# previous frame
for chi_idx in range(1, 4):
if chi_angles_mask[restype][chi_idx]:
axis_end_atom_name = chi_angles_atoms[resname][chi_idx][2]
axis_end_atom_position = atom_positions[axis_end_atom_name]
mat = _make_rigid_transformation_4x4(
ex=axis_end_atom_position,
ey=np.array([-1., 0., 0.]),
translation=axis_end_atom_position)
restype_rigid_group_default_frame[restype, 4 + chi_idx, :, :] = mat
_make_rigid_group_constants()
def make_atom14_dists_bounds(overlap_tolerance=1.5,
bond_length_tolerance_factor=15):
"""compute upper and lower bounds for bonds to assess violations."""
restype_atom14_bond_lower_bound = np.zeros([21, 14, 14], np.float32)
restype_atom14_bond_upper_bound = np.zeros([21, 14, 14], np.float32)
restype_atom14_bond_stddev = np.zeros([21, 14, 14], np.float32)
residue_bonds, residue_virtual_bonds, _ = load_stereo_chemical_props()
for restype, restype_letter in enumerate(restypes):
resname = restype_1to3[restype_letter]
atom_list = restype_name_to_atom14_names[resname]
# create lower and upper bounds for clashes
for atom1_idx, atom1_name in enumerate(atom_list):
if not atom1_name:
continue
atom1_radius = van_der_waals_radius[atom1_name[0]]
for atom2_idx, atom2_name in enumerate(atom_list):
if (not atom2_name) or atom1_idx == atom2_idx:
continue
atom2_radius = van_der_waals_radius[atom2_name[0]]
lower = atom1_radius + atom2_radius - overlap_tolerance
upper = 1e10
restype_atom14_bond_lower_bound[restype, atom1_idx, atom2_idx] = lower
restype_atom14_bond_lower_bound[restype, atom2_idx, atom1_idx] = lower
restype_atom14_bond_upper_bound[restype, atom1_idx, atom2_idx] = upper
restype_atom14_bond_upper_bound[restype, atom2_idx, atom1_idx] = upper
# overwrite lower and upper bounds for bonds and angles
for b in residue_bonds[resname] + residue_virtual_bonds[resname]:
atom1_idx = atom_list.index(b.atom1_name)
atom2_idx = atom_list.index(b.atom2_name)
lower = b.length - bond_length_tolerance_factor * b.stddev
upper = b.length + bond_length_tolerance_factor * b.stddev
restype_atom14_bond_lower_bound[restype, atom1_idx, atom2_idx] = lower
restype_atom14_bond_lower_bound[restype, atom2_idx, atom1_idx] = lower
restype_atom14_bond_upper_bound[restype, atom1_idx, atom2_idx] = upper
restype_atom14_bond_upper_bound[restype, atom2_idx, atom1_idx] = upper
restype_atom14_bond_stddev[restype, atom1_idx, atom2_idx] = b.stddev
restype_atom14_bond_stddev[restype, atom2_idx, atom1_idx] = b.stddev
return {'lower_bound': restype_atom14_bond_lower_bound, # shape (21,14,14)
'upper_bound': restype_atom14_bond_upper_bound, # shape (21,14,14)
'stddev': restype_atom14_bond_stddev, # shape (21,14,14)
}
================================================
FILE: alphafold/common/residue_constants_test.py
================================================
# Copyright 2021 DeepMind Technologies Limited
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Test that residue_constants generates correct values."""
from absl.testing import absltest
from absl.testing import parameterized
from alphafold.common import residue_constants
import numpy as np
class ResidueConstantsTest(parameterized.TestCase):
@parameterized.parameters(
('ALA', 0),
('CYS', 1),
('HIS', 2),
('MET', 3),
('LYS', 4),
('ARG', 4),
)
def testChiAnglesAtoms(self, residue_name, chi_num):
chi_angles_atoms = residue_constants.chi_angles_atoms[residue_name]
self.assertLen(chi_angles_atoms, chi_num)
for chi_angle_atoms in chi_angles_atoms:
self.assertLen(chi_angle_atoms, 4)
def testChiGroupsForAtom(self):
for k, chi_groups in residue_constants.chi_groups_for_atom.items():
res_name, atom_name = k
for chi_group_i, atom_i in chi_groups:
self.assertEqual(
atom_name,
residue_constants.chi_angles_atoms[res_name][chi_group_i][atom_i])
@parameterized.parameters(
('ALA', 5), ('ARG', 11), ('ASN', 8), ('ASP', 8), ('CYS', 6), ('GLN', 9),
('GLU', 9), ('GLY', 4), ('HIS', 10), ('ILE', 8), ('LEU', 8), ('LYS', 9),
('MET', 8), ('PHE', 11), ('PRO', 7), ('SER', 6), ('THR', 7), ('TRP', 14),
('TYR', 12), ('VAL', 7)
)
def testResidueAtoms(self, atom_name, num_residue_atoms):
residue_atoms = residue_constants.residue_atoms[atom_name]
self.assertLen(residue_atoms, num_residue_atoms)
def testStandardAtomMask(self):
with self.subTest('Check shape'):
self.assertEqual(residue_constants.STANDARD_ATOM_MASK.shape, (21, 37,))
with self.subTest('Check values'):
str_to_row = lambda s: [c == '1' for c in s] # More clear/concise.
np.testing.assert_array_equal(
residue_constants.STANDARD_ATOM_MASK,
np.array([
# NB This was defined by c+p but looks sane.
str_to_row('11111 '), # ALA
str_to_row('111111 1 1 11 1 '), # ARG
str_to_row('111111 11 '), # ASP
str_to_row('111111 11 '), # ASN
str_to_row('11111 1 '), # CYS
str_to_row('111111 1 11 '), # GLU
str_to_row('111111 1 11 '), # GLN
str_to_row('111 1 '), # GLY
str_to_row('111111 11 1 1 '), # HIS
str_to_row('11111 11 1 '), # ILE
str_to_row('111111 11 '), # LEU
str_to_row('111111 1 1 1 '), # LYS
str_to_row('111111 11 '), # MET
str_to_row('111111 11 11 1 '), # PHE
str_to_row('111111 1 '), # PRO
str_to_row('11111 1 '), # SER
str_to_row('11111 1 1 '), # THR
str_to_row('111111 11 11 1 1 11 '), # TRP
str_to_row('111111 11 11 11 '), # TYR
str_to_row('11111 11 '), # VAL
str_to_row(' '), # UNK
]))
with self.subTest('Check row totals'):
# Check each row has the right number of atoms.
for row, restype in enumerate(residue_constants.restypes): # A, R, ...
long_restype = residue_constants.restype_1to3[restype] # ALA, ARG, ...
atoms_names = residue_constants.residue_atoms[
long_restype] # ['C', 'CA', 'CB', 'N', 'O'], ...
self.assertLen(atoms_names,
residue_constants.STANDARD_ATOM_MASK[row, :].sum(),
long_restype)
def testAtomTypes(self):
self.assertEqual(residue_constants.atom_type_num, 37)
self.assertEqual(residue_constants.atom_types[0], 'N')
self.assertEqual(residue_constants.atom_types[1], 'CA')
self.assertEqual(residue_constants.atom_types[2], 'C')
self.assertEqual(residue_constants.atom_types[3], 'CB')
self.assertEqual(residue_constants.atom_types[4], 'O')
self.assertEqual(residue_constants.atom_order['N'], 0)
self.assertEqual(residue_constants.atom_order['CA'], 1)
self.assertEqual(residue_constants.atom_order['C'], 2)
self.assertEqual(residue_constants.atom_order['CB'], 3)
self.assertEqual(residue_constants.atom_order['O'], 4)
self.assertEqual(residue_constants.atom_type_num, 37)
def testRestypes(self):
three_letter_restypes = [
residue_constants.restype_1to3[r] for r in residue_constants.restypes]
for restype, exp_restype in zip(
three_letter_restypes, sorted(residue_constants.restype_1to3.values())):
self.assertEqual(restype, exp_restype)
self.assertEqual(residue_constants.restype_num, 20)
def testSequenceToOneHotHHBlits(self):
one_hot = residue_constants.sequence_to_onehot(
'ABCDEFGHIJKLMNOPQRSTUVWXYZ-', residue_constants.HHBLITS_AA_TO_ID)
exp_one_hot = np.array(
[[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0],
[0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]])
np.testing.assert_array_equal(one_hot, exp_one_hot)
def testSequenceToOneHotStandard(self):
one_hot = residue_constants.sequence_to_onehot(
'ARNDCQEGHILKMFPSTWYV', residue_constants.restype_order)
np.testing.assert_array_equal(one_hot, np.eye(20))
def testSequenceToOneHotUnknownMapping(self):
seq = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
expected_out = np.zeros([26, 21])
for row, position in enumerate(
[0, 20, 4, 3, 6, 13, 7, 8, 9, 20, 11, 10, 12, 2, 20, 14, 5, 1, 15, 16,
20, 19, 17, 20, 18, 20]):
expected_out[row, position] = 1
aa_types = residue_constants.sequence_to_onehot(
sequence=seq,
mapping=residue_constants.restype_order_with_x,
map_unknown_to_x=True)
self.assertTrue((aa_types == expected_out).all())
@parameterized.named_parameters(
('lowercase', 'aaa'), # Insertions in A3M.
('gaps', '---'), # Gaps in A3M.
('dots', '...'), # Gaps in A3M.
('metadata', '>TEST'), # FASTA metadata line.
)
def testSequenceToOneHotUnknownMappingError(self, seq):
with self.assertRaises(ValueError):
residue_constants.sequence_to_onehot(
sequence=seq,
mapping=residue_constants.restype_order_with_x,
map_unknown_to_x=True)
if __name__ == '__main__':
absltest.main()
================================================
FILE: alphafold/common/stereo_chemical_props.txt
================================================
Bond Residue Mean StdDev
CA-CB ALA 1.520 0.021
N-CA ALA 1.459 0.020
CA-C ALA 1.525 0.026
C-O ALA 1.229 0.019
CA-CB ARG 1.535 0.022
CB-CG ARG 1.521 0.027
CG-CD ARG 1.515 0.025
CD-NE ARG 1.460 0.017
NE-CZ ARG 1.326 0.013
CZ-NH1 ARG 1.326 0.013
CZ-NH2 ARG 1.326 0.013
N-CA ARG 1.459 0.020
CA-C ARG 1.525 0.026
C-O ARG 1.229 0.019
CA-CB ASN 1.527 0.026
CB-CG ASN 1.506 0.023
CG-OD1 ASN 1.235 0.022
CG-ND2 ASN 1.324 0.025
N-CA ASN 1.459 0.020
CA-C ASN 1.525 0.026
C-O ASN 1.229 0.019
CA-CB ASP 1.535 0.022
CB-CG ASP 1.513 0.021
CG-OD1 ASP 1.249 0.023
CG-OD2 ASP 1.249 0.023
N-CA ASP 1.459 0.020
CA-C ASP 1.525 0.026
C-O ASP 1.229 0.019
CA-CB CYS 1.526 0.013
CB-SG CYS 1.812 0.016
N-CA CYS 1.459 0.020
CA-C CYS 1.525 0.026
C-O CYS 1.229 0.019
CA-CB GLU 1.535 0.022
CB-CG GLU 1.517 0.019
CG-CD GLU 1.515 0.015
CD-OE1 GLU 1.252 0.011
CD-OE2 GLU 1.252 0.011
N-CA GLU 1.459 0.020
CA-C GLU 1.525 0.026
C-O GLU 1.229 0.019
CA-CB GLN 1.535 0.022
CB-CG GLN 1.521 0.027
CG-CD GLN 1.506 0.023
CD-OE1 GLN 1.235 0.022
CD-NE2 GLN 1.324 0.025
N-CA GLN 1.459 0.020
CA-C GLN 1.525 0.026
C-O GLN 1.229 0.019
N-CA GLY 1.456 0.015
CA-C GLY 1.514 0.016
C-O GLY 1.232 0.016
CA-CB HIS 1.535 0.022
CB-CG HIS 1.492 0.016
CG-ND1 HIS 1.369 0.015
CG-CD2 HIS 1.353 0.017
ND1-CE1 HIS 1.343 0.025
CD2-NE2 HIS 1.415 0.021
CE1-NE2 HIS 1.322 0.023
N-CA HIS 1.459 0.020
CA-C HIS 1.525 0.026
C-O HIS 1.229 0.019
CA-CB ILE 1.544 0.023
CB-CG1 ILE 1.536 0.028
CB-CG2 ILE 1.524 0.031
CG1-CD1 ILE 1.500 0.069
N-CA ILE 1.459 0.020
CA-C ILE 1.525 0.026
C-O ILE 1.229 0.019
CA-CB LEU 1.533 0.023
CB-CG LEU 1.521 0.029
CG-CD1 LEU 1.514 0.037
CG-CD2 LEU 1.514 0.037
N-CA LEU 1.459 0.020
CA-C LEU 1.525 0.026
C-O LEU 1.229 0.019
CA-CB LYS 1.535 0.022
CB-CG LYS 1.521 0.027
CG-CD LYS 1.520 0.034
CD-CE LYS 1.508 0.025
CE-NZ LYS 1.486 0.025
N-CA LYS 1.459 0.020
CA-C LYS 1.525 0.026
C-O LYS 1.229 0.019
CA-CB MET 1.535 0.022
CB-CG MET 1.509 0.032
CG-SD MET 1.807 0.026
SD-CE MET 1.774 0.056
N-CA MET 1.459 0.020
CA-C MET 1.525 0.026
C-O MET 1.229 0.019
CA-CB PHE 1.535 0.022
CB-CG PHE 1.509 0.017
CG-CD1 PHE 1.383 0.015
CG-CD2 PHE 1.383 0.015
CD1-CE1 PHE 1.388 0.020
CD2-CE2 PHE 1.388 0.020
CE1-CZ PHE 1.369 0.019
CE2-CZ PHE 1.369 0.019
N-CA PHE 1.459 0.020
CA-C PHE 1.525 0.026
C-O PHE 1.229 0.019
CA-CB PRO 1.531 0.020
CB-CG PRO 1.495 0.050
CG-CD PRO 1.502 0.033
CD-N PRO 1.474 0.014
N-CA PRO 1.468 0.017
CA-C PRO 1.524 0.020
C-O PRO 1.228 0.020
CA-CB SER 1.525 0.015
CB-OG SER 1.418 0.013
N-CA SER 1.459 0.020
CA-C SER 1.525 0.026
C-O SER 1.229 0.019
CA-CB THR 1.529 0.026
CB-OG1 THR 1.428 0.020
CB-CG2 THR 1.519 0.033
N-CA THR 1.459 0.020
CA-C THR 1.525 0.026
C-O THR 1.229 0.019
CA-CB TRP 1.535 0.022
CB-CG TRP 1.498 0.018
CG-CD1 TRP 1.363 0.014
CG-CD2 TRP 1.432 0.017
CD1-NE1 TRP 1.375 0.017
NE1-CE2 TRP 1.371 0.013
CD2-CE2 TRP 1.409 0.012
CD2-CE3 TRP 1.399 0.015
CE2-CZ2 TRP 1.393 0.017
CE3-CZ3 TRP 1.380 0.017
CZ2-CH2 TRP 1.369 0.019
CZ3-CH2 TRP 1.396 0.016
N-CA TRP 1.459 0.020
CA-C TRP 1.525 0.026
C-O TRP 1.229 0.019
CA-CB TYR 1.535 0.022
CB-CG TYR 1.512 0.015
CG-CD1 TYR 1.387 0.013
CG-CD2 TYR 1.387 0.013
CD1-CE1 TYR 1.389 0.015
CD2-CE2 TYR 1.389 0.015
CE1-CZ TYR 1.381 0.013
CE2-CZ TYR 1.381 0.013
CZ-OH TYR 1.374 0.017
N-CA TYR 1.459 0.020
CA-C TYR 1.525 0.026
C-O TYR 1.229 0.019
CA-CB VAL 1.543 0.021
CB-CG1 VAL 1.524 0.021
CB-CG2 VAL 1.524 0.021
N-CA VAL 1.459 0.020
CA-C VAL 1.525 0.026
C-O VAL 1.229 0.019
-
Angle Residue Mean StdDev
N-CA-CB ALA 110.1 1.4
CB-CA-C ALA 110.1 1.5
N-CA-C ALA 111.0 2.7
CA-C-O ALA 120.1 2.1
N-CA-CB ARG 110.6 1.8
CB-CA-C ARG 110.4 2.0
CA-CB-CG ARG 113.4 2.2
CB-CG-CD ARG 111.6 2.6
CG-CD-NE ARG 111.8 2.1
CD-NE-CZ ARG 123.6 1.4
NE-CZ-NH1 ARG 120.3 0.5
NE-CZ-NH2 ARG 120.3 0.5
NH1-CZ-NH2 ARG 119.4 1.1
N-CA-C ARG 111.0 2.7
CA-C-O ARG 120.1 2.1
N-CA-CB ASN 110.6 1.8
CB-CA-C ASN 110.4 2.0
CA-CB-CG ASN 113.4 2.2
CB-CG-ND2 ASN 116.7 2.4
CB-CG-OD1 ASN 121.6 2.0
ND2-CG-OD1 ASN 121.9 2.3
N-CA-C ASN 111.0 2.7
CA-C-O ASN 120.1 2.1
N-CA-CB ASP 110.6 1.8
CB-CA-C ASP 110.4 2.0
CA-CB-CG ASP 113.4 2.2
CB-CG-OD1 ASP 118.3 0.9
CB-CG-OD2 ASP 118.3 0.9
OD1-CG-OD2 ASP 123.3 1.9
N-CA-C ASP 111.0 2.7
CA-C-O ASP 120.1 2.1
N-CA-CB CYS 110.8 1.5
CB-CA-C CYS 111.5 1.2
CA-CB-SG CYS 114.2 1.1
N-CA-C CYS 111.0 2.7
CA-C-O CYS 120.1 2.1
N-CA-CB GLU 110.6 1.8
CB-CA-C GLU 110.4 2.0
CA-CB-CG GLU 113.4 2.2
CB-CG-CD GLU 114.2 2.7
CG-CD-OE1 GLU 118.3 2.0
CG-CD-OE2 GLU 118.3 2.0
OE1-CD-OE2 GLU 123.3 1.2
N-CA-C GLU 111.0 2.7
CA-C-O GLU 120.1 2.1
N-CA-CB GLN 110.6 1.8
CB-CA-C GLN 110.4 2.0
CA-CB-CG GLN 113.4 2.2
CB-CG-CD GLN 111.6 2.6
CG-CD-OE1 GLN 121.6 2.0
CG-CD-NE2 GLN 116.7 2.4
OE1-CD-NE2 GLN 121.9 2.3
N-CA-C GLN 111.0 2.7
CA-C-O GLN 120.1 2.1
N-CA-C GLY 113.1 2.5
CA-C-O GLY 120.6 1.8
N-CA-CB HIS 110.6 1.8
CB-CA-C HIS 110.4 2.0
CA-CB-CG HIS 113.6 1.7
CB-CG-ND1 HIS 123.2 2.5
CB-CG-CD2 HIS 130.8 3.1
CG-ND1-CE1 HIS 108.2 1.4
ND1-CE1-NE2 HIS 109.9 2.2
CE1-NE2-CD2 HIS 106.6 2.5
NE2-CD2-CG HIS 109.2 1.9
CD2-CG-ND1 HIS 106.0 1.4
N-CA-C HIS 111.0 2.7
CA-C-O HIS 120.1 2.1
N-CA-CB ILE 110.8 2.3
CB-CA-C ILE 111.6 2.0
CA-CB-CG1 ILE 111.0 1.9
CB-CG1-CD1 ILE 113.9 2.8
CA-CB-CG2 ILE 110.9 2.0
CG1-CB-CG2 ILE 111.4 2.2
N-CA-C ILE 111.0 2.7
CA-C-O ILE 120.1 2.1
N-CA-CB LEU 110.4 2.0
CB-CA-C LEU 110.2 1.9
CA-CB-CG LEU 115.3 2.3
CB-CG-CD1 LEU 111.0 1.7
CB-CG-CD2 LEU 111.0 1.7
CD1-CG-CD2 LEU 110.5 3.0
N-CA-C LEU 111.0 2.7
CA-C-O LEU 120.1 2.1
N-CA-CB LYS 110.6 1.8
CB-CA-C LYS 110.4 2.0
CA-CB-CG LYS 113.4 2.2
CB-CG-CD LYS 111.6 2.6
CG-CD-CE LYS 111.9 3.0
CD-CE-NZ LYS 111.7 2.3
N-CA-C LYS 111.0 2.7
CA-C-O LYS 120.1 2.1
N-CA-CB MET 110.6 1.8
CB-CA-C MET 110.4 2.0
CA-CB-CG MET 113.3 1.7
CB-CG-SD MET 112.4 3.0
CG-SD-CE MET 100.2 1.6
N-CA-C MET 111.0 2.7
CA-C-O MET 120.1 2.1
N-CA-CB PHE 110.6 1.8
CB-CA-C PHE 110.4 2.0
CA-CB-CG PHE 113.9 2.4
CB-CG-CD1 PHE 120.8 0.7
CB-CG-CD2 PHE 120.8 0.7
CD1-CG-CD2 PHE 118.3 1.3
CG-CD1-CE1 PHE 120.8 1.1
CG-CD2-CE2 PHE 120.8 1.1
CD1-CE1-CZ PHE 120.1 1.2
CD2-CE2-CZ PHE 120.1 1.2
CE1-CZ-CE2 PHE 120.0 1.8
N-CA-C PHE 111.0 2.7
CA-C-O PHE 120.1 2.1
N-CA-CB PRO 103.3 1.2
CB-CA-C PRO 111.7 2.1
CA-CB-CG PRO 104.8 1.9
CB-CG-CD PRO 106.5 3.9
CG-CD-N PRO 103.2 1.5
CA-N-CD PRO 111.7 1.4
N-CA-C PRO 112.1 2.6
CA-C-O PRO 120.2 2.4
N-CA-CB SER 110.5 1.5
CB-CA-C SER 110.1 1.9
CA-CB-OG SER 111.2 2.7
N-CA-C SER 111.0 2.7
CA-C-O SER 120.1 2.1
N-CA-CB THR 110.3 1.9
CB-CA-C THR 111.6 2.7
CA-CB-OG1 THR 109.0 2.1
CA-CB-CG2 THR 112.4 1.4
OG1-CB-CG2 THR 110.0 2.3
N-CA-C THR 111.0 2.7
CA-C-O THR 120.1 2.1
N-CA-CB TRP 110.6 1.8
CB-CA-C TRP 110.4 2.0
CA-CB-CG TRP 113.7 1.9
CB-CG-CD1 TRP 127.0 1.3
CB-CG-CD2 TRP 126.6 1.3
CD1-CG-CD2 TRP 106.3 0.8
CG-CD1-NE1 TRP 110.1 1.0
CD1-NE1-CE2 TRP 109.0 0.9
NE1-CE2-CD2 TRP 107.3 1.0
CE2-CD2-CG TRP 107.3 0.8
CG-CD2-CE3 TRP 133.9 0.9
NE1-CE2-CZ2 TRP 130.4 1.1
CE3-CD2-CE2 TRP 118.7 1.2
CD2-CE2-CZ2 TRP 122.3 1.2
CE2-CZ2-CH2 TRP 117.4 1.0
CZ2-CH2-CZ3 TRP 121.6 1.2
CH2-CZ3-CE3 TRP 121.2 1.1
CZ3-CE3-CD2 TRP 118.8 1.3
N-CA-C TRP 111.0 2.7
CA-C-O TRP 120.1 2.1
N-CA-CB TYR 110.6 1.8
CB-CA-C TYR 110.4 2.0
CA-CB-CG TYR 113.4 1.9
CB-CG-CD1 TYR 121.0 0.6
CB-CG-CD2 TYR 121.0 0.6
CD1-CG-CD2 TYR 117.9 1.1
CG-CD1-CE1 TYR 121.3 0.8
CG-CD2-CE2 TYR 121.3 0.8
CD1-CE1-CZ TYR 119.8 0.9
CD2-CE2-CZ TYR 119.8 0.9
CE1-CZ-CE2 TYR 119.8 1.6
CE1-CZ-OH TYR 120.1 2.7
CE2-CZ-OH TYR 120.1 2.7
N-CA-C TYR 111.0 2.7
CA-C-O TYR 120.1 2.1
N-CA-CB VAL 111.5 2.2
CB-CA-C VAL 111.4 1.9
CA-CB-CG1 VAL 110.9 1.5
CA-CB-CG2 VAL 110.9 1.5
CG1-CB-CG2 VAL 110.9 1.6
N-CA-C VAL 111.0 2.7
CA-C-O VAL 120.1 2.1
-
Non-bonded distance Minimum Dist Tolerance
C-C 3.4 1.5
C-N 3.25 1.5
C-S 3.5 1.5
C-O 3.22 1.5
N-N 3.1 1.5
N-S 3.35 1.5
N-O 3.07 1.5
O-S 3.32 1.5
O-O 3.04 1.5
S-S 2.03 1.0
-
================================================
FILE: alphafold/common/testdata/2rbg.pdb
================================================
HEADER STRUCTURAL GENOMICS, UNKNOWN FUNCTION 19-SEP-07 2RBG
TITLE CRYSTAL STRUCTURE OF HYPOTHETICAL PROTEIN(ST0493) FROM
TITLE 2 SULFOLOBUS TOKODAII
COMPND MOL_ID: 1;
COMPND 2 MOLECULE: PUTATIVE UNCHARACTERIZED PROTEIN ST0493;
COMPND 3 CHAIN: A, B;
COMPND 4 ENGINEERED: YES
SOURCE MOL_ID: 1;
SOURCE 2 ORGANISM_SCIENTIFIC: SULFOLOBUS TOKODAII;
SOURCE 3 ORGANISM_TAXID: 111955;
SOURCE 4 STRAIN: STRAIN 7;
SOURCE 5 EXPRESSION_SYSTEM: ESCHERICHIA COLI;
SOURCE 6 EXPRESSION_SYSTEM_TAXID: 562;
SOURCE 7 EXPRESSION_SYSTEM_STRAIN: ROSETTA834(DE3);
SOURCE 8 EXPRESSION_SYSTEM_VECTOR_TYPE: PLASMID;
SOURCE 9 EXPRESSION_SYSTEM_PLASMID: PET-21A
KEYWDS HYPOTHETICAL PROTEIN, STRUCTURAL GENOMICS, UNKNOWN FUNCTION,
KEYWDS 2 NPPSFA, NATIONAL PROJECT ON PROTEIN STRUCTURAL AND
KEYWDS 3 FUNCTIONAL ANALYSES, RIKEN STRUCTURAL GENOMICS/PROTEOMICS
KEYWDS 4 INITIATIVE, RSGI
EXPDTA X-RAY DIFFRACTION
AUTHOR J.JEYAKANTHAN,S.KURAMITSU,S.YOKOYAMA,RIKEN STRUCTURAL
AUTHOR 2 GENOMICS/PROTEOMICS INITIATIVE (RSGI)
REVDAT 2 24-FEB-09 2RBG 1 VERSN
REVDAT 1 30-SEP-08 2RBG 0
JRNL AUTH J.JEYAKANTHAN,S.KURAMITSU,S.YOKOYAMA
JRNL TITL CRYSTAL STRUCTURE OF HYPOTHETICAL PROTEIN(ST0493)
JRNL TITL 2 FROM SULFOLOBUS TOKODAII
JRNL REF TO BE PUBLISHED
JRNL REFN
REMARK 1
REMARK 2
REMARK 2 RESOLUTION. 1.75 ANGSTROMS.
REMARK 3
REMARK 3 REFINEMENT.
REMARK 3 PROGRAM : CNS 1.1
REMARK 3 AUTHORS : BRUNGER,ADAMS,CLORE,DELANO,GROS,GROSSE-
REMARK 3 : KUNSTLEVE,JIANG,KUSZEWSKI,NILGES, PANNU,
REMARK 3 : READ,RICE,SIMONSON,WARREN
REMARK 3
REMARK 3 REFINEMENT TARGET : ENGH & HUBER
REMARK 3
REMARK 3 DATA USED IN REFINEMENT.
REMARK 3 RESOLUTION RANGE HIGH (ANGSTROMS) : 1.75
REMARK 3 RESOLUTION RANGE LOW (ANGSTROMS) : 33.49
REMARK 3 DATA CUTOFF (SIGMA(F)) : 0.000
REMARK 3 DATA CUTOFF HIGH (ABS(F)) : 2067291.840
REMARK 3 DATA CUTOFF LOW (ABS(F)) : 0.0000
REMARK 3 COMPLETENESS (WORKING+TEST) (%) : 99.3
REMARK 3 NUMBER OF REFLECTIONS : 25029
REMARK 3
REMARK 3 FIT TO DATA USED IN REFINEMENT.
REMARK 3 CROSS-VALIDATION METHOD : THROUGHOUT
REMARK 3 FREE R VALUE TEST SET SELECTION : RANDOM
REMARK 3 R VALUE (WORKING SET) : 0.173
REMARK 3 FREE R VALUE : 0.196
REMARK 3 FREE R VALUE TEST SET SIZE (%) : 4.900
REMARK 3 FREE R VALUE TEST SET COUNT : 1216
REMARK 3 ESTIMATED ERROR OF FREE R VALUE : 0.006
REMARK 3
REMARK 3 FIT IN THE HIGHEST RESOLUTION BIN.
REMARK 3 TOTAL NUMBER OF BINS USED : 8
REMARK 3 BIN RESOLUTION RANGE HIGH (A) : 1.75
REMARK 3 BIN RESOLUTION RANGE LOW (A) : 1.83
REMARK 3 BIN COMPLETENESS (WORKING+TEST) (%) : 96.80
REMARK 3 REFLECTIONS IN BIN (WORKING SET) : 2906
REMARK 3 BIN R VALUE (WORKING SET) : 0.1980
REMARK 3 BIN FREE R VALUE : 0.2420
REMARK 3 BIN FREE R VALUE TEST SET SIZE (%) : 5.10
REMARK 3 BIN FREE R VALUE TEST SET COUNT : 156
REMARK 3 ESTIMATED ERROR OF BIN FREE R VALUE : 0.019
REMARK 3
REMARK 3 NUMBER OF NON-HYDROGEN ATOMS USED IN REFINEMENT.
REMARK 3 PROTEIN ATOMS : 2060
REMARK 3 NUCLEIC ACID ATOMS : 0
REMARK 3 HETEROGEN ATOMS : 5
REMARK 3 SOLVENT ATOMS : 316
REMARK 3
REMARK 3 B VALUES.
REMARK 3 FROM WILSON PLOT (A**2) : 13.30
REMARK 3 MEAN B VALUE (OVERALL, A**2) : 16.90
REMARK 3 OVERALL ANISOTROPIC B VALUE.
REMARK 3 B11 (A**2) : 2.81000
REMARK 3 B22 (A**2) : -1.00000
REMARK 3 B33 (A**2) : -1.81000
REMARK 3 B12 (A**2) : 0.00000
REMARK 3 B13 (A**2) : -1.31000
REMARK 3 B23 (A**2) : 0.00000
REMARK 3
REMARK 3 ESTIMATED COORDINATE ERROR.
REMARK 3 ESD FROM LUZZATI PLOT (A) : 0.16
REMARK 3 ESD FROM SIGMAA (A) : 0.06
REMARK 3 LOW RESOLUTION CUTOFF (A) : 5.00
REMARK 3
REMARK 3 CROSS-VALIDATED ESTIMATED COORDINATE ERROR.
REMARK 3 ESD FROM C-V LUZZATI PLOT (A) : 0.19
REMARK 3 ESD FROM C-V SIGMAA (A) : 0.14
REMARK 3
REMARK 3 RMS DEVIATIONS FROM IDEAL VALUES.
REMARK 3 BOND LENGTHS (A) : 0.005
REMARK 3 BOND ANGLES (DEGREES) : 1.10
REMARK 3 DIHEDRAL ANGLES (DEGREES) : 22.00
REMARK 3 IMPROPER ANGLES (DEGREES) : 0.70
REMARK 3
REMARK 3 ISOTROPIC THERMAL MODEL : RESTRAINED
REMARK 3
REMARK 3 ISOTROPIC THERMAL FACTOR RESTRAINTS. RMS SIGMA
REMARK 3 MAIN-CHAIN BOND (A**2) : NULL ; NULL
REMARK 3 MAIN-CHAIN ANGLE (A**2) : NULL ; NULL
REMARK 3 SIDE-CHAIN BOND (A**2) : NULL ; NULL
REMARK 3 SIDE-CHAIN ANGLE (A**2) : NULL ; NULL
REMARK 3
REMARK 3 BULK SOLVENT MODELING.
REMARK 3 METHOD USED : FLAT MODEL
REMARK 3 KSOL : 0.37
REMARK 3 BSOL : 51.20
REMARK 3
REMARK 3 NCS MODEL : NULL
REMARK 3
REMARK 3 NCS RESTRAINTS. RMS SIGMA/WEIGHT
REMARK 3 GROUP 1 POSITIONAL (A) : NULL ; NULL
REMARK 3 GROUP 1 B-FACTOR (A**2) : NULL ; NULL
REMARK 3
REMARK 3 PARAMETER FILE 1 : PROTEIN_REP.PARAM
REMARK 3 PARAMETER FILE 2 : LIGAND.PARAM
REMARK 3 PARAMETER FILE 3 : ION.PARAM
REMARK 3 PARAMETER FILE 5 : WATER_REP.PARAM
REMARK 3 PARAMETER FILE 6 : NULL
REMARK 3 TOPOLOGY FILE 1 : PROTEIN.TOP
REMARK 3 TOPOLOGY FILE 2 : LIGAND.TOP
REMARK 3 TOPOLOGY FILE 3 : ION.TOP
REMARK 3 TOPOLOGY FILE 5 : WATER_PROTIN.TOP
REMARK 3 TOPOLOGY FILE 6 : NULL
REMARK 3
REMARK 3 OTHER REFINEMENT REMARKS: NULL
REMARK 4
REMARK 4 2RBG COMPLIES WITH FORMAT V. 3.15, 01-DEC-08
REMARK 100
REMARK 100 THIS ENTRY HAS BEEN PROCESSED BY PDBJ ON 27-SEP-07.
REMARK 100 THE RCSB ID CODE IS RCSB044658.
REMARK 200
REMARK 200 EXPERIMENTAL DETAILS
REMARK 200 EXPERIMENT TYPE : X-RAY DIFFRACTION
REMARK 200 DATE OF DATA COLLECTION : 16-JUN-07
REMARK 200 TEMPERATURE (KELVIN) : 100
REMARK 200 PH : 7.5
REMARK 200 NUMBER OF CRYSTALS USED : 1
REMARK 200
REMARK 200 SYNCHROTRON (Y/N) : Y
REMARK 200 RADIATION SOURCE : SPRING-8
REMARK 200 BEAMLINE : BL26B2
REMARK 200 X-RAY GENERATOR MODEL : NULL
REMARK 200 MONOCHROMATIC OR LAUE (M/L) : M
REMARK 200 WAVELENGTH OR RANGE (A) : 0.97899, 0.9, 0.97931
REMARK 200 MONOCHROMATOR : SI-1 1 1 DOUBLE CRYSTAL
REMARK 200 MONOCHROMATOR
REMARK 200 OPTICS : RH COATED BENT-CYRINDRICAL
REMARK 200 MIRROR
REMARK 200
REMARK 200 DETECTOR TYPE : CCD
REMARK 200 DETECTOR MANUFACTURER : MARMOSAIC 225 MM CCD
REMARK 200 INTENSITY-INTEGRATION SOFTWARE : HKL-2000
REMARK 200 DATA SCALING SOFTWARE : SCALEPACK
REMARK 200
REMARK 200 NUMBER OF UNIQUE REFLECTIONS : 25105
REMARK 200 RESOLUTION RANGE HIGH (A) : 1.750
REMARK 200 RESOLUTION RANGE LOW (A) : 50.000
REMARK 200 REJECTION CRITERIA (SIGMA(I)) : NULL
REMARK 200
REMARK 200 OVERALL.
REMARK 200 COMPLETENESS FOR RANGE (%) : 99.6
REMARK 200 DATA REDUNDANCY : NULL
REMARK 200 R MERGE (I) : 0.05900
REMARK 200 R SYM (I) : 0.06300
REMARK 200 <I/SIGMA(I)> FOR THE DATA SET : NULL
REMARK 200
REMARK 200 IN THE HIGHEST RESOLUTION SHELL.
REMARK 200 HIGHEST RESOLUTION SHELL, RANGE HIGH (A) : 1.75
REMARK 200 HIGHEST RESOLUTION SHELL, RANGE LOW (A) : 1.81
REMARK 200 COMPLETENESS FOR SHELL (%) : 96.9
REMARK 200 DATA REDUNDANCY IN SHELL : NULL
REMARK 200 R MERGE FOR SHELL (I) : 0.14300
REMARK 200 R SYM FOR SHELL (I) : 0.13300
REMARK 200 <I/SIGMA(I)> FOR SHELL : NULL
REMARK 200
REMARK 200 DIFFRACTION PROTOCOL: MAD
REMARK 200 METHOD USED TO DETERMINE THE STRUCTURE: MAD
REMARK 200 SOFTWARE USED: SOLVE
REMARK 200 STARTING MODEL: NULL
REMARK 200
REMARK 200 REMARK: NULL
REMARK 280
REMARK 280 CRYSTAL
REMARK 280 SOLVENT CONTENT, VS (%): 41.69
REMARK 280 MATTHEWS COEFFICIENT, VM (ANGSTROMS**3/DA): 2.11
REMARK 280
REMARK 280 CRYSTALLIZATION CONDITIONS: 30% PEG 4K, 0.2M AMMONIUM SULFATE,
REMARK 280 PH 7.5, MICROBATCH, TEMPERATURE 293K
REMARK 290
REMARK 290 CRYSTALLOGRAPHIC SYMMETRY
REMARK 290 SYMMETRY OPERATORS FOR SPACE GROUP: P 1 21 1
REMARK 290
REMARK 290 SYMOP SYMMETRY
REMARK 290 NNNMMM OPERATOR
REMARK 290 1555 X,Y,Z
REMARK 290 2555 -X,Y+1/2,-Z
REMARK 290
REMARK 290 WHERE NNN -> OPERATOR NUMBER
REMARK 290 MMM -> TRANSLATION VECTOR
REMARK 290
REMARK 290 CRYSTALLOGRAPHIC SYMMETRY TRANSFORMATIONS
REMARK 290 THE FOLLOWING TRANSFORMATIONS OPERATE ON THE ATOM/HETATM
REMARK 290 RECORDS IN THIS ENTRY TO PRODUCE CRYSTALLOGRAPHICALLY
REMARK 290 RELATED MOLECULES.
REMARK 290 SMTRY1 1 1.000000 0.000000 0.000000 0.00000
REMARK 290 SMTRY2 1 0.000000 1.000000 0.000000 0.00000
REMARK 290 SMTRY3 1 0.000000 0.000000 1.000000 0.00000
REMARK 290 SMTRY1 2 -1.000000 0.000000 0.000000 0.00000
REMARK 290 SMTRY2 2 0.000000 1.000000 0.000000 32.59200
REMARK 290 SMTRY3 2 0.000000 0.000000 -1.000000 0.00000
REMARK 290
REMARK 290 REMARK: NULL
REMARK 300
REMARK 300 BIOMOLECULE: 1, 2, 3
REMARK 300 SEE REMARK 350 FOR THE AUTHOR PROVIDED AND/OR PROGRAM
REMARK 300 GENERATED ASSEMBLY INFORMATION FOR THE STRUCTURE IN
REMARK 300 THIS ENTRY. THE REMARK MAY ALSO PROVIDE INFORMATION ON
REMARK 300 BURIED SURFACE AREA.
REMARK 350
REMARK 350 COORDINATES FOR A COMPLETE MULTIMER REPRESENTING THE KNOWN
REMARK 350 BIOLOGICALLY SIGNIFICANT OLIGOMERIZATION STATE OF THE
REMARK 350 MOLECULE CAN BE GENERATED BY APPLYING BIOMT TRANSFORMATIONS
REMARK 350 GIVEN BELOW. BOTH NON-CRYSTALLOGRAPHIC AND
REMARK 350 CRYSTALLOGRAPHIC OPERATIONS ARE GIVEN.
REMARK 350
REMARK 350 BIOMOLECULE: 1
REMARK 350 AUTHOR DETERMINED BIOLOGICAL UNIT: DIMERIC
REMARK 350 APPLY THE FOLLOWING TO CHAINS: A, B
REMARK 350 BIOMT1 1 1.000000 0.000000 0.000000 0.00000
REMARK 350 BIOMT2 1 0.000000 1.000000 0.000000 0.00000
REMARK 350 BIOMT3 1 0.000000 0.000000 1.000000 0.00000
REMARK 350
REMARK 350 BIOMOLECULE: 2
REMARK 350 SOFTWARE DETERMINED QUATERNARY STRUCTURE: MONOMERIC
REMARK 350 SOFTWARE USED: PISA
REMARK 350 APPLY THE FOLLOWING TO CHAINS: A
REMARK 350 BIOMT1 1 1.000000 0.000000 0.000000 0.00000
REMARK 350 BIOMT2 1 0.000000 1.000000 0.000000 0.00000
REMARK 350 BIOMT3 1 0.000000 0.000000 1.000000 0.00000
REMARK 350
REMARK 350 BIOMOLECULE: 3
REMARK 350 SOFTWARE DETERMINED QUATERNARY STRUCTURE: MONOMERIC
REMARK 350 SOFTWARE USED: PISA
REMARK 350 APPLY THE FOLLOWING TO CHAINS: B
REMARK 350 BIOMT1 1 1.000000 0.000000 0.000000 0.00000
REMARK 350 BIOMT2 1 0.000000 1.000000 0.000000 0.00000
REMARK 350 BIOMT3 1 0.000000 0.000000 1.000000 0.00000
REMARK 465
REMARK 465 MISSING RESIDUES
REMARK 465 THE FOLLOWING RESIDUES WERE NOT LOCATED IN THE
REMARK 465 EXPERIMENT. (M=MODEL NUMBER; RES=RESIDUE NAME; C=CHAIN
REMARK 465 IDENTIFIER; SSSEQ=SEQUENCE NUMBER; I=INSERTION CODE.)
REMARK 465
REMARK 465 M RES C SSSEQI
REMARK 465 MSE A 1
REMARK 465 PRO A 2
REMARK 465 MSE B 1
REMARK 465 PRO B 2
REMARK 500
REMARK 500 GEOMETRY AND STEREOCHEMISTRY
REMARK 500 SUBTOPIC: TORSION ANGLES
REMARK 500
REMARK 500 TORSION ANGLES OUTSIDE THE EXPECTED RAMACHANDRAN REGIONS:
REMARK 500 (M=MODEL NUMBER; RES=RESIDUE NAME; C=CHAIN IDENTIFIER;
REMARK 500 SSEQ=SEQUENCE NUMBER; I=INSERTION CODE).
REMARK 500
REMARK 500 STANDARD TABLE:
REMARK 500 FORMAT:(10X,I3,1X,A3,1X,A1,I4,A1,4X,F7.2,3X,F7.2)
REMARK 500
REMARK 500 EXPECTED VALUES: GJ KLEYWEGT AND TA JONES (1996). PHI/PSI-
REMARK 500 CHOLOGY: RAMACHANDRAN REVISITED. STRUCTURE 4, 1395 - 1400
REMARK 500
REMARK 500 M RES CSSEQI PSI PHI
REMARK 500 PHE A 121 76.88 -102.11
REMARK 500 CYS A 122 -73.41 -165.90
REMARK 500 CYS B 122 -70.28 -161.68
REMARK 500
REMARK 500 REMARK: NULL
REMARK 800
REMARK 800 SITE
REMARK 800 SITE_IDENTIFIER: AC1
REMARK 800 EVIDENCE_CODE: SOFTWARE
REMARK 800 SITE_DESCRIPTION: BINDING SITE FOR RESIDUE SO4 B 127
REMARK 900
REMARK 900 RELATED ENTRIES
REMARK 900 RELATED ID: STO001000493.1 RELATED DB: TARGETDB
DBREF 2RBG A 1 126 UNP Q975B5 Q975B5_SULTO 1 126
DBREF 2RBG B 1 126 UNP Q975B5 Q975B5_SULTO 1 126
SEQRES 1 A 126 MSE PRO TYR LYS ASN ILE LEU THR LEU ILE SER VAL ASN
SEQRES 2 A 126 ASN ASP ASN PHE GLU ASN TYR PHE ARG LYS ILE PHE LEU
SEQRES 3 A 126 ASP VAL ARG SER SER GLY SER LYS LYS THR THR ILE ASN
SEQRES 4 A 126 VAL PHE THR GLU ILE GLN TYR GLN GLU LEU VAL THR LEU
SEQRES 5 A 126 ILE ARG GLU ALA LEU LEU GLU ASN ILE ASP ILE GLY TYR
SEQRES 6 A 126 GLU LEU PHE LEU TRP LYS LYS ASN GLU VAL ASP ILE PHE
SEQRES 7 A 126 LEU LYS ASN LEU GLU LYS SER GLU VAL ASP GLY LEU LEU
SEQRES 8 A 126 VAL TYR CYS ASP ASP GLU ASN LYS VAL PHE MSE SER LYS
SEQRES 9 A 126 ILE VAL ASP ASN LEU PRO THR ALA ILE LYS ARG ASN LEU
SEQRES 10 A 126 ILE LYS ASP PHE CYS ARG LYS LEU SER
SEQRES 1 B 126 MSE PRO TYR LYS ASN ILE LEU THR LEU ILE SER VAL ASN
SEQRES 2 B 126 ASN ASP ASN PHE GLU ASN TYR PHE ARG LYS ILE PHE LEU
SEQRES 3 B 126 ASP VAL ARG SER SER GLY SER LYS LYS THR THR ILE ASN
SEQRES 4 B 126 VAL PHE THR GLU ILE GLN TYR GLN GLU LEU VAL THR LEU
SEQRES 5 B 126 ILE ARG GLU ALA LEU LEU GLU ASN ILE ASP ILE GLY TYR
SEQRES 6 B 126 GLU LEU PHE LEU TRP LYS LYS ASN GLU VAL ASP ILE PHE
SEQRES 7 B 126 LEU LYS ASN LEU GLU LYS SER GLU VAL ASP GLY LEU LEU
SEQRES 8 B 126 VAL TYR CYS ASP ASP GLU ASN LYS VAL PHE MSE SER LYS
SEQRES 9 B 126 ILE VAL ASP ASN LEU PRO THR ALA ILE LYS ARG ASN LEU
SEQRES 10 B 126 ILE LYS ASP PHE CYS ARG LYS LEU SER
MODRES 2RBG MSE A 102 MET SELENOMETHIONINE
MODRES 2RBG MSE B 102 MET SELENOMETHIONINE
HET MSE A 102 8
HET MSE B 102 8
HET SO4 B 127 5
HETNAM MSE SELENOMETHIONINE
HETNAM SO4 SULFATE ION
FORMUL 1 MSE 2(C5 H11 N O2 SE)
FORMUL 3 SO4 O4 S 2-
FORMUL 4 HOH *316(H2 O)
HELIX 1 1 ASN A 13 ASP A 15 5 3
HELIX 2 2 ASN A 16 GLY A 32 1 17
HELIX 3 3 GLN A 45 ILE A 53 1 9
HELIX 4 4 ILE A 53 ASN A 60 1 8
HELIX 5 5 LYS A 71 ASN A 73 5 3
HELIX 6 6 GLU A 74 GLU A 83 1 10
HELIX 7 7 ASN A 98 ASN A 108 1 11
HELIX 8 8 PRO A 110 ARG A 115 1 6
HELIX 9 9 ASN B 13 ASP B 15 5 3
HELIX 10 10 ASN B 16 GLY B 32 1 17
HELIX 11 11 GLN B 45 ILE B 53 1 9
HELIX 12 12 ILE B 53 GLU B 59 1 7
HELIX 13 13 LYS B 71 ASN B 73 5 3
HELIX 14 14 GLU B 74 LEU B 82 1 9
HELIX 15 15 GLU B 83 SER B 85 5 3
HELIX 16 16 ASN B 98 ASN B 108 1 11
HELIX 17 17 PRO B 110 ASN B 116 1 7
SHEET 1 A 5 GLY A 64 TRP A 70 0
SHEET 2 A 5 LYS A 35 PHE A 41 1 N VAL A 40 O PHE A 68
SHEET 3 A 5 ILE A 6 SER A 11 1 N THR A 8 O ASN A 39
SHEET 4 A 5 GLY A 89 CYS A 94 1 O GLY A 89 N LEU A 7
SHEET 5 A 5 LEU A 117 PHE A 121 1 O ILE A 118 N LEU A 90
SHEET 1 B 5 GLY B 64 TRP B 70 0
SHEET 2 B 5 LYS B 35 PHE B 41 1 N VAL B 40 O TRP B 70
SHEET 3 B 5 ILE B 6 SER B 11 1 N THR B 8 O ASN B 39
SHEET 4 B 5 GLY B 89 CYS B 94 1 O GLY B 89 N LEU B 7
SHEET 5 B 5 LEU B 117 PHE B 121 1 O ILE B 118 N LEU B 90
SSBOND 1 CYS A 94 CYS A 122 1555 1555 2.03
SSBOND 2 CYS B 94 CYS B 122 1555 1555 2.03
LINK C PHE A 101 N MSE A 102 1555 1555 1.33
LINK C MSE A 102 N SER A 103 1555 1555 1.33
LINK C PHE B 101 N MSE B 102 1555 1555 1.33
LINK C MSE B 102 N SER B 103 1555 1555 1.33
SITE 1 AC1 5 GLU B 18 ARG B 22 GLU B 55 HOH B 217
SITE 2 AC1 5 HOH B 234
CRYST1 39.444 65.184 49.604 90.00 98.19 90.00 P 1 21 1 4
ORIGX1 1.000000 0.000000 0.000000 0.00000
ORIGX2 0.000000 1.000000 0.000000 0.00000
ORIGX3 0.000000 0.000000 1.000000 0.00000
SCALE1 0.025352 0.000000 0.003650 0.00000
SCALE2 0.000000 0.015341 0.000000 0.00000
SCALE3 0.000000 0.000000 0.020368 0.00000
ATOM 1 N TYR A 3 33.471 9.062 24.101 1.00 24.34 N
ATOM 2 CA TYR A 3 32.068 8.798 23.671 1.00 22.76 C
ATOM 3 C TYR A 3 31.421 10.059 23.108 1.00 22.12 C
ATOM 4 O TYR A 3 31.551 11.144 23.678 1.00 23.86 O
ATOM 5 CB TYR A 3 31.252 8.265 24.852 1.00 22.59 C
ATOM 6 CG TYR A 3 31.720 6.909 25.338 1.00 23.54 C
ATOM 7 CD1 TYR A 3 32.254 6.746 26.616 1.00 23.82 C
ATOM 8 CD2 TYR A 3 31.647 5.792 24.508 1.00 23.93 C
ATOM 9 CE1 TYR A 3 32.705 5.500 27.055 1.00 25.31 C
ATOM 10 CE2 TYR A 3 32.095 4.544 24.936 1.00 22.68 C
ATOM 11 CZ TYR A 3 32.622 4.405 26.208 1.00 25.21 C
ATOM 12 OH TYR A 3 33.070 3.171 26.625 1.00 27.53 O
ATOM 13 N LYS A 4 30.720 9.903 21.989 1.00 18.90 N
ATOM 14 CA LYS A 4 30.060 11.019 21.317 1.00 18.65 C
ATOM 15 C LYS A 4 28.537 10.918 21.313 1.00 15.20 C
ATOM 16 O LYS A 4 27.850 11.932 21.232 1.00 13.13 O
ATOM 17 CB LYS A 4 30.555 11.114 19.870 1.00 21.41 C
ATOM 18 CG LYS A 4 32.064 11.283 19.734 1.00 32.01 C
ATOM 19 CD LYS A 4 32.527 12.652 20.213 1.00 36.58 C
ATOM 20 CE LYS A 4 32.002 13.760 19.311 1.00 39.57 C
ATOM 21 NZ LYS A 4 32.463 15.105 19.752 1.00 43.99 N
ATOM 22 N ASN A 5 28.009 9.699 21.374 1.00 13.77 N
ATOM 23 CA ASN A 5 26.560 9.508 21.373 1.00 13.94 C
ATOM 24 C ASN A 5 26.217 8.213 22.092 1.00 14.07 C
ATOM 25 O ASN A 5 26.368 7.121 21.548 1.00 13.93 O
ATOM 26 CB ASN A 5 26.022 9.489 19.936 1.00 15.07 C
ATOM 27 CG ASN A 5 24.503 9.457 19.879 1.00 19.05 C
ATOM 28 OD1 ASN A 5 23.826 10.028 20.734 1.00 18.93 O
ATOM 29 ND2 ASN A 5 23.960 8.805 18.857 1.00 23.13 N
ATOM 30 N ILE A 6 25.749 8.359 23.324 1.00 12.56 N
ATOM 31 CA ILE A 6 25.398 7.232 24.174 1.00 10.81 C
ATOM 32 C ILE A 6 24.026 6.636 23.871 1.00 9.05 C
ATOM 33 O ILE A 6 23.032 7.360 23.784 1.00 10.03 O
ATOM 34 CB ILE A 6 25.409 7.661 25.661 1.00 10.42 C
ATOM 35 CG1 ILE A 6 26.761 8.291 26.015 1.00 14.05 C
ATOM 36 CG2 ILE A 6 25.114 6.465 26.555 1.00 10.54 C
ATOM 37 CD1 ILE A 6 27.942 7.352 25.864 1.00 13.83 C
ATOM 38 N LEU A 7 23.978 5.317 23.695 1.00 7.97 N
ATOM 39 CA LEU A 7 22.708 4.638 23.468 1.00 7.84 C
ATOM 40 C LEU A 7 22.167 4.341 24.862 1.00 6.49 C
ATOM 41 O LEU A 7 22.786 3.598 25.623 1.00 7.93 O
ATOM 42 CB LEU A 7 22.901 3.315 22.724 1.00 7.80 C
ATOM 43 CG LEU A 7 21.627 2.465 22.610 1.00 8.47 C
ATOM 44 CD1 LEU A 7 20.587 3.198 21.769 1.00 8.00 C
ATOM 45 CD2 LEU A 7 21.961 1.115 21.988 1.00 10.59 C
ATOM 46 N THR A 8 21.029 4.936 25.201 1.00 5.70 N
ATOM 47 CA THR A 8 20.419 4.719 26.508 1.00 6.42 C
ATOM 48 C THR A 8 19.137 3.917 26.352 1.00 6.87 C
ATOM 49 O THR A 8 18.243 4.298 25.595 1.00 7.76 O
ATOM 50 CB THR A 8 20.101 6.061 27.208 1.00 6.58 C
ATOM 51 OG1 THR A 8 21.328 6.729 27.538 1.00 7.53 O
ATOM 52 CG2 THR A 8 19.310 5.826 28.490 1.00 7.99 C
ATOM 53 N LEU A 9 19.067 2.792 27.057 1.00 7.67 N
ATOM 54 CA LEU A 9 17.898 1.930 27.012 1.00 8.24 C
ATOM 55 C LEU A 9 17.289 1.878 28.404 1.00 8.48 C
ATOM 56 O LEU A 9 18.000 1.681 29.391 1.00 7.88 O
ATOM 57 CB LEU A 9 18.293 0.514 26.583 1.00 9.90 C
ATOM 58 CG LEU A 9 19.140 0.391 25.315 1.00 11.56 C
ATOM 59 CD1 LEU A 9 19.413 -1.082 25.031 1.00 10.95 C
ATOM 60 CD2 LEU A 9 18.418 1.039 24.145 1.00 10.46 C
ATOM 61 N ILE A 10 15.976 2.056 28.484 1.00 7.53 N
ATOM 62 CA ILE A 10 15.301 2.010 29.771 1.00 7.34 C
ATOM 63 C ILE A 10 13.911 1.408 29.690 1.00 8.82 C
ATOM 64 O ILE A 10 13.146 1.683 28.767 1.00 10.17 O
ATOM 65 CB ILE A 10 15.190 3.420 30.412 1.00 8.96 C
ATOM 66 CG1 ILE A 10 14.388 3.338 31.717 1.00 7.62 C
ATOM 67 CG2 ILE A 10 14.524 4.392 29.433 1.00 9.63 C
ATOM 68 CD1 ILE A 10 14.445 4.613 32.566 1.00 11.33 C
ATOM 69 N SER A 11 13.605 0.560 30.664 1.00 8.33 N
ATOM 70 CA SER A 11 12.297 -0.060 30.761 1.00 10.47 C
ATOM 71 C SER A 11 11.962 -0.145 32.245 1.00 9.11 C
ATOM 72 O SER A 11 12.520 -0.964 32.972 1.00 11.58 O
ATOM 73 CB SER A 11 12.300 -1.457 30.143 1.00 13.19 C
ATOM 74 OG SER A 11 10.990 -1.998 30.156 1.00 19.72 O
ATOM 75 N VAL A 12 11.067 0.730 32.687 1.00 11.21 N
ATOM 76 CA VAL A 12 10.643 0.770 34.081 1.00 11.41 C
ATOM 77 C VAL A 12 9.161 1.098 34.156 1.00 15.63 C
ATOM 78 O VAL A 12 8.563 1.528 33.170 1.00 16.75 O
ATOM 79 CB VAL A 12 11.402 1.858 34.886 1.00 11.30 C
ATOM 80 CG1 VAL A 12 12.884 1.530 34.945 1.00 8.11 C
ATOM 81 CG2 VAL A 12 11.178 3.230 34.255 1.00 12.03 C
ATOM 82 N ASN A 13 8.575 0.887 35.330 1.00 17.25 N
ATOM 83 CA ASN A 13 7.170 1.200 35.547 1.00 20.47 C
ATOM 84 C ASN A 13 7.075 2.724 35.563 1.00 19.38 C
ATOM 85 O ASN A 13 8.061 3.404 35.845 1.00 18.17 O
ATOM 86 CB ASN A 13 6.700 0.622 36.885 1.00 23.13 C
ATOM 87 CG ASN A 13 6.713 -0.895 36.900 1.00 31.36 C
ATOM 88 OD1 ASN A 13 6.035 -1.541 36.099 1.00 36.96 O
ATOM 89 ND2 ASN A 13 7.484 -1.472 37.817 1.00 34.18 N
ATOM 90 N ASN A 14 5.896 3.259 35.266 1.00 18.03 N
ATOM 91 CA ASN A 14 5.707 4.707 35.224 1.00 19.51 C
ATOM 92 C ASN A 14 6.148 5.468 36.472 1.00 20.09 C
ATOM 93 O ASN A 14 6.659 6.582 36.372 1.00 20.91 O
ATOM 94 CB ASN A 14 4.242 5.048 34.941 1.00 20.73 C
ATOM 95 CG ASN A 14 3.742 4.437 33.653 1.00 23.53 C
ATOM 96 OD1 ASN A 14 4.496 4.276 32.696 1.00 22.26 O
ATOM 97 ND2 ASN A 14 2.456 4.108 33.615 1.00 26.38 N
ATOM 98 N ASP A 15 5.954 4.876 37.645 1.00 20.00 N
ATOM 99 CA ASP A 15 6.319 5.543 38.890 1.00 23.11 C
ATOM 100 C ASP A 15 7.828 5.697 39.071 1.00 20.27 C
ATOM 101 O ASP A 15 8.275 6.420 39.958 1.00 21.58 O
ATOM 102 CB ASP A 15 5.736 4.783 40.086 1.00 23.65 C
ATOM 103 CG ASP A 15 6.495 3.509 40.394 1.00 33.42 C
ATOM 104 OD1 ASP A 15 6.862 2.787 39.443 1.00 37.24 O
ATOM 105 OD2 ASP A 15 6.719 3.222 41.591 1.00 40.07 O
ATOM 106 N ASN A 16 8.607 5.025 38.228 1.00 17.28 N
ATOM 107 CA ASN A 16 10.063 5.089 38.322 1.00 16.22 C
ATOM 108 C ASN A 16 10.757 6.035 37.343 1.00 17.13 C
ATOM 109 O ASN A 16 11.960 6.258 37.458 1.00 15.71 O
ATOM 110 CB ASN A 16 10.670 3.691 38.150 1.00 18.31 C
ATOM 111 CG ASN A 16 10.692 2.896 39.440 1.00 21.25 C
ATOM 112 OD1 ASN A 16 11.056 3.416 40.495 1.00 23.56 O
ATOM 113 ND2 ASN A 16 10.323 1.623 39.357 1.00 19.07 N
ATOM 114 N PHE A 17 10.020 6.598 36.392 1.00 14.63 N
ATOM 115 CA PHE A 17 10.641 7.486 35.409 1.00 14.77 C
ATOM 116 C PHE A 17 11.409 8.670 35.984 1.00 14.87 C
ATOM 117 O PHE A 17 12.552 8.913 35.604 1.00 9.25 O
ATOM 118 CB PHE A 17 9.602 7.998 34.404 1.00 12.16 C
ATOM 119 CG PHE A 17 9.216 6.987 33.365 1.00 11.38 C
ATOM 120 CD1 PHE A 17 10.192 6.337 32.614 1.00 13.83 C
ATOM 121 CD2 PHE A 17 7.878 6.680 33.135 1.00 14.52 C
ATOM 122 CE1 PHE A 17 9.842 5.393 31.649 1.00 14.54 C
ATOM 123 CE2 PHE A 17 7.518 5.740 32.174 1.00 14.67 C
ATOM 124 CZ PHE A 17 8.500 5.095 31.429 1.00 14.46 C
ATOM 125 N GLU A 18 10.792 9.411 36.897 1.00 16.23 N
ATOM 126 CA GLU A 18 11.464 10.565 37.475 1.00 16.73 C
ATOM 127 C GLU A 18 12.805 10.207 38.106 1.00 16.00 C
ATOM 128 O GLU A 18 13.818 10.842 37.814 1.00 16.65 O
ATOM 129 CB GLU A 18 10.557 11.247 38.505 1.00 23.36 C
ATOM 130 CG GLU A 18 9.338 11.909 37.879 1.00 30.35 C
ATOM 131 CD GLU A 18 8.469 12.633 38.889 1.00 37.35 C
ATOM 132 OE1 GLU A 18 8.971 13.562 39.558 1.00 37.02 O
ATOM 133 OE2 GLU A 18 7.280 12.273 39.010 1.00 40.39 O
ATOM 134 N ASN A 19 12.816 9.184 38.954 1.00 16.87 N
ATOM 135 CA ASN A 19 14.049 8.770 39.618 1.00 15.97 C
ATOM 136 C ASN A 19 15.094 8.227 38.649 1.00 15.31 C
ATOM 137 O ASN A 19 16.278 8.557 38.756 1.00 13.61 O
ATOM 138 CB ASN A 19 13.761 7.713 40.690 1.00 19.94 C
ATOM 139 CG ASN A 19 12.921 8.251 41.831 1.00 26.59 C
ATOM 140 OD1 ASN A 19 13.143 9.361 42.313 1.00 28.74 O
ATOM 141 ND2 ASN A 19 11.958 7.454 42.283 1.00 31.96 N
ATOM 142 N TYR A 20 14.667 7.395 37.705 1.00 9.62 N
ATOM 143 CA TYR A 20 15.612 6.830 36.750 1.00 8.42 C
ATOM 144 C TYR A 20 16.193 7.835 35.765 1.00 10.15 C
ATOM 145 O TYR A 20 17.354 7.718 35.390 1.00 8.97 O
ATOM 146 CB TYR A 20 14.988 5.667 35.975 1.00 8.90 C
ATOM 147 CG TYR A 20 15.099 4.331 36.683 1.00 11.47 C
ATOM 148 CD1 TYR A 20 14.377 4.074 37.848 1.00 11.36 C
ATOM 149 CD2 TYR A 20 15.916 3.319 36.178 1.00 9.86 C
ATOM 150 CE1 TYR A 20 14.461 2.838 38.488 1.00 10.09 C
ATOM 151 CE2 TYR A 20 16.008 2.080 36.808 1.00 11.95 C
ATOM 152 CZ TYR A 20 15.272 1.847 37.965 1.00 10.22 C
ATOM 153 OH TYR A 20 15.329 0.615 38.579 1.00 12.19 O
ATOM 154 N PHE A 21 15.407 8.817 35.331 1.00 10.83 N
ATOM 155 CA PHE A 21 15.961 9.786 34.396 1.00 10.37 C
ATOM 156 C PHE A 21 17.015 10.652 35.066 1.00 9.86 C
ATOM 157 O PHE A 21 17.893 11.207 34.403 1.00 10.68 O
ATOM 158 CB PHE A 21 14.863 10.640 33.760 1.00 10.02 C
ATOM 159 CG PHE A 21 14.380 10.090 32.448 1.00 9.94 C
ATOM 160 CD1 PHE A 21 13.536 8.984 32.413 1.00 10.87 C
ATOM 161 CD2 PHE A 21 14.844 10.618 31.247 1.00 11.58 C
ATOM 162 CE1 PHE A 21 13.166 8.405 31.199 1.00 10.52 C
ATOM 163 CE2 PHE A 21 14.479 10.046 30.021 1.00 12.43 C
ATOM 164 CZ PHE A 21 13.640 8.937 29.999 1.00 11.64 C
ATOM 165 N ARG A 22 16.937 10.756 36.386 1.00 10.63 N
ATOM 166 CA ARG A 22 17.930 11.519 37.121 1.00 12.46 C
ATOM 167 C ARG A 22 19.243 10.741 36.990 1.00 12.16 C
ATOM 168 O ARG A 22 20.314 11.326 36.831 1.00 12.50 O
ATOM 169 CB ARG A 22 17.521 11.653 38.592 1.00 12.81 C
ATOM 170 CG ARG A 22 18.512 12.441 39.436 1.00 17.97 C
ATOM 171 CD ARG A 22 18.033 12.635 40.873 1.00 15.56 C
ATOM 172 NE ARG A 22 16.944 13.605 40.993 1.00 15.48 N
ATOM 173 CZ ARG A 22 16.484 14.056 42.158 1.00 17.00 C
ATOM 174 NH1 ARG A 22 17.020 13.622 43.293 1.00 13.10 N
ATOM 175 NH2 ARG A 22 15.495 14.941 42.195 1.00 16.86 N
ATOM 176 N LYS A 23 19.150 9.414 37.040 1.00 9.11 N
ATOM 177 CA LYS A 23 20.330 8.562 36.910 1.00 8.13 C
ATOM 178 C LYS A 23 20.899 8.647 35.497 1.00 8.65 C
ATOM 179 O LYS A 23 22.109 8.744 35.305 1.00 11.79 O
ATOM 180 CB LYS A 23 19.983 7.099 37.206 1.00 10.36 C
ATOM 181 CG LYS A 23 19.601 6.794 38.646 1.00 10.87 C
ATOM 182 CD LYS A 23 19.398 5.289 38.832 1.00 14.62 C
ATOM 183 CE LYS A 23 19.222 4.926 40.294 1.00 23.04 C
ATOM 184 NZ LYS A 23 20.438 5.264 41.088 1.00 16.09 N
ATOM 185 N ILE A 24 20.015 8.600 34.505 1.00 7.43 N
ATOM 186 CA ILE A 24 20.443 8.660 33.116 1.00 6.12 C
ATOM 187 C ILE A 24 21.374 9.834 32.842 1.00 8.47 C
ATOM 188 O ILE A 24 22.446 9.661 32.271 1.00 9.39 O
ATOM 189 CB ILE A 24 19.226 8.750 32.168 1.00 6.49 C
ATOM 190 CG1 ILE A 24 18.475 7.414 32.183 1.00 5.04 C
ATOM 191 CG2 ILE A 24 19.684 9.104 30.748 1.00 7.14 C
ATOM 192 CD1 ILE A 24 17.160 7.432 31.432 1.00 5.89 C
ATOM 193 N PHE A 25 20.976 11.031 33.254 1.00 8.27 N
ATOM 194 CA PHE A 25 21.814 12.192 32.991 1.00 10.11 C
ATOM 195 C PHE A 25 23.098 12.230 33.813 1.00 8.55 C
ATOM 196 O PHE A 25 24.106 12.772 33.361 1.00 9.67 O
ATOM 197 CB PHE A 25 20.985 13.470 33.142 1.00 9.31 C
ATOM 198 CG PHE A 25 20.000 13.667 32.016 1.00 11.97 C
ATOM 199 CD1 PHE A 25 20.452 13.926 30.721 1.00 13.37 C
ATOM 200 CD2 PHE A 25 18.635 13.523 32.230 1.00 12.47 C
ATOM 201 CE1 PHE A 25 19.556 14.034 29.657 1.00 12.22 C
ATOM 202 CE2 PHE A 25 17.728 13.627 31.173 1.00 15.03 C
ATOM 203 CZ PHE A 25 18.193 13.883 29.883 1.00 13.24 C
ATOM 204 N LEU A 26 23.077 11.647 35.008 1.00 8.53 N
ATOM 205 CA LEU A 26 24.284 11.592 35.825 1.00 10.27 C
ATOM 206 C LEU A 26 25.305 10.752 35.054 1.00 7.43 C
ATOM 207 O LEU A 26 26.474 11.116 34.935 1.00 8.43 O
ATOM 208 CB LEU A 26 24.005 10.915 37.172 1.00 12.37 C
ATOM 209 CG LEU A 26 23.874 11.773 38.432 1.00 23.05 C
ATOM 210 CD1 LEU A 26 22.666 12.653 38.319 1.00 28.50 C
ATOM 211 CD2 LEU A 26 23.748 10.880 39.654 1.00 23.45 C
ATOM 212 N ASP A 27 24.847 9.626 34.519 1.00 8.78 N
ATOM 213 CA ASP A 27 25.724 8.732 33.779 1.00 6.87 C
ATOM 214 C ASP A 27 26.167 9.306 32.439 1.00 7.47 C
ATOM 215 O ASP A 27 27.331 9.171 32.059 1.00 8.28 O
ATOM 216 CB ASP A 27 25.053 7.370 33.581 1.00 10.81 C
ATOM 217 CG ASP A 27 24.911 6.601 34.882 1.00 11.54 C
ATOM 218 OD1 ASP A 27 25.857 6.645 35.699 1.00 9.76 O
ATOM 219 OD2 ASP A 27 23.868 5.947 35.086 1.00 10.25 O
ATOM 220 N VAL A 28 25.251 9.952 31.723 1.00 6.57 N
ATOM 221 CA VAL A 28 25.619 10.536 30.437 1.00 8.12 C
ATOM 222 C VAL A 28 26.681 11.616 30.644 1.00 10.25 C
ATOM 223 O VAL A 28 27.683 11.663 29.928 1.00 9.64 O
ATOM 224 CB VAL A 28 24.399 11.150 29.718 1.00 8.01 C
ATOM 225 CG1 VAL A 28 24.862 11.969 28.515 1.00 9.50 C
ATOM 226 CG2 VAL A 28 23.457 10.034 29.253 1.00 8.04 C
ATOM 227 N ARG A 29 26.475 12.475 31.636 1.00 10.05 N
ATOM 228 CA ARG A 29 27.444 13.536 31.898 1.00 11.15 C
ATOM 229 C ARG A 29 28.827 12.967 32.214 1.00 11.79 C
ATOM 230 O ARG A 29 29.835 13.455 31.704 1.00 12.01 O
ATOM 231 CB ARG A 29 26.970 14.422 33.053 1.00 9.99 C
ATOM 232 CG ARG A 29 25.831 15.367 32.695 1.00 10.18 C
ATOM 233 CD ARG A 29 25.445 16.189 33.912 1.00 10.25 C
ATOM 234 NE ARG A 29 24.425 17.192 33.628 1.00 14.64 N
ATOM 235 CZ ARG A 29 24.640 18.502 33.651 1.00 20.85 C
ATOM 236 NH1 ARG A 29 25.844 18.976 33.943 1.00 20.73 N
ATOM 237 NH2 ARG A 29 23.645 19.341 33.398 1.00 23.29 N
ATOM 238 N SER A 30 28.875 11.926 33.040 1.00 10.27 N
ATOM 239 CA SER A 30 30.149 11.310 33.406 1.00 10.98 C
ATOM 240 C SER A 30 30.842 10.609 32.239 1.00 13.07 C
ATOM 241 O SER A 30 32.064 10.454 32.245 1.00 12.79 O
ATOM 242 CB SER A 30 29.953 10.298 34.543 1.00 8.79 C
ATOM 243 OG SER A 30 29.665 10.953 35.765 1.00 12.96 O
ATOM 244 N SER A 31 30.067 10.189 31.243 1.00 12.07 N
ATOM 245 CA SER A 31 30.625 9.488 30.087 1.00 12.63 C
ATOM 246 C SER A 31 31.478 10.385 29.197 1.00 14.41 C
ATOM 247 O SER A 31 32.286 9.894 28.411 1.00 16.95 O
ATOM 248 CB SER A 31 29.507 8.879 29.237 1.00 15.15 C
ATOM 249 OG SER A 31 28.857 9.877 28.469 1.00 12.95 O
ATOM 250 N GLY A 32 31.289 11.694 29.312 1.00 16.32 N
ATOM 251 CA GLY A 32 32.051 12.623 28.496 1.00 17.33 C
ATOM 252 C GLY A 32 31.281 13.013 27.251 1.00 17.70 C
ATOM 253 O GLY A 32 31.649 13.951 26.540 1.00 16.74 O
ATOM 254 N SER A 33 30.205 12.284 26.981 1.00 14.11 N
ATOM 255 CA SER A 33 29.375 12.562 25.818 1.00 12.55 C
ATOM 256 C SER A 33 28.436 13.717 26.128 1.00 16.51 C
ATOM 257 O SER A 33 28.044 13.919 27.281 1.00 17.01 O
ATOM 258 CB SER A 33 28.557 11.324 25.442 1.00 12.31 C
ATOM 259 OG SER A 33 27.756 11.569 24.299 1.00 11.59 O
ATOM 260 N LYS A 34 28.081 14.476 25.099 1.00 15.42 N
ATOM 261 CA LYS A 34 27.176 15.601 25.267 1.00 17.53 C
ATOM 262 C LYS A 34 25.871 15.259 24.559 1.00 17.01 C
ATOM 263 O LYS A 34 24.970 16.090 24.465 1.00 17.51 O
ATOM 264 CB LYS A 34 27.785 16.869 24.656 1.00 21.02 C
ATOM 265 CG LYS A 34 29.250 17.100 25.025 1.00 25.18 C
ATOM 266 CD LYS A 34 29.463 17.088 26.533 1.00 29.46 C
ATOM 267 CE LYS A 34 30.942 17.190 26.884 1.00 31.20 C
ATOM 268 NZ LYS A 34 31.184 17.073 28.353 1.00 29.05 N
ATOM 269 N LYS A 35 25.781 14.020 24.078 1.00 16.37 N
ATOM 270 CA LYS A 35 24.604 13.544 23.358 1.00 13.55 C
ATOM 271 C LYS A 35 24.222 12.119 23.748 1.00 10.82 C
ATOM 272 O LYS A 35 25.074 11.303 24.092 1.00 12.00 O
ATOM 273 CB LYS A 35 24.861 13.551 21.851 1.00 14.65 C
ATOM 274 CG LYS A 35 25.180 14.899 21.239 1.00 23.77 C
ATOM 275 CD LYS A 35 25.571 14.724 19.774 1.00 29.96 C
ATOM 276 CE LYS A 35 25.766 16.063 19.075 1.00 34.03 C
ATOM 277 NZ LYS A 35 24.495 16.835 18.986 1.00 39.83 N
ATOM 278 N THR A 36 22.932 11.825 23.676 1.00 11.15 N
ATOM 279 CA THR A 36 22.449 10.487 23.972 1.00 9.64 C
ATOM 280 C THR A 36 21.129 10.278 23.253 1.00 8.90 C
ATOM 281 O THR A 36 20.336 11.211 23.103 1.00 11.37 O
ATOM 282 CB THR A 36 22.235 10.255 25.494 1.00 9.30 C
ATOM 283 OG1 THR A 36 21.808 8.903 25.714 1.00 11.46 O
ATOM 284 CG2 THR A 36 21.178 11.205 26.049 1.00 10.57 C
ATOM 285 N THR A 37 20.918 9.064 22.766 1.00 8.09 N
ATOM 286 CA THR A 37 19.669 8.733 22.098 1.00 8.90 C
ATOM 287 C THR A 37 18.999 7.773 23.072 1.00 9.34 C
ATOM 288 O THR A 37 19.467 6.652 23.292 1.00 10.35 O
ATOM 289 CB THR A 37 19.916 8.084 20.710 1.00 16.76 C
ATOM 290 OG1 THR A 37 18.661 7.702 20.136 1.00 18.76 O
ATOM 291 CG2 THR A 37 20.828 6.875 20.819 1.00 17.18 C
ATOM 292 N ILE A 38 17.924 8.254 23.685 1.00 8.42 N
ATOM 293 CA ILE A 38 17.186 7.508 24.697 1.00 9.46 C
ATOM 294 C ILE A 38 16.015 6.715 24.137 1.00 10.38 C
ATOM 295 O ILE A 38 15.143 7.264 23.462 1.00 11.66 O
ATOM 296 CB ILE A 38 16.668 8.472 25.778 1.00 9.91 C
ATOM 297 CG1 ILE A 38 17.829 9.320 26.300 1.00 12.94 C
ATOM 298 CG2 ILE A 38 16.015 7.697 26.913 1.00 9.08 C
ATOM 299 CD1 ILE A 38 17.408 10.432 27.235 1.00 11.43 C
ATOM 300 N ASN A 39 15.999 5.422 24.441 1.00 6.80 N
ATOM 301 CA ASN A 39 14.946 4.527 23.976 1.00 8.56 C
ATOM 302 C ASN A 39 14.206 3.962 25.172 1.00 8.17 C
ATOM 303 O ASN A 39 14.772 3.221 25.977 1.00 12.28 O
ATOM 304 CB ASN A 39 15.563 3.409 23.141 1.00 6.67 C
ATOM 305 CG ASN A 39 16.136 3.923 21.841 1.00 11.85 C
ATOM 306 OD1 ASN A 39 15.430 4.038 20.838 1.00 10.25 O
ATOM 307 ND2 ASN A 39 17.416 4.264 21.856 1.00 11.82 N
ATOM 308 N VAL A 40 12.932 4.318 25.272 1.00 9.81 N
ATOM 309 CA VAL A 40 12.091 3.905 26.380 1.00 10.60 C
ATOM 310 C VAL A 40 11.061 2.874 25.947 1.00 11.33 C
ATOM 311 O VAL A 40 10.274 3.117 25.035 1.00 13.32 O
ATOM 312 CB VAL A 40 11.351 5.120 26.969 1.00 10.53 C
ATOM 313 CG1 VAL A 40 10.654 4.734 28.265 1.00 9.46 C
ATOM 314 CG2 VAL A 40 12.328 6.266 27.186 1.00 10.11 C
ATOM 315 N PHE A 41 11.073 1.724 26.609 1.00 10.47 N
ATOM 316 CA PHE A 41 10.134 0.655 26.303 1.00 10.56 C
ATOM 317 C PHE A 41 9.024 0.767 27.336 1.00 14.51 C
ATOM 318 O PHE A 41 9.169 0.343 28.482 1.00 12.82 O
ATOM 319 CB PHE A 41 10.880 -0.674 26.364 1.00 11.18 C
ATOM 320 CG PHE A 41 12.024 -0.741 25.393 1.00 13.39 C
ATOM 321 CD1 PHE A 41 11.798 -1.046 24.052 1.00 11.41 C
ATOM 322 CD2 PHE A 41 13.314 -0.401 25.795 1.00 13.82 C
ATOM 323 CE1 PHE A 41 12.837 -1.005 23.125 1.00 12.58 C
ATOM 324 CE2 PHE A 41 14.361 -0.357 24.875 1.00 16.09 C
ATOM 325 CZ PHE A 41 14.120 -0.659 23.535 1.00 13.07 C
ATOM 326 N THR A 42 7.918 1.371 26.909 1.00 15.02 N
ATOM 327 CA THR A 42 6.788 1.623 27.790 1.00 14.54 C
ATOM 328 C THR A 42 5.495 1.721 26.988 1.00 15.87 C
ATOM 329 O THR A 42 5.521 1.803 25.764 1.00 14.97 O
ATOM 330 CB THR A 42 7.011 2.962 28.532 1.00 16.35 C
ATOM 331 OG1 THR A 42 5.902 3.242 29.391 1.00 16.32 O
ATOM 332 CG2 THR A 42 7.166 4.098 27.525 1.00 15.89 C
ATOM 333 N GLU A 43 4.366 1.718 27.689 1.00 18.33 N
ATOM 334 CA GLU A 43 3.063 1.834 27.041 1.00 22.06 C
ATOM 335 C GLU A 43 2.551 3.265 27.188 1.00 23.02 C
ATOM 336 O GLU A 43 1.500 3.621 26.656 1.00 22.29 O
ATOM 337 CB GLU A 43 2.065 0.859 27.673 1.00 21.32 C
ATOM 338 CG GLU A 43 2.461 -0.607 27.557 1.00 26.43 C
ATOM 339 CD GLU A 43 2.665 -1.048 26.118 1.00 31.13 C
ATOM 340 OE1 GLU A 43 1.763 -0.802 25.290 1.00 33.47 O
ATOM 341 OE2 GLU A 43 3.724 -1.642 25.815 1.00 32.35 O
ATOM 342 N ILE A 44 3.311 4.083 27.910 1.00 23.91 N
ATOM 343 CA ILE A 44 2.948 5.476 28.149 1.00 26.52 C
ATOM 344 C ILE A 44 3.168 6.328 26.894 1.00 27.74 C
ATOM 345 O ILE A 44 3.974 5.976 26.033 1.00 24.73 O
ATOM 346 CB ILE A 44 3.783 6.040 29.326 1.00 28.12 C
ATOM 347 CG1 ILE A 44 2.971 7.072 30.104 1.00 28.57 C
ATOM 348 CG2 ILE A 44 5.080 6.650 28.810 1.00 24.21 C
ATOM 349 CD1 ILE A 44 3.649 7.523 31.384 1.00 31.00 C
ATOM 350 N GLN A 45 2.447 7.444 26.787 1.00 29.19 N
ATOM 351 CA GLN A 45 2.580 8.334 25.633 1.00 30.61 C
ATOM 352 C GLN A 45 3.693 9.358 25.823 1.00 28.49 C
ATOM 353 O GLN A 45 4.030 9.722 26.950 1.00 29.37 O
ATOM 354 CB GLN A 45 1.258 9.058 25.363 1.00 36.95 C
ATOM 355 CG GLN A 45 0.165 8.172 24.788 1.00 48.09 C
ATOM 356 CD GLN A 45 0.496 7.672 23.394 1.00 54.95 C
ATOM 357 OE1 GLN A 45 0.715 8.463 22.477 1.00 59.19 O
ATOM 358 NE2 GLN A 45 0.531 6.354 23.229 1.00 59.21 N
ATOM 359 N TYR A 46 4.248 9.823 24.708 1.00 24.28 N
ATOM 360 CA TYR A 46 5.337 10.793 24.713 1.00 24.71 C
ATOM 361 C TYR A 46 5.090 11.982 25.639 1.00 25.54 C
ATOM 362 O TYR A 46 5.881 12.250 26.541 1.00 22.81 O
ATOM 363 CB TYR A 46 5.583 11.314 23.296 1.00 23.11 C
ATOM 364 CG TYR A 46 6.881 12.075 23.142 1.00 27.98 C
ATOM 365 CD1 TYR A 46 8.087 11.399 22.962 1.00 31.13 C
ATOM 366 CD2 TYR A 46 6.910 13.468 23.200 1.00 28.93 C
ATOM 367 CE1 TYR A 46 9.291 12.088 22.845 1.00 32.93 C
ATOM 368 CE2 TYR A 46 8.113 14.169 23.086 1.00 32.03 C
ATOM 369 CZ TYR A 46 9.298 13.470 22.909 1.00 32.08 C
ATOM 370 OH TYR A 46 10.492 14.148 22.803 1.00 33.47 O
ATOM 371 N GLN A 47 3.994 12.697 25.406 1.00 24.63 N
ATOM 372 CA GLN A 47 3.667 13.870 26.208 1.00 25.17 C
ATOM 373 C GLN A 47 3.568 13.610 27.706 1.00 23.21 C
ATOM 374 O GLN A 47 3.976 14.450 28.507 1.00 24.07 O
ATOM 375 CB GLN A 47 2.370 14.508 25.706 1.00 28.35 C
ATOM 376 CG GLN A 47 2.495 15.121 24.321 1.00 36.99 C
ATOM 377 CD GLN A 47 3.718 16.012 24.190 1.00 43.34 C
ATOM 378 OE1 GLN A 47 3.944 16.904 25.011 1.00 46.34 O
ATOM 379 NE2 GLN A 47 4.514 15.776 23.152 1.00 45.64 N
ATOM 380 N GLU A 48 3.025 12.459 28.091 1.00 23.97 N
ATOM 381 CA GLU A 48 2.911 12.138 29.507 1.00 22.97 C
ATOM 382 C GLU A 48 4.296 11.901 30.099 1.00 22.51 C
ATOM 383 O GLU A 48 4.583 12.325 31.217 1.00 17.54 O
ATOM 384 CB GLU A 48 2.029 10.903 29.720 1.00 27.75 C
ATOM 385 CG GLU A 48 2.033 10.402 31.160 1.00 35.85 C
ATOM 386 CD GLU A 48 0.862 9.493 31.483 1.00 42.98 C
ATOM 387 OE1 GLU A 48 0.527 8.621 30.652 1.00 46.34 O
ATOM 388 OE2 GLU A 48 0.281 9.645 32.578 1.00 44.85 O
ATOM 389 N LEU A 49 5.157 11.228 29.342 1.00 18.62 N
ATOM 390 CA LEU A 49 6.510 10.961 29.811 1.00 18.78 C
ATOM 391 C LEU A 49 7.267 12.268 30.002 1.00 17.00 C
ATOM 392 O LEU A 49 7.848 12.511 31.058 1.00 16.05 O
ATOM 393 CB LEU A 49 7.269 10.084 28.811 1.00 16.29 C
ATOM 394 CG LEU A 49 8.755 9.895 29.139 1.00 16.44 C
ATOM 395 CD1 LEU A 49 8.901 9.183 30.479 1.00 17.18 C
ATOM 396 CD2 LEU A 49 9.432 9.102 28.033 1.00 19.52 C
ATOM 397 N VAL A 50 7.262 13.102 28.967 1.00 16.87 N
ATOM 398 CA VAL A 50 7.953 14.385 29.010 1.00 15.59 C
ATOM 399 C VAL A 50 7.490 15.214 30.201 1.00 17.36 C
ATOM 400 O VAL A 50 8.260 15.984 30.771 1.00 15.94 O
ATOM 401 CB VAL A 50 7.715 15.185 27.712 1.00 20.49 C
ATOM 402 CG1 VAL A 50 8.450 16.511 27.775 1.00 22.89 C
ATOM 403 CG2 VAL A 50 8.186 14.373 26.511 1.00 20.90 C
ATOM 404 N THR A 51 6.222 15.061 30.568 1.00 16.58 N
ATOM 405 CA THR A 51 5.677 15.789 31.705 1.00 13.61 C
ATOM 406 C THR A 51 6.308 15.251 32.989 1.00 13.20 C
ATOM 407 O THR A 51 6.723 16.020 33.856 1.00 14.98 O
ATOM 408 CB THR A 51 4.147 15.633 31.774 1.00 16.56 C
ATOM 409 OG1 THR A 51 3.559 16.293 30.645 1.00 19.12 O
ATOM 410 CG2 THR A 51 3.597 16.237 33.060 1.00 17.52 C
ATOM 411 N LEU A 52 6.396 13.929 33.099 1.00 13.91 N
ATOM 412 CA LEU A 52 6.985 13.303 34.279 1.00 13.78 C
ATOM 413 C LEU A 52 8.467 13.623 34.464 1.00 16.52 C
ATOM 414 O LEU A 52 8.925 13.837 35.587 1.00 20.03 O
ATOM 415 CB LEU A 52 6.814 11.781 34.219 1.00 15.00 C
ATOM 416 CG LEU A 52 5.407 11.210 34.404 1.00 18.12 C
ATOM 417 CD1 LEU A 52 5.443 9.698 34.229 1.00 19.35 C
ATOM 418 CD2 LEU A 52 4.885 11.576 35.785 1.00 20.14 C
ATOM 419 N ILE A 53 9.220 13.657 33.371 1.00 13.70 N
ATOM 420 CA ILE A 53 10.653 13.921 33.466 1.00 15.34 C
ATOM 421 C ILE A 53 11.051 15.357 33.146 1.00 16.08 C
ATOM 422 O ILE A 53 12.228 15.643 32.926 1.00 12.68 O
ATOM 423 CB ILE A 53 11.451 12.979 32.540 1.00 13.70 C
ATOM 424 CG1 ILE A 53 11.137 13.288 31.076 1.00 12.89 C
ATOM 425 CG2 ILE A 53 11.112 11.530 32.859 1.00 15.48 C
ATOM 426 CD1 ILE A 53 11.973 12.498 30.092 1.00 17.37 C
ATOM 427 N ARG A 54 10.075 16.259 33.133 1.00 14.93 N
ATOM 428 CA ARG A 54 10.339 17.663 32.831 1.00 17.46 C
ATOM 429 C ARG A 54 11.521 18.227 33.615 1.00 15.05 C
ATOM 430 O ARG A 54 12.396 18.875 33.043 1.00 13.17 O
ATOM 431 CB ARG A 54 9.100 18.515 33.120 1.00 21.33 C
ATOM 432 CG ARG A 54 9.292 19.993 32.805 1.00 27.86 C
ATOM 433 CD ARG A 54 8.119 20.838 33.282 1.00 38.40 C
ATOM 434 NE ARG A 54 7.921 20.738 34.727 1.00 45.55 N
ATOM 435 CZ ARG A 54 6.935 20.058 35.304 1.00 48.28 C
ATOM 436 NH1 ARG A 54 6.838 20.021 36.627 1.00 49.43 N
ATOM 437 NH2 ARG A 54 6.037 19.424 34.560 1.00 44.89 N
ATOM 438 N GLU A 55 11.542 17.982 34.922 1.00 14.40 N
ATOM 439 CA GLU A 55 12.616 18.484 35.777 1.00 18.96 C
ATOM 440 C GLU A 55 13.983 17.950 35.365 1.00 15.03 C
ATOM 441 O GLU A 55 14.967 18.691 35.337 1.00 13.65 O
ATOM 442 CB GLU A 55 12.335 18.123 37.240 1.00 20.18 C
ATOM 443 CG GLU A 55 13.348 18.673 38.231 1.00 27.21 C
ATOM 444 CD GLU A 55 13.525 20.176 38.117 1.00 30.48 C
ATOM 445 OE1 GLU A 55 12.515 20.882 37.911 1.00 32.00 O
ATOM 446 OE2 GLU A 55 14.673 20.653 38.246 1.00 30.82 O
ATOM 447 N ALA A 56 14.046 16.664 35.041 1.00 15.12 N
ATOM 448 CA ALA A 56 15.308 16.061 34.628 1.00 13.23 C
ATOM 449 C ALA A 56 15.794 16.704 33.334 1.00 12.47 C
ATOM 450 O ALA A 56 16.980 16.980 33.175 1.00 12.54 O
ATOM 451 CB ALA A 56 15.137 14.559 34.439 1.00 12.68 C
ATOM 452 N LEU A 57 14.873 16.938 32.404 1.00 8.74 N
ATOM 453 CA LEU A 57 15.230 17.554 31.136 1.00 7.77 C
ATOM 454 C LEU A 57 15.739 18.981 31.332 1.00 8.61 C
ATOM 455 O LEU A 57 16.717 19.390 30.700 1.00 9.52 O
ATOM 456 CB LEU A 57 14.023 17.558 30.189 1.00 10.14 C
ATOM 457 CG LEU A 57 13.440 16.175 29.888 1.00 9.25 C
ATOM 458 CD1 LEU A 57 12.287 16.312 28.914 1.00 10.72 C
ATOM 459 CD2 LEU A 57 14.518 15.277 29.300 1.00 10.29 C
ATOM 460 N LEU A 58 15.081 19.731 32.211 1.00 9.14 N
ATOM 461 CA LEU A 58 15.472 21.111 32.480 1.00 10.13 C
ATOM 462 C LEU A 58 16.850 21.191 33.132 1.00 9.44 C
ATOM 463 O LEU A 58 17.678 22.021 32.756 1.00 9.82 O
ATOM 464 CB LEU A 58 14.433 21.785 33.386 1.00 13.24 C
ATOM 465 CG LEU A 58 14.756 23.201 33.871 1.00 18.30 C
ATOM 466 CD1 LEU A 58 14.880 24.140 32.686 1.00 21.51 C
ATOM 467 CD2 LEU A 58 13.657 23.679 34.814 1.00 25.65 C
ATOM 468 N GLU A 59 17.090 20.322 34.107 1.00 8.78 N
ATOM 469 CA GLU A 59 18.364 20.302 34.818 1.00 11.12 C
ATOM 470 C GLU A 59 19.538 19.936 33.920 1.00 11.69 C
ATOM 471 O GLU A 59 20.687 20.279 34.210 1.00 12.28 O
ATOM 472 CB GLU A 59 18.304 19.309 35.980 1.00 13.15 C
ATOM 473 CG GLU A 59 17.497 19.777 37.170 1.00 17.13 C
ATOM 474 CD GLU A 59 17.449 18.742 38.275 1.00 18.20 C
ATOM 475 OE1 GLU A 59 18.404 17.944 38.381 1.00 18.34 O
ATOM 476 OE2 GLU A 59 16.466 18.734 39.045 1.00 19.18 O
ATOM 477 N ASN A 60 19.249 19.245 32.826 1.00 9.78 N
ATOM 478 CA ASN A 60 20.295 18.811 31.914 1.00 10.61 C
ATOM 479 C ASN A 60 20.108 19.363 30.509 1.00 12.44 C
ATOM 480 O ASN A 60 20.324 18.670 29.515 1.00 10.50 O
ATOM 481 CB ASN A 60 20.327 17.286 31.914 1.00 11.88 C
ATOM 482 CG ASN A 60 20.659 16.731 33.279 1.00 11.93 C
ATOM 483 OD1 ASN A 60 21.817 16.741 33.693 1.00 13.53 O
ATOM 484 ND2 ASN A 60 19.640 16.277 34.007 1.00 9.60 N
ATOM 485 N ILE A 61 19.726 20.634 30.453 1.00 14.87 N
ATOM 486 CA ILE A 61 19.486 21.340 29.203 1.00 14.76 C
ATOM 487 C ILE A 61 20.688 21.322 28.253 1.00 15.03 C
ATOM 488 O ILE A 61 20.517 21.351 27.035 1.00 13.45 O
ATOM 489 CB ILE A 61 19.085 22.812 29.492 1.00 15.88 C
ATOM 490 CG1 ILE A 61 18.626 23.505 28.208 1.00 20.00 C
ATOM 491 CG2 ILE A 61 20.250 23.555 30.119 1.00 19.27 C
ATOM 492 CD1 ILE A 61 17.277 23.039 27.718 1.00 24.49 C
ATOM 493 N ASP A 62 21.900 21.274 28.803 1.00 13.67 N
ATOM 494 CA ASP A 62 23.103 21.264 27.972 1.00 14.54 C
ATOM 495 C ASP A 62 23.280 19.967 27.191 1.00 14.65 C
ATOM 496 O ASP A 62 23.929 19.953 26.146 1.00 18.15 O
ATOM 497 CB ASP A 62 24.359 21.499 28.819 1.00 17.19 C
ATOM 498 CG ASP A 62 24.426 22.899 29.397 1.00 23.32 C
ATOM 499 OD1 ASP A 62 23.613 23.757 28.991 1.00 22.32 O
ATOM 500 OD2 ASP A 62 25.304 23.141 30.253 1.00 23.74 O
ATOM 501 N ILE A 63 22.711 18.880 27.699 1.00 12.30 N
ATOM 502 CA ILE A 63 22.830 17.585 27.038 1.00 12.18 C
ATOM 503 C ILE A 63 21.861 17.474 25.867 1.00 14.22 C
ATOM 504 O ILE A 63 20.675 17.746 26.010 1.00 18.15 O
ATOM 505 CB ILE A 63 22.543 16.420 28.018 1.00 13.92 C
ATOM 506 CG1 ILE A 63 23.548 16.441 29.172 1.00 17.28 C
ATOM 507 CG2 ILE A 63 22.620 15.091 27.280 1.00 14.00 C
ATOM 508 CD1 ILE A 63 24.995 16.287 28.735 1.00 17.06 C
ATOM 509 N GLY A 64 22.375 17.081 24.708 1.00 14.14 N
ATOM 510 CA GLY A 64 21.516 16.922 23.552 1.00 16.94 C
ATOM 511 C GLY A 64 20.961 15.515 23.593 1.00 18.30 C
ATOM 512 O GLY A 64 21.693 14.568 23.869 1.00 20.02 O
ATOM 513 N TYR A 65 19.673 15.357 23.331 1.00 18.65 N
ATOM 514 CA TYR A 65 19.100 14.024 23.372 1.00 18.31 C
ATOM 515 C TYR A 65 17.954 13.851 22.395 1.00 20.44 C
ATOM 516 O TYR A 65 17.351 14.821 21.934 1.00 19.03 O
ATOM 517 CB TYR A 65 18.598 13.718 24.790 1.00 22.93 C
ATOM 518 CG TYR A 65 17.282 14.393 25.118 1.00 22.93 C
ATOM 519 CD1 TYR A 65 16.071 13.842 24.693 1.00 27.91 C
ATOM 520 CD2 TYR A 65 17.249 15.608 25.797 1.00 24.79 C
ATOM 521 CE1 TYR A 65 14.862 14.486 24.929 1.00 26.74 C
ATOM 522 CE2 TYR A 65 16.042 16.264 26.040 1.00 26.83 C
ATOM 523 CZ TYR A 65 14.853 15.695 25.600 1.00 28.42 C
ATOM 524 OH TYR A 65 13.655 16.334 25.824 1.00 30.78 O
ATOM 525 N GLU A 66 17.679 12.593 22.080 1.00 19.35 N
ATOM 526 CA GLU A 66 16.576 12.221 21.212 1.00 18.13 C
ATOM 527 C GLU A 66 15.814 11.238 22.081 1.00 17.07 C
ATOM 528 O GLU A 66 16.422 10.477 22.836 1.00 13.89 O
ATOM 529 CB GLU A 66 17.066 11.523 19.944 1.00 22.10 C
ATOM 530 CG GLU A 66 17.781 12.427 18.959 1.00 31.96 C
ATOM 531 CD GLU A 66 18.028 11.743 17.627 1.00 38.40 C
ATOM 532 OE1 GLU A 66 18.679 10.676 17.616 1.00 42.11 O
ATOM 533 OE2 GLU A 66 17.569 12.272 16.592 1.00 43.89 O
ATOM 534 N LEU A 67 14.491 11.264 21.992 1.00 15.56 N
ATOM 535 CA LEU A 67 13.666 10.376 22.794 1.00 14.40 C
ATOM 536 C LEU A 67 12.745 9.543 21.909 1.00 14.70 C
ATOM 537 O LEU A 67 11.996 10.080 21.093 1.00 15.80 O
ATOM 538 CB LEU A 67 12.839 11.203 23.785 1.00 16.90 C
ATOM 539 CG LEU A 67 11.914 10.470 24.757 1.00 19.24 C
ATOM 540 CD1 LEU A 67 12.727 9.532 25.637 1.00 21.66 C
ATOM 541 CD2 LEU A 67 11.172 11.489 25.610 1.00 20.68 C
ATOM 542 N PHE A 68 12.818 8.227 22.076 1.00 11.13 N
ATOM 543 CA PHE A 68 11.996 7.298 21.314 1.00 12.93 C
ATOM 544 C PHE A 68 11.285 6.355 22.272 1.00 12.63 C
ATOM 545 O PHE A 68 11.911 5.759 23.149 1.00 12.01 O
ATOM 546 CB PHE A 68 12.866 6.479 20.355 1.00 12.05 C
ATOM 547 CG PHE A 68 13.523 7.296 19.285 1.00 14.59 C
ATOM 548 CD1 PHE A 68 12.792 7.756 18.195 1.00 14.07 C
ATOM 549 CD2 PHE A 68 14.870 7.625 19.375 1.00 15.16 C
ATOM 550 CE1 PHE A 68 13.394 8.532 17.208 1.00 15.37 C
ATOM 551 CE2 PHE A 68 15.482 8.401 18.393 1.00 17.63 C
ATOM 552 CZ PHE A 68 14.744 8.856 17.308 1.00 18.22 C
ATOM 553 N LEU A 69 9.974 6.232 22.112 1.00 12.84 N
ATOM 554 CA LEU A 69 9.198 5.334 22.955 1.00 13.24 C
ATOM 555 C LEU A 69 8.765 4.137 22.123 1.00 14.32 C
ATOM 556 O LEU A 69 8.332 4.289 20.978 1.00 13.65 O
ATOM 557 CB LEU A 69 7.968 6.046 23.526 1.00 14.24 C
ATOM 558 CG LEU A 69 8.206 6.979 24.718 1.00 18.28 C
ATOM 559 CD1 LEU A 69 9.175 8.085 24.331 1.00 18.52 C
ATOM 560 CD2 LEU A 69 6.879 7.565 25.175 1.00 19.14 C
ATOM 561 N TRP A 70 8.900 2.949 22.702 1.00 12.36 N
ATOM 562 CA TRP A 70 8.536 1.716 22.025 1.00 13.82 C
ATOM 563 C TRP A 70 7.665 0.826 22.889 1.00 14.23 C
ATOM 564 O TRP A 70 7.958 0.612 24.063 1.00 14.03 O
ATOM 565 CB TRP A 70 9.783 0.908 21.663 1.00 10.85 C
ATOM 566 CG TRP A 70 10.830 1.673 20.944 1.00 10.51 C
ATOM 567 CD1 TRP A 70 12.000 2.158 21.461 1.00 11.33 C
ATOM 568 CD2 TRP A 70 10.815 2.036 19.565 1.00 9.50 C
ATOM 569 NE1 TRP A 70 12.718 2.801 20.477 1.00 10.64 N
ATOM 570 CE2 TRP A 70 12.012 2.740 19.305 1.00 9.79 C
ATOM 571 CE3 TRP A 70 9.905 1.834 18.520 1.00 12.09 C
ATOM 572 CZ2 TRP A 70 12.322 3.243 18.038 1.00 11.85 C
ATOM 573 CZ3 TRP A 70 10.215 2.336 17.259 1.00 12.80 C
ATOM 574 CH2 TRP A 70 11.414 3.031 17.031 1.00 14.03 C
ATOM 575 N LYS A 71 6.585 0.311 22.315 1.00 16.48 N
ATOM 576 CA LYS A 71 5.751 -0.615 23.057 1.00 18.93 C
ATOM 577 C LYS A 71 6.589 -1.886 22.981 1.00 22.72 C
ATOM 578 O LYS A 71 7.369 -2.052 22.045 1.00 20.37 O
ATOM 579 CB LYS A 71 4.404 -0.808 22.362 1.00 21.31 C
ATOM 580 CG LYS A 71 3.515 0.422 22.417 1.00 26.79 C
ATOM 581 CD LYS A 71 2.153 0.147 21.800 1.00 34.56 C
ATOM 582 CE LYS A 71 1.226 1.341 21.964 1.00 38.54 C
ATOM 583 NZ LYS A 71 1.787 2.569 21.336 1.00 42.94 N
ATOM 584 N LYS A 72 6.453 -2.775 23.957 1.00 25.48 N
ATOM 585 CA LYS A 72 7.250 -3.995 23.956 1.00 28.37 C
ATOM 586 C LYS A 72 7.172 -4.780 22.646 1.00 25.79 C
ATOM 587 O LYS A 72 8.112 -5.485 22.282 1.00 26.09 O
ATOM 588 CB LYS A 72 6.847 -4.875 25.142 1.00 33.91 C
ATOM 589 CG LYS A 72 7.142 -4.215 26.484 1.00 41.92 C
ATOM 590 CD LYS A 72 6.760 -5.093 27.661 1.00 49.29 C
ATOM 591 CE LYS A 72 7.062 -4.389 28.976 1.00 53.30 C
ATOM 592 NZ LYS A 72 6.675 -5.210 30.154 1.00 56.26 N
ATOM 593 N ASN A 73 6.063 -4.638 21.929 1.00 22.90 N
ATOM 594 CA ASN A 73 5.882 -5.339 20.663 1.00 22.29 C
ATOM 595 C ASN A 73 6.590 -4.636 19.501 1.00 18.11 C
ATOM 596 O ASN A 73 6.606 -5.141 18.379 1.00 16.58 O
ATOM 597 CB ASN A 73 4.388 -5.471 20.351 1.00 26.17 C
ATOM 598 CG ASN A 73 3.713 -4.126 20.148 1.00 30.05 C
ATOM 599 OD1 ASN A 73 3.996 -3.417 19.182 1.00 34.23 O
ATOM 600 ND2 ASN A 73 2.815 -3.767 21.060 1.00 33.29 N
ATOM 601 N GLU A 74 7.181 -3.476 19.774 1.00 15.76 N
ATOM 602 CA GLU A 74 7.876 -2.716 18.737 1.00 12.60 C
ATOM 603 C GLU A 74 9.394 -2.799 18.865 1.00 10.48 C
ATOM 604 O GLU A 74 10.123 -2.059 18.200 1.00 9.42 O
ATOM 605 CB GLU A 74 7.441 -1.250 18.779 1.00 16.35 C
ATOM 606 CG GLU A 74 5.944 -1.042 18.607 1.00 17.92 C
ATOM 607 CD GLU A 74 5.549 0.420 18.673 1.00 20.34 C
ATOM 608 OE1 GLU A 74 5.999 1.117 19.606 1.00 16.46 O
ATOM 609 OE2 GLU A 74 4.782 0.874 17.800 1.00 19.67 O
ATOM 610 N VAL A 75 9.871 -3.700 19.715 1.00 9.06 N
ATOM 611 CA VAL A 75 11.307 -3.853 19.904 1.00 10.52 C
ATOM 612 C VAL A 75 12.000 -4.150 18.577 1.00 10.22 C
ATOM 613 O VAL A 75 13.149 -3.753 18.366 1.00 11.77 O
ATOM 614 CB VAL A 75 11.630 -4.984 20.903 1.00 11.34 C
ATOM 615 CG1 VAL A 75 13.144 -5.106 21.081 1.00 15.60 C
ATOM 616 CG2 VAL A 75 10.972 -4.693 22.241 1.00 17.33 C
ATOM 617 N ASP A 76 11.312 -4.838 17.672 1.00 9.91 N
ATOM 618 CA ASP A 76 11.929 -5.147 16.387 1.00 12.34 C
ATOM 619 C ASP A 76 12.226 -3.892 15.563 1.00 9.21 C
ATOM 620 O ASP A 76 13.214 -3.852 14.831 1.00 9.36 O
ATOM 621 CB ASP A 76 11.070 -6.145 15.589 1.00 14.04 C
ATOM 622 CG ASP A 76 9.660 -5.646 15.307 1.00 17.54 C
ATOM 623 OD1 ASP A 76 9.238 -4.607 15.857 1.00 13.26 O
ATOM 624 OD2 ASP A 76 8.960 -6.325 14.525 1.00 15.98 O
ATOM 625 N ILE A 77 11.388 -2.865 15.690 1.00 7.60 N
ATOM 626 CA ILE A 77 11.612 -1.620 14.956 1.00 8.71 C
ATOM 627 C ILE A 77 12.832 -0.927 15.568 1.00 9.62 C
ATOM 628 O ILE A 77 13.683 -0.391 14.857 1.00 8.90 O
ATOM 629 CB ILE A 77 10.393 -0.676 15.051 1.00 10.93 C
ATOM 630 CG1 ILE A 77 9.149 -1.364 14.476 1.00 10.71 C
ATOM 631 CG2 ILE A 77 10.673 0.611 14.282 1.00 10.85 C
ATOM 632 CD1 ILE A 77 7.862 -0.594 14.705 1.00 12.30 C
ATOM 633 N PHE A 78 12.907 -0.944 16.894 1.00 7.81 N
ATOM 634 CA PHE A 78 14.037 -0.347 17.592 1.00 8.65 C
ATOM 635 C PHE A 78 15.349 -0.969 17.115 1.00 11.53 C
ATOM 636 O PHE A 78 16.296 -0.264 16.767 1.00 11.69 O
ATOM 637 CB PHE A 78 13.900 -0.555 19.101 1.00 8.63 C
ATOM 638 CG PHE A 78 15.210 -0.506 19.831 1.00 10.37 C
ATOM 639 CD1 PHE A 78 15.906 0.690 19.962 1.00 13.42 C
ATOM 640 CD2 PHE A 78 15.776 -1.673 20.335 1.00 11.53 C
ATOM 641 CE1 PHE A 78 17.155 0.722 20.581 1.00 15.39 C
ATOM 642 CE2 PHE A 78 17.025 -1.651 20.955 1.00 11.81 C
ATOM 643 CZ PHE A 78 17.713 -0.451 21.077 1.00 14.87 C
ATOM 644 N LEU A 79 15.400 -2.296 17.108 1.00 10.16 N
ATOM 645 CA LEU A 79 16.603 -3.000 16.689 1.00 9.69 C
ATOM 646 C LEU A 79 16.961 -2.733 15.231 1.00 10.98 C
ATOM 647 O LEU A 79 18.139 -2.623 14.893 1.00 10.05 O
ATOM 648 CB LEU A 79 16.443 -4.500 16.940 1.00 11.59 C
ATOM 649 CG LEU A 79 16.470 -4.879 18.425 1.00 9.25 C
ATOM 650 CD1 LEU A 79 15.977 -6.304 18.620 1.00 13.42 C
ATOM 651 CD2 LEU A 79 17.888 -4.720 18.953 1.00 12.07 C
ATOM 652 N LYS A 80 15.954 -2.620 14.369 1.00 10.41 N
ATOM 653 CA LYS A 80 16.218 -2.349 12.958 1.00 10.15 C
ATOM 654 C LYS A 80 16.780 -0.939 12.799 1.00 10.76 C
ATOM 655 O LYS A 80 17.782 -0.733 12.114 1.00 10.37 O
ATOM 656 CB LYS A 80 14.940 -2.495 12.126 1.00 12.27 C
ATOM 657 CG LYS A 80 15.145 -2.238 10.633 1.00 16.44 C
ATOM 658 CD LYS A 80 16.171 -3.193 10.040 1.00 20.17 C
ATOM 659 CE LYS A 80 16.448 -2.877 8.575 1.00 24.66 C
ATOM 660 NZ LYS A 80 17.426 -3.837 7.977 1.00 25.43 N
ATOM 661 N ASN A 81 16.134 0.032 13.438 1.00 8.82 N
ATOM 662 CA ASN A 81 16.580 1.417 13.367 1.00 9.52 C
ATOM 663 C ASN A 81 17.985 1.579 13.938 1.00 9.21 C
ATOM 664 O ASN A 81 18.736 2.458 13.516 1.00 8.16 O
ATOM 665 CB ASN A 81 15.615 2.325 14.133 1.00 6.26 C
ATOM 666 CG ASN A 81 14.281 2.498 13.423 1.00 9.62 C
ATOM 667 OD1 ASN A 81 14.035 1.894 12.378 1.00 9.19 O
ATOM 668 ND2 ASN A 81 13.414 3.328 13.993 1.00 6.70 N
ATOM 669 N LEU A 82 18.331 0.736 14.904 1.00 8.29 N
ATOM 670 CA LEU A 82 19.650 0.796 15.531 1.00 9.25 C
ATOM 671 C LEU A 82 20.761 0.619 14.493 1.00 10.59 C
ATOM 672 O LEU A 82 21.870 1.130 14.661 1.00 9.88 O
ATOM 673 CB LEU A 82 19.762 -0.282 16.614 1.00 9.95 C
ATOM 674 CG LEU A 82 21.043 -0.292 17.456 1.00 14.09 C
ATOM 675 CD1 LEU A 82 21.245 1.066 18.111 1.00 13.71 C
ATOM 676 CD2 LEU A 82 20.950 -1.389 18.509 1.00 10.74 C
ATOM 677 N GLU A 83 20.458 -0.095 13.413 1.00 9.50 N
ATOM 678 CA GLU A 83 21.448 -0.317 12.362 1.00 11.88 C
ATOM 679 C GLU A 83 21.947 0.992 11.755 1.00 12.86 C
ATOM 680 O GLU A 83 23.071 1.058 11.257 1.00 13.04 O
ATOM 681 CB GLU A 83 20.865 -1.191 11.249 1.00 12.61 C
ATOM 682 CG GLU A 83 20.452 -2.577 11.705 1.00 14.42 C
ATOM 683 CD GLU A 83 19.991 -3.454 10.558 1.00 18.48 C
ATOM 684 OE1 GLU A 83 19.859 -2.939 9.430 1.00 18.66 O
ATOM 685 OE2 GLU A 83 19.754 -4.658 10.787 1.00 22.59 O
ATOM 686 N LYS A 84 21.115 2.030 11.799 1.00 11.63 N
ATOM 687 CA LYS A 84 21.477 3.330 11.232 1.00 14.14 C
ATOM 688 C LYS A 84 21.896 4.374 12.268 1.00 16.24 C
ATOM 689 O LYS A 84 22.274 5.489 11.911 1.00 17.54 O
ATOM 690 CB LYS A 84 20.302 3.900 10.431 1.00 13.67 C
ATOM 691 CG LYS A 84 19.888 3.087 9.219 1.00 18.74 C
ATOM 692 CD LYS A 84 18.672 3.720 8.549 1.00 19.43 C
ATOM 693 CE LYS A 84 18.253 2.953 7.308 1.00 25.40 C
ATOM 694 NZ LYS A 84 19.315 2.959 6.266 1.00 30.14 N
ATOM 695 N SER A 85 21.823 4.016 13.544 1.00 12.83 N
ATOM 696 CA SER A 85 22.165 4.943 14.616 1.00 16.34 C
ATOM 697 C SER A 85 23.641 4.895 14.983 1.00 17.60 C
ATOM 698 O SER A 85 24.186 3.830 15.267 1.00 14.60 O
ATOM 699 CB SER A 85 21.316 4.638 15.855 1.00 18.24 C
ATOM 700 OG SER A 85 21.550 5.583 16.885 1.00 25.32 O
ATOM 701 N GLU A 86 24.281 6.058 14.976 1.00 16.65 N
ATOM 702 CA GLU A 86 25.691 6.148 15.318 1.00 20.54 C
ATOM 703 C GLU A 86 25.847 6.356 16.818 1.00 19.99 C
ATOM 704 O GLU A 86 25.795 7.484 17.308 1.00 23.78 O
ATOM 705 CB GLU A 86 26.349 7.301 14.555 1.00 25.96 C
ATOM 706 CG GLU A 86 27.754 7.656 15.035 1.00 39.12 C
ATOM 707 CD GLU A 86 28.656 6.445 15.179 1.00 45.75 C
ATOM 708 OE1 GLU A 86 28.753 5.654 14.216 1.00 50.19 O
ATOM 709 OE2 GLU A 86 29.275 6.290 16.256 1.00 50.06 O
ATOM 710 N VAL A 87 26.020 5.254 17.540 1.00 20.16 N
ATOM 711 CA VAL A 87 26.198 5.286 18.989 1.00 18.68 C
ATOM 712 C VAL A 87 27.523 4.612 19.338 1.00 18.77 C
ATOM 713 O VAL A 87 27.977 3.724 18.616 1.00 17.50 O
ATOM 714 CB VAL A 87 25.051 4.552 19.704 1.00 18.06 C
ATOM 715 CG1 VAL A 87 23.748 5.309 19.504 1.00 20.67 C
ATOM 716 CG2 VAL A 87 24.926 3.138 19.163 1.00 18.82 C
ATOM 717 N ASP A 88 28.144 5.031 20.439 1.00 16.11 N
ATOM 718 CA ASP A 88 29.428 4.461 20.846 1.00 16.31 C
ATOM 719 C ASP A 88 29.521 4.009 22.300 1.00 20.76 C
ATOM 720 O ASP A 88 30.507 3.385 22.698 1.00 25.38 O
ATOM 721 CB ASP A 88 30.556 5.454 20.570 1.00 19.28 C
ATOM 722 CG ASP A 88 30.224 6.857 21.036 1.00 18.16 C
ATOM 723 OD1 ASP A 88 29.422 7.004 21.984 1.00 19.26 O
ATOM 724 OD2 ASP A 88 30.779 7.813 20.458 1.00 20.16 O
ATOM 725 N GLY A 89 28.514 4.344 23.094 1.00 14.98 N
ATOM 726 CA GLY A 89 28.505 3.944 24.492 1.00 11.49 C
ATOM 727 C GLY A 89 27.131 3.392 24.807 1.00 11.28 C
ATOM 728 O GLY A 89 26.179 3.676 24.081 1.00 11.07 O
ATOM 729 N LEU A 90 27.014 2.623 25.887 1.00 7.86 N
ATOM 730 CA LEU A 90 25.732 2.028 26.248 1.00 8.27 C
ATOM 731 C LEU A 90 25.364 2.179 27.720 1.00 6.84 C
ATOM 732 O LEU A 90 26.191 1.947 28.599 1.00 8.06 O
ATOM 733 CB LEU A 90 25.743 0.539 25.897 1.00 9.22 C
ATOM 734 CG LEU A 90 24.518 -0.287 26.296 1.00 7.17 C
ATOM 735 CD1 LEU A 90 23.307 0.167 25.493 1.00 7.45 C
ATOM 736 CD2 LEU A 90 24.793 -1.763 26.048 1.00 10.76 C
ATOM 737 N LEU A 91 24.115 2.563 27.969 1.00 6.67 N
ATOM 738 CA LEU A 91 23.578 2.701 29.323 1.00 5.88 C
ATOM 739 C LEU A 91 22.297 1.877 29.362 1.00 7.65 C
ATOM 740 O LEU A 91 21.460 1.981 28.461 1.00 7.92 O
ATOM 741 CB LEU A 91 23.271 4.165 29.649 1.00 6.06 C
ATOM 742 CG LEU A 91 24.490 5.069 29.862 1.00 7.72 C
ATOM 743 CD1 LEU A 91 24.037 6.516 30.030 1.00 9.04 C
ATOM 744 CD2 LEU A 91 25.261 4.604 31.098 1.00 11.40 C
ATOM 745 N VAL A 92 22.147 1.056 30.397 1.00 7.74 N
ATOM 746 CA VAL A 92 20.973 0.196 30.526 1.00 9.41 C
ATOM 747 C VAL A 92 20.280 0.360 31.876 1.00 8.85 C
ATOM 748 O VAL A 92 20.929 0.302 32.920 1.00 9.80 O
ATOM 749 CB VAL A 92 21.368 -1.292 30.351 1.00 9.33 C
ATOM 750 CG1 VAL A 92 20.167 -2.188 30.602 1.00 11.21 C
ATOM 751 CG2 VAL A 92 21.923 -1.520 28.949 1.00 9.68 C
ATOM 752 N TYR A 93 18.962 0.546 31.846 1.00 8.30 N
ATOM 753 CA TYR A 93 18.179 0.713 33.072 1.00 7.46 C
ATOM 754 C TYR A 93 16.867 -0.059 33.053 1.00 9.64 C
ATOM 755 O TYR A 93 16.169 -0.096 32.039 1.00 9.58 O
ATOM 756 CB TYR A 93 17.833 2.185 33.292 1.00 7.49 C
ATOM 757 CG TYR A 93 19.013 3.115 33.250 1.00 7.32 C
ATOM 758 CD1 TYR A 93 19.727 3.425 34.408 1.00 10.22 C
ATOM 759 CD2 TYR A 93 19.428 3.677 32.045 1.00 8.50 C
ATOM 760 CE1 TYR A 93 20.827 4.275 34.363 1.00 7.50 C
ATOM 761 CE2 TYR A 93 20.519 4.520 31.989 1.00 10.65 C
ATOM 762 CZ TYR A 93 21.217 4.818 33.149 1.00 9.17 C
ATOM 763 OH TYR A 93 22.297 5.665 33.083 1.00 9.81 O
ATOM 764 N CYS A 94 16.525 -0.652 34.191 1.00 9.58 N
ATOM 765 CA CYS A 94 15.270 -1.383 34.321 1.00 11.58 C
ATOM 766 C CYS A 94 14.964 -1.598 35.795 1.00 11.27 C
ATOM 767 O CYS A 94 15.816 -1.357 36.656 1.00 12.83 O
ATOM 768 CB CYS A 94 15.356 -2.754 33.632 1.00 11.71 C
ATOM 769 SG CYS A 94 16.168 -4.070 34.608 1.00 12.06 S
ATOM 770 N ASP A 95 13.733 -2.008 36.085 1.00 13.29 N
ATOM 771 CA ASP A 95 13.353 -2.344 37.450 1.00 15.28 C
ATOM 772 C ASP A 95 13.033 -3.840 37.408 1.00 15.81 C
ATOM 773 O ASP A 95 13.032 -4.440 36.335 1.00 14.16 O
ATOM 774 CB ASP A 95 12.152 -1.522 37.960 1.00 14.63 C
ATOM 775 CG ASP A 95 11.055 -1.342 36.927 1.00 16.19 C
ATOM 776 OD1 ASP A 95 10.946 -2.160 35.993 1.00 16.16 O
ATOM 777 OD2 ASP A 95 10.279 -0.370 37.074 1.00 16.66 O
ATOM 778 N ASP A 96 12.781 -4.451 38.561 1.00 18.96 N
ATOM 779 CA ASP A 96 12.504 -5.884 38.602 1.00 20.56 C
ATOM 780 C ASP A 96 11.413 -6.363 37.654 1.00 20.25 C
ATOM 781 O ASP A 96 11.549 -7.411 37.027 1.00 19.79 O
ATOM 782 CB ASP A 96 12.154 -6.317 40.026 1.00 25.74 C
ATOM 783 CG ASP A 96 13.353 -6.310 40.945 1.00 27.79 C
ATOM 784 OD1 ASP A 96 14.408 -6.847 40.547 1.00 33.13 O
ATOM 785 OD2 ASP A 96 13.237 -5.779 42.067 1.00 35.26 O
ATOM 786 N GLU A 97 10.333 -5.599 37.556 1.00 20.92 N
ATOM 787 CA GLU A 97 9.216 -5.962 36.693 1.00 22.17 C
ATOM 788 C GLU A 97 9.593 -6.037 35.216 1.00 22.07 C
ATOM 789 O GLU A 97 8.908 -6.691 34.431 1.00 21.21 O
ATOM 790 CB GLU A 97 8.068 -4.964 36.869 1.00 25.44 C
ATOM 791 CG GLU A 97 7.371 -5.031 38.219 1.00 37.78 C
ATOM 792 CD GLU A 97 8.317 -4.805 39.384 1.00 43.22 C
ATOM 793 OE1 GLU A 97 9.043 -3.786 39.372 1.00 45.28 O
ATOM 794 OE2 GLU A 97 8.330 -5.642 40.314 1.00 42.89 O
ATOM 795 N ASN A 98 10.685 -5.380 34.840 1.00 17.80 N
ATOM 796 CA ASN A 98 11.110 -5.371 33.443 1.00 15.94 C
ATOM 797 C ASN A 98 12.511 -5.926 33.204 1.00 16.06 C
ATOM 798 O ASN A 98 13.054 -5.792 32.104 1.00 13.18 O
ATOM 799 CB ASN A 98 11.031 -3.942 32.901 1.00 16.46 C
ATOM 800 CG ASN A 98 9.621 -3.391 32.918 1.00 19.73 C
ATOM 801 OD1 ASN A 98 8.775 -3.797 32.120 1.00 23.19 O
ATOM 802 ND2 ASN A 98 9.354 -2.468 33.837 1.00 17.02 N
ATOM 803 N LYS A 99 13.088 -6.561 34.218 1.00 13.73 N
ATOM 804 CA LYS A 99 14.437 -7.107 34.102 1.00 14.87 C
ATOM 805 C LYS A 99 14.580 -8.218 33.063 1.00 14.96 C
ATOM 806 O LYS A 99 15.552 -8.238 32.307 1.00 14.14 O
ATOM 807 CB LYS A 99 14.920 -7.605 35.468 1.00 16.79 C
ATOM 808 CG LYS A 99 16.342 -8.144 35.460 1.00 18.70 C
ATOM 809 CD LYS A 99 16.878 -8.325 36.875 1.00 25.73 C
ATOM 810 CE LYS A 99 16.023 -9.280 37.685 1.00 30.36 C
ATOM 811 NZ LYS A 99 16.496 -9.377 39.094 1.00 34.03 N
ATOM 812 N VAL A 100 13.628 -9.147 33.025 1.00 15.47 N
ATOM 813 CA VAL A 100 13.688 -10.233 32.049 1.00 14.52 C
ATOM 814 C VAL A 100 13.612 -9.647 30.641 1.00 13.62 C
ATOM 815 O VAL A 100 14.373 -10.028 29.752 1.00 13.40 O
ATOM 816 CB VAL A 100 12.520 -11.229 32.240 1.00 17.58 C
ATOM 817 CG1 VAL A 100 12.531 -12.268 31.124 1.00 14.99 C
ATOM 818 CG2 VAL A 100 12.641 -11.914 33.593 1.00 18.88 C
ATOM 819 N PHE A 101 12.694 -8.707 30.454 1.00 14.49 N
ATOM 820 CA PHE A 101 12.518 -8.053 29.166 1.00 16.41 C
ATOM 821 C PHE A 101 13.790 -7.329 28.728 1.00 16.42 C
ATOM 822 O PHE A 101 14.326 -7.593 27.650 1.00 13.50 O
ATOM 823 CB PHE A 101 11.368 -7.052 29.243 1.00 16.85 C
ATOM 824 CG PHE A 101 11.188 -6.238 27.995 1.00 21.20 C
ATOM 825 CD1 PHE A 101 10.807 -6.843 26.801 1.00 22.47 C
ATOM 826 CD2 PHE A 101 11.394 -4.864 28.013 1.00 24.04 C
ATOM 827 CE1 PHE A 101 10.633 -6.091 25.642 1.00 24.25 C
ATOM 828 CE2 PHE A 101 11.224 -4.101 26.861 1.00 28.34 C
ATOM 829 CZ PHE A 101 10.842 -4.716 25.672 1.00 27.51 C
HETATM 830 N MSE A 102 14.271 -6.413 29.562 1.00 15.07 N
HETATM 831 CA MSE A 102 15.471 -5.656 29.229 1.00 15.73 C
HETATM 832 C MSE A 102 16.697 -6.542 29.030 1.00 15.29 C
HETATM 833 O MSE A 102 17.510 -6.291 28.138 1.00 14.86 O
HETATM 834 CB MSE A 102 15.761 -4.609 30.308 1.00 16.50 C
HETATM 835 CG MSE A 102 16.999 -3.766 30.031 1.00 12.98 C
HETATM 836 SE MSE A 102 16.938 -2.880 28.300 1.00 27.13 SE
HETATM 837 CE MSE A 102 15.668 -1.533 28.732 1.00 8.64 C
ATOM 838 N SER A 103 16.835 -7.578 29.852 1.00 17.48 N
ATOM 839 CA SER A 103 17.978 -8.478 29.733 1.00 17.27 C
ATOM 840 C SER A 103 18.018 -9.139 28.360 1.00 17.75 C
ATOM 841 O SER A 103 19.089 -9.324 27.783 1.00 18.72 O
ATOM 842 CB SER A 103 17.930 -9.555 30.822 1.00 17.33 C
ATOM 843 OG SER A 103 18.125 -8.986 32.103 1.00 22.22 O
ATOM 844 N LYS A 104 16.848 -9.489 27.836 1.00 18.40 N
ATOM 845 CA LYS A 104 16.772 -10.126 26.526 1.00 17.38 C
ATOM 846 C LYS A 104 17.196 -9.150 25.431 1.00 17.58 C
ATOM 847 O LYS A 104 17.929 -9.518 24.512 1.00 19.01 O
ATOM 848 CB LYS A 104 15.349 -10.623 26.261 1.00 18.69 C
ATOM 849 CG LYS A 104 15.172 -11.313 24.916 1.00 22.54 C
ATOM 850 CD LYS A 104 13.791 -11.952 24.792 1.00 23.95 C
ATOM 851 CE LYS A 104 12.674 -10.929 24.964 1.00 27.27 C
ATOM 852 NZ LYS A 104 11.319 -11.539 24.823 1.00 29.03 N
ATOM 853 N ILE A 105 16.734 -7.906 25.533 1.00 16.37 N
ATOM 854 CA ILE A 105 17.081 -6.884 24.551 1.00 16.07 C
ATOM 855 C ILE A 105 18.596 -6.688 24.526 1.00 14.20 C
ATOM 856 O ILE A 105 19.206 -6.640 23.458 1.00 15.34 O
ATOM 857 CB ILE A 105 16.404 -5.529 24.878 1.00 15.75 C
ATOM 858 CG1 ILE A 105 14.885 -5.662 24.757 1.00 18.48 C
ATOM 859 CG2 ILE A 105 16.901 -4.445 23.925 1.00 16.56 C
ATOM 860 CD1 ILE A 105 14.134 -4.377 25.044 1.00 22.69 C
ATOM 861 N VAL A 106 19.198 -6.572 25.706 1.00 11.65 N
ATOM 862 CA VAL A 106 20.641 -6.388 25.798 1.00 13.23 C
ATOM 863 C VAL A 106 21.380 -7.546 25.132 1.00 17.19 C
ATOM 864 O VAL A 106 22.370 -7.336 24.431 1.00 15.73 O
ATOM 865 CB VAL A 106 21.103 -6.275 27.268 1.00 14.34 C
ATOM 866 CG1 VAL A 106 22.621 -6.188 27.332 1.00 14.51 C
ATOM 867 CG2 VAL A 106 20.482 -5.042 27.909 1.00 12.30 C
ATOM 868 N ASP A 107 20.894 -8.767 25.344 1.00 15.92 N
ATOM 869 CA ASP A 107 21.528 -9.939 24.748 1.00 19.28 C
ATOM 870 C ASP A 107 21.531 -9.877 23.224 1.00 18.25 C
ATOM 871 O ASP A 107 22.408 -10.453 22.581 1.00 19.40 O
ATOM 872 CB ASP A 107 20.820 -11.232 25.174 1.00 21.10 C
ATOM 873 CG ASP A 107 20.957 -11.522 26.654 1.00 24.44 C
ATOM 874 OD1 ASP A 107 22.031 -11.238 27.225 1.00 24.29 O
ATOM 875 OD2 ASP A 107 19.993 -12.057 27.244 1.00 26.54 O
ATOM 876 N ASN A 108 20.550 -9.187 22.650 1.00 16.67 N
ATOM 877 CA ASN A 108 20.448 -9.090 21.196 1.00 16.97 C
ATOM 878 C ASN A 108 21.076 -7.848 20.570 1.00 15.91 C
ATOM 879 O ASN A 108 20.954 -7.636 19.366 1.00 13.39 O
ATOM 880 CB ASN A 108 18.984 -9.189 20.759 1.00 19.30 C
ATOM 881 CG ASN A 108 18.415 -10.582 20.944 1.00 23.83 C
ATOM 882 OD1 ASN A 108 18.184 -11.032 22.068 1.00 26.90 O
ATOM 883 ND2 ASN A 108 18.194 -11.278 19.835 1.00 22.68 N
ATOM 884 N LEU A 109 21.741 -7.026 21.374 1.00 14.98 N
ATOM 885 CA LEU A 109 22.385 -5.828 20.840 1.00 14.18 C
ATOM 886 C LEU A 109 23.672 -6.221 20.135 1.00 16.48 C
ATOM 887 O LEU A 109 24.253 -7.265 20.431 1.00 14.47 O
ATOM 888 CB LEU A 109 22.727 -4.847 21.963 1.00 11.94 C
ATOM 889 CG LEU A 109 21.578 -4.194 22.728 1.00 9.62 C
ATOM 890 CD1 LEU A 109 22.146 -3.384 23.887 1.00 8.05 C
ATOM 891 CD2 LEU A 109 20.769 -3.304 21.795 1.00 8.93 C
ATOM 892 N PRO A 110 24.137 -5.388 19.190 1.00 16.03 N
ATOM 893 CA PRO A 110 25.377 -5.682 18.467 1.00 18.68 C
ATOM 894 C PRO A 110 26.539 -5.848 19.445 1.00 18.36 C
ATOM 895 O PRO A 110 26.588 -5.189 20.486 1.00 16.80 O
ATOM 896 CB PRO A 110 25.551 -4.459 17.572 1.00 17.68 C
ATOM 897 CG PRO A 110 24.137 -4.055 17.288 1.00 20.90 C
ATOM 898 CD PRO A 110 23.488 -4.181 18.649 1.00 17.75 C
ATOM 899 N THR A 111 27.473 -6.725 19.102 1.00 17.87 N
ATOM 900 CA THR A 111 28.631 -6.987 19.946 1.00 19.17 C
ATOM 901 C THR A 111 29.378 -5.717 20.354 1.00 18.59 C
ATOM 902 O THR A 111 29.683 -5.518 21.529 1.00 15.29 O
ATOM 903 CB THR A 111 29.625 -7.918 19.230 1.00 18.45 C
ATOM 904 OG1 THR A 111 28.975 -9.154 18.913 1.00 26.33 O
ATOM 905 CG2 THR A 111 30.828 -8.193 20.116 1.00 22.32 C
ATOM 906 N ALA A 112 29.671 -4.864 19.377 1.00 16.37 N
ATOM 907 CA ALA A 112 30.402 -3.627 19.631 1.00 18.47 C
ATOM 908 C ALA A 112 29.717 -2.716 20.643 1.00 17.46 C
ATOM 909 O ALA A 112 30.381 -2.010 21.401 1.00 19.35 O
ATOM 910 CB ALA A 112 30.624 -2.875 18.321 1.00 18.49 C
ATOM 911 N ILE A 113 28.390 -2.731 20.658 1.00 12.89 N
ATOM 912 CA ILE A 113 27.644 -1.887 21.583 1.00 16.15 C
ATOM 913 C ILE A 113 27.695 -2.444 23.001 1.00 15.76 C
ATOM 914 O ILE A 113 27.925 -1.706 23.959 1.00 17.40 O
ATOM 915 CB ILE A 113 26.179 -1.734 21.130 1.00 15.62 C
ATOM 916 CG1 ILE A 113 26.143 -1.026 19.771 1.00 16.32 C
ATOM 917 CG2 ILE A 113 25.391 -0.936 22.162 1.00 15.49 C
ATOM 918 CD1 ILE A 113 24.753 -0.743 19.245 1.00 16.88 C
ATOM 919 N LYS A 114 27.491 -3.749 23.134 1.00 16.40 N
ATOM 920 CA LYS A 114 27.527 -4.383 24.446 1.00 17.88 C
ATOM 921 C LYS A 114 28.898 -4.255 25.099 1.00 18.65 C
ATOM 922 O LYS A 114 29.004 -4.206 26.323 1.00 19.90 O
ATOM 923 CB LYS A 114 27.149 -5.863 24.332 1.00 20.13 C
ATOM 924 CG LYS A 114 25.693 -6.097 23.967 1.00 23.14 C
ATOM 925 CD LYS A 114 25.324 -7.573 24.001 1.00 28.04 C
ATOM 926 CE LYS A 114 25.952 -8.340 22.854 1.00 31.86 C
ATOM 927 NZ LYS A 114 25.460 -9.747 22.805 1.00 36.71 N
ATOM 928 N ARG A 115 29.946 -4.185 24.285 1.00 19.13 N
ATOM 929 CA ARG A 115 31.299 -4.081 24.819 1.00 21.63 C
ATOM 930 C ARG A 115 31.620 -2.708 25.393 1.00 21.69 C
ATOM 931 O ARG A 115 32.625 -2.540 26.082 1.00 19.57 O
ATOM 932 CB ARG A 115 32.322 -4.458 23.745 1.00 29.14 C
ATOM 933 CG ARG A 115 32.066 -5.832 23.150 1.00 40.81 C
ATOM 934 CD ARG A 115 33.338 -6.510 22.674 1.00 51.82 C
ATOM 935 NE ARG A 115 33.045 -7.808 22.070 1.00 60.88 N
ATOM 936 CZ ARG A 115 33.959 -8.734 21.800 1.00 65.54 C
ATOM 937 NH1 ARG A 115 35.235 -8.513 22.083 1.00 68.77 N
ATOM 938 NH2 ARG A 115 33.595 -9.882 21.242 1.00 67.23 N
ATOM 939 N ASN A 116 30.768 -1.727 25.116 1.00 16.60 N
ATOM 940 CA ASN A 116 30.983 -0.385 25.639 1.00 13.28 C
ATOM 941 C ASN A 116 29.921 -0.012 26.664 1.00 13.98 C
ATOM 942 O ASN A 116 29.466 1.131 26.721 1.00 11.77 O
ATOM 943 CB ASN A 116 31.011 0.644 24.508 1.00 17.96 C
ATOM 944 CG ASN A 116 32.280 0.560 23.682 1.00 23.95 C
ATOM 945 OD1 ASN A 116 32.393 -0.258 22.771 1.00 27.65 O
ATOM 946 ND2 ASN A 116 33.253 1.399 24.014 1.00 24.96 N
ATOM 947 N LEU A 117 29.532 -0.993 27.472 1.00 14.76 N
ATOM 948 CA LEU A 117 28.539 -0.790 28.520 1.00 16.01 C
ATOM 949 C LEU A 117 29.169 0.082 29.606 1.00 16.50 C
ATOM 950 O LEU A 117 30.149 -0.311 30.238 1.00 19.94 O
ATOM 951 CB LEU A 117 28.119 -2.142 29.100 1.00 13.89 C
ATOM 952 CG LEU A 117 27.156 -2.147 30.288 1.00 15.07 C
ATOM 953 CD1 LEU A 117 25.825 -1.532 29.881 1.00 13.69 C
ATOM 954 CD2 LEU A 117 26.961 -3.579 30.766 1.00 16.68 C
ATOM 955 N ILE A 118 28.601 1.266 29.813 1.00 11.74 N
ATOM 956 CA ILE A 118 29.109 2.215 30.801 1.00 13.36 C
ATOM 957 C ILE A 118 28.505 1.995 32.180 1.00 12.53 C
ATOM 958 O ILE A 118 29.206 2.033 33.191 1.00 12.37 O
ATOM 959 CB ILE A 118 28.810 3.664 30.367 1.00 14.81 C
ATOM 960 CG1 ILE A 118 29.505 3.958 29.037 1.00 17.20 C
ATOM 961 CG2 ILE A 118 29.273 4.644 31.445 1.00 16.33 C
ATOM 962 CD1 ILE A 118 29.137 5.297 28.442 1.00 15.95 C
ATOM 963 N LYS A 119 27.196 1.782 32.216 1.00 9.94 N
ATOM 964 CA LYS A 119 26.491 1.553 33.470 1.00 8.83 C
ATOM 965 C LYS A 119 25.264 0.711 33.185 1.00 12.00 C
ATOM 966 O LYS A 119 24.547 0.953 32.216 1.00 9.96 O
ATOM 967 CB LYS A 119 26.062 2.883 34.105 1.00 10.54 C
ATOM 968 CG LYS A 119 25.176 2.742 35.358 1.00 12.68 C
ATOM 969 CD LYS A 119 25.904 2.066 36.516 1.00 12.97 C
ATOM 970 CE LYS A 119 25.005 1.904 37.747 1.00 9.78 C
ATOM 971 NZ LYS A 119 24.704 3.205 38.415 1.00 9.17 N
ATOM 972 N ASP A 120 25.043 -0.291 34.025 1.00 11.88 N
ATOM 973 CA ASP A 120 23.892 -1.164 33.887 1.00 12.15 C
ATOM 974 C ASP A 120 23.189 -1.204 35.238 1.00 13.35 C
ATOM 975 O ASP A 120 23.647 -1.875 36.158 1.00 13.72 O
ATOM 976 CB ASP A 120 24.332 -2.579 33.492 1.00 13.47 C
ATOM 977 CG ASP A 120 23.156 -3.506 33.216 1.00 18.79 C
ATOM 978 OD1 ASP A 120 22.239 -3.586 34.061 1.00 19.37 O
ATOM 979 OD2 ASP A 120 23.149 -4.162 32.155 1.00 26.90 O
ATOM 980 N PHE A 121 22.112 -0.440 35.374 1.00 9.12 N
ATOM 981 CA PHE A 121 21.345 -0.460 36.612 1.00 8.53 C
ATOM 982 C PHE A 121 20.158 -1.323 36.233 1.00 10.99 C
ATOM 983 O PHE A 121 19.062 -0.820 35.976 1.00 12.01 O
ATOM 984 CB PHE A 121 20.864 0.938 37.000 1.00 8.25 C
ATOM 985 CG PHE A 121 20.292 1.008 38.388 1.00 9.71 C
ATOM 986 CD1 PHE A 121 21.126 1.167 39.490 1.00 9.45 C
ATOM 987 CD2 PHE A 121 18.926 0.875 38.597 1.00 13.08 C
ATOM 988 CE1 PHE A 121 20.606 1.190 40.781 1.00 10.63 C
ATOM 989 CE2 PHE A 121 18.394 0.895 39.887 1.00 11.99 C
ATOM 990 CZ PHE A 121 19.238 1.054 40.981 1.00 12.89 C
ATOM 991 N CYS A 122 20.385 -2.631 36.182 1.00 12.06 N
ATOM 992 CA CYS A 122 19.331 -3.542 35.781 1.00 13.91 C
ATOM 993 C CYS A 122 19.612 -5.009 36.086 1.00 15.31 C
ATOM 994 O CYS A 122 19.032 -5.583 37.008 1.00 15.62 O
ATOM 995 CB CYS A 122 19.078 -3.364 34.280 1.00 13.84 C
ATOM 996 SG CYS A 122 17.857 -4.508 33.568 1.00 13.88 S
ATOM 997 N ARG A 123 20.511 -5.611 35.318 1.00 16.09 N
ATOM 998 CA ARG A 123 20.827 -7.025 35.485 1.00 18.40 C
ATOM 999 C ARG A 123 21.351 -7.484 36.846 1.00 17.94 C
ATOM 1000 O ARG A 123 21.097 -8.621 37.244 1.00 17.65 O
ATOM 1001 CB ARG A 123 21.772 -7.468 34.366 1.00 19.65 C
ATOM 1002 CG ARG A 123 21.072 -7.500 33.007 1.00 28.18 C
ATOM 1003 CD ARG A 123 22.004 -7.899 31.879 1.00 29.84 C
ATOM 1004 NE ARG A 123 23.045 -6.901 31.658 1.00 32.33 N
ATOM 1005 CZ ARG A 123 24.006 -7.013 30.748 1.00 29.90 C
ATOM 1006 NH1 ARG A 123 24.060 -8.083 29.967 1.00 27.70 N
ATOM 1007 NH2 ARG A 123 24.913 -6.056 30.619 1.00 29.83 N
ATOM 1008 N LYS A 124 22.063 -6.621 37.567 1.00 13.84 N
ATOM 1009 CA LYS A 124 22.574 -7.010 38.881 1.00 12.49 C
ATOM 1010 C LYS A 124 21.558 -6.778 40.004 1.00 10.77 C
ATOM 1011 O LYS A 124 21.839 -7.074 41.164 1.00 12.23 O
ATOM 1012 CB LYS A 124 23.877 -6.264 39.210 1.00 15.02 C
ATOM 1013 CG LYS A 124 25.124 -6.785 38.485 1.00 17.86 C
ATOM 1014 CD LYS A 124 26.376 -6.035 38.942 1.00 21.21 C
ATOM 1015 CE LYS A 124 27.647 -6.566 38.282 1.00 24.54 C
ATOM 1016 NZ LYS A 124 28.878 -5.873 38.791 1.00 21.46 N
ATOM 1017 N LEU A 125 20.385 -6.246 39.670 1.00 9.74 N
ATOM 1018 CA LEU A 125 19.359 -6.009 40.684 1.00 11.32 C
ATOM 1019 C LEU A 125 18.803 -7.337 41.180 1.00 14.53 C
ATOM 1020 O LEU A 125 18.539 -8.239 40.388 1.00 14.63 O
ATOM 1021 CB LEU A 125 18.213 -5.171 40.115 1.00 11.72 C
ATOM 1022 CG LEU A 125 18.482 -3.693 39.848 1.00 13.13 C
ATOM 1023 CD1 LEU A 125 17.307 -3.105 39.084 1.00 13.14 C
ATOM 1024 CD2 LEU A 125 18.690 -2.955 41.168 1.00 13.06 C
ATOM 1025 N SER A 126 18.630 -7.454 42.493 1.00 13.97 N
ATOM 1026 CA SER A 126 18.095 -8.673 43.087 1.00 18.03 C
ATOM 1027 C SER A 126 16.570 -8.624 43.178 1.00 20.57 C
ATOM 1028 O SER A 126 15.954 -9.708 43.269 1.00 24.85 O
ATOM 1029 CB SER A 126 18.697 -8.899 44.479 1.00 18.07 C
ATOM 1030 OG SER A 126 18.407 -7.823 45.351 1.00 15.78 O
TER 1031 SER A 126
ATOM 1032 N TYR B 3 24.874 -14.238 65.592 1.00 21.36 N
ATOM 1033 CA TYR B 3 24.778 -13.845 64.154 1.00 14.51 C
ATOM 1034 C TYR B 3 24.644 -15.062 63.250 1.00 13.36 C
ATOM 1035 O TYR B 3 25.275 -16.090 63.494 1.00 14.59 O
ATOM 1036 CB TYR B 3 26.025 -13.057 63.736 1.00 14.32 C
ATOM 1037 CG TYR B 3 26.252 -11.805 64.544 1.00 12.05 C
ATOM 1038 CD1 TYR B 3 27.202 -11.769 65.564 1.00 12.30 C
ATOM 1039 CD2 TYR B 3 25.492 -10.662 64.309 1.00 10.81 C
ATOM 1040 CE1 TYR B 3 27.388 -10.616 66.331 1.00 14.06 C
ATOM 1041 CE2 TYR B 3 25.667 -9.512 65.069 1.00 13.41 C
ATOM 1042 CZ TYR B 3 26.614 -9.496 66.076 1.00 15.79 C
ATOM 1043 OH TYR B 3 26.781 -8.356 66.825 1.00 14.76 O
ATOM 1044 N LYS B 4 23.823 -14.950 62.210 1.00 11.22 N
ATOM 1045 CA LYS B 4 23.663 -16.057 61.274 1.00 13.45 C
ATOM 1046 C LYS B 4 23.831 -15.659 59.804 1.00 10.36 C
ATOM 1047 O LYS B 4 23.870 -16.522 58.933 1.00 10.86 O
ATOM 1048 CB LYS B 4 22.316 -16.761 61.471 1.00 16.58 C
ATOM 1049 CG LYS B 4 21.093 -15.942 61.128 1.00 16.48 C
ATOM 1050 CD LYS B 4 19.882 -16.859 61.028 1.00 21.17 C
ATOM 1051 CE LYS B 4 18.595 -16.085 60.822 1.00 27.98 C
ATOM 1052 NZ LYS B 4 18.247 -15.263 62.014 1.00 29.87 N
ATOM 1053 N ASN B 5 23.921 -14.359 59.523 1.00 8.93 N
ATOM 1054 CA ASN B 5 24.134 -13.899 58.150 1.00 8.93 C
ATOM 1055 C ASN B 5 24.842 -12.553 58.160 1.00 8.91 C
ATOM 1056 O ASN B 5 24.222 -11.500 58.322 1.00 10.65 O
ATOM 1057 CB ASN B 5 22.820 -13.791 57.372 1.00 11.88 C
ATOM 1058 CG ASN B 5 23.049 -13.491 55.898 1.00 13.66 C
ATOM 1059 OD1 ASN B 5 24.105 -13.815 55.347 1.00 19.21 O
ATOM 1060 ND2 ASN B 5 22.060 -12.887 55.250 1.00 22.41 N
ATOM 1061 N ILE B 6 26.152 -12.612 57.965 1.00 8.00 N
ATOM 1062 CA ILE B 6 27.003 -11.433 57.994 1.00 9.10 C
ATOM 1063 C ILE B 6 27.177 -10.713 56.666 1.00 8.01 C
ATOM 1064 O ILE B 6 27.518 -11.327 55.654 1.00 9.10 O
ATOM 1065 CB ILE B 6 28.416 -11.809 58.500 1.00 9.03 C
ATOM 1066 CG1 ILE B 6 28.320 -12.480 59.874 1.00 9.90 C
ATOM 1067 CG2 ILE B 6 29.303 -10.572 58.544 1.00 10.80 C
ATOM 1068 CD1 ILE B 6 27.770 -11.591 60.966 1.00 9.93 C
ATOM 1069 N LEU B 7 26.941 -9.405 56.678 1.00 8.14 N
ATOM 1070 CA LEU B 7 27.147 -8.591 55.489 1.00 6.09 C
ATOM 1071 C LEU B 7 28.588 -8.124 55.596 1.00 6.79 C
ATOM 1072 O LEU B 7 28.950 -7.434 56.551 1.00 7.97 O
ATOM 1073 CB LEU B 7 26.225 -7.367 55.478 1.00 7.81 C
ATOM 1074 CG LEU B 7 26.529 -6.349 54.369 1.00 8.36 C
ATOM 1075 CD1 LEU B 7 26.304 -6.988 53.002 1.00 9.26 C
ATOM 1076 CD2 LEU B 7 25.638 -5.118 54.545 1.00 7.47 C
ATOM 1077 N THR B 8 29.417 -8.518 54.635 1.00 6.69 N
ATOM 1078 CA THR B 8 30.821 -8.123 54.639 1.00 7.81 C
ATOM 1079 C THR B 8 31.088 -7.181 53.468 1.00 6.38 C
ATOM 1080 O THR B 8 30.726 -7.481 52.328 1.00 6.46 O
ATOM 1081 CB THR B 8 31.759 -9.352 54.501 1.00 10.09 C
ATOM 1082 OG1 THR B 8 31.631 -10.194 55.656 1.00 7.20 O
ATOM 1083 CG2 THR B 8 33.214 -8.901 54.370 1.00 8.79 C
ATOM 1084 N LEU B 9 31.706 -6.039 53.757 1.00 4.35 N
ATOM 1085 CA LEU B 9 32.043 -5.062 52.729 1.00 5.78 C
ATOM 1086 C LEU B 9 33.558 -4.900 52.689 1.00 6.78 C
ATOM 1087 O LEU B 9 34.209 -4.773 53.731 1.00 6.68 O
ATOM 1088 CB LEU B 9 31.407 -3.701 53.039 1.00
gitextract_x11711o3/
├── .gitignore
├── README.md
├── alphafold/
│ ├── __init__.py
│ ├── common/
│ │ ├── __init__.py
│ │ ├── confidence.py
│ │ ├── protein.py
│ │ ├── protein_test.py
│ │ ├── residue_constants.py
│ │ ├── residue_constants_test.py
│ │ ├── stereo_chemical_props.txt
│ │ └── testdata/
│ │ └── 2rbg.pdb
│ ├── data/
│ │ ├── __init__.py
│ │ ├── feature_processing.py
│ │ ├── mmcif_parsing.py
│ │ ├── msa_identifiers.py
│ │ ├── msa_pairing.py
│ │ ├── parsers.py
│ │ ├── pipeline.py
│ │ ├── pipeline_multimer.py
│ │ ├── templates.py
│ │ └── tools/
│ │ ├── __init__.py
│ │ ├── hhblits.py
│ │ ├── hhsearch.py
│ │ ├── hmmbuild.py
│ │ ├── hmmsearch.py
│ │ ├── jackhmmer.py
│ │ ├── kalign.py
│ │ └── utils.py
│ ├── model/
│ │ ├── __init__.py
│ │ ├── all_atom.py
│ │ ├── all_atom_multimer.py
│ │ ├── all_atom_test.py
│ │ ├── common_modules.py
│ │ ├── config.py
│ │ ├── data.py
│ │ ├── features.py
│ │ ├── folding.py
│ │ ├── folding_multimer.py
│ │ ├── geometry/
│ │ │ ├── __init__.py
│ │ │ ├── rigid_matrix_vector.py
│ │ │ ├── rotation_matrix.py
│ │ │ ├── struct_of_array.py
│ │ │ ├── test_utils.py
│ │ │ ├── utils.py
│ │ │ └── vector.py
│ │ ├── layer_stack.py
│ │ ├── layer_stack_test.py
│ │ ├── lddt.py
│ │ ├── lddt_test.py
│ │ ├── mapping.py
│ │ ├── model.py
│ │ ├── modules.py
│ │ ├── modules_multimer.py
│ │ ├── prng.py
│ │ ├── prng_test.py
│ │ ├── quat_affine.py
│ │ ├── quat_affine_test.py
│ │ ├── r3.py
│ │ ├── tf/
│ │ │ ├── __init__.py
│ │ │ ├── data_transforms.py
│ │ │ ├── input_pipeline.py
│ │ │ ├── protein_features.py
│ │ │ ├── protein_features_test.py
│ │ │ ├── proteins_dataset.py
│ │ │ ├── shape_helpers.py
│ │ │ ├── shape_helpers_test.py
│ │ │ ├── shape_placeholders.py
│ │ │ └── utils.py
│ │ └── utils.py
│ ├── notebooks/
│ │ ├── __init__.py
│ │ ├── notebook_utils.py
│ │ └── notebook_utils_test.py
│ └── relax/
│ ├── __init__.py
│ ├── amber_minimize.py
│ ├── amber_minimize_test.py
│ ├── cleanup.py
│ ├── cleanup_test.py
│ ├── relax.py
│ ├── relax_test.py
│ ├── testdata/
│ │ ├── model_output.pdb
│ │ ├── multiple_disulfides_target.pdb
│ │ ├── with_violations.pdb
│ │ └── with_violations_casp14.pdb
│ ├── utils.py
│ └── utils_test.py
├── docs/
│ ├── python_inputs.md
│ └── usage.md
├── environment/
│ └── environment_gpu.yml
├── input/
│ └── mono_set1/
│ ├── GA98.fasta
│ └── GB98.fasta
├── requirements.txt
├── run_alphafold.py
├── run_alphafold.sh
├── scripts/
│ ├── download_all_data.sh
│ ├── download_alphafold_params.sh
│ ├── download_bfd.sh
│ ├── download_mgnify.sh
│ ├── download_pdb70.sh
│ ├── download_pdb_mmcif.sh
│ ├── download_pdb_seqres.sh
│ ├── download_small_bfd.sh
│ ├── download_uniprot.sh
│ ├── download_uniref30.sh
│ └── download_uniref90.sh
└── tools/
├── batch_scripts/
│ ├── batch_alphafold.sh
│ ├── batch_feature.sh
│ └── move_batch.sh
└── plddt.py
SYMBOL INDEX (739 symbols across 68 files)
FILE: alphafold/common/confidence.py
function compute_plddt (line 22) | def compute_plddt(logits: np.ndarray) -> np.ndarray:
function _calculate_bin_centers (line 39) | def _calculate_bin_centers(breaks: np.ndarray):
function _calculate_expected_aligned_error (line 58) | def _calculate_expected_aligned_error(
function compute_predicted_aligned_error (line 80) | def compute_predicted_aligned_error(
function predicted_tm_score (line 111) | def predicted_tm_score(
FILE: alphafold/common/protein.py
class Protein (line 32) | class Protein:
method __post_init__ (line 59) | def __post_init__(self):
function from_pdb_string (line 66) | def from_pdb_string(pdb_str: str, chain_id: Optional[str] = None) -> Pro...
function _chain_end (line 140) | def _chain_end(atom_index, end_resname, chain_name, residue_index) -> str:
function to_pdb (line 146) | def to_pdb(prot: Protein) -> str:
function ideal_atom_mask (line 226) | def ideal_atom_mask(prot: Protein) -> np.ndarray:
function from_prediction (line 242) | def from_prediction(
FILE: alphafold/common/protein_test.py
class ProteinTest (line 29) | class ProteinTest(parameterized.TestCase):
method _check_shapes (line 31) | def _check_shapes(self, prot, num_res):
method test_from_pdb_str (line 48) | def test_from_pdb_str(self, pdb_file, chain_id, num_res, num_chains):
method test_to_pdb (line 60) | def test_to_pdb(self):
method test_ideal_atom_mask (line 85) | def test_ideal_atom_mask(self):
method test_too_many_chains (line 100) | def test_too_many_chains(self):
FILE: alphafold/common/residue_constants.py
function load_stereo_chemical_props (line 392) | def load_stereo_chemical_props() -> Tuple[Mapping[str, List[Bond]],
function sequence_to_onehot (line 546) | def sequence_to_onehot(
function _make_standard_atom_mask (line 695) | def _make_standard_atom_mask() -> np.ndarray:
function chi_angle_atom (line 713) | def chi_angle_atom(atom_index: int) -> np.ndarray:
function _make_rigid_transformation_4x4 (line 755) | def _make_rigid_transformation_4x4(ex, ey, translation):
function _make_rigid_group_constants (line 784) | def _make_rigid_group_constants():
function make_atom14_dists_bounds (line 855) | def make_atom14_dists_bounds(overlap_tolerance=1.5,
FILE: alphafold/common/residue_constants_test.py
class ResidueConstantsTest (line 23) | class ResidueConstantsTest(parameterized.TestCase):
method testChiAnglesAtoms (line 33) | def testChiAnglesAtoms(self, residue_name, chi_num):
method testChiGroupsForAtom (line 39) | def testChiGroupsForAtom(self):
method testResidueAtoms (line 53) | def testResidueAtoms(self, atom_name, num_residue_atoms):
method testStandardAtomMask (line 57) | def testStandardAtomMask(self):
method testAtomTypes (line 100) | def testAtomTypes(self):
method testRestypes (line 116) | def testRestypes(self):
method testSequenceToOneHotHHBlits (line 124) | def testSequenceToOneHotHHBlits(self):
method testSequenceToOneHotStandard (line 157) | def testSequenceToOneHotStandard(self):
method testSequenceToOneHotUnknownMapping (line 162) | def testSequenceToOneHotUnknownMapping(self):
method testSequenceToOneHotUnknownMappingError (line 181) | def testSequenceToOneHotUnknownMappingError(self, seq):
FILE: alphafold/data/feature_processing.py
function _is_homomer_or_monomer (line 39) | def _is_homomer_or_monomer(chains: Iterable[pipeline.FeatureDict]) -> bool:
function pair_and_merge (line 48) | def pair_and_merge(
function crop_chains (line 82) | def crop_chains(
function _crop_single_chain (line 112) | def _crop_single_chain(chain: pipeline.FeatureDict,
function process_final (line 163) | def process_final(np_example: pipeline.FeatureDict) -> pipeline.FeatureD...
function _correct_msa_restypes (line 172) | def _correct_msa_restypes(np_example):
function _make_seq_mask (line 180) | def _make_seq_mask(np_example):
function _make_msa_mask (line 185) | def _make_msa_mask(np_example):
function _filter_features (line 196) | def _filter_features(np_example: pipeline.FeatureDict) -> pipeline.Featu...
function process_unmerged_features (line 201) | def process_unmerged_features(
FILE: alphafold/data/mmcif_parsing.py
class Monomer (line 35) | class Monomer:
class AtomSite (line 43) | class AtomSite:
class ResiduePosition (line 56) | class ResiduePosition:
class ResidueAtPosition (line 63) | class ResidueAtPosition:
class MmcifObject (line 71) | class MmcifObject:
class ParsingResult (line 96) | class ParsingResult:
class ParseError (line 108) | class ParseError(Exception):
function mmcif_loop_to_list (line 112) | def mmcif_loop_to_list(prefix: str,
function mmcif_loop_to_dict (line 142) | def mmcif_loop_to_dict(prefix: str,
function parse (line 165) | def parse(*,
function _get_first_model (line 282) | def _get_first_model(structure: PdbStructure) -> PdbStructure:
function get_release_date (line 289) | def get_release_date(parsed_info: MmCIFDict) -> str:
function _get_header (line 295) | def _get_header(parsed_info: MmCIFDict) -> PdbHeader:
function _get_atom_site_list (line 324) | def _get_atom_site_list(parsed_info: MmCIFDict) -> Sequence[AtomSite]:
function _get_protein_chains (line 338) | def _get_protein_chains(
function _is_set (line 384) | def _is_set(data: str) -> bool:
FILE: alphafold/data/msa_identifiers.py
class Identifiers (line 50) | class Identifiers:
function _parse_sequence_identifier (line 54) | def _parse_sequence_identifier(msa_sequence_identifier: str) -> Identifi...
function _extract_sequence_identifier (line 75) | def _extract_sequence_identifier(description: str) -> Optional[str]:
function get_identifiers (line 84) | def get_identifiers(description: str) -> Identifiers:
FILE: alphafold/data/msa_pairing.py
function create_paired_features (line 54) | def create_paired_features(
function pad_features (line 88) | def pad_features(feature: np.ndarray, feature_name: str) -> np.ndarray:
function _make_msa_df (line 115) | def _make_msa_df(chain_features: pipeline.FeatureDict) -> pd.DataFrame:
function _create_species_dict (line 134) | def _create_species_dict(msa_df: pd.DataFrame) -> Dict[bytes, pd.DataFra...
function _match_rows_by_sequence_similarity (line 142) | def _match_rows_by_sequence_similarity(this_species_msa_dfs: List[pd.Dat...
function pair_sequences (line 178) | def pair_sequences(examples: List[pipeline.FeatureDict]
function reorder_paired_rows (line 231) | def reorder_paired_rows(all_paired_msa_rows_dict: Dict[int, np.ndarray]
function block_diag (line 257) | def block_diag(*arrs: np.ndarray, pad_value: float = 0.0) -> np.ndarray:
function _correct_post_merged_feats (line 266) | def _correct_post_merged_feats(
function _pad_templates (line 313) | def _pad_templates(chains: Sequence[pipeline.FeatureDict],
function _merge_features_from_multiple_chains (line 335) | def _merge_features_from_multiple_chains(
function _merge_homomers_dense_msa (line 369) | def _merge_homomers_dense_msa(
function _concatenate_paired_and_unpaired_features (line 396) | def _concatenate_paired_and_unpaired_features(
function merge_chain_features (line 411) | def merge_chain_features(np_chains_list: List[pipeline.FeatureDict],
function deduplicate_unpaired_sequences (line 441) | def deduplicate_unpaired_sequences(
FILE: alphafold/data/parsers.py
class Msa (line 30) | class Msa:
method __post_init__ (line 36) | def __post_init__(self):
method __len__ (line 46) | def __len__(self):
method truncate (line 49) | def truncate(self, max_seqs: int):
class TemplateHit (line 56) | class TemplateHit:
function parse_fasta (line 68) | def parse_fasta(fasta_string: str) -> Tuple[Sequence[str], Sequence[str]]:
function parse_stockholm (line 97) | def parse_stockholm(stockholm_string: str) -> Msa:
function parse_a3m (line 157) | def parse_a3m(a3m_string: str) -> Msa:
function _convert_sto_seq_to_a3m (line 194) | def _convert_sto_seq_to_a3m(
function convert_stockholm_to_a3m (line 203) | def convert_stockholm_to_a3m(stockholm_format: str,
function _keep_line (line 257) | def _keep_line(line: str, seqnames: Set[str]) -> bool:
function truncate_stockholm_msa (line 277) | def truncate_stockholm_msa(stockholm_msa_path: str, max_sequences: int) ...
function remove_empty_columns_from_stockholm_msa (line 300) | def remove_empty_columns_from_stockholm_msa(stockholm_msa: str) -> str:
function deduplicate_stockholm_msa (line 340) | def deduplicate_stockholm_msa(stockholm_msa: str) -> str:
function _get_hhr_line_regex_groups (line 375) | def _get_hhr_line_regex_groups(
function _update_hhr_residue_indices_list (line 383) | def _update_hhr_residue_indices_list(
function _parse_hhr_hit (line 395) | def _parse_hhr_hit(detailed_lines: Sequence[str]) -> TemplateHit:
function parse_hhr (line 491) | def parse_hhr(hhr_string: str) -> Sequence[TemplateHit]:
function parse_e_values_from_tblout (line 509) | def parse_e_values_from_tblout(tblout: str) -> Dict[str, float]:
function _get_indices (line 524) | def _get_indices(sequence: str, start: int) -> List[int]:
class HitMetadata (line 543) | class HitMetadata:
function _parse_hmmsearch_description (line 552) | def _parse_hmmsearch_description(description: str) -> HitMetadata:
function parse_hmmsearch_a3m (line 572) | def parse_hmmsearch_a3m(query_sequence: str,
FILE: alphafold/data/pipeline.py
function make_sequence_features (line 36) | def make_sequence_features(
function make_msa_features (line 53) | def make_msa_features(msas: Sequence[parsers.Msa]) -> FeatureDict:
function run_msa_tool (line 87) | def run_msa_tool(msa_runner, input_fasta_path: str, msa_out_path: str,
class DataPipeline (line 111) | class DataPipeline:
method __init__ (line 114) | def __init__(self,
method process (line 150) | def process(self, input_fasta_path: str, msa_output_dir: str) -> Featu...
FILE: alphafold/data/pipeline_multimer.py
class _FastaChain (line 40) | class _FastaChain:
function _make_chain_id_map (line 45) | def _make_chain_id_map(*,
function temp_fasta_file (line 65) | def temp_fasta_file(fasta_str: str):
function convert_monomer_features (line 72) | def convert_monomer_features(
function int_id_to_str_id (line 97) | def int_id_to_str_id(num: int) -> str:
function add_assembly_features (line 119) | def add_assembly_features(
function pad_msa (line 158) | def pad_msa(np_example, min_num_seq):
class DataPipeline (line 170) | class DataPipeline:
method __init__ (line 173) | def __init__(self,
method _process_single_chain (line 197) | def _process_single_chain(
method _all_seq_msa_features (line 224) | def _all_seq_msa_features(self, input_fasta_path, msa_output_dir):
method process (line 240) | def process(self,
FILE: alphafold/data/templates.py
class Error (line 35) | class Error(Exception):
class NoChainsError (line 39) | class NoChainsError(Error):
class SequenceNotInTemplateError (line 43) | class SequenceNotInTemplateError(Error):
class NoAtomDataInTemplateError (line 47) | class NoAtomDataInTemplateError(Error):
class TemplateAtomMaskAllZerosError (line 51) | class TemplateAtomMaskAllZerosError(Error):
class QueryToTemplateAlignError (line 55) | class QueryToTemplateAlignError(Error):
class CaDistanceError (line 59) | class CaDistanceError(Error):
class MultipleChainsError (line 63) | class MultipleChainsError(Error):
class PrefilterError (line 68) | class PrefilterError(Exception):
class DateError (line 72) | class DateError(PrefilterError):
class AlignRatioError (line 76) | class AlignRatioError(PrefilterError):
class DuplicateError (line 80) | class DuplicateError(PrefilterError):
class LengthError (line 84) | class LengthError(PrefilterError):
function _get_pdb_id_and_chain (line 98) | def _get_pdb_id_and_chain(hit: parsers.TemplateHit) -> Tuple[str, str]:
function _is_after_cutoff (line 108) | def _is_after_cutoff(
function _parse_obsolete (line 132) | def _parse_obsolete(obsolete_file_path: str) -> Mapping[str, Optional[st...
function _parse_release_dates (line 155) | def _parse_release_dates(path: str) -> Mapping[str, datetime.datetime]:
function _assess_hhsearch_hit (line 173) | def _assess_hhsearch_hit(
function _find_template_in_pdb (line 233) | def _find_template_in_pdb(
function _realign_pdb_template_to_query (line 297) | def _realign_pdb_template_to_query(
function _check_residue_distances (line 409) | def _check_residue_distances(all_positions: np.ndarray,
function _get_atom_positions (line 430) | def _get_atom_positions(
function _extract_template_features (line 485) | def _extract_template_features(
function _build_query_to_hit_index_mapping (line 615) | def _build_query_to_hit_index_mapping(
class SingleHitResult (line 673) | class SingleHitResult:
function _read_file (line 680) | def _read_file(path):
function _process_single_hit (line 686) | def _process_single_hit(
class TemplateSearchResult (line 794) | class TemplateSearchResult:
class TemplateHitFeaturizer (line 800) | class TemplateHitFeaturizer(abc.ABC):
method __init__ (line 803) | def __init__(
method get_templates (line 863) | def get_templates(
class HhsearchHitFeaturizer (line 870) | class HhsearchHitFeaturizer(TemplateHitFeaturizer):
method get_templates (line 873) | def get_templates(
class HmmsearchHitFeaturizer (line 932) | class HmmsearchHitFeaturizer(TemplateHitFeaturizer):
method get_templates (line 935) | def get_templates(
FILE: alphafold/data/tools/hhblits.py
class HHBlits (line 31) | class HHBlits:
method __init__ (line 34) | def __init__(self,
method query (line 97) | def query(self, input_fasta_path: str) -> List[Mapping[str, Any]]:
FILE: alphafold/data/tools/hhsearch.py
class HHSearch (line 29) | class HHSearch:
method __init__ (line 32) | def __init__(self,
method output_format (line 60) | def output_format(self) -> str:
method input_format (line 64) | def input_format(self) -> str:
method query (line 67) | def query(self, a3m: str) -> str:
method get_template_hits (line 102) | def get_template_hits(self,
FILE: alphafold/data/tools/hmmbuild.py
class Hmmbuild (line 26) | class Hmmbuild(object):
method __init__ (line 29) | def __init__(self,
method build_profile_from_sto (line 46) | def build_profile_from_sto(self, sto: str, model_construction='fast') ...
method build_profile_from_a3m (line 62) | def build_profile_from_a3m(self, a3m: str) -> str:
method _build_profile (line 82) | def _build_profile(self, msa: str, model_construction: str = 'fast') -...
FILE: alphafold/data/tools/hmmsearch.py
class Hmmsearch (line 28) | class Hmmsearch(object):
method __init__ (line 31) | def __init__(self,
method output_format (line 68) | def output_format(self) -> str:
method input_format (line 72) | def input_format(self) -> str:
method query (line 75) | def query(self, msa_sto: str) -> str:
method query_with_hmm (line 81) | def query_with_hmm(self, hmm: str) -> str:
method get_template_hits (line 121) | def get_template_hits(self,
FILE: alphafold/data/tools/jackhmmer.py
class Jackhmmer (line 31) | class Jackhmmer:
method __init__ (line 34) | def __init__(self,
method _query_chunk (line 90) | def _query_chunk(self,
method query (line 166) | def query(self,
method query_multiple (line 172) | def query_multiple(
FILE: alphafold/data/tools/kalign.py
function _to_a3m (line 26) | def _to_a3m(sequences: Sequence[str]) -> str:
class Kalign (line 36) | class Kalign:
method __init__ (line 39) | def __init__(self, *, binary_path: str):
method align (line 50) | def align(self, sequences: Sequence[str]) -> str:
FILE: alphafold/data/tools/utils.py
function tmpdir_manager (line 25) | def tmpdir_manager(base_dir: Optional[str] = None):
function timing (line 35) | def timing(msg: str):
FILE: alphafold/model/all_atom.py
function squared_difference (line 46) | def squared_difference(x, y):
function get_chi_atom_indices (line 50) | def get_chi_atom_indices():
function atom14_to_atom37 (line 76) | def atom14_to_atom37(atom14_data: jnp.ndarray, # (N, 14, ...)
function atom37_to_atom14 (line 95) | def atom37_to_atom14(
function atom37_to_frames (line 114) | def atom37_to_frames(
function atom37_to_torsion_angles (line 271) | def atom37_to_torsion_angles(
function torsion_angles_to_frames (line 445) | def torsion_angles_to_frames(
function frames_and_literature_positions_to_atom14_pos (line 532) | def frames_and_literature_positions_to_atom14_pos(
function extreme_ca_ca_distance_violations (line 575) | def extreme_ca_ca_distance_violations(
function between_residue_bond_loss (line 609) | def between_residue_bond_loss(
function between_residue_clash_loss (line 744) | def between_residue_clash_loss(
function within_residue_violations (line 853) | def within_residue_violations(
function find_optimal_renaming (line 929) | def find_optimal_renaming(
function frame_aligned_point_error (line 1013) | def frame_aligned_point_error(
function _make_renaming_matrices (line 1082) | def _make_renaming_matrices():
function get_alt_atom14 (line 1112) | def get_alt_atom14(aatype, positions, mask):
FILE: alphafold/model/all_atom_multimer.py
function squared_difference (line 26) | def squared_difference(x, y):
function _make_chi_atom_indices (line 30) | def _make_chi_atom_indices():
function _make_renaming_matrices (line 56) | def _make_renaming_matrices():
function _make_restype_atom37_mask (line 83) | def _make_restype_atom37_mask():
function _make_restype_atom14_mask (line 96) | def _make_restype_atom14_mask():
function _make_restype_atom37_to_atom14 (line 110) | def _make_restype_atom37_to_atom14():
function _make_restype_atom14_to_atom37 (line 127) | def _make_restype_atom14_to_atom37():
function _make_restype_atom14_is_ambiguous (line 143) | def _make_restype_atom14_is_ambiguous():
function _make_restype_rigidgroup_base_atom37_idx (line 161) | def _make_restype_rigidgroup_base_atom37_idx():
function get_atom37_mask (line 205) | def get_atom37_mask(aatype):
function get_atom14_mask (line 209) | def get_atom14_mask(aatype):
function get_atom14_is_ambiguous (line 213) | def get_atom14_is_ambiguous(aatype):
function get_atom14_to_atom37_map (line 217) | def get_atom14_to_atom37_map(aatype):
function get_atom37_to_atom14_map (line 221) | def get_atom37_to_atom14_map(aatype):
function atom14_to_atom37 (line 225) | def atom14_to_atom37(atom14_data: jnp.ndarray, # (N, 14, ...)
function atom37_to_atom14 (line 241) | def atom37_to_atom14(aatype, all_atom_pos, all_atom_mask):
function get_alt_atom14 (line 257) | def get_alt_atom14(aatype, positions: geometry.Vec3Array, mask):
function atom37_to_frames (line 275) | def atom37_to_frames(
function torsion_angles_to_frames (line 374) | def torsion_angles_to_frames(
function frames_and_literature_positions_to_atom14_pos (line 441) | def frames_and_literature_positions_to_atom14_pos(
function extreme_ca_ca_distance_violations (line 475) | def extreme_ca_ca_distance_violations(
function between_residue_bond_loss (line 495) | def between_residue_bond_loss(
function between_residue_clash_loss (line 596) | def between_residue_clash_loss(
function within_residue_violations (line 679) | def within_residue_violations(
function find_optimal_renaming (line 730) | def find_optimal_renaming(
function frame_aligned_point_error (line 785) | def frame_aligned_point_error(
function get_chi_atom_indices (line 856) | def get_chi_atom_indices():
function compute_chi_angles (line 882) | def compute_chi_angles(positions: geometry.Vec3Array,
function make_transform_from_reference (line 945) | def make_transform_from_reference(
FILE: alphafold/model/all_atom_test.py
function get_identity_rigid (line 26) | def get_identity_rigid(shape):
function get_global_rigid_transform (line 38) | def get_global_rigid_transform(rot_angle, translation, bcast_dims):
class AllAtomTest (line 58) | class AllAtomTest(parameterized.TestCase, absltest.TestCase):
method test_frame_aligned_point_error_perfect_on_global_transform (line 65) | def test_frame_aligned_point_error_perfect_on_global_transform(
method test_frame_aligned_point_error_matches_expected (line 115) | def test_frame_aligned_point_error_matches_expected(
FILE: alphafold/model/common_modules.py
function get_initializer_scale (line 29) | def get_initializer_scale(initializer_name, input_shape):
class Linear (line 52) | class Linear(hk.Module):
method __init__ (line 60) | def __init__(self,
method __call__ (line 94) | def __call__(self, inputs):
class LayerNorm (line 132) | class LayerNorm(hk.LayerNorm):
method __init__ (line 140) | def __init__(self,
method __call__ (line 163) | def __call__(self, x: jnp.ndarray) -> jnp.ndarray:
FILE: alphafold/model/config.py
function model_config (line 26) | def model_config(name: str) -> ml_collections.ConfigDict:
FILE: alphafold/model/data.py
function get_model_haiku_params (line 25) | def get_model_haiku_params(model_name: str, parameter_path: str) -> hk.P...
FILE: alphafold/model/features.py
function make_data_config (line 29) | def make_data_config(
function tf_example_to_features (line 46) | def tf_example_to_features(tf_example: tf.train.Example,
function np_example_to_features (line 78) | def np_example_to_features(np_example: FeatureDict,
FILE: alphafold/model/folding.py
function squared_difference (line 33) | def squared_difference(x, y):
class InvariantPointAttention (line 37) | class InvariantPointAttention(hk.Module):
method __init__ (line 50) | def __init__(self,
method __call__ (line 72) | def __call__(self, inputs_1d, inputs_2d, mask, affine):
class FoldIteration (line 281) | class FoldIteration(hk.Module):
method __init__ (line 292) | def __init__(self, config, global_config,
method __call__ (line 298) | def __call__(self,
function generate_affines (line 390) | def generate_affines(representations, batch, config, global_config,
class StructureModule (line 464) | class StructureModule(hk.Module):
method __init__ (line 470) | def __init__(self, config, global_config, compute_loss=True,
method __call__ (line 477) | def __call__(self, representations, batch, is_training,
method loss (line 520) | def loss(self, value, batch):
function compute_renamed_ground_truth (line 561) | def compute_renamed_ground_truth(
function backbone_loss (line 618) | def backbone_loss(ret, batch, value, config):
function sidechain_loss (line 672) | def sidechain_loss(batch, value, config):
function structural_violation_loss (line 717) | def structural_violation_loss(ret, batch, value, config):
function find_structural_violations (line 734) | def find_structural_violations(
function compute_violation_metrics (line 822) | def compute_violation_metrics(
function supervised_chi_loss (line 854) | def supervised_chi_loss(ret, batch, value, config):
function generate_new_affine (line 914) | def generate_new_affine(sequence_mask):
function l2_normalize (line 924) | def l2_normalize(x, axis=-1, epsilon=1e-12):
class MultiRigidSidechain (line 929) | class MultiRigidSidechain(hk.Module):
method __init__ (line 932) | def __init__(self, config, global_config, name='rigid_sidechain'):
method __call__ (line 937) | def __call__(self, affine, representations_list, aatype):
FILE: alphafold/model/folding_multimer.py
function squared_difference (line 40) | def squared_difference(x: jnp.ndarray, y: jnp.ndarray) -> jnp.ndarray:
function make_backbone_affine (line 45) | def make_backbone_affine(
class QuatRigid (line 65) | class QuatRigid(hk.Module):
method __init__ (line 68) | def __init__(self,
method __call__ (line 100) | def __call__(self, activations: jnp.ndarray) -> geometry.Rigid3Array:
class PointProjection (line 140) | class PointProjection(hk.Module):
method __init__ (line 143) | def __init__(self,
method __call__ (line 168) | def __call__(
class InvariantPointAttention (line 188) | class InvariantPointAttention(hk.Module):
method __init__ (line 199) | def __init__(self,
method __call__ (line 221) | def __call__(
class FoldIteration (line 374) | class FoldIteration(hk.Module):
method __init__ (line 383) | def __init__(self,
method __call__ (line 391) | def __call__(
function generate_monomer_rigids (line 478) | def generate_monomer_rigids(representations: Mapping[str, jnp.ndarray],
class StructureModule (line 556) | class StructureModule(hk.Module):
method __init__ (line 562) | def __init__(self,
method __call__ (line 570) | def __call__(self,
method loss (line 627) | def loss(self,
function compute_atom14_gt (line 752) | def compute_atom14_gt(
function backbone_loss (line 781) | def backbone_loss(gt_rigid: geometry.Rigid3Array,
function compute_frames (line 802) | def compute_frames(
function sidechain_loss (line 832) | def sidechain_loss(gt_frames: geometry.Rigid3Array,
function structural_violation_loss (line 871) | def structural_violation_loss(mask: jnp.ndarray,
function find_structural_violations (line 889) | def find_structural_violations(
function compute_violation_metrics (line 982) | def compute_violation_metrics(
function supervised_chi_loss (line 1012) | def supervised_chi_loss(
function l2_normalize (line 1056) | def l2_normalize(x: jnp.ndarray,
function get_renamed_chi_angles (line 1064) | def get_renamed_chi_angles(aatype: jnp.ndarray,
class MultiRigidSidechain (line 1079) | class MultiRigidSidechain(hk.Module):
method __init__ (line 1082) | def __init__(self,
method __call__ (line 1090) | def __call__(self,
FILE: alphafold/model/geometry/rigid_matrix_vector.py
class Rigid3Array (line 31) | class Rigid3Array:
method __matmul__ (line 37) | def __matmul__(self, other: Rigid3Array) -> Rigid3Array:
method inverse (line 42) | def inverse(self) -> Rigid3Array:
method apply_to_point (line 48) | def apply_to_point(self, point: vector.Vec3Array) -> vector.Vec3Array:
method apply_inverse_to_point (line 52) | def apply_inverse_to_point(self, point: vector.Vec3Array) -> vector.Ve...
method compose_rotation (line 57) | def compose_rotation(self, other_rotation):
method identity (line 64) | def identity(cls, shape, dtype=jnp.float32) -> Rigid3Array:
method scale_translation (line 70) | def scale_translation(self, factor: Float) -> Rigid3Array:
method to_array (line 74) | def to_array(self):
method from_array (line 80) | def from_array(cls, array):
method from_array4x4 (line 86) | def from_array4x4(cls, array: jnp.ndarray) -> Rigid3Array:
method __getstate__ (line 99) | def __getstate__(self):
method __setstate__ (line 102) | def __setstate__(self, state):
FILE: alphafold/model/geometry/rotation_matrix.py
class Rot3Array (line 32) | class Rot3Array:
method inverse (line 47) | def inverse(self) -> Rot3Array:
method apply_to_point (line 53) | def apply_to_point(self, point: vector.Vec3Array) -> vector.Vec3Array:
method apply_inverse_to_point (line 60) | def apply_inverse_to_point(self, point: vector.Vec3Array) -> vector.Ve...
method __matmul__ (line 64) | def __matmul__(self, other: Rot3Array) -> Rot3Array:
method identity (line 72) | def identity(cls, shape, dtype=jnp.float32) -> Rot3Array:
method from_two_vectors (line 79) | def from_two_vectors(cls, e0: vector.Vec3Array,
method from_array (line 102) | def from_array(cls, array: jnp.ndarray) -> Rot3Array:
method to_array (line 108) | def to_array(self) -> jnp.ndarray:
method from_quaternion (line 117) | def from_quaternion(cls,
method random_uniform (line 143) | def random_uniform(cls, key, shape, dtype=jnp.float32) -> Rot3Array:
method __getstate__ (line 149) | def __getstate__(self):
method __setstate__ (line 153) | def __setstate__(self, state):
FILE: alphafold/model/geometry/struct_of_array.py
function get_item (line 21) | def get_item(instance, key):
function get_shape (line 33) | def get_shape(instance):
function get_len (line 44) | def get_len(instance):
function get_dtype (line 54) | def get_dtype(instance):
function replace (line 77) | def replace(instance, **kwargs):
function post_init (line 81) | def post_init(instance):
function flatten (line 129) | def flatten(instance):
function make_metadata_class (line 145) | def make_metadata_class(cls):
function get_fields (line 156) | def get_fields(cls_or_instance, filterfn, return_values=False):
function get_array_fields (line 167) | def get_array_fields(cls, return_values=False):
function get_metadata_fields (line 174) | def get_metadata_fields(cls, return_values=False):
class StructOfArray (line 181) | class StructOfArray:
method __init__ (line 184) | def __init__(self, same_dtype=True):
method __call__ (line 187) | def __call__(self, cls):
FILE: alphafold/model/geometry/test_utils.py
function assert_rotation_matrix_equal (line 25) | def assert_rotation_matrix_equal(matrix1: rotation_matrix.Rot3Array,
function assert_rotation_matrix_close (line 33) | def assert_rotation_matrix_close(mat1: rotation_matrix.Rot3Array,
function assert_array_equal_to_rotation_matrix (line 38) | def assert_array_equal_to_rotation_matrix(array: jnp.ndarray,
function assert_array_close_to_rotation_matrix (line 52) | def assert_array_close_to_rotation_matrix(array: jnp.ndarray,
function assert_vectors_equal (line 57) | def assert_vectors_equal(vec1: vector.Vec3Array, vec2: vector.Vec3Array):
function assert_vectors_close (line 63) | def assert_vectors_close(vec1: vector.Vec3Array, vec2: vector.Vec3Array):
function assert_array_close_to_vector (line 69) | def assert_array_close_to_vector(array: jnp.ndarray, vec: vector.Vec3Arr...
function assert_array_equal_to_vector (line 73) | def assert_array_equal_to_vector(array: jnp.ndarray, vec: vector.Vec3Arr...
function assert_rigid_equal_to_rigid (line 77) | def assert_rigid_equal_to_rigid(rigid1: rigid_matrix_vector.Rigid3Array,
function assert_rigid_close_to_rigid (line 82) | def assert_rigid_close_to_rigid(rigid1: rigid_matrix_vector.Rigid3Array,
function assert_rot_trans_equal_to_rigid (line 87) | def assert_rot_trans_equal_to_rigid(rot: rotation_matrix.Rot3Array,
function assert_rot_trans_close_to_rigid (line 94) | def assert_rot_trans_close_to_rigid(rot: rotation_matrix.Rot3Array,
FILE: alphafold/model/geometry/utils.py
function unstack (line 21) | def unstack(value: jnp.ndarray, axis: int = -1) -> List[jnp.ndarray]:
FILE: alphafold/model/geometry/vector.py
class Vec3Array (line 32) | class Vec3Array:
method __post_init__ (line 48) | def __post_init__(self):
method __add__ (line 55) | def __add__(self, other: Vec3Array) -> Vec3Array:
method __sub__ (line 58) | def __sub__(self, other: Vec3Array) -> Vec3Array:
method __mul__ (line 61) | def __mul__(self, other: Float) -> Vec3Array:
method __rmul__ (line 64) | def __rmul__(self, other: Float) -> Vec3Array:
method __truediv__ (line 67) | def __truediv__(self, other: Float) -> Vec3Array:
method __neg__ (line 70) | def __neg__(self) -> Vec3Array:
method __pos__ (line 73) | def __pos__(self) -> Vec3Array:
method cross (line 76) | def cross(self, other: Vec3Array) -> Vec3Array:
method dot (line 83) | def dot(self, other: Vec3Array) -> Float:
method norm (line 87) | def norm(self, epsilon: float = 1e-6) -> Float:
method norm2 (line 95) | def norm2(self):
method normalized (line 98) | def normalized(self, epsilon: float = 1e-6) -> Vec3Array:
method zeros (line 103) | def zeros(cls, shape, dtype=jnp.float32):
method to_array (line 109) | def to_array(self) -> jnp.ndarray:
method from_array (line 113) | def from_array(cls, array):
method __getstate__ (line 116) | def __getstate__(self):
method __setstate__ (line 122) | def __setstate__(self, state):
function square_euclidean_distance (line 129) | def square_euclidean_distance(vec1: Vec3Array,
function dot (line 151) | def dot(vector1: Vec3Array, vector2: Vec3Array) -> Float:
function cross (line 155) | def cross(vector1: Vec3Array, vector2: Vec3Array) -> Float:
function norm (line 159) | def norm(vector: Vec3Array, epsilon: float = 1e-6) -> Float:
function normalized (line 163) | def normalized(vector: Vec3Array, epsilon: float = 1e-6) -> Vec3Array:
function euclidean_distance (line 167) | def euclidean_distance(vec1: Vec3Array,
function dihedral_angle (line 187) | def dihedral_angle(a: Vec3Array, b: Vec3Array, c: Vec3Array,
function random_gaussian_vector (line 215) | def random_gaussian_vector(shape, key, dtype=jnp.float32):
FILE: alphafold/model/layer_stack.py
function _check_no_varargs (line 38) | def _check_no_varargs(f):
function nullcontext (line 48) | def nullcontext():
function maybe_with_rng (line 52) | def maybe_with_rng(key):
function maybe_fold_in (line 59) | def maybe_fold_in(key, data):
class _LayerStack (line 66) | class _LayerStack(hk.Module):
method __init__ (line 69) | def __init__(self,
method __call__ (line 78) | def __call__(self, x, *args_ys):
method _call_wrapped (line 160) | def _call_wrapped(self,
class _LayerStackNoState (line 167) | class _LayerStackNoState(_LayerStack):
method __init__ (line 170) | def __init__(self,
method _call_wrapped (line 180) | def _call_wrapped(self, args, y):
class _LayerStackWithState (line 190) | class _LayerStackWithState(_LayerStack):
method __init__ (line 193) | def __init__(self,
method _call_wrapped (line 202) | def _call_wrapped(self, x, *args):
function layer_stack (line 206) | def layer_stack(num_layers: int,
FILE: alphafold/model/layer_stack_test.py
function _slice_layers_params (line 32) | def _slice_layers_params(layers_params):
class LayerStackTest (line 44) | class LayerStackTest(parameterized.TestCase):
method test_layer_stack (line 47) | def test_layer_stack(self, unroll):
method test_layer_stack_multi_args (line 88) | def test_layer_stack_multi_args(self):
method test_layer_stack_no_varargs (line 128) | def test_layer_stack_no_varargs(self):
method test_layer_stack_grads (line 157) | def test_layer_stack_grads(self, unroll):
method test_random (line 204) | def test_random(self):
method test_threading (line 225) | def test_threading(self):
method test_nested_stacks (line 250) | def test_nested_stacks(self):
method test_with_state_multi_args (line 272) | def test_with_state_multi_args(self):
method test_with_container_state (line 299) | def test_with_container_state(self):
FILE: alphafold/model/lddt.py
function lddt (line 19) | def lddt(predicted_points,
FILE: alphafold/model/lddt_test.py
class LddtTest (line 23) | class LddtTest(parameterized.TestCase, absltest.TestCase):
method test_lddt (line 63) | def test_lddt(
FILE: alphafold/model/mapping.py
function _maybe_slice (line 34) | def _maybe_slice(array, i, slice_size, axis):
function _maybe_get_size (line 42) | def _maybe_get_size(array, axis):
function _expand_axes (line 49) | def _expand_axes(axes, values, name='sharded_apply'):
function sharded_map (line 57) | def sharded_map(
function sharded_apply (line 87) | def sharded_apply(
function inference_subbatch (line 198) | def inference_subbatch(
FILE: alphafold/model/model.py
function get_confidence_metrics (line 31) | def get_confidence_metrics(
class RunModel (line 64) | class RunModel:
method __init__ (line 67) | def __init__(self,
method init_params (line 92) | def init_params(self, feat: features.FeatureDict, random_seed: int = 0):
method process_features (line 111) | def process_features(
method eval_shape (line 141) | def eval_shape(self, feat: features.FeatureDict) -> jax.ShapeDtypeStruct:
method predict (line 149) | def predict(self,
FILE: alphafold/model/modules.py
function softmax_cross_entropy (line 35) | def softmax_cross_entropy(logits, labels):
function sigmoid_cross_entropy (line 41) | def sigmoid_cross_entropy(logits, labels):
function apply_dropout (line 50) | def apply_dropout(*, tensor, safe_key, rate, is_training, broadcast_dim=...
function dropout_wrapper (line 63) | def dropout_wrapper(module,
function create_extra_msa_feature (line 101) | def create_extra_msa_feature(batch):
class AlphaFoldIteration (line 126) | class AlphaFoldIteration(hk.Module):
method __init__ (line 137) | def __init__(self, config, global_config, name='alphafold_iteration'):
method __call__ (line 142) | def __call__(self,
class AlphaFold (line 273) | class AlphaFold(hk.Module):
method __init__ (line 279) | def __init__(self, config, name='alphafold'):
method __call__ (line 284) | def __call__(
class TemplatePairStack (line 396) | class TemplatePairStack(hk.Module):
method __init__ (line 402) | def __init__(self, config, global_config, name='template_pair_stack'):
method __call__ (line 407) | def __call__(self, pair_act, pair_mask, is_training, safe_key=None):
class Transition (line 479) | class Transition(hk.Module):
method __init__ (line 486) | def __init__(self, config, global_config, name='transition_block'):
method __call__ (line 491) | def __call__(self, act, mask, is_training=True):
function glorot_uniform (line 535) | def glorot_uniform():
class Attention (line 541) | class Attention(hk.Module):
method __init__ (line 544) | def __init__(self, config, global_config, output_dim, name='attention'):
method __call__ (line 551) | def __call__(self, q_data, m_data, bias, nonbatched_bias=None):
class GlobalAttention (line 633) | class GlobalAttention(hk.Module):
method __init__ (line 639) | def __init__(self, config, global_config, output_dim, name='attention'):
method __call__ (line 646) | def __call__(self, q_data, m_data, q_mask):
class MSARowAttentionWithPairBias (line 730) | class MSARowAttentionWithPairBias(hk.Module):
method __init__ (line 736) | def __init__(self, config, global_config,
method __call__ (line 742) | def __call__(self,
class MSAColumnAttention (line 798) | class MSAColumnAttention(hk.Module):
method __init__ (line 804) | def __init__(self, config, global_config, name='msa_column_attention'):
method __call__ (line 809) | def __call__(self,
class MSAColumnGlobalAttention (line 853) | class MSAColumnGlobalAttention(hk.Module):
method __init__ (line 859) | def __init__(self, config, global_config, name='msa_column_global_atte...
method __call__ (line 864) | def __call__(self,
class TriangleAttention (line 911) | class TriangleAttention(hk.Module):
method __init__ (line 918) | def __init__(self, config, global_config, name='triangle_attention'):
method __call__ (line 923) | def __call__(self, pair_act, pair_mask, is_training=False):
class MaskedMsaHead (line 974) | class MaskedMsaHead(hk.Module):
method __init__ (line 983) | def __init__(self, config, global_config, name='masked_msa_head'):
method __call__ (line 993) | def __call__(self, representations, batch, is_training):
method loss (line 1015) | def loss(self, value, batch):
class PredictedLDDTHead (line 1024) | class PredictedLDDTHead(hk.Module):
method __init__ (line 1031) | def __init__(self, config, global_config, name='predicted_lddt_head'):
method __call__ (line 1036) | def __call__(self, representations, batch, is_training):
method loss (line 1082) | def loss(self, value, batch):
class PredictedAlignedErrorHead (line 1128) | class PredictedAlignedErrorHead(hk.Module):
method __init__ (line 1135) | def __init__(self, config, global_config,
method __call__ (line 1141) | def __call__(self, representations, batch, is_training):
method loss (line 1168) | def loss(self, value, batch):
class ExperimentallyResolvedHead (line 1218) | class ExperimentallyResolvedHead(hk.Module):
method __init__ (line 1225) | def __init__(self, config, global_config,
method __call__ (line 1231) | def __call__(self, representations, batch, is_training):
method loss (line 1252) | def loss(self, value, batch):
function _layer_norm (line 1275) | def _layer_norm(axis=-1, name='layer_norm'):
class TriangleMultiplication (line 1288) | class TriangleMultiplication(hk.Module):
method __init__ (line 1295) | def __init__(self, config, global_config, name='triangle_multiplicatio...
method __call__ (line 1300) | def __call__(self, left_act, left_mask, is_training=True):
method _triangle_multiplication (line 1319) | def _triangle_multiplication(self, left_act, left_mask):
method _fused_triangle_multiplication (line 1387) | def _fused_triangle_multiplication(self, left_act, left_mask):
class DistogramHead (line 1431) | class DistogramHead(hk.Module):
method __init__ (line 1437) | def __init__(self, config, global_config, name='distogram_head'):
method __call__ (line 1442) | def __call__(self, representations, batch, is_training):
method loss (line 1468) | def loss(self, value, batch):
function _distogram_log_loss (line 1473) | def _distogram_log_loss(logits, bin_edges, batch, num_bins):
class OuterProductMean (line 1505) | class OuterProductMean(hk.Module):
method __init__ (line 1511) | def __init__(self,
method __call__ (line 1521) | def __call__(self, act, mask, is_training=True):
function dgram_from_positions (line 1594) | def dgram_from_positions(positions, num_bins, min_bin, max_bin):
function pseudo_beta_fn (line 1626) | def pseudo_beta_fn(aatype, all_atom_positions, all_atom_masks):
class EvoformerIteration (line 1646) | class EvoformerIteration(hk.Module):
method __init__ (line 1652) | def __init__(self, config, global_config, is_extra_msa,
method __call__ (line 1659) | def __call__(self, activations, masks, is_training=True, safe_key=None):
class EmbeddingsAndEvoformer (line 1776) | class EmbeddingsAndEvoformer(hk.Module):
method __init__ (line 1783) | def __init__(self, config, global_config, name='evoformer'):
method __call__ (line 1788) | def __call__(self, batch, is_training, safe_key=None):
class SingleTemplateEmbedding (line 2014) | class SingleTemplateEmbedding(hk.Module):
method __init__ (line 2020) | def __init__(self, config, global_config, name='single_template_embedd...
method __call__ (line 2025) | def __call__(self, query_embedding, batch, mask_2d, is_training):
class TemplateEmbedding (line 2116) | class TemplateEmbedding(hk.Module):
method __init__ (line 2123) | def __init__(self, config, global_config, name='template_embedding'):
method __call__ (line 2128) | def __call__(self, query_embedding, template_batch, mask_2d, is_traini...
FILE: alphafold/model/modules_multimer.py
function reduce_fn (line 42) | def reduce_fn(x, mode):
function gumbel_noise (line 53) | def gumbel_noise(key: jnp.ndarray, shape: Sequence[int]) -> jnp.ndarray:
function gumbel_max_sample (line 73) | def gumbel_max_sample(key: jnp.ndarray, logits: jnp.ndarray) -> jnp.ndar...
function gumbel_argsort_sample_idx (line 93) | def gumbel_argsort_sample_idx(key: jnp.ndarray,
function make_masked_msa (line 120) | def make_masked_msa(batch, key, config, epsilon=1e-6):
function nearest_neighbor_clusters (line 160) | def nearest_neighbor_clusters(batch, gap_agreement_weight=0.):
function create_msa_feat (line 205) | def create_msa_feat(batch):
function create_extra_msa_feature (line 226) | def create_extra_msa_feature(batch, num_extra_msa):
function sample_msa (line 253) | def sample_msa(key, batch, max_seq):
function make_msa_profile (line 286) | def make_msa_profile(batch):
class AlphaFoldIteration (line 294) | class AlphaFoldIteration(hk.Module):
method __init__ (line 302) | def __init__(self, config, global_config, name='alphafold_iteration'):
method __call__ (line 307) | def __call__(self,
class AlphaFold (line 411) | class AlphaFold(hk.Module):
method __init__ (line 415) | def __init__(self, config, name='alphafold'):
method __call__ (line 420) | def __call__(
class EmbeddingsAndEvoformer (line 526) | class EmbeddingsAndEvoformer(hk.Module):
method __init__ (line 532) | def __init__(self, config, global_config, name='evoformer'):
method _relative_encoding (line 537) | def _relative_encoding(self, batch):
method __call__ (line 610) | def __call__(self, batch, is_training, safe_key=None):
class TemplateEmbedding (line 819) | class TemplateEmbedding(hk.Module):
method __init__ (line 822) | def __init__(self, config, global_config, name='template_embedding'):
method __call__ (line 827) | def __call__(self, query_embedding, template_batch, padding_mask_2d,
class SingleTemplateEmbedding (line 899) | class SingleTemplateEmbedding(hk.Module):
method __init__ (line 902) | def __init__(self, config, global_config, name='single_template_embedd...
method __call__ (line 907) | def __call__(self, query_embedding, template_aatype,
class TemplateEmbeddingIteration (line 1048) | class TemplateEmbeddingIteration(hk.Module):
method __init__ (line 1051) | def __init__(self, config, global_config,
method __call__ (line 1057) | def __call__(self, act, pair_mask, is_training=True,
function template_embedding_1d (line 1119) | def template_embedding_1d(batch, num_channel, global_config):
FILE: alphafold/model/prng.py
function safe_dropout (line 21) | def safe_dropout(*, tensor, safe_key, rate, is_deterministic, is_training):
class SafeKey (line 28) | class SafeKey:
method __init__ (line 31) | def __init__(self, key):
method _assert_not_used (line 35) | def _assert_not_used(self):
method get (line 39) | def get(self):
method split (line 44) | def split(self, num_keys=2):
method duplicate (line 50) | def duplicate(self, num_keys=2):
function _safe_key_flatten (line 56) | def _safe_key_flatten(safe_key):
function _safe_key_unflatten (line 61) | def _safe_key_unflatten(aux_data, children):
FILE: alphafold/model/prng_test.py
class PrngTest (line 22) | class PrngTest(absltest.TestCase):
method test_key_reuse (line 24) | def test_key_reuse(self):
FILE: alphafold/model/quat_affine.py
function rot_to_quat (line 83) | def rot_to_quat(rot, unstack_inputs=False):
function rot_list_to_tensor (line 117) | def rot_list_to_tensor(rot_list):
function vec_list_to_tensor (line 126) | def vec_list_to_tensor(vec_list):
function quat_to_rot (line 131) | def quat_to_rot(normalized_quat):
function quat_multiply_by_vec (line 144) | def quat_multiply_by_vec(quat, vec):
function quat_multiply (line 153) | def quat_multiply(quat1, quat2):
function apply_rot_to_vec (line 162) | def apply_rot_to_vec(rot, vec, unstack=False):
function apply_inverse_rot_to_vec (line 173) | def apply_inverse_rot_to_vec(rot, vec):
class QuatAffine (line 181) | class QuatAffine(object):
method __init__ (line 184) | def __init__(self, quaternion, translation, rotation=None, normalize=T...
method to_tensor (line 221) | def to_tensor(self):
method apply_tensor_fn (line 227) | def apply_tensor_fn(self, tensor_fn):
method apply_rotation_tensor_fn (line 235) | def apply_rotation_tensor_fn(self, tensor_fn):
method scale_translation (line 243) | def scale_translation(self, position_scale):
method from_tensor (line 253) | def from_tensor(cls, tensor, normalize=False):
method pre_compose (line 259) | def pre_compose(self, update):
method apply_to_point (line 287) | def apply_to_point(self, point, extra_dims=0):
method invert_point (line 313) | def invert_point(self, transformed_point, extra_dims=0):
method __repr__ (line 340) | def __repr__(self):
function _multiply (line 344) | def _multiply(a, b):
function make_canonical_transform (line 359) | def make_canonical_transform(
function make_transform_from_reference (line 431) | def make_transform_from_reference(
FILE: alphafold/model/quat_affine_test.py
class QuatAffineTest (line 33) | class QuatAffineTest(absltest.TestCase):
method _assert_check (line 35) | def _assert_check(self, to_check, tol=1e-5):
method test_conversion (line 43) | def test_conversion(self):
method test_double_cover (line 68) | def test_double_cover(self):
method test_homomorphism (line 84) | def test_homomorphism(self):
method test_batching (line 116) | def test_batching(self):
method assertAllClose (line 142) | def assertAllClose(self, a, b, rtol=1e-06, atol=1e-06):
method assertAllEqual (line 145) | def assertAllEqual(self, a, b):
FILE: alphafold/model/r3.py
function squared_difference (line 54) | def squared_difference(x, y):
function invert_rigids (line 58) | def invert_rigids(r: Rigids) -> Rigids:
function invert_rots (line 66) | def invert_rots(m: Rots) -> Rots:
function rigids_from_3_points (line 73) | def rigids_from_3_points(
function rigids_from_list (line 99) | def rigids_from_list(l: List[jnp.ndarray]) -> Rigids:
function rigids_from_quataffine (line 105) | def rigids_from_quataffine(a: quat_affine.QuatAffine) -> Rigids:
function rigids_from_tensor4x4 (line 111) | def rigids_from_tensor4x4(
function rigids_from_tensor_flat9 (line 132) | def rigids_from_tensor_flat9(
function rigids_from_tensor_flat12 (line 144) | def rigids_from_tensor_flat12(
function rigids_mul_rigids (line 153) | def rigids_mul_rigids(a: Rigids, b: Rigids) -> Rigids:
function rigids_mul_rots (line 160) | def rigids_mul_rots(r: Rigids, m: Rots) -> Rigids:
function rigids_mul_vecs (line 165) | def rigids_mul_vecs(r: Rigids, v: Vecs) -> Vecs:
function rigids_to_list (line 170) | def rigids_to_list(r: Rigids) -> List[jnp.ndarray]:
function rigids_to_quataffine (line 175) | def rigids_to_quataffine(r: Rigids) -> quat_affine.QuatAffine:
function rigids_to_tensor_flat9 (line 185) | def rigids_to_tensor_flat9(
function rigids_to_tensor_flat12 (line 194) | def rigids_to_tensor_flat12(
function rots_from_tensor3x3 (line 201) | def rots_from_tensor3x3(
function rots_from_two_vecs (line 212) | def rots_from_two_vecs(e0_unnormalized: Vecs, e1_unnormalized: Vecs) -> ...
function rots_mul_rots (line 240) | def rots_mul_rots(a: Rots, b: Rots) -> Rots:
function rots_mul_vecs (line 248) | def rots_mul_vecs(m: Rots, v: Vecs) -> Vecs:
function vecs_add (line 255) | def vecs_add(v1: Vecs, v2: Vecs) -> Vecs:
function vecs_dot_vecs (line 260) | def vecs_dot_vecs(v1: Vecs, v2: Vecs) -> jnp.ndarray:
function vecs_cross_vecs (line 265) | def vecs_cross_vecs(v1: Vecs, v2: Vecs) -> Vecs:
function vecs_from_tensor (line 272) | def vecs_from_tensor(x: jnp.ndarray # shape (..., 3)
function vecs_robust_normalize (line 280) | def vecs_robust_normalize(v: Vecs, epsilon: float = 1e-8) -> Vecs:
function vecs_robust_norm (line 293) | def vecs_robust_norm(v: Vecs, epsilon: float = 1e-8) -> jnp.ndarray:
function vecs_sub (line 305) | def vecs_sub(v1: Vecs, v2: Vecs) -> Vecs:
function vecs_squared_distance (line 310) | def vecs_squared_distance(v1: Vecs, v2: Vecs) -> jnp.ndarray:
function vecs_to_tensor (line 317) | def vecs_to_tensor(v: Vecs # shape (...)
FILE: alphafold/model/tf/data_transforms.py
function cast_64bit_ints (line 35) | def cast_64bit_ints(protein):
function make_seq_mask (line 49) | def make_seq_mask(protein):
function make_template_mask (line 55) | def make_template_mask(protein):
function curry1 (line 62) | def curry1(f):
function add_distillation_flag (line 72) | def add_distillation_flag(protein, distillation):
function make_all_atom_aatype (line 79) | def make_all_atom_aatype(protein):
function fix_templates_aatype (line 84) | def fix_templates_aatype(protein):
function correct_msa_restypes (line 97) | def correct_msa_restypes(protein):
function squeeze_features (line 115) | def squeeze_features(protein):
function make_random_crop_to_size_seed (line 134) | def make_random_crop_to_size_seed(protein):
function randomly_replace_msa_with_unknown (line 141) | def randomly_replace_msa_with_unknown(protein, replace_proportion):
function sample_msa (line 162) | def sample_msa(protein, max_seq, keep_extra):
function crop_extra_msa (line 191) | def crop_extra_msa(protein, max_extra_msa):
function delete_extra_msa (line 203) | def delete_extra_msa(protein):
function block_delete_msa (line 211) | def block_delete_msa(protein, config):
function nearest_neighbor_clusters (line 252) | def nearest_neighbor_clusters(protein, gap_agreement_weight=0.):
function summarize_clusters (line 288) | def summarize_clusters(protein):
function make_msa_mask (line 312) | def make_msa_mask(protein):
function pseudo_beta_fn (line 321) | def pseudo_beta_fn(aatype, all_atom_positions, all_atom_masks):
function make_pseudo_beta (line 341) | def make_pseudo_beta(protein, prefix=''):
function add_constant_field (line 353) | def add_constant_field(protein, key, value):
function shaped_categorical (line 358) | def shaped_categorical(probs, epsilon=1e-10):
function make_hhblits_profile (line 368) | def make_hhblits_profile(protein):
function make_masked_msa (line 380) | def make_masked_msa(protein, config, replace_fraction):
function make_fixed_size (line 413) | def make_fixed_size(protein, shape_schema, msa_cluster_size, extra_msa_s...
function make_msa_feat (line 446) | def make_msa_feat(protein):
function select_feat (line 490) | def select_feat(protein, feature_list):
function crop_templates (line 495) | def crop_templates(protein, max_templates):
function random_crop_to_size (line 503) | def random_crop_to_size(protein, crop_size, max_templates, shape_schema,
function make_atom14_masks (line 565) | def make_atom14_masks(protein):
FILE: alphafold/model/tf/input_pipeline.py
function nonensembled_map_fns (line 33) | def nonensembled_map_fns(data_config):
function ensembled_map_fns (line 64) | def ensembled_map_fns(data_config):
function process_tensors_from_config (line 125) | def process_tensors_from_config(tensors, data_config):
function compose (line 163) | def compose(x, fs):
FILE: alphafold/model/tf/protein_features.py
class FeatureType (line 25) | class FeatureType(enum.Enum):
function register_feature (line 71) | def register_feature(name: str,
function shape (line 80) | def shape(feature_name: str,
FILE: alphafold/model/tf/protein_features_test.py
function _random_bytes (line 24) | def _random_bytes():
class FeaturesTest (line 28) | class FeaturesTest(parameterized.TestCase, tf.test.TestCase):
method setUp (line 30) | def setUp(self):
method testFeatureNames (line 34) | def testFeatureNames(self):
method testReplacement (line 42) | def testReplacement(self):
FILE: alphafold/model/tf/proteins_dataset.py
function parse_tfexample (line 24) | def parse_tfexample(
function _first (line 52) | def _first(tensor: tf.Tensor) -> tf.Tensor:
function parse_reshape_logic (line 57) | def parse_reshape_logic(
function _make_features_metadata (line 112) | def _make_features_metadata(
function create_tensor_dict (line 124) | def create_tensor_dict(
function np_to_tensor_dict (line 145) | def np_to_tensor_dict(
FILE: alphafold/model/tf/shape_helpers.py
function shape_list (line 19) | def shape_list(x):
FILE: alphafold/model/tf/shape_helpers_test.py
class ShapeTest (line 22) | class ShapeTest(tf.test.TestCase):
method setUp (line 24) | def setUp(self):
method test_shape_list (line 28) | def test_shape_list(self):
FILE: alphafold/model/tf/utils.py
function tf_combine_mask (line 19) | def tf_combine_mask(*masks):
class SeedMaker (line 27) | class SeedMaker(object):
method __init__ (line 30) | def __init__(self, initial_seed=0):
method __call__ (line 33) | def __call__(self):
function make_random_seed (line 41) | def make_random_seed():
FILE: alphafold/model/utils.py
function bfloat16_creator (line 29) | def bfloat16_creator(next_creator, shape, dtype, init, context):
function bfloat16_getter (line 36) | def bfloat16_getter(next_getter, value, context):
function bfloat16_context (line 45) | def bfloat16_context():
function final_init (line 50) | def final_init(config):
function batched_gather (line 57) | def batched_gather(params, indices, axis=0, batch_dims=0):
function mask_mean (line 65) | def mask_mean(mask, value, axis=None, drop_mask_channel=False, eps=1e-10):
function flat_params_to_haiku (line 95) | def flat_params_to_haiku(params: Mapping[str, np.ndarray]) -> hk.Params:
function padding_consistent_rng (line 107) | def padding_consistent_rng(f):
FILE: alphafold/notebooks/notebook_utils.py
function clean_and_validate_single_sequence (line 25) | def clean_and_validate_single_sequence(
function clean_and_validate_input_sequences (line 50) | def clean_and_validate_input_sequences(
function merge_chunked_msa (line 72) | def merge_chunked_msa(
function show_msa_info (line 101) | def show_msa_info(
function empty_placeholder_template_features (line 128) | def empty_placeholder_template_features(
function get_pae_json (line 146) | def get_pae_json(pae: np.ndarray, max_pae: float) -> str:
FILE: alphafold/notebooks/notebook_utils_test.py
class NotebookUtilsTest (line 82) | class NotebookUtilsTest(parameterized.TestCase):
method test_clean_and_validate_sequence_ok (line 87) | def test_clean_and_validate_sequence_ok(self, sequence, exp_clean):
method test_clean_and_validate_sequence_bad (line 101) | def test_clean_and_validate_sequence_bad(self, sequence, exp_error):
method test_validate_input_ok (line 111) | def test_validate_input_ok(self, input_sequences, exp_sequences):
method test_validate_input_bad (line 121) | def test_validate_input_bad(self, input_sequences, exp_error):
method test_merge_chunked_msa_no_hits (line 127) | def test_merge_chunked_msa_no_hits(self):
method test_merge_chunked_msa (line 136) | def test_merge_chunked_msa(self):
method test_show_msa_info (line 159) | def test_show_msa_info(self, mocked_stdout):
method test_empty_placeholder_template_features (line 175) | def test_empty_placeholder_template_features(self, num_templates):
method test_get_pae_json (line 187) | def test_get_pae_json(self):
FILE: alphafold/relax/amber_minimize.py
function will_restrain (line 40) | def will_restrain(atom: openmm_app.Atom, rset: str) -> bool:
function _add_restraints (line 49) | def _add_restraints(
function _openmm_minimize (line 74) | def _openmm_minimize(
function _get_pdb_string (line 113) | def _get_pdb_string(topology: openmm_app.Topology, positions: unit.Quant...
function _check_cleaned_atoms (line 120) | def _check_cleaned_atoms(pdb_cleaned_string: str, pdb_ref_string: str):
function _check_residues_are_well_defined (line 139) | def _check_residues_are_well_defined(prot: protein.Protein):
function _check_atom_mask_is_ideal (line 147) | def _check_atom_mask_is_ideal(prot):
function clean_protein (line 154) | def clean_protein(
function make_atom14_positions (line 188) | def make_atom14_positions(prot):
function find_violations (line 320) | def find_violations(prot_np: protein.Protein):
function get_violation_metrics (line 356) | def get_violation_metrics(prot: protein.Protein):
function _run_one_iteration (line 368) | def _run_one_iteration(
function run_pipeline (line 426) | def run_pipeline(
FILE: alphafold/relax/amber_minimize_test.py
function _load_test_protein (line 27) | def _load_test_protein(data_path):
class AmberMinimizeTest (line 33) | class AmberMinimizeTest(absltest.TestCase):
method test_multiple_disulfides_target (line 35) | def test_multiple_disulfides_target(self):
method test_raises_invalid_protein_assertion (line 44) | def test_raises_invalid_protein_assertion(self):
method test_iterative_relax (line 58) | def test_iterative_relax(self):
method test_find_violations (line 69) | def test_find_violations(self):
FILE: alphafold/relax/cleanup.py
function fix_pdb (line 27) | def fix_pdb(pdbfile, alterations_info):
function clean_structure (line 63) | def clean_structure(pdb_structure, alterations_info):
function _remove_heterogens (line 74) | def _remove_heterogens(fixer, alterations_info, keep_water):
function _replace_met_se (line 95) | def _replace_met_se(pdb_structure, alterations_info):
function _remove_chains_of_length_one (line 109) | def _remove_chains_of_length_one(pdb_structure, alterations_info):
FILE: alphafold/relax/cleanup_test.py
function _pdb_to_structure (line 23) | def _pdb_to_structure(pdb_str):
function _lines_to_structure (line 28) | def _lines_to_structure(pdb_lines):
class CleanupTest (line 32) | class CleanupTest(absltest.TestCase):
method test_missing_residues (line 34) | def test_missing_residues(self):
method test_missing_atoms (line 60) | def test_missing_atoms(self):
method test_remove_heterogens (line 83) | def test_remove_heterogens(self):
method test_fix_nonstandard_residues (line 97) | def test_fix_nonstandard_residues(self):
method test_replace_met_se (line 112) | def test_replace_met_se(self):
method test_remove_chains_of_length_one (line 124) | def test_remove_chains_of_length_one(self):
FILE: alphafold/relax/relax.py
class AmberRelaxation (line 23) | class AmberRelaxation(object):
method __init__ (line 26) | def __init__(self,
method process (line 58) | def process(self, *,
FILE: alphafold/relax/relax_test.py
class RunAmberRelaxTest (line 25) | class RunAmberRelaxTest(absltest.TestCase):
method setUp (line 27) | def setUp(self):
method test_process (line 40) | def test_process(self):
method test_unresolved_violations (line 70) | def test_unresolved_violations(self):
FILE: alphafold/relax/utils.py
function overwrite_b_factors (line 22) | def overwrite_b_factors(pdb_str: str, bfactors: np.ndarray) -> str:
function assert_equal_nonterminal_atom_types (line 61) | def assert_equal_nonterminal_atom_types(
FILE: alphafold/relax/utils_test.py
class UtilsTest (line 26) | class UtilsTest(absltest.TestCase):
method test_overwrite_b_factors (line 28) | def test_overwrite_b_factors(self):
FILE: run_alphafold.py
class ModelsToRelax (line 50) | class ModelsToRelax(enum.Enum):
function _check_flag (line 158) | def _check_flag(flag_name: str,
function _jnp_to_np (line 167) | def _jnp_to_np(output: Dict[str, Any]) -> Dict[str, Any]:
function predict_structure (line 177) | def predict_structure(
function main (line 341) | def main(argv):
Condensed preview — 108 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,433K chars).
[
{
"path": ".gitignore",
"chars": 7,
"preview": "*.slurm"
},
{
"path": "README.md",
"chars": 5143,
"preview": "<div align=center>\n<img src=\"./docs/parafoldlogo.png\" width=\"400\" >\n</div>\n\n# ParaFold\n\nAuthor: Bozitao Zhong - zbztzhz@"
},
{
"path": "alphafold/__init__.py",
"chars": 663,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/common/__init__.py",
"chars": 655,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/common/confidence.py",
"chars": 6066,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/common/protein.py",
"chars": 9959,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/common/protein_test.py",
"chars": 4594,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/common/residue_constants.py",
"chars": 34974,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/common/residue_constants_test.py",
"chars": 9256,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/common/stereo_chemical_props.txt",
"chars": 9119,
"preview": "Bond\t\t\tResidue\t\tMean\t\tStdDev\nCA-CB\t\t\tALA\t\t1.520\t\t0.021\nN-CA\t\t\tALA\t\t1.459\t\t0.020\nCA-C\t\t\tALA\t\t1.525\t\t0.026\nC-O\t\t\tALA\t\t1.22"
},
{
"path": "alphafold/common/testdata/2rbg.pdb",
"chars": 225504,
"preview": "HEADER STRUCTURAL GENOMICS, UNKNOWN FUNCTION 19-SEP-07 2RBG \nTITLE CRYSTAL STRUCTURE OF HYPOTHET"
},
{
"path": "alphafold/data/__init__.py",
"chars": 634,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/data/feature_processing.py",
"chars": 8575,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/data/mmcif_parsing.py",
"chars": 14174,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/data/msa_identifiers.py",
"chars": 2966,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/data/msa_pairing.py",
"chars": 17220,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/data/parsers.py",
"chars": 21397,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/data/pipeline.py",
"chars": 10419,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/data/pipeline_multimer.py",
"chars": 11126,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/data/templates.py",
"chars": 40677,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/data/tools/__init__.py",
"chars": 639,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/data/tools/hhblits.py",
"chars": 5504,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/data/tools/hhsearch.py",
"chars": 3601,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/data/tools/hmmbuild.py",
"chars": 4576,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/data/tools/hmmsearch.py",
"chars": 4556,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/data/tools/jackhmmer.py",
"chars": 8386,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/data/tools/kalign.py",
"chars": 3387,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/data/tools/utils.py",
"chars": 1223,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/__init__.py",
"chars": 617,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/all_atom.py",
"chars": 47028,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/all_atom_multimer.py",
"chars": 40135,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/all_atom_test.py",
"chars": 4706,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/common_modules.py",
"chars": 5957,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/config.py",
"chars": 26814,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/data.py",
"chars": 1099,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/features.py",
"chars": 3692,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/folding.py",
"chars": 37264,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/folding_multimer.py",
"chars": 42498,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/geometry/__init__.py",
"chars": 1172,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/geometry/rigid_matrix_vector.py",
"chars": 4148,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/geometry/rotation_matrix.py",
"chars": 5751,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/geometry/struct_of_array.py",
"chars": 7745,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/geometry/test_utils.py",
"chars": 4166,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/geometry/utils.py",
"chars": 853,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/geometry/vector.py",
"chars": 6896,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/layer_stack.py",
"chars": 9134,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/layer_stack_test.py",
"chars": 10315,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/lddt.py",
"chars": 3503,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/lddt_test.py",
"chars": 2384,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/mapping.py",
"chars": 7963,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/model.py",
"chars": 6614,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/modules.py",
"chars": 74156,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/modules_multimer.py",
"chars": 42228,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/prng.py",
"chars": 1978,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/prng_test.py",
"chars": 1250,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/quat_affine.py",
"chars": 17384,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/quat_affine_test.py",
"chars": 5038,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/r3.py",
"chars": 10935,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/tf/__init__.py",
"chars": 633,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/tf/data_transforms.py",
"chars": 21428,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/tf/input_pipeline.py",
"chars": 5357,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/tf/protein_features.py",
"chars": 5051,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/tf/protein_features_test.py",
"chars": 1822,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/tf/proteins_dataset.py",
"chars": 6344,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/tf/shape_helpers.py",
"chars": 1415,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/tf/shape_helpers_test.py",
"chars": 1318,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/tf/shape_placeholders.py",
"chars": 812,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/tf/utils.py",
"chars": 1276,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/model/utils.py",
"chars": 4723,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/notebooks/__init__.py",
"chars": 626,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/notebooks/notebook_utils.py",
"chars": 6736,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/notebooks/notebook_utils_test.py",
"chars": 9107,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/relax/__init__.py",
"chars": 618,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/relax/amber_minimize.py",
"chars": 19039,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/relax/amber_minimize_test.py",
"chars": 4348,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/relax/cleanup.py",
"chars": 4820,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/relax/cleanup_test.py",
"chars": 6164,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/relax/relax.py",
"chars": 3288,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/relax/relax_test.py",
"chars": 3827,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/relax/testdata/model_output.pdb",
"chars": 7861,
"preview": "ATOM 1 C MET A 1 1.921 -46.152 7.786 1.00 4.39 C \nATOM 2 CA MET A 1 1.631 "
},
{
"path": "alphafold/relax/testdata/multiple_disulfides_target.pdb",
"chars": 119447,
"preview": "MODEL 0\nATOM 1 N MET A 1 19.164 -28.457 26.130 1.00 0.00 N \nATOM 2 CA MET A "
},
{
"path": "alphafold/relax/testdata/with_violations.pdb",
"chars": 96362,
"preview": "MODEL 0\nATOM 1 N SER A 1 23.291 1.505 0.613 1.00 6.08 N \nATOM 2 CA SER A "
},
{
"path": "alphafold/relax/testdata/with_violations_casp14.pdb",
"chars": 96362,
"preview": "MODEL 0\nATOM 1 N SER A 1 27.311 -3.395 37.375 1.00 8.64 N \nATOM 2 CA SER A "
},
{
"path": "alphafold/relax/utils.py",
"chars": 2501,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "alphafold/relax/utils_test.py",
"chars": 1996,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "docs/python_inputs.md",
"chars": 1686,
"preview": "# AlphaFold Python Input\n\nAuthor: Bozitao Zhong\n\nAlphaFold: v2.1.2; ParaFold: v1.1\n\n\n\n`--fasta_paths`: required\n\n`--is_p"
},
{
"path": "docs/usage.md",
"chars": 1472,
"preview": "# Usage\n\n## Run features\n\nRun on CPUs to get features:\n\n```bash\n./run_alphafold.sh \\\n-d data \\\n-o output \\\n-p monomer_pt"
},
{
"path": "environment/environment_gpu.yml",
"chars": 7185,
"preview": "name: parafold_test\nchannels:\n - conda-forge\n - defaults\ndependencies:\n - _libgcc_mutex=0.1=conda_forge\n - _openmp_m"
},
{
"path": "input/mono_set1/GA98.fasta",
"chars": 102,
"preview": ">2LHC_1|Chain A|Ga98|artificial gene (32630)\nTTYKLILNLKQAKEEAIKELVDAGTAEKYFKLIANAKTVEGVWTLKDEIKTFTVTE\n"
},
{
"path": "input/mono_set1/GB98.fasta",
"chars": 102,
"preview": ">2LHD_1|Chain A|GB98|artificial gene (32630)\nTTYKLILNLKQAKEEAIKELVDAGTAEKYFKLIANAKTVEGVWTYKDEIKTFTVTE\n"
},
{
"path": "requirements.txt",
"chars": 193,
"preview": "absl-py==1.0.0\nbiopython==1.79\nchex==0.0.7\ndm-haiku==0.0.9\ndm-tree==0.1.6\nimmutabledict==2.0.0\njax==0.3.25\nml-collection"
},
{
"path": "run_alphafold.py",
"chars": 20619,
"preview": "# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "run_alphafold.sh",
"chars": 7546,
"preview": "#!/bin/bash\n# Description: AlphaFold non-docker version\n# Author: Sanjay Kumar Srikakulam\n# Modified by Bozitao Zhong\n\nu"
},
{
"path": "scripts/download_all_data.sh",
"chars": 2294,
"preview": "#!/bin/bash\n#\n# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"Li"
},
{
"path": "scripts/download_alphafold_params.sh",
"chars": 1394,
"preview": "#!/bin/bash\n#\n# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"Li"
},
{
"path": "scripts/download_bfd.sh",
"chars": 1522,
"preview": "#!/bin/bash\n#\n# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"Li"
},
{
"path": "scripts/download_mgnify.sh",
"chars": 1428,
"preview": "#!/bin/bash\n#\n# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"Li"
},
{
"path": "scripts/download_pdb70.sh",
"chars": 1406,
"preview": "#!/bin/bash\n#\n# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"Li"
},
{
"path": "scripts/download_pdb_mmcif.sh",
"chars": 2343,
"preview": "#!/bin/bash\n#\n# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"Li"
},
{
"path": "scripts/download_pdb_seqres.sh",
"chars": 1482,
"preview": "#!/bin/bash\n#\n# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"Li"
},
{
"path": "scripts/download_small_bfd.sh",
"chars": 1354,
"preview": "#!/bin/bash\n#\n# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"Li"
},
{
"path": "scripts/download_uniprot.sh",
"chars": 2051,
"preview": "#!/bin/bash\n#\n# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"Li"
},
{
"path": "scripts/download_uniref30.sh",
"chars": 1477,
"preview": "#!/bin/bash\n#\n# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"Li"
},
{
"path": "scripts/download_uniref90.sh",
"chars": 1323,
"preview": "#!/bin/bash\n#\n# Copyright 2021 DeepMind Technologies Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"Li"
},
{
"path": "tools/batch_scripts/batch_alphafold.sh",
"chars": 182,
"preview": "#!/bin/bash\n\nfor i in `seq -f \"%03g\" 2 1 5`\ndo\n sed \"2s/^.*$/#SBATCH --job-name=A501_${i}/g\" template_alphafold.slurm"
},
{
"path": "tools/batch_scripts/batch_feature.sh",
"chars": 168,
"preview": "#!/bin/bash\n\nfor i in `seq -f \"%03g\" 2 1 5`\ndo\n sed \"2s/^.*$/#SBATCH --job-name=A501_${i}/g\" template.slurm > sub_fea"
},
{
"path": "tools/batch_scripts/move_batch.sh",
"chars": 113,
"preview": "#!/bin/bash\n\nfor i in `seq -f \"%03g\" 18 1 20`\ndo\n mv ./task_file/A501_${i}_* ./A501_result/A501_${i}/\ndone\n\n\n\n"
},
{
"path": "tools/plddt.py",
"chars": 671,
"preview": "from __future__ import print_function\nimport pickle\nimport sys\n\ntry:\n if sys.argv[1][-3:] == 'pkl':\n pkl_file "
}
]
About this extraction
This page contains the full source code of the Zuricho/ParallelFold GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 108 files (1.3 MB), approximately 492.0k tokens, and a symbol index with 739 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.