Jmol

mr wong   google bookmarks   del.icio.us   yigg   digg   folkd

Jmol Diese Demo ermöglicht es, mit Hilfe des Jmol-Pakets (v11.4.6) Moleküle in dreidimensionaler Ansicht darzustellen. Dieses sehr mächtige Java-Programm mit einer Swing-Oberfläche kann um einiges mehr als diese Anbindung bieten kann. Folgende Formate werden laut Dokumentation unterstützt: ABINIT, ACES II, ADF (Amsterdam Density Functional), CML, GAMESS, Gaussian 92/94/98, Ghemical MM, Jaguar, MDL molfile, PDB (nur ATOM und HETATM) und XYZ. Für ein ernsthaftes Arbeiten empfiehlt es sich, das Paket über die Jmol-Homepage zu beziehen. Alle Beispiele auf dieser Seite wurden diesem Paket entnommen.

Alternativ kann diese Demo direkt über eine SOAP-Schnittstelle angesprochen werden.
Wichtiger Hinweis: Diese Schnittstelle steht nur für nicht-kommerzielle Zwecke zur Verfügung.
Bei kommerzieller Nutzung wenden Sie sich bitte an office@sciencesoft.at. Weiters bitten wir
Sie, uns auch bei nicht-kommerzieller Nutzung dieser Schnittstelle über obige E-Mail-Adresse
zu benachrichtigen, damit wir Sie bei Änderung der Schnittstelle gegebenfalls informieren können.
WDSL
SOAP-Request
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:def="http://DefaultNamespace">
   <soapenv:Header/>
   <soapenv:Body>
      <def:render>
         <def:data>?</def:data>
         <def:width>?</def:width>
         <def:height>?</def:height>
         <def:scaling>?</def:scaling>
         <def:rotatex>?</def:rotatex>
         <def:rotatey>?</def:rotatey>
         <def:rotatez>?</def:rotatez>
         <def:bgcolor>?</def:bgcolor>
         <def:commands>?
            <!--Zero or more repetitions:-->
            <def:string>?</def:string>
         </def:commands>  
         <def:embeddedData>?</def:embeddedData>
      </def:render>
   </soapenv:Body>
</soapenv:Envelope>
  
<def:data>
Dieses Element beinhaltet Daten - maximale Länge 131072 Bytes
<def:width> und <def:height>
Breite [40..1024] und Höhe [40..768] der Grafik in Punkten
<def:scaling>
Skalierung der Graphik in einem Wertebereich von 30 bis 300 Prozent
<def:roatex> <def:roatey> <def:roatez>
Rotation des 3D-Modells um die x/y/z Achse des Raumes in Grad
<def:bgcolor>
Hintergrundfarbe im 6-stelligen HEX-Format
<def:commands> <def:String>...</def:String> </def:commands>
Liste optionaler Jmol-Kommandos. Die unterstützen Kommandos sind indent mit den Optionen der
Auswahlliste Darstellung.
<def:embeddedData>
Dieses Element legt mit dem Wert true fest, ob die Grafaikdaten base-64 kodiert in die SOAP-Antwort
eingebettet werden. false bewirkt, dass die SOAP-Antwort einen Link auf die erzeugte Grafik beihaltet.
SOAP-Response
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soap:Body>
      <ns1:renderResponse xmlns:ns1="http://DefaultNamespace">
         <ns1:out>
            <success xmlns="http://DefaultNamespace">?</success>
            <error xsi:nil="true" xmlns="http://DefaultNamespace">?</error>
            <embeddedData xmlns="http://DefaultNamespace">?</embeddedData>
            <data xsi:nil="true" xmlns="http://DefaultNamespace"/>?</data>
            <url xmlns="http://DefaultNamespace">?</url>
         </ns1:out>
      </ns1:renderResponse>
   </soap:Body>
</soap:Envelope>
succces
true kein Fehler, oder false im Falle eines Fehlers
error
Im Falle eines Fehlers beinhaltet dieses Element die Fehlermeldung.
embeddedData
Ist dieser Wert true, so wurden die Grafaikdaten base-64 kodiert über das Element data in die SOAP-Antwort
eingebettet. Ist der Wert hingegen false, so beinhaltet das Element url einen Link auf die berechnete Grafik.
url oder data
Diese Elemente beinhalten das Ergebnis - siehe Element embeddedData
size
Größe der Grafikdaten in Bytes.
Beispiel

