Converti csv in sdf

Converti CSV in SDF

Converti i record chimici CSV contenenti SMILES o InChI in file SDF convalidati.

Converti i file CSV online

Non abbiamo ancora un convertitore online dedicato per CSV in SDF, ma puoi convertire i file CSV online in questi e altri formati:

Come convertire csv in sdf file

  • Database

I programmi di laboratorio e di cheminformatica richiedono spesso un file SDF quando un foglio di calcolo, uno strumento o un database esporta i record dei composti come CSV. La conversione funziona solo quando il CSV contiene una rappresentazione della struttura chimica, come SMILES; nomi, formule e soli valori dei test non possono creare la geometria molecolare.

Cos'è il formato CSV

CSV è un formato tabellare in testo semplice in cui i record sono separati da interruzioni di riga e i campi sono separati da virgole o da un altro delimitatore. Excel, LibreOffice Calc, gli strumenti di laboratorio, i sistemi di inventario, i database e gli script producono comunemente file CSV.

Un CSV chimico può contenere colonne come ID, Name, SMILES, InChI, Formula, CAS e proprietà misurate. Prima di importarlo, identificare il delimitatore, le regole per le virgolette, la codifica dei caratteri, la convenzione decimale, i nomi delle intestazioni e la colonna della struttura. Un CSV contenente solo nomi, formule o numeri di registro richiede una ricerca in un database chimico esterno prima di poter diventare un file di strutture.

Cos'è il formato SDF

In cheminformatica, SDF significa Structure Data File, chiamato anche file SD. Ogni record contiene un blocco di struttura Molfile seguito da campi di proprietà contrassegnati, ad esempio > <ID> e > <Activity>. I record terminano con una riga contenente $$$$.

SDF può memorizzare la connettività di atomi e legami, le cariche formali, la stereochimica, le coordinate 2D o 3D e i metadati dei composti in un unico file. A differenza di un normale foglio di calcolo, rappresenta il grafo molecolare richiesto da molti editor chimici, sistemi di registrazione, strumenti di screening e programmi di modellazione. I nomi delle proprietà SDF e le versioni Molfile supportate variano tra le applicazioni, quindi è necessario verificare i requisiti del programma ricevente.

L'estensione .sdf può riferirsi anche a un database SQL Server Compact. Le procedure riportate di seguito si applicano al formato chimico Structure Data File; un file SQL Server Compact richiede un'esportazione del database o una migrazione dei dati a livello di tabella.

Convertire il file con DataWarrior

  1. Assicurarsi che il CSV contenga un SMILES, InChI valido o un'altra notazione supportata dal software. Mantenere gli identificativi e i valori delle proprietà sulla stessa riga della struttura.
  2. Aprire DataWarrior e scegliere File → Open, quindi selezionare il CSV. Nella finestra di dialogo di importazione, impostare il delimitatore, la codifica del testo, il formato decimale e la gestione dei campi racchiusi tra virgolette.
  3. Verificare che DataWarrior abbia classificato la colonna della struttura come struttura chimica e non come testo ordinario. Esaminare le voci non valide, vuote e inaspettatamente disconnesse.
  4. Scegliere File → Save Special → SD-file e, se richiesto, selezionare le colonne della struttura e dei metadati da esportare. Salvare il risultato con estensione .sdf.
  5. Riaprire l'output in DataWarrior o in una seconda applicazione chimica. Controllare diverse strutture, i centri stereogenici, le cariche, le coordinate e i valori delle proprietà.

DataWarrior è una pratica opzione grafica locale per file di dimensioni moderate, poiché può interpretare le colonne chimiche, visualizzare le strutture ed esportare file SD. Le etichette dei menu possono variare tra le versioni.

Convertire in modo ripetibile con Python e RDKit

RDKit è adatto alle conversioni automatizzate o di grandi dimensioni. Questo esempio prevede un file delimitato da virgole con una colonna SMILES e, facoltativamente, una colonna ID. Ogni altra colonna non vuota diventa una proprietà SDF.

import csv
import sys
from rdkit import Chem

