deepmind/alphafold2-multimer
RUN ANYWHERE
Predicts the 3D structure of a protein from its amino acid sequence.
By running the below commands, you accept the NVIDIA AI Enterprise Terms of Use and the NVIDIA Community Models License.
Pull and run deepmind/alphafold2-multimer
using Docker (this will download the full model and run it in your local environment)
$ docker login nvcr.io Username: $oauthtoken Password: <PASTE_API_KEY_HERE>
Start NIM
- Export
NGC_CLI_API_KEY
variable.
export NGC_CLI_API_KEY=<your personal NGC key>
- The NIM container automatically downloads any required models. To save time and bandwidth it is recommended to provide a local cache directory. This way the NIM will be able to reuse any already downloaded models. Execute the following command to setup the cache directory:
export LOCAL_NIM_CACHE=~/.cache/nim mkdir -p $LOCAL_NIM_CACHE
Note that you may need to run (sudo) chmod -R 777 $LOCAL_NIM_CACHE
after the AlphaFold2 model is downloaded to avoid permission issues.
- Run the NIM container with the following commands:
docker run -it --rm \ --runtime=nvidia \ -p 8000:8000 \ -e NGC_CLI_API_KEY \ -v $LOCAL_NIM_CACHE:/opt/nim/.cache \ nvcr.io/nim/deepmind/alphafold2-multimer:1.0.0
This command will start the NIM container and expose port 8000 for the user to interact with the NIM.
- Open a new terminal, leaving the terminal open with the just launched service. In the new terminal, wait until the health check end point returns
{"status":"ready"}
before proceeding. This may take a couple of minutes. You can use the following command to query the health check.
curl -X 'GET' \ 'http://localhost:8000/v1/health/ready' \ -H 'accept: application/json'
Python Client Example
- Save following Python example to a file named
nim_client.py
.
import requests import json url = "http://localhost:8000/protein-structure/alphafold2/multimer/predict-structure-from-sequences" # Replace with the actual URL sequences = ["MNVIDIAIAMAI", "NESKHCAWVMIPTFRQYDGL"] # Replace with the actual sequences. headers = { "content-type": "application/json" } data = { "sequences": sequences, "databases": ["small_bfd"], "e_value": 0.000001, "algorithm": "jackhmmer", "num_predictions_per_model" : 1, "relax_prediction": False, } response = requests.post(url, headers=headers, data=json.dumps(data)) # Check if the request was successful if response.ok: with open("output.pdb", "w") as ofi: ofi.write(json.dumps(response.json())) print("Request succeeded:", response.json()) else: print("Request failed:", response.status_code, response.text)
- Execute the example.
python nim_client.py
- The resulting PDB structure will be returned and written to
output.pdb
.
cat output.pdb
Shell Client Example
- Save the following Shell example to a file named
nim_client.sh
.
#!/usr/bin/env bash set -e URL=http://localhost:8000/protein-structure/alphafold2/multimer/predict-structure-from-sequences request='{ "sequences": ["MNVIDIAIAMAI", "NESKHCAWVMIPTFRQYDGL"] }' curl -H 'Content-Type: application/json' \ -d "$request" "$URL"
- Execute the example.
chmod +x nim_client.sh ./nim_client.sh
- Results will be printed on the terminal in JSON format. You will be able to see the PDB formatted output; you can also use curl to save the output directly to file.