Konwertuj CSV na SDF
Konwertuj chemiczne rekordy CSV z SMILES lub InChI do zwalidowanych plików SDF.
Konwertuj pliki CSV online
Nie mamy jeszcze dedykowanego konwertera online dla CSV na SDF, ale pliki CSV możesz przekonwertować online na te i inne formaty:
Jak konwertować csv do sdf
- Bazy danych
- Brak ocen.
Programy laboratoryjne i cheminformatyczne często wymagają pliku SDF, gdy arkusz kalkulacyjny, przyrząd lub baza danych eksportuje rekordy związków jako CSV. Konwersja działa tylko wtedy, gdy plik CSV zawiera reprezentację struktury chemicznej, taką jak SMILES; same nazwy, wzory i wartości testów nie wystarczą do utworzenia geometrii cząsteczki.
Czym jest format CSV
CSV to tabelaryczny format zwykłego tekstu, w którym rekordy są rozdzielane znakami nowego wiersza, a pola — przecinkami lub innym separatorem. Excel, LibreOffice Calc, przyrządy laboratoryjne, systemy inwentaryzacyjne, bazy danych i skrypty często tworzą pliki CSV.
Plik CSV zawierający dane chemiczne może zawierać kolumny takie jak ID, Name, SMILES, InChI, Formula, CAS oraz zmierzone właściwości. Przed zaimportowaniem należy określić separator, reguły cudzysłowów, kodowanie znaków, konwencję zapisu miejsc dziesiętnych, nazwy nagłówków i kolumnę struktury. Plik CSV zawierający wyłącznie nazwy, wzory lub numery rejestrowe wymaga wyszukania w zewnętrznej bazie danych substancji chemicznych, zanim będzie można przekształcić go w plik struktury.
Czym jest format SDF
W cheminformatyce SDF oznacza Structure Data File, nazywany również plikiem SD. Każdy rekord zawiera blok struktury Molfile, a następnie oznaczone pola właściwości, na przykład > <ID> i > <Activity>. Rekordy kończą się wierszem zawierającym $$$$.
SDF może przechowywać połączenia atomów i wiązań, ładunki formalne, stereochemię, współrzędne 2D lub 3D oraz metadane związku w jednym pliku. W przeciwieństwie do zwykłego arkusza kalkulacyjnego reprezentuje graf molekularny wymagany przez wiele edytorów chemicznych, systemów rejestracji, narzędzi do badań przesiewowych i programów do modelowania. Nazwy właściwości SDF oraz obsługiwane wersje Molfile różnią się między aplikacjami, dlatego należy sprawdzić wymagania programu odbierającego dane.
Rozszerzenie .sdf może również oznaczać bazę danych SQL Server Compact. Poniższe procedury dotyczą chemicznego formatu Structure Data File; plik SQL Server Compact wymaga eksportu bazy danych lub migracji danych na poziomie tabel.
Konwersja pliku za pomocą DataWarrior
- Upewnij się, że plik CSV zawiera prawidłową kolumnę
SMILES,InChIlub inną notację obsługiwaną przez oprogramowanie. Identyfikatory i wartości właściwości powinny znajdować się w tym samym wierszu co ich struktura. - Otwórz DataWarrior i wybierz File → Open, a następnie wybierz plik CSV. W oknie dialogowym importu ustaw separator, kodowanie tekstu, format liczb dziesiętnych oraz sposób obsługi pól ujętych w cudzysłowy.
- Sprawdź, czy DataWarrior zaklasyfikował kolumnę struktury jako struktury chemiczne, a nie zwykły tekst. Przeanalizuj nieprawidłowe, puste i nieoczekiwanie rozłączone wpisy.
- Wybierz File → Save Special → SD-file i, jeśli pojawi się odpowiedni monit, wybierz kolumny struktury i metadanych do eksportu. Zapisz wynik z rozszerzeniem
.sdf. - Otwórz ponownie wynik w DataWarrior lub drugiej aplikacji chemicznej. Sprawdź kilka struktur, centra stereogeniczne, ładunki, współrzędne i wartości właściwości.
DataWarrior to praktyczne lokalne rozwiązanie graficzne dla plików o średnim rozmiarze, ponieważ potrafi interpretować kolumny chemiczne, wyświetlać struktury i eksportować pliki SD. Etykiety menu mogą różnić się w zależności od wydania.
Powtarzalna konwersja za pomocą Python i RDKit
RDKit nadaje się do automatycznych konwersji lub konwersji dużych plików. Ten przykład zakłada plik rozdzielany przecinkami z kolumną SMILES i opcjonalnie kolumną ID. Każda inna niepusta kolumna staje się właściwością 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()
Zainstaluj RDKit za pomocą Conda, zapisz kod jako csv_to_sdf.py i uruchom:
python csv_to_sdf.py input.csv output.sdf
Skrypt analizuje połączenia i atrybuty chemiczne z SMILES, ale nie generuje współrzędnych. Dodaj generowanie współrzędnych przez RDKit, na przykład współrzędnych do wizualizacji 2D, lub użyj edytora chemicznego, jeśli aplikacja docelowa wymaga współrzędnych 2D lub 3D. Zmień konfigurację czytnika, gdy źródło używa średnika, tabulatora lub innego separatora.
Użycie Open Babel po wstępnym przetworzeniu
Open Babel konwertuje rozpoznawane chemiczne formaty tekstowe, ale nie jest uniwersalnym importerem tabel CSV. Najpierw wyodrębnij kolumnę struktury do pliku SMILES, zachowując identyfikatory i właściwości za pomocą osobnego skryptu lub narzędzia, które je obsługuje. Następnie wygeneruj plik SDF za pomocą:
obabel compounds.smi -O output.sdf --gen2D
Używaj --gen3D tylko wtedy, gdy obliczone konformacje są akceptowalne; wygenerowane współrzędne nie są pomiarami eksperymentalnymi i mogą nie przedstawiać preferowanej konformacji.
Opcje online dla danych publicznych
Ogólne internetowe konwertery plików zwykle tylko zmieniają nazwy lub przepakowują tekst i nie potrafią weryfikować SMILES, rozwiązywać identyfikatorów ani zachowywać stereochemii chemicznej. W przypadku niewielkiej listy niepoufnych publicznych związków użyj narzędzia do rozpoznawania substancji chemicznych, takiego jak NIH Chemical Identifier Resolver lub PubChem PUG REST, aby pobrać rekordy SDF na podstawie nazw, numerów CAS, CID lub innych obsługiwanych identyfikatorów. Usługi te są interfejsami wyszukiwania, a nie niezawodnymi konwerterami zbiorczymi CSV do SDF; zwykle potrzebny jest skrypt do przesłania każdego wiersza, obsługi nieudanych dopasowań i połączenia zwróconych rekordów. Nie przesyłaj do usługi online zastrzeżonych struktur, danych z testów ani rekordów podlegających regulacjom bez uzyskania zgody.
Kontrola jakości i zgodności
- Policz rekordy: porównaj liczbę prawidłowych struktur wejściowych z liczbą rekordów SDF i zachowaj raport pominiętych lub nierozpoznanych wierszy.
- Sprawdź interpretację chemiczną: nieprawidłowe SMILES, nieobsługiwane wartościowości, brakujące ładunki, różnice tautomerów oraz niejednoznaczna lub utracona stereochemia mogą zmienić wynikową cząsteczkę.
- Sprawdź współrzędne: SMILES zwykle opisuje połączenia, a nie współrzędne. Program docelowy wyświetlający pozycje 3D lub wykonujący na nich obliczenia może wymagać wygenerowania współrzędnych i optymalizacji za pomocą pola siłowego.
- Chroń wartości tabelaryczne: arkusze kalkulacyjne mogą usuwać początkowe zera, konwertować długie identyfikatory na notację naukową, zmieniać daty i modyfikować separatory dziesiętne. Eksportuj plik CSV w kodowaniu UTF-8 i ujmuj w cudzysłowy pola zawierające przecinki, znaki nowego wiersza lub cudzysłowy.
- Sprawdź zgodność właściwości: nazwy pól SDF nie są całkowicie ustandaryzowane. Zduplikowane nazwy, znaki interpunkcyjne, spacje, długość pól, typy danych i obsługa wersji Molfile mogą powodować błędy importu.
- Weryfikuj niezależnie: otwórz wynik w drugiej aplikacji chemicznej i sprawdź reprezentatywne sole, mieszaniny, izotopy, ładunki, centra stereogeniczne oraz rekordy zawierające długie lub wielowierszowe właściwości.