[PYTHON] Convertissez les fichiers MOL en SMILES via les E / S standard

introduction

J'ai créé un script python pour convertir un fichier MOL en SMILES. C'est une histoire qui est partout, mais j'ai lu le fichier MOL (chaîne de caractères au format MOL) à partir de l'entrée standard et j'ai craché SMILES vers la sortie standard. En conséquence, le résultat peut être obtenu sans passer par le fichier, et il peut être utilisé plus facilement.

environnement

La source

La source est la suivante.

Mol2SMILESConvertor.py


import sys
from rdkit import Chem


def main():
    f = sys.stdin
    mol_block = ""
    for line in f:
        mol_block += line

    mol = Chem.MolFromMolBlock(mol_block)
    smiles = Chem.MolToSmiles(mol)
    print(smiles)


if __name__ == "__main__":
    main()

Comment utiliser

L'utilisation est expliquée en utilisant le fichier MOL suivant comme exemple.

test.mol


2,3,6-PCB
     RDKit          2D

 15 16  0  0  0  0  0  0  0  0999 V2000
    1.2990   -0.7500    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    1.2990    0.7500    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    0.0000    1.5000    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   -1.2990    0.7500    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   -1.2990   -0.7500    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    0.0000   -1.5000    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    0.0000   -3.0008    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   -1.2978   -3.7529    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   -2.3380   -3.1546    0.0000 Cl  0  0  0  0  0  0  0  0  0  0  0  0
   -1.2955   -5.2529    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   -2.3337   -5.8546    0.0000 Cl  0  0  0  0  0  0  0  0  0  0  0  0
    0.0048   -6.0009    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    1.3026   -5.2488    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    1.3002   -3.7488    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    2.3385   -3.1472    0.0000 Cl  0  0  0  0  0  0  0  0  0  0  0  0
  1  2  2  0
  2  3  1  0
  3  4  2  0
  4  5  1  0
  5  6  2  0
  6  1  1  0
  6  7  1  0
  7  8  2  0
  8  9  1  0
  8 10  1  0
 10 11  1  0
 10 12  2  0
 12 13  1  0
 13 14  2  0
 14  7  1  0
 14 15  1  0
M  END
$$$$

Si vous utilisez le fichier MOL ci-dessus et que vous le transmettez à ce script, vous obtiendrez SMILES comme suit. C'est facile.

$ cat test.mol |python bin/Mol2SMILESConvertor.py
Clc1ccc(Cl)c(-c2ccccc2)c1Cl

Autre

--Il serait encore plus pratique de lire un fichier SDF (chaîne de caractères au format SDF) contenant plusieurs composés et de sortir plusieurs SMILES à la fois.

Recommended Posts

Convertissez les fichiers MOL en SMILES via les E / S standard
Pour le moment, je veux convertir n'importe quel fichier avec ffmpeg !!
J'ai créé un script en python pour convertir des fichiers .md au format Scrapbox
Entrée standard Python3 que j'ai essayé de résumer
Convertir des fichiers PDF en fichiers PNG avec GIMP
[Python] Ajouter un commentaire au fichier d'entrée standard
J'ai essayé de synthétiser des fichiers WAV en utilisant Pydub.
Je veux visualiser les fichiers csv en utilisant Vega-Lite!
Convertir des fichiers CSV UTF-8 pour les lire dans Excel
Convertissez plusieurs fichiers jpg en un seul fichier PDF
Conversion par lots de fichiers PSD du répertoire en PDF
Je veux enregistrer les entrées / sorties de fichiers sous Linux