Dieses Beispiel generiert über die SOAP-Schnittstelle ein PNG-Graphik, die ein ein Methanol-Molekül darstellt.
Sie können dieses Beispiel inklusive aller notwendigen Libraries über folgenden Link downloaden.

/*
 * JmolSOAPClient.java - Jmol SOAP access example
 * Author: Peter Sauer (peter.sauer@sciencesoft.at)
 * Date of last modification: 2008-10-01
 */
package at.sciencesoft.test;

import at.sciencesoft.soap.jmol.*;
import java.io.*;

public class JmolSOAPClient {
    private static String ethanol =
            "9\n" +
            "     This geometry optimized by G92;  MP2/6-31G*\n" +
            "H         -2.0801425360     0.4329727646     0.0722817289\n" +
            "C         -1.2129704155    -0.2295285634    -0.0097156258\n" +
            "H         -1.2655910941    -0.9539857247     0.8097953440\n" +
            "C          0.0849758188     0.5590385475     0.0510545434\n" +
            "O          1.2322305822    -0.2731895077    -0.1276123902\n" +
            "H          0.1506137362     1.1200249874     0.9943015309\n" +
            "H          1.2473876659    -0.8998737590     0.6150681570\n" +
            "H          0.1316093068     1.2841805400    -0.7645223601\n" +
            "H         -1.2737541560    -0.7748626513    -0.9540587845\n";

    public static void writeByteStream(String fileName, byte[] stream) throws Exception {
        File file = new File(fileName);
        FileOutputStream writer = new FileOutputStream(file);
        writer.write(stream, 0, stream.length);
        writer.close();
    }

    public static void main(String[] args) {
        try {
            Jmol_Service serv = new Jmol_Service();
            Jmol jmol = serv.getJmolHttpPort();
            SOAPjmolResult jr = jmol.render(ethanol, 400, 400, 150, 0, 0, 0, null, null, true);
            if (jr.isSuccess()) {
                System.out.println("Success!");
                writeByteStream("ethanol.png.", jr.getData().getValue());
            } else {
                System.out.println("Error:");
                System.out.println(jr.getError().getValue());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Bedienung

  • Die Schaltfläche Jmol starten startet den Berechnungsvorgang.
  • Die Schaltfläche Löschen löscht das komplette Eingabefeld.
  • Über die Auswahlliste Beispiele und die Schaltfläche laden können 3D-Daten von Beispiel-Molekülen in das Eingabefeld kopiert werden.
  • Die Eingabefelder Breite [40..1024] und Höhe [40..768] legen die Größe der zu berechnenden Grafik in Punkten fest. Weiters kann das berechnete 3D-Modell über das Eingabefeld Skalierung in einem Wertebereich von 30 bis 300 Prozent verkleinert bzw. vergrößert werden.
  • Die Eingabefelder Drehung ermöglichen eine Rotation des 3D-Modells um die x/y/z Achse des Raumes in Grad. Die x und y-Achse entsprechen der Ausrichtung der Bildebene der berechneten Grafik am Bildschirm. Die gedachte z-Achse erstreckt sich vom Bildschirm im 90° Winkel hin zum Betrachter.
  • Das Auswahlfeld Beschriftung legt fest, ob und in welcher Weise die Atome des dargestellten Moleküls beschriftet werden. Darstellung legt fest, wie detailreich das 3D-Modell berechnet wird.
  • Das Eingabefeld Hintergrundfarbe erlaubt die Festlegung der Hintergrundfarbe der berechneten Grafik in Form eines RGB (Rot/Grün/Blau)-Wertes in hexadezimaler Schreibweise: z.B. 000000 = Schwarz, FFFFFF = Weiß, 00FF00 = reines Grün

Mit Hilfe der Maus kann das berechnete Molekül gedreht, verschoben und skaliert werden. Dazu wählen Sie bitte die entsprechende Transformation aus. Dann ermitteln Sie durch Drücken der linken Maustaste den ersten Referenzpunkt innerhalb der dargestellten Grafik. In der Statuszeile wird nun angezeigt, dass der erste Referenzpunkt gewählt wurde. Nun bestimmen Sie durch Drücken mit der linken Maustaste einen zweiten Referenzpunkt. Der Vektor, den diese beiden Referenzpunkte bilden, bestimmt die Transformation.