2008-10-09

Linux dla chemika, cz. 1 - Chemtool

Chemtool jest prostym i wygodnym programem do graficznej wizualizacji cząsteczek chemicznych w 2D.

Swego czasu, gdy musiałem narysować kilka wzorków związków chemicznych, szukałem dobrego programu do wizualizacji graficznej cząsteczek. Po przeszukaniu sieci i repozytoriów oprogramowania, oraz przetestowaniu kilku programów (m.in. Xdrawchem), mój wybór padł na Chemtool. Jest to bardzo dobry program do rysowania wzorów dwuwymiarowych cząsteczek chemicznych. Niestety program nie oferuje wizualizacji 3D dla cząstek, aczkolwiek to w zupełności nie przeszkadza, albowiem większość wzorów w literaturze jest jednak dwuwymiarowa. Chemtool szczególnie dobrze sprawdza się przy kreowaniu uproszczonych, półstrukturalnych wzorów związków organicznych, gdyż za pomocą kilku(nastu) ruchów myszki można narysować poprawnie związek.


Interfejs programu jest prosty i wygodny, a wszystkie jego elementy zgrupowane są na górnym pasku narzędziowym (patrz obrazek na następnej stronie). Na początku należy wybrać rodzaj linii rysującej (wiązanie pojedyncze, podwójne, potrójne, linia przerywana, przestrzennie pogrubiona i wiele innych), a następnie kąt między wiązaniami (możliwe są wielokrotności 18, 30, 36, 45 stopni oraz krzywe Beziera). Gdy zaczniemy rysować linię to w punkcie startu pojawia się takie kółko w zaznaczonymi automatycznie kątami, co pozwala równo rysować. Oczywiście można też rysować pod dowolnym kątem, ale estetyczniej jest mieć już sprecyzowane kąty między wiązaniami. Nie mówiąc już o cząsteczkach z hybrydyzacją sp2 (np. etylen, benzen), gdzie kąty między wiązaniami muszą mieć 120°. Pomocne w rysowaniu skomplikowanych związków są liczne szablony (patrz na następnej stronie), zawierające główne szkielety związków organicznych (pierścienie aromatyczne, układ steroidowy, cukry w formie piranozy, furanozy i rzucie krzesełkowym). Wiele bowiem związków organicznych korzysta z tego samego szkieletu, zmieniając tylko niektóre grupy funkcyjne. Tak więc niewielka jest różnica między morfiną (lek przeciwbólowy i narkotyk), heroiną (twardy narkotyk) i kodeiną (środek na kaszel).

Wzór Hawortha dla glukozy narysowany za pomocą ChemtoolWzór Hawortha dla glukozy narysowany za pomocą Chemtool


Osobną kwestią którą należało by omówić jest narzędzie zaznaczania. Po zaznaczeniu całej cząsteczki lub jej części (co objawia się niebieskim kolorem, zamiast standardowego czarnego) można zaznaczony fragment przenosić, obracać, odbijać lustrzanie, kopiować oraz usuwać. Zaznaczony fragment usuwa się klikając prawym przyciskiem myszki. Z jednej strony to rozwiązanie bardzo poręczne i szybkie. Z drugiej - naraża czasami na przypadkowe skasowanie czegoś przez przypadkowe kliknięcie klawiszem myszki. Na szczęście w programie znajduje się opcja Cofnij (chociaż szczerze mówiąc byłbym zdziwiony gdyby jej nie było), która potrafi naprawić naszą przypadkowość. Odnośnie samego mechanizmu zaznaczania to ma on charakter obszarowy (co znajdzie się w utworzonym przez nas prostokącie to jest zaznaczone) i mam do niego sporo zastrzeżeń. Czasami trudno jest zaznaczyć coś precyzyjnie, szczególnie jeśli cząsteczka jest skomplikowana. Szczególnie często zdarza się to dla uproszczonych wzorów strukturalnych, gdzie wiązania wchodzą na siebie bezpośrednio, bez atomów w węzłach. Bardzo często się zdarzało, że nie mogąc precyzyjnie zaznaczyć jakiegoś wiązania zaznaczałem dwa czy trzy obok, po czym usuwałem wszystko i rysowałem od nowa. Było to dość uciążliwe. Według mnie w programie brakuje jakiegoś składnego mechanizmu zaznaczania pojedynczych wiązań. Wprowadzenie takiego mechanizmu byłoby naprawdę pomocne. Szczególnie, ze obecnie większość wzorów rysuje się jednak w zapisie uproszczonym, a nie pełnym, a jak wcześniej zauważyłem, mechanizm zaznaczania najczęściej wtedy szwankuje. Bo w Chemtoolu naprawdę przyjemnie się rysuje wzory, tylko zaznaczanie niekiedy bywa męczące.

Interfejs Chemtool'aInterfejs Chemtool'a

SzablonySzablony



