ジオメトリ

Geometries クラス

class matlanticgrrm.geometry.geometries.Geometries(atoms_list, target0=None, target1=[], target2=[], mult=1, mols=None, smileses=None, geometry_list=None, **kwargs)[ソース]

同一構造の判定や類似構造の判定などを行なえるクラス.

target0,target1,target2に指定した原子の結合を見て同一構造か判断する.

Parameters:

atoms_list: list of Atoms

Atomsオブジェクトのリスト

target0: list of integer

target0,target1,target2に指定した原子との結合状態を見る

target1: list of integer

target0,target1に指定した原子との結合状態を見る

target2: list of integer

target0に指定した原子との結合状態を見る

mult: float
結合判定を行なう時の係数
大きい程,遠く離れていても結合しているとみなす
kargs:
共有結合半径を変更する
ex) Al = 0.25

Property:

smileses: list of string

atoms_listのSMILES表記のリスト(全て単結合として判断する)

mols:

RDkitのMolオブジェクトのリスト

group: list of integer
atoms_list中の同じ構造を推定し,グループ番号を振って返す.
ex)[0,0,1,1,0,0,2,2] の場合,EQ0,EQ1,EQ4,EQ5が同じグループに属している.
propertyであるが,呼び出し時にgroup化の計算を行なう. 1度行えばキャッシュを残すので次回の呼び出しには時間はかからない.
atoms_list,mult,target012を変更した際には再計算される.
cluster: 2D list of integer
atoms_list中の同じ構造を推定し,同じグループごとにまとめる(index番号でまとめる)
ex)[[0,1,4,5],[2,3],[6,7]] の場合,EQ0,EQ1,EQ4,EQ5が同じグループに属している.
propertyであるが,呼び出し時にgroup化の計算を行なう. 1度行えばキャッシュを残すので次回の呼び出しには時間はかからない.
atoms_list,mult,target012を変更した際には再計算される.
atoms_list: list of Atoms
引数に指定したAtomsリスト
上書きする場合はset_mult()を用いる. 上書きするとsmileses,molsも自動で変更される.
mult: float
引数に指定したmult.
上書きする場合はset_mult()を用いる. 上書きするとsmileses,molsも自動で変更される.
target0: list of integer
引数に指定したtarget0
上書きする場合はset_target0()を用いる. 上書きするとsmileses,molsも自動で変更される.
target1: list of integer
引数に指定したtarget1
上書きする場合はset_target1()を用いる. 上書きするとsmileses,molsも自動で変更される.
target2: list of integer
引数に指定したtarget2
上書きする場合はset_target2()を用いる. 上書きするとsmileses,molsも自動で変更される.

Examples:

from matlanticgrrm.grrmdata import log2atoms
from matlanticgrrm.geometry import Geometries
eq_list1 = log2atoms("sample1_EQ_list.log")
eq_list2 = log2atoms("sample2_EQ_list.log") #eq_list1とeq_list2は同じ要素数
eq_geometries1 = Geometries(eq_list1,[20,21,22,23,24,25,26,27,28])
eq_geometries2 = Geometries(eq_list2,[20,21,22,23,24,25,26,27,28])

eq_geometries1[0] == eq_geometries1[2]
>>> [True] #EQ0とEQ2は同じ構造
eq_geometries1[[0,1,2]] == eq_geometries1[[2,4,5]]
>>> [True,False,False] #EQ0-EQ2は同じ構造,EQ1-eQ4とEQ2-EQ5は異なる構造
eq_geometries1 == eq_geometries2
>>> [True,False,True,True,....] # eq_list1のEQ0とeq_list2のEQ0の構造は同じ
same(idx, other=None)[ソース]

同じ構造を検索する

idxと同じ構造を検索する
otherにGeometriesを設定した場合はidxで指定した構造がotherにないか検索する
other=Noneの場合, 自身の構造の中からidxと同じ構造を検索する
同じ構造のindex番号のリストを返す

Parameters:

idx: int

対象の構造のindex番号

other: Geometries

Geometriesオブジェクト

Exsamples:

from matlanticgrrm.grrmdata import log2atoms
from matlanticgrrm.geometry import Geometries

eq_list = log2atoms("*_EQ_list.log")
eq_geometries = Geometries(eq_list,[20,21,22,23,24,25,26,27,28])
eq_geometries.same(6) # --> [6,7,21]
#EQ6はEQ,6,21と同じ構造である
similar(idx, method='maccs')[ソース]

類似構造を検索する

idxで指定した構造と類似の構造を検索する
類似度の高い順に[(index番号,類似度)]のリストで返す
類似度は1に近い程,類似性が高い

Parameters:

idx: int

index番号

method:

"maccs","tanimoto","avalon"の三種類がある.

Examples:

eq_list = log2atoms("*_EQ_list.log")
eq_geometries = Geometries(eq_list,[20,21,22,23,24,25,26,27,28])
eq_geometries.similar(6)
#EQ6はEQ,6,21と同じ構造である
>>> [(6, 1.0),
>>>  (7, 1.0),
>>>  (21, 1.0),
>>>  (2, 0.92),
>>>  (5, 0.92),
>>>  (8, 0.92),
>>>  (9, 0.92),
>>>  (10, 0.92),
>>>  (11, 0.92),
>>>  (12, 0.92),
>>>  ...
>>>  ...
# EQ6と構造似ている順で出力される