mirror of
https://github.com/aqlaboratory/openfold.git
synced 2026-06-04 12:44:26 +08:00
Merge branch 'main' into multimer
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -97,6 +97,7 @@
|
||||
"#@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",
|
||||
@@ -104,6 +105,8 @@
|
||||
"\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",
|
||||
@@ -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",
|
||||
@@ -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",
|
||||
@@ -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",
|
||||
@@ -791,4 +790,4 @@
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -457,9 +457,6 @@ class MSAColumnGlobalAttention(nn.Module):
|
||||
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:
|
||||
|
||||
@@ -433,8 +433,11 @@ class TriangleMultiplicativeUpdate(BaseTriangleMultiplicativeUpdate):
|
||||
|
||||
# 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):
|
||||
|
||||
@@ -57,7 +57,7 @@ class AmberRelaxation(object):
|
||||
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(
|
||||
|
||||
@@ -409,7 +409,9 @@ residue_atoms = {
|
||||
# (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"},
|
||||
|
||||
@@ -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,
|
||||
@@ -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}...")
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
2
setup.py
2
setup.py
@@ -130,7 +130,7 @@ setup(
|
||||
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',
|
||||
],
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user