Full Code of Zuricho/ParallelFold for AI

main b1cefc00331c cached
108 files
1.3 MB
492.0k tokens
739 symbols
1 requests
Download .txt
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
Download .txt
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
Download .txt
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.

Copied to clipboard!