From ea81b735aab365facfb1a9cfe0f3b1e1e071a94e Mon Sep 17 00:00:00 2001 From: Alex Morehead Date: Sat, 9 Mar 2024 19:09:13 -0600 Subject: [PATCH 01/17] Update README.md Create an initial update to README.md for Mamba environment --- README.md | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 830234b..fea512f 100644 --- a/README.md +++ b/README.md @@ -20,21 +20,29 @@ RFAA is not accurate for all cases, but produces useful error estimates to allow ### Setup/Installation -1. Clone the package +1. Install Mamba +``` +wget "https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-$(uname)-$(uname -m).sh" +bash Mambaforge-$(uname)-$(uname -m).sh # accept all terms and install to the default location +rm Mambaforge-$(uname)-$(uname -m).sh # (optionally) remove installer after using it +source ~/.bashrc # alternatively, one can restart their shell session to achieve the same result +``` +2. Clone the package ``` git clone https://github.com/baker-laboratory/RoseTTAFold-All-Atom cd RoseTTAFold-All-Atom ``` -2. Download the container used to run RFAA. +3. Create Mamba environment ``` -wget http://files.ipd.uw.edu/pub/RF-All-Atom/containers/SE3nv-20240131.sif +mamba env create -f environment.yaml +conda activate RFAA # NOTE: one still needs to use `conda` to (de)activate environments +pip3 install -e . ``` -3. Download the model weights. +4. Download the model weights. ``` wget http://files.ipd.uw.edu/pub/RF-All-Atom/weights/RFAA_paper_weights.pt - ``` -4. Download sequence databases for MSA and template generation. +5. Download sequence databases for MSA and template generation. ``` # uniref30 [46G] wget http://wwwuser.gwdg.de/~compbiol/uniclust/2020_06/UniRef30_2020_06_hhsuite.tar.gz @@ -56,11 +64,9 @@ tar xfz pdb100_2021Mar03.tar.gz We use a library called Hydra to compose config files for predictions. The actual script that runs the model is in `rf2aa/run_inference.py` and default parameters that were used to train the model are in `rf2aa/config/inference/base.yaml`. We highly suggest using the default parameters since those are closest to the training task for RFAA but we have found that increasing loader_params.MAXCYCLE=10 (default set to 4) gives better results for hard cases (as noted in the paper). -We use a container system called apptainers which have very simple syntax. Instead of developing a local conda environment, users can use the apptainer to run the model which has all the dependencies already packaged. - The general way to run the model is as follows: ``` -SE3nv-20240131.sif -m rf2aa.run_inference --config-name {your inference config} +python -m rf2aa.run_inference --config-name {your inference config} ``` The main inputs into the model are split into: - protein inputs (protein_inputs) @@ -90,7 +96,7 @@ When specifying the fasta file for your protein, you might notice that it is nes Now to predict the sample monomer structure, run: ``` -SE3nv-20240131.sif -m rf2aa.run_inference --config-name protein +python -m rf2aa.run_inference --config-name protein ``` @@ -118,7 +124,7 @@ This repo currently does not support making RNA MSAs or pairing protein MSAs wit Now, predict the example protein/NA complex. ``` -SE3nv-20240131.sif -m rf2aa.run_inference --config-name nucleic_acid +python -m rf2aa.run_inference --config-name nucleic_acid ``` ### Predicting Protein Small Molecule Complexes @@ -143,7 +149,7 @@ Small molecule inputs are provided as sdf files or smiles strings and users are To predict the example: ``` -SE3nv-20240131.sif -m rf2aa.run_inference --config-name protein_sm +python -m rf2aa.run_inference --config-name protein_sm ``` ### Predicting Higher Order Complexes @@ -172,7 +178,7 @@ sm_inputs: ``` And to run: ``` -SE3nv-20240131.sif -m rf2aa.run_inference --config-name protein_na_sm +python -m rf2aa.run_inference --config-name protein_na_sm ``` ### Predicting Covalently Modified Proteins From 001226a0af6973fe8456d83ec8b8d2c1b472a5a7 Mon Sep 17 00:00:00 2001 From: Alex Morehead Date: Sat, 9 Mar 2024 20:06:20 -0600 Subject: [PATCH 02/17] Update README.md --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index fea512f..5f57961 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,11 @@ cd RoseTTAFold-All-Atom ``` mamba env create -f environment.yaml conda activate RFAA # NOTE: one still needs to use `conda` to (de)activate environments -pip3 install -e . + +cd rf2aa/SE3Transformer/ +pip3 install --no-cache-dir -r requirements.txt +python3 setup.py install +cd ../../ ``` 4. Download the model weights. ``` From be632e2d9e75d235a241d51f0e66cb51a074475d Mon Sep 17 00:00:00 2001 From: Alex Morehead Date: Sat, 9 Mar 2024 20:07:15 -0600 Subject: [PATCH 03/17] Create environment.yaml --- environment.yaml | 254 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 254 insertions(+) create mode 100644 environment.yaml diff --git a/environment.yaml b/environment.yaml new file mode 100644 index 0000000..e5ba62e --- /dev/null +++ b/environment.yaml @@ -0,0 +1,254 @@ +name: RFAA +channels: + - pyg + - bioconda + - pytorch + - nvidia + - conda-forge +dependencies: + - _libgcc_mutex=0.1=conda_forge + - _openmp_mutex=4.5=2_kmp_llvm + - absl-py=2.1.0=pyhd8ed1ab_0 + - aiohttp=3.9.3=py310h2372a71_0 + - aiosignal=1.3.1=pyhd8ed1ab_0 + - asttokens=2.4.1=pyhd8ed1ab_0 + - astunparse=1.6.3=pyhd8ed1ab_0 + - async-timeout=4.0.3=pyhd8ed1ab_0 + - attrs=23.2.0=pyh71513ae_0 + - blas=2.121=mkl + - blas-devel=3.9.0=21_linux64_mkl + - blinker=1.7.0=pyhd8ed1ab_0 + - brotli-python=1.1.0=py310hc6cd4ac_1 + - bzip2=1.0.8=hd590300_5 + - c-ares=1.27.0=hd590300_0 + - ca-certificates=2024.2.2=hbcca054_0 + - cached-property=1.5.2=hd8ed1ab_1 + - cached_property=1.5.2=pyha770c72_1 + - cachetools=5.3.3=pyhd8ed1ab_0 + - cairo=1.16.0=ha61ee94_1014 + - certifi=2024.2.2=pyhd8ed1ab_0 + - cffi=1.16.0=py310h2fee648_0 + - charset-normalizer=3.3.2=pyhd8ed1ab_0 + - click=8.1.7=unix_pyh707e725_0 + - colorama=0.4.6=pyhd8ed1ab_0 + - cryptography=42.0.5=py310h75e40e8_0 + - cuda-cudart=11.8.89=0 + - cuda-cupti=11.8.87=0 + - cuda-libraries=11.8.0=0 + - cuda-nvrtc=11.8.89=0 + - cuda-nvtx=11.8.86=0 + - cuda-runtime=11.8.0=0 + - cuda-version=11.8=h70ddcb2_3 + - cudatoolkit=11.8.0=h4ba93d1_13 + - cudnn=8.8.0.121=hcdd5f01_4 + - deepdiff=6.7.1=pyhd8ed1ab_0 + - dgl=1.1.2=cuda112py310hc641c19_2 + - executing=2.0.1=pyhd8ed1ab_0 + - expat=2.6.1=h59595ed_0 + - ffmpeg=4.3=hf484d3e_0 + - filelock=3.13.1=pyhd8ed1ab_0 + - flatbuffers=22.12.06=hcb278e6_2 + - font-ttf-dejavu-sans-mono=2.37=hab24e00_0 + - font-ttf-inconsolata=3.000=h77eed37_0 + - font-ttf-source-code-pro=2.038=h77eed37_0 + - font-ttf-ubuntu=0.83=h77eed37_1 + - fontconfig=2.14.2=h14ed4e7_0 + - fonts-conda-ecosystem=1=0 + - fonts-conda-forge=1=0 + - freetype=2.12.1=h267a509_2 + - frozenlist=1.4.1=py310h2372a71_0 + - fsspec=2024.2.0=pyhca7485f_0 + - gast=0.4.0=pyh9f0ad1d_0 + - gettext=0.21.1=h27087fc_0 + - giflib=5.2.1=h0b41bf4_3 + - gmp=6.3.0=h59595ed_0 + - gmpy2=2.1.2=py310h3ec546c_1 + - gnutls=3.6.13=h85f3911_1 + - google-auth=2.28.2=pyhca7485f_0 + - google-auth-oauthlib=0.4.6=pyhd8ed1ab_0 + - google-pasta=0.2.0=pyh8c360ce_0 + - grpcio=1.51.1=py310h4a5735c_1 + - h5py=3.10.0=nompi_py310h65828d5_101 + - hdf5=1.14.3=nompi_h4f84152_100 + - hhsuite=3.3.0=py310pl5321h068649b_10 + - icecream=2.1.3=pyhd8ed1ab_0 + - icu=70.1=h27087fc_0 + - idna=3.6=pyhd8ed1ab_0 + - importlib-metadata=7.0.2=pyha770c72_0 + - jinja2=3.1.3=pyhd8ed1ab_0 + - joblib=1.3.2=pyhd8ed1ab_0 + - jpeg=9e=h0b41bf4_3 + - keras=2.11.0=pyhd8ed1ab_0 + - keras-preprocessing=1.1.2=pyhd8ed1ab_0 + - keyutils=1.6.1=h166bdaf_0 + - krb5=1.21.2=h659d440_0 + - lame=3.100=h166bdaf_1003 + - lcms2=2.15=hfd0df8a_0 + - ld_impl_linux-64=2.40=h41732ed_0 + - lerc=4.0.0=h27087fc_0 + - libabseil=20220623.0=cxx17_h05df665_6 + - libaec=1.1.2=h59595ed_1 + - libblas=3.9.0=21_linux64_mkl + - libcblas=3.9.0=21_linux64_mkl + - libcublas=11.11.3.6=0 + - libcufft=10.9.0.58=0 + - libcufile=1.9.0.20=0 + - libcurand=10.3.5.119=0 + - libcurl=8.5.0=hca28451_0 + - libcusolver=11.4.1.48=0 + - libcusparse=11.7.5.86=0 + - libdeflate=1.17=h0b41bf4_0 + - libedit=3.1.20191231=he28a2e2_2 + - libev=4.33=hd590300_2 + - libexpat=2.6.1=h59595ed_0 + - libffi=3.4.2=h7f98852_5 + - libgcc-ng=13.2.0=h807b86a_5 + - libgfortran-ng=13.2.0=h69a702a_5 + - libgfortran5=13.2.0=ha4646dd_5 + - libglib=2.78.4=hf2295e7_4 + - libgomp=13.2.0=h807b86a_5 + - libgrpc=1.51.1=h4fad500_1 + - libhwloc=2.9.1=hd6dc26d_0 + - libiconv=1.17=hd590300_2 + - liblapack=3.9.0=21_linux64_mkl + - liblapacke=3.9.0=21_linux64_mkl + - libnghttp2=1.58.0=h47da74e_1 + - libnpp=11.8.0.86=0 + - libnsl=2.0.1=hd590300_0 + - libnvjpeg=11.9.0.86=0 + - libpng=1.6.43=h2797004_0 + - libprotobuf=3.21.12=hfc55251_2 + - libsqlite=3.45.1=h2797004_0 + - libssh2=1.11.0=h0841786_0 + - libstdcxx-ng=13.2.0=h7e041cc_5 + - libtiff=4.5.0=h6adf6a1_2 + - libuuid=2.38.1=h0b41bf4_0 + - libuv=1.48.0=hd590300_0 + - libwebp-base=1.3.2=hd590300_0 + - libxcb=1.13=h7f98852_1004 + - libxcrypt=4.4.36=hd590300_1 + - libxml2=2.10.3=hca2bb57_4 + - libzlib=1.2.13=hd590300_5 + - llvm-openmp=17.0.6=h4dfa4b3_0 + - markdown=3.5.2=pyhd8ed1ab_0 + - markupsafe=2.1.5=py310h2372a71_0 + - metis=5.1.1=h59595ed_2 + - mkl=2024.0.0=ha957f24_49657 + - mkl-devel=2024.0.0=ha770c72_49657 + - mkl-include=2024.0.0=ha957f24_49657 + - mpc=1.3.1=hfe3b2da_0 + - mpfr=4.2.1=h9458935_0 + - mpmath=1.3.0=pyhd8ed1ab_0 + - multidict=6.0.5=py310h2372a71_0 + - nccl=2.20.5.1=h6103f9b_0 + - ncurses=6.4=h59595ed_2 + - nettle=3.6=he412f7d_0 + - networkx=3.2.1=pyhd8ed1ab_0 + - numpy=1.26.4=py310hb13e2d6_0 + - oauthlib=3.2.2=pyhd8ed1ab_0 + - openbabel=3.1.1=py310heaf86c6_5 + - openh264=2.1.1=h780b84a_0 + - openjpeg=2.5.0=hfec8fc6_2 + - openssl=3.2.1=hd590300_0 + - opt_einsum=3.3.0=pyhc1e730c_2 + - ordered-set=4.1.0=pyhd8ed1ab_0 + - orjson=3.9.15=py310hcb5633a_0 + - packaging=23.2=pyhd8ed1ab_0 + - pandas=2.2.1=py310hcc13569_0 + - pcre2=10.43=hcad00b1_0 + - perl=5.32.1=7_hd590300_perl5 + - pillow=9.4.0=py310h023d228_1 + - pip=24.0=pyhd8ed1ab_0 + - pixman=0.43.2=h59595ed_0 + - protobuf=4.21.12=py310heca2aa9_0 + - psutil=5.9.8=py310h2372a71_0 + - pthread-stubs=0.4=h36c2ea0_1001 + - pyasn1=0.5.1=pyhd8ed1ab_0 + - pyasn1-modules=0.3.0=pyhd8ed1ab_0 + - pycparser=2.21=pyhd8ed1ab_0 + - pyg=2.5.0=py310_torch_2.0.0_cu118 + - pygments=2.17.2=pyhd8ed1ab_0 + - pyjwt=2.8.0=pyhd8ed1ab_1 + - pyopenssl=24.0.0=pyhd8ed1ab_0 + - pyparsing=3.1.2=pyhd8ed1ab_0 + - pysocks=1.7.1=pyha2e5f31_6 + - python=3.10.13=hd12c33a_1_cpython + - python-dateutil=2.9.0=pyhd8ed1ab_0 + - python-flatbuffers=24.3.6=pyh59ac667_0 + - python-tzdata=2024.1=pyhd8ed1ab_0 + - python_abi=3.10=4_cp310 + - pytorch=2.0.1=py3.10_cuda11.8_cudnn8.7.0_0 + - pytorch-cuda=11.8=h7e8668a_5 + - pytorch-mutex=1.0=cuda + - pytz=2024.1=pyhd8ed1ab_0 + - pyu2f=0.1.5=pyhd8ed1ab_0 + - re2=2023.02.01=hcb278e6_0 + - readline=8.2=h8228510_1 + - requests=2.31.0=pyhd8ed1ab_0 + - requests-oauthlib=1.3.1=pyhd8ed1ab_0 + - rsa=4.9=pyhd8ed1ab_0 + - scikit-learn=1.4.1.post1=py310h1fdf081_0 + - scipy=1.12.0=py310hb13e2d6_2 + - setuptools=69.1.1=pyhd8ed1ab_0 + - six=1.16.0=pyh6c4a22f_0 + - snappy=1.1.10=h9fff704_0 + - sympy=1.12=pypyh9d50eac_103 + - tbb=2021.9.0=hf52228f_0 + - tensorboard=2.11.2=pyhd8ed1ab_0 + - tensorboard-data-server=0.6.1=py310h600f1e7_4 + - tensorboard-plugin-wit=1.8.1=pyhd8ed1ab_0 + - tensorflow=2.11.0=cuda112py310he87a039_0 + - tensorflow-base=2.11.0=cuda112py310h52da4a5_0 + - tensorflow-estimator=2.11.0=cuda112py310h37add04_0 + - termcolor=2.4.0=pyhd8ed1ab_0 + - threadpoolctl=3.3.0=pyhc1e730c_0 + - tk=8.6.13=noxft_h4845f30_101 + - torchaudio=2.0.2=py310_cu118 + - torchtriton=2.0.0=py310 + - torchvision=0.15.2=py310_cu118 + - tqdm=4.66.2=pyhd8ed1ab_0 + - typing-extensions=4.10.0=hd8ed1ab_0 + - typing_extensions=4.10.0=pyha770c72_0 + - tzdata=2024a=h0c530f3_0 + - urllib3=2.2.1=pyhd8ed1ab_0 + - werkzeug=3.0.1=pyhd8ed1ab_0 + - wheel=0.42.0=pyhd8ed1ab_0 + - wrapt=1.16.0=py310h2372a71_0 + - xorg-kbproto=1.0.7=h7f98852_1002 + - xorg-libice=1.1.1=hd590300_0 + - xorg-libsm=1.2.4=h7391055_0 + - xorg-libx11=1.8.4=h0b41bf4_0 + - xorg-libxau=1.0.11=hd590300_0 + - xorg-libxdmcp=1.1.3=h7f98852_0 + - xorg-libxext=1.3.4=h0b41bf4_2 + - xorg-libxrender=0.9.10=h7f98852_1003 + - xorg-renderproto=0.11.1=h7f98852_1002 + - xorg-xextproto=7.3.0=h0b41bf4_1003 + - xorg-xproto=7.0.31=h7f98852_1007 + - xz=5.2.6=h166bdaf_0 + - yarl=1.9.4=py310h2372a71_0 + - zipp=3.17.0=pyhd8ed1ab_0 + - zlib=1.2.13=hd590300_5 + - zstd=1.5.5=hfc55251_0 + - pip: + - antlr4-python3-runtime==4.9.3 + - assertpy==1.1 + - configparser==6.0.1 + - dllogger==1.0.0 + - docker-pycreds==0.4.0 + - e3nn==0.3.3 + - gitdb==4.0.11 + - gitpython==3.1.42 + - hydra-core==1.3.2 + - omegaconf==2.3.0 + - opt-einsum-fx==0.1.4 + - pathtools==0.1.2 + - promise==2.3 + - pynvml==11.0.0 + - pyrsistent==0.20.0 + - pyyaml==6.0.1 + - sentry-sdk==1.41.0 + - shortuuid==1.0.12 + - smmap==5.0.1 + - subprocess32==3.5.4 + - wandb==0.12.0 From 54e3142a20a40890c3d606fe53ff5bfd1a4cfe61 Mon Sep 17 00:00:00 2001 From: Alex Morehead Date: Sun, 10 Mar 2024 14:44:09 -0500 Subject: [PATCH 04/17] Call `install_dependencies.sh` in README.md --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5f57961..e2b2916 100644 --- a/README.md +++ b/README.md @@ -42,11 +42,15 @@ pip3 install --no-cache-dir -r requirements.txt python3 setup.py install cd ../../ ``` -4. Download the model weights. +4. Install input preparation dependencies +``` +bash install_dependencies.sh +``` +5. Download the model weights. ``` wget http://files.ipd.uw.edu/pub/RF-All-Atom/weights/RFAA_paper_weights.pt ``` -5. Download sequence databases for MSA and template generation. +6. Download sequence databases for MSA and template generation. ``` # uniref30 [46G] wget http://wwwuser.gwdg.de/~compbiol/uniclust/2020_06/UniRef30_2020_06_hhsuite.tar.gz From 64228a4ac80d706375325cf4384ddbc4d7d47a8c Mon Sep 17 00:00:00 2001 From: Alex Morehead Date: Sun, 10 Mar 2024 14:45:48 -0500 Subject: [PATCH 05/17] Create make_ss.sh --- input_prep/make_ss.sh | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 input_prep/make_ss.sh diff --git a/input_prep/make_ss.sh b/input_prep/make_ss.sh new file mode 100644 index 0000000..b08149e --- /dev/null +++ b/input_prep/make_ss.sh @@ -0,0 +1,30 @@ +#!/bin/bash +# From: https://github.com/RosettaCommons/RoseTTAFold + +DATADIR="$CONDA_PREFIX/share/psipred_4.01/data" +echo $DATADIR + +i_a3m="$1" +o_ss="$2" + +ID=$(basename $i_a3m .a3m).tmp + +$PIPE_DIR/csblast-2.2.3/bin/csbuild -i $i_a3m -I a3m -D $PIPE_DIR/csblast-2.2.3/data/K4000.crf -o $ID.chk -O chk + +head -n 2 $i_a3m > $ID.fasta +echo $ID.chk > $ID.pn +echo $ID.fasta > $ID.sn + +makemat -P $ID +psipred $ID.mtx $DATADIR/weights.dat $DATADIR/weights.dat2 $DATADIR/weights.dat3 > $ID.ss +psipass2 $DATADIR/weights_p2.dat 1 1.0 1.0 $i_a3m.csb.hhblits.ss2 $ID.ss > $ID.horiz + +( +echo ">ss_pred" +grep "^Pred" $ID.horiz | awk '{print $2}' +echo ">ss_conf" +grep "^Conf" $ID.horiz | awk '{print $2}' +) | awk '{if(substr($1,1,1)==">") {print "\n"$1} else {printf "%s", $1}} END {print ""}' | sed "1d" > $o_ss + +rm ${i_a3m}.csb.hhblits.ss2 +rm $ID.* From 05d075428559694bab123a71027162daba43c2b5 Mon Sep 17 00:00:00 2001 From: Alex Morehead Date: Sun, 10 Mar 2024 14:46:21 -0500 Subject: [PATCH 06/17] Create install_dependencies.sh --- install_dependencies.sh | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 install_dependencies.sh diff --git a/install_dependencies.sh b/install_dependencies.sh new file mode 100644 index 0000000..1ff56e6 --- /dev/null +++ b/install_dependencies.sh @@ -0,0 +1,22 @@ +#!/bin/bash +# From: https://github.com/RosettaCommons/RoseTTAFold + +# install external program not supported by conda installation +case "$(uname -s)" in + Linux*) platform=linux;; + Darwin*) platform=macosx;; + *) echo "unsupported OS type. exiting"; exit 1 +esac +echo "Installing dependencies for ${platform}..." + +# the cs-blast platform descriptoin includes the width of memory addresses +# we expect a 64-bit operating system +if [[ ${platform} == "linux" ]]; then + platform=${platform}64 +fi + +# download cs-blast +echo "Downloading cs-blast ..." +wget http://wwwuser.gwdg.de/~compbiol/data/csblast/releases/csblast-2.2.3_${platform}.tar.gz -O csblast-2.2.3.tar.gz +mkdir -p csblast-2.2.3 +tar xf csblast-2.2.3.tar.gz -C csblast-2.2.3 --strip-components=1 From 713d6f1a90bfc8cc365692482cc1e940da90c327 Mon Sep 17 00:00:00 2001 From: Alex Morehead Date: Sun, 10 Mar 2024 14:47:31 -0500 Subject: [PATCH 07/17] Update make_msa.sh --- make_msa.sh | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/make_msa.sh b/make_msa.sh index 9fbc874..0f59593 100755 --- a/make_msa.sh +++ b/make_msa.sh @@ -8,9 +8,12 @@ out_dir="$2" CPU="$3" MEM="$4" -# pipe_dir -PIPE_DIR="$5" -DB_TEMPL="$6" +# template database +DB_TEMPL="$5" + +# current script directory (i.e., pipe directory) +SCRIPT=`realpath -s $0` +export PIPE_DIR=`dirname $SCRIPT` # sequence databases DB_UR30="$PIPE_DIR/uniclust/UniRef30_2021_06" From d470ab4df037ae1b701f31155e8993cb9566a893 Mon Sep 17 00:00:00 2001 From: Alex Morehead Date: Sun, 10 Mar 2024 14:56:18 -0500 Subject: [PATCH 08/17] Add instructions for configuring signalp6 to README.md --- README.md | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e2b2916..718a11e 100644 --- a/README.md +++ b/README.md @@ -42,15 +42,23 @@ pip3 install --no-cache-dir -r requirements.txt python3 setup.py install cd ../../ ``` -4. Install input preparation dependencies +4. Configure signalp6 after downloading a licensed copy of it from https://services.healthtech.dtu.dk/services/SignalP-6.0/ +``` +# NOTE: (current) version 6.0h is used in this example, which was downloaded to the current working directory using `wget` +signalp6-register signalp-6.0h.fast.tar.gz + +# NOTE: once registration is complete, one must rename the "distilled" model weights +mv $CONDA_PREFIX/lib/python3.10/site-packages/signalp/model_weights/distilled_model_signalp6.pt $CONDA_PREFIX/lib/python3.10/site-packages/signalp/model_weights/ensemble_model_signalp6.pt +``` +5. Install input preparation dependencies ``` bash install_dependencies.sh ``` -5. Download the model weights. +6. Download the model weights. ``` wget http://files.ipd.uw.edu/pub/RF-All-Atom/weights/RFAA_paper_weights.pt ``` -6. Download sequence databases for MSA and template generation. +7. Download sequence databases for MSA and template generation. ``` # uniref30 [46G] wget http://wwwuser.gwdg.de/~compbiol/uniclust/2020_06/UniRef30_2020_06_hhsuite.tar.gz From 4700c499a2b1299f3b42d4d06fbcc862e109fe20 Mon Sep 17 00:00:00 2001 From: Alex Morehead Date: Sun, 10 Mar 2024 14:57:56 -0500 Subject: [PATCH 09/17] Update .gitignore --- .gitignore | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.gitignore b/.gitignore index bc161a0..eab0528 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,8 @@ __pycache__/ unit_tests/ ruff.toml */scratch/ +csblast-2.2.3/ +outputs/ +pdb100_2021Mar03/ +RFAA_paper_weights.pt +SE3nv-20240131.sif From 3ec18abac4cff6bba1c3d6b67a4dc035ad5f9a1b Mon Sep 17 00:00:00 2001 From: Alex Morehead Date: Sun, 10 Mar 2024 14:58:56 -0500 Subject: [PATCH 10/17] Update environment.yaml --- environment.yaml | 93 +++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 84 insertions(+), 9 deletions(-) diff --git a/environment.yaml b/environment.yaml index e5ba62e..8882e34 100644 --- a/environment.yaml +++ b/environment.yaml @@ -1,9 +1,11 @@ name: RFAA channels: + - predector - pyg - bioconda - pytorch - nvidia + - biocore - conda-forge dependencies: - _libgcc_mutex=0.1=conda_forge @@ -11,13 +13,18 @@ dependencies: - absl-py=2.1.0=pyhd8ed1ab_0 - aiohttp=3.9.3=py310h2372a71_0 - aiosignal=1.3.1=pyhd8ed1ab_0 + - alsa-lib=1.2.8=h166bdaf_0 - asttokens=2.4.1=pyhd8ed1ab_0 - astunparse=1.6.3=pyhd8ed1ab_0 - async-timeout=4.0.3=pyhd8ed1ab_0 + - attr=2.5.1=h166bdaf_1 - attrs=23.2.0=pyh71513ae_0 - blas=2.121=mkl - blas-devel=3.9.0=21_linux64_mkl + - blast-legacy=2.2.26=2 - blinker=1.7.0=pyhd8ed1ab_0 + - brotli=1.1.0=hd590300_1 + - brotli-bin=1.1.0=hd590300_1 - brotli-python=1.1.0=py310hc6cd4ac_1 - bzip2=1.0.8=hd590300_5 - c-ares=1.27.0=hd590300_0 @@ -31,7 +38,8 @@ dependencies: - charset-normalizer=3.3.2=pyhd8ed1ab_0 - click=8.1.7=unix_pyh707e725_0 - colorama=0.4.6=pyhd8ed1ab_0 - - cryptography=42.0.5=py310h75e40e8_0 + - contourpy=1.2.0=py310hd41b1e2_0 + - cryptography=42.0.2=py310hb8475ec_0 - cuda-cudart=11.8.89=0 - cuda-cupti=11.8.87=0 - cuda-libraries=11.8.0=0 @@ -41,11 +49,14 @@ dependencies: - cuda-version=11.8=h70ddcb2_3 - cudatoolkit=11.8.0=h4ba93d1_13 - cudnn=8.8.0.121=hcdd5f01_4 + - cycler=0.12.1=pyhd8ed1ab_0 + - dbus=1.13.6=h5008d03_3 - deepdiff=6.7.1=pyhd8ed1ab_0 - dgl=1.1.2=cuda112py310hc641c19_2 - executing=2.0.1=pyhd8ed1ab_0 - expat=2.6.1=h59595ed_0 - ffmpeg=4.3=hf484d3e_0 + - fftw=3.3.10=nompi_hc118613_108 - filelock=3.13.1=pyhd8ed1ab_0 - flatbuffers=22.12.06=hcb278e6_2 - font-ttf-dejavu-sans-mono=2.37=hab24e00_0 @@ -55,33 +66,44 @@ dependencies: - fontconfig=2.14.2=h14ed4e7_0 - fonts-conda-ecosystem=1=0 - fonts-conda-forge=1=0 + - fonttools=4.49.0=py310h2372a71_0 - freetype=2.12.1=h267a509_2 - frozenlist=1.4.1=py310h2372a71_0 - fsspec=2024.2.0=pyhca7485f_0 - gast=0.4.0=pyh9f0ad1d_0 - gettext=0.21.1=h27087fc_0 - giflib=5.2.1=h0b41bf4_3 + - glib=2.78.4=hfc55251_4 + - glib-tools=2.78.4=hfc55251_4 - gmp=6.3.0=h59595ed_0 - gmpy2=2.1.2=py310h3ec546c_1 - gnutls=3.6.13=h85f3911_1 - google-auth=2.28.2=pyhca7485f_0 - google-auth-oauthlib=0.4.6=pyhd8ed1ab_0 - google-pasta=0.2.0=pyh8c360ce_0 + - graphite2=1.3.13=h58526e2_1001 - grpcio=1.51.1=py310h4a5735c_1 - - h5py=3.10.0=nompi_py310h65828d5_101 - - hdf5=1.14.3=nompi_h4f84152_100 + - gst-plugins-base=1.22.0=h4243ec0_2 + - gstreamer=1.22.0=h25f0c4b_2 + - gstreamer-orc=0.4.38=hd590300_0 + - gzip=1.13=hd590300_0 + - h5py=3.9.0=nompi_py310hcca72df_101 + - harfbuzz=6.0.0=h8e241bc_0 + - hdf5=1.14.1=nompi_h4f84152_100 - hhsuite=3.3.0=py310pl5321h068649b_10 - icecream=2.1.3=pyhd8ed1ab_0 - icu=70.1=h27087fc_0 - idna=3.6=pyhd8ed1ab_0 - importlib-metadata=7.0.2=pyha770c72_0 + - jack=1.9.22=h11f4161_0 - jinja2=3.1.3=pyhd8ed1ab_0 - joblib=1.3.2=pyhd8ed1ab_0 - jpeg=9e=h0b41bf4_3 - keras=2.11.0=pyhd8ed1ab_0 - keras-preprocessing=1.1.2=pyhd8ed1ab_0 - keyutils=1.6.1=h166bdaf_0 - - krb5=1.21.2=h659d440_0 + - kiwisolver=1.4.5=py310hd41b1e2_1 + - krb5=1.20.1=h81ceb04_0 - lame=3.100=h166bdaf_1003 - lcms2=2.15=hfd0df8a_0 - ld_impl_linux-64=2.40=h41732ed_0 @@ -89,67 +111,98 @@ dependencies: - libabseil=20220623.0=cxx17_h05df665_6 - libaec=1.1.2=h59595ed_1 - libblas=3.9.0=21_linux64_mkl + - libbrotlicommon=1.1.0=hd590300_1 + - libbrotlidec=1.1.0=hd590300_1 + - libbrotlienc=1.1.0=hd590300_1 + - libcap=2.67=he9d0100_0 - libcblas=3.9.0=21_linux64_mkl + - libclang=15.0.7=default_hb11cfb5_4 + - libclang13=15.0.7=default_ha2b6cf4_4 - libcublas=11.11.3.6=0 - libcufft=10.9.0.58=0 - libcufile=1.9.0.20=0 + - libcups=2.3.3=h36d4200_3 - libcurand=10.3.5.119=0 - - libcurl=8.5.0=hca28451_0 + - libcurl=8.1.2=h409715c_0 - libcusolver=11.4.1.48=0 - libcusparse=11.7.5.86=0 + - libdb=6.2.32=h9c3ff4c_0 - libdeflate=1.17=h0b41bf4_0 - libedit=3.1.20191231=he28a2e2_2 - libev=4.33=hd590300_2 + - libevent=2.1.10=h28343ad_4 - libexpat=2.6.1=h59595ed_0 - libffi=3.4.2=h7f98852_5 + - libflac=1.4.3=h59595ed_0 - libgcc-ng=13.2.0=h807b86a_5 + - libgcrypt=1.10.3=hd590300_0 - libgfortran-ng=13.2.0=h69a702a_5 - libgfortran5=13.2.0=ha4646dd_5 - libglib=2.78.4=hf2295e7_4 - libgomp=13.2.0=h807b86a_5 + - libgpg-error=1.48=h71f35ed_0 - libgrpc=1.51.1=h4fad500_1 - libhwloc=2.9.1=hd6dc26d_0 - libiconv=1.17=hd590300_2 - liblapack=3.9.0=21_linux64_mkl - liblapacke=3.9.0=21_linux64_mkl - - libnghttp2=1.58.0=h47da74e_1 + - libllvm15=15.0.7=hadd5161_1 + - libnghttp2=1.58.0=h47da74e_0 - libnpp=11.8.0.86=0 - libnsl=2.0.1=hd590300_0 - libnvjpeg=11.9.0.86=0 + - libogg=1.3.4=h7f98852_1 + - libopus=1.3.1=h7f98852_1 - libpng=1.6.43=h2797004_0 + - libpq=15.3=hbcd7760_1 - libprotobuf=3.21.12=hfc55251_2 + - libsndfile=1.2.2=hc60ed4a_1 - libsqlite=3.45.1=h2797004_0 - libssh2=1.11.0=h0841786_0 - libstdcxx-ng=13.2.0=h7e041cc_5 + - libsystemd0=253=h8c4010b_1 - libtiff=4.5.0=h6adf6a1_2 + - libtool=2.4.7=h27087fc_0 + - libudev1=253=h0b41bf4_1 - libuuid=2.38.1=h0b41bf4_0 - libuv=1.48.0=hd590300_0 + - libvorbis=1.3.7=h9c3ff4c_0 - libwebp-base=1.3.2=hd590300_0 - libxcb=1.13=h7f98852_1004 - libxcrypt=4.4.36=hd590300_1 + - libxkbcommon=1.5.0=h79f4944_1 - libxml2=2.10.3=hca2bb57_4 - libzlib=1.2.13=hd590300_5 - llvm-openmp=17.0.6=h4dfa4b3_0 + - lz4-c=1.9.4=hcb278e6_0 - markdown=3.5.2=pyhd8ed1ab_0 - markupsafe=2.1.5=py310h2372a71_0 + - matplotlib=3.8.3=py310hff52083_0 + - matplotlib-base=3.8.3=py310h62c0568_0 - metis=5.1.1=h59595ed_2 - mkl=2024.0.0=ha957f24_49657 - mkl-devel=2024.0.0=ha770c72_49657 - mkl-include=2024.0.0=ha957f24_49657 - mpc=1.3.1=hfe3b2da_0 - mpfr=4.2.1=h9458935_0 + - mpg123=1.32.4=h59595ed_0 - mpmath=1.3.0=pyhd8ed1ab_0 - multidict=6.0.5=py310h2372a71_0 + - munkres=1.1.4=pyh9f0ad1d_0 + - mysql-common=8.0.33=hf1915f5_6 + - mysql-libs=8.0.33=hca2cd23_6 - nccl=2.20.5.1=h6103f9b_0 - ncurses=6.4=h59595ed_2 - nettle=3.6=he412f7d_0 - networkx=3.2.1=pyhd8ed1ab_0 + - nspr=4.35=h27087fc_0 + - nss=3.98=h1d7d5a4_0 - numpy=1.26.4=py310hb13e2d6_0 - oauthlib=3.2.2=pyhd8ed1ab_0 - openbabel=3.1.1=py310heaf86c6_5 - openh264=2.1.1=h780b84a_0 - openjpeg=2.5.0=hfec8fc6_2 - - openssl=3.2.1=hd590300_0 + - openssl=3.1.5=hd590300_0 - opt_einsum=3.3.0=pyhc1e730c_2 - ordered-set=4.1.0=pyhd8ed1ab_0 - orjson=3.9.15=py310hcb5633a_0 @@ -160,9 +213,14 @@ dependencies: - pillow=9.4.0=py310h023d228_1 - pip=24.0=pyhd8ed1ab_0 - pixman=0.43.2=h59595ed_0 + - ply=3.11=py_1 - protobuf=4.21.12=py310heca2aa9_0 + - psipred=4.01=1 - psutil=5.9.8=py310h2372a71_0 - pthread-stubs=0.4=h36c2ea0_1001 + - pulseaudio=16.1=hcb278e6_3 + - pulseaudio-client=16.1=h5195f5e_3 + - pulseaudio-daemon=16.1=ha8d29e2_3 - pyasn1=0.5.1=pyhd8ed1ab_0 - pyasn1-modules=0.3.0=pyhd8ed1ab_0 - pycparser=2.21=pyhd8ed1ab_0 @@ -171,8 +229,10 @@ dependencies: - pyjwt=2.8.0=pyhd8ed1ab_1 - pyopenssl=24.0.0=pyhd8ed1ab_0 - pyparsing=3.1.2=pyhd8ed1ab_0 + - pyqt=5.15.9=py310h04931ad_5 + - pyqt5-sip=12.12.2=py310hc6cd4ac_5 - pysocks=1.7.1=pyha2e5f31_6 - - python=3.10.13=hd12c33a_1_cpython + - python=3.10.13=hd12c33a_0_cpython - python-dateutil=2.9.0=pyhd8ed1ab_0 - python-flatbuffers=24.3.6=pyh59ac667_0 - python-tzdata=2024.1=pyhd8ed1ab_0 @@ -182,6 +242,7 @@ dependencies: - pytorch-mutex=1.0=cuda - pytz=2024.1=pyhd8ed1ab_0 - pyu2f=0.1.5=pyhd8ed1ab_0 + - qt-main=5.15.8=h5d23da1_6 - re2=2023.02.01=hcb278e6_0 - readline=8.2=h8228510_1 - requests=2.31.0=pyhd8ed1ab_0 @@ -190,6 +251,8 @@ dependencies: - scikit-learn=1.4.1.post1=py310h1fdf081_0 - scipy=1.12.0=py310hb13e2d6_2 - setuptools=69.1.1=pyhd8ed1ab_0 + - signalp6=6.0g=1 + - sip=6.7.12=py310hc6cd4ac_0 - six=1.16.0=pyh6c4a22f_0 - snappy=1.1.10=h9fff704_0 - sympy=1.12=pypyh9d50eac_103 @@ -203,17 +266,28 @@ dependencies: - termcolor=2.4.0=pyhd8ed1ab_0 - threadpoolctl=3.3.0=pyhc1e730c_0 - tk=8.6.13=noxft_h4845f30_101 + - toml=0.10.2=pyhd8ed1ab_0 + - tomli=2.0.1=pyhd8ed1ab_0 - torchaudio=2.0.2=py310_cu118 - torchtriton=2.0.0=py310 - torchvision=0.15.2=py310_cu118 + - tornado=6.4=py310h2372a71_0 - tqdm=4.66.2=pyhd8ed1ab_0 - typing-extensions=4.10.0=hd8ed1ab_0 - typing_extensions=4.10.0=pyha770c72_0 - tzdata=2024a=h0c530f3_0 + - unicodedata2=15.1.0=py310h2372a71_0 + - unzip=6.0=h7f98852_3 - urllib3=2.2.1=pyhd8ed1ab_0 - werkzeug=3.0.1=pyhd8ed1ab_0 - wheel=0.42.0=pyhd8ed1ab_0 - wrapt=1.16.0=py310h2372a71_0 + - xcb-util=0.4.0=h516909a_0 + - xcb-util-image=0.4.0=h166bdaf_0 + - xcb-util-keysyms=0.4.0=h516909a_0 + - xcb-util-renderutil=0.3.9=h166bdaf_0 + - xcb-util-wm=0.4.1=h516909a_0 + - xkeyboard-config=2.38=h0b41bf4_0 - xorg-kbproto=1.0.7=h7f98852_1002 - xorg-libice=1.1.1=hd590300_0 - xorg-libsm=1.2.4=h7391055_0 @@ -227,6 +301,7 @@ dependencies: - xorg-xproto=7.0.31=h7f98852_1007 - xz=5.2.6=h166bdaf_0 - yarl=1.9.4=py310h2372a71_0 + - zip=3.0=hd590300_3 - zipp=3.17.0=pyhd8ed1ab_0 - zlib=1.2.13=hd590300_5 - zstd=1.5.5=hfc55251_0 @@ -234,7 +309,7 @@ dependencies: - antlr4-python3-runtime==4.9.3 - assertpy==1.1 - configparser==6.0.1 - - dllogger==1.0.0 + - git+https://github.com/NVIDIA/dllogger.git@0540a43971f4a8a16693a9de9de73c1072020769 - docker-pycreds==0.4.0 - e3nn==0.3.3 - gitdb==4.0.11 From 87ea2888f68bddf802ae5c53d309560d5fd5689d Mon Sep 17 00:00:00 2001 From: Alex Morehead Date: Sun, 10 Mar 2024 15:16:59 -0500 Subject: [PATCH 11/17] Update make_msa.sh --- make_msa.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/make_msa.sh b/make_msa.sh index 0f59593..6da7bc4 100755 --- a/make_msa.sh +++ b/make_msa.sh @@ -112,6 +112,7 @@ then fi echo "Running PSIPRED" +mkdir -p $out_dir/log $PIPE_DIR/input_prep/make_ss.sh $out_dir/t000_.msa0.a3m $out_dir/t000_.ss2 > $out_dir/log/make_ss.stdout 2> $out_dir/log/make_ss.stderr if [ ! -s $out_dir/t000_.hhr ] From 936ce17c8bbccd803ea2a5355d281cd783057f9e Mon Sep 17 00:00:00 2001 From: Alex Morehead Date: Sun, 10 Mar 2024 15:36:17 -0500 Subject: [PATCH 12/17] Update base.yaml --- rf2aa/config/inference/base.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rf2aa/config/inference/base.yaml b/rf2aa/config/inference/base.yaml index c6662ce..db93bcd 100644 --- a/rf2aa/config/inference/base.yaml +++ b/rf2aa/config/inference/base.yaml @@ -3,7 +3,7 @@ output_path: "" checkpoint_path: RFAA_paper_weights.pt database_params: sequencedb: "" - hhdb: "pdb100_2022Apr19/pdb100_2022Apr19" + hhdb: "pdb100_2021Mar03/pdb100_2021Mar03" command: make_msa.sh num_cpus: 4 mem: 64 From b91deacb8d39830ac5ef33f2af3ff41d428a3469 Mon Sep 17 00:00:00 2001 From: Alex Morehead Date: Sun, 10 Mar 2024 16:42:22 -0500 Subject: [PATCH 13/17] Add files via upload --- input_prep/make_ss.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/input_prep/make_ss.sh b/input_prep/make_ss.sh index b08149e..bb792f4 100644 --- a/input_prep/make_ss.sh +++ b/input_prep/make_ss.sh @@ -27,4 +27,4 @@ grep "^Conf" $ID.horiz | awk '{print $2}' ) | awk '{if(substr($1,1,1)==">") {print "\n"$1} else {printf "%s", $1}} END {print ""}' | sed "1d" > $o_ss rm ${i_a3m}.csb.hhblits.ss2 -rm $ID.* +rm $ID.* \ No newline at end of file From e51736412b1db5b5790a696857f2ce808ded07b1 Mon Sep 17 00:00:00 2001 From: Alex Morehead Date: Sun, 10 Mar 2024 19:08:26 -0500 Subject: [PATCH 14/17] Update README.md --- README.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 718a11e..11a30b1 100644 --- a/README.md +++ b/README.md @@ -145,27 +145,28 @@ python -m rf2aa.run_inference --config-name nucleic_acid ### Predicting Protein Small Molecule Complexes To predict protein small molecule complexes, the syntax to input the protein remains the same. Adding in the small molecule works similarly to other inputs. -Here is an example (from `rf2aa/config/inference/protein_sm.yaml`): +Here is an example (from `rf2aa/config/inference/protein_complex_sm.yaml`): ``` defaults: - base - -job_name: 7qxr +job_name: "3fap" protein_inputs: - A: - fasta_file: examples/protein/7qxr.fasta + A: + fasta_file: examples/protein/3fap_A.fasta + B: + fasta_file: examples/protein/3fap_B.fasta sm_inputs: - B: - input: examples/small_molecule/NSW_ideal.sdf + C: + input: examples/small_molecule/ARD_ideal.sdf input_type: "sdf" ``` Small molecule inputs are provided as sdf files or smiles strings and users are **required** to provide both an input and an input_type field for every small molecule that they want to provide. Metal ions can also be provided as sdf files or smiles strings. To predict the example: ``` -python -m rf2aa.run_inference --config-name protein_sm +python -m rf2aa.run_inference --config-name protein_complex_sm ``` ### Predicting Higher Order Complexes From fb78132452b9f416f4997e5fbf1ecc18e8d9d8a8 Mon Sep 17 00:00:00 2001 From: Alex Morehead Date: Mon, 11 Mar 2024 10:52:06 -0500 Subject: [PATCH 15/17] Fix merge_inputs.py --- rf2aa/data/merge_inputs.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rf2aa/data/merge_inputs.py b/rf2aa/data/merge_inputs.py index bf12ff8..72aff8c 100644 --- a/rf2aa/data/merge_inputs.py +++ b/rf2aa/data/merge_inputs.py @@ -73,8 +73,8 @@ def merge_protein_inputs(protein_inputs, deterministic: bool = False): chain_lengths = list(zip(protein_inputs.keys(), lengths_list)) merged_input = RawInputData( - a3m_out["msa"], - a3m_out["ins"], + a3m_out[0], + a3m_out[1], bond_feats, xyz_t[:max_template_dim], mask_t[:max_template_dim], From ec93ac6346ad408105d1b7ef638245b35dd9602c Mon Sep 17 00:00:00 2001 From: Alex Morehead Date: Mon, 11 Mar 2024 18:58:37 -0500 Subject: [PATCH 16/17] Revert `protein_complex_sm` config references in README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 11a30b1..7d071ab 100644 --- a/README.md +++ b/README.md @@ -145,7 +145,7 @@ python -m rf2aa.run_inference --config-name nucleic_acid ### Predicting Protein Small Molecule Complexes To predict protein small molecule complexes, the syntax to input the protein remains the same. Adding in the small molecule works similarly to other inputs. -Here is an example (from `rf2aa/config/inference/protein_complex_sm.yaml`): +Here is an example (from `rf2aa/config/inference/protein_sm.yaml`): ``` defaults: - base @@ -166,7 +166,7 @@ Small molecule inputs are provided as sdf files or smiles strings and users are To predict the example: ``` -python -m rf2aa.run_inference --config-name protein_complex_sm +python -m rf2aa.run_inference --config-name protein_sm ``` ### Predicting Higher Order Complexes From 1fcd8ec1a95a1e99ec16a560ef51a22f0b1a21a2 Mon Sep 17 00:00:00 2001 From: Alex Morehead Date: Mon, 11 Mar 2024 19:01:21 -0500 Subject: [PATCH 17/17] Revert integer indexing in merge_inputs.py --- rf2aa/data/merge_inputs.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rf2aa/data/merge_inputs.py b/rf2aa/data/merge_inputs.py index 72aff8c..bf12ff8 100644 --- a/rf2aa/data/merge_inputs.py +++ b/rf2aa/data/merge_inputs.py @@ -73,8 +73,8 @@ def merge_protein_inputs(protein_inputs, deterministic: bool = False): chain_lengths = list(zip(protein_inputs.keys(), lengths_list)) merged_input = RawInputData( - a3m_out[0], - a3m_out[1], + a3m_out["msa"], + a3m_out["ins"], bond_feats, xyz_t[:max_template_dim], mask_t[:max_template_dim],