Импорт нужных модулей
!pip install nglview  --user
import nglview as nv
import requests        
import json 
Запрос:
que = {
    "query": {
        "type":"group",
        "logical_operator":"and",
        "nodes":[]
    },
    "return_type":"entry"
}
keyword_clause = {
    "type":"terminal",
    "service":"full_text", 
    "parameters":{
        "value":"pantothenic acid"
    }
}
que["query"]["nodes"].append(keyword_clause)
resolution_clause = {
    "type":"terminal",
    "service":"text",
    "parameters": {
        "value":2.4,
        "attribute":"rcsb_entry_info.resolution_combined",
        "operator":"less_or_equal"
    }
}
que["query"]["nodes"].append(resolution_clause)
has_ligand_clause = {
    "type":"terminal",
    "service":"text",
    "parameters": {
        "attribute":"rcsb_entry_info.nonpolymer_entity_count",
        "value":0,
        "operator":"greater"
    }
}
que["query"]["nodes"].append(has_ligand_clause)
date_range_clause = {
    "type":"terminal",
    "service":"text",
    "parameters":{
        "attribute":"rcsb_accession_info.initial_release_date",
        "value":{
            "from":"2005-01-01",
            "to":"2010-01-01",
          },
          "operator":"range"
    }
}
que["query"]["nodes"].append(date_range_clause)
rcsb = 'https://search.rcsb.org/rcsbsearch/v1/query'
json_query= json.dumps(que)
search = requests.post(f'{rcsb}', data=json_query)
search_result = search.json()
best_hit = search_result["result_set"][0]
Из полученных результатов лучший получился данный:
{'identifier': '3BEX',
 'score': 0.9995449461076253,
 'services': [{'nodes': [{'node_id': 2230,
     'norm_score': 0.9981797844305015,
     'original_score': 15.221461296081543}],
   'service_type': 'full_text'},
  {'nodes': [{'node_id': 13783, 'norm_score': 1.0, 'original_score': 1.0},
    {'node_id': 10780, 'norm_score': 1.0, 'original_score': 1.0},
    {'node_id': 25995, 'norm_score': 1.0, 'original_score': 1.0}],
   'service_type': 'text'}]}
Найденный белок - пантотенаткиназа (panthotenate kinase) третьего типа. PanK (пантотенаткиназы в целом) катализируют самую первую ступень реакции синтеза кофермента А. Данный белок был получен из Thermotoga maritima. Данный тип отличается от полученных ранее первого и второго (бактериального и преимещуственно эукариотического вариантов, соответственно). Авторы статьи отмечают, что использование данного белка для синтеза аналогов кофермента А в качестве антиметаболитов не является эффективным, поскольку PanK-III имеет необычно высокое значение константы Михаэлиса при связи с АТФ, что требуется для протекания реакции и плохо ингибируется продуктами катализа (feedback inhibition).
repr_1 = [
          {   
            "type": "cartoon",
            "params": {
                "sele":"all",
                "color":"sstruc"
            }           
          },
          {
              "type":"line",
              "params":{
                "sele":"sidechainAttached",
                "color":"element"
              }
          },
          {
              "type":"licorice",
              "params": {
                  "sele":"sidechainAttached and aromatic",
                  "color":"element"
              }
          },
          {
              "type":"spacefill",
              "params":{
                  "sele":"ligand",
                  "color":"hydrophobicity"
              }
          }
]
view = nv.show_pdbid("3bex", default_representation=False)
view.set_representations(repr_1)
view.center()
view
repr_2 = [
          {
              "type":"tube", 
              "params": {
                  "sele":"all",
                  "color":"sstruc"
              }
          },
          {
              "type":"licorice",
              "params": {
                  "sele":"sidechainAttached",
                  "color":"hydrophobicity"
              }
          },
          {
              "type":"line",
              "params":{
                  "sele":"ligand",
                  "color":"element"
              }
          },
          {
              "type":"spacefill",
              "params": {
                  "sele":"water or ion"
              }
          }
]
view = nv.show_pdbid("3bex", default_representation=False)
view.set_representations(repr_2)
view.center()
view
repr_3 = [
          {
              "type":"surface",
              "params":{
                  "sele":"all",
                  "color":"white",
                  "opacity":0.1
              }
          },
          {
              "type":"cartoon",
              "params":{
                  "sele":"protein",
                  "color":"#A9A9A9"
              }
          },
          {
              "type":"licorice",
              "params":{
                  "sele":"sidechainAttached",
                  "color":"hydrophobicity"
              }
          },
          {
              "type":"spacefill",
              "params":{
                  "sele":"ligand",
                  "color":"element"
              }
          }
]
view = nv.show_pdbid("3bex", default_representation=False)
view.set_representations(repr_3)
view.center()
view