Source code for molsysmt.form.string_alphafold_id.to_file_bcif
from molsysmt._private.digestion import digest
[docs]
@digest(form='string:alphafold_id')
def to_file_bcif(item, atom_indices='all', structure_indices='all', output_filename=None, skip_digestion=False):
from molsysmt._private.files_and_directories import temp_filename
import urllib.request
from urllib.request import urlretrieve
import json
from ..file_bcif import extract
uniprot_id = item.split('-')[-2]
api_url = f"https://alphafold.ebi.ac.uk/api/prediction/{uniprot_id}"
request = urllib.request.Request(api_url, headers={"accept": "application/json"})
with urllib.request.urlopen(request) as response:
if response.status != 200:
raise Exception(f"Error accessing the API: {response.status}")
response_data = response.read()
aux_json = json.loads(response_data)
fullbcifurl = aux_json[0]['bcifUrl']
output = None
if tempfile:
output_filename=temp_filename(extension="bcif")
if output_filename is None:
output_filename = fullpdburl.split("/")[-1]
urlretrieve(fullurl, output_filename)
tmp_item = output_filename
tmp_item = extract(tmp_item, atom_indices=atom_indices, structure_indices=structure_indices,
output_filename=tmp_item, copy_if_all=False, skip_digestion=True)
return tmp_item