source, target = sys.argv[1], sys.argv[2]
reader = csv.DictReader(open(source, newline='', encoding='utf-8-sig'))
writer = Chem.SDWriter(target)

for row_number, row in enumerate(reader, start=2):
    smiles = (row.get('SMILES') or '').strip()
    molecule = Chem.MolFromSmiles(smiles)
    if molecule is None:
        print(f'Skipping row {row_number}: invalid SMILES', file=sys.stderr)
        continue
    for key, value in row.items():
        if key and key != 'SMILES' and value not in (None, ''):
            molecule.SetProp(key, value)
    writer.write(molecule)

writer.close()

Installare RDKit tramite Conda, salvare il codice come csv_to_sdf.py ed eseguire:

python csv_to_sdf.py input.csv output.sdf

Lo script analizza la connettività e gli attributi chimici dagli SMILES, ma non genera coordinate. Aggiungere la generazione delle coordinate di RDKit, ad esempio coordinate per la rappresentazione 2D, oppure utilizzare un editor chimico se l'applicazione di destinazione richiede coordinate 2D o 3D. Modificare la configurazione del lettore quando la sorgente utilizza un punto e virgola, una tabulazione o un altro delimitatore.

Utilizzare Open Babel dopo la preelaborazione

Open Babel converte formati di testo chimici riconosciuti, ma non è un importatore generico di tabelle CSV. Prima estrarre la colonna della struttura in un file SMILES, mantenendo identificativi e proprietà tramite uno script separato o uno strumento che li supporti. Quindi generare un SDF con:

obabel compounds.smi -O output.sdf --gen2D

Utilizzare --gen3D solo quando le conformazioni calcolate sono accettabili; le coordinate generate non sono misurazioni sperimentali e potrebbero non rappresentare la conformazione preferita.

Opzioni online per dati pubblici

I convertitori generici di file online normalmente rinominano o riconfezionano il testo e non possono convalidare gli SMILES, risolvere gli identificativi o preservare la stereochimica chimica. Per un piccolo elenco di composti pubblici non riservati, utilizzare un resolver chimico come NIH Chemical Identifier Resolver o PubChem PUG REST per recuperare record SDF a partire da nomi, numeri CAS, CID o altri identificativi supportati. Questi servizi sono interfacce di ricerca e non convertitori affidabili da CSV a SDF in blocco; di solito è necessario uno script per inviare ogni riga, gestire le corrispondenze non riuscite e combinare i record restituiti. Non caricare strutture proprietarie, dati dei test o record soggetti a normative su un servizio online senza approvazione.

Controlli di qualità e compatibilità

  • Contare i record: confrontare il numero di strutture di input valide con il numero di record SDF e conservare un rapporto delle righe ignorate o non risolte.
  • Controllare l'interpretazione chimica: SMILES malformati, stati di valenza non supportati, cariche mancanti, differenze tra tautomeri e stereochimica ambigua o persa possono modificare la molecola risultante.
  • Controllare le coordinate: gli SMILES descrivono normalmente la connettività, non le coordinate. Una destinazione che visualizza o esegue calcoli con posizioni 3D potrebbe richiedere la generazione delle coordinate e l'ottimizzazione tramite campo di forza.
  • Proteggere i valori tabellari: i fogli di calcolo possono rimuovere gli zeri iniziali, convertire gli identificativi lunghi in notazione scientifica, modificare le date e cambiare i separatori decimali. Esportare un CSV UTF-8 e racchiudere tra virgolette i campi contenenti virgole, interruzioni di riga o virgolette.
  • Controllare la compatibilità delle proprietà: i nomi dei campi SDF non sono completamente standardizzati. Nomi duplicati, punteggiatura, spazi, lunghezza dei campi, tipi di dati e supporto della versione Molfile possono causare errori di importazione.
  • Convalidare in modo indipendente: aprire l'output in una seconda applicazione chimica ed esaminare sali, miscele, isotopi, cariche, centri stereogenici e record rappresentativi contenenti proprietà lunghe o multilinea.

Altre conversioni di file .csv

Conversione inversa

Conversione in .sdf
da altri formati

Condividi sui social media: