Recuperar informações de um banco de dados on-line usando uma lista de números de ID

2

Eu tenho uma lista de IDs de drogas. Preciso pesquisar cada identificação de droga em um site (ebi.ac.uk/chembl) que é um banco de dados e obter informações sobre o medicamento, incluindo sua estrutura e outros detalhes, e listá-los em uma tabela.

Acho que uma maneira de fazer isso é escrever um comando para cada vez que colocar o ID do medicamento no final do URL e extrair as informações de cada medicamento. por exemplo, esta é a lista de IDs de medicamentos:

CHEMBL3126679
CHEMBL3126678
CHEMBL478673
CHEMBL2386960
CHEMBL2326937
CHEMBL1258156
CHEMBL393858

e este é o URL que contém as informações de um medicamento:

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

A última parte deve ser alterada todas as vezes.

Qual comando posso usar para conseguir isso?

    
por Tahereh S 24.04.2018 / 08:46

1 resposta

2

Você pode usar um loop de shell para processar os IDs, curl ou wget para obter os dados e ferramentas como pup para obter o processo do HTML. Por exemplo, digamos que os IDs estejam em um arquivo chamado foo , então você pode fazer:

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

Aqui, usei o comando pup para:

  1. procure uma tabela contendo Canonical SMILES - td:contains("...")
  2. obtenha a linha pai disso - tr:parent-of(...)
  3. e imprime a segunda célula nessa linha: td:nth-child(2) text{}

Eu recebo a saída como:

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

Deixo para você examinar o HTML e descobrir os outros filtros.

    
por muru 24.04.2018 / 12:45