Należy wspomnieć że wśród przydatnych opcji ułatwiających rysowanie, w menu widoku oprócz standardowego Powiększ/Pomniejsz znajduje się także opcja centrowania, oraz siatka: prostokątna i rombowa. A ponieważ wśród możliwych do wyboru linii są też strzałki (z grotem lub półgrotem) to Chemtool nadaje się też do tworzenia schematów ideowych, np. technologii produkcji danego środka chemicznego czy też procesów reakcji następczych. Przy okazji napiszę (bo potem jeszcze zapomnę), że gdy przesuwamy/skalujemy część schematu z zaznaczonymi strzałkami, to kierunek/długość strzałek automatycznie się dostosowuje. Mała rzecz, a cieszy.

Oprócz rysowania, drugą ważniejszą rzeczą w konstruowaniu wzorów jest pisanie. W programie
Chemtool nie ma formatowania pisanego tekstu takiego jak biurowe procesory tekstu. Zamiast tego posługujemy się systemem który bym nazwał "pseudo-latex-owy". Wszystkie ważniejsze opcje pojawiają się w dymku po najechaniu kursorem na narzędzie tekstu. I tak:
-- indeks dolny konstruuje się za pomocą _
-- indeks górny konstruuje się za pomocą ^
-- tekst pogrubiony #
-- tekst pisany kursywą |
-- symbole greckie tworzy się poprzedzając literę łacińską symbolem @, np. alfa to @a, gamma to @c itd.
I tak np. CH3COO- należy zapisać jako CH_3COO^-
Szkoda, że formatowania nie da się przeprowadzać w grupach objętych nawiasami (jaw każdym razie nie znalazłem takiego sposobu). Bo tak np. chcąc napisać trzy litery pogrubione pod rząd należy przed każdą wstawić #.

Ważniejsze opcje chyba opisałem, inne widać na rysunku powyżej.
I w końcu została jeszcze ważna kwestia do omówienia, a mianowicie kwestia zapisu danych. Chemtool zapisuje pliki w swoim własnym formacie (co ciekawe, bez zdefiniowanego rozszerzenia), które są w istocie plikami tekstowymi z zapisem konfiguracji atomów i wiązań. Jednak takiego pliku nie da się dalej opublikować. Dlatego też dane należy wyeksportować. Eksportować dane można w następujących formatach: LaTeX, XFig, EPS, X Bitmap, SVG, MOL, EMF. Jeżeli używamy TeX-a do pisania prac to oczywistym jest wybór wyjścia LaTeX-owego. Gdy natomiast muszę opublikować wzory chemiczne w inny sposób, to najpierw eksportuje do XBitmap, a następnie za pomocą GIMP-a zapisuje plik jako .png lub .jpg, co umożliwia zobaczenie go wszędzie, jak również ewentualną edycję za pomocą innych programów.

Reasumując: Chemtool jest prosty w obsłudze i pozwala na tworzenie nawet bardzo skomplikowanych struktur chemicznych. Denerwuje nieco kwestia zaznaczania i kilka innych niedoróbek, ale to nie przysłania całościowych zalet programu. Szkoda tylko, że program nie pozwala na zapis efektu pracy w postaci normalnego jpg/png/tiff/bmp, tylko zmusza do pewnych zabiegów okrężnych. Zdanie kończące: kto szukał programu do wizualizacji 2D związków chemicznych to go właśnie znalazł.

Strona, domowa programu:
http://ruby.chemie.uni-freiburg.de/~martin/chemtool

Artykuł ten, mojego autorstwa, został po raz pierwszy zamieszczony w czasopiśmie Dragonia Magazine

3 komentarze:

  1. Spadłeś mi z nieba z tym programem. W pracy inżynierskiej mam kilka związków (mikotoksyny) i bałem się, że będę zmuszony do rysowania w OO Drawie. Nie, żebym miał coś przeciwko, ale Draw to się do schematów blokowych nadaje...co najwyżej patuliny, ale OTA/OTB albo coś bardziej skomplikowanego...

    Program sam w sobie trochę toporny, ale po 15 minutach (i dojściu co do czego) pracy nad aflatoksynąB1 opanowałem interface. Trochę niewygodnie jest zaznaczanie i wklejanie. Od razu wkleja, zamiast do schowka i wkleić gdzie chcę.

    Używam wersji 1.6.10 z repozytoriów Ubuntu 8.04.3LTS, (najnowsza to 1.6.12) i ta wersja oferuje opcję zapisu do formatu png, aczkolwiek ustawia wysoki stopień kompresji i gotowa cząsteczka sporo trafi na jakości.

    OdpowiedzUsuń
  2. Moim zdaniem bardzo fajnie opisany problem. Pozdrawiam serdecznie.

    OdpowiedzUsuń
  3. Bardzo fajny artykuł. Jestem pod wrażeniem.

    OdpowiedzUsuń