Konwertuj sdf do csv

Konwertuj SDF na CSV

Eksportuj chemiczne rekordy SDF, tagi SD oraz SMILES do CSV za pomocą Open Babel, RDKit lub KNIME.

Twórz pliki CSV online

Nie potrafimy jeszcze odczytać plików SDF, więc tej konwersji nie oferujemy. Jeśli możesz wyeksportować swoją pracę do jednego z tych lub innych formatów, zrobimy z niego CSV:

Jak konwertować sdf do csv

Biblioteki związków są często dostarczane jako chemiczne pliki SDF, ale programy Excel, importy LIMS, systemy raportowania i moduły ładowania baz danych zwykle wymagają płaskiej tabeli CSV. Eksportowanie tagów SD i identyfikatora struktury pozwala umieścić każdy związek w jednym wierszu CSV, zachowując dane potrzebne do filtrowania lub dopasowywania.

Określanie typu pliku SDF

Ta procedura dotyczy chemicznego Structure Data File, nazywanego również plikiem SD. Przechowuje on jedną lub więcej tabel połączeń molekularnych (atomów i wiązań), opcjonalne nazwane właściwości zwane tagami SD i zwykle kończy każdy rekord ciągiem $$$$.

ChemDraw, oprogramowanie BIOVIA, RDKit, Open Babel, narzędzia do dokowania, systemy rejestracji związków i chemiczne bazy danych, takie jak PubChem, używają chemicznych plików SDF. Chemiczny plik SDF jest zwykłym tekstem i zazwyczaj można go rozpoznać po blokach atomów/wiązań oraz separatorach $$$$.

Rozszerzenie .sdf jest niejednoznaczne. Mogą go również używać bazy danych SQL Server Compact oraz pliki danych przestrzennych Autodesk; są to bazy danych, a nie chemiczne pliki SD. Wyeksportuj wybraną tabelę z SQL Server Compact albo wybraną warstwę przestrzenną z kompatybilnego oprogramowania GIS/CAD, ponieważ bazy danych zawierającej wiele tabel lub warstw nie można wiernie przekonwertować do jednego pliku CSV bez wcześniejszego wybrania danych lub ich połączenia.

Co zachowuje CSV

CSV przechowuje wartości tabelaryczne jako kolumny rozdzielane separatorem. Programy arkuszy kalkulacyjnych, R, Python pandas, narzędzia do importu baz danych oraz wiele produktów LIMS i systemów raportowania może je odczytywać.

CSV może zawierać nazwy związków, identyfikatory, tagi SD, wyniki testów, obliczone deskryptory oraz ciąg struktury, taki jak isomeric SMILES lub InChI. Nie może natywnie przechowywać tabeli połączeń SDF, współrzędnych molekularnych ani oryginalnego układu rekordów. Zachowaj oryginalny plik SDF jako archiwum struktur i dołącz SMILES, jeśli odbiorca musi odtworzyć cząsteczki.

Konwertowanie za pomocą Open Babel

Open Babel jest odpowiednią lokalną opcją do szybkiej konwersji z wiersza poleceń. Po zainstalowaniu uruchom następujące polecenie w folderze zawierającym plik źródłowy:

obabel input.sdf -ocsv -O output.csv

Otwórz wynik i sprawdź nagłówki, separator oraz uwzględnione właściwości przed zaimportowaniem go w innym miejscu. Dane wyjściowe CSV Open Babel i obsługa właściwości mogą różnić się w zależności od wersji, dlatego użyj RDKit, gdy system odbiorczy wymaga dokładnych nazw kolumn, określonej kolejności lub wszystkich tagów SD.

Konwertowanie za pomocą RDKit

Zainstaluj RDKit, na przykład za pomocą conda install -c conda-forge rdkit. Poniższy skrypt tworzy jeden wiersz dla każdej prawidłowej cząsteczki, zapisuje tytuł rekordu i izomeryczny SMILES oraz kopiuje każdy zwykły tag SD.

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)

Zapisz go jako sdf_to_csv.py i uruchom poleceniem python sdf_to_csv.py. Zastąp columns stałą listą, jeśli moduł importu wymaga określonego schematu lub kolejności kolumn. RDKit pomija rekordy, których nie może przeanalizować, dlatego porównaj liczbę wierszy wynikowych z oczekiwaną liczbą rekordów rozdzielonych ciągiem $$$$ i sprawdź ostrzeżenia dotyczące analizy.

Korzystanie z graficznego interfejsu

KNIME Analytics Platform zapewnia graficzny, powtarzalny przepływ pracy dla użytkowników, którzy nie chcą pisać skryptów. Użyj węzła SDF Reader, przekonwertuj kolumnę molekularną na SMILES za pomocą integracji RDKit, wybierz kolumny tagów SD wymagane przez miejsce docelowe i połącz je z węzłem CSV Writer. Skonfiguruj separator, znak cudzysłowu i kodowanie UTF-8 w module zapisującym.

DataWarrior może analizować plik SDF, udostępniać tagi SD jako kolumny, filtrować rekordy i obliczać deskryptory przed eksportem. Sprawdź wybrany separator eksportu tekstowego i dołącz kolumnę SMILES, zamiast zakładać, że wyeksportowana tabela zachowuje struktury molekularne.

Usługi online i kwestie związane z importem

Nie przesyłaj zastrzeżonych, regulowanych ani dużych kolekcji związków do ogólnych serwisów konwersji. Wiele konwerterów online nie zachowuje tagów SD ani struktur molekularnych. PubChem PUG-REST może zwracać właściwości CSV dla znanych publicznych CID PubChem, ale nie konwertuje dowolnych lokalnych plików SDF ani nie zachowuje ich oryginalnych tagów.

Pola CSV zawierające przecinki, cudzysłowy lub znaki końca wiersza muszą być ujęte w cudzysłowy; moduł csv języka Python robi to automatycznie. Użyj kodowania UTF-8 i importuj plik w programie Excel za pomocą opcji Data → From Text/CSV, zamiast otwierać go bezpośrednio. Przypisz identyfikatorom takim jak 00123, długim numerom rejestrowym i wartościom przypominającym zapis naukowy typ Text, aby zapobiec niepożądanej konwersji liczbowej.

Kanoniczny SMILES zazwyczaj zachowuje określoną łączność molekularną i zwykłą stereochemię, ale nie zachowuje współrzędnych 2D/3D, układu rysunku, wszystkich rozszerzonych informacji o grupach stereochemicznych ani każdej funkcji specyficznej dla rekordu SDF. W razie potrzeby dopasowywania tożsamości dołącz InChI lub InChIKey, ale nie traktuj nazwy związku jako unikatowego identyfikatora struktury.