"git@developer.sourcefind.cn:chenpangpang/diffusers.git" did not exist on "83a7bb2aba2d897ab95d96fb03eda10a624080e7"
Unverified Commit c80a4df5 authored by shenggan's avatar shenggan Committed by GitHub
Browse files

dependency update openmm 7.5.1 -> 7.7.0 (#61)

parent d3df8e69
...@@ -39,7 +39,6 @@ git clone https://github.com/hpcaitech/FastFold ...@@ -39,7 +39,6 @@ git clone https://github.com/hpcaitech/FastFold
cd FastFold cd FastFold
conda env create --name=fastfold -f environment.yml conda env create --name=fastfold -f environment.yml
conda activate fastfold conda activate fastfold
bash scripts/patch_openmm.sh
python setup.py install python setup.py install
``` ```
......
...@@ -5,7 +5,7 @@ FROM hpcaitech/cuda-conda:11.3 ...@@ -5,7 +5,7 @@ FROM hpcaitech/cuda-conda:11.3
RUN yum install -y patch RUN yum install -y patch
RUN conda install pytorch==1.10.0 torchvision torchaudio cudatoolkit=11.3 -c pytorch \ RUN conda install pytorch==1.10.0 torchvision torchaudio cudatoolkit=11.3 -c pytorch \
&& conda install setuptools=59.5.0 openmm=7.5.1 pdbfixer -c conda-forge \ && conda install setuptools=59.5.0 openmm=7.7.0 pdbfixer -c conda-forge \
&& conda install hmmer==3.3.2 hhsuite=3.3.0 kalign2=2.04 -c bioconda && conda install hmmer==3.3.2 hhsuite=3.3.0 kalign2=2.04 -c bioconda
RUN pip install biopython==1.79 dm-tree==0.1.6 ml-collections==0.1.0 numpy==1.21.2 \ RUN pip install biopython==1.79 dm-tree==0.1.6 ml-collections==0.1.0 numpy==1.21.2 \
...@@ -17,5 +17,4 @@ RUN pip install colossalai==0.1.8+torch1.10cu11.3 -f https://release.colossalai. ...@@ -17,5 +17,4 @@ RUN pip install colossalai==0.1.8+torch1.10cu11.3 -f https://release.colossalai.
# prepare environment # prepare environment
Run git clone https://github.com/hpcaitech/FastFold.git\ Run git clone https://github.com/hpcaitech/FastFold.git\
&& cd ./FastFold \ && cd ./FastFold \
&& /bin/bash scripts/patch_openmm.sh \
&& python setup.py install && python setup.py install
...@@ -23,7 +23,7 @@ dependencies: ...@@ -23,7 +23,7 @@ dependencies:
- conda-forge::python=3.8 - conda-forge::python=3.8
- conda-forge::setuptools=59.5.0 - conda-forge::setuptools=59.5.0
- conda-forge::pip - conda-forge::pip
- conda-forge::openmm=7.5.1 - conda-forge::openmm=7.7.0
- conda-forge::pdbfixer - conda-forge::pdbfixer
- bioconda::hmmer==3.3.2 - bioconda::hmmer==3.3.2
- bioconda::hhsuite==3.3.0 - bioconda::hhsuite==3.3.0
......
...@@ -27,10 +27,10 @@ import fastfold.model.loss as loss ...@@ -27,10 +27,10 @@ import fastfold.model.loss as loss
from fastfold.relax import cleanup, utils from fastfold.relax import cleanup, utils
import ml_collections import ml_collections
import numpy as np import numpy as np
from simtk import openmm import openmm
from simtk import unit from openmm import unit
from simtk.openmm import app as openmm_app from openmm import app as openmm_app
from simtk.openmm.app.internal.pdbstructure import PdbStructure from openmm.app.internal.pdbstructure import PdbStructure
ENERGY = unit.kilocalories_per_mole ENERGY = unit.kilocalories_per_mole
LENGTH = unit.angstroms LENGTH = unit.angstroms
......
...@@ -20,8 +20,8 @@ cases like removing chains of length one (see clean_structure). ...@@ -20,8 +20,8 @@ cases like removing chains of length one (see clean_structure).
import io import io
import pdbfixer import pdbfixer
from simtk.openmm import app from openmm import app
from simtk.openmm.app import element from openmm.app import element
def fix_pdb(pdbfile, alterations_info): def fix_pdb(pdbfile, alterations_info):
...@@ -124,4 +124,4 @@ def _remove_chains_of_length_one(pdb_structure, alterations_info): ...@@ -124,4 +124,4 @@ def _remove_chains_of_length_one(pdb_structure, alterations_info):
for chain_id in invalid_chain_ids: for chain_id in invalid_chain_ids:
model.chains_by_id.pop(chain_id) model.chains_by_id.pop(chain_id)
removed_chains[model.number] = invalid_chain_ids removed_chains[model.number] = invalid_chain_ids
alterations_info['removed_chains'] = removed_chains alterations_info['removed_chains'] = removed_chains
\ No newline at end of file
...@@ -86,4 +86,4 @@ class AmberRelaxation(object): ...@@ -86,4 +86,4 @@ class AmberRelaxation(object):
violations = out["structural_violations"][ violations = out["structural_violations"][
"total_per_residue_violations_mask" "total_per_residue_violations_mask"
] ]
return min_pdb, debug_data, violations return min_pdb, debug_data, violations
\ No newline at end of file
...@@ -18,8 +18,8 @@ import collections ...@@ -18,8 +18,8 @@ import collections
from fastfold.common import residue_constants from fastfold.common import residue_constants
from Bio import PDB from Bio import PDB
import numpy as np import numpy as np
from simtk.openmm import app as openmm_app from openmm import app as openmm_app
from simtk.openmm.app.internal.pdbstructure import PdbStructure from openmm.app.internal.pdbstructure import PdbStructure
def overwrite_pdb_coordinates(pdb_str: str, pos) -> str: def overwrite_pdb_coordinates(pdb_str: str, pos) -> str:
......
...@@ -280,7 +280,7 @@ def inference_monomer_model(args): ...@@ -280,7 +280,7 @@ def inference_monomer_model(args):
seqs, tags = parse_fasta(fasta) seqs, tags = parse_fasta(fasta)
for tag, seq in zip(tags, seqs): for tag, seq in zip(tags, seqs):
print(f"tag:{tag} seq:{seq}") print(f"tag:{tag}\nseq[{len(seq)}]:{seq}")
batch = [None] batch = [None]
fasta_path = os.path.join(args.output_dir, "tmp.fasta") fasta_path = os.path.join(args.output_dir, "tmp.fasta")
......
python inference.py target.fasta /data/pdb_mmcif/mmcif_files \ # add `--gpus [N]` to use N gpus for inference
# add `--enable_workflow` to use parallel workflow for data processing
# add `--use_precomputed_alignments [path_to_alignments]` to use precomputed msa
python inference.py target.fasta data/pdb_mmcif/mmcif_files \
--output_dir ./ \ --output_dir ./ \
--gpus 2 \
--uniref90_database_path data/uniref90/uniref90.fasta \ --uniref90_database_path data/uniref90/uniref90.fasta \
--mgnify_database_path data/mgnify/mgy_clusters_2018_12.fa \ --mgnify_database_path data/mgnify/mgy_clusters_2018_12.fa \
--pdb70_database_path data/pdb70/pdb70 \ --pdb70_database_path data/pdb70/pdb70 \
...@@ -9,5 +12,4 @@ python inference.py target.fasta /data/pdb_mmcif/mmcif_files \ ...@@ -9,5 +12,4 @@ python inference.py target.fasta /data/pdb_mmcif/mmcif_files \
--jackhmmer_binary_path `which jackhmmer` \ --jackhmmer_binary_path `which jackhmmer` \
--hhblits_binary_path `which hhblits` \ --hhblits_binary_path `which hhblits` \
--hhsearch_binary_path `which hhsearch` \ --hhsearch_binary_path `which hhsearch` \
--kalign_binary_path `which kalign` \ --kalign_binary_path `which kalign`
# --enable_workflow
\ No newline at end of file
Index: simtk/openmm/app/topology.py
===================================================================
--- simtk.orig/openmm/app/topology.py
+++ simtk/openmm/app/topology.py
@@ -356,19 +356,35 @@
def isCyx(res):
names = [atom.name for atom in res._atoms]
return 'SG' in names and 'HG' not in names
+ # This function is used to prevent multiple di-sulfide bonds from being
+ # assigned to a given atom. This is a DeepMind modification.
+ def isDisulfideBonded(atom):
+ for b in self._bonds:
+ if (atom in b and b[0].name == 'SG' and
+ b[1].name == 'SG'):
+ return True
+
+ return False
cyx = [res for res in self.residues() if res.name == 'CYS' and isCyx(res)]
atomNames = [[atom.name for atom in res._atoms] for res in cyx]
for i in range(len(cyx)):
sg1 = cyx[i]._atoms[atomNames[i].index('SG')]
pos1 = positions[sg1.index]
+ candidate_distance, candidate_atom = 0.3*nanometers, None
for j in range(i):
sg2 = cyx[j]._atoms[atomNames[j].index('SG')]
pos2 = positions[sg2.index]
delta = [x-y for (x,y) in zip(pos1, pos2)]
distance = sqrt(delta[0]*delta[0] + delta[1]*delta[1] + delta[2]*delta[2])
- if distance < 0.3*nanometers:
- self.addBond(sg1, sg2)
+ if distance < candidate_distance and not isDisulfideBonded(sg2):
+ candidate_distance = distance
+ candidate_atom = sg2
+ # Assign bond to closest pair.
+ if candidate_atom:
+ self.addBond(sg1, candidate_atom)
+
+
class Chain(object):
"""A Chain object represents a chain within a Topology."""
#!/bin/bash
PYTHON_SITE_PATH=$(python3 -c 'import sysconfig; print(sysconfig.get_paths()["purelib"])')
PATCH_PATH=$(realpath $(dirname $0))
pushd ${PYTHON_SITE_PATH} \
&& patch -p0 < ${PATCH_PATH}/openmm.patch \
&& popd
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment