Converter sdf para csv

Converter SDF para CSV

Exporte registros químicos SDF, tags SD e SMILES para CSV com Open Babel, RDKit ou KNIME.

Crie ficheiros CSV online

Ainda não conseguimos ler ficheiros SDF, por isso esta conversão não está disponível. Se conseguir exportar o seu trabalho para um destes formatos ou outros, transformamo-lo em CSV:

Como converter sdf para csv arquivo

As bibliotecas de compostos geralmente são fornecidas como arquivos químicos SDF, mas importações do Excel, LIMS, sistemas de relatórios e carregadores de bancos de dados normalmente exigem uma tabela CSV plana. Exportar SD tags e um identificador de estrutura permite que cada composto ocupe uma linha do CSV, mantendo os dados necessários para filtragem ou correspondência.

Identifique o tipo de arquivo SDF

Este procedimento se aplica a um Structure Data File químico, também chamado de arquivo SD. Ele armazena uma ou mais tabelas de conectividade molecular (átomos e ligações), propriedades nomeadas opcionais chamadas SD tags e normalmente termina cada registro com $$$$.

ChemDraw, software BIOVIA, RDKit, Open Babel, ferramentas de docking, sistemas de registro de compostos e bancos de dados químicos como PubChem usam arquivos químicos SDF. Um SDF químico é texto simples e geralmente pode ser reconhecido por blocos de átomos/ligações e separadores $$$$.

A extensão .sdf é ambígua. Bancos de dados SQL Server Compact e arquivos de dados espaciais Autodesk também podem usá-la; eles são bancos de dados, não arquivos SD químicos. Exporte uma tabela selecionada do SQL Server Compact ou uma camada espacial selecionada de um software GIS/CAD compatível, pois um banco de dados com várias tabelas ou camadas não pode ser convertido fielmente em um único CSV sem escolher ou unir os dados primeiro.

O que o CSV mantém

O CSV armazena valores tabulares como colunas separadas por delimitadores. Programas de planilhas, R, Python pandas, utilitários de importação de bancos de dados e muitos produtos LIMS/de relatórios podem lê-lo.

O CSV pode conter nomes de compostos, identificadores, SD tags, resultados de ensaios, descritores calculados e uma string de estrutura, como isomeric SMILES ou InChI. Ele não pode armazenar nativamente uma tabela de conectividade SDF, coordenadas moleculares ou o layout original do registro. Mantenha o SDF original como arquivo de estruturas e inclua SMILES quando o destinatário precisar reconstruir as moléculas.

Converter com Open Babel

Open Babel é uma opção local adequada para uma conversão rápida pela linha de comando. Depois de instalá-lo, execute o seguinte comando na pasta que contém o arquivo de origem:

obabel input.sdf -ocsv -O output.csv

Abra o resultado e verifique seus cabeçalhos, delimitador e propriedades incluídas antes de importá-lo em outro local. A saída CSV e o tratamento de propriedades do Open Babel podem variar conforme a versão; portanto, use RDKit quando o sistema de destino exigir nomes exatos de colunas, ordenação específica ou todas as SD tags.

Converter com RDKit

Instale o RDKit, por exemplo, com conda install -c conda-forge rdkit. O script a seguir cria uma linha por molécula válida, grava o título do registro e o SMILES isomérico e copia todas as SD tags comuns.

from rdkit import Chem
import csv

supplier = Chem.SDMolSupplier("input.sdf", removeHs=False)
rows = []
tags = set()

for mol in supplier:
    if mol is None:
        continue
    properties = list(mol.GetPropNames())
    tags.update(properties)
    row = {
        "Record_name": mol.GetProp("_Name") if mol.HasProp("_Name") else "",
        "Isomeric_SMILES": Chem.MolToSmiles(mol, isomericSmiles=True)
    }
    for tag in properties:
        row[tag] = mol.GetProp(tag)
    rows.append(row)

columns = ["Record_name", "Isomeric_SMILES"] + sorted(tags)
with open("output.csv", "w", newline="", encoding="utf-8") as file:
    writer = csv.DictWriter(file, fieldnames=columns, extrasaction="ignore")
    writer.writeheader()
    writer.writerows(rows)

Salve-o como sdf_to_csv.py e execute python sdf_to_csv.py. Substitua columns por uma lista fixa se um importador exigir um esquema ou uma ordem de colunas específicos. O RDKit ignora registros que não consegue analisar; portanto, compare a contagem de linhas da saída com o número esperado de registros separados por $$$$ e examine os avisos de análise.

Usar um fluxo de trabalho para desktop

KNIME Analytics Platform oferece um fluxo de trabalho gráfico e repetível para usuários que não desejam criar scripts. Use um nó SDF Reader, converta a coluna molecular em SMILES com a integração do RDKit, selecione as colunas de SD tags exigidas pelo destino e conecte um nó CSV Writer. Configure o delimitador, o caractere de aspas e a codificação UTF-8 no writer.

DataWarrior pode inspecionar um SDF, expor SD tags como colunas, filtrar registros e calcular descritores antes da exportação. Confirme o delimitador selecionado para exportação de texto e inclua uma coluna SMILES, em vez de presumir que uma tabela exportada preserva as estruturas moleculares.

Serviços online e ressalvas de importação

Não envie coleções de compostos proprietárias, regulamentadas ou grandes para sites genéricos de conversão. Muitos conversores online não preservam SD tags ou estruturas moleculares. O PubChem PUG-REST pode retornar propriedades CSV para PubChem CIDs públicos conhecidos, mas não converte arquivos SDF locais arbitrários nem preserva suas tags originais.

Campos CSV que contêm vírgulas, aspas ou quebras de linha devem ser colocados entre aspas; o módulo csv do Python faz isso automaticamente. Use UTF-8 e importe o arquivo no Excel por meio de Data → From Text/CSV, em vez de abri-lo diretamente. Atribua o tipo Text a identificadores como 00123, números de registro longos e valores semelhantes à notação científica para evitar conversões numéricas indesejadas.

SMILES canônico geralmente preserva a conectividade molecular definida e a estereoquímica comum, mas não preserva coordenadas 2D/3D, layout do desenho, todas as informações de grupos estereoquímicos aprimorados ou todos os recursos de registro específicos do SDF. Inclua InChI ou InChIKey para correspondência de identidade quando necessário, mas não trate o nome de um composto como um identificador estrutural exclusivo.