Skip to content

Commit

Permalink
Merge branch 'main' into multimer
Browse files Browse the repository at this point in the history
  • Loading branch information
christinaflo committed Jun 2, 2023
2 parents c1129be + 103d037 commit fbfbd80
Show file tree
Hide file tree
Showing 11 changed files with 27 additions and 26 deletions.
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,6 @@ COPY setup.py /opt/openfold/setup.py
COPY lib/openmm.patch /opt/openfold/lib/openmm.patch
RUN wget -q -P /opt/openfold/openfold/resources \
https://git.scicore.unibas.ch/schwede/openstructure/-/raw/7102c63615b64735c4941278d92b554ec94415f8/modules/mol/alg/src/stereo_chemical_props.txt
RUN patch -p0 -d /opt/conda/lib/python3.7/site-packages/ < /opt/openfold/lib/openmm.patch
RUN patch -p0 -d /opt/conda/lib/python3.9/site-packages/ < /opt/openfold/lib/openmm.patch
WORKDIR /opt/openfold
RUN python3 setup.py install
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,7 @@ python3 scripts/generate_chain_data_cache.py \
```

where the `cluster_file` argument is a file of chain clusters, one cluster
per line (e.g. [PDB40](https://cdn.rcsb.org/resources/sequence/clusters/clusters-by-entity-40.txt)).
per line.

Optionally, download an AlphaFold-style validation set from
[CAMEO](https://cameo3d.org) using `scripts/download_cameo.py`. Use the
Expand Down
2 changes: 1 addition & 1 deletion environment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ channels:
- bioconda
- pytorch
dependencies:
- conda-forge::python=3.7
- conda-forge::python=3.9
- conda-forge::setuptools=59.5.0
- conda-forge::pip
- conda-forge::openmm=7.5.1
Expand Down
23 changes: 11 additions & 12 deletions notebooks/OpenFold.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -97,13 +97,16 @@
"#@markdown **Note**: This installs the software on the Colab \n",
"#@markdown notebook in the cloud and not on your computer.\n",
"\n",
"import sys\n",
"from IPython.utils import io\n",
"import os\n",
"import subprocess\n",
"import tqdm.notebook\n",
"\n",
"TQDM_BAR_FORMAT = '{l_bar}{bar}| {n_fmt}/{total_fmt} [elapsed: {elapsed} remaining: {remaining}]'\n",
"\n",
"python_version = '.'.join(sys.version.split('.')[:2]) #get string like \"3.9\"\n",
"\n",
"try:\n",
" with io.capture_output() as captured:\n",
" %shell sudo apt install --quiet --yes hmmer\n",
Expand All @@ -125,12 +128,15 @@
" %shell conda install -y -q -c conda-forge -c bioconda \\\n",
" kalign2=2.04 \\\n",
" hhsuite=3.3.0 \\\n",
" python=3.8 \\\n",
" python={python_version} \\\n",
" openmm=7.7.0 \\\n",
" pdbfixer \\\n",
" 2>&1 1>/dev/null\n",
" %shell pip install -q \\\n",
" ml-collections==0.1.0 \\\n",
" PyYAML==5.4.1 \\\n",
" biopython==1.79\n",
" biopython==1.79 \\\n",
" modelcif==0.7\n",
"\n",
" # Create a ramdisk to store a database chunk to make Jackhmmer run fast.\n",
" %shell sudo mkdir -m 777 --parents /tmp/ramdisk\n",
Expand Down Expand Up @@ -181,13 +187,6 @@
" %shell cp -f /content/stereo_chemical_props.txt /content/openfold/openfold/resources\n",
" %shell /usr/bin/python3 -m pip install -q ./openfold\n",
"\n",
" %shell conda install -y -q -c conda-forge openmm=7.5.1\n",
" # Apply OpenMM patch.\n",
" %shell pushd /opt/conda/lib/python3.8/site-packages/ && \\\n",
" patch -p0 < /content/openfold/lib/openmm.patch && \\\n",
" popd\n",
" %shell conda install -y -q -c conda-forge pdbfixer=1.7\n",
"\n",
" if(weight_set == 'AlphaFold'):\n",
" %shell mkdir --parents \"{ALPHAFOLD_PARAMS_DIR}\"\n",
" %shell wget -O {ALPHAFOLD_PARAMS_PATH} {ALPHAFOLD_PARAM_SOURCE_URL}\n",
Expand Down Expand Up @@ -220,8 +219,8 @@
"import unittest.mock\n",
"import sys\n",
"\n",
"sys.path.insert(0, '/usr/local/lib/python3.8/site-packages/')\n",
"sys.path.append('/opt/conda/lib/python3.8/site-packages')\n",
"sys.path.insert(0, f'/usr/local/lib/python{python_version}/site-packages/')\n",
"sys.path.append(f'/opt/conda/lib/python{python_version}/site-packages')\n",
"\n",
"# Allows us to skip installing these packages\n",
"unnecessary_modules = [\n",
Expand Down Expand Up @@ -791,4 +790,4 @@
]
}
]
}
}
3 changes: 0 additions & 3 deletions openfold/model/msa.py
Original file line number Diff line number Diff line change
Expand Up @@ -457,9 +457,6 @@ def forward(
m = m.transpose(-2, -3)
mask = mask.transpose(-1, -2)

# [*, N_res, N_seq, C_in]
#m = self.layer_norm_m(m)

if chunk_size is not None:
m = self._chunk(m, mask, chunk_size, use_lma=use_lma)
else:
Expand Down
7 changes: 5 additions & 2 deletions openfold/model/triangular_multiplicative_update.py
Original file line number Diff line number Diff line change
Expand Up @@ -433,8 +433,11 @@ def forward(self,

# Prevents overflow of torch.matmul in combine projections in
# reduced-precision modes
a = a / a.std()
b = b / b.std()
a_std = a.std()
b_std = b.std()
if(a_std != 0. and b_std != 0.):
a = a / a.std()
b = b / b.std()

if(is_fp16_enabled()):
with torch.cuda.amp.autocast(enabled=False):
Expand Down
2 changes: 1 addition & 1 deletion openfold/np/relax/relax.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ def __init__(
self._use_gpu = use_gpu

def process(
self, *, prot: protein.Protein, cif_output: bool
self, *, prot: protein.Protein, cif_output: bool = False
) -> Tuple[str, Dict[str, Any], np.ndarray]:
"""Runs Amber relax on a prediction, adds hydrogens, returns PDB string."""
out = amber_minimize.run_pipeline(
Expand Down
4 changes: 3 additions & 1 deletion openfold/np/residue_constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -409,7 +409,9 @@
# (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)
# TODO: ^ interpret this
# Because for LEU, VAL and ARG, no ambiguous exist when the prediction output is chi angle instead of the location of individual atoms.
# For the rest, ASP and others, when you rotate the bond 180 degree, you get the same configuraiton due to symmetry.

residue_atom_renaming_swaps = {
"ASP": {"OD1": "OD2"},
"GLU": {"OE1": "OE2"},
Expand Down
4 changes: 2 additions & 2 deletions openfold/utils/script_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ def prep_output(out, batch, feature_dict, feature_processor, config_preset, mult
return unrelaxed_protein


def relax_protein(config, model_device, unrelaxed_protein, output_directory, output_name, cif_output):
def relax_protein(config, model_device, unrelaxed_protein, output_directory, output_name, cif_output=False):
amber_relaxer = relax.AmberRelaxation(
use_gpu=(model_device != "cpu"),
**config.relax,
Expand Down Expand Up @@ -257,4 +257,4 @@ def relax_protein(config, model_device, unrelaxed_protein, output_directory, out
with open(relaxed_output_path, 'w') as fp:
fp.write(struct_str)

logger.info(f"Relaxed output written to {relaxed_output_path}...")
logger.info(f"Relaxed output written to {relaxed_output_path}...")
2 changes: 1 addition & 1 deletion scripts/install_third_party_dependencies.sh
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ cd $CUR_DIR

# Install DeepMind's OpenMM patch
OPENFOLD_DIR=$PWD
pushd lib/conda/envs/$ENV_NAME/lib/python3.7/site-packages/ \
pushd lib/conda/envs/$ENV_NAME/lib/python3.9/site-packages/ \
&& patch -p0 < $OPENFOLD_DIR/lib/openmm.patch \
&& popd

Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ def get_cuda_bare_metal_version(cuda_dir):
classifiers=[
'License :: OSI Approved :: Apache Software License',
'Operating System :: POSIX :: Linux',
'Programming Language :: Python :: 3.7,'
'Programming Language :: Python :: 3.9,'
'Topic :: Scientific/Engineering :: Artificial Intelligence',
],
)

0 comments on commit fbfbd80

Please sign in to comment.