2 votes

Extraction d'informations d'une base de données en ligne à l'aide d'une liste de numéros d'identification

J'ai une liste d'identifiants de médicaments. Je dois rechercher chaque identifiant de médicament sur un site web (ebi.ac.uk/chembl) qui est une base de données, et obtenir des informations sur le médicament, y compris sa structure et d'autres détails, et les répertorier dans un tableau.

Je pense que l'une des façons d'y parvenir est d'écrire une commande qui, à chaque fois, place l'identifiant du médicament à la fin de l'url et extrait les informations relatives à chaque médicament :

CHEMBL3126679
CHEMBL3126678
CHEMBL478673
CHEMBL2386960
CHEMBL2326937
CHEMBL1258156
CHEMBL393858

et voici l'URL qui contient les informations relatives à un médicament :

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

La dernière partie doit être modifiée à chaque fois.

Quelle commande puis-je utiliser pour y parvenir ?

2voto

muru Points 180007

Vous pouvez utiliser une boucle Shell pour traiter les identifiants, curl o wget pour obtenir les données, et des outils tels que pup pour traiter le HTML. Par exemple, disons que les ID se trouvent dans un fichier nommé foo Vous pouvez donc le faire :

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

Ici, j'ai utilisé le pup à la commande :

  1. rechercher un tableau contenant Canonical SMILES - td:contains("...")
  2. obtenir la ligne parentale de ce - tr:parent-of(...)
  3. et imprime la deuxième cellule de cette ligne : td:nth-child(2) text{}

J'obtiens des résultats comme :

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

Je vous laisse le soin d'examiner le code HTML et de trouver les autres filtres.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X