[PYTHON] Convertissez rapidement SDF en CSV

introduction

J'ai écrit un script pour convertir rapidement SDF, qui est un format de données composé, en CSV.

spécification

La source

SDF2CSVConvert.py


import pandas as pd
from rdkit import Chem
import argparse
from collections import defaultdict


def main():

    parser = argparse.ArgumentParser()
    parser.add_argument("-input", type=str, required=True)
    parser.add_argument("-output", type=str, required=True)
    parser.add_argument("-save_name", action='store_true', help="store header line as _Name")
    args = parser.parse_args()

    #Chargement du SDF(Lire tous les noms de paramètres la première fois)
    sdf_sup = Chem.SDMolSupplier(args.input)
    Props = []
    if args.save_name:
        Props.append("_Name")

    for mol in sdf_sup:
        for name in mol.GetPropNames():
            if name not in Props:
                Props.append(name)

    #Dictionnaire pour stocker des données
    param_dict = defaultdict(list)

    #Chargement du SDF(La deuxième fois, j'ai eu les paramètres du composé. Sinon une erreur)
    sdf_sup = Chem.SDMolSupplier(args.input)
    for mol in sdf_sup:
        #Obtenir le nom
        for name in Props:
            if mol.HasProp(name):
                param_dict[name].append(mol.GetProp(name))
            else:
                param_dict[name].append(None)

    #Convertissez immédiatement avec les pandas
    df = pd.DataFrame(data=param_dict)
    df.to_csv(args.output, index=False)


if __name__ == "__main__":
    main()

Commentaire

Le SDF est chargé en premier pour connaître les propriétés de tous les composés. Ensuite, la valeur de la propriété de chaque composé est lue en seconde lecture. Si le composé n'a pas de propriétés, None est inclus. Enfin, le type de dictionnaire qui stocke les propriétés a été jeté dans Pandas et sorti au format CSV. De plus, la première ligne de SDF peut être enregistrée avec la propriété "_Name" avec -save_name. Voir la source pour d'autres arguments.

Exemple de sortie

Les données de solubilité de RDKit ressemblent à ceci.

_Name,ID,NAME,SOL,SMILES,SOL_classification
3-methylpentane,5,3-methylpentane,-3.68,CCC(C)CC,(A) low
"2,4-dimethylpentane",10,"2,4-dimethylpentane",-4.26,CC(C)CC(C)C,(A) low
1-pentene,15,1-pentene,-2.68,CCCC=C,(B) medium
cyclohexene,20,cyclohexene,-2.59,C1CC=CCC1,(B) medium
"1,4-pentadiene",25,"1,4-pentadiene",-2.09,C=CCC=C,(B) medium
cycloheptatriene,30,cycloheptatriene,-2.15,C1=CC=CC=CC1,(B) medium
1-octyne,35,1-octyne,-3.66,CCCCCCC#C,(A) low
ethylbenzene,40,ethylbenzene,-2.77,c1ccccc1CC,(B) medium
"1,3,5-trimethylbenzene",45,"1,3,5-trimethylbenzene",-3.4,c1c(C)cc(C)cc1C,(A) low
indane,50,indane,-3.04,c(c(ccc1)CC2)(c1)C2,(A) low
isobutylbenzene,55,isobutylbenzene,-4.12,c1ccccc1CC(C)C,(A) low
n-hexylbenzene,60,n-hexylbenzene,-5.21,c1ccccc1CCCCCC,(A) low

Recommended Posts

Convertissez rapidement SDF en CSV
Convertir en HSV
Comment convertir csv en tsv dans la CLI
[Python] Convertit les délimiteurs de fichier csv en délimiteurs de tabulation
Convertir de PDF en CSV avec pdfplumber
[Python] Conversion de DICOM en PNG ou CSV
Convertir des fichiers CSV UTF-8 pour les lire dans Excel
Convertir XLSX en CSV sur la ligne de commande
Convertir 202003 en 2020-03 avec les pandas
Convertir les kanji en kana
Convertir jupyter en py
Convertir keras-yolo3 en ONNX
Convertir dict en tableau
Convertir json en Excel
Je convertis les données AWS JSON en CSV comme ceci
Comment convertir un fichier JSON en fichier CSV avec Python Pandas
Comment convertir des fichiers Json au format CSV ou au format EXCEL
Convertir une chaîne hexadécimale en binaire
[python] Convertir la date en chaîne
Convertir numpy int64 en python int
[Python] Convertir la liste en Pandas [Pandas]
Convertir le HTML en fichier texte
[Python] Convertir Shift_JIS en UTF-8
Convertir l'adresse IP en décimal
Conversion par lots de tous les fichiers xlsx du dossier en fichiers CSV
Écrire en csv avec Python
Convertir le fichier genbank en fichier gff
Convertir le code python 3.x en python 2.x
Après avoir appelé le fichier Shell sur Python, convertissez CSV en Parquet.
Convertir le PDF de la liste des concessionnaires de la campagne Go To Eat Hokkaido en CSV
Jeu manuel Python (calcul du descripteur RDKit: SDF en CSV à l'aide de Pandas)
[Good By Excel] script python pour générer sql pour convertir csv en table
Convertir l'objet Statut Tweepy en JSON
Fonction pour convertir des colonnes Excel en nombres
Convertir Markdown en PDF en Python
[Python] Ecrire dans un fichier csv avec Python
Convertir un PDF A4 en A3 toutes les 2 pages
Convertir WMA en MP3 sur Mac
Convertir une partie du nom japonais en synonyme
convertir un graphique basé sur ggplot en html
Convertir la liste en DataFrame avec python
Convertir des phrases en vecteurs avec gensim
Comment convertir 0,5 en 1056964608 en un seul coup
Python> liste> Convertir une double liste en une seule liste
Conversion de pdf en txt 2 [pyocr]
Comment convertir le modèle Tensorflow en Lite
Convertir une chaîne en image
[Django] Commande pour générer QuerySet en csv
[Python] Convertit les nombres naturels en nombres ordinaux
Convertir décimal en n-aire [python]
Programme pour convertir le japonais en nom de station
Comment convertir .mgz en .nii.gz
Convertir un PDF en image avec ImageMagick
Outil pour convertir la configuration Juniper
Transformez le fichier CSV local en feuille de calcul Google
Python> tuple> Convertir un double tuple en un seul tuple
Convertir un document XML stocké dans une base de données XML (BaseX) au format CSV (en utilisant Python)
Je souhaite convertir une table convertie en PDF en Python en CSV
Convertissez la feuille de calcul en CSV et importez-la dans Cloud Storage avec Cloud Functions
Convertir le PDF de la liste des magasins membres Go To EAT dans la préfecture de Kumamoto en CSV