(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-02-01
(54)【発明の名称】バージョン管理機能および同時編集操作機能を有する分子構造エディタ
(51)【国際特許分類】
G06F 16/27 20190101AFI20220125BHJP
G16C 20/50 20190101ALI20220125BHJP
【FI】
G06F16/27
G16C20/50
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2021526704
(86)(22)【出願日】2019-11-15
(85)【翻訳文提出日】2021-06-28
(86)【国際出願番号】 US2019061848
(87)【国際公開番号】W WO2020102751
(87)【国際公開日】2020-05-22
(32)【優先日】2018-11-15
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】511024975
【氏名又は名称】オープンアイ サイエンティフィック ソフトウェア, インコーポレイテッド
(74)【代理人】
【識別番号】100147485
【氏名又は名称】杉村 憲司
(74)【代理人】
【識別番号】230118913
【氏名又は名称】杉村 光嗣
(74)【代理人】
【識別番号】100165951
【氏名又は名称】吉田 憲悟
(72)【発明者】
【氏名】ジャロード ラフォン
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175AA01
5B175CA09
5B175CA10
5B175DA06
(57)【要約】
2人以上のユーザが、デジタル符号化された分子構造に同時編集を行うことを可能にする、コンピュータを利用した方法を提供する。本方法は、競合のない複製データ型(CRDT)の特性および因果木を用いて、同時編集、バージョニング、および出自を含む、仮想の分子構造のライフサイクルを管理することができる、分散型システムを提供する。本技術の用途として、ユーザが多数のコンピュータにわたって分散する可能性があるとともに、コンピュータ時刻同期(オフラインまたはオンラインの編集)の必要がない、コンピュータを用いた2次元または3次元での分子の同時設計や、仮想分子のバージョン管理および出自追跡や、コンピュータを用いた分子設計作業で用いられる他のデータ型が挙げられるが、これらに限定されない。
【特許請求の範囲】
【請求項1】
1つまたは複数の処理装置が分子構造を編集する方法を実行することを可能にする実行可能命令を有する非一時的機械可読媒体であって、
この方法が、
前記分子構造への複数の編集を受け取るステップと、
前記複数の編集のそれぞれに対し、
その編集がタイムスタンプを含まない場合に、前記編集にタイムスタンプを付すステップであって、この分子構造への前記複数の編集のそれぞれが異なるタイムスタンプを有するステップと、
少なくともその編集を用いて、前記分子構造と関連する競合のないデータ構造を更新するステップであって、前記競合のないデータ構造が前記分子構造に行われた前記複数の編集を組み入れるステップと
を含む非一時的機械可読媒体。
【請求項2】
前記複数の編集が、前記複数の編集を受け取るデバイスとは異なるデバイスが発生させた、リモートで発生した少なくとも1つの編集を含む、請求項1に記載の機械可読媒体。
【請求項3】
前記タイムスタンプを付すステップが、ランポートタイムスタンプで前記編集にタイムスタンプ処理することを含む、請求項1に記載の機械可読媒体。
【請求項4】
前記ランポートタイムスタンプが少なくともランポート論理クロックを用いる、請求項3に記載の機械可読媒体。
【請求項5】
前記タイムスタンプを付すステップが、
クロックをインクリメントさせること、および
前記クロックの現在値を用いて前記編集にタイムスタンプを付すこと
を含む、請求項1に記載の機械可読媒体。
【請求項6】
前記複数の編集のそれぞれが固有識別子をもつ、請求項1に記載の機械可読媒体。
【請求項7】
前記複数の編集のそれぞれが、原子の追加、原子の削除、結合の追加、結合の削除、原子特徴の変更、および結合特徴の変更の少なくとも1つである、請求項1に記載の機械可読媒体。
【請求項8】
前記複数の編集のそれぞれの出自を確認できるように、ローカルで発生した前記複数の前記編集のそれぞれに暗号署名するステップをさらに含む、請求項1に記載の機械可読媒体。
【請求項9】
前記複数の編集のそれぞれが親となる編集を有する、請求項1に記載の機械可読媒体。
【請求項10】
前記複数の編集のそれぞれの前記タイムスタンプを少なくとも用いて前記複数の編集を順序付けるステップをさらに含む、請求項1に記載の機械可読媒体。
【請求項11】
ローカルで発生した編集を分子デバイスに送るステップをさらに含み、前記分子デバイスがその編集を別のデバイスに伝送する、請求項1に記載の機械可読媒体。
【請求項12】
分子構造を編集する方法であって、
前記分子構造への複数の編集を受け取るステップと、
前記複数の編集のそれぞれに対し、
その編集がタイムスタンプを含まない場合に前記編集にタイムスタンプを付すステップであって、この分子構造への前記複数の編集のそれぞれが異なるタイムスタンプを有するステップと、
少なくともその編集を用いて、前記分子構造と関連する競合のないデータ構造を更新するステップであって、前記競合のないデータ構造が前記分子構造に行われた前記複数の編集を組み入れるステップと
を含む方法。
【請求項13】
前記複数の編集が、該複数の編集を受け取るデバイスとは異なるデバイスが発生させた、少なくとも1つのリモートで発生した編集を含む、請求項12に記載の方法。
【請求項14】
前記タイムスタンプを付すステップが、ランポートタイムスタンプで前記編集にタイムスタンプを付すことを含む、請求項12に記載の方法。
【請求項15】
前記ランポートタイムスタンプが少なくともランポート論理クロックを用いる、請求項14に記載の方法。
【請求項16】
前記タイムスタンプを付すステップが、
クロックをインクリメントさせること、および
前記クロックの現在値を用いて前記編集にタイムスタンプを付すこと
を含む、請求項12に記載の方法。
【請求項17】
前記複数の編集のそれぞれが固有識別子をもつ、請求項12に記載の方法。
【請求項18】
前記複数の編集のそれぞれが、原子の追加、原子の削除、結合の追加、結合の削除、原子特徴の変更、および結合特徴の変更の少なくとも1つである、請求項12に記載の方法。
【請求項19】
前記複数の編集のそれぞれの出自を確認できるように、ローカルで発生した前記複数の前記編集のそれぞれに暗号署名するステップをさらに含む、請求項12に記載の方法。
【請求項20】
前記複数の編集のそれぞれが親となる編集を有する、請求項12に記載の方法。
【発明の詳細な説明】
【優先権の主張】
【0001】
本出願は、2018年11月15日に出願された米国特許仮出願第62/768,047号に対し、米国特許法第119条(e)に基づく優先権の利益を主張し、参照により当該仮出願の全体が本明細書に組み込まれるものとする。
【技術分野】
【0002】
本明細書に記載の技術は、概して、コンピュータを利用した分子構造データの操作に関し、より詳細には、デジタル保存された分子構造に対し、競合なくバージョンを管理して複数のユーザが編集操作を行えるようにする方法に関する。
【背景技術】
【0003】
創薬プロセスは、従来主に経験による作業であったが、今日では、分子構造を構築、変更、および分析する多くのコンピュータツールの恩恵を受けている。これらのツールはコンピュータ科学者のみにより利用されるのではなく、研究所の科学者およびプロジェクトリーダーによっても利用される場合がある。どのようなプロジェクトにおいても、多数の研究者がコンピュータ保存された分子構造データにアクセスする可能性があり、開発チームの多くのメンバーが新規データの追加または既存データの変更を行う可能性がある。
【0004】
要するに、新たな薬物分子を開発するプロセスは、研究者が、新規の分子構造を試験および作成する実験工程と密接に関わる多くの機能を素早く実行することを可能にする様々なコンピュータツールに大いに依存している。このような機能には、コンピュータディスプレイ上での2次元および3次元の分子構造の可視化、例えば動力学シミュレーションまたはリガンド-受容体複合体の仮想モデルの構築などによる分子対間の結合相互作用の研究、数千あるいは数百万のデジタル符号化された分子構造のデータベース探索、およびコンピュータを用いた操作による有望な分子の構造の改良が含まれる。
【0005】
これらの機能のすべては、原子の種類および原子間の結合が標準的な形式で保存された、分子構造の一貫したコンピュータ表現に依存している。したがって、一般に理解される化学構造のデジタル表現によって、現実の分子において変化を調査する代わりに、非常に簡単に分子構造データにおいて同じまたは類似する変異を生じさせることが可能になる。
【0006】
しかし実際のところ、コンピュータを用いた分子設計プロセスは、複数の当事者が分子構造データに対し繰り返し変更を提案し行うことが往々にしてある。同一データ、ここでは1つまたは複数の分子構造を複数の当事者が編集できるようにするコンピュータを利用したシステムは、編集を調整する方法を必要とする。具体的には、2人の人間が同一の構造に競合する編集を加えることは望ましくなく、任意の編集について特定のタイムスタンプにおける特定の編集者を辿ることができるように、複数の当事者による逐次の編集を監視することが有効である場合がある。
【0007】
例えば、異なるコンピュータに分散される、複製された同一データに対する、調整なしの並行する編集の複数の集合は、ACID特性の集合(例えば、Jim Gray, “The Transaction Concept: Virtues and Limitations”(非特許文献1)を参照されたい)のうち、原子的一貫性を阻害する可能性がある。
【0008】
主としてデータベースの文脈において、ACIDは特性の集合(atomicity-不可分性、consistency-一貫性、isolation-独立性、およびdurability-永続性)の頭字語であり、トランザクションの概念に関するものである。リレーショナルデータベースおよび非リレーショナルデータベースは、共用コンピュータシステムにおけるデータを管理するために広く用いられている技術である。あるデータベース処理の順序集合がACID特性を実現する場合、それらの処理はトランザクションであると言える。不可分性はACID特性の1つであり、本明細書において、分子編集の文脈で重視されるものである。不可分性特性は、複数の編集(または編集の複数の集合)が部分的に適用されることがないことを保証するため、望ましい。
【0009】
詳しくは、ACID特性は以下のとおりである。
・不可分性は、各トランザクションが一単位として適用され、すべてが成功するかすべてが失敗し、失敗したトランザクションはデータベースに変更を及ぼさないことを意味する。
・一貫性は、トランザクションによってデータベースが有効な状態から有効ではない状態になるため、無効なトランザクションによってデータベースが破損されることがないことを意味する。
・独立性は、並行して実行されるトランザクションが明確に定義された動作を行うことを可能にし、独立性の程度は、1つのトランザクションによりもたらされる状態が他のトランザクションに明らかになるときに定まる。
・永続性は、一旦トランザクションが実行(コミットと言われる)されると、これによりもたらされた状態が失われることがないことを意味する。この意味で、永続性が存在する場合、トランザクションは永続的であるといえる。
【0010】
多くのコンピュータシステムが、現在ネットワークを基盤としているということが、問題を大きくしている。単独のコンピュータにおける編集操作(異なるユーザによるものであっても)の監視は可能である一方、データが集中保存される場合もあるものの、数百または数千のネットワーク接続されたコンピュータから常時アクセス可能であるという、今日の研究の現実からして、分子構造に対する同時編集操作を管理することは困難な課題となっている。データが集中保存されず、多くの場合、互いに並行して別のユーザがデータを操作することが可能な、任意のネットワーク上の複数のコンピュータに分散される場合も、この課題がより簡単ということはない。
【0011】
分子構造データは、特にテキストベースの文書データと異なっており、その少なくとも2つの理由として、出自(provenance)と、分子構造データを独特なものにする編集構造との問題がある。
【0012】
出自は、任意の分子構造がいかに生じたかを確認するのに一般的に有用であるため、重要である。この情報は、科学者に、自身による分子設計のすべてのプロセスの有効性を知らせ、複数の構造に適用される編集の傾向を認識するため、または化学空間に探索すべきであるが探索されていない部分がないか確認するために用いることができる。(例えば、有用な成果をもたらしたプロジェクトXに編集の集合を用いたが、プロジェクトXに用いた編集の集合の一部(サブセット)のみを別のプロジェクトに用いる)。このように、分子の断片の出自を知ることは有益である。これは、断片の形では通常有用ではないテキストデータ(例えば、“the”という断片としての単語は、単体では情報が得られない)と対照的である。
【0013】
分子データの編集の構造は独特であり、テキストに適用される種々の編集操作の形式と著しく異なる。例えば、テキストは決定的順序で、周期的関係はないものとして解釈される。文書中の任意の文字は最初、または他の文字の後に出現する。これに対し、分子は1つまたは複数の環を含むことが一般的である。
【0014】
コンピュータ保存データへの編集の調整は、一般的に、並行性制御方法によって可能となるが、このような方法はオーバーヘッドを生じ、拡張性が限定される。(並行性制御は、コンピュータシステムにおいてデータが同時に変更される際の決定的な成果を提供する方法のクラスを表すために用いる用語である。並行性制御方法は、多くの場合、参加者の多数決または分散ロックに依存する。) さらに重要なことは、調整により一貫性がもたらされる一方、相互に競合したかもしれない編集の履歴が保持されないということである。こうして、並行性制御方法は、決定的結果が達成されるという意味で実用上競合を解決するが、競合の解決の仕方によっては、編集の意図が失われる。したがって、仮に2当事者がデータベースの同じ行に値を同時に保存すると、2つの値をマージしたものを表す値ではなく、最後にコミットされたトランザクションの値が保存される値を生じうる。例えば、2人の研究者が、共有された分子構造の同じ連結点に2つの異なる官能基を並行して結合させようと試みる場合、それらの編集は競合し、解決する必要がある。このような競合を解決するように方法を考案した場合を想定しても、この競合の解決と並行して別の編集が行われた場合、解決された分子に生じる状態は、なお競合の影響を受ける。
【0015】
したがって、ユーザが安心して、相互に競合することなく任意の分子構造を編集できるように、分子構造データへの並行編集を確実に管理する方法が必要とされている。
【0016】
本明細書における背景の説明は、技術の状況を説明するためになされる。この説明は、言及するすべての内容が、本明細書に添付されるいずれかの請求項の公開日において出版物に記載され、公知であるか、または一般的知識であったと認めるものと解釈するべきではない。
【0017】
本出願の明細書および請求項の全体を通して、「comprise(備える、含む、包含する)」ならびに「comprising」および「comprises」などの活用形は、他の添加物、構成要素、整数、または工程を排除することを意図しない。
【先行技術文献】
【非特許文献】
【0018】
【非特許文献1】Jim Gray, “The Transaction Concept: Virtues and Limitations”
【発明の概要】
【0019】
本開示は、2人以上のユーザによる同時の、バージョンニングされた分子構造データの編集のための、コンピュータを利用した方法および装置を対象とする。本開示は、さらに、このような方法を実行するための命令によって符号化されたコンピュータ可読媒体を包含する。本開示の装置およびプロセスは、特に、多数の研究者が同じ分子構造データにアクセスし、これに編集を行うかまたは編集を行うことを提案する、薬剤開発環境に適用可能である。
【0020】
本明細書における方法は、無向グラフとしての分子構造のイメージおよびそれらのグラフに関係するサイト(site)としての個別のユーザに依存する。ランポート(Lamport)の論理クロック、ランポートタイムスタンプ、および競合のない複製データ型は、2人以上のユーザによる編集が相互に競合しないことを保証する。
【0021】
本発明は、限定するものではなく例示として添付図面に示され、当該図面において、同様の参照符号は類似の要素を表す。添付図面は、分子構造の同時編集の複数の態様を示す。図面は、分子構造および対応する因果木(causal tree)のイメージを含む。原子には、SITE_ID@LAMPORT_TIMESTAMP(サイト識別子@ランポートタイムスタンプ)の形式で構成される、グローバル固有タイムスタンプが付される。分子の最新のタイムスタンプおよびSMILES文字列が、各イメージの上に示される。因果木のノードの表示は、編集の詳細を示している。因果木中の矢印は、因果の親(causal parent)から子(causal child)の向きで因果関係を示している。
【図面の簡単な説明】
【0022】
【
図1】サイト‘S1’でなされた編集の単純な因果木の一実施形態を示す図である。
【
図2】
図1の木に対する第2のサイトによる編集の一実施形態を示す図である。
【
図3】サイト‘S2’がサイト‘S1’に編集を返す一実施形態を示す図である。
【
図4】S1およびS2が同時編集を行う一実施形態を示す図である。
【
図5】S2がS1と並行して新たな編集を行う一実施形態を示す図である。
【
図6】S2がその操作配列をS1に送る一実施形態を示す図である。
【
図7】代表的なコンピュータシステムの一実施形態を示す図である。
【
図8】分子構造の並行編集を可能にするシステムの一実施形態を示すブロック図である。
【
図9】分子構造の並行編集を可能にするプロセスの一実施形態を示すフロー図である。
【
図10】単一または複数のクライアントに、分子構造の編集を配布するプロセスの一実施形態を示すフロー図である。
【発明を実施するための形態】
【0023】
本技術は、2以上の当事者が、デジタル保存された分子構造の表現に競合する編集を生じることなく並行編集を行うことを可能にする、コンピュータを利用したシステムを対象とする。
(研究手法)
【0024】
以下に、同時の、バージョンニングされた、分子構造の編集を行うための適切に構成されたコンピュータシステムにより実行される方法の実施について例示的に説明する。研究手法の各態様において、本明細書における説明は排他的、制限的、限定的のいずれでもなく、かつ新規性、進歩性、または方法の作用原理から逸脱しない範囲で、他の類似する態様が当業者によって発見されうることを理解されたい。このような研究手法は、コンピュータを使用した分子設計シミュレーションに適用される。
【0025】
本方法に用いられるデータ構造は、各グラフが仮想の分子構造の集合を表現することにより、各構造を編集することができ、各編集を新たな分子であるとみなすことができる、無向グラフの集合と、各グラフにつき、各節点が原子を表すラベル付き節点の集合と、各グラフにつき、各枝が結合を表すラベル付き枝の集合と、それぞれが対話ユーザを表すサイトの集合とを含むがこれらに限定されない。
【0026】
対話ユーザを表すサイト集合の各サイトは、グローバル固有サイト識別子と、編集の操作配列と、他のサイトと交換することができる、操作配列およびランポートタイムスタンプを含む1つまたは複数のメッセージと、ランポートの論理クロック(例えば、ワールドワイドウェブ上のlamport.azurewebsites.net/pubs/time-clocks.pdfで提供されるLeslie Lamport, “Time, Clocks, and the Ordering of Events in a Distributed System”を参照されたい)とを含む。
【0027】
各サイトにつき1つの、ランポートの論理クロックの集合は、サイトが編集前にそのクロックをインクリメントして、同じサイトで2つの編集が同じクロック値にならないことを担保し、サイトが他のサイトに送るメッセージ中または該メッセージとともにそのクロック値を含み、別のサイトからメッセージを受け取る際にサイトがそのクロックを自らのクロック値よりも大きい値またはそのメッセージに含まれるクロック値に更新し、その後自らのクロックをインクリメントするようにするものである。一実施形態において、各サイトは自らの論理クロック(例えばランポートクロック)を維持する。この実施形態では、サイトは分子構造を閲覧および/または編集するクライアントまたはクライアントのプロセスとすることができる。
【0028】
編集は以下のように処理することができる。採用されたデータ構造は、各編集が特定のグラフに対する変更を表す、編集の順序集合を含む。この方法において、各編集は、編集が生じたサイトの識別子および起点となるサイトのランポート論理クロックから生じた編集生成のランポートスタンプを含む固有識別子と、既定の編集の集合からの編集型と、その編集とその親との因果関係を定義する、当該親の識別子と、編集の出自を確認するために用いることができる暗号署名と、のうち1つまたは複数を含みうる。
【0029】
前述の既定の編集は一般的に、通常分子モデル作成者がコンピュータ上でデジタル形式で表される分子構造に適用する編集操作の型を含む。したがって、既定の編集は、少なくとも以下を含む。
1.add_root_atom:空の分子に第1の原子を挿入する編集
2.sprout:原子と結合の両方を分子に追加し、その結合が新たに追加された原子と既存の原子との間に存在するようにする編集
3.add_bond:2つの既存の原子の間に結合を挿入する編集
4.delete_bond:既存の結合を削除する編集
5.delete_atom:既存の原子を削除する編集
【0030】
原子または結合に対するその他の編集も定義される場合がある。例えば、形式電荷、プロトン付加、その他の原子の性質を変更する編集が定義されうる。同様に、結合次数を変更(1から2などに)する編集が定義されうる。
【0031】
上述の編集の順序集合はさらに、因果関係の保存を可能にする操作配列を含み、ここで、配列は1つの分子グラフに対応し、各新規の配列は後のすべての編集の根となる空の(empty)編集により初期化され、配列中の編集はそれらのランポートスタンプにより順序付けられ、配列中の編集は他の編集への親リンクまたは子リンクを持つ場合があり、1つまたは複数の操作配列がマージする場合があり、かつ/あるいは因果木は第1の配列要素で始まる深さ優先前順走査を行うことにより操作配列から計算されうる。
【0032】
操作配列中の編集の適切な順序付けは、任意のイベントAおよびBについて、因果順序は、AのランポートタイムスタンプがBよりも早い場合、AがBの前に生じたと言え、タイムスタンプが同じであるが、異なるサイトを起点とする2つ以上の編集は、起点サイトの識別子(固有である必要がある)により順序付けられることが理解されるであろう。
【0033】
また、1つまたは複数の操作配列がマージされる場合、マージは、競合することなく決定的なマージされた配列順序を生じ、配列の集合へのマージは同じ結果をもたらす任意の順序で行うことができるようなものであることが理解されるであろう。
【0034】
例示的なデータ構造中の因果木はそれぞれ、各ノードが操作配列由来の編集であり、決定的順序ですべての編集を適用するために因果木の深さ優先前順走査を行うことができるような操作配列で構成することができる。適切な決定的順序では、ノードの子がランポートタイムスタンプの降順で探索され、兄弟ブランチは並行編集を表すとともに分子の論理分岐であり、サブツリーは後に続く編集である。
【0035】
本明細書に記載の分子構造エディタの構成は、以下の機能の一部またはすべてを有する、分子構造の複数の集合を閲覧および編集するためのマルチユーザインタフェースを含みうる。
1.各ユーザの対話セッションが新たなサイトとして実行される。
2.1人または複数のユーザが、操作配列によりバックアップされた同じ分子構造を閲覧および編集することができる。
3.ユーザは(接続の有無を問わず)操作配列に並行して編集を行うことができる。
4.編集は、メッセージ送達により他のサイト(集中型サーバー)と交換することができ、ここで、メッセージはサイトの操作配列を含む。
5.操作配列を繰り返すことにより、特定の構造のすべてのバージョンを閲覧および編集することができる。
6.特定の編集に対する競合する並行編集は解決することができ、これにより操作配列中に新たな編集が生じる。
7.構造グラフの化学的に不可能な構成は、各編集者の識別情報とともに視覚的に示される。
(競合のない複製データ型)
【0036】
競合のない複製データ型(CRDT:Conflict-free Replicated Data Types)は、特定のデータ構造ではなく、特性集合を達成するデータ構造のクラスに与えられる名前であるため、特定のCRDTは目的に応じて設計する必要がある。具体的には、一実施形態において、CRDTは、競合する編集を設計により回避するデータ構造である。これらのデータ構造は、分散型システム間で複製することができ、参加者の調整なしに並行して変化させることができる。ゴシッププロトコルまたはピアツーピア通信を用いて、データへの変更を拡散させることができる。参加するコンピュータが、それ自体のCRDTの複製の更新を受信すると、競合なくマージが行われる。マージされた更新の結果は、各参加コンピュータがその更新を最終的に受信する限り、明白に決定的である。CRDTの更新および複製とのマージは明らかに可換であるため、競合がない並行編集は調整を必要としない。
【0037】
従来テキストデータの用途に用いられてきたCRDTは、一連の編集の適切な出自を提供し、分子構造に適用される複雑な編集の型を取り扱うことを可能にするため、分子構造編集に採用すると有益である。
【0038】
分子構造データとテキストデータは互いに異なる特徴を有する。したがって、テキスト編集のために設計されたCRDTは、データ中の基本的な関係が異なるため、分子データの表現には有用ではない。例えば、テキスト断片はそれ自体では有用ではないため、テキスト編集に適用されるCRDTは断片の出自を割り出す必要がない。これに対し、断片の出自を提供する分子CRDTは、一連の創薬プロジェクトに有用となりうる。前述のとおり、複数プロジェクトにわたって適用される編集についての有用な情報を発見するために、分子CRDTの複数の集合を調べることができる。さらに、CRDTは冪等にマージすることができるため、編集のライブラリを事前に計算し、その後必要に応じて適用することができる。(当業者であれば理解するように、冪等性は、操作配列の集合を任意の回数マージした結果である操作配列-および、それに対応する因果木-は、同じ配列を一度のみマージした結果と同一になることを保証する特性である。このマージは時間から独立しているため、共有された既存の編集の集合(組織のデータベースで調べることができるような)を用いることができ、それらを任意の時点で適用することができる。)
【0039】
さらに、分子構造は環を含み、単純な線形の連続するデータではない。対照的に、テキスト文書中の文字は特別な順序を有し、多くの場合、この順序はテキストCRDTの因果順序の基礎として用いられる。しかし、分子内の環中の任意の原子には明白な因果の親がなく、これはいずれの環原子にも少なくとも2つの因果の親の候補があるためである。一実施形態では、本明細書に記載の分子CRDTの編集は、この候補の曖昧性を克服するようにカスタマイズすることができる。例えば、結合の挿入などの特定の編集は、2つ以上の因果の親(例えばタイムスタンプS1@12の図で示すように)をもつことができる。
【0040】
根本的に、CRDTは結び半束の概念に依存している。以下は、CRDT上の編集の集合(S)に関する結び半束の高レベルな概要である。順序はS上の二項関係≦
う:<S,≦>である。集合Sにおけるいずれのx、yについても、結びx∨yが<S,≦>にしたがうSの最小上界である。結び半束は、いずれのx,y∈Sに対しても結びx∨yが存在する、<S,≦>の順序である。分散型システムでは、編集はシステムのいずれのメンバーでも生成することができる。ランポートタイムスタンプは編集の部分順序をもたらすために用いることができる。
(分子CRDT)
【0041】
分散型システム分散型システムは、サイトと呼ばれる通信ピアの集合として定義される。各サイト(グローバル固有識別子を有する)は分子CRDTの複製を有し、共有された分子を並行して編集しているエンドユーザを論理的に表す。ランポートタイムスタンプは各分子編集に付され、CRDTに必要な部分順序をもたらすように用いられ、ここで、サイトはランポートタイムスタンプアルゴリズムを実施する。同一のタイムスタンプの編集はそれらの起点サイトの識別子により順序付けられる。サイトはそれぞれの複製をゴシッププロトコル、ピアツーピアプロトコルを用いるか、または他のサイトが読めるよう、複製を持続保存することにより、編集および交換することができる。
【0042】
一実施形態において、CRDTによる分子の表現はCRDTMolと呼ばれる。各新規のCRDTMolは、因果の親である初期編集となる空の編集操作によって初期化される。CRDTMolは、イミュータブルな編集の順序集合を含む操作配列として実行される。配列中の各編集は、起点サイトのIDおよび編集生成のランポートタイムスタンプで構成される、配列中で固有の識別子をもつ。編集は、編集のための補助データとともに、編集の性質を定義する編集型をもつ。編集は、その因果の親および子への参照を保存する。最初の空の編集から始まる編修間の参照は因果木をなす。
【0043】
各サイトは、CRDTMolと内部で対話する、分子と相互作用するためのユーザインタフェースを組み込む。表示された分子のすべての原子および結合は、そのエンティティの存在をもたらした編集への参照を維持する。
(編集を生成する)
【0044】
新規の編集は、サイトで以下のように生成される。編集の型に応じて、編集の因果の親が決定される。
1.‘add_root_atom’では、因果の親が操作配列の最初の(空の)編集である。
2.‘sprout’では、因果の親は、新たな原子を結合させる原子を生じさせた編集である。
3.‘add_bond’では、結合された原子を生じさせた編集である、2つの因果の親が存在する。
4.‘delete_bond’では、先に、結合された原子を生じさせた編集である、2つの因果の親が存在する。
5.‘delete_atom’では、因果の親は、原子を生じさせた編集である。
【0045】
編集の論理ランポートクロックはインクリメントされる。新規編集は、インクリメントしたタイムスタンプを用いて、親の参照とともに生成される。最後に、この編集は操作配列の最後に付加される。
(因果木から分子を計算する)
【0046】
いずれの時点においても、サイトは、深さ優先前順走査で因果木由来の編集を適用することにより、因果木から分子の状態を計算することができる。走査の間、兄弟は降順のタイムスタンプの順番でソートされる。グラフの節点および枝が繰り返し生成されつつ、編集は因果順序で適用される。なお、分岐を含む、いずれのバージョンの分子も、対応する部分木を走査することにより構成することができる。
【0047】
図8は、分子構造への並行編集を可能にするシステム800の一実施形態のブロック図である。
図8では、システム800は別の分子デバイス802Bに接続された分子デバイス802Aを備え、これらの分子デバイス802A~Bはそれぞれのクライアント804A~Bに接続される。一実施形態では、分子エディタデバイス802A~Bのそれぞれが、他のクライアントがその分子810に並行編集を行うことを防止しうる、分子の全体または分子の一部で分子に対するロックを必要とせずに分子810の編集を可能にする分子プロセス814A~Bの上位装置として働くデバイスである。これにより、2クライアント804A~Bのいずれかがこの分子810を編集している間に、クライアントのユーザが分子へのロック変更を必要とせずに、同時に分子を編集することが可能となる。一実施形態では、分子デバイス802A~Bのそれぞれをパーソナルコンピュータ、ラップトップ、サーバ、モバイルデバイス(例えばスマートフォン、ラップトップ等)、ネットワーク構成要素、および/または分子構造を計算および保持することが可能なデバイスとすることができる。また、クライアント804A~Bのそれぞれは、別個にパーソナルコンピュータ、ラップトップ、サーバ、モバイルデバイス(例えばスマートフォン、ラップトップ等)、ネットワーク構成要素、および/または分子構造を受け取りかつ表現することが可能なデバイスとすることができる。さらに、分子デバイス802A~Bおよび/またはクライアント804A~Bのそれぞれは物理デバイスまたは仮想デバイスとすることができる。一実施形態では2つの分子デバイス802A~Bおよび2クライアント804A~Bが例示される一方、代替の実施形態では、より多いかまたは少ない数の分子エディタデバイスおよび/またはクライアントがそれぞれ存在する場合がある。
【0048】
例えば、一実施形態では、同時に編集をそれぞれのクライアントから受け取る分子デバイスとして機能する複数のサーバが存在する場合もあり、分子サーバのそれぞれが他の分子サーバへの編集を複製して、分子810を閲覧する各クライアントに対し、分子810の最終的な一貫性を達成する。そのため、この例において、クライアントの1つが分子810に編集を発生させる場合、この編集は、このクライアントに接続された、受信側分子サーバから他の分子サーバへ配布され、この編集は、その後この分子を閲覧する他のクライアントに通知される。また、この間、別のクライアントが編集を発生させることもでき、これもまた他のクライアントに配布される。そのため、この例では、編集は、1クライアントではそのクライアントが同じ分子810に編集を加えているように表示される。この例では、クライアントは、リモートで生成された編集が分子に適用される間、このクライアントのユーザに対し一時的に分子構造への編集をロックすることができる。しかし、この例では、このロックは他のクライアントには適用されない。
【0049】
一実施形態では、クライアント804A~Bのそれぞれが、分子810の分子構造の並行編集を可能にする分子編集プロセス812A~Bを備える。この実施形態では、分子編集プロセス812A~Bはユーザの動作に応えて分子構造810に対する編集を生成し、上述の分子競合のない複製データ型(例えばCRDTMol)でそれらの編集を保存する。分子編集プロセス812はさらに、必要に応じて対応する分子デバイス801A~Bに編集への更新808A~Bを送り返すことができる。一実施形態では、クライアント804A~Bのそれぞれは、分子810への編集を表示および編集するために用いられるウェブブラウザを備える。この実施形態では、分子編集プロセス812A~Bはそれぞれのクライアント804A~Bからの編集を統合し、更新を表示して、クライアント804A~Bのウェブブラウザに更新された分子810が表示できるようにする。例えば、一実施形態では、クライアント804Bが同時に分子810を閲覧および/または編集する間、クライアント804Aは、官能基NH4
+を分子810に加えることができる。この編集は分子編集プロセス812Aによって取得され、該プロセスによってその編集はクライアント804Aにおける分子810のCRDTMolに統合され、この編集はクライアント804Bに遡って反映される。一実施形態では、クライアント804A~Bおよび分子デバイス802A~Bは分子810のCRDTMolを保持し、ここで、分子デバイス802A~Bは分子デバイス802A~Bにより配布された編集の更新をクライアント804A~Bに送る。編集更新を受け取る各クライアント804A~Bは、この編集更新を、クライアント804A~Bにより保持されるCDRTMolに統合する。
【0050】
図9は、分子構造の並行編集を可能にするプロセス900の一実施形態を示すフロー図である。一実施形態では、プロセス900は、上の
図8で説明した分子編集プロセス812A~Bのような分子編集プロセスにより実行される。
図9において、プロセス900は、ブロック902で分子構造へのリクエストを受け取ることにより開始する。一実施形態では、上の
図8で説明したように、ユーザはクライアントを用いて分子構造を編集することへの関心を示すことができる。別の実施形態では、このユーザがプロセス900で編集セッションを開始した(例えばユーザアカウントでログインした)ところである。ブロック904では、プロセス900が分子構造を受け取る。一実施形態では、プロセス900はウェブブラウザにウェブプロトコルを用いて分子構造を受け取る(例えば、クライアントは分子構造に対してハイパーテキスト・トランスファー・プロトコル(HTTP)を分子デバイスにリクエストし、分子デバイスは、ハイパーテキストマークアップ言語、JavaScript、および/または他のデータとの組み合わせで分子構造をクライアントに送ることによってリクエストに応じる)。
【0051】
プロセス900は、ブロック906で分子構造への1つまたは複数の編集をユーザから受け取る。一実施形態では、編集は、原子の追加/削除および/または結合の追加/削除である可能性がある。さらなる実施形態では、編集のうちの1つが、クライアントを用いて分子をアクティブに編集しているユーザからローカルで発生する可能性があり、あるいは上の
図8で説明したように、1つまたは複数の分子デバイスを介して配布され、別のクライアントにより受け取られた、リモートで発生した編集である場合がある。ブロック908では、プロセス900が、受け取った分子構造への1つまたは複数の編集を処理する。一実施形態において、プロセス900は、上述したようにランポートタイムスタンプを用いてローカルで発生した編集のそれぞれにタイムスタンプを付すことにより、それらの編集を処理する。この実施形態では、(前に受け取った編集のいずれかを含む)分子構造への編集のそれぞれが、(例えば、上述したようにランポートタイムスタンプを用いることにより)異なるタイムスタンプをもつことになる。さらに、プロセス900は、上記のとおり、この編集を特定のユーザに関連づけるように、各編集に暗号書名を行うことができる。分子デバイスの1つから受け取った、リモートで発生した編集は、編集を発生させたクライアントによって処理されたことになるため、リモートで発生した編集のそれぞれは固有のタイムスタンプおよび/または他の情報(例えば、暗号書名、サイト識別子、および/または他の情報)をもつことになる。さらに、プロセス900はこうした操作を単独でまたは組み合わせて用いて編集を処理することができる。ブロック910で、プロセス900はこれらの編集を用いて分子構造を更新する。一実施形態では、プロセス900は、処理された編集を分子構造のCRDTMolに統合することによって、その分子構造を更新する。また、プロセス900がローカルで発生した編集を分子デバイスに送ることによってこれらの編集が配布され、これにより他のクライアントがCDRTMolの更新されたコピーを取得することができる。
【0052】
ブロック912では、プロセス900が、ユーザによる分子構造の編集の停止を判定する。ユーザが編集を停止すると、プロセス900はブロック914でユーザセッションを終了する。停止しない場合、上のブロック906に実行が継続する。
【0053】
図10は、分子構造への編集を1つまたは複数のクライアントに配布するプロセス1000の一実施形態のフロー図である。一実施形態では、プロセス1000は分子構造編集を配布する分子プロセス、例えば上の
図8で説明した分子プロセス814A~Bによって実行される。
図10では、ブロック1002で、システム内の他の分子デバイスを特定することでプロセス1000が開始する。一実施形態では、1つまたは複数の分子構造への編集を配布するために用いられる複数の分子デバイスが存在しうる。この実施形態では、クライアントは分子デバイスの1つと通信し、分子構造への編集を受送する。
【0054】
ブロック1004では、プロセス1000は分子構造へのリクエストを受け取る。一実施形態では、クライアントは分子構造へのリクエストを送る。プロセス1000はブロック1006で分子構造を送る。ブロック1008では、プロセス1000は分子構造への編集を受け取る。一実施形態では、編集はローカルで発生するかまたはリモートで発生する可能性があり、ローカルで発生する編集はプロセス1000を実行する分子デバイスに接続するクライアントからであり、リモートで発生する編集は別の分子デバイスから受け取られた編集である。プロセス1000は、ブロック1010で、プロセス1000により保持される分子構造を更新する。一実施形態では、プロセス1000は分子構造のCRDTMolを保持し、プロセス1000は上述のようにこのCRDTMolを更新する。ブロック1012では、プロセス1000は編集を他のデバイスに配布する。一実施形態では、ローカルで発生した編集について、プロセス1000はこれらの編集をシステム内の他の既知の分子デバイスに配布する。別の実施形態では、リモートで発生した編集について、プロセス1000はこれらの編集をクライアントおよび(必要に応じて)他の分子デバイスに配布する。プロセス1000がすでに編集を受け取っていた場合、プロセス1000はその編集を配布しない。
(実施の詳細)
【0055】
本明細書に記載の方法は1つまたは複数のコンピュータシステム上で実施されることが好ましく、この実施は当業者の能力の範囲内である。具体的には、分子構造の操作のためのコンピュータ機能は、当該技術分野に精通したプログラマが開発することができる。これらの機能は、場合によっては混合実装(すなわち、互いに通信するよう適切に構成された、複数のコンピュータ言語で書かれた分離した部分に依存する)を含む、多数多種のプログラミング言語により実装することができる。例えば、これらの機能は、必要とされるスクリプト機能と同様に、C、C++、Java、JavaScript、VisualBasic、Tcl/Tk、Python、Perl、C#などのNET系言語、および他の同等の言語でプログラムすることができる。この技術の可能性は、基本的な機能へのアクセスを実施または制御するために用いられる基礎となるプログラミング言語により限定され、またはこれに依存することはない。一方、機能性は、データ構造を操作するための、過去に開発された機能に依存する、ツールキットなどのより高レベルの機能から実装される可能性がある。
【0056】
2以上の当事者が別々に独立して、分子構造データへの編集操作など、演算処理を行う場合、様々な当事者により操作される様々なコンピュータシステムは、能力またはそれらがプログラムされる方法の正確な詳細は全く同じである必要がないにしても、各当事者が独立して本明細書に記載の性能をもつコンピュータシステムにアクセスできるものとする。
【0057】
本明細書に記載の技術は、現在使用されている公知のコンピュータオペレーティングシステム(OS)のいずれかのみならず、ここに挙げていない他のOSとともに実行されるよう開発することができる。それらのオペレーティングシステムとして、Windows(Microsoft Corporationから入手可能な、Windows XP、Windows 95、Windows 2000、Windows Vista、Windows 7、Windows 8(Windows 8.1として知られる種々のアップデートなどを含む)、およびWindows 10などのバージョンを含む)、Apple iOS(iOS3、iOS4、iOS5、iOS6、iOS7、およびiOS8などのバージョン、ならびにそれらの間のアップデートを含む)、OS9、OS 10.x、OS X などのApple Macintosh オペレーティングシステム(“Leopard”、“Snow Leopard”、“Mountain Lion”、“Lion”、“Tiger”、“Panther”、“Jaguar”、“Puma”、“Cheetah”、“Mavericks”、および“Yosemite”として知られるバージョンを含む)、UNIX オペレーティングシステム(例えば、Berkeley Standard version)ならびにIRIX、ULTRIX、およびAIXなどの別バージョン、および(例えば、Red Hat Computingから入手可能な)Linuxオペレーティングシステムが挙げられるが、これらに限定されない。
【0058】
データ構造を構築および修正したり、コンピュータディスプレイに分子構造データを表示したりするための機能など、すでに実装済みの他のソフトウェアコンポーネントに任意の実施が依存する程度に、それらの機能は当該分野に精通するプログラマによって利用可能であり、修正可能であるものとすることができる。
【0059】
さらに、本明細書で説明するように、適切にプログラムされたコンピュータに分子構造に並行編集を行うための方法を実行させる、実行可能命令は、任意の適切なコンピュータで読み取り可能な形式で保存および送信することができることを理解されたい。これは、コンピュータのUSB端子に接続可能であるような、大容量“ハードドライブ”または“ペンドライブ”などの携帯型読み取り可能ドライブ、コンピュータ内蔵ドライブ、およびCD-ROM、または光ディスクを含むことができるが、これらに限定されない。さらに、実行可能命令が携帯型コンピュータ読み取り可能媒体に保存でき、このような有形の形式で供給先またはユーザに送信できる一方、実行可能命令は、例えば、それ自体がWiFiなどの無線技術に部分的に依存しうるインターネット接続を介して、離れた場所からユーザのコンピュータからダウンロードすることができることを理解されたい。この技術のこのような側面は、実行可能命令が信号の形式または他の無形の形態をとることを示唆するものではない。実行可能命令は、“仮想マシン”実行の一部として実行することもできる。
(コンピュータ装置)
【0060】
本明細書に記載の方法を実践するのに適切な、代表的な汎用コンピュータ装置(900)を、
図7に模式的に図示する。このようなシステムは、本明細書で説明するように、2以上の当事者のうち、同時に分子構造データを編集することを望む1または複数の当事者により使用される可能性がある。
【0061】
コンピュータシステム(900)は、少なくとも1つのデータ処理装置(CPU)(922)、高速ランダムアクセスメモリと不揮発性メモリの両方(1つまたは複数の磁気ディスク装置など)を一般的に含むメモリ(938)、ユーザインタフェース(924)、もう1つのディスク(934)、および少なくとも1つのネットワーク接続(936)、インターネットを含むネットワーク上で他のコンピュータと通信するための他の通信インタフェース(960)、または高速ネットワークケーブルもしくは無線接続を介するような他のデバイスを備える。ネットワーク接続(936)は、2人以上のユーザが分子構造データを互いにやり取りするために用いることができ、ここで、ユーザのそれぞれは先のコンピュータシステム(900)と同じような性能をもつコンピュータシステム(990)(図示せず)を有し、コンピュータ(900)から共有されたデータを受け取ることができる。必要に応じて、コンピュータ(900)とインターネット(960)の間にはファイアウォール(952)が加えられる場合がある。少なくともCPU(922)、メモリ(938)、ユーザインタフェース(924)、ディスク(934)、およびネットワークインタフェース(936)は、少なくとも1つの通信バス(933)を介して相互に通信する。
【0062】
メモリ(938)は、基本的なシステムサービスを提供するためのオペレーティングシステム(940)と、1つまたは複数のアプリケーションプログラム(950)、例えばパーサルーチンと、コンパイラ(
図7では示さず)、ファイルシステム(942)、分子構造などのデータを保存する1つまたは複数のデータベース(944)と、分子構造に編集操作を行うためなどの高レベルの数値計算動作のために必要な場合には、任意で浮動小数点コプロセッサと、の一部またはすべてを一般的に含む、手続きおよびデータを保存する。また、本技術の方法は、メモリ(938)またはディスク(934)に保存される、
図7に図示されない、1つまたは複数のダイナミックリンクライブラリに含まれる機能を利用する場合がある。
【0063】
また、メモリ(938)に保存されるような、
図7に示すデータベースおよび他のルーチンは、メモリ(938)に効率的に保存するにはデータベースにおけるデータの容量が大き過ぎる場合、必要に応じてディスク(934)に保存することができる。さらに、データベース、またはその一部は、ネットワークインタフェース(936)を介してコンピュータシステム(900)と通信する1つまたは複数のリモートコンピュータに保存することもできる。
【0064】
メモリ(938)は、少なくとも、1つまたは複数の分子構造948に並行編集操作を行うための命令(946)によって符号化される。命令は、要望に応じて、データベースに保存された分子構造の2次元図および3次元図を表示する、プログラムされた命令をさらに含むことができる。多くの実施形態において、編集自体は、ユーザと直接対話するコンピュータ(900)上で計算されることはなく、別のコンピュータ(図示せず)上で行われ、例えば、ネットワークインタフェース(936)を介してコンピュータ(900)に転送される。
【0065】
本明細書に記載の技術には様々な実施が考えられ、特には、ワークステーション、PC、ラップトップ機、ノート型パソコン、タブレット、ネットブック、ならびに移動電話、携帯電話、および携帯情報端末を含む他のモバイルコンピュータデバイスが挙げられるが、これらに限定されない、1つまたは複数の複雑性の異なるコンピュータ装置(演算を行うようプログラムすることができるマシン)上で実行されることが考えられる。本明細書の方法は、さらに、量子コンピュータの性能に左右される可能性がある。コンピュータデバイスは、本明細書の方法を実行するソフトウェアを動作させるための、グラフィックプロセッサおよび数値演算コプロセッサを含むがこれらに限定されない、適切に構成されたプロセッサを有する可能性がある。また、特定の演算処理機能は一般的に2つ以上のコンピュータ間で分散され、これにより例えば、1つのコンピュータが入力および命令を確定し、第2またはさらなるコンピュータがネットワーク接続を介して命令を受け取って、離れた場所で処理を実行し、必要に応じて、第1のコンピュータに結果を伝達するかまたは出力を返す。したがって、本明細書の方法は特に、特定のアカウント所有者のみに閲覧可能であるように、安全な方法で、1つまたは複数のリモートホストされたデータ保存の配列で、データが一時的または恒久的に保存される、クラウドコンピューティング環境で行われることに左右される。クラウドコンピューティング環境では、リモートプロセッサの配列の処理能力を利用してクラウド環境に保存されたデータの操作を行うことができ、このような操作の結果は特定のアカウント所有者および/またはその操作へのアクセスを許可された者のみに知られる。
【0066】
コンピュータ装置の制御はユーザインタフェース(924)を介したものとすることができ、該ユーザインタフェースは、ディスプレイ、マウス、キーボード、および/または
図7に図示しない他の用品、例えばトラックパッド、トラックボール、タッチスクリーン、スタイラス、音声認識デバイス、ジェスチャ認識技術、人間の指紋読み取り機、または、ユーザの目を利用するような他の入力装置もしくはそれらの入力装置の部分的組合せまたは組合せを備えうる。
【0067】
一実施形態では、編集をQRコードとして表し、例えば携帯電話インタフェースに表示することができ、このようなコードは、個々間で、互いのデバイスの画面のオプティカルスキャニングにより相互にやり取りすることができる。このようにして、通信手段、例えば無線、インターネット、近距離無線通信の危殆化を回避することができる。
【0068】
本技術の操作方法は、1つまたは複数のソフトウェアモジュール、機能、またはサブルーチンとしての形態とした場合、バッチ処理される、分子構造の保存されたデータベースに対するような、バッチモードとすることができ、または単一の分子構造に関する特定の命令を入力するユーザと対話することによるものとすることができる。
【0069】
本明細書の技術により生成された計算は、分子構造自体とともに、例えば、モニタ、ラップトップディスプレイ、またはタブレット、ノート型パソコン、ネットブック、もしくは携帯電話の画面などの、1つまたは複数のコンピュータディスプレイに有形の形式で表示することができる。分子構造およびそれに対する編集はさらに、紙の形式に印刷したり、コンピュータ可読媒体に保存するかまたはコンピュータ間で転送または共有するための形式で電子ファイルに保存したり、プレゼンテーションの際などにホールのスクリーンに投影したりすることができる。
【0070】
特定のデフォルト設定をコンピュータ構成に組み込むことができるが、ユーザは、分子構造データに並行編集を行う際に用いられる機能を要望するだけ選択することが可能である。
【実施例1】
【0071】
(単一サイトの因果木)
図1に示す実施例は、単一の炭素原子を挿入した、サイト‘S1’の単純な因果木を示し(明確にするために、すべての因果木に共通の暗黙の空の編集が含まれることに留意されたい)、その後炭素原子と結合の組み合わせを追加する2つの編集が行われる。これらの編集は以下のように説明できる。
S1@1:(図示せず)初期の空の編集(すべての新たな分子のCRDTに必要)
S1@2:炭素原子を挿入
S1@3:新たな炭素原子に結合するS1@2の原子に単結合を追加する
S1@4:新たな炭素原子に結合するS1@3の原子に単結合を追加する
【実施例2】
【0072】
(第2のサイトによる編集)
実施例1に続いて、
図2に示すように、サイト‘S1’はその操作配列をサイト‘S2’に送る。サイト‘S2’は、サイト‘S1’、タイムスタンプ‘2’で挿入された炭素原子に新たな原子および結合を追加する。S2による新たな編集は以下のようにまとめられる。
S2@7:新たな炭素原子に結合するS1@2の原子に単結合を追加する
S2@8:新たな炭素原子に結合するS2@7の原子に単結合を追加する
S2@9:新たな炭素原子に結合するS2@8の原子に単結合を追加する
【0073】
ここで、
図3に示すように、サイト‘S2’はその操作配列をサイト‘S1’に返し、サイト‘S1’は新たな編集を行う。
【0074】
サイト‘S1’および‘S2’の先の編集に続いて、サイト‘S1’はS1@12:S2@9とS1@4の原子間に結合を追加する、新たな単一の編集を加える。
【0075】
なお、これにより、先に図示された連鎖ではなく、環が形成される。また、テキストの因果木と異なり、これによりいくつかの編集は2つ以上の因果の親をもつことが必要となる。さらに、S1@2とS1@12の間の子枝は、競合はしないが並行編集である。
【0076】
ここで、
図4は、CRDTではないデータ構造を用いると競合する可能性のある、並行する同時編集を行うサイト‘S1’およびサイト‘S2’を示す。
【0077】
サイト‘S1’はまた、その操作配列をサイト‘S2’に送り、S1@14:新たな炭素原子に結合するS1@2の原子に単結合を追加する、新たな編集を行う。
【0078】
図5に示すように、サイト‘S2’はサイト‘S1’と並行して、以下の新たな編集を行う。
S2@15:新たな酸素原子に結合するS1@2の原子に単結合を追加する
S2@16:新たな炭素原子に結合するS2@15の原子に単結合を追加する
【0079】
なお、編集S2@15、S2@16、およびS1@14は共通してS1@2を根とし、異なるサイト(‘S1’および‘S2’)に同時に適用される。
【0080】
最後に、
図6において、サイト‘S2’はその操作配列を今度はサイト‘S1’に送り、これにより新たな編集を競合なくマージさせる。こうして編集がマージされ、両当事者の当初の意図が保たれ、連続する編集によって不適正な化学構造が解消される。
【実施例3】
【0081】
(サンプルコード)
以下に記載のスクリプトは、プログラミング言語Pythonで書かれており、コンピュータプログラミングの分野に精通した人に理解されるであろう。
#各molはユーザを表し、ユーザはセッションを共有する
s1 = CRDTMol("S1")
s2 = CRDTMol("S2")
#最初に、add_root_atomにより第1の空ではない因果項目が追加される
s1_root = s1.add_root_atom(OEElemNo_C)
#変異は、因果の上流側の原子を返し、この原子を次の変異の親として用いることができる。
cur = s1.sprout(OEElemNo_C, parent=s1_root)
s1_cur = s1.sprout(OEElemNo_C, parent=cur)
#サイト1で2つの炭素および結合を追加し、これらの編集をサイト2に送った
s1.graph().depict("site-1-step-1.png", s1.events[-1].timestamp.to_string())
s1.send_to(s2)
#次に、サイト2に追加される編集を行う
cur = s2.sprout(OEElemNo_C, parent=s1_root)
cur = s2.sprout(OEElemNo_C, parent=cur)
last = s2.sprout(OEElemNo_C, parent=cur)
s2.graph().depict("site-2-step-2.png", s2.events[-1].timestamp.to_string())
#ここで、サイト2は編集をサイト1と共有する
s2.send_to(s1)
s2.graph().depict("site-1-step-3.png", s2.events[-1].timestamp.to_string())
#サイト1および2で追加された原子の間に結合を生じさせる
s1.bond(s1_cur, last)
s2.graph().depict("site-1-step-4.png", s2.events[-1].timestamp.to_string())
#新たな編集をサイト2に送る
s1.send_to(s2)
#次に、サイト1および2は競合する編集を行う
s1.sprout(OEElemNo_N, s1_root)
cur = s2.sprout(OEElemNo_O, s1_root)
s2.sprout(OEElemNo_C, cur)
s2.send_to(s1)
s2.graph().depict("site-1-step-5.png", s2.events[-1].timestamp.to_string())
【0082】
上記説明は、本技術の多様な態様を例示することを意図している。本明細書に記載の実施例は添付の請求項の範囲を限定することを意図するものではない。以上、本発明を詳細に説明してきたが、添付の請求項の範囲の趣旨または範囲を逸脱することなく、多くの変更および修正を行うことができることは、当業者にとって明白である。
【国際調査報告】