プラグインなしのブラウザーでの結晶3D構造の可視化

こんにちは、Habr! この記事では、結晶化学と材料科学で一般的なCIF形式(Crystallographic Information File)で結晶構造を視覚化する4つのオープンエンジンを比較します。 最新のJavaScript(JavaScriptでのJavaとCのトランスコンパイルを含む)、結晶化学、および固体物理学についてです。 シュレーディンガーとランダウの世界からバーナーズ・リーとジョブズの世界にテレポートし、その後戻ってきます。 行きましょう。



Water adsorption on perovskite surface







物理学の学部から、固体中の原子は、ナノメートルのオーダーのサイズの周期的に繰り返される構造単位に秩序化され、結晶格子を形成することが知られています。 還元主義の精神における固体物理学は、これらの構造単位(単位セル)の特性と大宇宙の物体の特性との関係を研究しています。 たとえば、遷移金属酸化物の表面での水分子の吸着を制御することにより、 水素と酸素の合成コストを削減し、 燃料電池センサーの 性能を向上させ、 薬理学における薬物送達を最適化できます。 要するに、固体物理学は何らかの方法で実験室または技術プロセスを説明します。ここでは、分子視覚化の価値を過大評価することは非常に困難です。 材料科学の事実上、結晶構造に関するデータを交換するための最も一般的なコンピューター形式はCIFです。 CIFと他の多くの化学フォーマットの重要な違いは、3D変換のサポートです。つまり、無限の3D結晶を指定するために、その単位セルを3方向に繰り返します。



CIFは、90年代に国際結晶学連合(IUCR)によって作成されました。 CIFの基礎はSTAR(Self-Defining Text Archive and Retrieval)と呼ばれるテキストコンテナーであり、回折測定または理論計算の結果として得られた物理的特性に標準タグが付けられています。 標準タグは、ユニットセルパラメーター、その対称性、構成原子、対応する科学出版物のメタデータなどを定義します。 これらのタグは、XMLドキュメントのXSDスキーマと同様に、外部CIFディクショナリに設定されるため、CIFディクショナリのCIFドキュメントを検証し、使用可能なものに基づいて新しい物理プロパティを導出することもできます。 違いは、CIFがCIFパーサーによって無視される任意のタグを許可することです(もちろん、後で標準の一部になり、IUCR連合の決定によって新しい辞書に含めることができます)。 さらに、CIFは、たとえば、識別子によって結晶構造内の特定の原子を参照できる場合に、リレーショナルデータモデルをサポートします。 欠点は、マルチレベル階層の便利なサポートがないことです。ここでは、STARコンテナがXMLを再生します。 ちなみに、これがCIFにCML(Chemical Markup Language)と呼ばれるXMLの競合他社がある理由です。



従来、CIFファイルはデスクトップアプリケーション(Vesta、Accelrys / BIOVIA、RasMolなど多く)で開かれていましたが、この領域では、約4年前にブラウザーがデスクトップアプリケーションに対する十字軍を開始しました。 私が知っているこの旅行のオープンソースの成果は以下に集められており、それらのコードは単一のWebアプリケーションの形でリポジトリにあります 。 コードは、IE 11やモバイルSafariを含むいくつかの一般的なブラウザーでテストされました。 リポジトリの構造は次のとおりです: データフォルダーにはCIFモデルの例が含まれています(結晶化学や材料科学を扱ったことがあるなら、おそらく独自のものがあるでしょう)、 enginesフォルダーにはすべてのエンジンのJavaScriptコードが含まれ、 utilsにはブラウザーファイルダウンローダーなどの補助コードが含まれますCIFモデルのローカル処理。 したがって、Webアプリケーションを起動するには、Webサーバーのフォルダーを開き、ブラウザーで適切なアドレスに移動するだけです(または単にリポジトリーに移動します )。 すべてのファイルは静的であり、サーバー処理は提供されません。



データフォルダーの4つのモデルについて簡単に説明します。







さて、実際には、エンジンを比較した結果。



エンジン

バージョン

コードの合計量(括弧内はGZip)

レンダリング技術

カスタマイズ

免許

ジャスモル

14.2.15

2.1 MB(700 KB)

キャンバス

リッチでプログラム的、UI

LGPL

ChemDoodle Webコンポーネント

7.0.1

354 KB(121 KB)

Webgl

豊富なソフトウェア

GPL v3

ラスモリス

-

1.1 MB(462 KB)

canvas、sdl、asm.js

豊富なソフトウェア

GPL

Player.html

0.10

265 KB(83 KB)

キャンバス、Three.js

UIに制限

MIT





私は、Javaアプレット、Flash、およびその他のプラグインに基づくソリューションを進化の行き止まりのブランチとは見なさず、純粋な(一般に「バニラ」と呼ばれる)JavaScriptのみを検討しました。 ただし、純粋なJavaScriptは他の多くの言語から合成できます。最初と3番目のソリューションはそのような場合です。



JSmolはJava2Scriptツールを使用してJmol Javaコードから派生します。 JSmolコードの合計量は12.7 MBで、その一部は必要に応じてダウンロードされます。 上記の表は、開始に必要な量を示しています。 機能的には、このエンジンはより有名なJavaの対応物を完全に繰り返し、最も豊富な機能セットを提供します。 巨大なサイズ(および最も遅い開始)と、外部スタック、特にく読みにくいJavaScriptを移植するコストがなければ、ここで比較を完了することができます。



ChemDoodle Web Componentsは 、独自の製品に基づいています。 これには、長所(優れたドキュメント、コードと製品全体の高品質)と短所(使用上の制限、ユーザーに関する情報を送信できないようにする)があります。 欠点には、WebGLを支持するCanvasサポートの欠如が含まれます。つまり、わずかに時代遅れの機器では動作しません。 欠陥が問題でない場合、このエンジンは勝者と呼ばれます。



RasmolJSはEmscriptenを使用した古いCブラザーRasMolから派生しています。 イギリスの化学情報学ノエル・オボイルは、トランスコンパイルされたJavaScriptコードがキャンバス要素に3Dレンダリングを提供する結果として、EmscriptenがサポートするSDLライブラリに元のグラフィック機能を移植しました。 さらに、コードはasm.js標準に従って生成されますが、これは理論的にはパフォーマンスを向上させるはずです。 実際には、以前の参加者の多くの機能を欠いていることに加えて、かなり重くて遅いエンジンであることが判明しました。



Player.htmlはThree.jsおよびMath.jsを使用して作成されました。 エンジンは古代のラップトップでも動作するように、可能な限り幅広い機器をサポートするだけでなく、ミニマリズムと速度に重点を置いています。 開発は比較的最近始まりましたが、機能はまだそれほど豊富ではありません。 したがって、批判や渇きに感謝します。



All Articles