Получение информации из онлайн-базы данных с использованием списка идентификационных номеров

У меня есть список идентификаторов наркотиков. Мне нужно выполнить поиск каждого идентификатора препарата на веб-сайте (ebi.ac.uk/chembl), который является базой данных, и получить информацию о препарате, включая их структуру и другие данные, и перечислить их в таблице.

Я думаю, что один из способов сделать это - написать команду, чтобы каждый раз указывать идентификатор препарата в конце URL-адреса и извлекать информацию для каждого препарата. например, это список идентификаторов лекарств:

CHEMBL3126679
CHEMBL3126678
CHEMBL478673
CHEMBL2386960
CHEMBL2326937
CHEMBL1258156
CHEMBL393858

, и это URL, который содержит информацию для одного лекарства:

https://www.ebi.ac.uk/chembl/compound/inspect/CHEMBL3126679

Последняя часть должна меняться каждый раз.

Какую команду я могу использовать для достижения этой цели?

2
задан 26 April 2018 в 10:59

1 ответ

Вы можете использовать цикл оболочки для обработки идентификаторов, curl или wget, чтобы получить данные, и инструменты, такие как pup , чтобы получить обработку HTML. Например, скажем, идентификаторы находятся в файле с именем foo, тогда вы можете сделать:

while read id
do
    curl -sL "https://www.ebi.ac.uk/chembl/compound/inspect/$id" |
      pup 'tr:parent-of(td:contains("Canonical SMILES")) td:nth-child(2) text{}'
done < foo

Здесь я использовал команду pup для:

  1. найдите таблицу, содержащую Canonical SMILES - td:contains("...")
  2. , получите родительскую строку этого - tr:parent-of(...)
  3. и напечатайте вторую ячейку в этой строке: td:nth-child(2) text{}
  4. [ 1115]

    Я получаю вывод наподобие:

    CC1=CN([C@H]2C[C@H](N=[N+]=[N-])[C@H](O2)C(=O)N)C(=O)NC1=O
    
    
    NC(=O)[C@H]1O[C@H](C[C@@H]1N=[N+]=[N-])N2C=CC(=O)NC2=O
    
    
    NC1=NC(=O)N(Cc2cn(nn2)[C@H]3C[C@H](O)[C@@H](CO)O3)C=C1
    
    
    CC1(C)CC[C@@]2([C@H](O)C[C@]3(C)C(=CC[C@@H]4[C@@]5(C)CCC(N)C ...
    Download SMILES
    
    
    
    COC(=O)c1nn(c2cccc(F)c2)c3c4ccccc4S(=O)(=O)N(C)c13
    
    
    COC(=O)[C@H](C)NP(=O)(OC[C@H]1O[C@@H](N2C=CC(=O)NC2=O)[C@](C ...
    Download SMILES
    
    
    
    CCO[C@]1(CO)O[C@H]([C@H](O)[C@@H]1O)N2C=CC(=NC2=O)N
    

    Я оставлю это вам, чтобы изучить HTML и выяснить другие фильтры.

0
ответ дан 26 April 2018 в 10:59

Другие вопросы по тегам:

Похожие вопросы: